From: Orfeas <38209077+0xfea5@users.noreply.github.com> Date: Thu, 15 May 2025 21:30:24 +0000 (+0300) Subject: keyboard.c: don't broadcast modifiers from virtual keyboards X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=05ff914cfe0b76973ac23e4b6e44b6822358b040;p=proto%2Flabwc.git keyboard.c: don't broadcast modifiers from virtual keyboards Fixes: #2723 --- diff --git a/src/input/keyboard.c b/src/input/keyboard.c index 422f037d..42559f3b 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -104,8 +104,14 @@ seat_client_from_keyboard_resource(struct wl_resource *resource) static void broadcast_modifiers_to_unfocused_clients(struct wlr_seat *seat, + const struct keyboard *keyboard, const struct wlr_keyboard_modifiers *modifiers) { + /* Prevent overwriting the group modifier by a virtual keyboard */ + if (keyboard->is_virtual) { + return; + } + struct wlr_seat_client *client; wl_list_for_each(client, &seat->clients, link) { if (client == seat->keyboard_state.focused_client) { @@ -191,7 +197,7 @@ keyboard_modifiers_notify(struct wl_listener *listener, void *data) * clients with pointer-focus (see issue #2271) */ broadcast_modifiers_to_unfocused_clients(seat->seat, - &wlr_keyboard->modifiers); + keyboard, &wlr_keyboard->modifiers); } }