都知道,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看看,你的设备都支持什么样的input event设备。举个例子用sendevent模拟power按键。
我的设备当中,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前两行代表power按键按下,后两行代表power按键放开。
嗯,知道了这个,那么在终端shell当中就可已模拟power按键了,对,用sendevent这个工具
root@android:/ # sendevent use: sendevent device type code value
/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这么样下来相当于power按键被按了一次。
试试吧!