From daf5fad19034def8062acfd32e66bea78c62aaff Mon Sep 17 00:00:00 2001 From: Vaxry Date: Thu, 25 Jul 2024 13:02:05 +0200 Subject: keyboard: properly update keymap state and fd on keymap changes needed for virtual keyboards that impose their own layouts. fixes #6991 --- src/devices/VirtualKeyboard.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/devices/VirtualKeyboard.cpp') diff --git a/src/devices/VirtualKeyboard.cpp b/src/devices/VirtualKeyboard.cpp index 654ca9f5..548711c2 100644 --- a/src/devices/VirtualKeyboard.cpp +++ b/src/devices/VirtualKeyboard.cpp @@ -31,8 +31,13 @@ CVirtualKeyboard::CVirtualKeyboard(SP keeb_) : keybo }); }); listeners.keymap = keeb_->events.keymap.registerListener([this](std::any d) { - auto E = std::any_cast(d); - xkbKeymap = xkb_keymap_ref(E.keymap); + auto E = std::any_cast(d); + if (xkbKeymap) + xkb_keymap_unref(xkbKeymap); + xkbKeymap = xkb_keymap_ref(E.keymap); + keymapOverridden = true; + updateXKBTranslationState(xkbKeymap); + updateKeymapFD(); keyboardEvents.keymap.emit(d); }); -- cgit v1.2.3