One, send keyboard events:
Command format 1:adb Shell input keyevent "value"
where value and the corresponding key code are listed in the following table:
KeyEvent Value |
KeyCode |
Comment |
0 |
Keycode_unknown |
|
1 |
Keycode_menu |
Command fails in SDK2.1 Simulator, sendevent command is possible |
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 |
|
21st |
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 press the menu key
ADB Shell Sendevent/dev/input/event0 1 229 0 means Press to release the menu key
Note: The above commands need to be used in combination
The following commands are also known:
Key Name CODE
MENU 229
HOME 102
Back (back button) 158
Call Button 231
End (end call button) 107
Second, send mouse events (Touch):
Command format: adb shell sendevent [device] [type] [code] [value]
1. Touch on a coordinate point
If you touch the x-coordinate of the screen at a point with a 40,y coordinate of 210, the command is as follows
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//touch
ADB shell sendevent/dev/input/event0 0 0 0//it must have
adb shell sendevent/dev/input/event0 1 0//untouch
ADB shell sendevent/dev/input/event0 0 0 0//it must have
Note: The above six sets of commands must be used in conjunction with
2. Simulating the sliding trajectory
The following example shows a horizontal line starting at (100,200) and ending with (108,200) on the Apaint software.
ADB shell sendevent/dev/input/event0 3 0//start from point (100,200)
ADB shell sendevent/dev/input/event0 3 1 200
ADB shell sendevent/dev/input/event0 1 1//touch
ADB shell sendevent/dev/input/event0 0 0 0
ADB shell sendevent/dev/input/event0 3 0 101//step to point (101,200)
ADB shell sendevent/dev/input/event0 0 0 0
.....//must list Each step, here just skip, and .....????.
ADB shell sendevent/dev/input/event0 3 0 108//end Point (108,200)
ADB shell sendevent/dev/input/event0 0 0 0
adb shell sendevent/dev/input/event0 1 0//untouch
ADB shell sendevent/dev/input/event0 0 0 0
Iii. cmd instruction python encapsulation 1. Python encapsulation via OS
Adb_shell = "adb shell sendevent/dev/input/event0 3 0" +str (pointx)
Os.system (Adb_shell)
One problem with this approach is that each time a command is executed, a CMD window flashes past, and the following method is used instead.
2. Python encapsulation via subprocess
Adb_shell = "adb shell sendevent/dev/input/event0 3 1" +str (PointX1)
Subprocess. Popen (Adb_shell, stdout=subprocess. PIPE, Shell=true)
This method can avoid the appearance of pop-up windows.
Analog touch differences on the real machine and simulator
Applying the above instructions to the simulator is really effective, but when you move to the real machine, you will find that these instructions have been invalidated and carefully analyzed for two reasons:
1.event
There is only one/dev/input/event0 on the simulator, but it is not on the real machine (if it is true, then you do not leave the Equipment factory-_-| | )。
Use cat to get the event information for your device:
# cat/proc/bus/input/devicesi:bus=0000 vendor=0000 product=0000 version=0000n:name= "Qtouch-touchscreen" P:phys=s: sysfs=/devices/virtual/input/input5u:uniq=h:handlers=event5b:ev=bb:key=400 0 4 0 0 0 0 0 0 0 0b:abs=2750000 11030003 " Qtouch-touchscreen "Not the death of the event several, say 1234567 is possible, look at your device."
2. Touch parameter Data
#探究原因的时候, by:
#adb Shell getevent/dev/input/event5 > GetValue
Can get:
0003 0035 000007c8
0003 0036 00000771
0003 0038 00000001
0000 0002 00000000
0003 0037 00000010
0000 0000 00000000
This is not the same as I imagined the coordinate information, see C, should be 16 binary number, converted into 10 binary can be obtained:
3 53 1992
3 54 1905
3 56 1
0 2 0
3 55 16
0 0 0
Then follow the original method to do a test to verify the results:
ADB Shell SENDEVENT/DEV/INPUT/EVENT5 3 53 1992
ADB Shell sendevent/dev/input/event5 3 54 1905
ADB Shell SENDEVENT/DEV/INPUT/EVENT5 3 56 1
ADB Shell SENDEVENT/DEV/INPUT/EVENT5 0 2 0
ADB Shell SENDEVENT/DEV/INPUT/EVENT5 3 55 16
ADB shell sendevent/dev/input/event5 0 0 0
Results can be achieved by clicking!!
(If the operation of the data is particularly large, then we can use VI, in the script to achieve bulk data conversion: Vim ' +%normal gg ' +., $g/^/s//adb shell sendevent//dev//input//event5/g ' +wq ' Value
Android Test of ADB shell