]> git.sur5r.net Git - i3/i3lock/commitdiff
Bugfix: Properly detect the release of ISO_Level3_Shift (Thanks bacardi55)
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 30 Oct 2011 13:22:50 +0000 (13:22 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 30 Oct 2011 13:22:50 +0000 (13:22 +0000)
i3lock.c

index 2c88f5c7243e812fd47343727a29813aa2b73212..d34a56224d86413d4ea86299c31a8d0e8615b96d 100644 (file)
--- a/i3lock.c
+++ b/i3lock.c
@@ -123,10 +123,11 @@ static void handle_key_release(xcb_key_release_event_t *event) {
     DEBUG("releasing key %d, state raw = %d, modeswitch_active = %d, iso_level3_shift_active = %d\n",
           event->detail, event->state, modeswitch_active, iso_level3_shift_active);
 
-    /* fix state */
-    event->state &= ~numlockmask;
-
-    xcb_keysym_t sym = xcb_key_press_lookup_keysym(symbols, event, event->state);
+    /* We don’t care about the column here and just use the first symbol. Since
+     * we only check for Mode_switch and ISO_Level3_Shift, this *should* work.
+     * Also, if we would use the current column, we would look in the wrong
+     * place. */
+    xcb_keysym_t sym = xcb_key_press_lookup_keysym(symbols, event, 0);
     if (sym == XK_Mode_switch) {
         //printf("Mode switch disabled\n");
         modeswitch_active = false;