안드로이드 쉘에서 input 커맨드를 통해 텍스트 입력, 터치, 키 입력 등을 할 수 있다.

 

input text

input text “insert%syour%stext”

안드로이드에서 텍스트 입력을 하는 커맨드. %s 는 space를 의미한다. 안드로이드 쉘에서 다음과 같이 입력하면 된다.

(ex) input text “Hello%sWorld”

 

input tap

input tap [xPosition] [YPosition]

안드로이드에서 짧은 터치를 하는 커맨드. 안드로이드 디버깅 모드에 진입하면 터치하는 곳의 x좌표, y좌표를 알 수 있다. 이를 토대로 안드로이드 쉘에서 이 커맨드를 치면 해당하는 좌표를 짧게 클릭한다.

(ex) input tap 500 200

 

input swipe

input swipe fromXPosition fromYPosition toXPosition toYPosition Time

안드로이드에서 처음 좌표에서 끝 좌표까지 주어진 시간동안 터치를 재현해주는 커맨드이다. 예시의 경우 (100, 500) 부터 (100,1000) 까지 100ms 동안 터치를 해준다.

(ex) input swipe 100 500 100 1000 100

 

input keyevent

input keyevent #NUM

안드로이드에서 키보드 입력을 대신 할 수 있는 커맨드이다. 필자의 경우는 터치가 안되는 안드로이드 디바이스가 안드로이드 동작이 느려서 이 키 이벤트로 안드로이드를 제어했다. 성능이 낮은 디바이스의 경우 터치하는 것보다 키 이벤트로 입력하는 것이 더 빠르다.

(ex) input keyevent 4

 

 Keyevent List

  • 0 –> “KEYCODE_0”
  • 1 –> “KEYCODE_SOFT_LEFT”
  • 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” //MK: 비번이 걸려 있지 않은 경우, 화면을 켠상태에서 해당 Keycode를 입력하면 메인 화면으로 넘어감
  • 83 –> “KEYCODE_NOTIFICATION”
  • 84 –> “KEYCODE_SEARCH”
  • 85 –> “KEYCODE_MEDIA_PLAY_PAUSE”
  • 86 –> “KEYCODE_MEDIA_STOP”
  • 87 –> “KEYCODE_MEDIA_NEXT”
  • 88 –> “KEYCODE_MEDIA_PREVIOUS”
  • 89 –> “KEYCODE_MEDIA_REWIND”
  • 90 –> “KEYCODE_MEDIA_FAST_FORWARD”
  • 91 –> “KEYCODE_MUTE”
  • 92 –> “KEYCODE_PAGE_UP”
  • 93 –> “KEYCODE_PAGE_DOWN”
  • 94 –> “KEYCODE_PICTSYMBOLS”
  • 224 –> “KEYCODE_WAKEUP” //MK: Power 버튼과 차이가 있음. 화면이 켜져 있는 상태에서 해당 키를 입력하면 화면이 그대로 켜져있음

 

 

출처

https://mkblog.co.kr/2018/09/10/android-adb-input-command/

 

[Android] ADB “input” Command 사용법 (adb shell input) – MKBlog

안드로이드 단말에서 Developer 옵션을 켜면 ADB를 사용해서 많은 것을 할 수 있다. 나의 경우 게임에서 특정 플레이를 반복적으로 해야 하는 부분을 자동으로 해보려고 찾다가 “adb shell input” Command로 구현 할 수 있어서 관련 Command를 정리하였다. Input Text Command: adb shell input text “insert%syour%stext” (%s 는 space를 의미) 설명: “insert text” C

mkblog.co.kr

 

'Android' 카테고리의 다른 글

에러 코드 <include/errno.h>  (0) 2019.04.09

Android에서 tinyalsa를 다루면서 pcm_read 에러가 나길래 찾아본 에러 코드..

ALSA 다루다가 에러 났을 때 에러 코드에 따른 대응 방법은 ALSA; Advanced Linux Sound Architecture 글 참고

<참고 웹페이지> https://android.googlesource.com/kernel/lk/+/dima/for-travis/include/errno.h

 

