ゲームアプリケーションでジョイスティックを使用する方法について

パピーリナックスを初めて使う方もご利用ください

モデレータ: 暇人, YoN, nyu

返信する
nishi
記事: 5
登録日時: 10/01/17(日) 17:47

ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by nishi »

SideWinderJoystickを使用したいのですが
http://koinunoesa.blog46.fc2.com/blog-entry-7.html
こちらのサイトを参考にxe.petとjoystick-1.2.15.petをインストールしましたが、その後の設定方法がわかりません
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by みのむし »

>こちらのサイトを参考にxe.petとjoystick-1.2.15.petをインストールしましたが、その後の設定方法がわかりません

私はSideWinderJoystickも持ち合わせていませんが、
その後の設定方法ヒントは知っています。
なお、PCの情報をできる限り明記してください。

ヒント
端末を開いて

コード: 全て選択

# cd /root
# ls -a
...
# cd .packages
# ls
...
# cat xe.files
...
# cat joystick-1.2.15.files
...
ここにxe.filesとjoystick-1.2.15.filesがあると思います。
(*.filesはPETパッケージのインストール情報)
そのファイルの内容を確認してください。
もし、表示内容が長ければcatの代わりにlessをお使いください。
若しくは、テキストエディタ geany でファイルを開いて確認してください。
そこにヒントが有ると思います。
最後に編集したユーザー みのむし [ 10/02/01(月) 05:29 ], 累計 1 回
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
nishi
記事: 5
登録日時: 10/01/17(日) 17:47

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by nishi »

>なお、PCの情報をできる限り明記してください。
後手後手で済みません。ジョイスティック周辺とPCスペックですが以下のような構成です
Kernel: Linux 2.6.21.7 (i686)
Distribution: Puppy Linux 0.41 (ハードディスクへFUllインストール)
Processor: Celeron (Coppermine)565.30MHz
Memory: 319804 kB
chipset:Intel 810E Chipset

デスクトップPC---USBHUB---SideWinder Joystick
|__NEC USB Keyboard----ELECOM mouse

圧縮されたマニュアル?とHTMLがありました。英語でコマンドの使用方、概要が書いてあるようでしたので、シーモンキーでHTMLを開いて、メニューのツールからグーグル翻訳に書けようとしたら”このURLは無効です。”とエラーが...それならグーグル使ってコマンド名で検索したほうがいいかなと思い色々見てみました。で、上手くいったので(ほぼコピペですが)以下はレビューになります

こちらのサイト http://u-mex.plala.jp/blogn/?e=51 を参考に、/dev/js0を削除?、続いて/dev/input/js0も削除?して、# mknod input/js0 c 13 0と入力して新しく/dev/input/js0を作成?、このjs0上で左クリックして2リンクを作成”を選び入力欄の dev/input/js0 をdev/js0に書き直してから”シンボリックリンク”をクリック

(すみませんこのあたり、サイトのとおりにやるとエラーが出たのでコンソールから色々やったりJWMからもちょこちょこ操作していたので自分でもどういう操作をしたのかよくわかりません)

# modprobe xpad
ここの入力を下記に変更して
# modprobe sidewinder
として入力。
なんでこう書き換えたのかと言うと、/lib/modules/2.6.21.7/kernel/drivers/input/joystick/に sidewinder.ko という気になるファイルがあったのでそのファイル名を指定してみました

すると特にエラーも出ずに#が表示されたので、上記サイトと同じようにつないであるジョイスティックを適当に操作してから
cat /dev/js0
文字と言うか記号の羅列が表示されました
でこのまま闇雲にキーボードを打つと#が表示されないまま画面に文字が表示されていくので...恐くなって Ctrlキーとcキーの同時押しで 回避
無事#が表示されたので
jscal -c /dev/js0
と同じように入力。いきなりずらずら出力されます

Joystick has 3 axes and 8 buttons.
Correction for axis 0 is none (raw), precision is 0.
Correction for axis 1 is none (raw), precision is 0.
Correction for axis 2 is none (raw), precision is 0.

