X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fmodkeys.c;h=04c6b86b09f4224c6db128b70027ccaf0cb98b62;hb=571b09f999585c66e9781877c94807f663c2bd4c;hp=3346a88dccd2f78f021e829d9c90526cf7aeb605;hpb=36ddd0c4086652bfb65d3b3034640e349d5c991b;p=chaz%2Fopenbox diff --git a/openbox/modkeys.c b/openbox/modkeys.c index 3346a88d..04c6b86b 100644 --- a/openbox/modkeys.c +++ b/openbox/modkeys.c @@ -77,6 +77,11 @@ void modkeys_startup(gboolean reconfigure) } } } + + /* CapsLock, Shift, and Control are special and hard-coded */ + modkeys_keys[OB_MODKEY_KEY_CAPSLOCK] = LockMask; + modkeys_keys[OB_MODKEY_KEY_SHIFT] = ShiftMask; + modkeys_keys[OB_MODKEY_KEY_CONTROL] = ControlMask; } void modkeys_shutdown(gboolean reconfigure) @@ -108,7 +113,10 @@ guint modkeys_only_modifier_masks(guint mask) { mask &= ALL_MASKS; /* strip off these lock keys. they shouldn't affect key bindings */ - mask &= ~modkeys_key_to_mask(OB_MODKEY_KEY_CAPSLOCK); + mask &= ~LockMask; /* use the LockMask, not what capslock is bound to, + because you could bind it to something else and it + should work as that modifier then. i think capslock + is weird in xkb. */ mask &= ~modkeys_key_to_mask(OB_MODKEY_KEY_NUMLOCK); mask &= ~modkeys_key_to_mask(OB_MODKEY_KEY_SCROLLLOCK); return mask; @@ -127,12 +135,6 @@ static void set_modkey_mask(guchar mask, KeySym sym) modkeys_keys[OB_MODKEY_KEY_NUMLOCK] |= mask; else if (sym == XK_Scroll_Lock) modkeys_keys[OB_MODKEY_KEY_SCROLLLOCK] |= mask; - else if (sym == XK_Caps_Lock) - modkeys_keys[OB_MODKEY_KEY_CAPSLOCK] |= mask; - else if (sym == XK_Shift_L || sym == XK_Shift_R) - modkeys_keys[OB_MODKEY_KEY_SHIFT] |= mask; - else if (sym == XK_Control_L || sym == XK_Control_R) - modkeys_keys[OB_MODKEY_KEY_CONTROL] |= mask; else if (sym == XK_Super_L || sym == XK_Super_R) modkeys_keys[OB_MODKEY_KEY_SUPER] |= mask; else if (sym == XK_Hyper_L || sym == XK_Hyper_R) @@ -141,6 +143,7 @@ static void set_modkey_mask(guchar mask, KeySym sym) modkeys_keys[OB_MODKEY_KEY_ALT] |= mask; else if (sym == XK_Meta_L || sym == XK_Meta_R) modkeys_keys[OB_MODKEY_KEY_META] |= mask; + /* CapsLock, Shift, and Control are special and hard-coded */ } KeyCode modkeys_sym_to_code(KeySym sym)