android系统中sendevent的妙用

都知道,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

上面这个是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
这么样下来相当于power按键被按了一次。

试试吧!


你可能感兴趣的:(android系统中sendevent的妙用)