ThinkPad T470s 上的 openSUSE 系统里设置开机自动配置 TrackPoint 指点杆

ThinkPad TrackPoint(俗称「小红点」的指点杆)的默认配置参数并不方便使用,需要自己修改设置。但是 Linux 上设置这个稍微麻烦写。之前折腾 udev.rules 和 systemd 系统服务的时候总是不成功,这次终于弄正确了。

之前在 T420s 上折腾开机自动配置指点杆参数的时候使用系统的开机运行脚本特性。但是这个 after.local 文件中明确指出尽量不要使用该过时的方法,而应该使用 systemd 的系统服务,或者 udev.rules。

下面是在 ThinkPad T470s 上的 openSUSE Tumbleweed 系统 KDE 桌面环境中详细配置步骤的记录。当然,这里省略了前文中介绍过的一些内容。比如,要实时测试参数值是否适合自己,可以直接将该值写入对应的配置文件。这些配置文件都在文件夹 /sys/devices/platform/i8042/serio1/serio2/ 下面。如光标速度 speed,修改其值为 255 就是(需要 root 权限),

# echo -n 255 > /sys/devices/platform/i8042/serio1/serio2/speed

UDEV

/etc/udev/rules.d/ 目录下创建一个脚本文件,

$ sudo touch /etc/udev/rules.d/10-trackpoint.rules

编辑文件内容如下,

ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="250", ATTR{device/sensitivity}="250", ATTR{device/inertia}="4"

分别设置「速度 speed」、「敏感度 sensitivity」和「惯性 inertia」为 250、250 和 4(根据自己的需要调高调低数值,参见这里)。还可以在后面再加上开启轻击选择特性的设置,变成,

ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 IBM TrackPoint", ATTR{device/speed}="250", ATTR{device/sensitivity}="250", ATTR{device/inertia}="4", ATTR{device/press_to_select}="1", ATTR{device/thresh}="5"

其它还有很多设置选项可以参考 ThinkWiki 上的条目,也可以直接去看 Linux kernel 的源代码

运行下面的指令**也许**能使该配置生效,

$ sudo udevadm control --reload-rules && udevadm trigger

如果不行就重启电脑试试看。而下面的指令可以查询所有该设备的配置参数,

$ udevadm info --query all --attribute-walk --path /sys/devices/platform/i8042/serio1/serio2

systemd 系统服务

这种方式分两步:先创建一个修改配置的脚本文件,然后创建一个系统服务在系统启动的时候自动运行该脚本。

执行脚本

/usr/local/bin/ 目录下创建一个脚本文件,

$ sudo touch /usr/local/bin/set-trackpoint.sh

编辑文件内容如下,

#!/bin/bash
#
# Set speed and sensitivity for TrackPoint after boot
echo -n 250 > /sys/devices/platform/i8042/serio1/serio2/speed
echo -n 250 > /sys/devices/platform/i8042/serio1/serio2/sensitivity
echo -n 4 > /sys/devices/platform/i8042/serio1/serio2/inertia

也可以在后面再加上开启轻击选择特性的设置,

echo -n 1 > /sys/devices/platform/i8042/serio1/serio2/press_to_select
echo -n 5 > /sys/devices/platform/i8042/serio1/serio2/thresh

修改文件权限为 644,

$ sudo chmod 644 /usr/local/bin/set-trackpoint.sh

系统服务

/etc/systemd/system/ 目录下创建一个文本文件,

$ sudo touch /etc/systemd/system/set-trackpoint.service

编辑文件内容如下,

[Unit]
Description=Tune Trackpoint Speed and Sensitivity on Boot

[Service]
Type=oneshot
ExecStart=/usr/local/bin/set-trackpoint.sh

[Install]
WantedBy=multi-user.target

修改文件权限为 644,

$ sudo chmod 644 /etc/systemd/system/set-trackpoint.service

运行该服务即可使其中的设置生效,

$ sudo systemctl start set-trackpoint.service

要使它在开机后自动执行,则启用该服务,

$ sudo systemctl enable set-trackpoint.service

以上就是 udev.rules 和 systemd 服务两种设置方式了,任选其一即可。

话说新的触摸板也挺好用的。于是我在 KDE Plasma 5 桌面的「系统设置」->「输入设备」->「触摸板」->「启用/禁用触摸板」里面开启了「打字时禁用」以及「检测到鼠标时禁用」并设置了手动开启触摸板的快捷键为 Win+T,然后就可以在搞浏览网页等方便用触摸板的活动时快捷地启用触摸板了。不过貌似绝大多数时候它还是关闭状态。

