マウスの軸データの解釈

マウスの x 軸と y 軸について返されるデータは、カーソルではなく、マウス自体の動きを示します。測定単位は、マウス ハードウェアによって返される値に基づくものであり、ピクセルやその他の形式の画面測定値とは関係ありません。DirectInput はマウス ドライバーと直接通信するため、ユーザーがコントロール パネルで設定するマウスの速度と加速の値はこのデータに影響しません。

マウスから返される軸データは相対か絶対です(「相対軸座標と絶対軸座標」を参照してください)。マウスは、ジョイスティックとは異なり、ホーム ポジションを持たない相対デバイスです。そのため、既定では相対データが返されます。

相対データと絶対データのどちらを返すかを指定する軸モードは、デバイスの取得前に変更可能なプロパティです(「デバイスのプロパティ」を参照してください)。軸モードを絶対に設定するには、rguidProp パラメーターに DIPROP_AXISMODE 値を指定し、DIPROPDWORD 構造体の dwData メンバーに DIPROPAXISMODE_ABS を指定して、IDirectInputDevice8::SetProperty を呼び出します。

マウスの軸モードが相対に設定されている場合、軸座標は最後の値が返されてからデバイスが軸に沿って移動した単位数を表します。負の値は、x 軸の場合はマウスが左方向に、y 軸の場合はマウスがユーザーから離れる方向に移動したことを示します。また、z 軸 (ホイール) の場合はユーザーの方向への回転を示します。正の値はこれとは反対方向の動きを示します。

軸モードが絶対に設定されている場合、座標は DirectInput が受け取ったすべての相対的な動きを合計したものです。デバイスの取得時に軸座標が特定の値に初期化されることはありません。そのため、アプリケーションは絶対値を不明な原点への相対値として扱う必要があります。デバイスを取得するたびに現在の絶対位置を記録し、それを仮想原点として保存することができます。その後は、デバイスから取得した絶対座標からこの仮想原点を減算して、マウスがデバイス取得時点から移動した相対距離を計算することができます。

軸座標に対して返される値は、デバイスの粒度プロパティの影響も受けます。マウスの x 軸と y 軸の場合は、通常、粒度は 1 (つまり、値の最小変化は 1) です。ホイール軸の場合はこれより大きい場合があります。