FrontPage

クイック設定ガイド

 

 
 

[Joystick Information] の確認

 

Driver: 行の確認

 

Joystick #0: 行の確認

 
 

ジョイスティック定義ファイルの調査

 
 

$FG_ROOT/joysticks.xmlの修正

手順1.2でJoystick #0: が文字化けしていた場合:

手順1.2でJoystick #0: が"Saitek X45 Flight Controller"のように正常に表示されていた場合:

 
 

ジョイスティック定義ファイルの作成

さて、先ほど「残念ですが」と言いましたが、「FlightGearの内部構造に触れる」チャンスでもあります。 実は、翻訳文書の「訳)特徴」の、「内部プロパティは公開されています」 で出てきた「プロパティツリー」の値を書き換えることで飛行機を操作しています。 少々面倒に感じるかもしれませんが、ここを理解しておくと後々ジョイスティックの設定のカスタマイズをするときが楽です。

 

設定の前に

Windows版では、FlightGearのインストール先を"C:\Program Files\FlightGear"に。 MacOSX版では、"/Applications"にインストールしていると仮定します。もし違う場所にインストールしている場合は読み替えてください。

 

js_demoの入手方法

本来ならjs_demoはFlightGearに同梱されている(べき)なのですが、Windows版、MacOSX版のFlightGear 1.9.0以降では省略されています。

Windowsの場合

http://flightgear.jpn.org/modules/d3downloads/index.php?page=visit&cid=6&lid=20をダウンロードして、 C:\Program Files\FlightGear\binフォルダに保存してください。

MacOSXの場合

http://flightgear.jpn.org/modules/d3downloads/index.php?page=visit&cid=6&lid=23をダウンロードして、 解凍してできた js_demo を /Applications/FlightGear.app/Contents/Resourcesフォルダに保存してください。

 

js_demoの起動

ここでは、js_demoの起動方法だけを書きます。出力結果の読み方は後で説明します。

Windowsの場合

先ほど入手したjs_demoをコマンドプロンプトから起動してください。

c:\
cd "\Program Files\FlightGear\bin"
js_demo.exe

MacOSXの場合

先ほど入手したjs_demoをダブルクリックで、またはターミナルから起動してください。

cd /Applications/FlightGear.app/Contents/Resources
./js_demo
 

js_demoの出力結果の読み方と、操作割り当ての決定手順

Joystick test program.
~~~~~~~~~~~~~~~~~~~~~~
Joystick 0 is "Saitek X45 Flight Controller"
Joystick 1 not detected

 +---------------JS.0-----------------+---------------JS.1-----------------+
| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 Ax:7 |       ~~~ Not Detected ~~~         |
+------------------------------------+------------------------------------+
| 0000 +0.1 -0.0 +1.0 +1.0 +1.0 -1.0 +0.0 +0.0 |  .   .   .   .   .   .   .   .   . |
| 0000 +0.1 -0.0 +1.0 +1.0 +1.0 -1.0 +0.0 +0.0 |  .   .   .   .   .   .   .   .   . |
| 0000 +0.1 -0.0 +1.0 +1.0 +1.0 -1.0 +0.0 +0.0 |  .   .   .   .   .   .   .   .   . |
| 0000 +0.1 -0.0 +1.0 +1.0 +1.0 -1.0 +0.0 +0.0 |  .   .   .   .   .   .   .   .   . |

最初の何行かの出力はスクロールが早くて画面を通り過ぎてしまうでしょう。その場合はCtrl-Cでプログラムを止めてください。

まず、最初の "Joystick 0 is "Saitek X45 Flight Controller" の行はジョイスティックの名前です。 先ほどの「1.2 Joystick #0: 行の確認」で認識された名前と同じ物になっていると思います。 ただし、日本語版WindowsVistaでは "Microsoft PC ジョイスティック ド"となりますが、この名前はFlightGearで使用できません。もしこの名前を使用した場合、fgfs.exeがnot-well-formedエラーで異常終了します。

次に、出力の読み方の解説をします。 左側の「JS:0」に注目してください。「JS:1」は繋いでいないのでドットが並んでいるだけですが、接続すれば当然ここにも数値が並びます。

一番左の列の値がボタンの状態を示していて、軸0〜軸7の順で各軸の状態を示しています。

すると、以下のような表ができると思います。 さて、スティックのどの軸/ボタンに何を割り当てるかは人それぞれなので、私がPS2ジョイパッド+変換器 のジョイスティック定義ファイルを書いた時の一例を挙げます。 もし、適切な役割が思い浮かばない場合、取り合えず何も設定せず、必要になった時にその都度追加していけばいいでしょう。

 

実際にXMLファイルを記述する

これは、ジョイスティックの自動認識の結果を上書きして、使用するジョイスティック定義ファイルを明示的に指定します。 実際のところ、2バイト文字を含まないファイル名なら何でもいいですので、わかり易い名前にしておいてください。 (他のジョイスティック定義ファイル同様、$FGROOT\Input\Joysticks\メーカー名\機種名.xml、としておく事をお勧めします。)

 

ジョイスティック設定ファイルを実際に書く