Calibrating precision: wait and don't touch the joystick.
Done. Precision is:
Axis: 0: 0
Axis: 1: 0
Axis: 2: 0

こう表示されたのでサイトと同じように
Move axis 0 to minimum position and push any button.(スティックをめいいっぱい左に倒しながらボタンを押す)
Hold ... OK.
Move axis 0 to center position and push any button.(スティックを中立にしてボタンを押す)
Hold ... OK.
Move axis 0 to maximum position and push any button.(スティックをめいいっぱい右に倒しながらボタンを押す)
Hold ... OK.
Move axis 1 to minimum position and push any button.(スティックをめいいっぱい奥に倒しながらボタンを押す)
Hold ... OK.
Move axis 1 to center position and push any button.(スティックを中立にしてボタンを押す)
Hold ... OK.
Move axis 1 to maximum position and push any button.(スティックをめいいっぱい手前に引きながらボタンを押す)
Hold ... OK.
Move axis 2 to minimum position and push any button.(スロットルレバー?を一番上にあげてからボタンを押す)
Hold ... OK.
Move axis 2 to center position and push any button.(スロットルレバー?を真中だいたい(127くらいにあわせて)ボタンを押す)
Hold ... OK.
Move axis 2 to maximum position and push any button.(スロットルレバー?を一番下に下げてからボタンを押す)
Hold ... OK.

Setting correction to:
Correction for axis 0: broken line, precision: 0.
Coeficients: 127, 127, 4227201, 4194176
Correction for axis 1: broken line, precision: 0.
Coeficients: 127, 127, 4227201, 4194176
Correction for axis 2: broken line, precision: 0.
Coeficients: 138, 138, 3890250, 4588500

#

以上でいいのかな、というわけで、3Dゲームを起動してみると今までマウスが割り当てられていた操作にジョイスティックが使えるようになっていました
長くなってすみません
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by みのむし »

nishiさん
 うまく行ったようでおめでとうございました。

>Distribution: Puppy Linux 0.41 (ハードディスクへFUllインストール)

0.41というバージョンは間違いでは :?:

># modprobe sidewinder

これが正解でした。

>以上でいいのかな、というわけで、3Dゲームを起動してみると今までマウスが割り当てられていた操作にジョイスティックが使えるようになっていました

OK

>長くなってすみません

いえいえ。自慢ではありませんが、私の書き込みは何倍も長いです。
より、詳細に書こうとしてついつい長くなってしまいます(時間を持て余しているし、チェック、修正を重ねていると何時の間にか長くなっています)。

nishiさんは、色々調べて実行されたようですが(Linuxの世界では自助努力が大切です)、
頭の中を整理するための一端にでもなれば...と私の知識をお教えします。
こういう私もPuppy歴は1年位ですが、パソコン歴、Linux歴は結構長いです。

デバイスの認識:
 自動認識の仕組みについてはあまりよく分かりませんが、
最近のLinuxディストリビューションでは udev というプログラムが担当しています。
設定ファイルが /etc/udevディレクトリ下に有ります。
 手動認識の仕組みについて自分では理解しているつもりですが、
誰からも直接教えてもらったわけではなく、経験から自然と分かった事柄です。
なので、もしかすると間違っているかもしれませんが(その可能性は低い)、
何故なら、私の方法で実際にデバイスが認識できるからです。

手動認識の仕組み

デバイスに適合した、デバイスドライバをロードする
 ※ここが非常に重要です。
  デバイスドライバとはカーネルデバイスドライバモジュール(これをデバイスドライバあるいはドライバと略称する)の事。
  カーネルに内臓されていない場合はソースを入手して「# make&&make install」を実行する。
  デバイスドライバをロードするとは具体的には「# modprobe hogehoge」を実行する事
  なお、hogehogeは .koを除いたデバイスドライバ名です。

コード: 全て選択

# depmod -a
(↑昔のLinuxディストリビューションでは必要でした。/etc/modprobe.conf に設定行を書き込み、depmodを実行します。
Puppyでは必要なのかどうか分かりません)
# modprobe hogehoge
(※hogehogeは .koを除いたデバイスドライバ名です。
Linuxでは正常に実行された場合は何も表示されない事が多く、エラーが出た場合は必ずエラーメッセージを表示します)
# dmesg|tail
(↑デバイスドライバ名の確認)
エラーが出ないで正常に実行された場合のみ、次へ進む事が出来ます。

・デバイスファイルが作成されてデバイスファイル名が与えられます。
  ここまで正常に出来た場合のみ、「デバイスが認識された」と言います。
 デバイスファイル名が与えられていない場合は、まだデバイスは認識されていません。
 (↑こういった情況が結構有ります。原因はデバイスドライバがデバイスに適合していない。
  デバイスドライバがデバイスに対応していない等々)

最近のLinuxディストリビューションではLinuxシステム起動時は必要最小限のデバイスファイルしか有りません。
デバイスが認識されると、その都度デバイスファイルが作成されます。

 必要な知識

端末(ターミナルあるいはコンソールとも呼ばれる)
テキストエディタ vi(昔のMS-DOSのコンソール上で使えるもの)
 Puppyのデスクトップ上で行う場合テキストエディタ geany が使用出来る。
デバイスドライバ関係のコマンド群
その他のLinuxコマンド cat, cd, dmesg, gzip, ls, tail, tar, ...

デバイスドライバがデバイスに適合しているか :?:

 ・デバイスのVendID、ProdIDを調べる。

コード: 全て選択

#lspci
(デバイスのVendID、ProdIDを調べる)
 ・デバイスのVendID、ProdIDをもとにしてデバイスドライバを確認する。
   ここではデバイスドライバをsidewinderと仮定します。

コード: 全て選択

# cd /lib/modules/$(uname -r)/kernel
# find -name 'sidewinder.ko'
./drivers/input/joystick/sidewinder.ko
# strings ./drivers/input/joystick/sidewinder.ko|grep alias
(ここに、先程調べたデバイスのVendID、ProdIDが出ていればOK)
もし、デバイスのVendID、ProdIDが出ていてデバイスが認識されない場合は
他のデバイスドライバが邪魔をしています。
それらのデバイスドライバはrmmodしてください。

コード: 全て選択

# lsmod
...
# lsmod|grep jama
(↑jamaは邪魔をしている、.koを除いたデバイスドライバ名と仮定しますので、
ご自分の環境に合わせて適宜読み替えてください)
VendIDとProdIDについて:
 デバイスには認識のためにVendIDとProdIDが割り当てられています。

コード: 全て選択

# lspci
の実行結果は、VendID:ProdID のように表示されています。
VendIDとProdIDはそれぞれ4桁の数値で表され、それを':'で結合した組み合わせで表示されます。
Puppyのデフォルトのlspciの実行結果ではどれが該当するデバイスのVendID、ProdIDか分からないので、
以下のPETパッケージをインストールして入れ替えてください。

URL: http://www.mland.jp/pub/Linux/Puppy/use ... /pciutils/
pciutils-2.2.3-i486.pet
(↑このPETパッケージにlspciが入っています)
※インストールはメモリを632KB消費します。
nishiさんの場合はFullインストールなので問題無いですね。
最後に編集したユーザー みのむし [ 10/02/01(月) 05:23 ], 累計 4 回
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
肉球
記事: 209
登録日時: 09/02/02(月) 13:31
お住まい: 九州の某所
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by 肉球 »

この件については
私からもアドバイスの
義務がありますね :mrgreen:

手っ取り早く乱暴な方法
(nishiさんの環境の場合)

/etc/rc.d/rc.localに以下を記入。

modprobe joydev
modprobe sidewinder

PC起動時にゲームパッドが認識されます。

joystick-1.2.15.petに収録している
jstestは単なるゲームパッドの動作テスターですので
ゲームパッドのキーが認識しているか確認できます。
nishi さんが書きました:デスクトップPC---USBHUB---SideWinder Joystick
SideWinderはゲームポート用と勘違いしてました :oops:

パピーの場合
市販されているUSBゲームパッドは
# mknod /dev/input/js0 c 13 0
1回入力すればゲームパッド認識は持続される様です。


個人的には使用されないパラレルポートを
活用できる
(最近のPCは無くなりつつある...orz)
DirectPadProの使用をオススメです。
入手は第三科学研究所で購入できます。
最後に編集したユーザー 肉球 [ 10/01/31(日) 17:43 ], 累計 1 回
Puppylinux4.1.2.1 FMV-BIBLO NE7/75 Celeron750Mhz 256MB   
Puppylinux4.3.1std FMV-BIBLO LOOX T93C/W 384MB

チープなマシンに歪んだこだわり
肉球
記事: 209
登録日時: 09/02/02(月) 13:31
お住まい: 九州の某所
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by 肉球 »

追記:
これだけでよさげ

nishiさんのケース
/etc/rc.d/rc.localに以下を記入。

modprobe joypad
modprobe sidewinder

市販されているUSBゲームパッドの場合

コントローラ1個目

コード: 全て選択

# mknod /dev/input/js0 c 13 0
コントローラ2個目

コード: 全て選択

# mknod /dev/input/js1 c 13 1
ゲームパッドの動作確認
joystick-1.2.15.petをインストールし、
コントローラ1個目の確認

コード: 全て選択

# jstest /dev/input/js0
コントローラ2個目の確認

コード: 全て選択

# jstest /dev/input/js1
ちなみに
パピーはゲームパッド2個まで認識できます。
Puppylinux4.1.2.1 FMV-BIBLO NE7/75 Celeron750Mhz 256MB   
Puppylinux4.3.1std FMV-BIBLO LOOX T93C/W 384MB

チープなマシンに歪んだこだわり
nishi
記事: 5
登録日時: 10/01/17(日) 17:47

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by nishi »

>0.41というバージョンは間違いでは :?:
メニューボタンのシステムの項にある”Hardinfoハードウェアの情報”で調べるとやっぱりそのように表示されています。インストールに利用したのはPuppy-4.1.2.1-retro-JP.isoでしたが



で、再起動させるとまた設定が必要になってしまいました。再び以下を入力すると再び使える状態になります、、、

コード: 全て選択

