diff --git a/dwl.c b/dwl.c index 195c830..ead8ce6 100644 --- a/dwl.c +++ b/dwl.c @@ -1618,8 +1618,11 @@ keypress(struct wl_listener *listener, void *data) return; } - if (event->state != WL_KEYBOARD_KEY_STATE_PRESSED && consumed[event->keycode]) { - consumed[event->keycode] = false; + if (consumed[event->keycode]) { + if (event->state == WL_KEYBOARD_KEY_STATE_RELEASED) + consumed[event->keycode] = false; + else + fprintf(stderr, "inconsistent state for keycode %u\n", event->keycode); return; // don't pass the release event of a handled event to the client } wlr_seat_set_keyboard(seat, &group->wlr_group->keyboard);