i.mx6 Android6.0.1分析input子系统:测试
getevent与sendevent工具
Android系统提供了getevent与sendevent两个工具供开发者从设备节点中直接读取输入事件或写入输入事件。
在这里,我们测试音量加和音量减按键
root@sabresd_6dq:/ # getevent add device 1: /dev/input/event0 name: "ar1021 Touchscreen" could not get driver version for /dev/input/mice, Not a typewriter add device 2: /dev/input/event2 name: "gpio-keys" add device 3: /dev/input/event1 name: "WM8962 Beep Generator"
//这个后面是音量加 /dev/input/event2: 0001 0073 00000001 //按下:注意这里的0073为十六进制数 /dev/input/event2: 0000 0000 00000000 //同步 /dev/input/event2: 0001 0073 00000000 //松开 /dev/input/event2: 0000 0000 00000000 //同步 //这个后面是音量减 /dev/input/event2: 0001 0072 00000001 /dev/input/event2: 0000 0000 00000000 /dev/input/event2: 0001 0072 00000000 /dev/input/event2: 0000 0000 00000000
注意:(2018.1.12更新:getevent -lt 更加直观;如下所示)
130|root@sabresd_6dq:/ # getevent -lt /dev/input/event2 [ 2604.070121] EV_KEY KEY_VOLUMEUP DOWN [ 2604.070121] EV_SYN SYN_REPORT 00000000 [ 2604.270183] EV_KEY KEY_VOLUMEUP UP [ 2604.270183] EV_SYN SYN_REPORT 00000000 [ 2606.510123] EV_KEY KEY_VOLUMEDOWN DOWN [ 2606.510123] EV_SYN SYN_REPORT 00000000 [ 2606.620089] EV_KEY KEY_VOLUMEDOWN UP [ 2606.620089] EV_SYN SYN_REPORT 00000000
然后我们根据上面的数据进行发送,查看是否音量增加和减少了:(注意:getevent显示的为十六进制,而sendevent发送的为十进制,所以要进行转换)
130|root@sabresd_6dq:/ # sendevent /dev/input/event2 0001 0115 00000001 //按下音量加 root@sabresd_6dq:/ # sendevent /dev/input/event2 0000 0000 00000000 //同步 root@sabresd_6dq:/ # sendevent /dev/input/event2 0001 0115 00000000 //松开音量加 root@sabresd_6dq:/ # sendevent /dev/input/event2 0000 0000 00000000 //同步 root@sabresd_6dq:/ # root@sabresd_6dq:/ # root@sabresd_6dq:/ # root@sabresd_6dq:/ # root@sabresd_6dq:/ # sendevent /dev/input/event2 0001 0114 00000001 root@sabresd_6dq:/ # sendevent /dev/input/event2 0000 0000 00000000 root@sabresd_6dq:/ # sendevent /dev/input/event2 0001 0114 00000000 root@sabresd_6dq:/ # sendevent /dev/input/event2 0000 0000 00000000 root@sabresd_6dq:/ #
可以发现确实发生了变化