android系统中sendevent的妙用

都知道,android系统使用linux内核input子系统来获取按键,触摸以及其他的IO事件,这个小工具就是getevent/sendevent,

那么它是怎么用的呢?

  1.   
  1. root@android:/ # getevent -h  
  2.   
  3. Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]  
  4.   
  5. -t: show time stamps  
  6.   
  7. -n: don't print newlines  
  8.   
  9. -s: print switch states for given bits  
  10.   
  11. -S: print all switch states  
  12.   
  13. -v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64)  
  14.   
  15. -d: show HID descriptor, if available  
  16.   
  17. -p: show possible events (errs, dev, name, pos. events)  
  18.   
  19. -i: show all device info and possible events  
  20.   
  21. -l: label event types and names in plain text  
  22.   
  23. -q: quiet (clear verbosity mask)  
  24.   
  25. -c: print given number of events then exit  
  26.   
  27. -r: print rate events are received  
帮助信息已经足够用了。
  1. root@android:/ # getevent -l  
看看,你的设备都支持什么样的input event设备。举个例子用sendevent模拟power按键。

我的设备当中,gpio-keys这个input event6设备代表手机外围的几个按键,例如power键,音量加减按键。

那么接下来,看看power按键接收到的是什么样的代码:

  1. root@android:/ # getevent -t  
  2.   
  3. [1388024429.346622] /dev/input/event6: 0001 0074 00000001                                                                                                                                    
  4.   
  5. [1388024429.346676] /dev/input/event6: 0000 0000 00000000  
  6.   
  7. [1388024429.739387] /dev/input/event6: 0001 0074 00000000                                                                                                                                                           
  8.   
  9. [1388024429.739396] /dev/input/event6: 0000 0000 00000000  
前两行代表power按键按下,后两行代表power按键放开。

嗯,知道了这个,那么在终端shell当中就可已模拟power按键了,对,用sendevent这个工具

  1. root@android:/ # sendevent   
  2.   
  3. use: sendevent device type code value  

上面这个是sendevent的用法,对应getevent中获取到的

/dev/input/event6:  ------->device

0001   --------------->type  表示一个KEY类型

0074  --------------->code  代表power按键的代码(注意:是16进制的,待会儿要转换成十进制)

00000001 --------->value 该代码的值,1就是按下,0就是放开。

好了,知道了这些,那么赶紧模拟一下吧:

  1. root@android:/ # sendevent  /dev/input/event6 1 116 1  (注意:0x74转换为十进制后是116)  
  2.   
  3. root@android:/ # sendevent  /dev/input/event6 0 0 0  
  4.   
  5. root@android:/ # sendevent  /dev/input/event6 1 116 0  
  6.   
  7. root@android:/ # sendevent  /dev/input/event6 0 0 0  
这么样下来相当于power按键被按了一次。

试试吧!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值