summaryrefslogtreecommitdiff
path: root/src/devices/VirtualKeyboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/VirtualKeyboard.cpp')
-rw-r--r--src/devices/VirtualKeyboard.cpp9
1 files changed, 7 insertions, 2 deletions
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<CVirtualKeyboardV1Resource> keeb_) : keybo
});
});
listeners.keymap = keeb_->events.keymap.registerListener([this](std::any d) {
- auto E = std::any_cast<SKeymapEvent>(d);
- xkbKeymap = xkb_keymap_ref(E.keymap);
+ auto E = std::any_cast<SKeymapEvent>(d);
+ if (xkbKeymap)
+ xkb_keymap_unref(xkbKeymap);
+ xkbKeymap = xkb_keymap_ref(E.keymap);
+ keymapOverridden = true;
+ updateXKBTranslationState(xkbKeymap);
+ updateKeymapFD();
keyboardEvents.keymap.emit(d);
});