[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:15116] [HowTo] use game port joystick on ALSA 0.9.x



山口@金沢市 です。

# 北陸製菓は家の近くにあって、近くを通るとビスケットを
# 焼いたような甘い匂いがいつも漂っています

私はずっとはまっていたんですが、ALSA の 0.9 系でゲーム
ポートのジョイスティックが使えるように設定できたので、
報告させていただきます。
# この辺ドキュメントがほとんどなくて苦労しました

解決の足がかりとなったのは alsa-user ML のこの記事です。

  http://www.geocrawler.com/lists/3/SourceForge/12350/25/9153136/

これによると、サウンドカードによって使うモジュールが若干
違うようで、いかにもはまりそうな状態です。

ではさっそく本題に入ります。
まず、該当マシンのハードおよびソフトは次のようになっています。

  ハード
    * サウンドカード Labway Xwave 6000(初期型)
      YMF744B チップを積んだ普通のサウンドカード。ALSA からは ymfpci
      で問題なく認識される。もちろんゲームポートつき。
    * マザーボード MSI K7T Pro(MS-6330) 上のサウンドチップ
      VIA VT82C686 チップのサウンド機能。ALSA からは via686 で
      認識される。ゲームポートつきだが、こちらは BIOS で無効に
      してある。
    * ジョイスティック Microsoft Sidewinder Game Pad(新型)
      後発の「デジタル信号」を出すタイプ。カーネルからは sidewinder で
      認識するはずなのだが...
      Xwave 6000 側のゲームポートに接続。
  ソフト
    * カーネル 2.4.18
      ゲームポート、ジョイスティック関係は全てモジュールとして
      コンパイルしてあります。
    * ALSA 0.9.0rc3
      alsa-driver, alsa-lib, alsa-utils をインストール。alsa-driver
      はそのままだとリンクでこけるので include/linux/isapnp.h を
      削除した(パッケージングミスっぽい)。
    * joystick(ruby) CVS 2002/05/19
      :pserver:anonymous@cvs1.sourceforge.net:/cvsroot/linuxconsole
      から取得。ジョイスティックの動作テストができる。バージョンは
      2.1.0 と表示される。前のリリースバージョン 1.2.15 だと 2.4 系で
      使えなかったような気がする。

設定ですが、まずカーネルと ALSA を使える状態にします。起動時/終了時
用のスクリプトもあると便利なので入れておきます。
# 入れない人は alsactl [store|restore] で代用してください

ALSA をロードします。スクリプト(rc.alsasound とします)を使って、

  # /etc/rc.d/rc.alsasound start

などとすれば ALSA の各モジュールがロードされます。
# その前に /etc/modules.conf を設定しておいてください

次に、ALSA モジュールをアンロードします。スクリプトを使って、

  # /etc/rc.d/rc.alsasound stop

などとします。または、

  # alsactl store

を実行します。すると、ボリュームなどの設定ファイル /etc/asound.state
ができますので、これを編集します。

/etc/asound.state の中に、次のような部分があります。

-----
        control.52 {
                comment.access 'read write'
                comment.type BOOLEAN
                iface CARD
                name Joystick
                value false
        }
-----

これがゲームポート上のジョイスティックを有効にするかどうかの
設定なので、value を true に変更します。

近くにゲームポートのアドレス指定の設定がある場合はそれも設定
します。私の場合はこれはデフォルトのままにしました。

設定が終わったら、この設定で再び ALSA をロードします。

  # /etc/rc.d/rc.alsasound start

または、

  # alsactl restore

とします。

あとは、冒頭の alsa-user ML の記事に従って、

  # /sbin/modprobe ns558
  # /sbin/modprobe sidewinder
  # /sbin/modprobe joydev

とすると、/dev/input/js0 が出現しました(== 使えるようになった)。
# devfs なので「出現」します
# devfs じゃない場合は /dev/js0 などをあらかじめ mknod しておいて
# ください

一応ジョイスティックのテストプログラム jstest を走らせる、

  % jstest /dev/input/js0

と、2 軸 10 ボタンのゲームパッドとして認識されました。

あとは、起動時のスクリプト中に modprobe の部分を登録して、起動時に
ジョイスティックが使えるようにしました。

...という感じです。わかりにくいところなどありましたら突っ込んで
いただければ幸いです。
-- 
山口 真悟 (YAMAGUCHI Shingo)
shingo-y@spacelan.ne.jp
shingo@kip.iis.toyama-u.ac.jp


[検索ページ] [メール一覧]
Plamo ML 公開システム