Iuput子系统说明
当我们需要编写或调试输入设备时,如keyboard、mouse、touchscreen、joystick,会发现代码会有很多通用的部分,如申请设备号,创建文件,实现fop等操作。内核就会将通用的代码编写好,将差异化的代码留给驱动工程师,使得应用编程人员和驱动编程人员点成的时候变得简单统一。
- Input子系统框架
输入子系统框架可以分为三层,分别是input handler层、input核心层、input dev层。
Input handler层(evdev.c):数据处理者
- 向input.c中注册evdev_handler
- 将evdev_handler添加到链表中
- 实现fops
Input核心层(input.c)
- 注册类
- 在/proc文件系统中创建文件记录信息
- 创建设备
Input dev层:(需要自己编写的)
- 抽象出一个对象,描述设备信息
- 初始化输入设备硬件,获取到数据
- 上报数据
编写步骤:
- 分配输入设备
Inputdev = Input_allocate_device();
- 初始化支持的事件类型和事件码
__set_bit(EV_KEY, inputdev->evbit);
__set_bit(KEY_POWER, inputdev->keybit);
- 注册输入设备
Input_register_device(inputdev);
- 上报数据