入力装置がなにもなくadbだけできる端末にタッチイベントを送りたい(挫折)

そんな変態な環境は普通はないよね... orz
キーイベントは普通に送れるのだけどね。

sendevent

普通は、sendeventでできる。

# sendevent
use: sendevent device type code value

http://stackoverflow.com/questions/4386449/send-touch-event-from-adb-to-a-device
こっちのが詳しいな。
http://softteco.blogspot.jp/2011/03/android-low-level-shell-click-on-screen.html
でも、ターゲット環境には、/dev/input/event*がない。
バイスないんじゃ、使えないじゃん...

WiFiInputMethod

WPS無線LANを設定する。
wpa_cliは普通ないから入れてね。
サプリカント6だけね。
あとライブラリもいくつかいるかも。

# wpa_cli -p wlan0 wps_pbc

WiFiKeyboard入れる。

$ ./adb install /Users/kinneko/Downloads/WiFiKeyboard.apk 

adb shellしてIMEを設定する。

# ime list -a
com.volosyukivan/.WiFiInputMethod:
  mId=com.volosyukivan/.WiFiInputMethod mSettingsActivityName=null
  mIsDefaultResId=0x0
  Service:
    priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false
    ServiceInfo:
      name=com.volosyukivan.WiFiInputMethod
      packageName=com.volosyukivan
      labelRes=0x0 nonLocalizedLabel=WiFiKeyboard icon=0x0
      enabled=true exported=true processName=com.volosyukivan
      permission=android.permission.BIND_INPUT_METHOD
# ime list -s

なにも有効になっていない。

# ime enable com.volosyukivan/.WiFiInputMethod
Input method com.volosyukivan/.WiFiInputMethod: now enabled
# ime list -s
com.volosyukivan/.WiFiInputMethod

有効になった。

アプリを開く。
back2回でアプリボタンにフォーカス。

# input keyevent 19
# input keyevent 19

リターン。

# input keyevent 66

アプリアイコンは一番右端。4つ目。

# input keyevent 22
# input keyevent 22
# input keyevent 22
# input keyevent 66

IPアドレスとポート7777が表示される。
ブラウザで開く。
開かない... orz


こいつも、/dev/input/event*疑惑。

uinputを使う

bluetoothバイスのためのinputデバイス
HIDコマンドを受け取れるそうな。
しかしそれもな... orz


RemoteInputなるものを見つけた。
http://www.math.bme.hu/~morap/RemoteInput/
RemoteInput.kcm.binと、RemoteInput.klを置き、RemoteInputを起動したらいいようだ。

adb install RemoteInput.kcm.bin /system/usr/keychars/
adb install RemoteInput.kl /system/usr/keylayout/
adb install RemoteInput /system/bin/

やってみるかね。

$ ./adb push /Users/kinneko/Downloads/RemoteInput/RemoteInput.kcm.bin /system/usr/keychars/
failed to copy '/Users/kinneko/Downloads/RemoteInput/RemoteInput.kcm.bin' to '/system/usr/keychars//RemoteInput.kcm.bin': Read-only file system

いてて。

/dev/block/mmcblk0p5 /system ext4 ro,relatime,barrier=1,data=ordered 0 0

まぁそうだよね。
めんどくさいので、この先はパス。

monkey使う

むらかみさんにmonkeyならと教えてもらう。
なるほどtouch送れるみたい。
http://tools.oesf.biz/android-4.0.4_r1.0/xref/development/cmds/monkey/
そういう使い方もできるのね。
ランダムぶったたきプログラムってわけでもないのか。

$ ./adb forward tcp:1080 tcp:1080
$ ./adb shell monkey --port 1080
key down menu

対話コンソールに入ったけど、コマンド送ってもOKが返らない。
タッチイベントは、

touch [down|up|move] x y

でできるということだけど...
終了は^C。
"Error binding to network socket."と出るときは、まだAndroid上でcom.android.commands.monkeyが動いている。
そういう場合は、killする。


monkeyも/dev/input使うのではないかという... orz