eekboard: handle AltGr

This commit is contained in:
Daiki Ueno
2010-08-20 18:39:06 +09:00
parent ae9df021c2
commit 350598dc55

View File

@ -358,6 +358,7 @@ a11y_keystroke_listener (const AccessibleKeystroke *stroke,
guint keysym; guint keysym;
guint ignored_keysyms[] = {XK_Shift_L, guint ignored_keysyms[] = {XK_Shift_L,
XK_Shift_R, XK_Shift_R,
XK_ISO_Level3_Shift,
XK_Control_L, XK_Control_L,
XK_Control_R, XK_Control_R,
XK_Alt_L, XK_Alt_L,
@ -403,25 +404,36 @@ on_key_pressed (EekKeyboard *keyboard,
gpointer user_data) gpointer user_data)
{ {
Eekboard *eekboard = user_data; Eekboard *eekboard = user_data;
guint keysym; gint group, level;
guint keysym, modifiers = 0;
keysym = eek_key_get_keysym (key); keysym = eek_key_get_keysym (key);
EEKBOARD_NOTE("%s %X", eek_keysym_to_string (keysym), eekboard->modifiers); EEKBOARD_NOTE("%s %X", eek_keysym_to_string (keysym), eekboard->modifiers);
if (keysym == XK_Shift_L || keysym == XK_Shift_R) { switch (keysym) {
gint group, level; case XK_Shift_L:
case XK_Shift_R:
eekboard->modifiers ^= ShiftMask; eekboard->modifiers ^= ShiftMask;
case XK_ISO_Level3_Shift:
eekboard->modifiers ^= Mod5Mask;
eek_keyboard_get_keysym_index (keyboard, &group, &level); eek_keyboard_get_keysym_index (keyboard, &group, &level);
eek_keyboard_set_keysym_index (keyboard, group, eek_keyboard_set_keysym_index (keyboard, group,
eekboard->modifiers & ShiftMask ? 1 : 0); (eekboard->modifiers & Mod5Mask) ? 2 :
} else if (keysym == XK_Control_L || keysym == XK_Control_R) { (eekboard->modifiers & ShiftMask) ? 1 :
0);
break;
case XK_Control_L:
case XK_Control_R:
eekboard->modifiers ^= ControlMask; eekboard->modifiers ^= ControlMask;
} else if (keysym == XK_Alt_L || keysym == XK_Alt_R) { break;
case XK_Alt_L:
case XK_Alt_R:
eekboard->modifiers ^= Mod1Mask; eekboard->modifiers ^= Mod1Mask;
} else break;
default:
fakekey_press_keysym (eekboard->fakekey, keysym, eekboard->modifiers); fakekey_press_keysym (eekboard->fakekey, keysym, eekboard->modifiers);
} }
}
static void static void
on_key_released (EekKeyboard *keyboard, on_key_released (EekKeyboard *keyboard,