2009/12/30

[Nokia N810] wiiリモコンをつないでみる (wiicontrol で)

まえふり
某ショップでは「N810はWiiが遊べる」などと例によった表記をして先立つものをふんだくっていますが、
(それがWiiリモコンをBluetooth HIDデバイスとして使うって意味なら)実際のところ、とても簡単です。
maemo向けには
  1. cwiid (C)
  2. wiicontrol (python)
という二つのソフトウェアがあります。

cwiidは C製で高機能。
  • Wiimoteをマウスとして使えたり
  • IR、加速度センサのデータをみたり
いろいろできますが、パッケージとGUIがないので導入がちょっと面倒です。追記:extras-develにあるようです

wiicontrolは python製でシンプルながら、
  • 柔軟なキーコンフィグ
  • わかりやすいGUI
  • maemo向けのキーコンフィグ
を備えます。
cwiidにはPC/linux向けの記事が既にありますから、
今回はwiicontrolに絞って紹介したいと思います。

早速インストール
1. 'apt-get install wiicontrol'なりAppManagerなりでwiicontrolをインストール
2. [アプリケーションメニュー] - [Extras] - [Wiicontrol] で起動。(Bluetoothは自動でOnになります)
wayv
これは変造版wiicontrolです

3 .すわ鎌倉と、wiiremoteの1と2を同時に押すか、電池近くの赤ボタンを押します。
4. 問題なく接続されれば、各モード選択にしたがってキーに機能が割り当てられます。

自分でキーコンフィグ
デフォルトの独特のキー配置(Bボタンは修飾キーです。気付いた?)を確認するためにも、
変更するためにも、pythonらしく、漢らしく、スクリプトをそのまま編集します。
とりあえず、バックアップをとっときましょう。(いざとなればapt-get --reinstall install wiicontrol)
$cp /usr/bin/wiicontrol /usr/bin/wiicontrol.backup
後は好きなエディタで/usr/bin/wiicontrolを編集するわけですが、
読んでみると#Home button is broken . Do not use it なんてコメントがあります。
これは/usr/bin/Wiimote.pyの213~215行目部分を
#        if newmask & buttonmap['H'] and not self.buttonmask & buttonmap['H']:
#            print "Re-enabling IR"
#            self.enable_IR()
こんなかんじにコメントアウトすることで回避できたりしますので、まずやっつけておきましょう。
さて、viだのemacsだのnanoだのありますが、leafpadもなかなかいいので
$sudo leafpad /usr/bin/wiicontrol
wayv

mapping_p, mapping_lはそれぞれPortrait/Landscape Mode時のキーマップです。
mapping_bはBボタンを押している間のキーマップですね。
モード別に各ボタンごとの機能を記述します。
機能には
  • a (+ Up/Down/Left/Right : D-padの各キー)
  • k(+キーの名前 : アルファベットやF1などのキー)
  • m (+ x座標 + y座標 : カーソルの移動)
  • b (+ 1/2/3 : 右/左/中ボタンクリック)
  • t (+ x座標 + y座標 : 指定座標をタップ)
  • s (+ 秒 : 指定秒スリープ)
  • False (機能割り当て無し)
があり、たとえば Landscape(横持ち)時のU (Up)キーで言えば"a Left"つまりD-padの左キーが割り当てられています。
300行目あたりの分岐を弄れば新たな機能を追加することも可能です。
そこらへんは次回。

蛇足
加速度センサの情報をリアルタイムにプロットするpyaxelwiiなんてのもあります。
それから全然関係ない話。そろそろPowerVRドライバ公開されるらしいです。年内とか。訂正。年内には出ないそうです。

0 件のコメント:

コメントを投稿