我不确定通过adb注入事件的问题是否应该在StackOverflow或Android Enthusiasts中,如果它不属于此处,请移动它。
无论如何,我的问题如下。
我显然必须确定用于发送和接收事件的设备的“类型”。我无法向键盘设备发送触摸事件。
经过大量研究后,我找到了sendevent
和getevent
命令。
所以,我想长按一下手机的电源按钮。
我目前使用它:
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上找到关于sendevent
和getevent
的{{3}}。
答案 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及以下版本。