Ubuntu: Can't move mouse short distances using touchpad



Question:

I recently got a new Lenovo Y50, and I'm running Ubuntu 14.04. On my previous Dell XPS 17, the touchpad had excellent response even when moving my finger slightly -- by moving my finger a very short distance, I was able to move the mouse a pixel at a time, which was very helpful for, e.g., grabbing narrow window borders. On this new machine however, the mouse does not respond until I've moved my finger about a half-centimeter, at which point the mouse will jump a dozen pixels or so. Once the mouse is moving in this manner, I am able to move it arbitrarily precise distances by moving my finger more slowly. I would like to have this tight precision even if I'm not already moving the mouse. (Note: this problem does not occur when using a USB mouse.)

I thought disabling noise cancellation in xinput may help, so I set noise cancellation values to zero, but this didn't help. Palm detection is also set to zero. Does anyone know how to achieve mouse precision for small touchpad movements?

Thank you!

For reference, xinput properties:

$ xinput list-props 'ETPS/2 Elantech Touchpad'  Device 'ETPS/2 Elantech Touchpad':      Device Enabled (155):   1      Coordinate Transformation Matrix (157): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000      Device Accel Profile (278): 1      Device Accel Constant Deceleration (279):   1.750000      Device Accel Adaptive Deceleration (280):   1.000000      Device Accel Velocity Scaling (281):    12.500000      Synaptics Edges (282):  127, 3061, 112, 1973      Synaptics Finger (283): 1, 1, 0      Synaptics Tap Time (284):   180      Synaptics Tap Move (285):   10      Synaptics Tap Durations (286):  180, 180, 100      Synaptics ClickPad (287):   1      Synaptics Middle Button Timeout (288):  0      Synaptics Two-Finger Pressure (289):    282      Synaptics Two-Finger Width (290):   7      Synaptics Scrolling Distance (291): 45, 45      Synaptics Edge Scrolling (292): 0, 0, 0      Synaptics Two-Finger Scrolling (293):   1, 1      Synaptics Move Speed (294): 1.000000, 1.750000, 0.052507, 0.000000      Synaptics Off (295):    0      Synaptics Locked Drags (296):   0      Synaptics Locked Drags Timeout (297):   5000      Synaptics Tap Action (298): 2, 3, 0, 0, 1, 3, 0      Synaptics Click Action (299):   1, 3, 0      Synaptics Circular Scrolling (300): 0      Synaptics Circular Scrolling Distance (301):    0.100000      Synaptics Circular Scrolling Trigger (302): 0      Synaptics Circular Pad (303):   0      Synaptics Palm Detection (304): 0      Synaptics Palm Dimensions (305):    1000, 1000      Synaptics Coasting Speed (306): 20.000000, 50.000000      Synaptics Pressure Motion (307):    30, 160      Synaptics Pressure Motion Factor (308): 1.000000, 1.000000      Synaptics Resolution Detect (309):  1      Synaptics Grab Event Device (310):  1      Synaptics Gestures (311):   1      Synaptics Capabilities (312):   1, 0, 0, 1, 1, 1, 1      Synaptics Pad Resolution (313): 32, 32      Synaptics Area (314):   0, 0, 0, 0      Synaptics Soft Button Areas (315):  1594, 0, 1709, 0, 0, 0, 0, 0      Synaptics Noise Cancellation (316): 0, 0      Device Product ID (271):    2, 14      Device Node (272):  "/dev/input/event5"  

For reference, synclient parameters:

$ synclient  Parameter settings:      LeftEdge                = 127      RightEdge               = 3061      TopEdge                 = 112      BottomEdge              = 1973      FingerLow               = 1      FingerHigh              = 1      MaxTapTime              = 180      MaxTapMove              = 100      MaxDoubleTapTime        = 180      SingleTapTimeout        = 180      ClickTime               = 100      EmulateMidButtonTime    = 0      EmulateTwoFingerMinZ    = 282      EmulateTwoFingerMinW    = 7      VertScrollDelta         = 45      HorizScrollDelta        = 45      VertEdgeScroll          = 0      HorizEdgeScroll         = 0      CornerCoasting          = 0      VertTwoFingerScroll     = 1      HorizTwoFingerScroll    = 1      MinSpeed                = 1      MaxSpeed                = 1.75      AccelFactor             = 0.0525072      TouchpadOff             = 0      LockedDrags             = 0      LockedDragTimeout       = 5000      RTCornerButton          = 2      RBCornerButton          = 3      LTCornerButton          = 0      LBCornerButton          = 0      TapButton1              = 1      TapButton2              = 3      TapButton3              = 0      ClickFinger1            = 1      ClickFinger2            = 3      ClickFinger3            = 0      CircularScrolling       = 0      CircScrollDelta         = 0.1      CircScrollTrigger       = 0      CircularPad             = 0      PalmDetect              = 0      PalmMinWidth            = 1000      PalmMinZ                = 1000      CoastingSpeed           = 20      CoastingFriction        = 50      PressureMotionMinZ      = 30      PressureMotionMaxZ      = 160      PressureMotionMinFactor = 1      PressureMotionMaxFactor = 1      ResolutionDetect        = 1      GrabEventDevice         = 1      TapAndDragGesture       = 1      AreaLeftEdge            = 0      AreaRightEdge           = 0      AreaTopEdge             = 0      AreaBottomEdge          = 0      HorizHysteresis         = 0      VertHysteresis          = 0      ClickPad                = 1      RightButtonAreaLeft     = 1594      RightButtonAreaRight    = 0      RightButtonAreaTop      = 1709      RightButtonAreaBottom   = 0      MiddleButtonAreaLeft    = 0      MiddleButtonAreaRight   = 0      MiddleButtonAreaTop     = 0      MiddleButtonAreaBottom  = 0  


Solution:1

My Lenovo t540p exhibited the same symptoms with the default acceleration profile = 1 (device dependent).

This appears to be related to XOrg's pointer acceleration and related "acceleration profile". If you set the device acceleration profile to -1 (none), the dead spot symptom seems to disappear though the mouse cursor moves very small distances on the display, making it very precise but fairly useless.

I switched to a linear device acceleration profile (AccelerationProfile 6) and saw immediate improvement. The initial movement hesitation is still there but the cursor doesn't jump as it did previously.

Further research into the cause of the 'dead spot' is warranted, but it may be due to firmware behavior. The synaptics man page mentions firmware noise cancellation that may be difficult or impossible to control at present:

Noise cancellation

The synaptics has a built-in noise cancellation based on hysteresis. This means that incoming coordinates actually shift a box of predefined dimensions such that it covers the incoming coordinate, and only the boxes own center is used as input. Obviously, the smaller the box the better, but the likelyhood of noise motion coming through also increases.

Tweaking the acceleration profile and related config

Here's a script I use to tweak settings on my system:

#!/bin/bash  DEVICE="SynPS/2 Synaptics TouchPad"  xinput --set-prop "$DEVICE" "Device Accel Profile" 6  xinput --set-prop "$DEVICE" "Device Accel Constant Deceleration" 12  xinput --set-prop "$DEVICE" "Device Accel Velocity Scaling" 20  

Once you find settings you like, you may choose to add them to your /etc/X11/xorg.conf.d/51-synaptics-quirks.conf file (copied from /usr/share/X11/xorg.conf.d) or create a new, separate .conf file there with a name like 99-your-config-file-name.conf.

Option "AccelerationProfile" "6"  # May want to set "ConstantDeceleration" and "VelocityScale" or other   # values here as well  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »