文章目录
1 名词解释
1)输入设备:能够产生输入时间的设备,例如鼠标、键盘、触摸屏等
2)input子系统:用于统一管理linux中所有输入设备的框架。
2 输入设备编程框架
2.1 input子系统
上面介绍input子系统是一套统一的输入设备框架。驱动开发人员基于input子系统开发设备驱动,input子系统可以屏蔽硬件差异,向应用层提供统一接口。
基于input子系统注册成功的输入设备,都会在/dev/input
目录下生成对应的设备节点,设备节点名称通常为eventX
(X为数字编号0、1等)。具体那个设备对应那个编号需要查找。
确定设备文件
使用od
命令
sudo od -x /dev/input/eventX
2.2 读取数据流程
1)打开设备文件(/dev/input/eventX
)
2)读数据(read
)
3)数据解析
- 打开设备文件
使用open
函数 打开设备文件,操作类型为O_RDONLY
- 读取数据
数据读取时会有两种情况,一个是有数据,一个是没有数据。
当有数据可读取的时候,应用程序会被唤醒,读操作获取数据返回;
当没有数据可读的时候,程序会进入休眠模式(阻塞I/O情况下) - 解析数据
读取到的数据会放在input_event
类型的结构体中,该结构体定义在<linux/input.h>
头文件中,结构体成员变量以及具体解析形式在下面介绍。