ADB Shell Input Events

前端 未结 8 1318
伪装坚强ぢ
伪装坚强ぢ 2020-11-22 11:50

What is the basic difference between adb shell input keyevent and adb shell sendevent? Which one should I use for inputting a character? Are the ke

相关标签:
8条回答
  • 2020-11-22 12:12

    Updating:

    Using adb shell input:

    Insert text:

    adb shell input text "insert%syour%stext%shere"
    

    (obs: %s means SPACE)

    ..

    Event codes:

    adb shell input keyevent 82
    

    (82 ---> MENU_BUTTON)

    "For more keyevents codes see list below"

    ..

    Tap X,Y position:

    adb shell input tap 500 1450
    

    To find the exact X,Y position you want to Tap go to:

    Settings > Developer Options > Check the option POINTER SLOCATION

    ..

    Swipe X1 Y1 X2 Y2 [duration(ms)]:

    adb shell input swipe 100 500 100 1450 100
    

    in this example X1=100, Y1=500, X2=100, Y2=1450, Duration = 100ms

    ..

    LongPress X Y:

    adb shell input swipe 100 500 100 500 250
    

    we utilise the same command for a swipe to emulate a long press

    in this example X=100, Y=500, Duration = 250ms

    ..

    Event Codes Updated 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" 
    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"
    ...
    122 -->  "KEYCODE_MOVE_HOME"
    123 -->  "KEYCODE_MOVE_END"
    

    The complete list of commands can be found on: http://developer.android.com/reference/android/view/KeyEvent.html

    0 讨论(0)
  • 2020-11-22 12:13

    If you want to send a text to specific device when multiple devices connected. First look for the attached devices using adb devices

    adb devices
    List of devices attached
    3004e25a57192200        device
    31002d9e592b7300        device
    

    then get your specific device id and try the following

    adb -s 31002d9e592b7300 shell input text 'your text'
    
    0 讨论(0)
  • 2020-11-22 12:13

    To send a reload call to a React-Native app running in a android device: adb shell input keyboard text "rr"

    0 讨论(0)
  • 2020-11-22 12:16

    Also, if you want to send embedded spaces with the input command, use %s

    adb shell input text 'this%sis%san%sexample'   
    

    will yield

    this is an example

    being input.

    % itself does not need escaping - only the special %s pair is treated specially. This leads of course to the obvious question of how to enter the literal string %s, which you would have to do with two separate commands.

    0 讨论(0)
  • 2020-11-22 12:16

    One other difference:

    • "adb shell input" is calling the input.jar to process and send the keycode from the Java layer of the android framework.
    • "adb sendevent" is actually c code (part of toolbox utility ) that sends the input code directly into the /dev/input.... of Linux input subsystem.

    More detail code trace into inside AOSP Framework can be found here:

    http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285

    0 讨论(0)
  • 2020-11-22 12:23

    By adb shell input keyevent, either an event_code or a string will be sent to the device.

    usage: input [text|keyevent]
      input text <string>
      input keyevent <event_code>
    

    Some possible values for event_code are:

    0 -->  "KEYCODE_UNKNOWN" 
    1 -->  "KEYCODE_MENU" 
    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"
    

    The sendevent utility sends touch or keyboard events, as well as other events for simulating the hardware events. Refer to this article for details: Android, low level shell click on screen.

    0 讨论(0)
提交回复
热议问题