mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-23 04:09:49 +01:00
seat: update keymap/repeat info on keymap events from keebs
fixes #6114
This commit is contained in:
parent
0cb8fbe18e
commit
23cd4c7998
3 changed files with 12 additions and 3 deletions
|
@ -86,10 +86,15 @@ void CSeatManager::setKeyboard(SP<IKeyboard> KEEB) {
|
||||||
keyboard->active = false;
|
keyboard->active = false;
|
||||||
keyboard = KEEB;
|
keyboard = KEEB;
|
||||||
|
|
||||||
if (KEEB) {
|
if (KEEB)
|
||||||
KEEB->active = true;
|
KEEB->active = true;
|
||||||
PROTO::seat->updateRepeatInfo(KEEB->wlr()->repeat_info.rate, KEEB->wlr()->repeat_info.delay);
|
|
||||||
}
|
updateActiveKeyboardData();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSeatManager::updateActiveKeyboardData() {
|
||||||
|
if (keyboard)
|
||||||
|
PROTO::seat->updateRepeatInfo(keyboard->wlr()->repeat_info.rate, keyboard->wlr()->repeat_info.delay);
|
||||||
PROTO::seat->updateKeymap();
|
PROTO::seat->updateKeymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ class CSeatManager {
|
||||||
|
|
||||||
void setMouse(SP<IPointer> mouse);
|
void setMouse(SP<IPointer> mouse);
|
||||||
void setKeyboard(SP<IKeyboard> keeb);
|
void setKeyboard(SP<IKeyboard> keeb);
|
||||||
|
void updateActiveKeyboardData(); // updates the clients with the keymap and repeat info
|
||||||
|
|
||||||
void setKeyboardFocus(wlr_surface* surf);
|
void setKeyboardFocus(wlr_surface* surf);
|
||||||
void sendKeyboardKey(uint32_t timeMs, uint32_t key, wl_keyboard_key_state state);
|
void sendKeyboardKey(uint32_t timeMs, uint32_t key, wl_keyboard_key_state state);
|
||||||
|
|
|
@ -839,6 +839,9 @@ void CInputManager::setupKeyboard(SP<IKeyboard> keeb) {
|
||||||
auto PKEEB = ((IKeyboard*)owner)->self.lock();
|
auto PKEEB = ((IKeyboard*)owner)->self.lock();
|
||||||
const auto LAYOUT = PKEEB->getActiveLayout();
|
const auto LAYOUT = PKEEB->getActiveLayout();
|
||||||
|
|
||||||
|
if (PKEEB == g_pSeatManager->keyboard)
|
||||||
|
g_pSeatManager->updateActiveKeyboardData();
|
||||||
|
|
||||||
g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEEB->hlName + "," + LAYOUT});
|
g_pEventManager->postEvent(SHyprIPCEvent{"activelayout", PKEEB->hlName + "," + LAYOUT});
|
||||||
EMIT_HOOK_EVENT("activeLayout", (std::vector<std::any>{PKEEB, LAYOUT}));
|
EMIT_HOOK_EVENT("activeLayout", (std::vector<std::any>{PKEEB, LAYOUT}));
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue