From: Michael Stapelberg Date: Tue, 19 May 2009 11:51:03 +0000 (+0200) Subject: Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are... X-Git-Tag: 3.c~83 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=77ab4c0b107e6f7ef0ac016da407509ea2c486e7;p=i3%2Fi3 Bugfix: keypress: Only use the lower 8 bits of the mask so that mouse buttons are filtered out (Thanks Mirko) Sometimes, when the mouse button gets stuck, state contains the bit for BUTTON_MASK_1 (or other buttons). We filter them out to continue processing keys correctly. --- diff --git a/src/handlers.c b/src/handlers.c index c1a55893..f801532c 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -109,6 +109,10 @@ int handle_key_press(void *ignored, xcb_connection_t *conn, xcb_key_press_event_ /* Remove the numlock bit, all other bits are modifiers we can bind to */ uint16_t state_filtered = event->state & ~(xcb_numlock_mask | XCB_MOD_MASK_LOCK); + /* Only use the lower 8 bits of the state (modifier masks) so that mouse + * button masks are filtered out */ + state_filtered &= 0xFF; + /* Find the binding */ Binding *bind; TAILQ_FOREACH(bind, &bindings, bindings)