l'-*_*-'l 10 android adb android-virtual-keyboard
adb shell input text "sometext"
Run Code Online (Sandbox Code Playgroud)
要么
adb shell input keyevent eventid
Run Code Online (Sandbox Code Playgroud)
这些是分别模拟虚拟/硬件键盘的实际输入吗?
我没有在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)
Run Code Online (Sandbox Code Playgroud)
因此,似乎“文本”确实是虚拟的(默认:触摸屏),而按键事件是物理的(默认:键盘)。
您可以覆盖文本输入设备- adb shell input keyboard text "foo"正常工作。但是,您无法从屏幕发送原始键码。
相关
adb shell input text "some\ text"
Run Code Online (Sandbox Code Playgroud)
我只找到源代码:E.g. 适用于Android 8.1 此处。
该方法 private void sendText(int source, String text) {与编码相关。
并搜索KeyCharacterMap.VIRTUAL_KEYBOARD之前的方法中使用的内容,我在这里找到了标题“虚拟按键字符映射文件”的描述。
根据这些信息,我研究了一台旧的 SM-G900F。我发现下/system/usr/keychars/Virtual.kcm。在该文件内部,它将关键事件映射到最常见的字符(主要是 ASCII)。
所以对于你的问题:
这些是否分别模拟来自虚拟/硬件键盘的实际输入?
是的,代码获取文本并尝试通过 KeyCharacterMap.VIRTUAL_KEYBOARD 将其映射回按键事件并发送它们。
根据我的经验,所有未知字符都会导致整个文本被取消。你必须转义一些字符 -有时用 %s 或 '\ ' 来转义空格,其他特殊字符如 & 也必须转义。
在某些设备上,我发现用 编写的长文本(约 200 个字符)adb shell input text "<longText>"部分丢失 - 甚至最后的大部分丢失了!在我看来,这取决于制造商。
小智 2
对于命令有很好的描述adb shell input *,只需键入
adb shell input help
Run Code Online (Sandbox Code Playgroud)
对于adb shell keyevent命令,可以使用不同的键码。
| 归档时间: |
|
| 查看次数: |
20994 次 |
| 最近记录: |