/*
 * Copyright (c) 2013 Corey Tabaka
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files
 * (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
#ifndef __ERRNO_H
#define __ERRNO_H
#include <compiler.h>
__BEGIN_CDECLS
extern int *__geterrno(void);
#define errno (*__geterrno())
#define	EPERM 1		/* Not super-user */
#define	ENOENT 2	/* No such file or directory */
#define	ESRCH 3		/* No such process */
#define	EINTR 4		/* Interrupted system call */
#define	EIO 5		/* I/O error */
#define	ENXIO 6		/* No such device or address */
#define	E2BIG 7		/* Arg list too long */
#define	ENOEXEC 8	/* Exec format error */
#define	EBADF 9		/* Bad file number */
#define	ECHILD 10	/* No children */
#define	EAGAIN 11	/* No more processes */
#define	ENOMEM 12	/* Not enough core */
#define	EACCES 13	/* Permission denied */
#define	EFAULT 14	/* Bad address */
#define	ENOTBLK 15	/* Block device required */
#define	EBUSY 16	/* Mount device busy */
#define	EEXIST 17	/* File exists */
#define	EXDEV 18	/* Cross-device link */
#define	ENODEV 19	/* No such device */
#define	ENOTDIR 20	/* Not a directory */
#define	EISDIR 21	/* Is a directory */
#define	EINVAL 22	/* Invalid argument */
#define	ENFILE 23	/* Too many open files in system */
#define	EMFILE 24	/* Too many open files */
#define	ENOTTY 25	/* Not a typewriter */
#define	ETXTBSY 26	/* Text file busy */
#define	EFBIG 27	/* File too large */
#define	ENOSPC 28	/* No space left on device */
#define	ESPIPE 29	/* Illegal seek */
#define	EROFS 30	/* Read only file system */
#define	EMLINK 31	/* Too many links */
#define	EPIPE 32	/* Broken pipe */
#define	EDOM 33		/* Math arg out of domain of func */
#define	ERANGE 34	/* Math result not representable */
#define	ENOMSG 35	/* No message of desired type */
#define	EIDRM 36	/* Identifier removed */
#define	ECHRNG 37	/* Channel number out of range */
#define	EL2NSYNC 38	/* Level 2 not synchronized */
#define	EL3HLT 39	/* Level 3 halted */
#define	EL3RST 40	/* Level 3 reset */
#define	ELNRNG 41	/* Link number out of range */
#define	EUNATCH 42	/* Protocol driver not attached */
#define	ENOCSI 43	/* No CSI structure available */
#define	EL2HLT 44	/* Level 2 halted */
#define	EDEADLK 45	/* Deadlock condition */
#define	ENOLCK 46	/* No record locks available */
#define EBADE 50	/* Invalid exchange */
#define EBADR 51	/* Invalid request descriptor */
#define EXFULL 52	/* Exchange full */
#define ENOANO 53	/* No anode */
#define EBADRQC 54	/* Invalid request code */
#define EBADSLT 55	/* Invalid slot */
#define EDEADLOCK 56	/* File locking deadlock error */
#define EBFONT 57	/* Bad font file fmt */
#define ENOSTR 60	/* Device not a stream */
#define ENODATA 61	/* No data (for no delay io) */
#define ETIME 62	/* Timer expired */
#define ENOSR 63	/* Out of streams resources */
#define ENONET 64	/* Machine is not on the network */
#define ENOPKG 65	/* Package not installed */
#define EREMOTE 66	/* The object is remote */
#define ENOLINK 67	/* The link has been severed */
#define EADV 68		/* Advertise error */
#define ESRMNT 69	/* Srmount error */
#define	ECOMM 70	/* Communication error on send */
#define EPROTO 71	/* Protocol error */
#define	EMULTIHOP 74	/* Multihop attempted */
#define	ELBIN 75	/* Inode is remote (not really error) */
#define	EDOTDOT 76	/* Cross mount point (not really error) */
#define EBADMSG 77	/* Trying to read unreadable message */
#define EFTYPE 79	/* Inappropriate file type or format */
#define ENOTUNIQ 80	/* Given log. name not unique */
#define EBADFD 81	/* f.d. invalid for this operation */
#define EREMCHG 82	/* Remote address changed */
#define ELIBACC 83	/* Can't access a needed shared lib */
#define ELIBBAD 84	/* Accessing a corrupted shared lib */
#define ELIBSCN 85	/* .lib section in a.out corrupted */
#define ELIBMAX 86	/* Attempting to link in too many libs */
#define ELIBEXEC 87	/* Attempting to exec a shared library */
#define ENOSYS 88	/* Function not implemented */
#define ENMFILE 89      /* No more files */
#define ENOTEMPTY 90	/* Directory not empty */
#define ENAMETOOLONG 91	/* File or path name too long */
#define ELOOP 92	/* Too many symbolic links */
#define EOPNOTSUPP 95	/* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define ECONNRESET 104  /* Connection reset by peer */
#define ENOBUFS 105	/* No buffer space available */
#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
#define EPROTOTYPE 107	/* Protocol wrong type for socket */
#define ENOTSOCK 108	/* Socket operation on non-socket */
#define ENOPROTOOPT 109	/* Protocol not available */
#define ESHUTDOWN 110	/* Can't send after socket shutdown */
#define ECONNREFUSED 111	/* Connection refused */
#define EADDRINUSE 112		/* Address already in use */
#define ECONNABORTED 113	/* Connection aborted */
#define ENETUNREACH 114		/* Network is unreachable */
#define ENETDOWN 115		/* Network interface is not configured */
#define ETIMEDOUT 116		/* Connection timed out */
#define EHOSTDOWN 117		/* Host is down */
#define EHOSTUNREACH 118	/* Host is unreachable */
#define EINPROGRESS 119		/* Connection already in progress */
#define EALREADY 120		/* Socket already connected */
#define EDESTADDRREQ 121	/* Destination address required */
#define EMSGSIZE 122		/* Message too long */
#define EPROTONOSUPPORT 123	/* Unknown protocol */
#define ESOCKTNOSUPPORT 124	/* Socket type not supported */
#define EADDRNOTAVAIL 125	/* Address not available */
#define ENETRESET 126
#define EISCONN 127		/* Socket is already connected */
#define ENOTCONN 128		/* Socket is not connected */
#define ETOOMANYREFS 129
#define EPROCLIM 130
#define EUSERS 131
#define EDQUOT 132
#define ESTALE 133
#define ENOTSUP 134		/* Not supported */
#define ENOMEDIUM 135   /* No medium (in tape drive) */
#define ENOSHARE 136    /* No such host or network path */
#define ECASECLASH 137  /* Filename exists with different case */
#define EILSEQ 138
#define EOVERFLOW 139	/* Value too large for defined data type */
#define EWOULDBLOCK EAGAIN	/* Operation would block */
#define __ELASTERROR 2000	/* Users can add values starting here */
__END_CDECLS
#endif

'Android' 카테고리의 다른 글

[안드로이드] input 커맨드  (0) 2019.05.28

+ Recent posts