Linux 内核是通过 evdev 接口为总线上的输入设备(例如鼠标或键盘)生成字符设备文件的,我们可以将其视为将输入设备与用户应用程序分离的接口。有了这些字符设备文件,开发者就不需要为每个设备的细节而烦恼,直接对这些文件进行操作就可以与设备打交道。
设备文件系统,也就是字符设备文件所在的位置,位于 /dev/input
,我们可以通过 ls
命令查看:
通过打开 /proc/bus/input/devices
文件的内容,我们可以查看输入设备被映射到哪个 event 文件:
如图所示,键盘设备被映射到了 event0 字符设备文件,接下来我们就可以使用 evemu-tools 来操作键盘上相应的事件。
在 Ubuntu 系统上,evemu-tools 可以直接使用命令 sudo apt install evemu-tools
进行安装。
安装完成后,在终端输入 evemu-
后按 tab
键可以看到不同的子工具:
各个子工具的介绍可以通过 man evemu-xxx
进行查看。
通过 sudo evemu-describe /dev/input/event0
,我们可以查看键盘事件的详细内容:
使用 sudo evemu-record /dev/input/event0
可以在终端上显示键盘上的事件:
上图显示了按键 A
的按压和释放事件。
开启另一个终端,使用 sudo evemu-event /dev/input/event0 --type EV_KEY --code KEY_P --value 1 --sync
可以产生按压 P
键的事件,在 evemu-record
中可以看到相应的事件: