From 47404534d0cf94b969daee5e0e4dc20c65c35fb2 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Thu, 9 Jun 2022 12:46:55 +0200 Subject: added tablet v2 support (alpha alpha) --- src/managers/input/InputManager.hpp | 63 +++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/managers/input/InputManager.hpp (limited to 'src/managers/input/InputManager.hpp') 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 +#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 m_lConstraints; + std::list m_lKeyboards; + std::list m_lMice; + + // tablets + std::list m_lTablets; + std::list m_lTabletTools; + std::list 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 g_pInputManager; \ No newline at end of file -- cgit v1.2.3