diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2018-09-23 19:56:52 -0400 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2018-09-23 19:56:52 -0400 |
commit | baeb28ea6230ef9aa409ee52abe208720120e45c (patch) | |
tree | d5a6fffc3470b3fbbb18a6ae01851451bea1dbb2 /sway/input/input-manager.c | |
parent | Merge pull request #2699 from RedSoxFan/fix-2667 (diff) | |
download | sway-baeb28ea6230ef9aa409ee52abe208720120e45c.tar.gz sway-baeb28ea6230ef9aa409ee52abe208720120e45c.tar.zst sway-baeb28ea6230ef9aa409ee52abe208720120e45c.zip |
Implement support for input wildcard
Diffstat (limited to 'sway/input/input-manager.c')
-rw-r--r-- | sway/input/input-manager.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c index b4352c6a..f696646f 100644 --- a/sway/input/input-manager.c +++ b/sway/input/input-manager.c | |||
@@ -389,8 +389,10 @@ void input_manager_set_focus(struct sway_input_manager *input, | |||
389 | void input_manager_apply_input_config(struct sway_input_manager *input, | 389 | void input_manager_apply_input_config(struct sway_input_manager *input, |
390 | struct input_config *input_config) { | 390 | struct input_config *input_config) { |
391 | struct sway_input_device *input_device = NULL; | 391 | struct sway_input_device *input_device = NULL; |
392 | bool wildcard = strcmp(input_config->identifier, "*") == 0; | ||
392 | wl_list_for_each(input_device, &input->devices, link) { | 393 | wl_list_for_each(input_device, &input->devices, link) { |
393 | if (strcmp(input_device->identifier, input_config->identifier) == 0) { | 394 | if (strcmp(input_device->identifier, input_config->identifier) == 0 |
395 | || wildcard) { | ||
394 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) { | 396 | if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) { |
395 | input_manager_libinput_config_pointer(input_device); | 397 | input_manager_libinput_config_pointer(input_device); |
396 | } | 398 | } |
@@ -480,13 +482,16 @@ struct sway_seat *input_manager_get_default_seat( | |||
480 | } | 482 | } |
481 | 483 | ||
482 | struct input_config *input_device_get_config(struct sway_input_device *device) { | 484 | struct input_config *input_device_get_config(struct sway_input_device *device) { |
485 | struct input_config *wildcard_config = NULL; | ||
483 | struct input_config *input_config = NULL; | 486 | struct input_config *input_config = NULL; |
484 | for (int i = 0; i < config->input_configs->length; ++i) { | 487 | for (int i = 0; i < config->input_configs->length; ++i) { |
485 | input_config = config->input_configs->items[i]; | 488 | input_config = config->input_configs->items[i]; |
486 | if (strcmp(input_config->identifier, device->identifier) == 0) { | 489 | if (strcmp(input_config->identifier, device->identifier) == 0) { |
487 | return input_config; | 490 | return input_config; |
491 | } else if (strcmp(input_config->identifier, "*") == 0) { | ||
492 | wildcard_config = input_config; | ||
488 | } | 493 | } |
489 | } | 494 | } |
490 | 495 | ||
491 | return NULL; | 496 | return wildcard_config; |
492 | } | 497 | } |