shell控制端下使用input可以实现模拟触屏、虚拟按键及其他触摸操作,如果在dos端需要在每个命令前加adb -s ip shell ,具体选项如下
一、 text
向当前输入框中键入字符串,如input text "cs input text"
二、keyevent [–longpress]
发送事件,测试发现,该动作无法实现长按动作,即使使用–longpress也不可以,如果需要长按操作需要用swipe实现,关于key code number与name的对应关系及翻译见文章末尾,input keyevent number与input keyevent name一样,模拟按home键:input keyevent KEYCODE_HOME或input keyevent 3
三、tap
关于坐标值获取:可以通过获取事件的方式获得,如接了触摸屏,把/dev/input下面的event与设备对应,即找到触摸屏对应的event,通过cat /proc/bus/input/devices可以看到设备与与event的对应关系,如下:
master:/ # cat /proc/bus/input/devices I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="rk8xx_pwrkey" P: Phys=rk8xx_pwrkey/input0 S: Sysfs=/devices/platform/ff3c0000.i2c/i2c-0/0-0020/input/input0 U: Uniq= H: Handlers=event0 cpufreq keychord B: PROP=0 B: EV=3 B: KEY=10000000000000 0 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="gsensor" P: Phys= S: Sysfs=/devices/platform/ff150000.i2c/i2c-6/6-0069/input/input1 U: Uniq= H: Handlers=event1 B: PROP=0 B: EV=9 B: ABS=7 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="gyro" P: Phys= S: Sysfs=/devices/platform/ff150000.i2c/i2c-6/6-0069-1/input/input2 U: Uniq= H: Handlers=event2 B: PROP=0 B: EV=d B: REL=38 B: ABS=38 I: Bus=0000 Vendor=0001 Product=0001 Version=0100 N: Name="rk_headset" P: Phys= S: Sysfs=/devices/platform/rk_headset/input/input3 U: Uniq= H: Handlers=event3 B: PROP=0 B: EV=3 B: KEY=400000000 0 0 0 I: Bus=0003 Vendor=26ae Product=8506 Version=0100 N: Name="wch.cn USB2IIC_CTP_CONTROL" P: Phys=usb-fe3e0000.usb-1/input0 S: Sysfs=/devices/platform/fe3e0000.usb/usb6/6-1/6-1:1.0/0003:26AE:8506.0001/input/input4 U: Uniq= H: Handlers=event4 cpufreq B: PROP=2 B: EV=b B: KEY=400 0 0 0 0 0 B: ABS=261800000000003
可以看到触摸屏对应的event为input/input4,通过getevent去获取屏幕输入事件,getevent /dev/input/input4,点击屏幕可以看到shell端会输出一些内容,其中就有坐标值:
0003 0039 00000054 //1 0003 0035 000002fc //2 0003 0036 000003cc //3 0001 014a 00000001 //4 0003 0000 000002fc //5 0003 0001 000003cc //6 0000 0000 00000000 //7 0003 0039 ffffffff //8 0001 014a 00000000 //9 0000 0000 00000000 //10
第2、3行或第5、6行即为x、y坐标值,使用坐标值时需要从16进制转换成十进制,可以通过此方法捕捉对应按键的坐标值,实现虚拟按键操作
四、swipe
与tap类似,不过swipe是划,从某个点到某个点,因此需要两个坐标值,其后可以跟时间,由此可以实现长按操作。如在空白界面输入input swipe 100 200 100 200 10000即可进入桌面设置,此方法可以实现对一个图标的长按操作。
五、 draganddrop [duration(ms)] (Default: touchscreen):实现拖拽动作
此选项就是实现拖拽的动作,将一个东西从某个坐标拖到某个坐标,坐标获取方式如tap一样。
draganddrop和swipe都有一个时间选项,此选项表示的是过程时间,不是在某个点的停留时间,如果想实现在某个点停留只需要把两个坐标设置成同一个位置即可。
六、press (Default: trackball) //忽略
七、roll (Default: trackball) //忽略,字面意思是控制球,应该类似于王者荣耀中的方向控制球之类的,具体没测试过
key code number与name的对应关系:
public static final int KEYCODE_UNKNOWN = 0;
public static final int KEYCODE_SOFT_LEFT = 1;
public static final int KEYCODE_SOFT_RIGHT = 2;
public static final int KEYCODE_HOME = 3;
public static final int KEYCODE_BACK = 4;
public static final int KEYCODE_CALL = 5;
public static final int KEYCODE_ENDCALL = 6;
public static final int KEYCODE_0 = 7;
public static final int KEYCODE_1 = 8;
public static final int KEYCODE_2 = 9;
public static final int KEYCODE_3 = 10;
public static final int KEYCODE_4 = 11;
public static final int KEYCODE_5 = 12;
public static final int KEYCODE_6 = 13;
public static final int KEYCODE_7 = 14;
public static final int KEYCODE_8 = 15;
public static final int KEYCODE_9 = 16;
public static final int KEYCODE_STAR = 17;
public static final int KEYCODE_POUND = 18;
public static final int KEYCODE_DPAD_UP = 19;
public static final int KEYCODE_DPAD_DOWN = 20;
public static final int KEYCODE_DPAD_LEFT = 21;
public static final int KEYCODE_DPAD_RIGHT = 22;
public static final int KEYCODE_DPAD_CENTER = 23;
public static final int KEYCODE_VOLUME_UP = 24;
public static final int KEYCODE_VOLUME_DOWN = 25;
public static final int KEYCODE_POWER = 26;
public static final int KEYCODE_CAMERA = 27;
public static final int KEYCODE_CLEAR = 28;
public static final int KEYCODE_A = 29;
public static final int KEYCODE_B = 30;
public static final int KEYCODE_C = 31;
public static final int KEYCODE_D = 32;
public static final int KEYCODE_E = 33;
public static final int KEYCODE_F = 34;
public static final int KEYCODE_G = 35;
public static final int KEYCODE_H = 36;
public static final int KEYCODE_I = 37;
public static final int KEYCODE_J = 38;
public static final int KEYCODE_K = 39;
public static final int KEYCODE_L = 40;
public static final int KEYCODE_M = 41;
public static final int KEYCODE_N = 42;
public static final int KEYCODE_O = 43;
public static final int KEYCODE_P = 44;
public static final int KEYCODE_Q = 45;
public static final int KEYCODE_R = 46;
public static final int KEYCODE_S = 47;
public static final int KEYCODE_T = 48;
public static final int KEYCODE_U = 49;
public static final int KEYCODE_V = 50;
public static final int KEYCODE_W = 51;
public static final int KEYCODE_X = 52;
public static final int KEYCODE_Y = 53;
public static final int KEYCODE_Z = 54;
public static final int KEYCODE_COMMA = 55;
public static final int KEYCODE_PERIOD = 56;
public static final int KEYCODE_ALT_LEFT = 57;
public static final int KEYCODE_ALT_RIGHT = 58;
public static final int KEYCODE_SHIFT_LEFT = 59;
public static final int KEYCODE_SHIFT_RIGHT = 60;
public static final int KEYCODE_TAB = 61;
public static final int KEYCODE_SPACE = 62;
public static final int KEYCODE_SYM = 63;
public static final int KEYCODE_EXPLORER = 64;
public static final int KEYCODE_ENVELOPE = 65;
public static final int KEYCODE_ENTER = 66;
public static final int KEYCODE_DEL = 67;
public static final int KEYCODE_GRAVE = 68;
public static final int KEYCODE_MINUS = 69;
public static final int KEYCODE_EQUALS = 70;
public static final int KEYCODE_LEFT_BRACKET = 71;
public static final int KEYCODE_RIGHT_BRACKET = 72;
public static final int KEYCODE_BACKSLASH = 73;
public static final int KEYCODE_SEMIcolon = 74;
public static final int KEYCODE_APOSTROPHE = 75;
public static final int KEYCODE_SLASH = 76;
public static final int KEYCODE_AT = 77;
public static final int KEYCODE_NUM = 78;
public static final int KEYCODE_HEADSETHOOK = 79;
public static final int KEYCODE_FOCUS = 80; // *Camera* focus
public static final int KEYCODE_PLUS = 81;
public static final int KEYCODE_MENU = 82;
public static final int KEYCODE_NOTIFICATION = 83;
public static final int KEYCODE_SEARCH = 84;
public static final int KEYCODE_MEDIA_PLAY_PAUSE= 85;
public static final int KEYCODE_MEDIA_STOP = 86;
public static final int KEYCODE_MEDIA_NEXT = 87;
public static final int KEYCODE_MEDIA_PREVIOUS = 88;
public static final int KEYCODE_MEDIA_REWIND = 89;
public static final int KEYCODE_MEDIA_FAST_FORWARD = 90;
public static final int KEYCODE_MUTE = 91;
public static final int KEYCODE_PAGE_UP = 92;
public static final int KEYCODE_PAGE_DOWN = 93;
public static final int KEYCODE_PICTSYMBOLS = 94; // switch symbol-sets (Emoji,Kao-moji)
public static final int KEYCODE_SWITCH_CHARSET = 95; // switch char-sets (Kanji,Katakana)
public static final int KEYCODE_BUTTON_A = 96;
public static final int KEYCODE_BUTTON_B = 97;
public static final int KEYCODE_BUTTON_C = 98;
public static final int KEYCODE_BUTTON_X = 99;
public static final int KEYCODE_BUTTON_Y = 100;
public static final int KEYCODE_BUTTON_Z = 101;
public static final int KEYCODE_BUTTON_L1 = 102;
public static final int KEYCODE_BUTTON_R1 = 103;
public static final int KEYCODE_BUTTON_L2 = 104;
public static final int KEYCODE_BUTTON_R2 = 105;
public static final int KEYCODE_BUTTON_THUMBL = 106;
public static final int KEYCODE_BUTTON_THUMBR = 107;
public static final int KEYCODE_BUTTON_START = 108;
public static final int KEYCODE_BUTTON_SELECT = 109;
public static final int KEYCODE_BUTTON_MODE = 110;
public static final int KEYCODE_ESCAPE = 111;
public static final int KEYCODE_FORWARD_DEL = 112;
public static final int KEYCODE_CTRL_LEFT = 113;
public static final int KEYCODE_CTRL_RIGHT = 114;
public static final int KEYCODE_CAPS_LOCK = 115;
public static final int KEYCODE_SCROLL_LOCK = 116;
public static final int KEYCODE_meta_LEFT = 117;
public static final int KEYCODE_meta_RIGHT = 118;
public static final int KEYCODE_FUNCTION = 119;
public static final int KEYCODE_SYSRQ = 120;
public static final int KEYCODE_BREAK = 121;
public static final int KEYCODE_MOVE_HOME = 122;
public static final int KEYCODE_MOVE_END = 123;
public static final int KEYCODE_INSERT = 124;
public static final int KEYCODE_FORWARD = 125;
public static final int KEYCODE_MEDIA_PLAY = 126;
public static final int KEYCODE_MEDIA_PAUSE = 127;
public static final int KEYCODE_MEDIA_CLOSE = 128;
public static final int KEYCODE_MEDIA_EJECT = 129;
public static final int KEYCODE_MEDIA_RECORD = 130;
public static final int KEYCODE_F1 = 131;
public static final int KEYCODE_F2 = 132;
public static final int KEYCODE_F3 = 133;
public static final int KEYCODE_F4 = 134;
public static final int KEYCODE_F5 = 135;
public static final int KEYCODE_F6 = 136;
public static final int KEYCODE_F7 = 137;
public static final int KEYCODE_F8 = 138;
public static final int KEYCODE_F9 = 139;
public static final int KEYCODE_F10 = 140;
public static final int KEYCODE_F11 = 141;
public static final int KEYCODE_F12 = 142;
public static final int KEYCODE_NUM_LOCK = 143;
public static final int KEYCODE_NUMPAD_0 = 144;
public static final int KEYCODE_NUMPAD_1 = 145;
public static final int KEYCODE_NUMPAD_2 = 146;
public static final int KEYCODE_NUMPAD_3 = 147;
public static final int KEYCODE_NUMPAD_4 = 148;
public static final int KEYCODE_NUMPAD_5 = 149;
public static final int KEYCODE_NUMPAD_6 = 150;
public static final int KEYCODE_NUMPAD_7 = 151;
public static final int KEYCODE_NUMPAD_8 = 152;
public static final int KEYCODE_NUMPAD_9 = 153;
public static final int KEYCODE_NUMPAD_DIVIDE = 154;
public static final int KEYCODE_NUMPAD_MULTIPLY = 155;
public static final int KEYCODE_NUMPAD_SUBTRACT = 156;
public static final int KEYCODE_NUMPAD_ADD = 157;
public static final int KEYCODE_NUMPAD_DOT = 158;
public static final int KEYCODE_NUMPAD_COMMA = 159;
public static final int KEYCODE_NUMPAD_ENTER = 160;
public static final int KEYCODE_NUMPAD_EQUALS = 161;
public static final int KEYCODE_NUMPAD_LEFT_PAREN = 162;
public static final int KEYCODE_NUMPAD_RIGHT_PAREN = 163;
public static final int KEYCODE_VOLUME_MUTE = 164;
public static final int KEYCODE_INFO = 165;
public static final int KEYCODE_CHANNEL_UP = 166;
public static final int KEYCODE_CHANNEL_DOWN = 167;
public static final int KEYCODE_ZOOM_IN = 168;
public static final int KEYCODE_ZOOM_OUT = 169;
public static final int KEYCODE_TV = 170;
public static final int KEYCODE_WINDOW = 171;
public static final int KEYCODE_GUIDE = 172;
public static final int KEYCODE_DVR = 173;
public static final int KEYCODE_BOOKMARK = 174;
public static final int KEYCODE_CAPTIONS = 175;
public static final int KEYCODE_SETTINGS = 176;
public static final int KEYCODE_TV_POWER = 177;
public static final int KEYCODE_TV_INPUT = 178;
public static final int KEYCODE_STB_POWER = 179;
public static final int KEYCODE_STB_INPUT = 180;
public static final int KEYCODE_AVR_POWER = 181;
public static final int KEYCODE_AVR_INPUT = 182;
public static final int KEYCODE_PROG_RED = 183;
public static final int KEYCODE_PROG_GREEN = 184;
public static final int KEYCODE_PROG_YELLOW = 185;
public static final int KEYCODE_PROG_BLUE = 186;
public static final int KEYCODE_APP_SWITCH = 187;
public static final int KEYCODE_BUTTON_1 = 188;
public static final int KEYCODE_BUTTON_2 = 189;
public static final int KEYCODE_BUTTON_3 = 190;
public static final int KEYCODE_BUTTON_4 = 191;
public static final int KEYCODE_BUTTON_5 = 192;
public static final int KEYCODE_BUTTON_6 = 193;
public static final int KEYCODE_BUTTON_7 = 194;
public static final int KEYCODE_BUTTON_8 = 195;
public static final int KEYCODE_BUTTON_9 = 196;
public static final int KEYCODE_BUTTON_10 = 197;
public static final int KEYCODE_BUTTON_11 = 198;
public static final int KEYCODE_BUTTON_12 = 199;
public static final int KEYCODE_BUTTON_13 = 200;
public static final int KEYCODE_BUTTON_14 = 201;
public static final int KEYCODE_BUTTON_15 = 202;
public static final int KEYCODE_BUTTON_16 = 203;
public static final int KEYCODE_LANGUAGE_SWITCH = 204;
public static final int KEYCODE_MANNER_MODE = 205;
public static final int KEYCODE_3D_MODE = 206;
public static final int KEYCODE_ConTACTS = 207;
public static final int KEYCODE_CALENDAR = 208;
public static final int KEYCODE_MUSIC = 209;
public static final int KEYCODE_CALCULATOR = 210;
public static final int KEYCODE_ZENKAKU_HANKAKU = 211;
public static final int KEYCODE_EISU = 212;
public static final int KEYCODE_MUHENKAN = 213;
public static final int KEYCODE_HENKAN = 214;
public static final int KEYCODE_KATAKANA_HIRAGANA = 215;
public static final int KEYCODE_YEN = 216;
public static final int KEYCODE_RO = 217;
public static final int KEYCODE_KANA = 218;
public static final int KEYCODE_ASSIST = 219;
public static final int KEYCODE_BRIGHTNESS_DOWN = 220;
public static final int KEYCODE_BRIGHTNESS_UP = 221;
public static final int KEYCODE_MEDIA_AUDIO_TRACK = 222;
public static final int KEYCODE_SLEEP = 223;
public static final int KEYCODE_WAKEUP = 224;
public static final int KEYCODE_PAIRING = 225;
public static final int KEYCODE_MEDIA_TOP_MENU = 226;
public static final int KEYCODE_11 = 227;
public static final int KEYCODE_12 = 228;
public static final int KEYCODE_LAST_CHANNEL = 229;
public static final int KEYCODE_TV_DATA_SERVICE = 230;
public static final int KEYCODE_VOICE_ASSIST = 231;
public static final int KEYCODE_TV_RADIO_SERVICE = 232;
public static final int KEYCODE_TV_TELETEXT = 233;
public static final int KEYCODE_TV_NUMBER_ENTRY = 234;
public static final int KEYCODE_TV_TERRESTRIAL_ANALOG = 235;
public static final int KEYCODE_TV_TERRESTRIAL_DIGITAL = 236;
public static final int KEYCODE_TV_SATELLITE = 237;
public static final int KEYCODE_TV_SATELLITE_BS = 238;
public static final int KEYCODE_TV_SATELLITE_CS = 239;
public static final int KEYCODE_TV_SATELLITE_SERVICE = 240;
public static final int KEYCODE_TV_NETWORK = 241;
public static final int KEYCODE_TV_ANTENNA_CABLE = 242;
public static final int KEYCODE_TV_INPUT_HDMI_1 = 243;
public static final int KEYCODE_TV_INPUT_HDMI_2 = 244;
public static final int KEYCODE_TV_INPUT_HDMI_3 = 245;
public static final int KEYCODE_TV_INPUT_HDMI_4 = 246;
public static final int KEYCODE_TV_INPUT_COMPOSITE_1 = 247;
public static final int KEYCODE_TV_INPUT_COMPOSITE_2 = 248;
public static final int KEYCODE_TV_INPUT_COMPONENT_1 = 249;
public static final int KEYCODE_TV_INPUT_COMPONENT_2 = 250;
public static final int KEYCODE_TV_INPUT_VGA_1 = 251;
public static final int KEYCODE_TV_AUDIO_DEscriptION = 252;
public static final int KEYCODE_TV_AUDIO_DEscriptION_MIX_UP = 253;
public static final int KEYCODE_TV_AUDIO_DEscriptION_MIX_DOWN = 254;
public static final int KEYCODE_TV_ZOOM_MODE = 255;
public static final int KEYCODE_TV_CONTENTS_MENU = 256;
public static final int KEYCODE_TV_MEDIA_CONTEXT_MENU = 257;
public static final int KEYCODE_TV_TIMER_PROGRAMMING = 258;
public static final int KEYCODE_HELP = 259;
public static final int KEYCODE_NAVIGATE_PREVIOUS = 260;
public static final int KEYCODE_NAVIGATE_NEXT = 261;
public static final int KEYCODE_NAVIGATE_IN = 262;
public static final int KEYCODE_NAVIGATE_OUT = 263;
public static final int KEYCODE_MEDIA_SKIP_FORWARD = 272;
public static final int KEYCODE_MEDIA_SKIP_BACKWARD = 273;
public static final int KEYCODE_MEDIA_STEP_FORWARD = 274;
public static final int KEYCODE_MEDIA_STEP_BACKWARD = 275;
对应翻译如下,引自https://www.cnblogs.com/hujingnb/p/10282238.html:
电话键 KEYCODE_CALL: 拨号键 KEYCODE_ENDCALL: 挂机键 KEYCODE_HOME: 按键Home KEYCODE_MENU: 菜单键 KEYCODE_BACK: 返回键 KEYCODE_SEARCH: 搜索键 KEYCODE_CAMERA: 拍照键 KEYCODE_FOCUS: 拍照对焦键 KEYCODE_POWER: 电源键 KEYCODE_NOTIFICATION: 通知键 KEYCODE_MUTE: 话筒静音键 KEYCODE_VOLUME_MUTE: 扬声器静音键 KEYCODE_VOLUME_UP: 音量增加键 KEYCODE_VOLUME_DOWN: 音量减小键 控制键 KEYCODE_ENTER: 回车键 KEYCODE_ESCAPE: ESC键 KEYCODE_DPAD_CENTER: 导航键 确定键 KEYCODE_DPAD_UP: 导航键 向上 KEYCODE_DPAD_DOWN: 导航键 向下 KEYCODE_DPAD_LEFT: 导航键 向左 KEYCODE_DPAD_RIGHT: 导航键 向右 KEYCODE_MOVE_HOME: 光标移动到开始键 KEYCODE_MOVE_END: 光标移动到末尾键 KEYCODE_PAGE_UP: 向上翻页键 KEYCODE_PAGE_DOWN: 向下翻页键 KEYCODE_DEL: 退格键 KEYCODE_FORWARD_DEL: 删除键 KEYCODE_INSERT: 插入键 KEYCODE_TAB: Tab键 KEYCODE_NUM_LOCK: 小键盘锁 KEYCODE_CAPS_LOCK: 大写锁定键 KEYCODE_BREAK: Break/Pause键 KEYCODE_SCROLL_LOCK: 滚动锁定键 KEYCODE_ZOOM_IN: 放大键 KEYCODE_ZOOM_OUT: 缩小键 基本键 KEYCODE_0: 按键'0' KEYCODE_1: 按键'1' KEYCODE_2: 按键'2' KEYCODE_3: 按键'3' KEYCODE_4: 按键'4' KEYCODE_5: 按键'5' KEYCODE_6: 按键'6' KEYCODE_7: 按键'7' KEYCODE_8: 按键'8' KEYCODE_9: 按键'9' KEYCODE_A: 按键'A' KEYCODE_B: 按键'B' KEYCODE_C: 按键'C' KEYCODE_D: 按键'D' KEYCODE_E: 按键'E' KEYCODE_F: 按键'F' KEYCODE_G: 按键'G' KEYCODE_H: 按键'H' KEYCODE_I: 按键'I' KEYCODE_J: 按键'J' KEYCODE_K: 按键'K' KEYCODE_L: 按键'L' KEYCODE_M: 按键'M' KEYCODE_N: 按键'N' KEYCODE_O: 按键'O' KEYCODE_P: 按键'P' KEYCODE_Q: 按键'Q' KEYCODE_R: 按键'R' KEYCODE_S: 按键'S' KEYCODE_T: 按键'T' KEYCODE_U: 按键'U' KEYCODE_V: 按键'V' KEYCODE_W: 按键'W' KEYCODE_X: 按键'X' KEYCODE_Y: 按键'Y' KEYCODE_Z: 按键'Z' 符号 KEYCODE_PLUS: 按键'+' KEYCODE_MINUS: 按键'-' KEYCODE_STAR: 按键'*' KEYCODE_SLASH: 按键'/' KEYCODE_EQUALS: 按键'=' KEYCODE_AT: 按键'@' KEYCODE_POUND: 按键'#' KEYCODE_APOSTROPHE: 按键''' (单引号) KEYCODE_BACKSLASH: 按键'' KEYCODE_COMMA: 按键',' KEYCODE_PERIOD: 按键'.' KEYCODE_LEFT_BRACKET: 按键'[' KEYCODE_RIGHT_BRACKET: 按键']' KEYCODE_SEMIcolon: 按键';' KEYCODE_GRAVE: 按键'`' KEYCODE_SPACE: 空格键 多媒体键 KEYCODE_MEDIA_PLAY: 多媒体键 播放 KEYCODE_MEDIA_STOP: 多媒体键 停止 KEYCODE_MEDIA_PAUSE: 多媒体键 暂停 KEYCODE_MEDIA_PLAY_PAUSE: 多媒体键 播放/暂停 KEYCODE_MEDIA_FAST_FORWARD: 多媒体键 快进 KEYCODE_MEDIA_REWIND: 多媒体键 快退 KEYCODE_MEDIA_NEXT: 多媒体键 下一首 KEYCODE_MEDIA_PREVIOUS: 多媒体键 上一首 KEYCODE_MEDIA_CLOSE: 多媒体键 关闭 KEYCODE_MEDIA_EJECT: 多媒体键 弹出 KEYCODE_MEDIA_RECORD: 多媒体键 录音



