diff --git a/gdkkeys-x11.c.orig b/gdkkeys-x11.c index c6495f7..f2652a1 100755 --- a/gdkkeys-x11.c.orig +++ b/gdkkeys-x11.c @@ -1685,11 +1685,13 @@ _gdk_keymap_add_virtual_modifiers_compat (GdkKeymap *keymap, keymap_x11 = GDK_KEYMAP_X11 (keymap); /* See comment in add_virtual_modifiers() */ - for (i = 4; i < 8; i++) + for (i = 3; i < 8; i++) { if ((1 << i) & *modifiers) { - if (keymap_x11->modmap[i] & GDK_SUPER_MASK) + if (keymap_x11->modmap[i] & GDK_MOD1_MASK) + *modifiers |= GDK_MOD1_MASK; + else if (keymap_x11->modmap[i] & GDK_SUPER_MASK) *modifiers |= GDK_SUPER_MASK; else if (keymap_x11->modmap[i] & GDK_HYPER_MASK) *modifiers |= GDK_HYPER_MASK; @@ -1728,16 +1730,12 @@ gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap, keymap = GET_EFFECTIVE_KEYMAP (keymap); keymap_x11 = GDK_KEYMAP_X11 (keymap); - /* This loop used to start at 3, which included MOD1 in the - * virtual mapping. However, all of GTK+ treats MOD1 as a - * synonym for Alt, and does not expect it to be mapped around, - * therefore it's more sane to simply treat MOD1 like SHIFT and - * CONTROL, which are not mappable either. - */ - for (i = 4; i < 8; i++) + for (i = 3; i < 8; i++) { if ((1 << i) & *state) { + if (keymap_x11->modmap[i] & GDK_MOD1_MASK) + *state |= GDK_MOD1_MASK; if (keymap_x11->modmap[i] & GDK_SUPER_MASK) *state |= GDK_SUPER_MASK; if (keymap_x11->modmap[i] & GDK_HYPER_MASK) @@ -1825,8 +1823,7 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap, { if (*state & vmods[j]) { - /* See comment in add_virtual_modifiers() */ - for (i = 4; i < 8; i++) + for (i = 3; i < 8; i++) { if (keymap_x11->modmap[i] & vmods[j]) {