How to improve trackpad precision on Ubuntu?
I'm running Ubuntu 20.04 (kernel is 5.4.0-99-lowlatency, but issue is the same on the generic kernel) on a Thinkpad X260. The trackpad device is "Synaptics TM3075-002".
Basically, for small, precise movements the trackpad is jittery and sometimes doesn't register a movement.
I've tried both libinput 1.19.901 and the latest xserver-xorg-input-synaptics package.
Cursor movement while slowing moving my finger across the trackpad w/ libinput:
Cursor movement while slowing moving my finger across the trackpad w/ synaptics:
It's better with synaptics but still jumpy.
These are the properties with libinput:
Device 'Synaptics TM3075-002': Device Enabled (168): 1 Coordinate Transformation Matrix (170): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Tapping Enabled (304): 1 libinput Tapping Enabled Default (305): 0 libinput Tapping Drag Enabled (306): 1 libinput Tapping Drag Enabled Default (307): 1 libinput Tapping Drag Lock Enabled (308): 0 libinput Tapping Drag Lock Enabled Default (309): 0 libinput Tapping Button Mapping Enabled (310): 1, 0 libinput Tapping Button Mapping Default (311): 1, 0 libinput Natural Scrolling Enabled (312): 0 libinput Natural Scrolling Enabled Default (313): 0 libinput Disable While Typing Enabled (314): 0 libinput Disable While Typing Enabled Default (315): 1 libinput Scroll Methods Available (316): 1, 1, 0 libinput Scroll Method Enabled (317): 1, 0, 0 libinput Scroll Method Enabled Default (318): 1, 0, 0 libinput Click Methods Available (319): 1, 1 libinput Click Method Enabled (320): 0, 1 libinput Click Method Enabled Default (321): 1, 0 libinput Middle Emulation Enabled (322): 0 libinput Middle Emulation Enabled Default (323): 0 libinput Accel Speed (324): 0.500000 libinput Accel Speed Default (325): 0.000000 libinput Left Handed Enabled (326): 0 libinput Left Handed Enabled Default (327): 0 libinput Send Events Modes Available (289): 1, 1 libinput Send Events Mode Enabled (290): 0, 0 libinput Send Events Mode Enabled Default (291): 0, 0 Device Node (292): "/dev/input/event15" Device Product ID (293): 1739, 0 libinput Drag Lock Buttons (328): <no items> libinput Horizontal Scroll Enabled (329): 1and with synaptics:
Device 'Synaptics TM3075-002': Device Enabled (168): 1 Coordinate Transformation Matrix (170): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 Device Accel Profile (301): 1 Device Accel Constant Deceleration (302): 2.500000 Device Accel Adaptive Deceleration (303): 1.000000 Device Accel Velocity Scaling (304): 12.500000 Synaptics Edges (305): 67, 1613, 54, 948 Synaptics Finger (306): 25, 30, 0 Synaptics Tap Time (307): 180 Synaptics Tap Move (308): 86 Synaptics Tap Durations (309): 180, 180, 100 Synaptics ClickPad (310): 1 Synaptics Middle Button Timeout (311): 0 Synaptics Two-Finger Pressure (312): 282 Synaptics Two-Finger Width (313): 7 Synaptics Scrolling Distance (314): 39, 39 Synaptics Edge Scrolling (315): 1, 0, 0 Synaptics Two-Finger Scrolling (316): 1, 0 Synaptics Move Speed (317): 1.000000, 1.750000, 0.102249, 0.000000 Synaptics Off (318): 0 Synaptics Locked Drags (319): 0 Synaptics Locked Drags Timeout (320): 5000 Synaptics Tap Action (321): 2, 3, 0, 0, 1, 3, 0 Synaptics Click Action (322): 1, 3, 0 Synaptics Circular Scrolling (323): 0 Synaptics Circular Scrolling Distance (324): 0.100000 Synaptics Circular Scrolling Trigger (325): 0 Synaptics Circular Pad (326): 0 Synaptics Palm Detection (327): 0 Synaptics Palm Dimensions (328): 10, 200 Synaptics Coasting Speed (329): 20.000000, 50.000000 Synaptics Pressure Motion (330): 30, 160 Synaptics Pressure Motion Factor (331): 1.000000, 1.000000 Synaptics Resolution Detect (332): 1 Synaptics Grab Event Device (333): 0 Synaptics Gestures (334): 1 Synaptics Capabilities (335): 1, 0, 0, 1, 1, 1, 0 Synaptics Pad Resolution (336): 20, 20 Synaptics Area (337): 0, 0, 0, 0 Synaptics Soft Button Areas (338): 840, 0, 821, 0, 0, 0, 0, 0 Synaptics Noise Cancellation (339): 0, 0 Device Product ID (293): 1739, 0 Device Node (292): "/dev/input/event15"I'm not sure what else I can do. The other properties don't seem to affect this (I disabled noise cancellation for synaptics but not sure how much that helped). Is there another driver I should try?
1 Answer
After a lot of searching and trying things I ended up finding a decent solution at this answer to a previous question.
Basically I ended up changing the following properties:
DEVICE=11
xinput --set-prop "$DEVICE" "Synaptics Noise Cancellation" 0 0
xinput --set-prop "$DEVICE" "Device Accel Profile" 6
xinput --set-prop "$DEVICE" "Device Accel Velocity Scaling" 50
xinput --set-prop "$DEVICE" "Device Accel Constant Deceleration" 12The key is changing the Device Accel Profile to 6, which according to the linked answer is the linear acceleration profile. It takes some getting used to, but small movements are much less jumpy now:
libinput also has a "flat" acceleration profile which might be equivalent to synaptics linear profile, but I haven't yet had the chance to try it.