The input->FocusInEvent callback implementations (normal and fast-path) have
always sent the mouse position even if the pointer was outside of the freerdp
client area. In addition xfreerdp used the wrong pointer coordinates which
were relative to the root window instead of its own.
On focus-in the pointer position must only be sent if the pointer is
currently within the program's client area. However, the clients had no way
to pass that information to input->FocusInEvent which required an API change.
- removed mouse pointer x, y parameters from input interface's FocusInEvent
- clients are responsible to call input->MouseEvent on focus-in if necessary
- fixed xfreerdp and wfreerdp accordingly
This also introduces a slightly more high-level convenience function for
sending key events. The existing function where an RDP protocol flag field has
to be encoded by the caller is very lowlevel ... and a bad fit for fastpath
input. That could use a refactoring.
According to the specification first two bytes contain keyboardFlags.
Those keyboardFlags are a bit different than in the regular (non-unicode)
Keyboard Event. There is no KBD_FLAGS_EXTENDED here and also when
key is pressed there is neither KBD_FLAGS_DOWN nor KBD_FLAGS_RELEASE flag
set. When key is released the KBD_FLAGS_RELEASE flag is set.