vtchid -- 鉄騎コントローラ用デバイスドライバ Introduction 「vtchid」は、鉄騎コントローラ用デバイスドライバです。このドライバは、 HID (Human Interface Device) miniriver として作成動作し、最大8軸32ボタ ン2Hatデバイスとして見えます。 このソフトウェアは、無償、無保証、無制限にて公開します。 (つまり、パブリックドメインソフトウェア (PDS) と同等ということ。) Requirements OS : Windows XP/2000 Device: 鉄騎コントローラ XBox コントローラ型と USB コネクタとの変換ケーブル Install - 圧縮ファイルを展開します。 - 鉄騎コントローラを USB ポートに接続します。 - デバイスドライバウィザードが表示されたら、`vtchid.inf' を選択し、ド ライバをインストールします。 - 必要に応じて、プログラム vtchidldr.exe を任意の場所に置き、ショート カットをスタートアップに登録して下さい。 詳細については、Profile Loader の項を参照。 Upgrade - 圧縮ファイルを展開します。 - デバイスマネージャから `鉄騎コントローラ' を選択し、プロパティーの ドライバタブにある「ドライバの更新」 ボタンを押します。 - デバイスドライバのアップグレードウィザードが開始されるので、「この デバイスの既知のドライバを表示して、その一覧から選択する」-> 「ディ スク使用」 -> 「参照」で `vtchid.inf' を選択し、ドライバをインストー ルしなおします。 Profile Loader 同梱のプログラム vtchidldr.exe は、デバイスドライバに現在の設定を読み 込むよう指示するものです。 デバイスを PC に接続した状態で OS を起動すると、設定をデフォルト状態 から変更してあっても、それが反映されずにデフォルト設定となってしまい ます。その場合でも、このプログラムを OS 起動後に実行することで設定の 読み込みをドライバに指示することができます。 スタートアップに登録する等しておくとよいかもしれません。 また、以下のオプションを指定することもできます。 - vtchidldr FILENAME vtchidldr -l FILENAME : 指定されたファイルをプロファイルとして読み込 み、ドライバへ適用します。 "-l" オプションは省略することができます。 - vtchidldr -s FILENAME : 指定されたファイルへ現在のプロファイルを保存 します。 オプションを指定しない場合は、現在の設定の読み込み指示のみ行ないます。 Axes and Buttons デフォルト設定での軸/ボタンの割り当て。 - Axes: AIMING LEVER => X, Y GEAR LEVER => Z SIGHT STICK => Rx, Ry ROTATION LEVER => Rz TUNER DIAL => Slider - Buttons: - Button 1: MAIN WEAPON - Button 2: SUB WEAPON - Button 3: LOCK ON - Button 4: EJECT CMD - Button 5: COCKPIT HATCH - Button 6: IGNITION - Button 7: START - Button 8: MULTI MONITOR - OPEN/CLOSE - Button 9: MULTI MONITOR - MAP ZOOM IN/OUT - Button 10: MULTI MONITOR - MODE SELECT - Button 11: SUB MONITOR MODE SELECT - Button 12: MAIN MONITOR ZOOM - IN - Button 13: MAIN MONITOR ZOOM - OUT - Button 14: F.S.S - Button 15: MANIPULATOR - Button 16: LINE COLOR CHANGE - Button 17: WASHING - Button 18: EXTINGUISHER - Button 19: CHAFF - Button 20: TANK DETACH - Button 21: OVERRIDE - Button 22: NIGHT SCOPE - Button 23: F1 - Button 24: F2 - Button 25: F3 - Button 26: WEAPON CONTROLS - MAIN - Button 27: WEAPON CONTROLS - SUB - Button 28: WEAPON CONTROLS - MAGAZINE CHANGE - Button 29: SIGHT CHANGE - PUSH - Button 30: FOOT PEDAL - LEFT - Button 31: FOOT PEDAL - CENTER - Button 32: FOOT PEDAL - RIGHT - Modifiers: - Modifier 1: COMMUNICATION TUNER - 1 - Modifier 2: COMMUNICATION TUNER - 2 - Modifier 3: COMMUNICATION TUNER - 3 - Modifier 4: COMMUNICATION TUNER - 4 - Modifier 5: COMMUNICATION TUNER - 5 - Modifier 6: FILT CONTROL SYSTEM - Modifier 7: OXYGEN SUPPLY SYSTEM - Modifier 8: FUEL FLOW RATE - Modifier 9: BUFFER MATERIAL - Modifier 10: VT-LOCATION MEASUREMENT * Axis Throttle はデフォルトでは未割り当て。 * POV 1、2 はデフォルトでは未割り当て。 Modifiers ON/OFF 状態を持つモディファイアが16個あり、それぞれの状態に合わせて、 軸/ボタン等の設定を変更可能です。 設定例については Samples の項を参照。 Samples samples/ 以下に設定サンプルとしてプロファイルを同梱しています。カスタ マイズ方法の参考に多少はなるかもしれません。 以下はそれぞれのファイルの簡単な説明です。 - axis.sdp 軸設定の例です。 AIMING LEVER にデフォルトと同じ X, Y 軸を、 SIGHT CHANGE にデフォルトとは向きが逆の Rx, Ry 軸を、 ROTATION LEVER に範囲を中央付近に限定した Rz 軸を、 FOOT PEDAL LEFT と RIGHT に RZ 軸を割り当て。 - buttons.sdp ボタン設定の例です。 MAIN WEAPON にボタン 1 を、 SUB WEAPON に on/off が逆のボタン 2 を、 F1 ボタンを押したときにボタン 3 の on を、 F2 ボタンを押したときにボタン 3 の off を、 ROTATION LEVER の左側にボタン 4 を、 ROTATION LEVER の右側にボタン 5 を割り当て。 - modifiers.sdp モディファイア設定の例です。 トグルスイッチ右列3つがそれぞれ mod 1 から 3 に対応しており、それぞれの ON/OFF 状態の組合せ によって MAIN WEAPON を押したときに有効となる ボタンが変化します。 また、F1 ボタンを押すごとに mod 8 の on/off を 切り替え、F2 ボタンを押すごとに mod 9/10 の on/off を切り替えます。 - delay.sdp 遅延実行 (delay) の例です。 MAIN WEAPON を押すと、 ボタン 1 on -> 1秒ウェイト -> ボタン 1 off を実行します。 - apply.sdp Action list から他の Action list を実行する例 です。 MAIN WEAPON を押すと、 ボタン 9 on -> 1秒ウェイト -> ボタン 9 off -> ボタン 10 on -> 1秒ウェイト -> ボタン 10 off を実行します (前半と後半で別の Action list)。 また、SUB WEAPON を押すと、ボタン 1 から 8 ま でを順に on/off し、これを繰り返します。実行中 に LOCK ON を押すと mod 1 が on となり、繰り返 しが中断されます。 - mouse.sdp マウス設定の例です。 SIGHT CHANGE にカーソル移動を、MAIN WEAPON と SUB WEAPON にそれぞれボタン 1、2 (左右クリック) を割り当て。 - keyboard.sdp キーボード設定の例です。 MAIN WEAPON にキー A を、 SUB WEAPON にキー A、B、C の連続入力を割り当て。 How to connect XBox controller connector to USB port (USB Type A Male <-> USB Type A Female) + (XBox Male <-> XBox Female) = (USB Type A Male <- ) + ( -> USB Type A Female) + (XBox Male <- ) + ( -> Xbox Female) = (USB Type A Male <-> Xbox Female) + (XBox Male <-> USB Type A Female) How to build driver from source - Cygwin 及び開発パッケージをインストール (binutils, fileutils, gcc, make, w32api)。 - Cygwin 用 DirectX ヘッダのインストール。 - Borland C++ Compiler 5.5 をインストール (日本語リソースを利用する場 合のみ)。 - ソースファイルを展開。 - 展開されたディレクトリへ移動し、`make'。 (日本語リソースを利用しない場合は `make USE_BRCC=no') TODO (or want to do ...) - ボタンを光らせる。 - タイミングは? (押したとき?、Force Feedback 相当?) -> とりあえず、ボタンを押してから離すまでとギアに対応するランプを 光らせるようにした。 write report でも光らせることができる。(controller_output_state) (Ver 0.1.2) - 出力テストタブのテストパターン - カスタマイズ - ボタン順序 - 軸とレバーの対応 - ギア、ダイアルをボタンとして - ゲームコントローラのプロパティーから? -> 対応 (Ver 0.2.1) - キャリブレーション - ドキュメント - カスタマイズについて - ボタン数の制限はなんとかできないのか? -> report descriptor として複数の top level collection を返せば複数 のデバイスに見せられるはずだが、そうすると OS ごと固まってしまう。 何故? (http://msdn.microsoft.com/library/en-us/intinput/hh/intinput/hidclass_2w13.asp?frame=true) -> 非ポーリング (DevicesArePolled = FALSE) なら大丈夫らしい -> 割り当てのカスタマイズをできるようにしたのでボタン数は 32 に。 (Ver 0.2.1) Link - USB.org - HID Tools: - Microsoft Windows Driver Development Kits: - HID Game Controllers and DirectInput: - Xbox コントローラ用デバイスドライバ: - XID: - Dhauzimmer's X36/X45 USB filter driver: - hfsd: - vtchid: $Id: README.ja.txt,v 1.12 2004/06/14 14:01:31 hos Exp $