diff options
author | Vincent Gu <g@v-io.co> | 2018-10-09 21:19:02 +0800 |
---|---|---|
committer | Vincent Gu <g@v-io.co> | 2018-10-09 22:03:27 +0800 |
commit | 073aa4149f25e55c5094f5f54a50351112dcfedd (patch) | |
tree | 8c29b12269ef8fd8ec6e0b4424a53399f2de2aa4 | |
parent | Merge pull request #2805 from RyanDwyer/fix-resize-return-value (diff) | |
download | sway-073aa4149f25e55c5094f5f54a50351112dcfedd.tar.gz sway-073aa4149f25e55c5094f5f54a50351112dcfedd.tar.zst sway-073aa4149f25e55c5094f5f54a50351112dcfedd.zip |
add libinput config for keyboard
add send_events support
-rw-r--r-- | sway/input/input-manager.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c index 32f0355e..3c7b74d2 100644 --- a/sway/input/input-manager.c +++ b/sway/input/input-manager.c | |||
@@ -94,6 +94,28 @@ static bool input_has_seat_configuration(struct sway_input_manager *input) { | |||
94 | return false; | 94 | return false; |
95 | } | 95 | } |
96 | 96 | ||
97 | static void input_manager_libinput_config_keyboard( | ||
98 | struct sway_input_device *input_device) { | ||
99 | struct wlr_input_device *wlr_device = input_device->wlr_device; | ||
100 | struct input_config *ic = input_device_get_config(input_device); | ||
101 | struct libinput_device *libinput_device; | ||
102 | |||
103 | if (!ic || !wlr_input_device_is_libinput(wlr_device)) { | ||
104 | return; | ||
105 | } | ||
106 | |||
107 | libinput_device = wlr_libinput_get_device_handle(wlr_device); | ||
108 | wlr_log(WLR_DEBUG, "input_manager_libinput_config_keyboard(%s)", | ||
109 | ic->identifier); | ||
110 | |||
111 | if (ic->send_events != INT_MIN) { | ||
112 | wlr_log(WLR_DEBUG, "libinput_config_keyboard(%s) send_events_set_mode(%d)", | ||
113 | ic->identifier, ic->send_events); | ||
114 | libinput_device_config_send_events_set_mode(libinput_device, | ||
115 | ic->send_events); | ||
116 | } | ||
117 | } | ||
118 | |||
97 | static void input_manager_libinput_config_pointer( | 119 | static void input_manager_libinput_config_pointer( |
98 | struct sway_input_device *input_device) { | 120 | struct sway_input_device *input_device) { |
99 | struct wlr_input_device *wlr_device = input_device->wlr_device; | 121 | struct wlr_input_device *wlr_device = input_device->wlr_device; |
@@ -243,6 +265,8 @@ static void handle_new_input(struct wl_listener *listener, void *data) { | |||
243 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER || | 265 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER || |
244 | input_device->wlr_device->type == WLR_INPUT_DEVICE_TABLET_TOOL) { | 266 | input_device->wlr_device->type == WLR_INPUT_DEVICE_TABLET_TOOL) { |
245 | input_manager_libinput_config_pointer(input_device); | 267 | input_manager_libinput_config_pointer(input_device); |
268 | } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) { | ||
269 | input_manager_libinput_config_keyboard(input_device); | ||
246 | } | 270 | } |
247 | 271 | ||
248 | wl_signal_add(&device->events.destroy, &input_device->device_destroy); | 272 | wl_signal_add(&device->events.destroy, &input_device->device_destroy); |
@@ -404,6 +428,8 @@ void input_manager_apply_input_config(struct sway_input_manager *input, | |||
404 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER || | 428 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER || |
405 | input_device->wlr_device->type == WLR_INPUT_DEVICE_TABLET_TOOL) { | 429 | input_device->wlr_device->type == WLR_INPUT_DEVICE_TABLET_TOOL) { |
406 | input_manager_libinput_config_pointer(input_device); | 430 | input_manager_libinput_config_pointer(input_device); |
431 | } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) { | ||
432 | input_manager_libinput_config_keyboard(input_device); | ||
407 | } | 433 | } |
408 | 434 | ||
409 | struct sway_seat *seat = NULL; | 435 | struct sway_seat *seat = NULL; |