aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/config/output.c11
-rw-r--r--sway/input/seat.c4
2 files changed, 14 insertions, 1 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index 19b9989a..9720bbf3 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -388,6 +388,17 @@ static void queue_output_config(struct output_config *oc,
oc->adaptive_sync);
wlr_output_enable_adaptive_sync(wlr_output, oc->adaptive_sync == 1);
}
+
+ // Reconfigure all devices, since input config may have been applied before
+ // this output came online, and some config items (like map_to_output) are
+ // dependent on an output being present.
+ struct sway_input_device *input_device = NULL;
+ wl_list_for_each(input_device, &server.input->devices, link) {
+ struct sway_seat *seat = NULL;
+ wl_list_for_each(seat, &server.input->seats, link) {
+ seat_configure_device(seat, input_device);
+ }
+ }
}
bool apply_output_config(struct output_config *oc, struct sway_output *output) {
diff --git a/sway/input/seat.c b/sway/input/seat.c
index b0e39612..36593806 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -652,6 +652,8 @@ static void seat_apply_input_config(struct sway_seat *seat,
}
struct sway_output *output = output_by_name_or_id(mapped_to_output);
if (!output) {
+ sway_log(SWAY_DEBUG, "Requested output %s for device %s isn't present",
+ mapped_to_output, sway_device->input_device->identifier);
return;
}
wlr_cursor_map_input_to_output(seat->cursor->cursor,
@@ -701,7 +703,7 @@ static void seat_configure_keyboard(struct sway_seat *seat,
}
static void seat_configure_switch(struct sway_seat *seat,
- struct sway_seat_device *seat_device) {
+ struct sway_seat_device *seat_device) {
if (!seat_device->switch_device) {
sway_switch_create(seat, seat_device);
}