diff options
| -rw-r--r-- | swt.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -1,4 +1,5 @@ #include <bits/time.h> +#include <bits/types/struct_itimerspec.h> #include <linux/input-event-codes.h> #include <sys/mman.h> #include <sys/timerfd.h> @@ -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 = { @@ -620,6 +622,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) { struct itimerspec spec = { 0 }; |