如何从/dev/input事件设备中区分笔记本电脑的键盘与鼠标
如何从/dev/input事件设备中区分笔记本电脑的键盘与鼠标
嘿,我来帮你搞定这个问题!面对一堆/dev/input下的event设备时,确实容易眼花缭乱,不过有几个实用的小方法能帮你快速定位笔记本自带的键盘和鼠标:
方法一:利用by-id和by-path目录的符号链接
你已经看到/dev/input下有by-id和by-path两个目录,这俩就是系统给我们留的“路标”——里面的符号链接直接对应到实际的event设备,而且名字里藏着设备的关键信息:
- 打开终端,运行
ls -l /dev/input/by-id,你会看到类似platform-i8042-serio-0-event-kbd或者usb-XXX-event-mouse这样的链接名:带keyboard或kbd的就是键盘对应的event设备,带mouse或pointer的就是鼠标设备,直接看链接指向的eventX就行。 - 再试试
ls -l /dev/input/by-path,这里的链接名会显示设备的物理路径,笔记本内置的键盘/鼠标通常会包含platform这类标识(代表是主板内置设备),很容易和外接USB设备区分开。
方法二:用evtest实时检测输入事件
这是最直观的方法,能直接看到设备响应的输入动作:
- 先安装工具:
sudo apt install evtest(Debian/Ubuntu系),其他发行版用对应的包管理器安装就行。 - 运行
sudo evtest,它会列出所有可用的event设备,比如:No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: Lid Switch /dev/input/event1: Power Button /dev/input/event2: AT Translated Set 2 keyboard /dev/input/event3: SynPS/2 Synaptics TouchPad - 输入你想测试的设备编号(比如输入
2),然后操作你的键盘(按几个键)或者鼠标(移动/点击),如果输出里出现KEY_A、KEY_S这类键盘按键事件,那就是键盘设备;如果出现REL_X、REL_Y(相对移动)或者BTN_LEFT(左键点击)这类事件,那就是鼠标/触摸板设备。 - 按
Ctrl+C就能退出测试。
关于你给出的xinput list结果的说明
你当前是在Xwayland环境下运行xinput,这里列出的都是Wayland层抽象出来的虚拟输入设备,它们是对底层物理设备的封装,所以没法直接对应到/dev/input下的原始event设备,还是得用前面两种方法来定位真实的物理设备。
备注:内容来源于stack exchange,提问作者jNc
相关产品推荐
相关产品推荐

