zoukankan      html  css  js  c++  java
  • Android查询:模拟键盘鼠标事件(adb shell 实现)

    转自:https://blog.csdn.net/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/event4 0 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 330 0;sendevent dev/input/event4 0 0   0"

  • 相关阅读:
    原来这样就可以开发出一个百万量级的Android相机
    微信读书这样排版,看过的人都很难忘!
    AI小白快上车!这是发往高薪职位的车!
    短视频APP是如何开启你的美好生活的?
    自从我这样撸代码以后,公司网页的浏览量提高了107%!
    如果想成为一名顶尖的前端,这份书单你一定要收藏!
    老板今天问我为什么公司的数据库这么烂,我是这样回答的......
    MapReduce Notes
    HDFS Architecture Notes
    BloomFilter
  • 原文地址:https://www.cnblogs.com/x_wukong/p/8985834.html
Copyright © 2011-2022 走看看