解释“cat / proc / bus / input / devices”和adb shell命令的结果

时间:2013-07-09 08:10:28

标签: android shell events adb code-injection

我不确定通过adb注入事件的问题是否应该在StackOverflow或Android Enthusiasts中,如果它不属于此处,请移动它。

无论如何,我的问题如下。

我显然必须确定用于发送和接收事件的设备的“类型”。我无法向键盘设备发送触摸事件。

经过大量研究后,我找到了sendeventgetevent命令。

所以,我想长按一下手机的电源按钮。

我目前使用它:

sendevent /dev/input/event3 1 116 0
sendevent /dev/input/event3 1 116 1

这适用于HTC Wildfire(点击输入设备的链接),因为键盘包含电源按钮,而116恰好是电源键的扫描码。

我知道/dev/input/event3/116以及0 or 1代表什么。 1/dev/input/event3/之间的116代表什么?我如何获得它?

继续Nexus 4。现在,我注意到它有一个单独的powerkey和键盘处理程序

[编辑]

在XDA上找到关于sendeventgetevent的{​​{3}}。

1 个答案:

答案 0 :(得分:4)

{/ 1}}“介于/ dev / input / event3 /和116”代表EV_KEY事件类型常量:

  
      
  • EV_KEY:   用于描述键盘,按钮或其他类似键的状态更改   设备。
  •   

如果您已经运行1并按下电源键,您可以自己找到它。

另外,为了找出电源键输入设备名称,我建议解析getevent -l /dev/input/event3/的输出而不是getevent -pl的内容。您要查找的设备在活动部分中列出了/proc/bus/input/devices

KEY_POWER

正确的长按键按键顺序(如按住1秒然后释放)将是:

add device X: /dev/input/eventX
  name:     "xxxxxxxxxx"
  events:
    KEY (0001): KEY_POWER

注意:sendevent /dev/input/eventX 1 116 1 sendevent /dev/input/eventX 0 0 0 sleep 1 sendevent /dev/input/eventX 1 116 0 sendevent /dev/input/eventX 0 0 0 不适用于Gingerbread及以下版本。