更新记录 2017.11.07

修改服务文件安装路径,

/usr/lib/systemd/system/

到,

/etc/systemd/system/

根据 ArchLinux Wiki 上的提示,这才是系统管理员自己安装的 systemd 服务应该的位置,而前面那个是安装软件包的时候自动安装的系统服务。在服务安装/启动过程中,管理员安装的服务文件有更高优先级。虽然出现冲突的可能性很小,咱还是按照惯例来比较好。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/thinkpad-t470s-trackpoint-and-opensuse/>。转载请保留此信息及相应链接。

8 条关于 “ThinkPad T470s 上的 openSUSE 系统里设置开机自动配置 TrackPoint 指点杆” 的评论

  1. udev方法里面似乎要去掉 ”device/“ 才能生效。
    我的设置:ACTION==”add”, SUBSYSTEM==”input”, ATTR{name}==”TPPS/2 IBM TrackPoint”, ATTR{speed}=”250″, ATTR{sensitivity}=”250″, ATTR{inertia}=”4″
    我的系统leap 42.2

    • 谢谢你的反馈。也许不需要”devcie/”也可以吧。我的是加上了这个的。

  2. 引用通告: openSUSE Tumbleweed 更新 Linux 内核 4.13.9 和 KDE 超级包等 | 水景一页

  3. 引用通告: 在 T470s 上折腾 Linux 滚动发行版 openSUSE Tumbleweed 记录汇总 | 水景一页

  4. 最新的opensuse tumbleweed。好像已经不是这个路径了?
    /sys/devices/platform/i8042/serio1/serio2/speed

    • 按理说这个不会随便更改。不过我已经好久没有动过它了,所以当前还是这个路径,并没有出现问题。

      而且可以参考 ThinkWiki 上的方法查询当前路径:

      echo $(find /sys/devices/platform/i8042 -name name | xargs grep -Fl TrackPoint)

      我的显示是 /sys/devices/platform/i8042/serio1/serio2/input/input7/name。但是查看 /sys/devices/platform/i8042/serio1/serio2/input/input7 目录发现其中的 device 是符号连接到 /sys/devices/platform/i8042/serio1/serio2/ 路径的。也就是我当前使用的路径。

      • 你上面提到的这个命令,找不到任何结果。
        另外,这是我的目录情况。
        TP-X250:~ # cd /sys/devices/platform/i8042/serio0/
        driver/ id/ input/ power/ subsystem/
        TP-X250:~ # cd /sys/devices/platform/i8042/serio1/
        driver/ id/ power/ subsystem/
        TP-X250:~ # cd /sys/devices/platform/i8042/serio0/
        driver/ id/ input/ power/ subsystem/
        TP-X250:~ # cd /sys/devices/platform/i8042/serio0/input/input0/
        capabilities/ event0/ input0::capslock/ input0::scrolllock/ subsystem/
        device/ id/ input0::numlock/ power/
        TP-X250:~ # cd /sys/devices/platform/i8042/serio0/input/input0/
        capabilities/ event0/ input0::capslock/ input0::scrolllock/ subsystem/
        device/ id/ input0::numlock/ power/
        TP-X250:~ # cd /sys/devices/platform/i8042/serio0/input/input0/
        capabilities/ event0/ input0::capslock/ input0::scrolllock/ subsystem/
        device/ id/ input0::numlock/ power/

        • 这个不知道呢。你的是 X250,也许硬件有所不同吧。看你的目录,似乎你这里 serio0 里面是键盘。我的 serio0 里面也是键盘。你看,

          cnzhx:~ # cat /sys/devices/platform/i8042/serio0/input/input0/name
          AT Translated Set 2 keyboard
          

          你的下面这个指令如果有输出,其中 S: 后面的内容就是TrackPoint的目录(我的显示跟前一帖子的结果相同)。

          cat /proc/bus/input/devices | grep -i trackpoint -A 5

          P.S. 这个 WordPress 博客的评论非常不适合用来讨论问题。我在评论框的旁边已经提示过了,如果需要讨论问题,请到我的「讨论区」里发帖子。如果是针对某一篇博客的内容,可以将博文链接复制过去。很抱歉我现在没有时间弄一个自动将博文评论自动定向到讨论区帖子的功能。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)