summaryrefslogtreecommitdiff
path: root/src/managers/InputManager.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-02 20:31:47 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-02 20:31:47 +0200
commit7b568d7ad8989718a3f1fa9e23d366154ff1962b (patch)
treec1fb057d2d3906c6fd831a90670ebec3163ddd31 /src/managers/InputManager.cpp
parenta2f718059b18c0e73032bce45b1bd7558c2f75d6 (diff)
configure keyboards one by one
Diffstat (limited to 'src/managers/InputManager.cpp')
-rw-r--r--src/managers/InputManager.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/managers/InputManager.cpp b/src/managers/InputManager.cpp
index d206cd7d..0017a4f0 100644
--- a/src/managers/InputManager.cpp
+++ b/src/managers/InputManager.cpp
@@ -285,23 +285,30 @@ void CInputManager::setKeyboardLayout() {
return;
}
+ const auto PLASTKEEB = wlr_seat_get_keyboard(g_pCompositor->m_sSeat.seat);
+
// TODO: configure devices one by one
- for (auto& k : m_lKeyboards)
+ for (auto& k : m_lKeyboards) {
wlr_keyboard_set_keymap(k.keyboard->keyboard, KEYMAP);
- wlr_keyboard_modifiers wlrMods = {0};
+ wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, k.keyboard->keyboard);
+
+ wlr_keyboard_modifiers wlrMods = {0};
- if (g_pConfigManager->getInt("input:numlock_by_default") == 1) {
- // lock numlock
- const auto IDX = xkb_map_mod_get_index(KEYMAP, XKB_MOD_NAME_NUM);
+ if (g_pConfigManager->getInt("input:numlock_by_default") == 1) {
+ // lock numlock
+ const auto IDX = xkb_map_mod_get_index(KEYMAP, XKB_MOD_NAME_NUM);
- if (IDX != XKB_MOD_INVALID)
- wlrMods.locked |= (uint32_t)1 << IDX;
- }
+ if (IDX != XKB_MOD_INVALID)
+ wlrMods.locked |= (uint32_t)1 << IDX;
+ }
- if (wlrMods.locked != 0) {
- wlr_seat_keyboard_notify_modifiers(g_pCompositor->m_sSeat.seat, &wlrMods);
+ if (wlrMods.locked != 0) {
+ wlr_seat_keyboard_notify_modifiers(g_pCompositor->m_sSeat.seat, &wlrMods);
+ }
}
+
+ wlr_seat_set_keyboard(g_pCompositor->m_sSeat.seat, PLASTKEEB);
xkb_keymap_unref(KEYMAP);
xkb_context_unref(CONTEXT);