1:概述
输入子系统在linux内核中使用广泛,按键,鼠标,sensor类,touch等驱动都会用到输入子系统。输入子系统的结构分为以下三层:
1.1:设备驱动层
这一层需要用户在设备驱动中去实现,调用核心层的函数接口,完成输入设备的注册和并将发生的事件上报给子系统核心层;
1.2:输入子系统核心层
为驱动层和事件处理层提供函数接口,并且注册input字符设备,主设备号是13,次设备号为0~255,接受来自驱动层的上报事件,并最终通过事件处理层的接口,上报给用户,为设备驱动层和事件处理层架起一座桥梁;
1.3:事件处理层
实现了和用户层的接口,所有用户的操作都是通过事件处理层提供的接口进行;
2:输入子系统中重要的数据结构
2.1:input类数据结构:input_handle input_handler input_dev
input_dev:代表一个输入设备,需要用户去填充并注册进内核,一个input_dev只能代表一个输入设备;
struct input_dev {
const char *name; //输入设备名字
const char *phys; //设备在系统中的物理路径
const char *uniq; //设备唯一标识符
struct input_id id; //设备ID,与input_handler匹配时会用到