aboutsummaryrefslogtreecommitdiff
path: root/sway/input/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r--sway/input/seat.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 1e62efa1..8fe82b46 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -68,6 +68,13 @@ static void seat_configure_keyboard(struct sway_seat *seat,
sway_keyboard_create(seat, seat_device);
}
sway_keyboard_configure(seat_device->keyboard);
+ wlr_seat_set_keyboard(seat->wlr_seat,
+ seat_device->input_device->wlr_device);
+ if (seat->focus) {
+ // force notify reenter to pick up the new configuration
+ wlr_seat_keyboard_clear_focus(seat->wlr_seat);
+ wlr_seat_keyboard_notify_enter(seat->wlr_seat, seat->focus->sway_view->surface);
+ }
}
static struct sway_seat_device *sway_seat_get_device(struct sway_seat *seat,
@@ -101,8 +108,6 @@ void sway_seat_configure_device(struct sway_seat *seat,
break;
case WLR_INPUT_DEVICE_KEYBOARD:
seat_configure_keyboard(seat, seat_device);
- wlr_seat_set_keyboard(seat->wlr_seat,
- seat_device->input_device->wlr_device);
break;
case WLR_INPUT_DEVICE_TOUCH:
case WLR_INPUT_DEVICE_TABLET_PAD: