aboutsummaryrefslogtreecommitdiff
path: root/sway/input
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-05-03 14:16:17 +0100
committeremersion <contact@emersion.fr>2018-05-03 14:16:17 +0100
commit424006089e5a61ef7649c14324c3fb5c3bec32ca (patch)
tree64357bee2d71217132d83422a56f8599b69a9851 /sway/input
parent4fd3996d7761c8ff4716463ffe18399a8894577e (diff)
downloadsway-424006089e5a61ef7649c14324c3fb5c3bec32ca.tar.xz
Default to backend-wise input device mapping, if any
Diffstat (limited to 'sway/input')
-rw-r--r--sway/input/seat.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index e8bd6b36..443fe367 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -263,18 +263,27 @@ struct sway_seat *seat_create(struct sway_input_manager *input,
static void seat_apply_input_config(struct sway_seat *seat,
struct sway_seat_device *sway_device) {
+ const char *mapped_to_output = NULL;
+
struct input_config *ic = input_device_get_config(
sway_device->input_device);
- if (!ic) {
- return;
- }
- wlr_log(L_DEBUG, "Applying input config to %s",
+ if (ic != NULL) {
+ wlr_log(L_DEBUG, "Applying input config to %s",
sway_device->input_device->identifier);
- if (ic->mapped_to_output) {
+
+ mapped_to_output = ic->mapped_to_output;
+ }
+
+ if (mapped_to_output == NULL) {
+ mapped_to_output = sway_device->input_device->wlr_device->output_name;
+ }
+ if (mapped_to_output != NULL) {
+ wlr_log(L_DEBUG, "Mapping input device %s to output %s",
+ sway_device->input_device->identifier, mapped_to_output);
struct sway_container *output = NULL;
for (int i = 0; i < root_container.children->length; ++i) {
struct sway_container *_output = root_container.children->items[i];
- if (strcasecmp(_output->name, ic->mapped_to_output) == 0) {
+ if (strcasecmp(_output->name, mapped_to_output) == 0) {
output = _output;
break;
}