多くの場合、「既存のジョイスティック定義ファイルを元に・・・」と解説されますが、ここでは「イチからファイルを書く」場合を解説します。 もちろん、既存のジョイスティック定義ファイルの中に、あなたが使いたいジョイスティックとボタン/軸の数が同じで、割り当てられた機能が似通っていればそれを流用してもかまいません。

  1. まず、<axis n="軸番号">に変更して、どの軸か指定します。
  2. 軸の概要を<desc>タグと</desc>タグの間に書きます。(<desc>Ailone</desc>
  3. デッドバンドを設定したい場合、<dead-band>と<dead-band>の間の数字を変更します。<dead-band>0.1<dead-band>とか。
  4. また、動かした方向「だけ」が必要な場合は<high>と<low>の2種類のタグを使う事ができます。
    • <high>と<low>を使って、軸をエレベータートリムの調整に使用する場合は、このようにします。
      <axis n="1">
        <low>
         <repeatable>true</repeatable>
         <binding>
          <command>property-adjust</command>
          <property>/controls/flight/elevator-trim</property>
          <step type="double">0.001</step>
         </binding>
        </low>
        <high>
         <repeatable>true</repeatable>
         <binding>
          <command>property-adjust</command>
          <property>/controls/flight/elevator-trim</property>
          <step type="double">-0.001</step>
         </binding>
        </high>
      </axis>
  5. <command>と</command>の間に、使いたいコマンドを書きます。コマンドは大体以下の通りです。(軸で使うのに適さない、という理由で省略したものもあります)
    • property-scale:生のジョイスティックの出力を加工してプロパティの値にします。オプションは以下の通りです。
    • 優先順位はdead-band,offset,factorの順です。別の表現をすれば、cooked_value = (( raw_value > dead-band ) + offset) * factor となります
      • <property>設定したいプロパティ</property>で設定したいプロパティを選択します。
      • <offset>オフセット量</offset>で0点をいくらズラすかを設定します。
      • <factor>倍率</factor> ↑で0点をずらした場合に操作範囲を調整する時や、軸を反転したい場合に使います。
      • エルロンを操作するための使用例
        <binding>
           <command>property-scale</command>
           <property>/controls/flight/aileron</property>
           <offset type="double">0.0</offset>
           <factor type="double">1.0</factor>
        </binding>
    • property-adjust:一度実行される毎に値をstepだけ増やします。
      • <property>設定したいプロパティ</property>で設定したいプロパティを選択します。
      • <step>一度の動作で増やす量</step>(負の数を指定するとstepだけ減らす事ができます)。先述の<high><low>と同時に利用すると使いやすいです。(さっきも出てきました)
    • nasal:nasalスクリプトを実行します。
      • <script>タグと</script>タグの間にスクリプトを書いてください。最近はnasal経由で色々なプロパティを操作する事が多いです。詳しくは後述します。
<button n="">
 <desc></desc>
 <repeatable>false</repeatable>
 <binding>
  <command></command>
 </binding>
</button>
  1. まず、<axis n="ボタン番号">に変更して、どのボタンか指定します。
  2. ボタンの概要を<desc>タグと</desc>タグの間に書きます。(<desc>gear down/gear up</desc>
  3. リピート動作させたい場合は、<repeatable>のところを、以下のように変更してください。
    <repeatable>true</repeatable>
  4. <command>と</command>の間に、使いたいコマンドを書きます。コマンドは大体以下の通りです。(ボタンで使うのに適さない、という理由で省略したものもあります)
    • property-adjust:一度実行される毎に値をstepだけ増やします。
      • <property>設定したいプロパティ</property>で設定したいプロパティを選択します。
      • <step>一度の動作で増やす量</step>(負の数を指定するとstepだけ減らす事ができます)
      • 以下のサンプルは、ボタン2に「ラダートリムを0.001(正なので右方向に)動かす」割り当てをする例です。この場合、ラダートリムを-0.001(負なので左方向に)動かす割り当ては別のキーに割り当てる必要があります。
        <button n="2">
         <desc>Rudder Trim Right</desc>
         <repeatable>true</repeatable>
         <binding>
          <command>property-adjust</command>
          <property>/controls/flight/rudder-trim</property>
          <step>0.001</step>
         </binding>
        </button>

操作すべきプロパティ

  1. 操縦翼面
  1. エンジン関係

なお、第二エンジンの場合、操作すべきプロパティが/controls/engines/engine[1]/・・・・・・といったようになります。 エンジンの数が変わってもジョイスティックの設定をわざわざ変えなくてもいいように、エンジン関係はnasal経由で操作する事が多いです。

  1. 車輪関係

nasalスクリプトの使い方

多くの場合、「欲しい機能を与えてくれるnasal関数は何か」と、「その関数への引数」さえ知っていれば、実際の関数内部でどう動いているかはブラックボックスでも大丈夫でしょう。 なので、以下でジョイスティックの設定に使える関数と引数、それから簡単な説明をするつもりです。

ちょっと凝った設定


新規作成 2009/03/29 sambar ちょっと整形&js_demoの出力のところを一部修正 2009/03/29 21:09 sambar nasalの部分を追加 2009/03/29 23:41 sambar js_demo導入のMac版を作成 2009/03/30 00:53 MiYABi


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS