Linux(Ubuntu)下如何修改鼠标速度——"xinput"命令使用方法

刚开始使用Linux的同学可能会遇到鼠标或者键盘的一些配置和自己预期的不符合,而图形界面的设置中可以设置的选项也不够用,此时不要慌,要坚信在Linux下一切皆有可能,本文教你如何通过xinput命令来解决鼠标、键盘配置问题。

xinput命令

首先运行man xinput来查看一下xinput命令的Linux用户手册,可以看到

NAME
xinput - utility to configure and test X input devices

xinput 是用来配置和测试 X 输入设备的工具。

DESCRIPTION
xinput is a utility to list available input devices, query information about a device and change input device settings

描述:xinput是一个可用来列出可用的输入设备查询设备信息修改设备设置的工具。

我们接下来就从这三个方面来介绍一些常用的命令使用方法。

查看设备列表

xinput --list

输出如下:

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=15 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Integrated Camera id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=16 [slave keyboard (3)]

其中设备管理是按照主从结构安排的。每个设备有一个唯一的设备id用来唯一标识该设备,之后很多命令要用到这个设备号。

查看设备信息

xinput --list-props device

其中device可以是设备id,也可以是设备名称,例如针对上面的设备列表,我想要查看名称为TPPS/2 IBM TrackPoint,设备id为15的设备的信息,运行如下命令

xinput --list-props "TPPS/2 IBM TrackPoint"

或者

xinput --listprops 15

输出的结果:

Device 'TPPS/2 IBM TrackPoint':
Device Enabled (138): 1
Coordinate Transformation Matrix (140): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (261): 0
Device Accel Constant Deceleration (262): 1.000000
Device Accel Adaptive Deceleration (263): 1.000000
Device Accel Velocity Scaling (264): 10.000000
Device Product ID (256): 2, 10
Device Node (257): "/dev/input/event9"
Evdev Axis Inversion (265): 0, 0
Evdev Axes Swap (267): 0
Axis Labels (268): "Rel X" (148), "Rel Y" (149)
Button Labels (269): "Button Left" (141), "Button Middle" (142), "Button Right" (143), "Button Wheel Up" (144), "Button Wheel Down" (145), "Button Horiz Wheel Left" (146), "Button Horiz Wheel Right" (147)
Evdev Scrolling Distance (270): 0, 0, 0
Evdev Middle Button Emulation (271): 1
Evdev Middle Button Timeout (272): 50
Evdev Third Button Emulation (273): 0
Evdev Third Button Emulation Timeout (274): 1000
Evdev Third Button Emulation Button (275): 3
Evdev Third Button Emulation Threshold (276): 20
Evdev Wheel Emulation (277): 1
Evdev Wheel Emulation Axes (278): 6, 7, 4, 5
Evdev Wheel Emulation Inertia (279): 10
Evdev Wheel Emulation Timeout (280): 200
Evdev Wheel Emulation Button (281): 2
Evdev Drag Lock Buttons (282): 0

这里有很多设备信息项,
属性列表的格式为:

Device '设备名称':
属性1名称(属性1标识符):属性1值
属性2名称(属性2标识符):属性2值
...

这里我们以一个属性信为例例,关注Device Accel Constant Deceleration (262): 1.000000这一行,其中Device Accel Constant Deceleration代表这个属性的名称,括号中262是这个属性的标识符,后面的1.000000是这个属性的值,这个属性代表这个Pointer设备的移动减速度,该值越大,移动速度越慢。

修改属性值

xinput --set-prop device property value

其中device为设备名称或设备号,property为属性名称或标识符,value为属性值,例如我们要将上面的设备的移动减速度设置为5:

xinput --set-prop "TPPS/2 IBM TrackPoint" "Device Accel Constant Deceleration" 5

或者

xinput --set-prop 15 262 5

然后可以再次查看属性信息,来确定是否修改成功。
感兴趣的读者可以一一查询、测试各个属性,设备信息中有很多以Evdev开头的属性,关于这些属性的值代表什么意思,读者可以参阅Evdev的用户手册:

man evdev

自启动设置

通过上面的操作虽然可以修改设备属性值,但是在拔下设备再插入或下次启动计算机的时候又恢复成了默认值,这时候只需要写一个包含修改属性值命令的脚本,再将其设置为开机自启动即可,过程如下:

新建一个shell文件,以.sh为文件类型,在该文件内写入上述命令,例如fix_mouse.sh:

fix_mouse.sh
#!bin/sh
xinput --set-prop "TPPS/2 IBM TrackPoint" "Device Accel Constant Deceleration" 5

执行如下命令,使得该文件可运行:

sudo chmod +x fix_mouse.py

然后在开机自启动项目中添加这个文件就可以了。

虽然查看和修改操作既可以使用设备名称和属性名称符来操作,也可以使用设备号和属性标识符操作,但是这里推荐使名称来操作,因为在同一设备接入计算机的时间不同,设备号和属性标识符可能会改变,但是设备名称是写入硬件的不会改变,当然前提是没有两个设备名称相同。