After a long journey and no answer, this thread brought me into the correct direction.
- Type
xinput --list --short | grep pointer into your terminal to get the device name and id of the desired pointer (works for both mice and touchpads). Sample output:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎜ ↳ lircd-uinput id=14 [slave pointer (2)]
⎜ ↳ Logitech MX Vertical Advanced Ergonomic Mouse Consumer Control id=25 [slave pointer (2)]
⎜ ↳ Logitech MX Vertical Advanced Ergonomic Mouse id=26 [slave pointer (2)]
In my case, I wanted to change SynPS/2 Synaptics TouchPad with id=12.
- Now I typed the command
xinput --list-props 12 (you could also paste it's name instead of the id 12) to get:
Device 'SynPS/2 Synaptics TouchPad':
Device Enabled (183): 1
Coordinate Transformation Matrix (185): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (312): 1
Device Accel Constant Deceleration (313): 2.500000
Device Accel Adaptive Deceleration (314): 1.000000
Device Accel Velocity Scaling (315): 12.500000
Synaptics Edges (316): 1659, 5337, 1531, 4401
Synaptics Finger (317): 25, 30, 0
Synaptics Tap Time (318): 180
Synaptics Tap Move (319): 238
Synaptics Tap Durations (320): 180, 180, 100
Synaptics ClickPad (321): 1
Synaptics Middle Button Timeout (322): 0
Synaptics Two-Finger Pressure (323): 282
Synaptics Two-Finger Width (324): 7
Synaptics Scrolling Distance (325): -108, 108
Synaptics Edge Scrolling (326): 1, 0, 0
Synaptics Two-Finger Scrolling (327): 1, 0
Synaptics Move Speed (328): 1.000000, 1.750000, 0.036880, 0.000000
Synaptics Off (329): 0
Synaptics Locked Drags (330): 0
Synaptics Locked Drags Timeout (331): 5000
Synaptics Tap Action (332): 2, 3, 0, 0, 1, 3, 0
Synaptics Click Action (333): 1, 3, 0
Synaptics Circular Scrolling (334): 0
Synaptics Circular Scrolling Distance (335): 0.100000
Synaptics Circular Scrolling Trigger (336): 0
Synaptics Circular Pad (337): 0
Synaptics Palm Detection (338): 0
Synaptics Palm Dimensions (339): 10, 200
Synaptics Coasting Speed (340): 20.000000, 50.000000
Synaptics Pressure Motion (341): 30, 160
Synaptics Pressure Motion Factor (342): 1.000000, 1.000000
Synaptics Resolution Detect (343): 1
Synaptics Grab Event Device (344): 0
Synaptics Gestures (345): 1
Synaptics Capabilities (346): 1, 0, 0, 1, 1, 1, 1
Synaptics Pad Resolution (347): 53, 36
Synaptics Area (348): 0, 0, 0, 0
Synaptics Soft Button Areas (349): 3498, 0, 4033, 0, 0, 0, 0, 0
Synaptics Noise Cancellation (350): 27, 27
Device Product ID (306): 2, 7
Device Node (307): "/dev/input/event6"
I could also, but didn't want to change Device Accel Constant Deceleration, the interesting thing here was xinput --list-props 12 | grep 'Synaptics Scrolling Distance' (if you use a different driver, you might want to find something similarly adequate to Synaptics Scrolling Distance).
- In the last step, I inverted the vertical scroll direction by putting
-108 instead of 108, leaving the absolute values unchanged. The final command is then xinput --set-prop 12 325 -108, 108
Notes:
- instead of
12 325, you will probably need values specific to your setup
- as far as I'm concerned, this method might be limited to OSes using Xorg aka the x server - some Ubuntu for example use wayland instead. To check, you can use
echo $XDG_SESSION_TYPE, "if you see X11, it’s Xorg. If you see Wayland, quite obviously, the display server in use is Wayland."(formatting by me)
- usually, the changes should apply immedeately, but if not, you can restart the x server. To do so, enter
sudo systemctl restart display-manager, but beware that this kills all your graphical interfaces and probably loggs you off!