Debian 更新后 TrackPoint 难以控制

Debian 更新后 TrackPoint 难以控制

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

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

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

我的xinput版本:

$ xinput --version
xinput version 1.6.0
XI version on server: 2.2

这是设备的道具:

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

更新我忘记有 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

知道要转动哪个旋钮吗?

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

[以下是对此问题的编辑巴里·格鲁宾(谢谢,伙计),被拒绝了https://unix.stackexchange.com/users/2180/shawn-j-goff(不,谢谢,伙计)。因为我发现它非常有用,而且肖恩的拒绝向我(直到现在)和其他人隐藏了这一点信息,所以我将其粘贴在这里:]

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

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

答案1

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

xinput --set-prop 11 'Device Accel Constant Deceleration' 3

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

xset m 5 1

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

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

xinput --set-prop 11 'Device Accel Constant Deceleration' 3 &
xset m 5 1 &
exec ck-launch-session startxfce4

我在以下网站上找到了所有这些信息建筑维基百科

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

[编辑:] 更多信息 我的 .xinitrc 无法在 Debian Testing/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

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

$ rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/pointers.xml

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

我的一些故障排除笔记:

# 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

更多参考

Xorg 指针加速 Wiki xorg.conf 手册页

答案2

Trackpoint 的 synaptics_usb 驱动程序确实存在一些问题。即使进行了这里提到的调整,它仍然非常痛苦。有补丁可用http://thread.gmane.org/gmane.linux.kernel.input/31935虽然我还没有测试过。

我发现最快的解决方法是跳回 usbhid 驱动程序。不幸的是,Synaptics 设备默认被 hid-quirks 列入黑名单(被忽略),以免引起设备争用。幸运的是,至少在最近的内核中有一种方法可以通过将 USB ID 和特殊标志传递给 hid-quirks 来忽略它。

首先收集USB设备信息:

$ lsusb
...
Bus 001 Device 008: ID 06cb:0009 Synaptics, Inc. Composite TouchPad and TrackPoint

如果 usbhid 作为模块加载 (lsmod|grep usbhid),则创建以下内容:

/etc/modprobe.d/usbhid.conf:
  options usbhid quirks=0x06cb:0x0009:0x40000000 # 0x4 is to unignore
  blacklist synaptics_usb  # Prevent synaptics_usb from being loaded

然后你可以通过以下方式进行测试:

$ sudo rmmod synaptics_usb 
$ sudo rmmod usbhid  (keeping in mind your usb keyboard might stop working here)
$ sudo modprobe usbhid

如果 usbhid 像我的发行版一样编译到内核中,则需要将其添加到内核启动参数中。就我而言(CentOS 7),我执行了以下操作:

 /etc/default/grub:
  GRUB_CMDLINE_LINUX="[...] usbhid.quirks=0x06cb:0x0009:0x40000000"

 $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

 /etc/modprobe.d/synaptics_usb.conf:
  blacklist synaptics_usb

然后重启!现在 USBhid 应该可以识别 Trackpoint。

相关内容