【发布时间】:2014-04-30 17:34:19
【问题描述】:
我正在尝试使用 getevent/sendevent 机制在我的 android 设备中模拟按键。我看到一个正在运行的批处理文件。所以我知道 adb shell sendevent 机制有效。
所以我做了 adb shell Getvent 并做了一些按键操作,这给了我如下所示的事件:
/
dev/input/event0 0003 0039 0000006c
/dev/input/event0 0001 014a 00000001
/dev/input/event0 0001 0145 00000001
/dev/input/event0 0003 0035 000003f8
/dev/input/event0 0003 0036 00000153
/dev/input/event0 0003 0030 00000001
/dev/input/event0 0003 0031 00000000
/dev/input/event0 0000 0000 00000000
/dev/input/event0 0001 014a 00000000
/dev/input/event0 0001 0145 00000000
/dev/input/event0 0000 0000 00000000
/dev/input/event0 0003 0039 0000006d
/dev/input/event0 0001 014a 00000001
/dev/input/event0 0001 0145 00000001
/dev/input/event0 0003 0035 00000278
/dev/input/event0 0003 0036 0000022c
/dev/input/event0 0003 0030 00000004
/dev/input/event0 0003 0031 00000004
/dev/input/event0 0000 0000 00000000
/dev/input/event0 0003 0039 ffffffff
/dev/input/event0 0001 014a 00000000
/dev/input/event0 0001 0145 00000000
/dev/input/event0 0000 0000 00000000
所以我复制了相同的事件并从中制作了一个批处理文件,如下所示:
adb shell sendevent /dev/input/event0 0003 0039 0000006c
adb shell sendevent /dev/input/event0 0001 014a 00000001
adb shell sendevent /dev/input/event0 0001 0145 00000001
adb shell sendevent /dev/input/event0 0003 0035 000003f8
adb shell sendevent /dev/input/event0 0003 0036 00000153
adb shell sendevent /dev/input/event0 0003 0030 00000001
adb shell sendevent /dev/input/event0 0003 0031 00000000
adb shell sendevent /dev/input/event0 0000 0000 00000000
adb shell sendevent /dev/input/event0 0003 0039 ffffffff
adb shell sendevent /dev/input/event0 0001 014a 00000000
adb shell sendevent /dev/input/event0 0001 0145 00000000
adb shell sendevent /dev/input/event0 0000 0000 00000000
adb shell sendevent /dev/input/event0 0003 0039 0000006d
adb shell sendevent /dev/input/event0 0001 014a 00000001
adb shell sendevent /dev/input/event0 0001 0145 00000001
adb shell sendevent /dev/input/event0 0003 0035 00000278
adb shell sendevent /dev/input/event0 0003 0036 0000022c
adb shell sendevent /dev/input/event0 0003 0030 00000004
adb shell sendevent /dev/input/event0 0003 0031 00000004
adb shell sendevent /dev/input/event0 0000 0000 00000000
adb shell sendevent /dev/input/event0 0003 0039 ffffffff
adb shell sendevent /dev/input/event0 0001 014a 00000000
adb shell sendevent /dev/input/event0 0001 0145 00000000
adb shell sendevent /dev/input/event0 0000 0000 00000000
但是当我运行这个批处理文件时,没有模拟事件。我在这里有什么遗漏吗?
【问题讨论】:
-
在另一个窗口中打开一个单独的 adb 会话,并在尝试批处理文件时在其中运行 getevent
-
它不显示任何事件。令人惊讶的是,我的批处理文件没有显示任何错误。但是,我刚刚发现 getevent 结果为十六进制,而 SendEvent 只采用十进制。这是否意味着我必须手动翻译所有事件?
-
可能 - 我记得有类似的限制,但您可以检查工具的来源以确定。使用一个小的自定义程序应该不会太难。即使是电子表格有时也可以成为一次性数据转换项目的便捷工具。
-
是的,因为它们是少数事件,转换不会花费太多时间。一旦我能够转换并运行,就会更新你
-
它工作了:)。谢谢:)
标签: android linux bash shell batch-file