From 127aab815908ecbd3db4d23f127d2e96b79855f9 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Tue, 2 Sep 2025 13:16:43 +0200 Subject: input: add per-device scroll-factor (#11241) --- hyprtester/plugin/src/main.cpp | 57 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'hyprtester/plugin/src/main.cpp') diff --git a/hyprtester/plugin/src/main.cpp b/hyprtester/plugin/src/main.cpp index 03035918..2b1d443a 100644 --- a/hyprtester/plugin/src/main.cpp +++ b/hyprtester/plugin/src/main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #undef private @@ -88,9 +89,38 @@ class CTestKeyboard : public IKeyboard { } private: - bool m_isVirtual; + bool m_isVirtual = false; }; +class CTestMouse : public IPointer { + public: + static SP create(bool isVirtual) { + auto maus = SP(new CTestMouse()); + maus->m_self = maus; + maus->m_isVirtual = isVirtual; + maus->m_deviceName = "test-mouse"; + maus->m_hlName = "test-mouse"; + return maus; + } + + virtual bool isVirtual() { + return m_isVirtual; + } + + virtual SP aq() { + return nullptr; + } + + void destroy() { + m_events.destroy.emit(); + } + + private: + bool m_isVirtual = false; +}; + +SP g_mouse; + static SDispatchResult pressAlt(std::string in) { g_pInputManager->m_lastMods = in == "1" ? HL_MODIFIER_ALT : 0; @@ -173,6 +203,23 @@ static SDispatchResult vkb(std::string in) { return {}; } +static SDispatchResult scroll(std::string in) { + int by; + try { + by = std::stoi(in); + } catch (...) { return SDispatchResult{.success = false, .error = "invalid input"}; } + + Debug::log(LOG, "tester: scrolling by {}", by); + + g_mouse->m_pointerEvents.axis.emit(IPointer::SAxisEvent{ + .delta = by, + .deltaDiscrete = 120, + .mouse = true, + }); + + return {}; +} + APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { PHANDLE = handle; @@ -181,10 +228,16 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:vkb", ::vkb); HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:alt", ::pressAlt); HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:gesture", ::simulateGesture); + HyprlandAPI::addDispatcherV2(PHANDLE, "plugin:test:scroll", ::scroll); + + // init mouse + g_mouse = CTestMouse::create(false); + g_pInputManager->newMouse(g_mouse); return {"hyprtestplugin", "hyprtestplugin", "Vaxry", "1.0"}; } APICALL EXPORT void PLUGIN_EXIT() { - ; + g_mouse->destroy(); + g_mouse.reset(); } -- cgit v1.2.3