【问题标题】:Send multiple same keyevents to the adb shell?向 adb shell 发送多个相同的键事件?
【发布时间】:2015-05-16 13:32:09
【问题描述】:

如何将多个键事件发送到同一个键的 adb shell?例如,您可以像这样发出一个“删除”键事件 (#67):

adb shell input keyevent 67

但是有这样的事情吗(注意:这不起作用)?

adb shell input keyevent 67 67

【问题讨论】:

  • 你能用2个命令吗? adb shell 输入 keyevent 67 adb shell 输入 keyevent 67 ?

标签: android adb


【解决方案1】:

尝试使用

adb shell "input keyevent 67 && input keyevent 67"

如果需要写大脚本,也可以试试this approach

【讨论】:

  • 这行得通。不幸的是,在速度方面,它与输入adb shell input keyevent 67 两次相同。我希望它可能会像您使用 adb shell input text 'HE' 时一样快,而不是使用两行代码:adb shell input text 'H'adb shell input text 'E'
  • 我觉得更适合组合
【解决方案2】:

如果您担心速度,我建议使用 sendevent 命令发送事件。我发现它的速度明显更快,尤其是在模拟水龙头时。

示例

sendevent /dev/input/event18 1 67 1 // send key down event 67
sendevent /dev/input/event18 0 0 0  // end of report
sendevent /dev/input/event18 1 67 0 // send key up event 67
sendevent /dev/input/event18 0 0 0  // end of report

语法

sendevent <device> <type> <code> <value>

注意

这是在低级别发送事件,它可以提供很多控制权和灵活性,通过发送您感兴趣的确切事件使其高效。在我看来,一个很大的缺点是您的事实您必须自己确定设备(可能通过使用 getevent 命令并手动计算出来)设备 /dev/input/event18 只是我使用的一个示例我的手机,这不是一成不变的。

有关有效参数的引用,您可以查看头文件。 https://android.googlesource.com/platform/external/kernel-headers/+/8bc979c0f7b0b30b579b38712a091e7d2037c77e/original/uapi/linux/input.h

【讨论】:

  • sendevent: /dev/input/event0: Permission denied In [189]: !C:\QGB\software\scrcpy-win64\adb.exe shell "sendevent /dev/input/event4 1 67 1" 发送事件:/dev/input/event4:权限被拒绝
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 2017-10-01
  • 1970-01-01
  • 2019-03-01
  • 2018-05-16
  • 2013-04-02
相关资源
最近更新 更多