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ドライバ公開されるらしいです。年内とか。訂正。年内には出ないそうです。

2009/12/24

[Nokia N810] CUI的RSSリーダー Snownews ( + 無理サ*タシューティングゲー sunta hunta !)

デフォルトのRSSリーダーはホームスクリーンのウィジェットと連携できたり、裏で自動更新してくれたりと高機能ですが、
サクッと最新記事をみるには向いてません。
dilloで見れば画像いっぱいのengadgetやgigazineもサクサクですが、こちらもヘッドラインを追うのが面倒。
そこで、cuiむけncursesなRSSリーダーsnownewsをmakeしてみました。最近ターミナル生活が豊かです。

wayv

ファイル: snownews_1.5.12-maemo1_armel.deb

make: 普通に./configure --prefix=/usr;make, ただしMakefileを修正してlibncurseswをリンクしてあります。

インストール: ルート権限でdpkg -i , libncursesw5が必要です。

使いかた:
  • hキーでヘルプが出ます。
  • aキーで新規フィード追加。
  • '~/.snownews/browser'で外部ブラウザを指定できます。(dillo.ja %u > /dev/null & としてみました)
  • 'LC_ALL=ja_JP.UTF-8 snownews'で日本語UIになります。
  • 'snownews -u' で起動すると起動直後に更新してくれます。
  • 'LC_ALL=ja_JP.euc-jp snownews'でeuc-jpな日も安心。

  • おまけ:
    'touch ~/.snownews/santa_hunta' すると、ルドルフごとサンタを撃ち落とすサンタさんに探査子(プローブ)をつける *1 愉快無理ゲー sunta hunta ! が遊べるようになります。
    wayv
    レベル10くらいからニュータイプ育成ゲームに

    *1 準偏光位相転移装置をつかって世界中に移動するサンタさん達をサポートする、簡単なお仕事です。(背景設定 : 花形職業であるサンタになれず、今ではしがないシューターの父デイヴィッド。 崩壊寸前の家族におこった小さな、クリスマスの奇跡。)

    2009/12/23

    [Nokia N810] Made in MADDE

    なにやら面白げなツールがでてきました。http://wiki.maemo.org/MADDE)(TMO:http://talk.maemo.org/showthread.php?t=38075)
    いちいち他に仮想マシンいれたりしなくてもLinux/Windows/OSXで動くってのは便利ですね。
    内部的にはqemuだったりするのだろうか。
    いまのところセルフコンパイラー道まっしぐらですが、ちゃんとリリースされたらMADDEに乗り換えたいなあ。

    さて、TMOにはこんなスレもありますが、N8x0向けMBXドライバもクリスマスにやってくると信じて待ってます。
    雨は夜更け過ぎに、雪へと変わるだろう♪ ドライバがこないどころかきっとJA$RACが来るぜ。

    2009/12/05

    [Nokia N810] キーストロークランチャーdmenu(ついでにmaemodmenuhelper)

    キーボードとして使えれば、
    Dvorakだろうがレーザー投影式キーボードだろうが防水ペラペラキーボードだろうが
    NetWalkerのキーボードだろうが有機ELキートップのいろいろな意味でとてもヘビーなキーボードだろうが
    はたまた
    コレ
    だろうがなんでもいいというよく訓練されたフリークスは、N810においてすらキーストロークランチャーを使いたいと思うはずだ。
    というわけで、
    WindowsはLaunchy(最近でたlinuxポートはQt4...)、OSXはQuicksilverなんかと肩を並べる
    linuxむけキーストロークランチャーdmenuをmakeして、
    お手製デーモンといっしょにパッケージングしてみました。(まあデーモンといっても食玩のお菓子みたいなものです。)

    あ、実のところ、普通のdmenuではなくてdmenu-vxhd(vertical+xft+history+dockapp)という機能強化版です。

    ファイル :
    インストール : ルート権限で"dpkg -i"
    アンインストール : ルート権限で"dpkg -r maemodmenuhelper"
    使い方 :
    ホーム画面でキーボードが開いている時にスワップキー(Esc)を押すとメニューが出ます。
    • メニューの見た目(色、フォント、並びの縦横,位置など)を変更するには
      /usr/bin/dmenu_maemo_main.sh内 $DMENU_OPTSを編集。
      dmenuのmanはコチラ
    • Dilloを使っている人は
    • /usr/bin/dmenu_maemo_main.sh内
      #if test `echo $APPName | grep -c g:` -gt 0
      #then
      #dillo.maemo "http://www.google.com/search?q=`echo $APPName | cut -d: -f 2- | tr ' ' \+`&sa=2" &
      #exit
      #fi
      をコメントアウトすると、メニューで"g:キーワード"としたとき、googleの検索結果がDilloで開きます。
    • メニューに独自コマンドを追加
    • /usr/share/dmenu-helper/list以下に、名前と実行コマンドを書き込んだテキストファイルを置きます。 サンプルとして入っているtop.desktopならこんな感じ。
      Name=top
      Exec=osso-xterm -e top

    スクリーンショット :

    小文字でもちゃんとヒットします

    echoテーマで