Câu trả lời:
Bởi adb shell input keyevent
, một event_code
hoặc một string
sẽ được gửi đến thiết bị.
usage: input [text|keyevent]
input text <string>
input keyevent <event_code>
Một số giá trị có thể event_code
là:
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"
Các sendevent
tiện ích gửi cảm ứng hoặc bàn phím các sự kiện, cũng như các sự kiện khác để mô phỏng các sự kiện phần cứng. Tham khảo bài viết này để biết chi tiết: Android, nhấp vào vỏ cấp thấp trên màn hình .
>adb shell input text "a b"
nhưng không hoạt động.
Đang cập nhật:
Sử dụng adb shell input
:
Chèn văn bản:
adb shell input text "insert%syour%stext%shere"
(obs:% s có nghĩa là KHÔNG GIAN)
..
Mã sự kiện:
adb shell input keyevent 82
(82 ---> MENU_BUTTON)
"Để biết thêm mã khóa, xem danh sách bên dưới"
..
Nhấn vào vị trí X, Y:
adb shell input tap 500 1450
Để tìm vị trí X, Y chính xác mà bạn muốn Nhấn vào:
Cài đặt> Tùy chọn nhà phát triển> Kiểm tra tùy chọn POINTER SLOCATION
..
Vuốt X1 Y1 X2 Y2 [thời gian (ms)]:
adb shell input swipe 100 500 100 1450 100
trong ví dụ này X1 = 100, Y1 = 500, X2 = 100, Y2 = 1450, Thời lượng = 100ms
..
LongPress XY:
adb shell input swipe 100 500 100 500 250
chúng tôi sử dụng cùng một lệnh để vuốt để mô phỏng một báo chí dài
trong ví dụ này X = 100, Y = 500, Thời gian = 250ms
..
Danh sách mã sự kiện được cập nhật:
0 --> "KEYCODE_0"
1 --> "KEYCODE_SOFT_LEFT"
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 --> "KEYCODE_MEDIA_PLAY_PAUSE"
86 --> "KEYCODE_MEDIA_STOP"
87 --> "KEYCODE_MEDIA_NEXT"
88 --> "KEYCODE_MEDIA_PREVIOUS"
89 --> "KEYCODE_MEDIA_REWIND"
90 --> "KEYCODE_MEDIA_FAST_FORWARD"
91 --> "KEYCODE_MUTE"
92 --> "KEYCODE_PAGE_UP"
93 --> "KEYCODE_PAGE_DOWN"
94 --> "KEYCODE_PICTSYMBOLS"
...
122 --> "KEYCODE_MOVE_HOME"
123 --> "KEYCODE_MOVE_END"
Danh sách đầy đủ các lệnh có thể được tìm thấy trên: http://developer.android.com/reference/android/view/KeyEvent.html
adb shell input swipe 200 800 200 400 200
Ngoài ra, nếu bạn muốn gửi khoảng trắng được nhúng bằng lệnh đầu vào, hãy sử dụng% s
adb shell input text 'this%sis%san%sexample'
sẽ mang lại
this is an example
được đầu vào.
%
bản thân nó không cần thoát - chỉ có %s
cặp đặc biệt được đối xử đặc biệt. Tất nhiên, điều này dẫn đến câu hỏi rõ ràng về cách nhập chuỗi ký tự %s
... mà bạn sẽ phải làm với hai lệnh riêng biệt.
atext "Hey, I'm here"
và nó hoạt động.
Nhân tiện, nếu bạn đang cố gắng tìm cách gửi báo giá kép cho thiết bị, hãy thử cách sau:
văn bản đầu vào vỏ adb '\ "'
Tôi không chắc tại sao không có mã sự kiện để trích dẫn, nhưng cách giải quyết này thực hiện công việc. Ngoài ra, nếu bạn đang sử dụng MonkeyDevice (hoặc ChimpChat), bạn nên kiểm tra từng loại vi khuẩn trước khi gọi khỉDevice.type, nếu không bạn sẽ không nhận được gì khi cố gắng gửi "
atext "Hey, I'm here"
và nó hoạt động.
Một sự khác biệt khác:
Chi tiết theo dõi mã vào bên trong AOSP Framework có thể được tìm thấy ở đây:
http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285
Tôi đã viết một tập lệnh Powershell đơn giản cho người dùng windows để ánh xạ các khóa tới các sự kiện nhập vào vỏ adb. Và điều khiển một thiết bị Android từ xa qua mạng LAN. Tôi không biết có ai thấy nó hữu ích không, nhưng dù sao tôi cũng sẽ chia sẻ nó.
$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)
}
}
Nếu bạn muốn gửi một văn bản đến thiết bị cụ thể khi nhiều thiết bị được kết nối. Trước tiên hãy tìm các thiết bị đính kèm bằng thiết bị adb
adb devices
List of devices attached
3004e25a57192200 device
31002d9e592b7300 device
sau đó lấy id thiết bị cụ thể của bạn và thử các cách sau
adb -s 31002d9e592b7300 shell input text 'your text'