目录 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Android系统的事件输入基于linux的Input子系统。触控屏事件和按键事件,从哪里输入又往哪里输出,虽然这个流程大部分对于Android系统来说是透明的,但是在多display,多窗口,多屏幕的情况下是值得研究的。
input对应各种输入事件,通过IMS,WMS,给到对应的window去处理事件,附一张最简化的事件传递流程:
...
1、Android Input子系统简介
事件的输入
事件的输入,是从不同类获的设备得到不同的事件类型,事件类型也都是定义在/include/linux/input.h文件中。
代码块 | ||
---|---|---|
| ||
adb shell getevent -l -c 16
add device 1: /dev/input/event0
name: "ACCDET"
add device 2: /dev/input/event3
name: "goodix_ts"
add device 3: /dev/input/event2
name: "aw8697_haptic"
add device 4: /dev/input/event1
name: "mtk-kpd"
//按键
adb shell getevent -l /dev/input/event1
EV_KEY KEY_VOLUMEDOWN DOWN
EV_SYN SYN_REPORT 00000000
EV_KEY KEY_VOLUMEDOWN UP
EV_SYN SYN_REPORT 00000000
EV_KEY KEY_VOLUMEUP DOWN
EV_SYN SYN_REPORT 00000000
EV_KEY KEY_VOLUMEUP UP
EV_SYN SYN_REPORT 00000000
//触摸
adb shell getevent -l /dev/input/event3
EV_ABS ABS_MT_TRACKING_ID 0000036c
EV_ABS ABS_MT_POSITION_X 000001fe
EV_ABS ABS_MT_POSITION_Y 00000717
EV_KEY BTN_TOUCH DOWN
EV_SYN SYN_REPORT 00000000
EV_ABS ABS_MT_POSITION_X 00000207
EV_SYN SYN_REPORT 00000000
EV_ABS ABS_MT_POSITION_X 00000219
EV_ABS ABS_MT_POSITION_Y 00000716 |