hfsd  -- Flight Stick 用デバイスドライバ
Introduction
 「hfsd」は、HORI社製 Flight Stick 2用デバイスドライバです。このドライ
バは、HID (Human Interface Device) miniriver として動作し、最大8軸32ボ
タン2Hatデバイスとして見えます。
このソフトウェアは、無償、無保証、無制限にて公開します。
(つまり、パブリックドメインソフトウェア (PDS) と同等ということ。)
Requirements
 OS    : Windows XP/2000
 Device: Flight Stick 2
Install
 - 圧縮ファイルを展開します。
 - Flight Stick 2 を USB ポートに接続します。
 - デバイスドライバウィザードが表示されたら、`hfsd.inf' を選択し、ドラ
   イバをインストールします。
 - 必要に応じて、プログラム hfsdldr.exe を任意の場所に置き、ショートカッ
   トをスタートアップに登録して下さい。
   詳細については、Profile Loader の項を参照。
Upgrade
 - 圧縮ファイルを展開します。
 - デバイスマネージャから `Flight Stick 2' を選択し、プロパティーのド
   ライバタブにある「ドライバの更新」 ボタンを押します。
 - デバイスドライバのアップグレードウィザードが開始されるので、「この
   デバイスの既知のドライバを表示して、その一覧から選択する」-> 「ディ
   スク使用」 -> 「参照」で `hfsd.inf' を選択し、ドライバをインストー
   ルしなおします。
Profile Loader
 同梱のプログラム hfsdldr.exe は、デバイスドライバに現在の設定を読み込
 むよう指示するものです。
 デバイスを PC に接続した状態で OS を起動すると、設定をデフォルト状態
 から変更してあっても、それが反映されずにデフォルト設定となってしまい
 ます。その場合でも、このプログラムを OS 起動後に実行することで設定の
 読み込みをドライバに指示することができます。
 スタートアップに登録する等しておくとよいかもしれません。
 また、以下のオプションを指定することもできます。
 - hfsdldr    FILENAME
   hfsdldr -l FILENAME : 指定されたファイルをプロファイルとして読み込
                         み、ドライバへ適用します。
                         "-l" オプションは省略することができます。
 - hfsdldr -s FILENAME : 指定されたファイルへ現在のプロファイルを保存
                         します。
 オプションを指定しない場合は、現在の設定の読み込み指示のみ行ないます。
Axes and Buttons
 デフォルト設定での軸/ボタンの割り当て。モディファイア指定は特に無し。
 - Axes: Stick    => X, Y
         Rudder   => Rz
         Hat      => Rx, Ry
         Throttle => Z
 - POVs:
   - POV 1: D-PAD 1
   - POV 2: D-PAD 2
 - Buttons:
   - Button  1: TRIGGER
   - Button  2: FIRE C
   - Button  3: LAUNCH
   - Button  4: A
   - Button  5: B
   - Button  6: HAT press
   - Button  7: SW 1
   - Button  8: D
   - Button  9: ST
   - Button 10: M1
   - Button 11: M2
   - Button 12: M3
   - Button 13: D-PAD 3 left
   - Button 14: D-PAD 3 middle
   - Button 15: D-PAD 3 right
 * Axis Slider, Throttle はデフォルトでは未割り当て。
 * Button 16-32 はデフォルトでは未割り当て。
Modifiers
 ON/OFF 状態を持つモディファイアが16個あり、それぞれの状態に合わせて、
 軸/ボタン等の設定を変更可能です。
 設定例については Samples の項を参照。
Samples
 samples/ 以下に設定サンプルとしてプロファイルを同梱しています。カスタ
 マイズ方法の参考に多少はなるかもしれません。
 以下はそれぞれのファイルの簡単な説明です。
 - axis.sdp             軸設定の例です。
                        Stick にデフォルトと同じ X, Y 軸を、
                        Hat にデフォルトとは向きが逆の Rx, Ry 軸を、
                        Throttle に範囲を中央付近に限定した Slider 軸を、
                        Rudder の左側に Z 軸を、右側に Rz 軸を、
                        A ボタンに Throttle 軸を割り当て。
                        (A, B ボタンはアナログボタン)
 - buttons.sdp          ボタン設定の例です。
                        TRIGGER にボタン 1 を、
                        LAUNCH に on/off が逆のボタン 2 を、
                        A ボタンを押したときにボタン 3 の on を、
                        B ボタンを押したときにボタン 3 の off を、
                        Rudder の左側にボタン 4 を、
                        Rudder の右側にボタン 5 を割り当て。
 - modifiers.sdp        モディファイア設定の例です。
                        M1/2/3 と SW1 がそれぞれ mod 1 から 4 に対応し
                        ており、それぞれの ON/OFF 状態の組合せによって
                        TRIGGER と LAUNCH を押したときに有効となるボタ
                        ンが変化します。
                        また、A ボタンを押すごとに mod 8 の on/off を
                        切り替え、B ボタンを押すごとに mod 9/10 の
                        on/off を切り替えます。
 - delay.sdp            遅延実行 (delay) の例です。
                        LAUNCH を押すと、
                        ボタン 1 on -> 1秒ウェイト -> ボタン 1 off
                        を実行します。
 - apply.sdp            Action list から他の Action list を実行する例
                        です。
                        TRIGGER を押すと、
                        ボタン 9 on -> 1秒ウェイト -> ボタン 9 off ->
                        ボタン 10 on -> 1秒ウェイト -> ボタン 10 off
                        を実行します (前半と後半で別の Action list)。
                        また、LAUNCH を押すと、ボタン 1 から 8 までを
                        順に on/off し、これを繰り返します。実行中に D
                        ボタンを押すと mod 1 が on となり、繰り返しが
                        中断されます。
 - mouse.sdp            マウス設定の例です。
                        Hat にカーソル移動を、TRIGGER と LAUNCH にそれ
                        ぞれボタン 1、2 (左右クリック) を割り当て。
 - keyboard.sdp         キーボード設定の例です。
                        TRIGGER にキー A を、
                        LAUNCH にキー A、B、C の連続入力を割り当て。
How to build driver from source
 - Cygwin 及び開発パッケージをインストール (binutils, fileutils, gcc,
   make, w32api)。
   w32api パッケージは最新のものを CVS からとってくる必要があるかも。
 - Cygwin 用 DirectX ヘッダのインストール。
   
 - Borland C++ Compiler 5.5 をインストール (日本語リソースを利用する場
   合のみ)。 
 - ソースファイルを展開。
 - 展開されたディレクトリへ移動し、`make'。
   (日本語リソースを利用しない場合は `make USE_BRCC=no')
TODO
 - カスタマイズ
   - ボタン順序
   - 軸とスティックの対応
   - D-PAD をハット以外にボタンとして
   - ゲームコントローラのプロパティーから
     -> 対応 (Ver 0.2.1)
   - キーボード入力への割り当て
   - マウス入力への割り当て
     -> 対応 (Ver 0.3.1)
   - 設定の保存/読み込み
     -> 対応 (Ver 0.4.1)
   - XD-Profile 形式の設定ファイルを読み込み
     -> X36/X45 を持っておらず、必要性を感じていないので優先度低。
        2つのダイアルが無く、スティック上部のボタン類が異なっていたり、
        スロットル裏の 4-way HAT が 3-way HAT だったりと、色々な部分が
        違うため、既存の profile を適用することに意味があるのかも疑問。
   - キャリブレーション
 - ドキュメント
   - カスタマイズについて
 - 振動機能
   - Force Feedback driver として
   - 単純な振動のため方向のある force はできない
 - デジタルボタンが誤作動するので直す
   -> 修正 (Ver 0.1.2)
   -> モードスイッチ (M1-3) が誤作動する場合があったので修正 (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:
   
 - vtchid: 
 - hfsd: 
$Id: README.txt,v 1.16 2004/06/10 16:08:35 hos Exp $