summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 81c88d63..c9008c2f 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -643,7 +643,7 @@ eMultiKeyCase CKeybindManager::mkBindMatches(const SP<SKeybind> keybind) {
return mkKeysymSetMatches(keybind->sMkKeys, m_mkKeys);
}
-std::string CKeybindManager::getCurrentSubmap() {
+SSubmap CKeybindManager::getCurrentSubmap() {
return m_currentSelectedSubmap;
}
@@ -795,6 +795,8 @@ SDispatchResult CKeybindManager::handleKeybinds(const uint32_t modmask, const SP
found = true; // don't process keybinds on submap change.
break;
}
+ if (k->handler != "submap" && !k->submap.reset.empty())
+ setSubmap(k->submap.reset);
}
if (pressed && k->repeat) {
@@ -2390,19 +2392,19 @@ SDispatchResult CKeybindManager::toggleSwallow(std::string args) {
SDispatchResult CKeybindManager::setSubmap(std::string submap) {
if (submap == "reset" || submap.empty()) {
- m_currentSelectedSubmap = "";
+ m_currentSelectedSubmap.name = "";
Debug::log(LOG, "Reset active submap to the default one.");
g_pEventManager->postEvent(SHyprIPCEvent{"submap", ""});
- EMIT_HOOK_EVENT("submap", m_currentSelectedSubmap);
+ EMIT_HOOK_EVENT("submap", m_currentSelectedSubmap.name);
return {};
}
for (const auto& k : g_pKeybindManager->m_keybinds) {
- if (k->submap == submap) {
- m_currentSelectedSubmap = submap;
+ if (k->submap.name == submap) {
+ m_currentSelectedSubmap.name = submap;
Debug::log(LOG, "Changed keybind submap to {}", submap);
g_pEventManager->postEvent(SHyprIPCEvent{"submap", submap});
- EMIT_HOOK_EVENT("submap", m_currentSelectedSubmap);
+ EMIT_HOOK_EVENT("submap", m_currentSelectedSubmap.name);
return {};
}
}