ルギア君の戯言

雑多な記事。

Wii リモコンを Amarok の操作に使う

一見するとすごい難しそうだが、実は非常に簡単。内容的には自分の備忘録に近い。

必要なもの

  • OS は Linux とする
  • デスクトップは KDE とする。
    • GNOME のことはちょっとわからぬ。
  • Amarok
    • ぶっちゃけた話、Amarok である必要はない。ただ、GNOME のアプリなどはショートカットのカスタマイズができないものが多くて使いにくい。
    • CWiid の wminput では Ctrl+X のような組合せキーを発行することができないので、ショートカットがカスタマイズできるソフトが是非とも欲しい。
  • Wii リモコン
  • CWiid
  • Bluetooth アダプター
    • ここでは RCBT-MX (2.0 EDR) を使った。
    • 実はこのアダプター、結構遠くまで届く。無線LAN ほどではないが。

ここで設定する内容

f:id:lugia:20111030215611p:image
1 と 2 は僕の好みである。

手順

Bluetooth アダプターを指す。
  • RCBT-MX の場合は Connect ボタンを押しながら。
wmgui で確認
$ wmgui

を起動し、指示にしたがって Wii リモコンの 1 と 2 を押してリモコンの LED を全部点滅させる (ディスカバリモード)。

点滅が消えないうちに OK を押す。

ボタンを押して GUI の対応するところが光るか確認する。

wminput の設定内容
/usr/include/linux/input.h

の中からピックアップして書けばいい。んだが、実は問題がいくつかある。例えば、

  • KEY_STOP

は Qt では認識できなかった。また、

  • KEY_PLAY

は認識できるようだが、機能しなかった。認識できるキーで、使いそうもないキーを選ぶ。認識できるかは実際に押してみないと分からないので、試行錯誤で。

手元の環境では

$ cat /etc/cwiid/wminput/amarok_ctrl 
#buttons

Wiimote.A               = KEY_PLAYPAUSE
Wiimote.B               = KEY_STOPCD
Wiimote.Up              = KEY_VOLUMEUP
Wiimote.Down    = KEY_VOLUMEDOWN
Wiimote.Left    = KEY_REWIND
Wiimote.Right   = KEY_FASTFORWARD
Wiimote.Minus   = KEY_PREVIOUSSONG
Wiimote.Plus    = KEY_NEXTSONG
Wiimote.Home    = KEY_MEDIA
Wiimote.1               = KEY_PROG1
Wiimote.2               = KEY_PROG2

Nunchuk.C               = BTN_LEFT
Nunchuk.Z               = BTN_RIGHT

Classic.Up              = KEY_UP
Classic.Down    = KEY_DOWN
Classic.Left    = KEY_LEFT
Classic.Right   = KEY_RIGHT
Classic.Minus   = KEY_BACK
Classic.Plus    = KEY_FORWARD
Classic.Home    = KEY_HOME
Classic.A               = BTN_LEFT
Classic.B               = BTN_RIGHT
#Classic.X              = 
#Classic.Y              = 
#Classic.ZL             = 
#Classic.ZR             = 
#Classic.L              = 
#Classic.R              = 

とした。ヌンチャクやクラシックコントローラを使えば、もっといっぱい機能を割り当てられる。

開始
# wminput -c /etc/cwiid/wminput/amarok_ctrl

指示どおり、1 と 2 を同時に押してディスカバリモードにしておけば、Ready! が表示されて使えるようになる。

root で動かすのが嫌ならば、

$ cat /lib/udev/rules.d/55-udev-wminput.rules 
KERNEL="uinput" MODE="664" GROUP="wminput"

を作り、自分を wminput グループに追加する。

ショートカットの設定

これはいつもどおり。Amarok のショートカットの設定を開いて、グローバルのカスタムのところに目的の Wii リモコンのボタンをポンポンと押していけば良いだけ。

f:id:lugia:20111030223346p:image
ボタンを押した時にちゃんとした機能が実行されれば成功。ちなみに、Qt では KEY_○○ の○○とは全く違う名前のキーであることもある。

KDE 環境、ということで音量の調節は Amarok ではなく KMix へ設定した。

TROUBLE SHOOTING

/usr/include/linux/input.h が無い

kernel-headers に入っています。