"adb shell input text"模拟软件键盘输入吗?


adb shell input text "sometext"

adb shell input keyevent eventid

这些是否分别模拟来自虚拟/硬件键盘的实际输入?

我没有在 developer.android.com/上找到这些命令的任何文档

这些命令是否有任何受信任的文档?

adb shell input help生成(在一长串输入设备之后(:

The commands and default sources are:
  text <string> (Default: touchscreen)
  keyevent [--longpress] <key code number or name> ... (Default: keyboard)
  tap <x> <y> (Default: touchscreen)
  swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
  press (Default: trackball)
  roll <dx> <dy> (Default: trackball)

因此,似乎"文本"确实用于虚拟(默认:触摸屏(和用于物理(默认:键盘(的键事件。

您可以覆盖文本输入设备 - adb shell input keyboard text "foo"工作正常。但是,您无法从屏幕发送原始键码。

相关

adb shell input text "some text"

我只找到源代码:例如,此处适用于安卓 8.1。

方法private void sendText(int source, String text) {与编码相关。

搜索以前方法中使用的KeyCharacterMap.VIRTUAL_KEYBOARD,我在这里找到了标题"虚拟键字符映射文件"的描述。

从这些信息中,我查看了旧的SM-G900F。我在/system/usr/keychars/Virtual.kcm下找到了.在该文件内部,它将关键事件映射到最常见的字符(大多数只有 ASCII(。

所以对于你的问题:

这些是否模拟来自虚拟/硬件键盘的实际输入 分别?

是的,代码获取文本并尝试通过KeyCharacterMap.VIRTUAL_KEYBOARD将其映射回关键事件并发送它们。

根据我的经验,所有未知字符都会导致整个文本的取消。而且你必须转义一些字符 - 有时带有 %s 的空格,或者带有 '\',其他特殊字符,如 &也必须转义。

在某些设备上,我体验到用adb shell input text "<longText>"写的长文本(大约 200 个字符(部分丢失 - 甚至在最后丢失了大部分!在我看来,这取决于制造商。

adb shell input *命令有一个很好的描述,只需键入

adb shell input help

对于adb shell keyevent命令,可以使用不同的键码。

我正在开发一项工作,评估不同键盘之间的性能,并尝试模拟真实用户的键盘键入。我正在使用的工具(android 视图客户端(使用输入文本将文本发送到设备。但是,当使用此工具模拟文本输入时,我观察到键盘的行为存在差异,这是由于使用此输入法而导致的。

使用输入文本时,指针位置不会更改,键盘也不会显示任何按键动画。相反,当使用输入点击 X Y 按下某个键时,视觉行为与真实用户点击该键相同。此外,两种输入法的 GBoard 行为也不同。使用输入文本,然后点击建议的字词时,键盘不会添加尾随空格。使用输入抽头时不会发生同样的情况。这有助于得出结论,这两种输入方法之间确实存在差异。

"adb shell 输入键事件事件 EventID"肯定不会将真实的键事件模拟为设备 ID == 0。

那么"adb shell 输入文本"一些文本"呢? 无论如何,它不是来自 pysical ...所以我想它会像软键盘上一样叮叮当当

相关内容

  • 没有找到相关文章

最新更新