i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
commit 28fe00c7650a5b0967910008108906f073ded7ee
parent 9f6ef913377db057ed4c8e8ce199b3ff978b8b67
Author: Michael Stapelberg <michael@stapelberg.de>
Date:   Sun, 30 Oct 2011 13:22:50 +0000

Bugfix: Properly detect the release of ISO_Level3_Shift (Thanks bacardi55)

Diffstat:
Mi3lock.c | 9+++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git 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;