From 77ab4c0b107e6f7ef0ac016da407509ea2c486e7 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 19 May 2009 13:51:03 +0200 Subject: [PATCH] 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. --- src/handlers.c | 4 ++++ 1 file changed, 4 insertions(+) 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)