diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2026-04-26 15:16:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-26 15:16:36 +0100 |
| commit | 5ba33f846129f3e6c0505b19f94634b24505e828 (patch) | |
| tree | aaacabe678006040c342935481a86607c66607fd /src/managers/KeybindManager.hpp | |
| parent | 329b2b356dd92ac07f4e2aa69cbce82ee9ba9d19 (diff) | |
config/lua: init lua config manager, use lua if available (#13817)
Adds a new lua config manager, which will automatically be used if there is a lua config present.
Diffstat (limited to 'src/managers/KeybindManager.hpp')
| -rw-r--r-- | src/managers/KeybindManager.hpp | 103 |
1 files changed, 14 insertions, 89 deletions
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp index a51f9add..885c73ae 100644 --- a/src/managers/KeybindManager.hpp +++ b/src/managers/KeybindManager.hpp @@ -27,11 +27,11 @@ struct SSubmap { struct SKeybind { std::string key = ""; - std::set<xkb_keysym_t> sMkKeys = {}; + std::vector<xkb_keysym_t> sMkKeys = {}; uint32_t keycode = 0; bool catchAll = false; uint32_t modmask = 0; - std::set<xkb_keysym_t> sMkMods = {}; + std::vector<xkb_keysym_t> sMkMods = {}; std::string handler = ""; std::string arg = ""; bool locked = false; @@ -52,6 +52,9 @@ struct SKeybind { bool submapUniversal = false; bool deviceInclusive = false; std::unordered_set<std::string> devices = {}; + bool enabled = true; + + std::string displayKey = ""; // DO NOT INITIALIZE bool shadowed = false; @@ -94,6 +97,10 @@ namespace Config::Legacy { class CConfigManager; } +namespace Config::Lua { + class CConfigManager; +} + class CKeybindManager { public: CKeybindManager(); @@ -107,7 +114,7 @@ class CKeybindManager { void onSwitchOnEvent(const std::string&); void onSwitchOffEvent(const std::string&); - void addKeybind(SKeybind); + SP<SKeybind> addKeybind(SKeybind); void removeKeybind(uint32_t, const SParsedKey&); uint32_t stringToModMask(std::string); uint32_t keycodeToModifier(xkb_keycode_t); @@ -121,6 +128,8 @@ class CKeybindManager { std::vector<SP<SKeybind>> m_keybinds; + SP<SKeybind> m_currentKeybind; + //since we can't find keycode through keyname in xkb: //on sendshortcut call, we once search for keyname (e.g. "g") the correct keycode (e.g. 42) //and cache it in this map to make sendshortcut calls faster @@ -132,8 +141,6 @@ class CKeybindManager { private: std::vector<SPressedKeyWithMods> m_pressedKeys; - inline static SSubmap m_currentSelectedSubmap = {}; - std::vector<WP<SKeybind>> m_activeKeybinds; WP<SKeybind> m_lastLongPressKeybind; @@ -141,14 +148,8 @@ class CKeybindManager { SP<CEventLoopTimer> m_repeatKeyTimer; uint32_t m_repeatKeyRate = 50; - uint32_t m_timeLastMs = 0; - uint32_t m_lastCode = 0; - uint32_t m_lastMouseCode = 0; - std::vector<WP<SKeybind>> m_pressedSpecialBinds; - int m_passPressed = -1; // used for pass - CTimer m_scrollTimer; SDispatchResult handleKeybinds(const uint32_t, const SPressedKeyWithMods&, bool, SP<IKeyboard>, SP<IHID>); @@ -156,7 +157,7 @@ class CKeybindManager { std::set<xkb_keysym_t> m_mkKeys = {}; std::set<xkb_keysym_t> m_mkMods = {}; eMultiKeyCase mkBindMatches(const SP<SKeybind>); - eMultiKeyCase mkKeysymSetMatches(const std::set<xkb_keysym_t>, const std::set<xkb_keysym_t>); + eMultiKeyCase mkKeysymSetMatches(const std::vector<xkb_keysym_t>, const std::set<xkb_keysym_t>); bool handleInternalKeybinds(xkb_keysym_t); bool handleVT(xkb_keysym_t); @@ -166,86 +167,10 @@ class CKeybindManager { void updateXKBTranslationState(); bool ensureMouseBindState(); - static bool tryMoveFocusToMonitor(PHLMONITOR monitor); - static void moveWindowOutOfGroup(PHLWINDOW pWindow, const std::string& dir = ""); - static void moveWindowIntoGroup(PHLWINDOW pWindow, PHLWINDOW pWindowInDirection); - - static void switchToWindow(PHLWINDOW PWINDOWTOCHANGETO, bool forceFSCycle = false); - - // -------------- Dispatchers -------------- // - static SDispatchResult closeActive(std::string); - static SDispatchResult killActive(std::string); - static SDispatchResult closeWindow(std::string); - static SDispatchResult killWindow(std::string); - static SDispatchResult signalActive(std::string); - static SDispatchResult signalWindow(std::string); - static SDispatchResult spawn(std::string); - static SDispatchResult spawnRaw(std::string); - static SDispatchResult toggleActiveFloating(std::string); - static SDispatchResult toggleActivePseudo(std::string); - static SDispatchResult setActiveFloating(std::string); - static SDispatchResult setActiveTiled(std::string); - static SDispatchResult changeworkspace(std::string); - static SDispatchResult fullscreenActive(std::string); - static SDispatchResult fullscreenStateActive(std::string args); - static SDispatchResult moveActiveToWorkspace(std::string); - static SDispatchResult moveActiveToWorkspaceSilent(std::string); - static SDispatchResult moveFocusTo(std::string); - static SDispatchResult focusUrgentOrLast(std::string); - static SDispatchResult focusCurrentOrLast(std::string); - static SDispatchResult centerWindow(std::string); - static SDispatchResult moveActiveTo(std::string); - static SDispatchResult swapActive(std::string); - static SDispatchResult toggleGroup(std::string); - static SDispatchResult changeGroupActive(std::string); - static SDispatchResult focusMonitor(std::string); - static SDispatchResult moveCursorToCorner(std::string); - static SDispatchResult moveCursor(std::string); - static SDispatchResult workspaceOpt(std::string); - static SDispatchResult renameWorkspace(std::string); - static SDispatchResult exitHyprland(std::string); - static SDispatchResult moveCurrentWorkspaceToMonitor(std::string); - static SDispatchResult moveWorkspaceToMonitor(std::string); - static SDispatchResult focusWorkspaceOnCurrentMonitor(std::string); - static SDispatchResult toggleSpecialWorkspace(std::string); - static SDispatchResult forceRendererReload(std::string); - static SDispatchResult resizeActive(std::string); - static SDispatchResult moveActive(std::string); - static SDispatchResult moveWindow(std::string); - static SDispatchResult resizeWindow(std::string); - static SDispatchResult circleNext(std::string); - static SDispatchResult focusWindow(std::string); - static SDispatchResult tagWindow(std::string); - static SDispatchResult toggleSwallow(std::string); - static SDispatchResult setSubmap(std::string); - static SDispatchResult pass(std::string); - static SDispatchResult sendshortcut(std::string); - static SDispatchResult sendkeystate(std::string); - static SDispatchResult layoutmsg(std::string); - static SDispatchResult dpms(std::string); - static SDispatchResult swapnext(std::string); - static SDispatchResult swapActiveWorkspaces(std::string); - static SDispatchResult pinActive(std::string); - static SDispatchResult mouse(std::string); - static SDispatchResult bringActiveToTop(std::string); - static SDispatchResult alterZOrder(std::string); - static SDispatchResult lockGroups(std::string); - static SDispatchResult lockActiveGroup(std::string); - static SDispatchResult moveIntoGroup(std::string); - static SDispatchResult moveIntoOrCreateGroup(std::string); - static SDispatchResult moveOutOfGroup(std::string); - static SDispatchResult moveGroupWindow(std::string); - static SDispatchResult moveWindowOrGroup(std::string); - static SDispatchResult setIgnoreGroupLock(std::string); - static SDispatchResult denyWindowFromGroup(std::string); - static SDispatchResult global(std::string); - static SDispatchResult event(std::string); - static SDispatchResult setProp(std::string); - static SDispatchResult forceIdle(std::string); - friend class CCompositor; friend class CInputManager; friend class Config::Legacy::CConfigManager; + friend class Config::Lua::CConfigManager; friend class CWorkspace; friend class CPointerManager; }; |
