summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sway/input/input-manager.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 3c7b74d2..70c2abf7 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -116,6 +116,28 @@ static void input_manager_libinput_config_keyboard(
116 } 116 }
117} 117}
118 118
119static void input_manager_libinput_config_touch(
120 struct sway_input_device *input_device) {
121 struct wlr_input_device *wlr_device = input_device->wlr_device;
122 struct input_config *ic = input_device_get_config(input_device);
123 struct libinput_device *libinput_device;
124
125 if (!ic || !wlr_input_device_is_libinput(wlr_device)) {
126 return;
127 }
128
129 libinput_device = wlr_libinput_get_device_handle(wlr_device);
130 wlr_log(WLR_DEBUG, "input_manager_libinput_config_touch(%s)",
131 ic->identifier);
132
133 if (ic->send_events != INT_MIN) {
134 wlr_log(WLR_DEBUG, "libinput_config_touch(%s) send_events_set_mode(%d)",
135 ic->identifier, ic->send_events);
136 libinput_device_config_send_events_set_mode(libinput_device,
137 ic->send_events);
138 }
139}
140
119static void input_manager_libinput_config_pointer( 141static void input_manager_libinput_config_pointer(
120 struct sway_input_device *input_device) { 142 struct sway_input_device *input_device) {
121 struct wlr_input_device *wlr_device = input_device->wlr_device; 143 struct wlr_input_device *wlr_device = input_device->wlr_device;
@@ -267,6 +289,8 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
267 input_manager_libinput_config_pointer(input_device); 289 input_manager_libinput_config_pointer(input_device);
268 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) { 290 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) {
269 input_manager_libinput_config_keyboard(input_device); 291 input_manager_libinput_config_keyboard(input_device);
292 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_TOUCH) {
293 input_manager_libinput_config_touch(input_device);
270 } 294 }
271 295
272 wl_signal_add(&device->events.destroy, &input_device->device_destroy); 296 wl_signal_add(&device->events.destroy, &input_device->device_destroy);
@@ -430,6 +454,8 @@ void input_manager_apply_input_config(struct sway_input_manager *input,
430 input_manager_libinput_config_pointer(input_device); 454 input_manager_libinput_config_pointer(input_device);
431 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) { 455 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_KEYBOARD) {
432 input_manager_libinput_config_keyboard(input_device); 456 input_manager_libinput_config_keyboard(input_device);
457 } else if (input_device->wlr_device->type == WLR_INPUT_DEVICE_TOUCH) {
458 input_manager_libinput_config_touch(input_device);
433 } 459 }
434 460
435 struct sway_seat *seat = NULL; 461 struct sway_seat *seat = NULL;