summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-11-16 07:21:59 +0800
committerGitHub <noreply@github.com>2024-11-15 23:21:59 +0000
commit7affc34ab43c5d5cbf670759b839a9e990d8bbea (patch)
tree0216331ac38eb1333e91cb786ff8bb2c3aaccb1d /src/config/ConfigManager.cpp
parent098e491a43e8b26f4382b48651a4131464bf6a2f (diff)
bind: new long press option (#8302)
--------- Co-authored-by: Vaxry <vaxry@vaxry.net>
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 10299277..58db00e9 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -2171,6 +2171,7 @@ std::optional<std::string> CConfigManager::handleBind(const std::string& command
bool transparent = false;
bool ignoreMods = false;
bool multiKey = false;
+ bool longPress = false;
bool hasDescription = false;
bool dontInhibit = false;
const auto BINDARGS = command.substr(4);
@@ -2192,6 +2193,8 @@ std::optional<std::string> CConfigManager::handleBind(const std::string& command
ignoreMods = true;
} else if (arg == 's') {
multiKey = true;
+ } else if (arg == 'o') {
+ longPress = true;
} else if (arg == 'd') {
hasDescription = true;
} else if (arg == 'p') {
@@ -2201,8 +2204,8 @@ std::optional<std::string> CConfigManager::handleBind(const std::string& command
}
}
- if (release && repeat)
- return "flags r and e are mutually exclusive";
+ if ((longPress || release) && repeat)
+ return "flags e is mutually exclusive with r and o";
if (mouse && (repeat || release || locked))
return "flag m is exclusive";
@@ -2264,9 +2267,9 @@ std::optional<std::string> CConfigManager::handleBind(const std::string& command
return "Invalid catchall, catchall keybinds are only allowed in submaps.";
}
- g_pKeybindManager->addKeybind(SKeybind{
- parsedKey.key, KEYSYMS, parsedKey.keycode, parsedKey.catchAll, MOD, MODS, HANDLER, COMMAND, locked, m_szCurrentSubmap, DESCRIPTION, release,
- repeat, mouse, nonConsuming, transparent, ignoreMods, multiKey, hasDescription, dontInhibit});
+ g_pKeybindManager->addKeybind(SKeybind{parsedKey.key, KEYSYMS, parsedKey.keycode, parsedKey.catchAll, MOD, MODS, HANDLER,
+ COMMAND, locked, m_szCurrentSubmap, DESCRIPTION, release, repeat, longPress,
+ mouse, nonConsuming, transparent, ignoreMods, multiKey, hasDescription, dontInhibit});
}
return {};