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

Mic*_*ley 5 mouse touchpad synaptics

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

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

谢谢!

供参考,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"
Run Code Online (Sandbox Code Playgroud)

供参考,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
Run Code Online (Sandbox Code Playgroud)

Ina*_*ist 9

我的 Lenovo 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
Run Code Online (Sandbox Code Playgroud)

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

Option "AccelerationProfile" "6"
# May want to set "ConstantDeceleration" and "VelocityScale" or other 
# values here as well
Run Code Online (Sandbox Code Playgroud)