diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-19 17:48:18 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-19 17:48:18 +0100 |
| commit | f9a4e9aecd2f38d0f82f24ac2dd4a1f9d4d84045 (patch) | |
| tree | bfc784c918da55993f7635172aa7ce83348fa5f8 /src/config/ConfigManager.cpp | |
| parent | dba7bbdcf35a123e6106b420d9cc6064528080e0 (diff) | |
basic keybinds
Diffstat (limited to 'src/config/ConfigManager.cpp')
| -rw-r--r-- | src/config/ConfigManager.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index ff37f42e..825101c0 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -1,4 +1,5 @@ #include "ConfigManager.hpp" +#include "../managers/KeybindManager.hpp" #include <string.h> #include <sys/stat.h> @@ -128,6 +129,27 @@ void CConfigManager::handleMonitor(const std::string& command, const std::string m_dMonitorRules.push_back(newrule); } +void CConfigManager::handleBind(const std::string& command, const std::string& value) { + // example: + // bind=SUPER,G,exec,dmenu_run <args> + + auto valueCopy = value; + + const auto MOD = g_pKeybindManager->stringToModMask(valueCopy.substr(0, valueCopy.find_first_of(","))); + valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1); + + const auto KEY = valueCopy.substr(0, valueCopy.find_first_of(",")); + valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1); + + const auto HANDLER = valueCopy.substr(0, valueCopy.find_first_of(",")); + valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1); + + const auto COMMAND = valueCopy; + + if (KEY != "") + g_pKeybindManager->addKeybind(SKeybind{KEY, MOD, HANDLER, COMMAND}); +} + void CConfigManager::parseLine(std::string& line) { // first check if its not a comment const auto COMMENTSTART = line.find_first_of('#'); @@ -176,8 +198,12 @@ void CConfigManager::parseLine(std::string& line) { } else if (COMMAND == "monitor") { handleMonitor(COMMAND, VALUE); return; + } else if (COMMAND == "bind") { + handleBind(COMMAND, VALUE); + return; } + configSetValueSafe(currentCategory + (currentCategory == "" ? "" : ":") + COMMAND, VALUE); } |
