共通の処理のDirectInput8オブジェクトの作成からアクセス権の取得と同じ処理をします。デバイス作成では「GUID_SysKeyboard」を指定します。
LPDIRECTINPUTDEVICE8 g_lpDIDevice = NULL; g_lpDI->CreateDevice( GUID_SysKeyboard, &g_lpDIDevice, NULL );
共通の処理 / デバイスの状態を取得と同じ処理をします。DIDEVICEOBJECTDATA構造体の「dwOfs」メンバにはキーボードデバイス定数の状態が格納されていています。たとえばアルファベットの「A」が押されているか判定するには下記のようにします。
// デバイスのバッファリングデータを取得する
while( TRUE )
{
DIDEVICEOBJECTDATA od;
HRESULT hr;
DWORD dwInOut = 1;
hr = g_lpDIDevice->GetDeviceData( sizeof(od), &od, &dwInOut, 0 );
if( FAILED(hr) || dwInOut == 0 ) break;
else
{
switch( od.dwOfs )
{
case DIK_A:
// Aが押された
break;
}
}
}
共通の処理 / 終了処理と同じ処理をします。
ここまでの手順でキーボードの状態をバッファリングデータで取得できます。使用例のサンプルを置いておきます。