Shell之getevent/sendevent的用法(通过shell来做屏幕解锁)

getevent/sendevent源码

这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.c

1. getevent

在终端中输入getevent,会显示所有device,

add device 1: /dev/input/event6
  name:     "im98xx headset
add device 2: /dev/input/event5
  name:     "orientation"
add device 3: /dev/input/event2
  name:     "accelerometer"
add device 4: /dev/input/event1
  name:     "PEL-cts input"
add device 5: /dev/input/event0
  name:     "evb-keypad"
add device 6: /dev/input/event4
  name:     "geomagnetic_raw"
add device 7: /dev/input/event3
  name:     "geomagnetic"

点击一下屏幕,查询系统log,发现有大量event1出现,说明event1是控制触摸屏的,在终端中输入getevent /dev/input/event1,现在来做一个解锁动作,做完之后停止log。解锁其实是三个动作,点击屏幕锁,拖拽至另一侧,离开屏幕。截取前6行和后12行的log如下:

0003 0030 000000ba
0003 0035 0000020c
0003 0036 00001068
0003 0032 00000006
0000 0002 00000000
0000 0000 00000000


0003 0030 000000bb

0003 0035 00000b96
0003 0036 000010c9
0003 0032 00000006
0000 0002 00000000
0000 0000 00000000


0003 0030 00000000
0003 0035 00000b96
0003 0036 000010c9
0003 0032 00000000
0000 0002 00000000
0000 0000 00000000

这18行log通过sendevent即可实现屏幕解锁。

2. sendevent

getevent获取的log是十六进制的,而sendevent需要十进制的,所以需要把上面的代码做一下转换即可,转换后的代码如下:

sendevent /dev/input/event1 0003 0048 00000186
sendevent /dev/input/event1 0003 0053 00000524
sendevent /dev/input/event1 0003 0054 00004200
sendevent /dev/input/event1 0003 0050 00000006
sendevent /dev/input/event1 0000 0002 00000000
sendevent /dev/input/event1 0000 0000 00000000
                                              
sendevent /dev/input/event1 0003 0048 00000187
sendevent /dev/input/event1 0003 0053 00002966
sendevent /dev/input/event1 0003 0054 00004297
sendevent /dev/input/event1 0003 0050 00000006
sendevent /dev/input/event1 0000 0002 00000000
sendevent /dev/input/event1 0000 0000 00000000
                                              
sendevent /dev/input/event1 0003 0048 00000000
sendevent /dev/input/event1 0003 0053 00002966
sendevent /dev/input/event1 0003 0054 00004297
sendevent /dev/input/event1 0003 0050 00000000
sendevent /dev/input/event1 0000 0002 00000000
sendevent /dev/input/event1 0000 0000 00000000

还有很重要的一点就是,shell需要是UNIX格式,所以需要进行格式转换,把当前格式转换成UNIX格式即可。

UltraEdit: File -> Conversions -> Dos to UNIX

Notepad++: Edit -> Conversions -> UNIX



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值