]> git.sur5r.net Git - i3/i3/commitdiff
bindings: invert shift bit, don’t just remove it
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 28 Aug 2015 07:09:31 +0000 (09:09 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 28 Aug 2015 07:09:31 +0000 (09:09 +0200)
Before this commit, we only made the transformation of C → c, with this
commit we’re considering both c → C and C → c.

fixes #1870

src/bindings.c

index 390ece7e4205e338dc89df54118d92d3f1af6c9f..520f55222e930f102d6a450e78fb7fe55bb20d5b 100644 (file)
@@ -288,7 +288,7 @@ static void add_keycode_if_matches(struct xkb_keymap *keymap, xkb_keycode_t key,
         const xkb_layout_index_t layout = xkb_state_key_get_layout(resolving->xkb_state, key);
         if (layout == XKB_LAYOUT_INVALID)
             return;
-        if (xkb_state_key_get_level(resolving->xkb_state, key, layout) != 1)
+        if (xkb_state_key_get_level(resolving->xkb_state, key, layout) > 1)
             return;
         sym = xkb_state_key_get_one_sym(resolving->xkb_state_no_shift, key);
         if (sym != resolving->keysym)
@@ -367,7 +367,7 @@ void translate_keysyms(void) {
 
         (void)xkb_state_update_mask(
             dummy_state_no_shift,
-            (bind->event_state_mask & 0x1FFF) & ~XCB_KEY_BUT_MASK_SHIFT /* xkb_mod_mask_t base_mods, */,
+            (bind->event_state_mask & 0x1FFF) XCB_KEY_BUT_MASK_SHIFT /* xkb_mod_mask_t base_mods, */,
             0 /* xkb_mod_mask_t latched_mods, */,
             0 /* xkb_mod_mask_t locked_mods, */,
             0 /* xkb_layout_index_t base_group, */,