TrackPoint
TrackPoint 是联想的键盘中间指点杆的商标。它由 xf86-input-evdev 和 xf86-input-libinput 支持。
默认 Xorg 行为支持点击和指向。对于 evdev
驱动程序,中键点击和滚动需要额外的配置。
GUI 配置
安装 gpointing-device-settingsAUR 软件包。
中键滚动
当使用 xf86-input-libinput 时,默认启用中键滚动。
当使用 xf86-input-evdev 时,通过来自 xorg-xinput 软件包的 xinput 支持中键滚动。例如
~/.xinitrc
xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 1 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 2 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 200 xinput set-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 6 7 4 5
- 设备名称可以使用
xinput --list
或 hwinfo 列出。 "Device Accel Constant Deceleration"
行配置 Trackpoint 的灵敏度。
Xorg 配置
作为 ~/.xinitrc
配置的替代方案,您还可以为 evdev(4) 驱动程序创建一个 Xorg#Configuration。例如,作为 /etc/X11/xorg.conf.d/20-thinkpad.conf
,将 TPPS/2 IBM TrackPoint
替换为来自 xinput 的设备名称
Section "InputClass" Identifier "Trackpoint Wheel Emulation" Driver "evdev" MatchProduct "TPPS/2 IBM TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
双键 Trackpoint
在双键 Trackpoint 上,使用 xf86-input-libinput,滚动按钮可以设置为右键单击按钮而不会移除功能。
将 device 替换为来自 xinput
的设备名称
$ xinput set-prop "device" "libinput Button Scrolling Button" 3
Sysfs 属性
TrackPoint 将其属性作为文件暴露在 /sys/devices/platform/i8042/serio1/
中。例如,要手动启用点击即选功能
# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select
/sys/devices/platform/i8042/serio1/serio2/
或 /sys/devices/platform/i8042/serio1/serio3/
路径,而仅具有 TrackPoint 设备的系统将使用 /sys/devices/platform/i8042/serio1/
路径。启动时配置
udev 规则
此规则在启动时增加 Trackpoint 的速度并启用点击选择(见上文)。
/etc/udev/rules.d/10-trackpoint.rules
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/sensitivity}="240", ATTR{device/press_to_select}="1"
systemd.path 单元
论坛上有 报告 指出 /sys/devices/platform/i8042/serio1/serio2/
下的属性/文件在启动过程中出现得太晚,以至于上述(或类似的)udev 规则对它们不起作用。相反,可以使用 systemd.path 单元来配置 TrackPoint 的属性。
首先创建一个可执行脚本,例如名为 /usr/local/bin/trackpoint_configuration.sh
,它按照 #Sysfs 属性 部分所示设置 TrackPoint 属性。
以下示例禁用了某些笔记本电脑上的 Trackpoint,但保留了 Trackpoint 的左右按钮(触摸板上方的按钮)正常工作(但是,如果直接从 UEFI/BIOS 设置中禁用 TrackPoint,则 Trackpoint 的左右按钮必然会被禁用)。
/usr/local/bin/trackpoint_configuration.sh
#!/bin/bash echo -n 0 > /sys/devices/platform/i8042/serio1/serio2/sensitivity echo -n 0 > /sys/devices/platform/i8042/serio1/serio2/speed
之后,创建以下 systemd 单元。确保由脚本修改的所有属性都使用 PathExists
列出。
/etc/systemd/system/trackpoint_parameters.path
[Unit] Description=Watch for, and modify, Trackpoint attributes [Path] PathExists=/sys/devices/platform/i8042/serio1/press_to_select [Install] WantedBy=default.target
/etc/systemd/system/trackpoint_parameters.service
[Unit] Description=Set TrackPoint attributes [Service] ExecStart=/usr/local/bin/trackpoint_configuration.sh
最后,启用 和 启动 trackpoint_parameters.path
systemd 单元。
udev hwdb 条目
Libinput 根据 udev 硬件数据库 中的条目将其自己的参数应用于 sysfs。这是运行 Wayland 合成器的系统上的行为,因为 libinput 是该环境中唯一受支持的输入接口。在 Wayland 合成器或 X 会话启动之前所做的更改将被覆盖。
要覆盖 libinput 的默认设置,请添加本地 hwdb 条目
/etc/udev/hwdb.d/99-trackpoint.hwdb
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:* POINTINGSTICK_SENSITIVITY=250
您可以在 udev 硬件数据库 中找到各种供应商/型号键。请注意,自从 此提交 以来,libinput 忽略了 POINTINGSTICK_CONST_ACCEL 参数,而使用 POINTINGSTICK_SENSITIVITY。范围是 0-255。
更新硬件数据库索引,然后在重新启动合成器或 X 会话之前测试更改,首先使用以下命令找到您的设备输入节点 /dev/input/eventX
# libinput list-devices
运行以下命令生成一些调试输出
# udevadm trigger /sys/class/input/eventX # udevadm test /sys/class/input/eventX
udevadm test
命令的输出中验证更改。最后,重新启动您的 Wayland 合成器或 X 会话以应用更改。
device-quirks
通过 libinput
切换到新的 device-quirks .ini
样式配置文件,您可以通过 /etc/libinput/
中的本地覆盖调整 trackpoint 参数。
例如,要覆盖指向速度,请创建以下文件
/etc/libinput/local-overrides.quirks
[Trackpoint Override] MatchUdevType=pointingstick AttrTrackpointMultiplier=0.75
有关更多信息,请参阅 libinput:安装临时的本地设备 quirks
故障排除
Trackpoint 未被检测到或在 X 分钟后被检测到
这似乎是一个内核错误。[1]
一种解决方法是将 proto=bare
作为 内核模块参数 传递给 psmouse
模块。但是,这会禁用使用点击板和双指中键的滚动。
psmouse proto=bare
对于某些带有 Elantech 触摸板的 ThinkPad 型号,Trackpoint 和相应的硬件按钮无法被识别。上述命令确实有效,但会禁用触摸板上的双指滚动。为了保持双指交互的可能性,请使用以下内核模块参数
psmouse elantech_smbus=0
Trackpoint 按钮并非总是有效
如果您发现禁用 BIOS 中的触摸板会禁用错误的按钮和/或 Trackpoint 按钮非常不可靠,一种解决方法是将 proto=imps
作为 内核模块参数 传递给 psmouse
模块。
双指滚动在休眠后停止工作
在某些笔记本电脑上,psmouse 似乎在启动时或休眠后失败
psmouse serio1: synaptics: Unable to initialize device
一种解决方法是将 synaptics_intertouch=0
添加到 psmouse
作为 内核模块参数。
Trackpoint 自行移动
在某些 ThinkPad 上,TrackPoint 光标在释放后自发移动并且不会停止。这是由于 drift_time
参数的值较低(例如 5
)造成的,您需要将其更改为 25
或 30
以解决此问题。这可以使用 udev 规则完成
/etc/udev/rules.d/10-trackpoint.rules
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/drift_time}="25"
如果此方法无法解决您的问题,请将 psmouse 协议更改为 bare
(即,将 psmouse.proto=bare
添加到您的 内核参数)。这样,Trackpoint 将被识别为“PS/2 通用鼠标”,而不是使用专用的内核驱动程序。
如果您不需要光标,您可以使用 libinput quirks 覆盖来禁用光标事件。按钮事件将继续工作。
/etc/libinput/local-overrides.quirks
[Trackpoint Buttons Only] MatchName=*TPPS/2 IBM TrackPoint AttrEventCode=-REL_X;-REL_Y
滚动时触发中键粘贴
默认情况下,单击鼠标中键会从 PRIMARY 选择 粘贴,这在使用鼠标中键与 TrackPoint 滚动时很不方便。请参阅 Clipboard#禁用中键粘贴 以禁用此行为。