@@ -2,6 +2,30 @@ package dev.mobile.maestro
2
2
3
3
import android.app.UiAutomation
4
4
import android.util.Log
5
+ import android.view.KeyEvent.KEYCODE_1
6
+ import android.view.KeyEvent.KEYCODE_4
7
+ import android.view.KeyEvent.KEYCODE_5
8
+ import android.view.KeyEvent.KEYCODE_6
9
+ import android.view.KeyEvent.KEYCODE_7
10
+ import android.view.KeyEvent.KEYCODE_APOSTROPHE
11
+ import android.view.KeyEvent.KEYCODE_AT
12
+ import android.view.KeyEvent.KEYCODE_BACKSLASH
13
+ import android.view.KeyEvent.KEYCODE_COMMA
14
+ import android.view.KeyEvent.KEYCODE_EQUALS
15
+ import android.view.KeyEvent.KEYCODE_GRAVE
16
+ import android.view.KeyEvent.KEYCODE_LEFT_BRACKET
17
+ import android.view.KeyEvent.KEYCODE_MINUS
18
+ import android.view.KeyEvent.KEYCODE_NUMPAD_ADD
19
+ import android.view.KeyEvent.KEYCODE_NUMPAD_LEFT_PAREN
20
+ import android.view.KeyEvent.KEYCODE_NUMPAD_RIGHT_PAREN
21
+ import android.view.KeyEvent.KEYCODE_PERIOD
22
+ import android.view.KeyEvent.KEYCODE_POUND
23
+ import android.view.KeyEvent.KEYCODE_RIGHT_BRACKET
24
+ import android.view.KeyEvent.KEYCODE_SEMICOLON
25
+ import android.view.KeyEvent.KEYCODE_SLASH
26
+ import android.view.KeyEvent.KEYCODE_SPACE
27
+ import android.view.KeyEvent.KEYCODE_STAR
28
+ import android.view.KeyEvent.META_SHIFT_LEFT_ON
5
29
import androidx.test.ext.junit.runners.AndroidJUnit4
6
30
import androidx.test.platform.app.InstrumentationRegistry
7
31
import androidx.test.uiautomator.Configurator
@@ -11,6 +35,7 @@ import io.grpc.stub.StreamObserver
11
35
import maestro_android.MaestroAndroid
12
36
import maestro_android.MaestroDriverGrpc
13
37
import maestro_android.deviceInfo
38
+ import maestro_android.inputTextResponse
14
39
import maestro_android.tapResponse
15
40
import maestro_android.viewHierarchyResponse
16
41
import org.junit.Test
@@ -103,4 +128,72 @@ class Service(
103
128
responseObserver.onNext(tapResponse {})
104
129
responseObserver.onCompleted()
105
130
}
131
+
132
+ override fun inputText (
133
+ request : MaestroAndroid .InputTextRequest ,
134
+ responseObserver : StreamObserver <MaestroAndroid .InputTextResponse >
135
+ ) {
136
+ Log .d(" Maestro" , " Inputting text" )
137
+ setText(request.text)
138
+
139
+ responseObserver.onNext(inputTextResponse { })
140
+ responseObserver.onCompleted()
141
+ }
142
+
143
+ private fun setText (text : String ) {
144
+ for (element in text) {
145
+ Log .d(" Maestro" , element.code.toString())
146
+ when (element.code) {
147
+ in 48 .. 57 -> {
148
+ /* * 0~9 **/
149
+ uiDevice.pressKeyCode(element.code - 41 )
150
+ }
151
+ in 65 .. 90 -> {
152
+ /* * A~Z **/
153
+ uiDevice.pressKeyCode(element.code - 36 , 1 )
154
+ }
155
+ in 97 .. 121 -> {
156
+ /* * a~z **/
157
+ uiDevice.pressKeyCode(element.code - 68 )
158
+ }
159
+ ' ;' .code -> uiDevice.pressKeyCode(KEYCODE_SEMICOLON )
160
+ ' =' .code -> uiDevice.pressKeyCode(KEYCODE_EQUALS )
161
+ ' ,' .code -> uiDevice.pressKeyCode(KEYCODE_COMMA )
162
+ ' -' .code -> uiDevice.pressKeyCode(KEYCODE_MINUS )
163
+ ' .' .code -> uiDevice.pressKeyCode(KEYCODE_PERIOD )
164
+ ' /' .code -> uiDevice.pressKeyCode(KEYCODE_SLASH )
165
+ ' `' .code -> uiDevice.pressKeyCode(KEYCODE_GRAVE )
166
+ ' \' ' .code -> uiDevice.pressKeyCode(KEYCODE_APOSTROPHE )
167
+ ' [' .code -> uiDevice.pressKeyCode(KEYCODE_LEFT_BRACKET )
168
+ ' ]' .code -> uiDevice.pressKeyCode(KEYCODE_RIGHT_BRACKET )
169
+ ' \\ ' .code -> uiDevice.pressKeyCode(KEYCODE_BACKSLASH )
170
+ ' ' .code -> uiDevice.pressKeyCode(KEYCODE_SPACE )
171
+ ' @' .code -> uiDevice.pressKeyCode(KEYCODE_AT )
172
+ ' #' .code -> uiDevice.pressKeyCode(KEYCODE_POUND )
173
+ ' *' .code -> uiDevice.pressKeyCode(KEYCODE_STAR )
174
+ ' (' .code -> uiDevice.pressKeyCode(KEYCODE_NUMPAD_LEFT_PAREN )
175
+ ' )' .code -> uiDevice.pressKeyCode(KEYCODE_NUMPAD_RIGHT_PAREN )
176
+ ' +' .code -> uiDevice.pressKeyCode(KEYCODE_NUMPAD_ADD )
177
+ ' !' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_1 )
178
+ ' $' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_4 )
179
+ ' %' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_5 )
180
+ ' ^' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_6 )
181
+ ' &' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_7 )
182
+ ' "' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_APOSTROPHE )
183
+ ' {' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_LEFT_BRACKET )
184
+ ' }' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_RIGHT_BRACKET )
185
+ ' :' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_SEMICOLON )
186
+ ' |' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_BACKSLASH )
187
+ ' <' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_COMMA )
188
+ ' >' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_PERIOD )
189
+ ' ?' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_SLASH )
190
+ ' ~' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_GRAVE )
191
+ ' _' .code -> keyPressShiftedToEvents(uiDevice, KEYCODE_MINUS )
192
+ }
193
+ }
194
+ }
195
+
196
+ private fun keyPressShiftedToEvents (uiDevice : UiDevice , keyCode : Int ) {
197
+ uiDevice.pressKeyCode(keyCode, META_SHIFT_LEFT_ON )
198
+ }
106
199
}
0 commit comments