Skip to content

Commit

Permalink
x11: release all pressed keys when window is unmapped.
Browse files Browse the repository at this point in the history
  • Loading branch information
Vic Lee committed Apr 11, 2012
1 parent 092d16a commit 400b58e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
2 changes: 2 additions & 0 deletions client/X11/xf_event.c
Expand Up @@ -559,6 +559,8 @@ boolean xf_event_UnmapNotify(xfInfo* xfi, XEvent* event, boolean app)
rdpWindow* window;
rdpRail* rail = ((rdpContext*) xfi->context)->rail;

xf_kbd_release_all_keypress(xfi);

if (app != true)
return true;

Expand Down
16 changes: 16 additions & 0 deletions client/X11/xf_keyboard.c
Expand Up @@ -50,6 +50,22 @@ void xf_kbd_unset_keypress(xfInfo* xfi, uint8 keycode)
return;
}

void xf_kbd_release_all_keypress(xfInfo* xfi)
{
int keycode;
RDP_SCANCODE rdp_scancode;

for (keycode = 0; keycode < sizeof(xfi->pressed_keys) / sizeof(xfi->pressed_keys[0]); keycode++)
{
if (xfi->pressed_keys[keycode] != NoSymbol)
{
rdp_scancode = freerdp_keyboard_get_rdp_scancode_from_x11_keycode(keycode);
freerdp_input_send_keyboard_event_2(xfi->instance->input, false, rdp_scancode);
xfi->pressed_keys[keycode] = NoSymbol;
}
}
}

boolean xf_kbd_key_pressed(xfInfo* xfi, KeySym keysym)
{
KeyCode keycode = XKeysymToKeycode(xfi->display, keysym);
Expand Down
1 change: 1 addition & 0 deletions client/X11/xf_keyboard.h
Expand Up @@ -27,6 +27,7 @@
void xf_kbd_init(xfInfo* xfi);
void xf_kbd_set_keypress(xfInfo* xfi, uint8 keycode, KeySym keysym);
void xf_kbd_unset_keypress(xfInfo* xfi, uint8 keycode);
void xf_kbd_release_all_keypress(xfInfo* xfi);
boolean xf_kbd_key_pressed(xfInfo* xfi, KeySym keysym);
void xf_kbd_send_key(xfInfo* xfi, boolean down, uint8 keycode);
int xf_kbd_read_keyboard_state(xfInfo* xfi);
Expand Down

0 comments on commit 400b58e

Please sign in to comment.