Android query: adb shell for simulating keyboard and mouse events
1. Send Keyboard Events:
Command Format 1: adb shell input keyevent "value"
The value and corresponding key code are listed in the following table:
KeyEvent Value KEYCODE Comment
0 KEYCODE_UNKNOWN
1 The KEYCODE_MENU command in the SDK2.1 simulator is invalid, and the sendevent command is feasible.
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
Command Format 2: adb shell sendevent [device] [type] [code] [value]
For example, adb shell sendevent/dev/input/event0 1 229 1 means to press the menu key
Adb shell sendevent/dev/input/event0 1 229 0 means to press and release the menu key
Note: The preceding commands must be used in combination.
Complete command:
Adb shell sendevent/dev/input/event4 1 139 1; adb shell sendevent/dev/input/event4 1 330 1; adb shell sendevent/dev/input/event4 0 0 0; adb shell sendevent/dev/input/event4 1 139 0; adb shell sendevent/dev/input/event4 1 330 0; adb shell sendevent/dev/input/event4 0 0 0 0
The number is obtained by manually clicking the menu key based on adb shell getevent.
The command is as follows:
Key Name CODE
MENU 229
Back HOME 102
BACK (back button) 158
Calls (CALL button) 231
END (end call button) 107
2. Send a mouse event (Touch ):
Command Format: adb shell sendevent [device] [type] [code] [value]
Sendevent/dev/input/eventX type code value
/Dev/input/eventX corresponds to an event device. You can use getevent to obtain available event devices.
For definitions of type, code, and value, see kernel/include/linux/input. h.
Case 1: touch on a coordinate point
For example, if the x coordinate of the screen is 40 and the y coordinate is 210, run the following command:
Adb shell sendevent/dev/input/event0 3 0 40
Adb shell sendevent/dev/input/event0 3 1 210
Adb shell sendevent/dev/input/event0 1 1 330 1 // touch
Adb shell sendevent/dev/input/event0 0 0 0 // it must have
Adb shell sendevent/dev/input/event0 1 330 0 // untouch
Adb shell sendevent/dev/input/event0 0 0 0 // it must have
Note: The above six groups of commands must be used together.
Scenario 2: simulate a sliding track (download and test with aPaint software)
The following example shows a horizontal line starting with (100,200) and ending with (108,200) on aPaint.
Adb shell sendevent/dev/input/event0 3 0 100 // start from point (100,200)
Adb shell sendevent/dev/input/event0 3 1 200
Adb shell sendevent/dev/input/event0 1 1 330 1 // touch
Adb shell sendevent/dev/input/event0 0 0 0
Adb shell sendevent/dev/input/event0 3 0 0 101 // step to point (101,200)
Adb shell sendevent/dev/input/event0 0 0 0
........................ // Must list each step, here just skip
Adb shell sendevent/dev/input/event0 3 0 0 108 // end point (108,200)
Adb shell sendevent/dev/input/event0 0 0 0
Adb shell sendevent/dev/input/event0 1 330 0 // untouch
Adb shell sendevent/dev/input/event0 0 0 0
Example:
Sendevent/dev/input/event4 3 0 258; sendevent/dev/input/event4 3 1 285; sendevent/dev/input/event4 1 330 1; sendevent/dev/input/event4 0 0 0; sendevent/dev/input/event4 1 330 0; sendevent/dev/input/event4 0 0 0
Click coordinate point (380,870) on the Zhan Xun platform:
Adb shell "sendevent dev/input/event4 1 330 1; sendevent dev/input/event4 3 48 20; sendevent dev/input/event4 3 53 380; sendevent dev/input/event4 3 54 870; sendevent dev/input/event4 0 2 0; sendevent dev/input/event4 0 0 0; sendevent dev/input/event4 3 48 20; sendevent dev/input/event4 3 53 380; sendevent dev/input/event4 3 54 870; sendevent dev/input/event4 0 2 0; sendevent dev/input/event4 0 0 0; sendevent dev/input/event4 1 330 0; sendevent dev/input/event4 0 2 0; sendevent dev/input/event4 0 0 0"
Adb shell "sendevent dev/input/event4 1 330 1; sendevent dev/input/event4 3 48 20; sendevent dev/input/event4 3 53 380; sendevent dev/input/event4 3 54 870; sendevent dev/input/event4 0 2 0; sendevent dev/input/event4 0 0 0; sendevent dev/input/event4 1 330 0; sendevent dev/input/event4 0 0 0"