1、输入系统框架
2、内核使用 input_dev表示输入设备,它的内容如下
通过cat /proc/bus/input/devices 可获取相关输入设备信息
其中B,表示对应的BITS项,B: EV表示对应支持的EVT事件,即变量 evbit
再举一个例,B: KEY=14000000000000 0 表示对应支持的EVT_KEY支持项,即变量keybit,
此数据是16进制数据,每个空格分隔为8个字节64位,0x14000000000000 0那数据变成
0x14000000000000 0000000000000000,修改为二进制为
其中14分解为0001 0100后面跟28个0,每个0有4位,那么位置分别为第115和117位,序号从0开始算
即支持EVT_KEY位114 和 116即 KEY_VOLUMEDOWN和KEY_POWER
3、App获取时间通过read /dev/input/eventxxx 来获取输入事件,input_event结构体如下
type : 类型 如 EV_KEY
code: 代号 如KEY_A
value: 值 如1按下 0 松开
所有上报事件都有EV_SYN,这个事件收到表示事件上报完毕,
比如触摸屏事件有多个事件,当事件上报完毕后,上报EV_SYN
4、Android 手机可以使用getevent来显示相关输入情况
getevent -l 列出所有输入设备相关信息
getevent -i 列出所有输入设备支持信息
getevent代码在system/core/toolbox中实现
框架代码在
frameworks/native/services/inputflinger/reader/EventHub.cpp
中读取文件节点