Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Carácter de unicode de entrada de shell de adb

Conociendo las asignaciones de teclas básicas descritas en eventos de entrada de shell de ADB , obtengo la emulación de entrada de texto y teclas especiales funcionando bastante bien. Pero ¿qué pasa con los caracteres Unicode? Por ejemplo, quiero usar umlauts de la distribución de teclado QWERTZ alemán.

Esto me consigue:

$ adb shell input text ö Killed 

Así que parece que se bloquea y

 adb shell input text \xFC 

Imprime xFC en la entrada. He intentado los eventos con getevent pero no he encontrado una asignación directa, también he mirado en el /system/usr/keylayout/Qwerty.kl archivo /system/usr/keylayout/Qwerty.kl

Creo que la única posibilidad es a través del portapapeles, pero como se señaló en la pregunta Pegar texto en el portapapeles emulador de Android con adb shell parece ser desconocido cómo utilizarlo para Android Ice Cream Sandwich o más tarde ..

3 Solutions collect form web for “Carácter de unicode de entrada de shell de adb”

input no funcionará porque sólo puede enviar un evento de clave única a través del teclado virtual (compruebe el código fuente si no sabe lo que quiero decir).

Creo que la única manera que queda es usar Instrumentación . Supongo que puedes crear una prueba para tu actividad y luego hacer algo como esto:

  final Instrumentation instrumentation = getInstrumentation(); final long downTime = SystemClock.uptimeMillis(); final long eventTime = SystemClock.uptimeMillis(); final KeyEvent altDown = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_GRAVE, 1, KeyEvent.META_ALT_LEFT_ON); final KeyEvent altUp = new KeyEvent(downTime, eventTime, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_GRAVE, 1, KeyEvent.META_ALT_LEFT_ON); instrumentation.sendKeySync(altDown); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_A); instrumentation.sendKeySync(altUp); instrumentation.sendKeySync(altDown); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E); instrumentation.sendKeySync(altUp); instrumentation.sendKeySync(altDown); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_I); instrumentation.sendKeySync(altUp); instrumentation.sendKeySync(altDown); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_O); instrumentation.sendKeySync(altUp); instrumentation.sendKeySync(altDown); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_U); instrumentation.sendKeySync(altUp); 

Esto enviará las claves modificadas: àèìòù

Escribí un teclado virtual que acepta la intención de difusión, por lo que puede enviar caracteres unicode a la vista editText a través de adb.

Por ejemplo, adb shell am broadcast -a ADB_INPUT_TEXT –es msg "你 好嗎! Hello!"

Aquí está el proyecto github: https://github.com/senzhk/ADBKeyBoard

Espero que este pequeño proyecto ayude.

En realidad ADBKeyBoard es muy bueno! Gracias por Eric Tang!

Algunas extensiones útiles para un uso cómodo:

Cambie a ADBKeyBoard desde adb:

  adb shell ime set com.android.adbkeyboard/.AdbIME 

Compruebe sus teclados virtuales disponibles:

 ime list -a 

Utilice caracteres simples de cita -no doble como en el ejemplo anterior- si su shell no acepta "!" (Signo de la explicación)

 adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'Accented characters here' 

Cambiar de nuevo al teclado virtual original: (swype en mi caso …)

 adb shell ime set com.nuance.swype.dtc/com.nuance.swype.input.IME 

Utiliza adb sobre wifi para simplificar tu vida … 🙂

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.