From d097a9e44ae42cc917b805e6b712c848f640e4ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20=C3=85strand?= Date: Wed, 27 Aug 2003 09:42:55 +0000 Subject: [PATCH] kbd: Restoring changed remote modifiers after keypress. Fixes problem with shift & altgr 'stuck' down after typing, for example, A git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@448 423420c4-83ab-492f-b58f-81f9feb106b5 --- xkeymap.c | 16 ++++++++++++++++ xwin.c | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/xkeymap.c b/xkeymap.c index 50c395b..85a88da 100644 --- a/xkeymap.c +++ b/xkeymap.c @@ -45,6 +45,7 @@ static BOOL keymap_loaded; static key_translation keymap[KEYMAP_SIZE]; static int min_keycode; static uint16 remote_modifier_state = 0; +static uint16 saved_remote_modifier_state = 0; static void update_modifier_state(uint8 scancode, BOOL pressed); @@ -414,6 +415,21 @@ get_ksname(uint32 keysym) return ksname; } +void +save_remote_modifiers() +{ + saved_remote_modifier_state = remote_modifier_state; +} + +void +restore_remote_modifiers(uint32 ev_time) +{ + key_translation dummy; + + dummy.scancode = 0; + dummy.modifiers = saved_remote_modifier_state; + ensure_remote_modifiers(ev_time, dummy); +} void ensure_remote_modifiers(uint32 ev_time, key_translation tr) diff --git a/xwin.c b/xwin.c index 639a004..4051d8e 100644 --- a/xwin.c +++ b/xwin.c @@ -833,9 +833,11 @@ xwin_process_events(void) if (tr.scancode == 0) break; + save_remote_modifiers(); ensure_remote_modifiers(ev_time, tr); - rdp_send_scancode(ev_time, RDP_KEYPRESS, tr.scancode); + restore_remote_modifiers(); + break; case KeyRelease: