2013年5月9日木曜日

FirefoxOSにおけるInput

PandaboardでFirefoxOSを動作させてから暫くたってしまったが、未だにマウスカーソルの表示は出来ていない。
実現するにあたり色々調べたので、下記にまとめる。

 1. kernelは対応しているのか?

どこから対応しているかを区別したかったので、まずはここから調査した。
結論から言うとgitで取れるkernelは勿論HIDに対応していた。
確認方法はPandaboardにマウスを挿して、adbで下記を打つ

 $ getevent -lp /dev/input/event* (*は環境によって違うので適宜読み替えて下さい)

これはb2gが扱えるinput deviceの情報を出力してくれるコマンドである。

【出力確認部】
 EL (0002): REL_X REL_Y REL_HWHEEL REL_WHEEL

2. Input Dispatcher探し

上記のことから、input eventを受けている箇所があるはずなので探してみる。
gecko/widget/gonk/libui/InputDispatcher.cpp とそれらしいファイルを見つけた。
理想としては、inputから上がってくるx座標、y座標の情報を得たいだけなのだが、複雑そうなので一旦断念した。

3. nsAppShell

MDNでFirefoxOSのplatformアーキテクチャを眺めていたら、
めっちゃ該当箇所が書いてあったのでログを仕込んでみた。
gecko/widget/gonk/nsAppShell.cppのnsMouseEvent()内にx, yという引数があるのでこれを出力してみた。
結果、確かにマウスの動きに合わせて座標が変化していた。(1680x1280の範囲で動いていた。)
この情報をみれば、なんとか操作できないことは無いがやはり不便。

調査した内容は以上、widgetから描画に接続するのはどうしたらいいんだろう。
その辺りがわかれば、問題は解決するはず。

0 件のコメント:

コメントを投稿