summaryrefslogtreecommitdiff
path: root/src/managers/input
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-04 20:07:21 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-04 20:07:21 +0100
commit0d702b556d0a52f1df53ac1e52fac11b8302783b (patch)
tree39e5f11ad37ec82248b7bbdb1ca09587dc511813 /src/managers/input
parent9bbae5b8e2e593b04f6505c9f35c7e9affa9ab6f (diff)
Add switch device handling and binds
Diffstat (limited to 'src/managers/input')
-rw-r--r--src/managers/input/InputManager.cpp26
-rw-r--r--src/managers/input/InputManager.hpp5
2 files changed, 31 insertions, 0 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index a5ba9c65..6b717ed2 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -1006,3 +1006,29 @@ void CInputManager::destroyTouchDevice(STouchDevice* pDevice) {
m_lTouchDevices.remove(*pDevice);
}
+
+void CInputManager::newSwitch(wlr_input_device* pDevice) {
+ const auto PNEWDEV = &m_lSwitches.emplace_back();
+ PNEWDEV->pWlrDevice = pDevice;
+
+ Debug::log(LOG, "New switch with name \"%s\" added", pDevice->name);
+
+ PNEWDEV->hyprListener_destroy.initCallback(&pDevice->events.destroy, [&](void* owner, void* data) {
+ destroySwitch((SSwitchDevice*)owner);
+ }, PNEWDEV, "SwitchDevice");
+
+ const auto PSWITCH = wlr_switch_from_input_device(pDevice);
+
+ PNEWDEV->hyprListener_toggle.initCallback(&PSWITCH->events.toggle, [&](void* owner, void* data) {
+ const auto PDEVICE = (SSwitchDevice*)owner;
+ const auto NAME = std::string(PDEVICE->pWlrDevice->name);
+
+ Debug::log(LOG, "Switch %s fired, triggering binds.", NAME.c_str());
+
+ g_pKeybindManager->onSwitchEvent(NAME);
+ }, PNEWDEV, "SwitchDevice");
+}
+
+void CInputManager::destroySwitch(SSwitchDevice* pDevice) {
+ m_lSwitches.remove(*pDevice);
+} \ No newline at end of file
diff --git a/src/managers/input/InputManager.hpp b/src/managers/input/InputManager.hpp
index 85af33fc..365b4a6f 100644
--- a/src/managers/input/InputManager.hpp
+++ b/src/managers/input/InputManager.hpp
@@ -37,9 +37,11 @@ public:
void newVirtualKeyboard(wlr_input_device*);
void newMouse(wlr_input_device*, bool virt = false);
void newTouchDevice(wlr_input_device*);
+ void newSwitch(wlr_input_device*);
void destroyTouchDevice(STouchDevice*);
void destroyKeyboard(SKeyboard*);
void destroyMouse(wlr_input_device*);
+ void destroySwitch(SSwitchDevice*);
void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
void recheckConstraint(SMouse*);
@@ -89,6 +91,9 @@ public:
// Touch devices
std::list<STouchDevice> m_lTouchDevices;
+ // Switches
+ std::list<SSwitchDevice> m_lSwitches;
+
void newTabletTool(wlr_input_device*);
void newTabletPad(wlr_input_device*);
void focusTablet(STablet*, wlr_tablet_tool*, bool motion = false);