From 7f786d64d461f064ce3d06ad0f71e482e83e7a8d Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Thu, 3 May 2007 04:53:39 +0000 Subject: [PATCH] update save_remote_modifier when keyup on a modifier git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@1404 423420c4-83ab-492f-b58f-81f9feb106b5 --- xkeymap.c | 52 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/xkeymap.c b/xkeymap.c index 6b30bd2..bc94ee6 100644 --- a/xkeymap.c +++ b/xkeymap.c @@ -679,6 +679,36 @@ xkeymap_translate_key(uint32 keysym, unsigned int keycode, unsigned int state) return tr; } +static RD_BOOL +is_modifier(uint8 scancode) +{ + switch (scancode) + { + case SCANCODE_CHAR_LSHIFT: + case SCANCODE_CHAR_RSHIFT: + case SCANCODE_CHAR_LCTRL: + case SCANCODE_CHAR_RCTRL: + case SCANCODE_CHAR_LALT: + case SCANCODE_CHAR_RALT: + case SCANCODE_CHAR_LWIN: + case SCANCODE_CHAR_RWIN: + case SCANCODE_CHAR_NUMLOCK: + return True; + default: + break; + } + return False; +} + +static void +save_remote_modifiers_if_modifier(uint8 scancode) +{ + if (!is_modifier(scancode)) + return; + + saved_remote_modifier_state = remote_modifier_state; +} + void xkeymap_send_keys(uint32 keysym, unsigned int keycode, unsigned int state, uint32 ev_time, RD_BOOL pressed, uint8 nesting) @@ -702,6 +732,7 @@ xkeymap_send_keys(uint32 keysym, unsigned int keycode, unsigned int state, uint3 { rdp_send_scancode(ev_time, RDP_KEYRELEASE, tr.scancode); restore_remote_modifiers(ev_time, tr.scancode); + save_remote_modifiers_if_modifier(tr.scancode); } return; } @@ -762,27 +793,6 @@ get_ksname(uint32 keysym) return ksname; } -static RD_BOOL -is_modifier(uint8 scancode) -{ - switch (scancode) - { - case SCANCODE_CHAR_LSHIFT: - case SCANCODE_CHAR_RSHIFT: - case SCANCODE_CHAR_LCTRL: - case SCANCODE_CHAR_RCTRL: - case SCANCODE_CHAR_LALT: - case SCANCODE_CHAR_RALT: - case SCANCODE_CHAR_LWIN: - case SCANCODE_CHAR_RWIN: - case SCANCODE_CHAR_NUMLOCK: - return True; - default: - break; - } - return False; -} - void save_remote_modifiers(uint8 scancode) {