Android query: simulate keyboard and mouse events (adb shell implementation)

Reprinted from: https://blog.csdn.net/chaihuasong/article/details/9159323

 

1. Send keyboard events:

Command format 1: adb shell input keyevent "value"

The value and the corresponding key code are listed in the following table:

 

KeyEvent Value      KEYCODE     Comment
0       KEYCODE_UNKNOWN    
1       KEYCODE_MENU     在SDK2.1的模拟器中命令失效,sendevent命令可行
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]

Such as: 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 and release the menu key

Note: The above commands need to be used in combination

Full 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

The number is obtained by manually clicking the menu button according to adb shell getevent

The other known commands are as follows:

Key Name CODE

MENU 229

HOME 102

BACK (back button) 158

CALL (call button) 231

END (end call button) 107

 

2. Send mouse events (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 get the available event device through getevent

The definition of type, code, value can be found in kernel/include/linux/input.h

 

Case 1: touch on a coordinate point

For example, touch the point where the x coordinate of the screen is 40 and the y coordinate is 210, and 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 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, and one is indispensable

 

Case 2: Simulate sliding trajectory (can be downloaded and tested with aPaint software)

The following example is to draw a horizontal line starting at (100,200) and ending at (108,200) on the aPaint software

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 330 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

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 330 0 //untouch

adb shell sendevent /dev/input/event0 0 0 0

 

Examples are as follows:

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

 

Spreadtrum platform click coordinate point (380,870) event:

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"

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325238635&siteId=291194637