iphoneからmacのマウスカーソルを操作 その2

先日は眠くて終わったので、少し詳細を書いておきます。

まず、iphoneからマウスを操作するって話ですが、イメージとしては以下のアプリみたいなものです。

MagicMouseが必要なくなる?iPhoneがワイヤレスマウスになる! – ツインズパパの徒然日記

AOSCの勉強会のとき、quo.jsの話と合わせて、こんなアプリもあるけどquo.jsで作れちゃうんじゃない?、みたいな話をしていました。

というわけで、ちょっとやってみました。
すばらしいライブラリばかりで本当に楽にプログラムを作れるようになったもんですね。

作り方

たいしたことはやっていないのですが、ポイントとしては3つ。

1.Mac上でマウスを操作するプログラムを作る。
2.Mac上でiphoneからのタッチ操作を受信するサーバーを作る。
3.iphoneブラウザでタッチ操作を取得してMacに送る。

一番よくわからなかったのは、Macのアプリを作る方法です。
初のXcodeでまだどうやってビルドするとかもよくわかっていません。。。

1.Mac上でマウスを操作するプログラムを作る。

まずは、よくわからないXCodeで作ります。
プロジェクトを作って適当にCで作ります。
マウスのポインタのxの増分とyの増分をもらって、その分マウスを移動するプログラムにします。

これをビルド・・・の仕方がわからないので、Runして生成されたアプリを探してきてコピペしました。
最初はリンクエラーでてたけど、一体どこで追加するかがわからず、そこが一番時間かかった気がします・・・。

2.Mac上でiphoneからのタッチ操作を受信するサーバーを作る。

ブラウザからデータを簡単に受信と言えばWebSocketということで、tornadoを使ってwebsocketサーバーを作ります。

ws_server.py

WebSocketでデータをもらって、1で作ったアプリに渡してあげます。
らくちん。

3.iphoneブラウザでタッチ操作を取得してMacに送る。

わざわざFlaskを使ってウェブサーバーを立てていますが、tornadoで返してもよさそうです。
Flaskのサーバーはいまのところはindex.htmlを返すだけです。

http_server.py

あとは、index.htmlでWebSocketに繋いで、タッチのイベントデータを送ってあげます。

index.html

全部のソースは planset/controlmouse · GitHub で。

現在のままだと、色々とダメなので暇なときに手を加えたいですね。

・マウスの移動しかできないのでせめてクリックできるようにしたい。
・画面の比率で移動量を渡しているので縦より横の方が沢山動くのでなおしたい。
・quo.jsを使ってスワイプとかピンチ操作もできたらいいなぁ
・py2exeみたいので、tornadoサーバーをmacアプリ化するライブラリがあればいいなぁ。
 更に、起動するとタスクバー?に格納するアプリにできればいい感じ。

まぁ、作っても使わないけどね!