![Debian 更新后 TrackPoint 难以控制](https://linux22.com/image/24107/Debian%20%E6%9B%B4%E6%96%B0%E5%90%8E%20TrackPoint%20%E9%9A%BE%E4%BB%A5%E6%8E%A7%E5%88%B6.png)
我正在进行 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
更多参考
答案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。