Platform SDK: DirectX

ジョイスティックの直接データ

[C++]

ジョイスティックの現在の状態を取得するには、DIJOYSTATE 構造体または DIJOYSTATE2 構造体へのポインタを指定して IDirectInputDevice7::GetDeviceState メソッドを呼び出す。どちらの構造体を使用するかは、c_dfDIJoystick c_dfDIJoystick2 のどちらでデータ形式が設定されたのかによる (「デバイス データ形式」を参照すること)。構造体に返されるジョイスティックの状態には、軸座標、ボタンの状態、および視点コントローラの状態などがある。

DIJOYSTATE 構造体の最初の 7 つのメンバが軸座標を保持する。このうち最後のメンバ rglSlider は 2 つの値の配列である (「ジョイスティック軸データの解釈」を参照すること)。

rgdwPOV メンバには、4 つまでの視点コントローラの位置が含まれている。これらは、北から時計回り (または前方) の実角度の 100 倍で表される。中心位置は -1 として報告される。5 つの位置しか持たないコントローラでは、dwPOV は以下のいずれか 1 つの値を取る。

中心位置として、-1 ではなく 65,535 を報告するドライバもある。POV 標識が中心位置にあるかどうかは、次のようにチェックしなければならない。

BOOL POVCentered = (LOWORD(dwPOV) == 0xFFFF);

rgbButtons メンバは、バイト配列である。データ形式によって、32 個または 128 個の各ボタンに 1 要素が対応する。各ボタンの上位ビットは、ボタンがダウン状態で設定され、アップ状態または存在しない場合に消去される。

DIJOYSTATE2 構造体には、軸の速度、加速度、フォース、およびトルクについての情報を提供する追加メンバがある。

[Visual Basic]

ジョイスティックの現在の状態を取得するには、DirectInputDevice.GetDeviceStateJoystick メソッドまたは DirectInputDevice.GetDeviceStateJoystick2 メソッドを呼び出す。どちらのメソッドを使用するかは、DIFORMAT_JOYSTICK か DIFORMAT_JOYSTICK2 のどちらでデータ形式が設定されたのかによる (「デバイス データ形式.」を参照すること)。state パラメータに返されるジョイスティック状態には、軸座標、ボタンの状態、および視点コントローラの状態などがある。

DIJOYSTATE 型または DIJOYSTATE2 型の POV メンバには、4 つまでの視点コントローラの位置が含まれている。これらは、北から時計回り (または前方) の実角度の 100 倍で表される。中心位置は -1 として報告される。5 つの位置しか持たないコントローラの場合、POV は以下のどれか 1 つの値を取る。

中心位置として、-1 ではなく 65,535 を報告するドライバもある。POV 標識が中心位置にあるかどうかは、次のようにチェックしなければならない。

Dim POVCentered As Boolean
POVCentered = (dwPOV And &HFFFF) = &HFFFF;

buttons メンバは、バイト配列である。データ型によって、32 個または 128 個の各ボタンに 1 要素が対応する。各ボタンの上位ビットは、ボタンがダウン状態で設定され、アップ状態または存在しない場合に消去される。

DIJOYSTATE2 型には、軸の速度、加速度、フォース、およびトルクについての情報を提供する追加メンバがある。

詳細については、「ジョイスティック軸データの解釈」を参照すること。

参照

バッファリング データと直接データ