From fcda44e3e88a4c8bc1867530b65cb5cf415fe2ca Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sun, 30 Apr 2023 10:11:12 +0200 Subject: disable keyrepeat on keyboard leave --- swt.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/swt.c b/swt.c index f71d791..53e419f 100644 --- a/swt.c +++ b/swt.c @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -87,6 +88,7 @@ static void keyboard_enter(void *data, struct wl_keyboard *keyboard, uint32_t se static void keyboard_key(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t client); static void keyboard_modifiers(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group); static void keyboard_repeat_info(void *data, struct wl_keyboard *keyboard, int32_t rate, int32_t delay); +static void keyboard_leave(void *data, struct wl_keyboard *keyboard, uint32_t serial, struct wl_surface *surface); static void handle_keyboard_event(); static void pointer_enter(void *data, struct wl_pointer *pointer, uint32_t serial, struct wl_surface *surface, wl_fixed_t x, wl_fixed_t y); static void pointer_leave(void *data, struct wl_pointer *pointer, uint32_t serial, struct wl_surface *surface); @@ -136,7 +138,7 @@ static const struct wl_keyboard_listener keyboard_listener = { .modifiers = keyboard_modifiers, .repeat_info = keyboard_repeat_info, .enter = keyboard_enter, - .leave = dummy, + .leave = keyboard_leave, }; static const struct wl_pointer_listener pointer_listener = { @@ -619,6 +621,15 @@ keyboard_enter(void *data, struct wl_keyboard *keyboard, uint32_t serial, struct } +void +keyboard_leave(void *data, struct wl_keyboard *keyboard, uint32_t serial, struct wl_surface *surface) +{ + struct itimerspec spec = { 0 }; + timerfd_settime(client.kb.repeat.timer, 0, &spec, 0); + win.redraw = 1; +} + + void keyboard_key(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { -- cgit v1.2.3-70-g09d2