Was ist der grundlegende Unterschied zwischen adb shell input keyevent
und adb shell sendevent
? Welches soll ich zur Eingabe eines Zeichens verwenden? Sind die Schlüsselcodes dieselben, die wir an beide Befehle übergeben?
222
Bis adb shell input keyevent
wird entweder ein event_code
oder ein string
an das Gerät gesendet.
usage: input [text|keyevent]
input text <string>
input keyevent <event_code>
Einige mögliche Werte für event_code
sind:
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"
Das sendevent
Dienstprogramm sendet Berührungs- oder Tastaturereignisse sowie andere Ereignisse zur Simulation der Hardwareereignisse. Weitere Informationen finden Sie in diesem Artikel: Android, Low-Level-Shell Klicken Sie auf den Bildschirm .
>adb shell input text "a b"
aber nicht zu arbeiten.Aktualisierung:
Verwenden von
adb shell input
:..
..
..
..
..
quelle
adb shell input swipe 200 800 200 400 200
Wenn Sie eingebettete Leerzeichen mit dem Eingabebefehl senden möchten, verwenden Sie% s
wird nachgeben
eingegeben werden.
%
selbst muss nicht entkommen - nur das spezielle%s
Paar wird speziell behandelt. Dies führt natürlich zu der offensichtlichen Frage, wie die Literalzeichenfolge eingegeben werden soll%s
... was Sie mit zwei separaten Befehlen tun müssten.quelle
atext "Hey, I'm here"
es funktioniert.Übrigens, wenn Sie versuchen, doppelte Anführungszeichen an das Gerät zu senden, versuchen Sie Folgendes:
Ich bin nicht sicher, warum es keinen Ereigniscode für Anführungszeichen gibt, aber diese Problemumgehung erledigt den Job. Wenn Sie MonkeyDevice (oder ChimpChat) verwenden, sollten Sie jedes Zeichen testen, bevor Sie monkeyDevice.type aufrufen. Andernfalls erhalten Sie nichts, wenn Sie versuchen zu senden. "
quelle
atext "Hey, I'm here"
es funktioniert.Ein weiterer Unterschied:
Weitere Informationen zum Code-Trace in AOSP Framework finden Sie hier:
http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285
quelle
Ich habe ein einfaches Powershell-Skript geschrieben, mit dem Windows-Benutzer Schlüssel Adb-Shell-Eingabeereignissen zuordnen können. Und steuern Sie ein Android-Gerät ferngesteuert über LAN. Ich weiß nicht, ob es jemand nützlich findet, aber ich werde es trotzdem teilen.
quelle
Wenn Sie einen Text an ein bestimmtes Gerät senden möchten, wenn mehrere Geräte verbunden sind. Suchen Sie zuerst mit adb-Geräten nach den angeschlossenen Geräten
Holen Sie sich dann Ihre spezifische Geräte-ID und versuchen Sie Folgendes
quelle
So senden Sie einen Reload-Anruf an eine React-Native-App, die auf einem Android-Gerät ausgeführt wird:
adb shell input keyboard text "rr"
quelle