Microsoft DirectX 8.0 (Visual Basic) |
キーボードからバッファリング データを取得するには、バッファ サイズを設定しなければならない (「デバイス プロパティ」を参照すること)。この手順は、バッファのデフォルト サイズがゼロであるので不可欠である。
また、DIDEVICEOBJECTDATA 型の配列も宣言する必要がある。この配列は、最高でバッファ サイズと同数の要素を持つことができる。1 度の呼び出しでバッファの内容全体を取得する必要はない。配列内の 1 要素だけを保持して、バッファが空になるまで 1 つずつイベントを取得することができる。
キーボード デバイスの取得後は、DirectInputDevice8.GetDeviceData メソッドを使っていつでもバッファを調べたりフラッシュしたりすることができる (「バッファリング データと直接データ」を参照すること)。
DIDEVICEOBJECTDATA 配列の各要素は、単一キーの状態変化、すなわち、押下または解放を表す。Microsoft® DirectInput® は、キーボードから直接データを取得するために、コントロール パネルの文字反復の設定はすべて無視する。すなわち、キーストロークは、キーが押下されている時間の長短に関係なく、1 度しかカウントされないということになる。
配列中の要素がどのキーを指すかは、CONST_DIKEYFLAGS 列挙の定数と、DIDEVICEOBJECTDATA 型の lOfs メンバを比較することにより確認できる (「キーボード データの解釈」も参照すること)。
キーの状態変化データは、DIDEVICEOBJECTDATA 型の lData メンバに格納されている。lData の下位バイトだけが有意である。上位ビットはキーが押されたときに設定され、キーが離されたときに消去される。言い換えれば、(lData And &H80) がゼロでないとき、キーが押されていることになる。