Score:0

How to improve trackpad precision on Ubuntu?

ng flag

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: Trackpad with libinput

Cursor movement while slowing moving my finger across the trackpad w/ synaptics: Trackpad with 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):       1

and 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?

Score:0
ng flag

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" 12

The 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:

Smoother trackpad movements

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.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.