¿Cuál es la diferencia básica entre adb shell input keyevent
y adb shell sendevent
? ¿Cuál debo usar para ingresar un carácter? ¿Son los códigos clave los mismos que pasamos a los dos comandos?
222
Por adb shell input keyevent
, se enviará una event_code
o una string
al dispositivo.
usage: input [text|keyevent]
input text <string>
input keyevent <event_code>
Algunos valores posibles para event_code
son:
0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"
La sendevent
utilidad envía eventos táctiles o de teclado, así como otros eventos para simular los eventos de hardware. Consulte este artículo para obtener más detalles: Android, shell de bajo nivel, haga clic en la pantalla .
>adb shell input text "a b"
pero no trabajo.Actualizando:
Utilizando
adb shell input
:..
..
..
..
..
fuente
adb shell input swipe 200 800 200 400 200
Además, si desea enviar espacios incrustados con el comando de entrada, use% s
rendirá
siendo entrada.
%
en sí mismo no necesita escapar, solo el%s
par especial se trata especialmente. Esto conduce, por supuesto, a la pregunta obvia de cómo ingresar la cadena literal%s
... que tendría que hacer con dos comandos separados.fuente
atext "Hey, I'm here"
y funciona.Por cierto, si está intentando encontrar una forma de enviar comillas dobles al dispositivo, intente lo siguiente:
No estoy seguro de por qué no hay un código de evento para las cotizaciones, pero esta solución hace el trabajo. Además, si está utilizando MonkeyDevice (o ChimpChat), debe probar cada caracter antes de invocar monkeyDevice.type, de lo contrario, no obtendrá nada cuando intente enviar "
fuente
atext "Hey, I'm here"
y funciona.Otra diferencia:
Aquí se puede encontrar más rastreo de código detallado dentro del marco de AOSP:
http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285
fuente
Escribí un script simple de Powershell para que los usuarios de Windows asignen claves a eventos de entrada de adb shell. Y controle un dispositivo Android de forma remota a través de LAN. No sé si alguien lo encuentra útil, pero lo compartiré de todos modos.
fuente
Si desea enviar un mensaje de texto a un dispositivo específico cuando hay varios dispositivos conectados. Primero busque los dispositivos conectados usando dispositivos adb
luego obtenga su ID de dispositivo específico y pruebe lo siguiente
fuente
Para enviar una llamada de recarga a una aplicación React-Native que se ejecuta en un dispositivo Android:
adb shell input keyboard text "rr"
fuente