utouchとやら

Maverickで入ってきたutouch。マルチタッチとかジェスチャとかなんかそんな感じのもの。
ざっと手順。

  1. geis_init()で初期化してインスタンスゲッツ。
  2. geis_input_devices()でデバイス周りのコールバックをセット。
  3. geis_subscribe()で監視するジェスチャとコールバックをセット。
  4. geis_event_dispatch()をイベントループにぷちこんで準備完了。
  5. 終わりはgeis_finish()で賢者タイム。

んでコールバックに送られるジェスチャはTapやDrag、RotateにPinch等々。それぞれにGeisGestureAttrの配列が渡されてそっから値を取り出していく感じ。シンプルですね。

指が触れてから完全に離れるまでが1つのジェスチャと取られるわけで、最初に触れたところがstart、途中の動作がupdate、最後がfinishつうコールバックになると。わかりやすいと言えばわかりやすいですね。実装もそんなに難しくないです。

で。

感想としてはシンプルで分かりやすくていいなーと言う反面、やや面倒くさいなーと言うのもあったりとか。start/update/finishのコールバックが別々なのは何かしら意味があるのかなと思ったり。ある意味startやfinishもupdateと言えなくもないような気もします。

こいつを使ってガリガリとgtkやQt使ってプログラム書いていくのもいいのですが、正直なところツールキット上での対応があると楽だよねこれ。QtにはQGestureEventなんてクラスも既にあるわけで、普通にタッチイベントを処理できるようになると楽しそうです。既存のプログラムのタッチ対応なんかも楽だろうしね。

さて。

で、マルチタッチに対応して何が面白いのー?って根本的な話なわけですが、正直俺も当初は疑問でございました。小型デバイスならまだしも、ノート型とかでマルチタッチとか誰得…と思ってたわけです。画像ビューアとか以外に使い道思いつかない的なね。

ところが冷静に考えてみたら、ソフトウエアキーボードとかでこれその性能を発揮するんじゃないの?と思ったり。マウスのようなシングルポイントでは不可能な「キーリリース前のキープレス」を正しく認識してくれるようなものができる気がします。アニメとかでぺぺぺぺっと画面をキーボードのように叩いてる感じで。

問題は対応するデバイスを用意しないといけないとこでしょうか。開発やるにしても試すにしても。まあそれは何でも同じですが。