it-swarm-id.com

Acara Input Shell ADB

Apa perbedaan mendasar antara adb Shell input keyevent dan adb Shell sendevent? Mana yang harus saya gunakan untuk memasukkan karakter? Apakah kode kunci sama dengan yang kita berikan pada kedua perintah?

193
KVR

Dengan adb Shell input keyevent, event_code atau string akan dikirim ke perangkat.

usage: input [text|keyevent]
  input text <string>
  input keyevent <event_code>

Beberapa nilai yang mungkin untuk event_code adalah:

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"

Utilitas sendevent mengirimkan acara sentuh atau keyboard, serta acara lain untuk mensimulasikan acara perangkat keras. Lihat artikel ini untuk detail: Android, klik tingkat rendah Shell di layar .

358
LionCoder

Memperbarui:

Menggunakan adb Shell input:

Sisipkan teks:

adb Shell input text "insert%syour%stext%shere"

(obs:% s berarti SPACE)

..

Kode acara:

adb Shell input keyevent 82

(82 ---> MENU_BUTTON)

"Untuk kode keyevents lainnya lihat daftar di bawah"

..

Ketuk X, posisi Y:

adb Shell input tap 500 1450

Untuk menemukan X yang tepat, posisi Y yang ingin Anda Ketuk buka:

Pengaturan> Opsi Pengembang> Periksa opsi POINTER SLOCATION

..

Geser X1 Y1 X2 Y2 [durasi (ms)]:

adb Shell input swipe 100 500 100 1450 100

dalam contoh ini X1 = 100, Y1 = 500, X2 = 100, Y2 = 1450, Durasi = 100ms

..

LongPress X Y:

adb Shell input swipe 100 500 100 500 250

kami menggunakan perintah yang sama untuk geser untuk meniru pers lama

dalam contoh ini X = 100, Y = 500, Durasi = 250ms

..

Daftar Acara Kode Diperbarui:

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"

Daftar lengkap perintah dapat ditemukan di: http://developer.Android.com/reference/Android/view/KeyEvent.html

157
Rene Barbosa

Juga, jika Anda ingin mengirim ruang yang disematkan dengan perintah input, gunakan% s

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

akan menghasilkan

this is an example 

menjadi input.

% sendiri tidak perlu melarikan diri - hanya pasangan %s khusus yang diperlakukan secara khusus. Ini tentu saja mengarah pada pertanyaan yang jelas tentang bagaimana memasukkan string literal %s... yang harus Anda lakukan dengan dua perintah terpisah.

69
Fred Clift

Omong-omong, jika Anda mencoba menemukan cara untuk mengirim tanda kutip ganda ke perangkat, coba yang berikut ini:

adb Shell input text '\ "'

Saya tidak yakin mengapa tidak ada kode acara untuk penawaran, tetapi solusi ini berhasil. Juga, jika Anda menggunakan MonkeyDevice (atau ChimpChat), Anda harus menguji setiap caracter sebelum memanggil monkeyDevice.type, jika tidak, Anda tidak akan mendapatkan apa-apa saat Anda mencoba mengirim "

11
H Ribeiro

Satu perbedaan lain:

  • " adb input Shell " memanggil input.jar untuk memproses dan mengirim kode kunci dari lapisan Java kerangka Android.
  • " adb sendevent " sebenarnya adalah kode c (bagian dari utilitas toolbox) yang mengirimkan kode input langsung ke/dev/input .... dari Linux input subsistem.

Kode pelacakan lebih detail ke dalam AOSP Framework dapat ditemukan di sini:

http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_Shell_input_Code_Trace.html#RefId=7c8f5285

9
Y_Yen

Saya menulis skrip Powershell sederhana untuk pengguna windows untuk memetakan kunci untuk adb acara input Shell. Dan mengendalikan perangkat Android dari jarak jauh melalui LAN. Saya tidak tahu apakah ada yang menemukan itu berguna, tetapi saya akan membagikannya.

$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)
    }
}
5
Espen M. S.

Jika Anda ingin mengirim teks ke perangkat tertentu ketika beberapa perangkat terhubung. Pertama mencari perangkat yang terpasang menggunakan perangkat adb

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

kemudian dapatkan id perangkat spesifik Anda dan coba yang berikut ini

adb -s 31002d9e592b7300 Shell input text 'your text'
2

Untuk mengirim panggilan ulang ke aplikasi React-Native yang berjalan di perangkat Android: adb Shell input keyboard text "rr"

0
MorenoMdz