Debian 更新后 TrackPoint 难以控制

Evg*_*sky 8 debian thinkpad xinput

我正在进行 debian 测试,并且在重新启动后(在 3 周左右的正常运行时间后,其中包括一堆软件包更新,我相信包括内核)前几天,微调 - 高尔夫球手会称之为推杆 -鼠标指针位置变得非常困难,感觉指针仍在移动,尽管轨迹点已经回到其中心位置。使用轨迹点不再有趣,只需几秒钟即可选择一堆单词。

我不认为这只是一个轨迹点性能配置设置。它可能是某个阈值或某个聪明算法的停用(或一个想要的聪明算法的激活)来增强跟踪点的可用性。

这是一个 IBM/Lenovo 外置 USB 键盘(它不是 ThinkPad 笔记本电脑,尽管我将这个问题标记为“thinkpad”,因为还没有“trackpoint”标签,而且我目前的声誉不允许创建标签)。

我的 xinput 版本:

$ xinput --version
xinput version 1.6.0
XI version on server: 2.2
Run Code Online (Sandbox Code Playgroud)

这里是设备的道具:

$ xinput list-props 10
Device 'Synaptics Inc. Composite TouchPad / TrackPoint':
        Device Enabled (125):   0
        Coordinate Transformation Matrix (127): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (247):     1
        Device Accel Constant Deceleration (248):       2.500000
        Device Accel Adaptive Deceleration (249):       1.000000
        Device Accel Velocity Scaling (250):    12.500000
        Synaptics Edges (251):  1632, 5312, 1572, 4284
        Synaptics Finger (252): 25, 30, 256
        Synaptics Tap Time (253):       180
        Synaptics Tap Move (254):       221
        Synaptics Tap Durations (255):  180, 180, 100
        Synaptics ClickPad (256):       0
        Synaptics Tap FastTap (257):    0
        Synaptics Middle Button Timeout (258):  75
        Synaptics Two-Finger Pressure (259):    282
        Synaptics Two-Finger Width (260):       7
        Synaptics Scrolling Distance (261):     100, 100
        Synaptics Edge Scrolling (262): 1, 0, 0
        Synaptics Two-Finger Scrolling (263):   0, 0
        Synaptics Move Speed (264):     1.000000, 1.750000, 0.039809, 40.000000
        Synaptics Edge Motion Pressure (265):   30, 160
        Synaptics Edge Motion Speed (266):      1, 401
        Synaptics Edge Motion Always (267):     0
        Synaptics Off (268):    0
        Synaptics Locked Drags (269):   0
        Synaptics Locked Drags Timeout (270):   5000
        Synaptics Tap Action (271):     0, 0, 0, 0, 0, 0, 0
        Synaptics Click Action (272):   1, 1, 1
        Synaptics Circular Scrolling (273):     0
        Synaptics Circular Scrolling Distance (274):    0.100000
        Synaptics Circular Scrolling Trigger (275):     0
        Synaptics Circular Pad (276):   0
        Synaptics Palm Detection (277): 0
        Synaptics Palm Dimensions (278):        10, 200
        Synaptics Coasting Speed (279): 20.000000, 50.000000
        Synaptics Pressure Motion (280):        30, 160
        Synaptics Pressure Motion Factor (281): 1.000000, 1.000000
        Synaptics Grab Event Device (282):      1
        Synaptics Gestures (283):       1
        Synaptics Capabilities (284):   1, 1, 1, 1, 1, 1, 1
        Synaptics Pad Resolution (285): 1, 1
        Synaptics Area (286):   0, 0, 0, 0
        Synaptics Noise Cancellation (287):     25, 25
        Device Product ID (242):        1739, 9
        Device Node (243):      "/dev/input/event6"
Run Code Online (Sandbox Code Playgroud)

更新我忘了有 2 个可能相关的设备,这个实际上看起来比突触设备更相关:

$ xinput list-props 11
Device 'TPPS/2 IBM TrackPoint':
    Device Enabled (135):   1
    Coordinate Transformation Matrix (137): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (260):     0
    Device Accel Constant Deceleration (261):       1.000000
    Device Accel Adaptive Deceleration (262):       1.000000
    Device Accel Velocity Scaling (263):    10.000000
    Device Product ID (255):        2, 10
    Device Node (256):      "/dev/input/event9"
    Evdev Axis Inversion (302):     0, 0
    Evdev Axes Swap (304):  0
    Axis Labels (305):      "Rel X" (145), "Rel Y" (146)
    Button Labels (306):    "Button Left" (138), "Button Middle" (139), "Button Right" (140), "Button Wheel Up" (141), "Button Wheel Down" (142)
    Evdev Middle Button Emulation (307):    0
    Evdev Middle Button Timeout (308):      50
    Evdev Third Button Emulation (309):     0
    Evdev Third Button Emulation Timeout (310):     1000
    Evdev Third Button Emulation Button (311):      3
    Evdev Third Button Emulation Threshold (312):   20
    Evdev Wheel Emulation (313):    0
    Evdev Wheel Emulation Axes (314):       0, 0, 4, 5
    Evdev Wheel Emulation Inertia (315):    10
    Evdev Wheel Emulation Timeout (316):    200
    Evdev Wheel Emulation Button (317):     4
    Evdev Drag Lock Buttons (318):  0
