From f90a009e9387c3132721e9f6c9b4308876519094 Mon Sep 17 00:00:00 2001 From: unrealhoang Date: Wed, 6 Sep 2023 21:54:48 +0900 Subject: [PATCH] input/config: add button scroll lock (#3189) --- src/config/ConfigManager.cpp | 2 ++ src/managers/input/InputManager.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index cd98dd1a..5aea669b 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -201,6 +201,7 @@ void CConfigManager::setDefaultVars() { configValues["input:left_handed"].intValue = 0; configValues["input:scroll_method"].strValue = STRVAL_EMPTY; configValues["input:scroll_button"].intValue = 0; + configValues["input:scroll_button_lock"].intValue = 0; configValues["input:touchpad:natural_scroll"].intValue = 0; configValues["input:touchpad:disable_while_typing"].intValue = 1; configValues["input:touchpad:clickfinger_behavior"].intValue = 0; @@ -265,6 +266,7 @@ void CConfigManager::setDeviceDefaultVars(const std::string& dev) { cfgValues["left_handed"].intValue = 0; cfgValues["scroll_method"].strValue = STRVAL_EMPTY; cfgValues["scroll_button"].intValue = 0; + cfgValues["scroll_button_lock"].intValue = 0; cfgValues["transform"].intValue = 0; cfgValues["output"].strValue = STRVAL_EMPTY; cfgValues["enabled"].intValue = 1; // only for mice / touchpads diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index c0e16487..c6daeb2a 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -1030,6 +1030,10 @@ void CInputManager::setPointerConfigs() { libinput_device_config_scroll_set_button(LIBINPUTDEV, SCROLLBUTTON == 0 ? libinput_device_config_scroll_get_default_button(LIBINPUTDEV) : SCROLLBUTTON); + const auto SCROLLBUTTONLOCK = HASCONFIG ? g_pConfigManager->getDeviceInt(devname, "scroll_button_lock", 0) : g_pConfigManager->getInt("input:scroll_button_lock"); + + libinput_device_config_scroll_set_button_lock(LIBINPUTDEV, SCROLLBUTTONLOCK == 0 ? LIBINPUT_CONFIG_SCROLL_BUTTON_LOCK_DISABLED : LIBINPUT_CONFIG_SCROLL_BUTTON_LOCK_ENABLED); + Debug::log(LOG, "Applied config to mouse {}, sens {:.2f}", m.name.c_str(), LIBINPUTSENS); } }