Fix modifier handling when sending keycode with XTest.

This commit is contained in:
Daiki Ueno
2011-06-15 12:53:11 +09:00
parent 54c9d6e35d
commit cccb4f45cd

View File

@ -847,7 +847,7 @@ send_fake_key_event (EekboardClient *client,
gboolean is_pressed) gboolean is_pressed)
{ {
EekSymbol *symbol; EekSymbol *symbol;
EekModifierType modifiers; EekModifierType keyboard_modifiers, modifiers;
guint xkeysym; guint xkeysym;
guint keycode; guint keycode;
@ -865,7 +865,13 @@ send_fake_key_event (EekboardClient *client,
return; return;
} }
modifiers |= eek_keyboard_get_modifiers (client->keyboard); /* Clear level shift modifiers */
keyboard_modifiers = eek_keyboard_get_modifiers (client->keyboard);
keyboard_modifiers &= ~EEK_SHIFT_MASK;
keyboard_modifiers &= ~EEK_LOCK_MASK;
keyboard_modifiers &= ~eek_keyboard_get_alt_gr_mask (client->keyboard);
modifiers |= keyboard_modifiers;
send_fake_modifier_key_event (client, modifiers, is_pressed); send_fake_modifier_key_event (client, modifiers, is_pressed);
XSync (GDK_DISPLAY_XDISPLAY (client->display), False); XSync (GDK_DISPLAY_XDISPLAY (client->display), False);