From: Michael Stapelberg Date: Wed, 24 Mar 2010 15:10:47 +0000 (+0100) Subject: Bugfix: fix state of keypresses in sighandler (like in i3-input) X-Git-Tag: 3.e~6^2~38 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e90e80c87db036f07348126345b09fadeaa705b6;p=i3%2Fi3 Bugfix: fix state of keypresses in sighandler (like in i3-input) --- diff --git a/src/sighandler.c b/src/sighandler.c index 590608b6..92cbc5cb 100644 --- a/src/sighandler.c +++ b/src/sighandler.c @@ -83,7 +83,14 @@ static int sig_draw_window(xcb_connection_t *conn, xcb_window_t win, int width, * */ static int sig_handle_key_press(void *ignored, xcb_connection_t *conn, xcb_key_press_event_t *event) { - xcb_keysym_t sym = xcb_key_press_lookup_keysym(keysyms, event, event->state); + uint16_t state = event->state; + + /* Apparantly, after activating numlock once, the numlock modifier + * stays turned on (use xev(1) to verify). So, to resolve useful + * keysyms, we remove the numlock flag from the event state */ + state &= ~xcb_numlock_mask; + + xcb_keysym_t sym = xcb_key_press_lookup_keysym(keysyms, event, state); if (sym == 'e') { DLOG("User issued exit-command, raising error again.\n");