我最近买了一台新的联想 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 的详尽回答,它为我指明了正确的方向。