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
This commit is contained in:
parent
d8670cb4de
commit
d097a9e44a
16
xkeymap.c
16
xkeymap.c
@ -45,6 +45,7 @@ static BOOL keymap_loaded;
|
|||||||
static key_translation keymap[KEYMAP_SIZE];
|
static key_translation keymap[KEYMAP_SIZE];
|
||||||
static int min_keycode;
|
static int min_keycode;
|
||||||
static uint16 remote_modifier_state = 0;
|
static uint16 remote_modifier_state = 0;
|
||||||
|
static uint16 saved_remote_modifier_state = 0;
|
||||||
|
|
||||||
static void update_modifier_state(uint8 scancode, BOOL pressed);
|
static void update_modifier_state(uint8 scancode, BOOL pressed);
|
||||||
|
|
||||||
@ -414,6 +415,21 @@ get_ksname(uint32 keysym)
|
|||||||
return ksname;
|
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
|
void
|
||||||
ensure_remote_modifiers(uint32 ev_time, key_translation tr)
|
ensure_remote_modifiers(uint32 ev_time, key_translation tr)
|
||||||
|
4
xwin.c
4
xwin.c
@ -833,9 +833,11 @@ xwin_process_events(void)
|
|||||||
if (tr.scancode == 0)
|
if (tr.scancode == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
save_remote_modifiers();
|
||||||
ensure_remote_modifiers(ev_time, tr);
|
ensure_remote_modifiers(ev_time, tr);
|
||||||
|
|
||||||
rdp_send_scancode(ev_time, RDP_KEYPRESS, tr.scancode);
|
rdp_send_scancode(ev_time, RDP_KEYPRESS, tr.scancode);
|
||||||
|
restore_remote_modifiers();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
|
Loading…
Reference in New Issue
Block a user