訳)ジョイスティック・キーボードの設定方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[翻訳作業場トップページ]]
このドキュメントは $FG_ROOT/Docs/Readme.Joysticks.htmlの...
----
#contents
#br
*ジョイスティック・キーボードの設定方法 [#d239370e]
version 0.9.8.1 13/10/2005 Author John Check (FlightGear1...
この文書はFlightGear0.7.7以降を対象として書かれています。
ジョイスティックがあなたのOS上で正常に認識され、動作して...
(訳注:訳者はWindowsVistaユーザーです。)~
David Megginsonに感謝します。誰がXMLの実装をしたかはさて...
#br
*いくつかの歴史 [#ye2ba402]
初期のFGFSのジョイスティックの軸(Axis)/ボタン(button)と、...
幸運な事に、v0.7.5.aの頃に"プロパティマネージャ"が与えら...
バージョン0.7.7ではプロパティマネージャの役割が拡張され、...
このコードは、FGInputとして知られていて、ジョイスティック...
バージョン0.7.9では条件付けが許容され、編集された決定ツリ...
#br
*最も重要な事: [#a1f4d364]
私は、ジョイスティックとキーボードについては後で書くつも...
FGInputは一般的なものを十分に扱えます。それは、ジョイステ...
さまざまな方法でキーボードまたはジョイスティックのバイン...
, ソース , 場所 , 書式 , 有効範囲
,command line , STDIN , see examples , そのセ...
,.fgfsrc , ~/ , コマンドラインオプション , 現...
,system.fgfsrc , $FG_ROOT , コマンドラインオプション , シ...
,joystick.xml , $FG_ROOT , XMLプロパティリスト , システ...
,keyboard.xml , $FG_ROOT , XMLプロパティリスト , システ...
訳者注:以降、joystick.xmlとkeyboard.xmlについての解説が主...
#br
*XMLについて [#w26b48de]
あなたがこれを疑問に思っている時のために、XMLは「eXtensib...
これは、HTMLに非常に似ていますが、(訳者追記:XML文書に使う...
さて、FGFSの場合では、私たちはあなたがジョイスティック/キ...
<PropertyList>
<!-- HTMLと同じように、<!-- -->で囲った部分はコメントで...
</PropertyList>
#br
*[Help]>[Joystick Information]の情報からジョイスティック...
注意:この項は原文が現状に追いついていないため、sambarが追...
今まではjs_demoでしかジョイスティックの情報を得ることが出...
+ジョイスティックの各軸、特にスロットルレバーを0点とした...
エルロンやエレベータは何もしなくても勝手に中心に来るでし...
+FlightGearを起動してください。
+FlightGearの画面の上部にあるメニューバーの、 [Help]を開...
+すると、以下のようなメニューが出るはずです。
(画像をここに貼り付ける予定。)
これは、WindowsVista(x64)でCH Products製のヨークとラダー...
幸運にも文字化けせずに、接続したジョイスティックの名前を...
読み込んだファイル名を確認して、正しいジョイスティック定...
**もし正しいジョイスティック定義ファイルを読み込まず、デ...
+まず、検出されたジョイスティック名をメモする。例えば、Sa...
+ジョイスティックのメーカー名と、検出された名前を元に、$F...
+「定義ファイルはあるし、ジョイスティック名も正常に検出し...
<PropertyList>
<name>Saitek X45</name>
<name>Saitek Saitek X45</name>
<name>Saitek X45 Flight Controller USB</name>
<name>Saitek X45 Flight Control Stick </name>
<name>Saitek Saitek X45 Flight Control Stick </name> <!...
<name>Saitek X45 Flight Controller</name> <!--ここが追加...
**「Joystick#0: Microsoft PC *W***C*X*e*B*b*N *h」と文字...
$FGROOT/Joysticks.xmlを以下の要領で修正し、読み込むべきジ...
<js n="0" include="Input/Joysticks/Saitek/ST290-Pro.xml"/>
もし適切なジョイスティック定義ファイルが見当たらない場合...
**ジョイスティック定義ファイルが無い場合 [#o0c52817]
$FGROOT/input/Joysticks/Default/four-axis-joystick.xml内...
ただし、ジョイスティック名が文字化けしていた場合には、こ...
<js n="0" include="Input/Joysticks/Default/four-axis-jo...
そして、画面上の「Aileron」「Elevator」「Throttle」「Rudd...
#br
*js_demoを使用して、ジョイスティックの出力をどのプロパテ...
FlightGearには、かつてjs_demoユーティリティが同梱されてい...
これは、ジョイスティックの数と能力について調査する強力な...
ジョイスティックを操作しながらjs_demoの出力を監視すれば、...
一般的に、*NIX環境では付番がゼロから始まることに注意して...
js_demoの典型的な出力
Joystick test program.
~~~~~~~~~~~~~~~~~~~~~~
Joystick 1 not detected <!-- ジョイスティック番号は0...
Joystick 2 not detected
+--------------JS.0--------------+
| Btns Ax:0 Ax:1 Ax:2 |
+--------------------------------+
| 0000 +0.0 +0.0 -1.0 |
js_demoの内部では、button0は2進数で1の位、button1は2の位...
,画面表示(16進数),押したボタン,2進数での表現(参考)
,0001,button 0,000000000000001
,0002,button 1,000000000000010
,0004,button 2,000000000000100
,0008,button 3,000000000001000
,0010,button 4,000000000010000
,0020,button 5,000000000100000
,0040,button 6,000000001000000
,0080,button 7,000000010000000
,000a,button 1 と button 3 の同時押し,000000000001010
・・・といった要領で8000(button 15)まで続きます。
(訳注:16進数で表示されることを強調するため、0014から000a...
#br
*デフォルトでのジョイスティックのプロパティ [#f5c9d9eb]
-Axis 0 = エルロン
-Axis 1 = エレベータ
-Axis 2 = ラダー
-Axis 3 = スロットル
-Button 0 = 両車輪のブレーキ
-Button 1 = エレベータトリム (up)
-Button 2 = エレベータトリム (down)
#br
*じゃあ、今度は何をするか [#x0b59a46]
先ほど集めたUSBジョイスティック(orジョイスティックポート)...
もし、新しいFGFSユーザーなら、いくつかの概念を理解するた...
#br
*「生」のジョイスティックの値を修正する [#cbc006b8]
これらのコンセプトは、ジョイスティックバインディングに理...
生の値をそのままジョイスティックの軸として使う事が適切で...
また、全てのジョイスティックが同じ状態で作られるとは限り...
軸のプロパティに対する修正順序はこのようになっています。
+生のジョイスティックの値
+デッドゾーン(dead-band,入力を無視する範囲)をフィルタリン...
+オフセット(offset,中心からのズレ)を修正します。
+3までの値に、factorを乗算します。
+この結果が得られた値を、FlightGearのプロパティのコントロ...
別の表現をすれば、下記のようになります。
cooked_value = (( raw_value > dead-band ) + offset) * fac...
軸のプロパティは以下の通りです。
#br
**dead-band [#sb679174]
-1 0 1
...............
-1 | | 1
^
dead-band
このエリア内の信号は無視されます。どんな信号も無視される...
デフォルトの、エレベーターとエルロンのための0.1の設定はガ...
#br
**offset [#y0ee6b80]
-1 0 1
.............
-1 ^ 1
offset
軸の操作範囲を広げたい場合に使用します。スロットル等、0が...
#br
**tolerance [#n6d52d91]
ジョイスティックのジッターの補償に使われて、toleranceの本...
それに満たないジョイスティックの動きは無視されます。dead-...
#br
**factor [#l2b4f852]
軸の操作量に対する「倍数」です。この値が小さいと、FGFS上...
負の数を設定すると、軸の操作とFGFS上での動きが反対になり...
筆者のケースでは、スロットルを逆向き(手前に引くとスロット...
(訳注:第二次世界大戦の頃まではフランス機のように「スロッ...
#br
*コマンドマネージャ: [#ba642863]
以前のFGFSはジョイスティックの出力で直接プロパティマネー...
(訳注:nasalスクリプトを組み込んだ場合、大抵飛行機の制御に...
#br
**描画・ファイル関連 [#p0bf74c9]
, コマンド ,オプション , 用途
, null , なし , 前のバインディングをクリアします。(翻訳自...
, exit , なし , FGFSを終了します。
, load , ファイル名(注1) , フライトのロード
, save , ファイル名(注1) , フライトのセーブ
, load-panel , パス(注2) , パネルの変更/再読み込み
, load-preferences , パス(注2) , 設定のロード (注3)
, screen-capture , なし , ./fgfs-screen.ppmにスクリーンシ...
, view-cycle , なし , パイロットの視点の方向を変える
-(注1)セーブ/ロードは現在の作業ディレクトリに依存します。
-(注2)パスはあなたがロードしたいファイルを含んでいて、$FG...
-(注3)これは、何もバインディングされていないので、初めに...
#br
**飛行機の制御 [#z3a44764]
, コマンド , オプション , 効果
, property-toggle , property , 指定したプロパティの値のオ...
, property-assign , property , value , 指定したプロパ...
, property-adjust , property , step , 一度操作する毎...
, property-swap , property[0] , property[1] , 2つのプ...
, property-scale ,property , offset , factor , 生...
, nasal , script , nasalスクリプトを実行します。nasalにつ...
#br
*バインディング [#x3338d51]
一つのコマンドを<binding> </binding>で束ねる...
デフォルトにより、以下の例では/bindingや<binding>を...
バインディングがXMLで指定されていると、インデックスが自動...
#br
*ジョイスティックの軸 [#qd615b25]
これはXMLでのジョイスティックの軸の設定サンプルです:
<axis n="0"> <!-- 設定したい軸の番号を...
<desc>Aileron</desc> <!-- 軸の概要について (無...
<binding> <!-- バインディングを開始...
<command>property-scale</command> <!-- コマンドを指...
<property>/controls/flight/aileron</property> <!-- ...
</binding> <!-- バインディングタグを...
</axis> <!-- axisタグを閉じます -->
先ほど、プロパティツリーが階層構造であると書いたことを覚...
このバインディングが/input/joysticks/js/ のコンテキストに...
--prop:/input/joysticks/js[0]/axis[0]/binding/command=p...
--prop:/input/joysticks/js[0]/axis[0]/binding/property=...
コマンドラインオプションで階層構造を表現するためにどのよ...
すばらしいと思ったら、次はREADME.xmlpanelを読んでください...
#br
本題に戻りましょう。"property-scale"コマンドは"offset"、"...
double形の方がよりステップがはっきり区別されていて、単な...
<axis n="2">
<desc>Throttle</desc>
<!-- 下記の「dead-bandについての重要事項」も見てくださ...
<binding>
<command>property-scale</command>
<property>/controls/engines/engine[0]/throttle</proper...
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
</binding>
</axis>
もしくは
--prop:/input/joysticks/js[0]/axis[2]/binding/command=pr...
--prop:/input/joysticks/js[0]/axis[2]/binding/property=/...
--prop:/input/joysticks/js[0]/axis[2]/binding/offset=-1.0
--prop:/input/joysticks/js[0]/axis[2]/binding/factor=-0.5
**dead-bandについての重要事項 [#sef7dec7]
あなたは、先述の「ジョイスティックの値を修正する」セクシ...
これは、デッドバンドを適用したいなら、dead-bandタグが他の...
--prop:/input/joysticks/js[0]/axis[2]/dead-band=0.005
#br
*ジョイスティックのボタンのプロパティ [#r52cc4a0]
ボタンは本来ブーリアン型(true,falseの2つの値だけで表すデ...
**<repeatable> [#udf46e42]
-trueかfalseを指定します。trueだった場合、ボタン(orキー)...
**<step> [#qc7c8989]
-proparty-adjustコマンドに、一度ボタンを押すごとに変化す...
**<value> [#w73e617d]
-繰り返しイベントでない場合、押した結果プロパティに与えら...
**<mod-up> [#xd6179bd]
-これは、"modifier up"を表していて、筆者は気に入っていま...
これは、あなたがキーを「ボタン/キーを離した時」のためにバ...
このサンプルは、XMLでのジョイスティックのボタンの宣言です。
<button n="1"> <!-- どのボタンか...
<desc>Elevator trim up</desc> <!-- ボタンの概要(必須で...
<repeatable>true</repeatable> <!-- Ok, repeatableの指...
<binding> <!-- バインディン...
<command>property-adjust</command> <!-- コ...
<property>/controls/flight/elevator-trim</property> <...
<step type="double">0.001</step>
</binding>
</button>
コマンドラインでは、以下のようになります。
--prop:/input/joysticks/js[0]/button[1]/repeatable=true...
--prop:/input/joysticks/js[0]/button[1]/binding/command...
--prop:/input/joysticks/js[0]/button[1]/binding/propert...
--prop:/input/joysticks/js[0]/button[1]/binding/step=0....
これは多少高度な設定例で、ボタン4を押した時に左車輪だけブ...
<button n="4">
<desc>Left brake</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value> <!-- ブレーキは1.0...
</binding>
<mod-up> <!-- パーキングブレーキで...
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value> <!-- 1.0 がON...
</binding>
</mod-up>
</button>
初めのバインディングは簡単です:ボタンを押したら、property...
しかし、次のバインディングは"mod-up"要素の入れ子の中にあ...
同じ値を何度も割り当てないように、"repeatable"はデフォル...
コマンドラインのオプションで同じことをするなら:
--prop:/input/joysticks/js[0]/button[4]/binding/command...
--prop:/input/joysticks/js[0]/button[4]/binding/propert...
--prop:/input/joysticks/js[0]/button[4]/binding/value=1.0
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
各コンテキスト中に複数のバインディングを含むことができる...
<button n="0">
<desc>Brakes</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value>
</binding>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-right</property>
<value type="double">1.0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value>
</binding>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-right</property>
<value type="double">0.0</value>
</binding>
</mod-up>
</button>
これをXMLを使わず、同じことをコマンドラインオプションでや...
(複数のバインディングを区別するための添え字に注意してくだ...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/comm...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/prop...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/valu...
--prop:/input/joysticks/js[0]/button[0]/binding[1]/comm...
--prop:/input/joysticks/js[0]/button[0]/binding[1]/prop...
--prop:/input/joysticks/js[0]/button[0]/binding[2]/valu...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
#br
*デジタルHATスイッチ [#u268fad3]
多くのジョイスティックにはHATスイッチが付いています。これ...
たとえば、あなたがちょうど表示方向をコントロールしたいな...
<axis n="5">
<binding>
<command>property-adjust/command>
<property>/sim/view/axes/lat</property>
<step>2.0</step>
</binding>
</axis>
<axis n="6">
<binding>
<command>property-adjust</command>
<property>/sim/view/axes/long</property>
<step>2.0</step>
</binding>
</axis>
もしくは
--prop:/input/joysticks/js/axis[5]/binding/command=prop...
--prop:/input/joysticks/js/axis[5]/binding/property=/si...
--prop:/input/joysticks/js/axis[5]/binding/step=2.0
--prop:/input/joysticks/js/axis[6]/binding/command=prop...
--prop:/input/joysticks/js/axis[6]/binding/property=/si...
--prop:/input/joysticks/js/axis[5]/binding/step=2.0
(訳注:この記述、特にプロパティ名は古いです。)
他にも、垂直/水平に2Dパネルをスクロールするために、ボタン...
下記の例は、<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>
--prop:/input/joysticks/js/axis[1]/low/repeatable=true
--prop:/input/joysticks/js/axis[1]/low/binding/command=...
--prop:/input/joysticks/js/axis[1]/low/binding/property...
--prop:/input/joysticks/js/axis[1]/low/binding/step=0.001
--prop:/input/joysticks/js/axis[1]/high/repeatable=true
--prop:/input/joysticks/js/axis[1]/high/binding/command...
--prop:/input/joysticks/js/axis[1]/high/binding/propert...
--prop:/input/joysticks/js/axis[1]/high/binding/step=-0...
下のコマンドラインオプションで、リピート間隔を設定できま...
--prop:/input/joysticks/js/axis[1]/interval-sec=0.05
あなたは、いくつかの軸をブレーキに割り当てる事ができます...
*キーボードの設定 [#k1d54a0b]
キーボードのキーバインディングは、以下の例のようにジョイ...
<key n="1">
<name>Ctrl-A</name>
<desc>Toggle autopilot altitude lock.</desc>
<binding>
<command>property-toggle</command>
<property>/autopilot/locks/altitude</property>
</binding>
</key>
あなたはまず、いくつかの事に気が付くでしょう。 最初に、イ...
一般的にキーコードは255まであり、256より上はファンクショ...
下記に、同じ働きのコマンドラインオプションを書きます。
--prop:/input/keyboard/key[1]/binding/command=property-...
--prop:/input/keyboard/key[1]/binding/property=/autopil...
('propaty-toggle'コマンドは、trueとfalseの切り替えを行い...
2つ目は、キーの方がジョイスティックのボタンよりも多くの修...
を使う事ができます。~
下に例を示します。
<key n="49">
<name>1</name>
<mod-shift>
<desc>Look back left</desc>
<binding>
<command>property-assign</command>
<property>/sim/view/goal-offset</property>
<value type="double">135</value>
</binding>
</mod-shift>
</key>
この例では、'1'キーとShiftキーを同時に押した場合に、左後...
注意:これはテンキーの1でしか動きません。テンキーで無く'q'...
FightGearの使っているinputモジュールは、controlとshiftの...
また、新しい入力モジュールは、キーボードのkey-upイベント...
<key n="44">
<name>,</name>
<desc>Left brake</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value>
</binding>
</mod-up>
</key>
今度は、別の方法でブレーキの設定のバインディングをします...
<key n="66">
<name>B</name>
<desc>Toggle parking brake on or off</desc>
<binding>
<command>property-toggle</command>
<property>/controls/gear/brake-parking</property>
</binding>
</key>
*nasalスクリプトの使い方 [#rfd4c248]
注意:この項はsambarが勝手に追加したものです。
FlightGearには、Nasal というスクリプト言語が実装されてい...
ここでは、Nasalスクリプトそのものの詳しい説明は省略し、既...
Nasalについての詳しい説明は[[Nasal マニュアル]]を参照して...
これは、ボタン5にギアダウンを割り当てる時の設定です。(Inp...
<button n="5">
<desc>Gear down</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command> <!--ここで、nasalを使用し...
<script>controls.gearDown(1)</script> <!-- <script>と...
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.gearDown(0)</script>
</binding>
</mod-up>
</button>
これは、$FGROOT/nasal/controls.nas内のgearDown関数に、ボ...
var gearDown = func(v) {
if (v < 0) {
setprop("/controls/gear/gear-down", 0);
} elsif (v > 0) {
setprop("/controls/gear/gear-down", 1);
}
}
この関数では、与えた引数が正なら車輪を下げ、負なら車輪を...
つまり、この例では"property-assign"を使って、同じ動作をさ...
<button n="5>
<desc>Gear down</desc>
<repeatable>false</repeatable>
<binding>
<command>property-assign</command>
<property>/controls/gear/gear-down</property>
<value>1<value>
</binding>
</button>
なお、「どちらのアプローチで書くのが良いか」については残...
-----
翻訳開始 2009/03/22 sambar~
仮翻訳終了。 2009/03/24 sambar~
「[Help]>[Joystick Information]の情報からジョイスティック...
「nasalの使用方法」を追加 2009/03/26 sambar~
リンク忘れ修正 2009/03/28 sambar~
表現の修正 2009/03/29 ~
終了行:
[[翻訳作業場トップページ]]
このドキュメントは $FG_ROOT/Docs/Readme.Joysticks.htmlの...
----
#contents
#br
*ジョイスティック・キーボードの設定方法 [#d239370e]
version 0.9.8.1 13/10/2005 Author John Check (FlightGear1...
この文書はFlightGear0.7.7以降を対象として書かれています。
ジョイスティックがあなたのOS上で正常に認識され、動作して...
(訳注:訳者はWindowsVistaユーザーです。)~
David Megginsonに感謝します。誰がXMLの実装をしたかはさて...
#br
*いくつかの歴史 [#ye2ba402]
初期のFGFSのジョイスティックの軸(Axis)/ボタン(button)と、...
幸運な事に、v0.7.5.aの頃に"プロパティマネージャ"が与えら...
バージョン0.7.7ではプロパティマネージャの役割が拡張され、...
このコードは、FGInputとして知られていて、ジョイスティック...
バージョン0.7.9では条件付けが許容され、編集された決定ツリ...
#br
*最も重要な事: [#a1f4d364]
私は、ジョイスティックとキーボードについては後で書くつも...
FGInputは一般的なものを十分に扱えます。それは、ジョイステ...
さまざまな方法でキーボードまたはジョイスティックのバイン...
, ソース , 場所 , 書式 , 有効範囲
,command line , STDIN , see examples , そのセ...
,.fgfsrc , ~/ , コマンドラインオプション , 現...
,system.fgfsrc , $FG_ROOT , コマンドラインオプション , シ...
,joystick.xml , $FG_ROOT , XMLプロパティリスト , システ...
,keyboard.xml , $FG_ROOT , XMLプロパティリスト , システ...
訳者注:以降、joystick.xmlとkeyboard.xmlについての解説が主...
#br
*XMLについて [#w26b48de]
あなたがこれを疑問に思っている時のために、XMLは「eXtensib...
これは、HTMLに非常に似ていますが、(訳者追記:XML文書に使う...
さて、FGFSの場合では、私たちはあなたがジョイスティック/キ...
<PropertyList>
<!-- HTMLと同じように、<!-- -->で囲った部分はコメントで...
</PropertyList>
#br
*[Help]>[Joystick Information]の情報からジョイスティック...
注意:この項は原文が現状に追いついていないため、sambarが追...
今まではjs_demoでしかジョイスティックの情報を得ることが出...
+ジョイスティックの各軸、特にスロットルレバーを0点とした...
エルロンやエレベータは何もしなくても勝手に中心に来るでし...
+FlightGearを起動してください。
+FlightGearの画面の上部にあるメニューバーの、 [Help]を開...
+すると、以下のようなメニューが出るはずです。
(画像をここに貼り付ける予定。)
これは、WindowsVista(x64)でCH Products製のヨークとラダー...
幸運にも文字化けせずに、接続したジョイスティックの名前を...
読み込んだファイル名を確認して、正しいジョイスティック定...
**もし正しいジョイスティック定義ファイルを読み込まず、デ...
+まず、検出されたジョイスティック名をメモする。例えば、Sa...
+ジョイスティックのメーカー名と、検出された名前を元に、$F...
+「定義ファイルはあるし、ジョイスティック名も正常に検出し...
<PropertyList>
<name>Saitek X45</name>
<name>Saitek Saitek X45</name>
<name>Saitek X45 Flight Controller USB</name>
<name>Saitek X45 Flight Control Stick </name>
<name>Saitek Saitek X45 Flight Control Stick </name> <!...
<name>Saitek X45 Flight Controller</name> <!--ここが追加...
**「Joystick#0: Microsoft PC *W***C*X*e*B*b*N *h」と文字...
$FGROOT/Joysticks.xmlを以下の要領で修正し、読み込むべきジ...
<js n="0" include="Input/Joysticks/Saitek/ST290-Pro.xml"/>
もし適切なジョイスティック定義ファイルが見当たらない場合...
**ジョイスティック定義ファイルが無い場合 [#o0c52817]
$FGROOT/input/Joysticks/Default/four-axis-joystick.xml内...
ただし、ジョイスティック名が文字化けしていた場合には、こ...
<js n="0" include="Input/Joysticks/Default/four-axis-jo...
そして、画面上の「Aileron」「Elevator」「Throttle」「Rudd...
#br
*js_demoを使用して、ジョイスティックの出力をどのプロパテ...
FlightGearには、かつてjs_demoユーティリティが同梱されてい...
これは、ジョイスティックの数と能力について調査する強力な...
ジョイスティックを操作しながらjs_demoの出力を監視すれば、...
一般的に、*NIX環境では付番がゼロから始まることに注意して...
js_demoの典型的な出力
Joystick test program.
~~~~~~~~~~~~~~~~~~~~~~
Joystick 1 not detected <!-- ジョイスティック番号は0...
Joystick 2 not detected
+--------------JS.0--------------+
| Btns Ax:0 Ax:1 Ax:2 |
+--------------------------------+
| 0000 +0.0 +0.0 -1.0 |
js_demoの内部では、button0は2進数で1の位、button1は2の位...
,画面表示(16進数),押したボタン,2進数での表現(参考)
,0001,button 0,000000000000001
,0002,button 1,000000000000010
,0004,button 2,000000000000100
,0008,button 3,000000000001000
,0010,button 4,000000000010000
,0020,button 5,000000000100000
,0040,button 6,000000001000000
,0080,button 7,000000010000000
,000a,button 1 と button 3 の同時押し,000000000001010
・・・といった要領で8000(button 15)まで続きます。
(訳注:16進数で表示されることを強調するため、0014から000a...
#br
*デフォルトでのジョイスティックのプロパティ [#f5c9d9eb]
-Axis 0 = エルロン
-Axis 1 = エレベータ
-Axis 2 = ラダー
-Axis 3 = スロットル
-Button 0 = 両車輪のブレーキ
-Button 1 = エレベータトリム (up)
-Button 2 = エレベータトリム (down)
#br
*じゃあ、今度は何をするか [#x0b59a46]
先ほど集めたUSBジョイスティック(orジョイスティックポート)...
もし、新しいFGFSユーザーなら、いくつかの概念を理解するた...
#br
*「生」のジョイスティックの値を修正する [#cbc006b8]
これらのコンセプトは、ジョイスティックバインディングに理...
生の値をそのままジョイスティックの軸として使う事が適切で...
また、全てのジョイスティックが同じ状態で作られるとは限り...
軸のプロパティに対する修正順序はこのようになっています。
+生のジョイスティックの値
+デッドゾーン(dead-band,入力を無視する範囲)をフィルタリン...
+オフセット(offset,中心からのズレ)を修正します。
+3までの値に、factorを乗算します。
+この結果が得られた値を、FlightGearのプロパティのコントロ...
別の表現をすれば、下記のようになります。
cooked_value = (( raw_value > dead-band ) + offset) * fac...
軸のプロパティは以下の通りです。
#br
**dead-band [#sb679174]
-1 0 1
...............
-1 | | 1
^
dead-band
このエリア内の信号は無視されます。どんな信号も無視される...
デフォルトの、エレベーターとエルロンのための0.1の設定はガ...
#br
**offset [#y0ee6b80]
-1 0 1
.............
-1 ^ 1
offset
軸の操作範囲を広げたい場合に使用します。スロットル等、0が...
#br
**tolerance [#n6d52d91]
ジョイスティックのジッターの補償に使われて、toleranceの本...
それに満たないジョイスティックの動きは無視されます。dead-...
#br
**factor [#l2b4f852]
軸の操作量に対する「倍数」です。この値が小さいと、FGFS上...
負の数を設定すると、軸の操作とFGFS上での動きが反対になり...
筆者のケースでは、スロットルを逆向き(手前に引くとスロット...
(訳注:第二次世界大戦の頃まではフランス機のように「スロッ...
#br
*コマンドマネージャ: [#ba642863]
以前のFGFSはジョイスティックの出力で直接プロパティマネー...
(訳注:nasalスクリプトを組み込んだ場合、大抵飛行機の制御に...
#br
**描画・ファイル関連 [#p0bf74c9]
, コマンド ,オプション , 用途
, null , なし , 前のバインディングをクリアします。(翻訳自...
, exit , なし , FGFSを終了します。
, load , ファイル名(注1) , フライトのロード
, save , ファイル名(注1) , フライトのセーブ
, load-panel , パス(注2) , パネルの変更/再読み込み
, load-preferences , パス(注2) , 設定のロード (注3)
, screen-capture , なし , ./fgfs-screen.ppmにスクリーンシ...
, view-cycle , なし , パイロットの視点の方向を変える
-(注1)セーブ/ロードは現在の作業ディレクトリに依存します。
-(注2)パスはあなたがロードしたいファイルを含んでいて、$FG...
-(注3)これは、何もバインディングされていないので、初めに...
#br
**飛行機の制御 [#z3a44764]
, コマンド , オプション , 効果
, property-toggle , property , 指定したプロパティの値のオ...
, property-assign , property , value , 指定したプロパ...
, property-adjust , property , step , 一度操作する毎...
, property-swap , property[0] , property[1] , 2つのプ...
, property-scale ,property , offset , factor , 生...
, nasal , script , nasalスクリプトを実行します。nasalにつ...
#br
*バインディング [#x3338d51]
一つのコマンドを<binding> </binding>で束ねる...
デフォルトにより、以下の例では/bindingや<binding>を...
バインディングがXMLで指定されていると、インデックスが自動...
#br
*ジョイスティックの軸 [#qd615b25]
これはXMLでのジョイスティックの軸の設定サンプルです:
<axis n="0"> <!-- 設定したい軸の番号を...
<desc>Aileron</desc> <!-- 軸の概要について (無...
<binding> <!-- バインディングを開始...
<command>property-scale</command> <!-- コマンドを指...
<property>/controls/flight/aileron</property> <!-- ...
</binding> <!-- バインディングタグを...
</axis> <!-- axisタグを閉じます -->
先ほど、プロパティツリーが階層構造であると書いたことを覚...
このバインディングが/input/joysticks/js/ のコンテキストに...
--prop:/input/joysticks/js[0]/axis[0]/binding/command=p...
--prop:/input/joysticks/js[0]/axis[0]/binding/property=...
コマンドラインオプションで階層構造を表現するためにどのよ...
すばらしいと思ったら、次はREADME.xmlpanelを読んでください...
#br
本題に戻りましょう。"property-scale"コマンドは"offset"、"...
double形の方がよりステップがはっきり区別されていて、単な...
<axis n="2">
<desc>Throttle</desc>
<!-- 下記の「dead-bandについての重要事項」も見てくださ...
<binding>
<command>property-scale</command>
<property>/controls/engines/engine[0]/throttle</proper...
<offset type="double">-1.0</offset>
<factor type="double">-0.5</factor>
</binding>
</axis>
もしくは
--prop:/input/joysticks/js[0]/axis[2]/binding/command=pr...
--prop:/input/joysticks/js[0]/axis[2]/binding/property=/...
--prop:/input/joysticks/js[0]/axis[2]/binding/offset=-1.0
--prop:/input/joysticks/js[0]/axis[2]/binding/factor=-0.5
**dead-bandについての重要事項 [#sef7dec7]
あなたは、先述の「ジョイスティックの値を修正する」セクシ...
これは、デッドバンドを適用したいなら、dead-bandタグが他の...
--prop:/input/joysticks/js[0]/axis[2]/dead-band=0.005
#br
*ジョイスティックのボタンのプロパティ [#r52cc4a0]
ボタンは本来ブーリアン型(true,falseの2つの値だけで表すデ...
**<repeatable> [#udf46e42]
-trueかfalseを指定します。trueだった場合、ボタン(orキー)...
**<step> [#qc7c8989]
-proparty-adjustコマンドに、一度ボタンを押すごとに変化す...
**<value> [#w73e617d]
-繰り返しイベントでない場合、押した結果プロパティに与えら...
**<mod-up> [#xd6179bd]
-これは、"modifier up"を表していて、筆者は気に入っていま...
これは、あなたがキーを「ボタン/キーを離した時」のためにバ...
このサンプルは、XMLでのジョイスティックのボタンの宣言です。
<button n="1"> <!-- どのボタンか...
<desc>Elevator trim up</desc> <!-- ボタンの概要(必須で...
<repeatable>true</repeatable> <!-- Ok, repeatableの指...
<binding> <!-- バインディン...
<command>property-adjust</command> <!-- コ...
<property>/controls/flight/elevator-trim</property> <...
<step type="double">0.001</step>
</binding>
</button>
コマンドラインでは、以下のようになります。
--prop:/input/joysticks/js[0]/button[1]/repeatable=true...
--prop:/input/joysticks/js[0]/button[1]/binding/command...
--prop:/input/joysticks/js[0]/button[1]/binding/propert...
--prop:/input/joysticks/js[0]/button[1]/binding/step=0....
これは多少高度な設定例で、ボタン4を押した時に左車輪だけブ...
<button n="4">
<desc>Left brake</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value> <!-- ブレーキは1.0...
</binding>
<mod-up> <!-- パーキングブレーキで...
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value> <!-- 1.0 がON...
</binding>
</mod-up>
</button>
初めのバインディングは簡単です:ボタンを押したら、property...
しかし、次のバインディングは"mod-up"要素の入れ子の中にあ...
同じ値を何度も割り当てないように、"repeatable"はデフォル...
コマンドラインのオプションで同じことをするなら:
--prop:/input/joysticks/js[0]/button[4]/binding/command...
--prop:/input/joysticks/js[0]/button[4]/binding/propert...
--prop:/input/joysticks/js[0]/button[4]/binding/value=1.0
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
--prop:/input/joysticks/js[0]/button[4]/mod-up/binding/...
各コンテキスト中に複数のバインディングを含むことができる...
<button n="0">
<desc>Brakes</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value>
</binding>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-right</property>
<value type="double">1.0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value>
</binding>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-right</property>
<value type="double">0.0</value>
</binding>
</mod-up>
</button>
これをXMLを使わず、同じことをコマンドラインオプションでや...
(複数のバインディングを区別するための添え字に注意してくだ...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/comm...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/prop...
--prop:/input/joysticks/js[0]/button[0]/binding[0]/valu...
--prop:/input/joysticks/js[0]/button[0]/binding[1]/comm...
--prop:/input/joysticks/js[0]/button[0]/binding[1]/prop...
--prop:/input/joysticks/js[0]/button[0]/binding[2]/valu...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
--prop:/input/joysticks/js[0]/button[0]/mod-up/binding[...
#br
*デジタルHATスイッチ [#u268fad3]
多くのジョイスティックにはHATスイッチが付いています。これ...
たとえば、あなたがちょうど表示方向をコントロールしたいな...
<axis n="5">
<binding>
<command>property-adjust/command>
<property>/sim/view/axes/lat</property>
<step>2.0</step>
</binding>
</axis>
<axis n="6">
<binding>
<command>property-adjust</command>
<property>/sim/view/axes/long</property>
<step>2.0</step>
</binding>
</axis>
もしくは
--prop:/input/joysticks/js/axis[5]/binding/command=prop...
--prop:/input/joysticks/js/axis[5]/binding/property=/si...
--prop:/input/joysticks/js/axis[5]/binding/step=2.0
--prop:/input/joysticks/js/axis[6]/binding/command=prop...
--prop:/input/joysticks/js/axis[6]/binding/property=/si...
--prop:/input/joysticks/js/axis[5]/binding/step=2.0
(訳注:この記述、特にプロパティ名は古いです。)
他にも、垂直/水平に2Dパネルをスクロールするために、ボタン...
下記の例は、<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>
--prop:/input/joysticks/js/axis[1]/low/repeatable=true
--prop:/input/joysticks/js/axis[1]/low/binding/command=...
--prop:/input/joysticks/js/axis[1]/low/binding/property...
--prop:/input/joysticks/js/axis[1]/low/binding/step=0.001
--prop:/input/joysticks/js/axis[1]/high/repeatable=true
--prop:/input/joysticks/js/axis[1]/high/binding/command...
--prop:/input/joysticks/js/axis[1]/high/binding/propert...
--prop:/input/joysticks/js/axis[1]/high/binding/step=-0...
下のコマンドラインオプションで、リピート間隔を設定できま...
--prop:/input/joysticks/js/axis[1]/interval-sec=0.05
あなたは、いくつかの軸をブレーキに割り当てる事ができます...
*キーボードの設定 [#k1d54a0b]
キーボードのキーバインディングは、以下の例のようにジョイ...
<key n="1">
<name>Ctrl-A</name>
<desc>Toggle autopilot altitude lock.</desc>
<binding>
<command>property-toggle</command>
<property>/autopilot/locks/altitude</property>
</binding>
</key>
あなたはまず、いくつかの事に気が付くでしょう。 最初に、イ...
一般的にキーコードは255まであり、256より上はファンクショ...
下記に、同じ働きのコマンドラインオプションを書きます。
--prop:/input/keyboard/key[1]/binding/command=property-...
--prop:/input/keyboard/key[1]/binding/property=/autopil...
('propaty-toggle'コマンドは、trueとfalseの切り替えを行い...
2つ目は、キーの方がジョイスティックのボタンよりも多くの修...
を使う事ができます。~
下に例を示します。
<key n="49">
<name>1</name>
<mod-shift>
<desc>Look back left</desc>
<binding>
<command>property-assign</command>
<property>/sim/view/goal-offset</property>
<value type="double">135</value>
</binding>
</mod-shift>
</key>
この例では、'1'キーとShiftキーを同時に押した場合に、左後...
注意:これはテンキーの1でしか動きません。テンキーで無く'q'...
FightGearの使っているinputモジュールは、controlとshiftの...
また、新しい入力モジュールは、キーボードのkey-upイベント...
<key n="44">
<name>,</name>
<desc>Left brake</desc>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">1.0</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/controls/gear/brake-left</property>
<value type="double">0.0</value>
</binding>
</mod-up>
</key>
今度は、別の方法でブレーキの設定のバインディングをします...
<key n="66">
<name>B</name>
<desc>Toggle parking brake on or off</desc>
<binding>
<command>property-toggle</command>
<property>/controls/gear/brake-parking</property>
</binding>
</key>
*nasalスクリプトの使い方 [#rfd4c248]
注意:この項はsambarが勝手に追加したものです。
FlightGearには、Nasal というスクリプト言語が実装されてい...
ここでは、Nasalスクリプトそのものの詳しい説明は省略し、既...
Nasalについての詳しい説明は[[Nasal マニュアル]]を参照して...
これは、ボタン5にギアダウンを割り当てる時の設定です。(Inp...
<button n="5">
<desc>Gear down</desc>
<repeatable>false</repeatable>
<binding>
<command>nasal</command> <!--ここで、nasalを使用し...
<script>controls.gearDown(1)</script> <!-- <script>と...
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.gearDown(0)</script>
</binding>
</mod-up>
</button>
これは、$FGROOT/nasal/controls.nas内のgearDown関数に、ボ...
var gearDown = func(v) {
if (v < 0) {
setprop("/controls/gear/gear-down", 0);
} elsif (v > 0) {
setprop("/controls/gear/gear-down", 1);
}
}
この関数では、与えた引数が正なら車輪を下げ、負なら車輪を...
つまり、この例では"property-assign"を使って、同じ動作をさ...
<button n="5>
<desc>Gear down</desc>
<repeatable>false</repeatable>
<binding>
<command>property-assign</command>
<property>/controls/gear/gear-down</property>
<value>1<value>
</binding>
</button>
なお、「どちらのアプローチで書くのが良いか」については残...
-----
翻訳開始 2009/03/22 sambar~
仮翻訳終了。 2009/03/24 sambar~
「[Help]>[Joystick Information]の情報からジョイスティック...
「nasalの使用方法」を追加 2009/03/26 sambar~
リンク忘れ修正 2009/03/28 sambar~
表現の修正 2009/03/29 ~
ページ名: