Bugfix: fix state of keypresses in sighandler (like in i3-input)

This commit is contained in:
Michael Stapelberg 2010-03-24 16:10:47 +01:00
parent 7eea1067f8
commit e90e80c87d
1 changed files with 8 additions and 1 deletions

View File

@ -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) { 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') { if (sym == 'e') {
DLOG("User issued exit-command, raising error again.\n"); DLOG("User issued exit-command, raising error again.\n");