adb shell input keyevent和adb shell sendevent的基本区别是什么?我应该用哪一个来输入字符?传递给两个命令的键码是否相同?


当前回答

如果您想在多个设备连接时将文本发送到特定设备。首先使用adb设备查找附加设备

adb devices
List of devices attached
3004e25a57192200        device
31002d9e592b7300        device

然后获取您的特定设备id并尝试以下操作

adb -s 31002d9e592b7300 shell input text 'your%stext'

其他回答

如果您想在多个设备连接时将文本发送到特定设备。首先使用adb设备查找附加设备

adb devices
List of devices attached
3004e25a57192200        device
31002d9e592b7300        device

然后获取您的特定设备id并尝试以下操作

adb -s 31002d9e592b7300 shell input text 'your%stext'

另外,如果您想用输入命令发送嵌入式空格,请使用%s

adb shell input text 'this%sis%san%sexample'   

将产生

这是一个例子

被输入。

%本身不需要转义-只有特殊的%s对被特殊处理。这当然会导致一个明显的问题,即如何输入字符串%s,这必须使用两个单独的命令来完成。

向运行在android设备上的React-Native应用程序发送重载调用:adb shell input keyboard text "rr"

顺便说一下,如果你试图找到一种方法发送双引号到设备,尝试以下:

Adb shell输入文本“\”

我不确定为什么没有引用的事件代码,但这个解决方法可以工作。此外,如果你正在使用MonkeyDevice(或黑猩猩聊天),你应该在调用MonkeyDevice之前测试每个字符。输入,否则当你尝试发送时,你什么也得不到

我为windows用户编写了一个简单的Powershell脚本,将键映射到adb shell输入事件。并通过局域网远程控制Android设备。 我不知道是否有人觉得它有用,但无论如何我会分享它。

$ip = 192.168.1.8
cd D:\Android\android-sdk-windows\platform-tools\; .\adb.exe disconnect $ip; .\adb.exe connect $ip
$adbKeyNum = @{LeftWindows = "1"; F1 = "3"; Enter = "66"; UpArrow = "19"; DownArrow = "20"; LeftArrow = "21"; RightArrow = "22"; Add = "24";
        Subtract = "25"; Backspace = "4"; P = "26"}

while(1 -eq 1){
    $keyPress = [Console]::ReadKey($true).Key
    if ([string]$keyPress -eq "F10"){
        .\adb.exe disconnect $ip
        exit
    }
    elseif ([string]$keyPress -eq "F6"){
        $string = Read-Host -Prompt 'Input the string: '
        .\adb.exe shell input text $string
    }
    elseif ($adbKeyNum.ContainsKey([string]$keyPress)){
        echo $adbKeyNum.Get_Item([string]$keyPress)
        .\adb.exe shell input keyevent $adbKeyNum.Get_Item([string]$keyPress)
    }
}