summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruno Ancona <brunoanconasala@gmail.com>2022-06-11 10:24:00 -0500
committerBruno Ancona <brunoanconasala@gmail.com>2022-06-11 10:24:00 -0500
commit018b0684ddebcd5bce53886dc2558f616e722f2f (patch)
tree29f92c58fbcba3a88cc3248b7560a1544c403e0d /src
parent94528bcdbc72a8a3a18dc309bfe678915f9a27d5 (diff)
Add natural_scrolling option for touchpads only
Diffstat (limited to 'src')
-rw-r--r--src/config/ConfigManager.cpp1
-rw-r--r--src/managers/input/InputManager.cpp10
2 files changed, 9 insertions, 2 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 56548580..4e26dc89 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -84,6 +84,7 @@ void CConfigManager::setDefaultVars() {
configValues["input:natural_scroll"].intValue = 0;
configValues["input:numlock_by_default"].intValue = 0;
configValues["input:force_no_accel"].intValue = 0;
+ configValues["input:touchpad:natural_scroll"].intValue = 0;
configValues["input:touchpad:disable_while_typing"].intValue = 1;
configValues["input:follow_mouse"].intValue = 1;
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 157ee9bb..4a35a8c7 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -326,8 +326,14 @@ void CInputManager::newMouse(wlr_input_device* mouse) {
if (libinput_device_config_tap_get_finger_count(LIBINPUTDEV)) // this is for tapping (like on a laptop)
libinput_device_config_tap_set_enabled(LIBINPUTDEV, LIBINPUT_CONFIG_TAP_ENABLED);
- if (libinput_device_config_scroll_has_natural_scroll(LIBINPUTDEV))
- libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, g_pConfigManager->getInt("input:natural_scroll"));
+ if (libinput_device_config_scroll_has_natural_scroll(LIBINPUTDEV)) {
+ double w = 0, h = 0;
+
+ if (libinput_device_has_capability(LIBINPUTDEV, LIBINPUT_DEVICE_CAP_POINTER) && libinput_device_get_size(LIBINPUTDEV, &w, &h) == 0) // pointer with size is a touchpad
+ libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, g_pConfigManager->getInt("input:touchpad:natural_scroll"));
+ else
+ libinput_device_config_scroll_set_natural_scroll_enabled(LIBINPUTDEV, g_pConfigManager->getInt("input:natural_scroll"));
+ }
if (libinput_device_config_dwt_is_available(LIBINPUTDEV)) {
const auto DWT = static_cast<enum libinput_config_dwt_state>(g_pConfigManager->getInt("input:touchpad:disable_while_typing") != 0);