ADB 셸 입력 이벤트
사이의 기본적인 차이점은 무엇입니까?adb shell input keyevent
그리고.adb shell sendevent
제가 문자를 입력할 때 어떤 것을 사용해야 합니까?두 명령에 전달하는 키 코드가 동일합니까?
타고adb shell input keyevent
중 하나event_code
는또.string
장치로 전송됩니다.
usage: input [text|keyevent]
input text <string>
input keyevent <event_code>
가한 몇가 값지에 대해 가능한 몇 과 같습니다.event_code
다음과 같습니다.
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"
그sendevent
유틸리티는 터치 또는 키보드 이벤트뿐만 아니라 하드웨어 이벤트를 시뮬레이션하기 위한 기타 이벤트도 전송합니다.자세한 내용은 이 문서를 참조하십시오.Android, 화면에서 낮은 수준의 셸 클릭.
업데이트 중:
용사를 합니다.adb shell input
:
텍스트 삽입:
adb shell input text "insert%syour%stext%shere"
(obs: %s는 공간을 의미합니다)
..
이벤트 코드:
adb shell input keyevent 82
(82 ---> 메뉴_버튼)
"자세한 이벤트 코드는 아래 목록을 참조하십시오.
..
X,Y 위치를 누릅니다.
adb shell input tap 500 1450
탭할 정확한 X,Y 위치를 찾으려면 다음으로 이동합니다.
Settings > Developer Options > PINOTHER SLOCATION 옵션 확인
..
X1 Y1 X2 Y2 [시간(ms)]:
adb shell input swipe 100 500 100 1450 100
이 예에서는 X1=100, Y1=500, X2=100, Y2=1450, 지속 시간 = 100ms
..
길게 누르기 XY:
adb shell input swipe 100 500 100 500 250
우리는 긴 프레스를 에뮬레이트하기 위해 스와이프에 동일한 명령을 사용합니다.
이 예에서는 X=100, Y=500, 지속 시간 = 250ms
..
이벤트 코드 업데이트 목록:
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"
전체 명령 목록은 http://developer.android.com/reference/android/view/KeyEvent.html 에서 확인할 수 있습니다.
또한입명로포함공된보사다다용음니합을면내려백을 사용합니다.%s
adb shell input text 'this%sis%san%sexample'
항복할 것입니다
이것은 예시입니다.
입력 중입니다.
%
그 자체는 탈출할 필요가 없습니다 - 오직 특별한 것만.%s
쌍은 특수하게 처리됩니다.이것은 물론 문자 그대로의 문자열을 입력하는 방법에 대한 명백한 질문으로 이어집니다.%s
두 개의 개별 명령으로 수행해야 합니다.
윈도우 사용자들이 키를 adb 쉘 입력 이벤트에 매핑할 수 있도록 간단한 Powershell 스크립트를 작성했습니다.그리고 LAN을 통해 원격으로 Android 장치를 제어할 수 있습니다.쓸모가 있다고 생각하는 사람이 있을지 모르겠지만, 어쨌든 공유하겠습니다.
$ip = 192.168.1.8
cd D:\Android\android-sdk-windows\platform-tools\; .\adb.exe disconnect $ip; .\adb.exe connect $ip
$adbKeyNum = @{LeftWindows = "1"; F1 = "3"; Enter = "66"; UpArrow = "19"; DownArrow = "20"; LeftArrow = "21"; RightArrow = "22"; Add = "24";
Subtract = "25"; Backspace = "4"; P = "26"}
while(1 -eq 1){
$keyPress = [Console]::ReadKey($true).Key
if ([string]$keyPress -eq "F10"){
.\adb.exe disconnect $ip
exit
}
elseif ([string]$keyPress -eq "F6"){
$string = Read-Host -Prompt 'Input the string: '
.\adb.exe shell input text $string
}
elseif ($adbKeyNum.ContainsKey([string]$keyPress)){
echo $adbKeyNum.Get_Item([string]$keyPress)
.\adb.exe shell input keyevent $adbKeyNum.Get_Item([string]$keyPress)
}
}
장치에 큰따옴표를 보내는 방법을 찾으려면 다음을 시도하십시오.
adb 셸 입력 텍스트 '\"'
인용문에 대한 이벤트 코드가 없는 이유는 모르겠지만 이 해결 방법이 효과적입니다.또한 MonkeyDevice(또는 ChimpChat)를 사용하는 경우 MonkeyDevice를 호출하기 전에 각 문자를 테스트해야 합니다.입력하십시오. 그렇지 않으면 "를 보내려고 해도 아무것도 얻지 못합니다.
또 다른 차이점:
- "adb shell input"은 input.jar를 호출하여 안드로이드 프레임워크의 Java 계층에서 키코드를 처리하고 전송하는 것입니다.
- "adb sendevent"는 실제로 입력 코드를 Linux 입력 하위 시스템의 /dev/input...로 직접 보내는 c 코드(공구함 유틸리티의 일부)입니다.
AOSP Framework 내부에 대한 자세한 코드 추적은 다음에서 확인할 수 있습니다.
http://www.srcmap.org/sd_share/4/aba57bc6/AOSP_adb_shell_input_Code_Trace.html#RefId=7c8f5285
여러 장치가 연결되었을 때 특정 장치로 텍스트를 보내려는 경우.먼저 adb 장치를 사용하여 연결된 장치를 찾습니다.
adb devices
List of devices attached
3004e25a57192200 device
31002d9e592b7300 device
그런 다음 특정 장치 ID를 가져오고 다음을 시도합니다.
adb -s 31002d9e592b7300 shell input text 'your%stext'
Android 장치에서 실행 중인 React-Native 앱에 다시 로드 호출을 보내는 방법adb shell input keyboard text "rr"
언급URL : https://stackoverflow.com/questions/7789826/adb-shell-input-events
'source' 카테고리의 다른 글
IP 전화/IPad:화면 너비를 프로그래밍 방식으로 가져오는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
MariaDb 10.6의 NVARCHAR 열에 대한 기본 데이터 정렬 변경 (0) | 2023.08.20 |
MySQL의 SELECT 문에 열을 올바르게 추가하는 방법은 무엇입니까? (0) | 2023.08.15 |
Python에서 Google Authenticator 구현 (0) | 2023.08.15 |
/usr/bin/codesign이 종료 코드 1과 함께 실패했습니다. (0) | 2023.08.15 |