summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-27 19:32:50 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-27 19:32:50 +0200
commitba7b2d0db2bfa5a054a69af0b1ca9e9e7165a5ef (patch)
tree2cdde89d8e99b423ff9da0f491f7a186975c4098 /src
parent07612534dd73402eac55b4a47f78844bad132072 (diff)
Handle TTY switching
but bugs rn when coming back :-/
Diffstat (limited to 'src')
-rw-r--r--src/managers/KeybindManager.cpp21
-rw-r--r--src/managers/KeybindManager.hpp1
2 files changed, 21 insertions, 1 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index e0582657..6224b561 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -28,6 +28,10 @@ uint32_t CKeybindManager::stringToModMask(std::string mods) {
bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const xkb_keysym_t& key) {
bool found = false;
+
+ if (handleInternalKeybinds(key))
+ return true;
+
for (auto& k : m_dKeybinds) {
if (modmask != k.modmask)
continue;
@@ -56,6 +60,21 @@ bool CKeybindManager::handleKeybinds(const uint32_t& modmask, const xkb_keysym_t
return found;
}
+bool CKeybindManager::handleInternalKeybinds(xkb_keysym_t keysym) {
+ // Handles the CTRL+ALT+FX TTY keybinds
+ if (!(keysym >= XKB_KEY_XF86Switch_VT_1 && keysym <= XKB_KEY_XF86Switch_VT_12))
+ return false;
+
+ const auto PSESSION = wlr_backend_get_session(g_pCompositor->m_sWLRBackend);
+ if (PSESSION) {
+ const auto TTY = keysym - XKB_KEY_XF86Switch_VT_1 + 1;
+ wlr_session_change_vt(PSESSION, TTY);
+ return true;
+ }
+
+ return false;
+}
+
// Dispatchers
void CKeybindManager::spawn(std::string args) {
@@ -201,4 +220,4 @@ void CKeybindManager::moveActiveToWorkspace(std::string args) {
PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition - g_pCompositor->getMonitorFromID(OLDWORKSPACE->monitorID)->vecPosition;
PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition + g_pCompositor->getMonitorFromID(NEWWORKSPACE->monitorID)->vecPosition;
}
-} \ No newline at end of file
+}
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index ae19d589..019ba9bf 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -21,6 +21,7 @@ public:
private:
std::deque<SKeybind> m_dKeybinds;
+ bool handleInternalKeybinds(xkb_keysym_t);
// -------------- Dispatchers -------------- //
void killActive(std::string);