adb Shell input text "sometext"
OR
adb Shell input keyevent eventid
これらはそれぞれ仮想/ハードウェアキーボードからの実際の入力をシミュレートしますか?
これらのコマンドのドキュメントがdeveloper.Android.com/に見つかりませんでした
これらのコマンドの信頼できるドキュメントはありますか?
adb Shell input help
生成(入力デバイスの長いリストの後):
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
したがって、「テキスト」は実際に仮想(デフォルト:タッチスクリーン)用であり、キーイベントは物理(デフォルト:キーボード)用であるように見えます。
テキスト入力デバイスを上書きできます-adb Shell input keyboard text "foo"
は問題なく動作します。ただし、画面から生のキーコードを送信することはできません。
に関連する
_adb Shell input text "some\ text"
_
ソースコードしか見つかりません:例: Android 8.1はこちら 。
メソッドprivate void sendText(int source, String text) {
はエンコーディングに関連しています。
そして、私が見つけた前の方法で使用されている_KeyCharacterMap.VIRTUAL_KEYBOARD
_を検索します 「仮想キー文字コード表ファイル」という見出しの説明はここにあります 。
その情報から私は古いSM-G900Fを調べました。 _/system/usr/keychars/Virtual.kcm
_の下で見つけました。そのファイル内で、主要なイベントを最も一般的な文字(ほとんどはASCIIのみ)にマップします。
だからあなたの質問に:
これらはそれぞれ仮想/ハードウェアキーボードからの実際の入力をシミュレートしますか?
はい、コードはテキストを受け取り、KeyCharacterMap.VIRTUAL_KEYBOARDを介してキーイベントにマップし直そうとし、それらを送信します。
私の経験では、すべての未知の文字はテキスト全体のキャンセルにつながります。また、一部の文字をエスケープする必要があります--- %sまたは '\'を含むスペース、&などの他の特殊文字もエスケープする必要があります。
また、一部のデバイスでは、_adb Shell input text "<longText>"
_で記述された長いテキスト(約200文字)が部分的に失われていることを経験しました。メーカーによっては見えました。
adb Shell input *
コマンドに利用できる適切な説明があります。入力するだけです。
adb Shell input help
adb Shell keyevent
コマンドの場合、さまざまな キーコード を使用できます。