If Mode_switch is used for a known modifier like Mod1, assume it won't be
Mon Oct 7 11:45:17 2002 Owen Taylor <otaylor@redhat.com> * gdk/x11/gdkkeys-x11.c (update_keymaps): If Mode_switch is used for a known modifier like Mod1, assume it won't be used to switch group. (#94841, problem reported by Szekeres Istvan)
This commit is contained in:
		| @ -291,6 +291,19 @@ update_keymaps (GdkKeymapX11 *keymap_x11) | ||||
|             { | ||||
|               gint j = 0; | ||||
|               KeySym *syms = keymap_x11->keymap + (keycode - keymap_x11->min_keycode) * keymap_x11->keysyms_per_keycode; | ||||
| 	      /* GDK_MOD1_MASK is 1 << 3 for example, i.e. the | ||||
| 	       * fourth modifier, i / keyspermod is the modifier | ||||
| 	       * index | ||||
| 	       */ | ||||
| 	      guint mask = 1 << ( i / keymap_x11->mod_keymap->max_keypermod); | ||||
|  | ||||
| 	      /* Some keyboard maps are known to map Mode_Switch as an extra | ||||
| 	       * Mod1 key. In circumstances like that, it won't be used to | ||||
| 	       * switch groups. | ||||
| 	       */ | ||||
| 	      if (mask == GDK_CONTROL_MASK || mask == GDK_SHIFT_MASK || | ||||
| 		  mask == GDK_LOCK_MASK || mask == GDK_MOD1_MASK) | ||||
| 		continue; | ||||
| 	       | ||||
|               while (j < keymap_x11->keysyms_per_keycode) | ||||
|                 { | ||||
| @ -298,12 +311,7 @@ update_keymaps (GdkKeymapX11 *keymap_x11) | ||||
|                     { | ||||
|                       /* This modifier swaps groups */ | ||||
|  | ||||
|                       /* GDK_MOD1_MASK is 1 << 3 for example, i.e. the | ||||
|                        * fourth modifier, i / keyspermod is the modifier | ||||
|                        * index | ||||
|                        */ | ||||
|                    | ||||
|                       keymap_x11->group_switch_mask |= (1 << ( i / keymap_x11->mod_keymap->max_keypermod)); | ||||
|                       keymap_x11->group_switch_mask |= mask; | ||||
|                       break; | ||||
|                     } | ||||
|                | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Owen Taylor
					Owen Taylor