xorg
驱动的图形系统下,输入设备,如触摸板之类的,都可以通过xinput
cli工具或者用xorg.conf
配置文件来设置。不同的是,通过写xorg.conf
是全局设置,xorg启动过程中在读取驱动信息的时候就可以生效了。而通过cli工具,只能将命令放入user session的启动脚本(shell的profile文件,或者xinit或其他display manager的配置文件)中,才能做到启动时生效。这样设置条目多的时候user session的启动脚本就会太长太复杂。既然是个人电脑,自然就越全局越好。
下面是我的libinput
的配置文件。保存在/etc/X11/xorg.conf.d/99-libinput.conf
中。
文件名中99
这个数字是因为xorg
启动会读取多个配置文件夹下的配置文件,且他是按文件名ASCII字母的顺序读取的。如果有相同的配置,后读取的配置信息会把之前读取的覆盖。因为不希望启动时被别的覆盖把它设置在99
。相当于是最后读取的配置了,就是希望它肯定能生效。除了这个和后缀.conf
,文件名其实不重要。
下面逐条讲解:
# 告诉xorg这个section是关于输入设备的
Section "InputClass"
# 标识,不重要。
Identifier "libinput pointer catchall"
# 告诉xorg,捕捉的event是来自Pointer
# Pointer 包括了鼠标和Thinkpad的trackpoint
MatchIsPointer "on"
# 去所有输入设备中捕捉event
MatchDevicePath "/dev/input/event*"
# 捕捉到的信息交给驱动libinput
Driver "libinput"
EndSection
# 另外一个section,用来设置触摸板
Section "InputClass"
Identifier "libinput touchpad catchall"
# 需要的是触摸板的event
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
# Option 开头的是驱动选项,设置会提交给驱动,以定制行为
# 用鼠标加速,用adaptive和flat可选。adaptive也就是视手指滑动速度即时调整灵敏度。
# 而flat就是不加速。玩游戏必备,不过要在Pointer的section设置。
Option "AccelProfile" "adaptive"
# 加速鼠标移动的位置计算时使用的数值,这个和上面一项的组合可以自己实验来得到自己想要的效果。
Option "AccelSpeed" "0.6"
# 打字时禁用触摸板,感觉没什么用,聊胜于无。
Option "DisableWhileTyping" "true"
# clickfinger选项激活了:单指左键,双指右键,三指中键
Option "ClickMethod" "clickfinger"
# 反向滚动,模仿mac的scroll,双指上划意为着内容往上而不是视区往上。这样的滑动概念和手机等是一样的。
Option "NaturalScrolling" "true"
# 轻拍点按,这年头必不可少。
Option "Tapping" "true"
# 轻拍拖拽
Option "TappingDrag" "true"
# 轻拍拖拽时会在一个很短的时间内保留拖拽状态,长距离拖拽必备。
Option "TappingDragLock" "true"
EndSection
驱动选项可以用man 4 libinput
查看,不同的驱动是同理。
Pointer
和Touchpad
的驱动选项是相同的(废话)。如果有使用鼠标,特别是玩游戏什么的,可以对Pointer也进行相应的设置。
xinput
CLI工具
当然了,很多时候我们也需要在GUI环境内随时调整诸如鼠标灵敏度什么的。这时候就可以用上xinput
命令了。
[]
中的代表可填项。
xinput list [设备名/设备id]
# 如果你不提供设备信息,就给你刷一个`X`所托管的输入设备的列表。
# 列表中提供设备名和设备ID
xinput list-props 设备名/设备id
# 列举该设备的属性(其实不是所有,但只要被配置过的属性都在)
# 列表中有属性名称和属性ID及其数值。
xinput set-props 设备名/设备ID 属性名/属性ID 数值
利用这个指令,我们可以将不同的设置做成脚本绑定在DE/WM的快捷键上。这样可以在做不同的事情的时候随时调整输入设备了。
另外如果是临时想在CLI中调整数值,边查边设,直接用id
比较方便。但如果是写脚本,尽量使用设备/属性的全名。因为,如果有新设备,启动X
时可能新的设备会导致ID变动。