# cd /dev
# rmmod sidewinder
# rm js0
# cd input
# rm js0
# mknod s0 c 13 0
# cd ..
# pwd
/dev
# ln -s input/js0 js0
# modprobe usbcore
# modprobe uchi
FATAL: Module uchi not found.
# modprobe hid
FATAL: Module hid not found.
# modprobe joydev
# modprobe sidewinder
# cat /dev/js0
ʁʁʁʁʁʁʁʁʀʀʀ^[[?1;2cʤʤtT
# jscal -c /dev/js0
Joystick has 3 axes and 8 buttons.
Correction for axis 0 is broken line, precision is 0.
Coeficients are: 112, 142, 5534751, 5534751
Correction for axis 1 is broken line, precision is 0.
Coeficients are: 112, 142, 5534751, 5534751
Correction for axis 2 is broken line, precision is 0.
Coeficients are: 112, 142, 5534751, 5534751

Calibrating precision: wait and don't touch the joystick.
Done. Precision is:                                             
Axis: 0:     0
Axis: 1:     0
Axis: 2:     0

Move axis 0 to minimum position and push any button.
Hold ... OK.                                                                  
Move axis 0 to center position and push any button.
Hold ... OK.                                                                  
Move axis 0 to maximum position and push any button.
Hold ... OK.                                                                  
Move axis 1 to minimum position and push any button.
Hold ... OK.                                                                  
Move axis 1 to center position and push any button.
Hold ... OK.                                                                  
Move axis 1 to maximum position and push any button.
Hold ... OK.                                                                  
Move axis 2 to minimum position and push any button.
Hold ... OK.                                                                  
Move axis 2 to center position and push any button.
Hold ... OK.                                                                  
Move axis 2 to maximum position and push any button.
Hold ... OK.                                                                  

Setting correction to:
Correction for axis 0: broken line, precision: 0.
Coeficients: 127, 127, 4227201, 4194176
Correction for axis 1: broken line, precision: 0.
Coeficients: 127, 127, 4227201, 4194176
Correction for axis 2: broken line, precision: 0.
Coeficients: 127, 127, 4227201, 4194176

# 
どうしたら自動で認識、調整できるのかと、root/.profileをいじったりしていましたが肉球さんの書かれたとおり /etc/rc.d/rc.localに
modprobe joydev
modprobe xpad
modprobe modprobe sidewinder
の3行を追加して書き込んでみると、再起動時にたしかに認識され, すぐにゲームで使用することができました

う〜ん、自動認識の仕組み、 modprobe modprobe siedwinderのところはどうなっているのでしょう。 他にもrc.localや.profileの役割、mknod のときの ファイル名の後ろに付ける記号や数字の意図もさっぱりです でも、とりあえず一息付けました、ありがとうございました
肉球
記事: 209
登録日時: 09/02/02(月) 13:31
お住まい: 九州の某所
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by 肉球 »

modprobe modprobe sidewinder

間違えた...ごめんなさい :cry:

modprobe sidewinder

です。(赤っ恥 :mrgreen: )
Puppylinux4.1.2.1 FMV-BIBLO NE7/75 Celeron750Mhz 256MB   
Puppylinux4.3.1std FMV-BIBLO LOOX T93C/W 384MB

チープなマシンに歪んだこだわり
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by みのむし »

>0.41というバージョンは間違いでは :?:
メニューボタンのシステムの項にある”Hardinfoハードウェアの情報”で調べるとやっぱりそのように表示されています。インストールに利用したのはPuppy-4.1.2.1-retro-JP.isoでしたが

nishiさん
 4.3.1JP上で、メニュー|システム|Hardinfoハードウェアの情報|Summary で調べると、
Puppy Linux 0.43 と出ていました。という事は、0.41でいいのかな?(私は 4.1.2、4.3.1と出て欲しい)

 なお、肉球さんのアドバイスもあって、すべてうまく行ったようで何よりでした。
最後にこういう結果が聞けて嬉しいです :D
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
肉球
記事: 209
登録日時: 09/02/02(月) 13:31
お住まい: 九州の某所
連絡する:

DirectPadProでの設定方法

投稿記事 by 肉球 »

もし第三科学研究所で購入された場合の設定内容
(要 パラレルポート)

/etc/rc.d/rc.localに下記の内容を入力。
modprobe joydev
modprobe gamecon map=0,x

x=0~8
0=none
1=SNES pad
2=NES pad
4=MultiSystem 1-Button joystick
5=MultiSystem 2-Button joystick
6=N64 pad
7=PS digital pad
8=PS analog pad

PS analog padで設定の場合

コード: 全て選択

# modprobe joydev
# modprobe gamecon map=0,8
となります。

joystick-1.2.15.petは初めて作成した
petファイルですので
思い入れがありますね :D
みのむしさんには
お世話になりました :mrgreen:

あと、xe.petよりは
mednafen-0.8.C-i386.petと
mednafenfe-0.1.6_i686.petの
組み合わせがオススメです。

詳しくはオイラのブログにて :wink:
野良犬野郎の肉球
(一匹狼ではなく中途半端 :mrgreen: )
Puppylinux4.1.2.1 FMV-BIBLO NE7/75 Celeron750Mhz 256MB   
Puppylinux4.3.1std FMV-BIBLO LOOX T93C/W 384MB

チープなマシンに歪んだこだわり
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: ゲームアプリケーションでジョイスティックを使用する方法について

投稿記事 by みのむし »

>joystick-1.2.15.petは初めて作成した
>petファイルですので

肉球さんが作成されたものでしたか...
そういえば、何処かで見たような
私は、ジョイスティックを持っていないもので...
私がシャシャリ出てくる事も無かったですね ぺこ <(_ _)>

顔文字図書館
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
返信する