都知道,android系统使用linux内核input子系统来获取按键,触摸以及其他的IO事件,这个小工具就是getevent/sendevent,
那么它是怎么用的呢?
- root@android:/ # getevent -h
- Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
- -t: show time stamps
- -n: don't print newlines
- -s: print switch states for given bits
- -S: print all switch states
- -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)
- -d: show HID descriptor, if available
- -p: show possible events (errs, dev, name, pos. events)
- -i: show all device info and possible events
- -l: label event types and names in plain text
- -q: quiet (clear verbosity mask)
- -c: print given number of events then exit
- -r: print rate events are received
- root@android:/ # getevent -l
我的设备当中,gpio-keys这个input event6设备代表手机外围的几个按键,例如power键,音量加减按键。
那么接下来,看看power按键接收到的是什么样的代码:
- root@android:/ # getevent -t
- [1388024429.346622] /dev/input/event6: 0001 0074 00000001
- [1388024429.346676] /dev/input/event6: 0000 0000 00000000
- [1388024429.739387] /dev/input/event6: 0001 0074 00000000
- [1388024429.739396] /dev/input/event6: 0000 0000 00000000
嗯,知道了这个,那么在终端shell当中就可已模拟power按键了,对,用sendevent这个工具
- root@android:/ # sendevent
- use: sendevent device type code value
上面这个是sendevent的用法,对应getevent中获取到的
/dev/input/event6: ------->device
0001 --------------->type 表示一个KEY类型
0074 --------------->code 代表power按键的代码(注意:是16进制的,待会儿要转换成十进制)
00000001 --------->value 该代码的值,1就是按下,0就是放开。
好了,知道了这些,那么赶紧模拟一下吧:
- root@android:/ # sendevent /dev/input/event6 1 116 1 (注意:0x74转换为十进制后是116)
- root@android:/ # sendevent /dev/input/event6 0 0 0
- root@android:/ # sendevent /dev/input/event6 1 116 0
- root@android:/ # sendevent /dev/input/event6 0 0 0
试试吧!