设为首页 收藏本站
查看: 1204|回复: 0

Android查询:模拟键盘鼠标事件(adb shell 实现)

[复制链接]

尚未签到

发表于 2015-10-25 14:31:16 | 显示全部楼层 |阅读模式
转自http://blog.iyunv.com/chaihuasong/article/details/9159323
1. 发送键盘事件:
命令格式1:adb shell input keyevent “value”
其中value以及对应的key code如下表所列:

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        

命令格式2:adb shell sendevent [device] [type] [code] [value]
如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu键
adb shell sendevent /dev/input/event0 1 229 0 代表按下松开menu键
说明:上述的命令需组合使用
完整命令:
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/event40 0 0

其中数字是根据adb shell getevent 手动点击menu键获得到的
另外所知道的命令如下:
Key Name CODE

MENU 229

HOME 102

BACK (back button) 158

CALL (call button) 231

END (end call button) 107



2. 发送鼠标事件(Touch):
命令格式:adb shell sendevent [device] [type] [code] [value]

sendevent /dev/input/eventX type code value
/dev/input/eventX 对应一个event设备,可以通过getevent获得可用的event设备
type, code, value的定义可参看kernel/include/linux/input.h

情况1:在某坐标点上touch
如在屏幕的x坐标为40,y坐标为210的点上touch一下,命令如下
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
注:以上六组命令必须配合使用,缺一不可


情况2:模拟滑动轨迹(可下载并采用aPaint软件进行试验)
如下例是在aPaint软件上画出一条开始于(100,200),止于(108,200)的水平直线
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


实例如下:
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



展讯平台点击坐标点(380,870)事件:
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 3300;sendevent dev/input/event4 0 0   0"

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-130667-1-1.html 上篇帖子: 【总结】关于shell执行,export 和 source 下篇帖子: linux中shell变量$#,$@,$0,$1,$2的含义解释:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表