Run Code Online (Sandbox Code Playgroud)

知道要转动什么旋钮吗?

更新我将上述属性与另一台同样运行 debian 测试的机器(TrackPoint 工作正常的联想笔记本电脑)的属性进行了比较,它们完全相同。xinput 的版本也是一样的。所以我想我们可以从我们的考虑中排除 xinput 版本以及这些设备的 xinput 设置。我会尝试使用另一个 IBM USB 键盘并检查它是否 - 毕竟 - 硬件问题......

[以下是Barry Grumbine(谢谢,伙计)对这个问题所做的编辑,但被https://unix.stackexchange.com/users/2180/shawn-j-goff(不,谢谢,伙计)拒绝了。因为我觉得它非常有用,而且 Shawn 的拒绝对我(直到现在)和其他人隐藏了这一点信息,所以我将其粘贴在这里:]

附加信息
有一个开放的 Debian 错误报告,我相信它描述了这个问题#682413该问题似乎与synaptics_usb内核模块有关。根据synaptics_usb.c,第 30 行:

[...] 触摸杆支持尚未经过过多测试[...]

小智 4

我遇到了完全相同的问题,但我想我终于找到了解决方案。

xinput --set-prop 11 'Device Accel Constant Deceleration' 3
Run Code Online (Sandbox Code Playgroud)

允许触摸杆/指点杆在近距离(即尝试选择文本时)保持稳定。向上或向下更改“3”,直到得到您喜欢的值,我尝试了 2、3 和 4,最后选择了“3”。然后一起玩,

xset m 5 1
Run Code Online (Sandbox Code Playgroud)

来调整加速度。“5”是加速乘数,“1”是在加速开始之前移动光标所需的像素数,“5”让我可以很好地在屏幕上快速移动。

最后要做的是将这些设置合并到我的 .xinitrc 中:

xinput --set-prop 11 'Device Accel Constant Deceleration' 3 &
xset m 5 1 &
exec ck-launch-session startxfce4
Run Code Online (Sandbox Code Playgroud)

我在ArchWiki上找到了所有这些信息。

最后说明:我认为这个问题的出现是因为最近添加的synaptics_usb内核模块没有合理的轨迹点默认值,因此问题是由新的内核模块“暴露”的,但不是 synaptics_usb 本身的问题。

[编辑:] 更多信息 我的 .xinitrc 无法在 Debian 测试/LightDM/XFCE 上运行,不知道为什么。决定对 xorg.conf 进行调整。

创建了配置文件:

$ cat /usr/share/X11/xorg.conf.d/50-synaptics_trackpoint.conf
Section "InputClass"
        Identifier "Synaptics TrackPoint"
        MatchProduct "Stick"
        # set the following to 1 1 0 respectively to disable acceleration.
        Option "AccelerationNumerator" "5"
        Option "AccelerationDenominator" "1"
        Option "AccelerationThreshold" "1"
        # linear deceleration (mouse speed reduction)
        Option "ConstantDeceleration" "2"
        # some curved deceleration
        Option "AdaptiveDeceleration" "1"
EndSection
Run Code Online (Sandbox Code Playgroud)

重启了,还是没有骰子。我发现 XFCE 覆盖了 Xorg 配置,所以我删除了它:

$ rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/pointers.xml
Run Code Online (Sandbox Code Playgroud)

再次重新启动,按预期工作。

我的一些故障排除笔记

# Get the current acceleration values.
xinput --get-feedbacks 11

# Get the current deceleration values.
xinput --list-props 11 | grep Deceleration

# What does Xorg know about this?
grep -i stick /var/log/Xorg.0.log

# Set acceleration.
xinput --set-ptr-feedback 11 1 5 1

# Set deceleration.
xinput --set-prop 11 'Device Accel Constant Deceleration' 2
Run Code Online (Sandbox Code Playgroud)

更多参考

Xorg PointerAcceleration Wiki xorg.conf 手册页