adb root
adb shell
getevent
输出结果如下:
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0035 00000018
/dev/input/event3: 0003 0036 00000467
/dev/input/event3: 0000 0000 00000000
/dev/input/event3: 0003 0039 ffffffff
/dev/input/event3: 0001 014a 00000000
/dev/input/event3: 0000 0000 00000000
其中/dev/input/event3后的参数意思分别为:
“事件类型” “参数位定义” “值”
比如:/dev/input/event3: 0003 0039 ffffffff
意思就是:事件类型是0003代表的事件,参数位定义的宏为0039定义的值,对应的值等于ffffffff
这里的event代表不同的输入方式:不同的手机有不同的表示
event3代表屏幕输入
event0代表power键盘输入
event2代表音量键
加上一个-l参数
getevent -l 得到更直观的信息:
haydn:/ # getevent -l
add device 1: /dev/input/event7
name: "touch_uinput"
add device 2: /dev/input/event6
name: "uinput-fpc"
add device 3: /dev/input/event5
name: "lahaina-mtp-snd-card Button Jack"
add device 4: /dev/input/event4
name: "lahaina-mtp-snd-card Headset Jack"
add device 5: /dev/input/event3
name: "fts_ts"
add device 6: /dev/input/event0
name: "qpnp_pon"
add device 7: /dev/input/event1
name: "qcom-hv-haptics"
add device 8: /dev/input/event2
name: "gpio-keys"
按power键
/dev/input/event0: EV_KEY KEY_POWER DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY KEY_POWER UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000
屏幕的点按操作
/dev/input/event3: EV_ABS ABS_MT_TRACKING_ID 000002ae
/dev/input/event3: EV_ABS ABS_MT_TOUCH_MAJOR 00000004
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 0000022c
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000584
/dev/input/event3: EV_KEY BTN_TOUCH DOWN
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000225
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000577
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 0000021d
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000563
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000216
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000054f
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000211
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000053b
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 0000020c
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000528
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000207
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000516
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000202
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 00000504
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001fd
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 000004f2
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001f8
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 000004e0
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001f2
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 000004d0
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001ec
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 000004bf
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001e7
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 000004ae
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001e1
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000049e
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001db
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000048e
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001d6
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000047e
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001c3
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000044e
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000001bd
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000043e
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_TRACKING_ID ffffffff
/dev/input/event3: EV_KEY BTN_TOUCH UP
/dev/input/event3: EV_SYN SYN_REPORT 00000000
每一次屏幕的点按操作都要经历的过程如下:
/dev/input/event3: EV_ABS ABS_MT_TRACKING_ID 000002ad
/dev/input/event3: EV_ABS ABS_MT_TOUCH_MAJOR 00000003
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 00000316
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000027e
/dev/input/event3: EV_KEY BTN_TOUCH DOWN
/dev/input/event3: EV_SYN SYN_REPORT 00000000
/dev/input/event3: EV_ABS ABS_MT_TRACKING_ID ffffffff
/dev/input/event3: EV_KEY BTN_TOUCH UP
我们每一次touch,都必须经历以上的8行
第一行:可理解为一次touch的开始
第2行:可理解为点击开始
第3行:触摸点x坐标
第4行:触摸点y坐标
第5行:可理解为触摸点大小
第6行:事件同步(点击结束)
第7行:一次touch结束
第8行:事件同步(事件结束)
如果是long touch,很简单也就在上面八行touch的基础上,重复若干次第2~6行。
如果是drag就是在longTouch的基础上,x和y坐标从起点到终点渐变,其他一样。
知道这些以后,在使用sendevent进行事件模拟就很easy.
注释:
EV_ABS ABS_MT_TRACKING_ID 00000000 <---事件开始
EV_ABS ABS_MT_TOUCH_MAJOR 00000010 <---点击开始
EV_ABS ABS_MT_PRESSURE 00000070 <--- 触摸范围
EV_ABS ABS_MT_POSITION_X 00000120 <--- x坐标
EV_ABS ABS_MT_POSITION_Y 00000254 <--- y坐标
EV_SYN SYN_REPORT 00000000 <---点击结束(同步)
EV_ABS ABS_MT_TRACKING_ID 4294967295 <---事件结束
EV_SYN SYN_REPORT 00000000 <---事件同步