Todo:
- Windows client: wf_Pointer_SetNull and wf_Pointer_SetDefault are just skeletons like all the other wf_Pointer functions.
- DirectFB client: only df_Pointer_SetNull is implemented and tested
Pointer updates are part of the base RDP protocol MS-RDPBCGR specification and do not include window information like those from the RAIL specification MS-RDPERP do. To make pointer updates work, we need to keep track of which window has focus and then apply pointer updates to that window. This appears to be easy to do, just watch for X11 EnterNotify events and update the window field of the main RDP structure. I had some concerns that a window might receive an old pointer update for some other window due to network latencies, however, the RDP server seems to always send down new pointer updates whenver a window takes focus.