kobo touchをWebブラウザからリモート操作

一つ前の記事(kobo touchのスクリーンショットをHTTP経由で取得 - Okiraku Programming)に引き続き、Webブラウザからkoboをリモート操作できるようにしてみました。(正確には画面をタップできるようにしただけ)

セットアップ方法は一つ前の記事と全く同様です。
inetdを有効化し、GitHub/NeoCat/kobo-remoteからkobo-remoteのバイナリをダウンロードして、ftpkobo内の適当な場所(/usr/bin/など)におきます。
そして、/etc/inetd.conf を編集して80番ポートなどにアクセスがあったらkobo-remoteを起動するように設定します。

# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
21      stream  tcp     nowait  root    /bin/busybox ftpd -w -S /
23      stream  tcp     nowait  root    /bin/busybox telnetd -i
80      stream  tcp     nowait  root    /usr/bin/kobo-remote


あとはブラウザを起動するなどして無線LAN接続を有効にし、WebブラウザでkoboIPアドレスにアクセスすればOKです。


スクリーンキャプチャが表示されるので、適当な場所をクリックすると、その場所をタップしたというイベントが注入されます。画面は1秒後に自動更新されますが、koboの再描画が追いついていない場合はRefreshをクリックして手動で画面を再更新する必要があります。

ホームボタンを押す機能はありません(←ただの手抜き)ので、本を開く場合は左上の検索を使います(この手順でないと、省電力機能で無線LANがOFFになってしまい、途中でリモート操作不能になります。ブラウザ起動→検索だとこれが発生しない模様)。


というわけであんまり実用性はないのですが、とりま、こんなこともできるということで。iPadからアクセスすればkobo for iPadに(?)。
なお、何のセキュリティもかかっていないので、これを入れたままパブリックネットワークに接続すると、他人が勝手に購入ボタンを押しまくるといったことができてしまいますので注意して下さい、念のため(--;


ちなみに、タップ時にやっていることは、座標をHTTPでkobo上のサーバに送り、サーバ側では /dev/input/event1 (タッチパネルの入力デバイス) を開いて、イベント(struct input_event)を注入(write)しているだけです。詳しくはソースを見て下さい。


補足:GitHubにある tap-screen を引数なしで起動すると、イベントを眺めることができます。X,Yが90°回転した座標系になっている点に注意が必要。見てると感圧イベントも飛んでますが、タッチしている間100と101を交互に行き来するだけでダミーのようです。また /dev/input/event0 はホームボタンです。