xwin_reset_keys -> reset_modifier_keys. Only when necessary

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@169 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Peter Åstrand 2002-09-17 08:18:41 +00:00
parent 4cc46cbe11
commit 8c203e862f
2 changed files with 30 additions and 15 deletions

View File

@ -420,6 +420,34 @@ ensure_remote_modifiers(uint32 ev_time, key_translation tr)
} }
void
reset_modifier_keys()
{
/* reset keys */
uint32 ev_time;
ev_time = time(NULL);
if (MASK_HAS_BITS(remote_modifier_state, MapLeftShiftMask) && !get_key_state(XK_Shift_L))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LSHIFT);
if (MASK_HAS_BITS(remote_modifier_state, MapRightShiftMask) && !get_key_state(XK_Shift_R))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RSHIFT);
if (MASK_HAS_BITS(remote_modifier_state, MapLeftCtrlMask) && !get_key_state(XK_Control_L))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LCTRL);
if (MASK_HAS_BITS(remote_modifier_state, MapRightCtrlMask) && !get_key_state(XK_Control_R))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RCTRL);
if (MASK_HAS_BITS(remote_modifier_state, MapLeftAltMask) && !get_key_state(XK_Alt_L))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LALT);
if (MASK_HAS_BITS(remote_modifier_state, MapRightAltMask) &&
!get_key_state(XK_Alt_R) && !get_key_state(XK_Mode_switch))
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RALT);
}
static void static void
update_modifier_state(uint16 modifiers, BOOL pressed) update_modifier_state(uint16 modifiers, BOOL pressed)
{ {

17
xwin.c
View File

@ -435,19 +435,6 @@ ui_destroy_window()
display = NULL; display = NULL;
} }
static void
xwin_reset_keys()
{
/* reset keys */
uint32 ev_time;
ev_time = time(NULL);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LCTRL);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LALT);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_LSHIFT);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RCTRL);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RALT);
rdp_send_scancode(ev_time, RDP_KEYRELEASE, SCANCODE_CHAR_RSHIFT);
}
void void
xwin_toggle_fullscreen() xwin_toggle_fullscreen()
@ -582,8 +569,8 @@ xwin_process_events()
XUngrabKeyboard(display, CurrentTime); XUngrabKeyboard(display, CurrentTime);
break; break;
case FocusOut: case FocusIn:
xwin_reset_keys(); reset_modifier_keys();
break; break;
case Expose: case Expose: