无法使用触摸板短距离移动鼠标

无法使用触摸板短距离移动鼠标

我最近买了一台新的联想 Y50,运行的是 Ubuntu 14.04。在我之前的戴尔 XPS 17 上,即使我的手指稍微移动,触摸板也能很好地响应——只需将手指移动很短的距离,我就能一次移动鼠标一个像素,这对于抓取狭窄的窗口边框非常有用。然而在这台新机器上,鼠标直到我将手指移动大约半厘米才会响应,此时鼠标会跳动十几个像素左右。一旦鼠标以这种方式移动,我能够通过更慢地移动手指来移动任意精确的距离。即使我没有移动鼠标,我也希望拥有这种紧密的精度。(注意:这个问题不是(使用 USB 鼠标时会出现此情况。)

我以为禁用noise cancellation可能xinput会有帮助,所以我将噪音消除值设置为零,但这没有帮助。手掌检测也设置为零。有人知道如何实现鼠标精度以实现小的触摸板移动吗?

谢谢你!

作为参考,xinput属性:

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

供参考,synclient参数:

$ 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

答案1

我的联想 t540p 出现了同样的症状,默认加速度配置文件 = 1(取决于设备)。

这似乎与 XOrg 的指针加速有关,并且与“加速度曲线”。如果将设备加速度配置文件设置为 -1(无),虽然鼠标光标在显示屏上移动的距离很小,但死点症状似乎消失了,这使得它非常精确但几乎毫无用处。

我换了一个线性设备加速度曲线( AccelerationProfile 6) 并立即看到改进。初始移动犹豫仍然存在,但光标不会像以前那样跳动。

有必要进一步研究“死点”的原因,但这可能是由于固件行为造成的。synaptics 手册页提到目前可能难以或无法控制的固件噪音消除:

噪音消除

突触具有基于滞后现象的内置噪音消除功能。这意味着传入的坐标实际上会移动一个预定义尺寸的框,使其覆盖传入的坐标,并且仅将框自身的中心用作输入。显然,框越小越好,但噪声运动通过的可能性也会增加。

调整加速度曲线和相关配置

这是我用来调整系统设置的脚本:

#!/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

一旦找到喜欢的设置,您可以选择将它们添加到您的/etc/X11/xorg.conf.d/51-synaptics-quirks.conf文件中(从中复制/usr/share/X11/xorg.conf.d)或在那里创建一个新的、单独的 .conf 文件,名称类似99-your-config-file-name.conf

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

答案2

我可以通过执行以下命令来解决我的问题(ThinkPad T460s):

$ synclient HorizHysteresis=0
$ synclient VertHysteresis=0

使用 synaptics 配置软件synclient

这些参数已在@MichaelTingley 的原始问题中设置0,但在我的例子中,它们被设置为 28。将它们设置为零就不需要在鼠标实际移动之前稍微移动手指了。

可以通过将其添加到您的以下内容来永久设置这些设置/etc/X11/xorg.conf.d/70-synaptics.conf

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    Option "HorizHysteresis" "0"
    Option "VertHysteresis" "0"
EndSection

并感谢@Inactivist 的详尽回答,它为我指明了正确的方向。

相关内容