0

The clickpad device or driver on my thinkpad x250 omits position updates on slow movements, leading to jumps, imprecise motion, temporally stuck cursor. This is especially infuriating for precision cursor adjustments.

Symptoms:

  • When moving the finger too slowly, cursor stops moving and resumes after enough distance travelled, resulting in a jump.
  • This is a threshold-, not a resolution problem. Movement is smooth above threshold.
  • While it works, evtest shows events for ABS_MT_POSITION_X, ABS_MT_POSITION_Y, ABS_X, ABS_Y, ABS_PRESSURE, ABS_MT_PRESSURE.
  • While stuck, the device keeps sending updates but only ABS_PRESSURE and ABS_MT_PRESSURE.

The amount of jumpiness depends on driver settings. Proposed solution change driver settings to reduce jumps from this erratic behaviour by vastly reducing the useable resolution and acceleration profiles. This does not address the threshold but reduces the jump symptom.

Andrew.punnett links such a bug report. Example videos from that bug report: https://www.youtube.com/watch?v=oTgaf8tTNEc, https://imgur.com/gVV7OqI

System: Ubuntu 16.04, currently on 4.4.0-92-generic x86_64. xinput lists the device as "SynPS/2 Synaptics TouchPad". I have observed the behaviour on two X250s and on T-??? thinkpad.

My driver configuration is adjusted via synclient and xinput. I found no parameter to change this behaviour. See output of synclient, xinput below:

~$ synclient 
Parameter settings:
    LeftEdge                = 1545
    RightEdge               = 5399
    TopEdge                 = 1333
    BottomEdge              = 4521
    FingerLow               = 25
    FingerHigh              = 30
    MaxTapTime              = 180
    MaxTapMove              = 255
    MaxDoubleTapTime        = 100
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 282
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = 116
    HorizScrollDelta        = 116
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 1
    MinSpeed                = 1
    MaxSpeed                = 1
    AccelFactor             = 0.0343997
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 2
    RBCornerButton          = 3
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 2
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 2
    CircularScrolling       = 1
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 0
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect        = 1
    GrabEventDevice         = 0
    TapAndDragGesture       = 1
    AreaLeftEdge            = 2000
    AreaRightEdge           = 5000
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 0
    VertHysteresis          = 0
    ClickPad                = 1
    RightButtonAreaLeft     = 3472
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 4112
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0

~$ xinput list-props "SynPS/2 Synaptics TouchPad"
Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (139):   1
    Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (270): 1
    Device Accel Constant Deceleration (271):   1.000000
    Device Accel Adaptive Deceleration (272):   1.000000
    Device Accel Velocity Scaling (273):    1.000000
    Synaptics Edges (295):  1545, 5399, 1333, 4521
    Synaptics Finger (296): 25, 30, 0
    Synaptics Tap Time (297):   180
    Synaptics Tap Move (298):   255
    Synaptics Tap Durations (299):  180, 100, 100
    Synaptics ClickPad (300):   1
    Synaptics Middle Button Timeout (301):  0
    Synaptics Two-Finger Pressure (302):    282
    Synaptics Two-Finger Width (303):   7
    Synaptics Scrolling Distance (304): 116, 116
    Synaptics Edge Scrolling (305): 0, 0, 0
    Synaptics Two-Finger Scrolling (306):   1, 1
    Synaptics Move Speed (307): 1.000000, 1.000000, 0.034400, 0.000000
    Synaptics Off (308):    0
    Synaptics Locked Drags (309):   0
    Synaptics Locked Drags Timeout (310):   5000
    Synaptics Tap Action (311): 2, 3, 0, 0, 1, 3, 2
    Synaptics Click Action (312):   1, 3, 2
    Synaptics Circular Scrolling (313): 1
    Synaptics Circular Scrolling Distance (314):    0.100000
    Synaptics Circular Scrolling Trigger (315): 0
    Synaptics Circular Pad (316):   0
    Synaptics Palm Detection (317): 0
    Synaptics Palm Dimensions (318):    10, 200
    Synaptics Coasting Speed (319): 20.000000, 50.000000
    Synaptics Pressure Motion (320):    30, 160
    Synaptics Pressure Motion Factor (321): 1.000000, 1.000000
    Synaptics Resolution Detect (322):  1
    Synaptics Grab Event Device (323):  0
    Synaptics Gestures (324):   1
    Synaptics Capabilities (325):   1, 0, 0, 1, 1, 1, 1
    Synaptics Pad Resolution (326): 73, 53
    Synaptics Area (327):   2000, 5000, 0, 0
    Synaptics Soft Button Areas (328):  3472, 0, 4112, 0, 0, 0, 0, 0
    Synaptics Noise Cancellation (329): 0, 0
    Device Product ID (260):    2, 7
    Device Node (261):  "/dev/input/event5"
0

This sounds like exactly the same problem I experienced on my Thinkpad X230. There is a bug report about this issue here which suggests that you create the file /etc/X11/xorg.conf.d/50-touchpad.conf containing the following settings:

Section "InputClass"
        Identifier "touchpad"
        MatchProduct "SynPS/2 Synaptics TouchPad"
        Driver "synaptics"
        # fix touchpad resolution
        Option "VertResolution" "100"
        Option "HorizResolution" "65"
        # disable synaptics driver pointer acceleration
        Option "MinSpeed" "1"
        Option "MaxSpeed" "1"
        # tweak the X-server pointer acceleration
        Option "AccelerationProfile" "2"
        Option "AdaptiveDeceleration" "16"
        Option "ConstantDeceleration" "16"
        Option "VelocityScale" "32"
EndSection

After tweaking the VelocityScale setting, this vastly improved my touchpad's behavior.

  • Thanks, this workaround makes the touchpad more useable. It reduces jumps by vastly reducing the response. This doesn't however resolve my issue. Btw, everything but VertResolution, HorizResolution can be set from synclient. – hellday Sep 10 '17 at 9:07
  • I previously used a x230 which just seemed to have a very low resolution touchpad. This is different from the x250 which goes from no movement to smooth movement. bugreport – hellday Sep 10 '17 at 10:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.