diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-10-06 15:16:10 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-06 15:16:10 -0400 |
commit | 08ccc7f653e63afbb8199b98be5862520c36d480 (patch) | |
tree | 5a513870cf185a0cc1d711a3c9ad401af29aee9f /backend | |
parent | b351e0a95063114f8ff06c90c21d76cb9d26834e (diff) | |
parent | 568b270cdfcee0f1427417510ef868d54fd8c223 (diff) |
Merge pull request #221 from versusvoid/wayland-xkb_state_update_mask
Use xkb_state_update_mask() with Wayland backend
Diffstat (limited to 'backend')
-rw-r--r-- | backend/libinput/keyboard.c | 3 | ||||
-rw-r--r-- | backend/wayland/wl_seat.c | 7 | ||||
-rw-r--r-- | backend/x11/backend.c | 4 |
3 files changed, 10 insertions, 4 deletions
diff --git a/backend/libinput/keyboard.c b/backend/libinput/keyboard.c index 53c3a61b..00a7ecdf 100644 --- a/backend/libinput/keyboard.c +++ b/backend/libinput/keyboard.c @@ -67,5 +67,6 @@ void handle_keyboard_key(struct libinput_event *event, wlr_event.state = WLR_KEY_PRESSED; break; } - wlr_keyboard_update_state(wlr_dev->keyboard, &wlr_event); + wlr_event.update_state = true; + wlr_keyboard_notify_key(wlr_dev->keyboard, &wlr_event); } diff --git a/backend/wayland/wl_seat.c b/backend/wayland/wl_seat.c index e834f8b4..d3ff9b64 100644 --- a/backend/wayland/wl_seat.c +++ b/backend/wayland/wl_seat.c @@ -149,13 +149,16 @@ static void keyboard_handle_key(void *data, struct wl_keyboard *wl_keyboard, wlr_event.state = state; wlr_event.time_sec = time / 1000; wlr_event.time_usec = time * 1000; - wlr_keyboard_update_state(dev->keyboard, &wlr_event); + wlr_keyboard_notify_key(dev->keyboard, &wlr_event); } static void keyboard_handle_modifiers(void *data, struct wl_keyboard *wl_keyboard, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { - + struct wlr_input_device *dev = data; + assert(dev && dev->keyboard); + wlr_keyboard_notify_modifiers(dev->keyboard, mods_depressed, mods_latched, + mods_locked, group); } static void keyboard_handle_repeat_info(void *data, struct wl_keyboard *wl_keyboard, diff --git a/backend/x11/backend.c b/backend/x11/backend.c index 88c022d1..ed88064e 100644 --- a/backend/x11/backend.c +++ b/backend/x11/backend.c @@ -51,9 +51,11 @@ static bool handle_x11_event(struct wlr_x11_backend *x11, xcb_generic_event_t *e .keycode = ev->detail - 8, .state = event->response_type == XCB_KEY_PRESS ? WLR_KEY_PRESSED : WLR_KEY_RELEASED, + .update_state = true, }; - wl_signal_emit(&x11->keyboard.events.key, &key); + // TODO use xcb-xkb for more precise modifiers state? + wlr_keyboard_notify_key(&x11->keyboard, &key); x11->time = ev->time; break; } |