Linux Input子系统
- 1.按键、鼠标、键盘、触摸屏等都属于输入(input)设备, Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。
- 2.输入设备本质上还是字符设备,只是在此基础上套上了 input 框架.
- 1.用户只需要负责上报输入事件,比如按键值、坐标等信息.
- 2.input 核心层负责处理这些事件。
- 3.input 就是输入的意思,因此 input 子系统就是管理输入的子系统,和 pinctrl 和 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。
- 4.input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层,最终给用户空间提供可访问的设备节点
- 5.左边就是最底层的具体设备,比如按键、 USB 键盘/鼠标等,中间部分属于 Linux内核空间,分为驱动层、核心层和时间层,最右边的就是用户空间,所有的输入设备以文件的形式供用户应用程序使用。
- 6.驱动分层
- 1.驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容。
- 2.核心层:承上启下,为驱动层提供输入设备注册和操作接口。通知事件层对输入事件进行处理。
- 3.事件层:主要和用户空间进行交互。
- 7.input 核心层会向 Linux 内核注册一个字符设备,大家找到 drivers/input/input.c 这个文件,input.c 就是 input 输入子系统的核心层
- 8.注册一个 input 类,这样系统启动以后就会在/sys/class 目录下有一个 input 子目录
- 9.input 子系统的所有设备主设备号都为 13,我们在使用 input 子系统处理输入设备的时候就不需要去注册字符设备了,我们只需要向系统注册一个 input_device 即可。