aboutsummaryrefslogtreecommitdiff
path: root/swt.c
diff options
context:
space:
mode:
Diffstat (limited to 'swt.c')
-rw-r--r--swt.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/swt.c b/swt.c
index f71d791..53e419f 100644
--- a/swt.c
+++ b/swt.c
@@ -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 };