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

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

Input Text

  • Command: adb shell input text “insert%syour%stext” (%s 는 space를 의미)
  • 설명: “insert text” Command 언제 사용해야 하는지 아직 잘 모르겠다. 자동 플레이 부분을 만들면서 사용하지 않았다. 단지 출처 1에서 찾은 내용에 포함되어 있어서 정리해보았다.

Input Tap (짧은 터치)

  • Command: adb shell input tap xPosition YPosition (xPosition, yPosition은 tap하고자 하는 위치를 의미)
  • 설명: xPosition, yPosition 위치에 짧게 터치하는 현상을 재현하는 Command이다. xPosition, yPosition을 쉽게 찾는 방법은 Developer Options에서 “Show Pointer Location”을 On 하면 단말 화면 위에 터치하는 부분의 X, Y Position 값을 확인 할 수 있다. 해당 Command를 제일 많이 사용했다.

Input Swipe (터치하여 움직이는 기능)

  • Command: adb shell input swipe 100 500 100 1000 100
  • 설명: 위 Command의 경우 (100, 500)에서 (100, 1000)으로 100ms 동안 터치를 해서 움직이는 부분을 재현해주는 부분이다. xSrc, ySrc, xDes, yDes, Duration 순서대로 입력을 처리하면 된다. 나의 경우 사용해보지 않았다. “input swipe” Command를 사용해서 길게 터치 (Long Press)하는 부분도 재현할 수 있다. Source와 Destination 값을 같이 하고 Duration 시간을 길게 하면 Long Press (손가락으로 오래 터치하고 있는)를 재현 할 수 있다.

Input Keyevent (제일 중요)

  • Command: adb shell input keyevent #NUM (#NUM에 미리 지정된 Activity가 존재함. 아래 리스트 확인)
  • 설명: #NUM에 숫자를 넣으면 숫자에 Mapping 되어 있는 기능을 대신에 해준다. 예를 들어 파워 버튼을 누르는 경우 #NUM 대신 26을 입력하면 된다. “input keyevent” Command는 정말로 정말로 많이 사용했다. 정말로 편리한 부분이다. #NUM에 Mapping List는 아래와 같다. 출처 1 또는 2에 가면 200번이 넘는 부분까지 존재한다. 사용하다가 추가적으로 유용한 keyevent 번호를 찾게 되면 리스트에 추가해 나가겠다.

Input 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 버튼과 차이가 있음. 화면이 켜져 있는 상태에서 해당 키를 입력하면 화면이 그대로 켜져있음

출처

  1. https://stackoverflow.com/questions/7789826/adb-shell-input-events
  2. https://developer.android.com/reference/android/view/KeyEvent

Leave a Comment