summaryrefslogtreecommitdiff
path: root/src/managers/input/InputManager.hpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-09 12:46:55 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-06-09 12:46:55 +0200
commit47404534d0cf94b969daee5e0e4dc20c65c35fb2 (patch)
tree87af91c66e810d09f9affcbe577915b62a2fa24d /src/managers/input/InputManager.hpp
parent248ce664593feddd84d6897ae6b40a3a5fa145c0 (diff)
added tablet v2 support (alpha alpha)
Diffstat (limited to 'src/managers/input/InputManager.hpp')
-rw-r--r--src/managers/input/InputManager.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/managers/input/InputManager.hpp b/src/managers/input/InputManager.hpp
new file mode 100644
index 00000000..e83a1e34
--- /dev/null
+++ b/src/managers/input/InputManager.hpp
@@ -0,0 +1,63 @@
+#pragma once
+
+#include "../../defines.hpp"
+#include <list>
+#include "../../helpers/WLClasses.hpp"
+#include "../../Window.hpp"
+
+class CInputManager {
+public:
+
+ void onMouseMoved(wlr_pointer_motion_event*);
+ void onMouseWarp(wlr_pointer_motion_absolute_event*);
+ void onMouseButton(wlr_pointer_button_event*);
+ void onKeyboardKey(wlr_keyboard_key_event*, SKeyboard*);
+ void onKeyboardMod(void*, SKeyboard*);
+
+ void newKeyboard(wlr_input_device*);
+ void newMouse(wlr_input_device*);
+ void destroyKeyboard(SKeyboard*);
+ void destroyMouse(wlr_input_device*);
+
+ void constrainMouse(SMouse*, wlr_pointer_constraint_v1*);
+ void recheckConstraint(SMouse*);
+
+ Vector2D getMouseCoordsInternal();
+ void refocus();
+
+ void setKeyboardLayout();
+
+ void updateDragIcon();
+ void updateCapabilities(wlr_input_device*);
+
+
+ // for dragging floating windows
+ CWindow* currentlyDraggedWindow = nullptr;
+ int dragButton = -1;
+
+ SDrag m_sDrag;
+
+ std::list<SConstraint> m_lConstraints;
+ std::list<SKeyboard> m_lKeyboards;
+ std::list<SMouse> m_lMice;
+
+ // tablets
+ std::list<STablet> m_lTablets;
+ std::list<STabletTool> m_lTabletTools;
+ std::list<STabletPad> m_lTabletPads;
+
+ void newTabletTool(wlr_input_device*);
+ void newTabletPad(wlr_input_device*);
+
+ SKeyboard* m_pActiveKeyboard = nullptr;
+
+ private:
+
+ uint32_t m_uiCapabilities = 0;
+
+ void mouseMoveUnified(uint32_t, bool refocus = false);
+
+ STabletTool* ensureTabletToolPresent(STablet*, wlr_tablet_tool*);
+};
+
+inline std::unique_ptr<CInputManager> g_pInputManager; \ No newline at end of file