Yo lo he hecho alguna vez en C++, te comento como debería hacerse... para usar Direct Input para leer el teclado, debería: Código en C++
Variables necesarias:
LPDIRECTINPUTDEVICE8 keyboard_device;
char keyboard_state[ 256 ];
Inicializar el teclado:
HRESULT hr;
if (FAILED(hr=direct_input->CreateDevice(GUID_SysKeyboard,&keyboard_device,NULL)))
return;
if (keyboard_device->SetDataFormat(&c_dfDIKeyboard))
return;
DWORD flags = 0;
flags = DISCL_NONEXCLUSIVE;
flags |= DISCL_BACKGROUND;
if( keyboard_device->SetCooperativeLevel( hWnd, flags ) )
return;
if( keyboard_device )
keyboard_device->Acquire( );
update de teclado
HRESULT hr = keyboard_device->GetDeviceState( sizeof( keyboard_state ), &keyboard_state );
while( hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED )
hr = keyboard_device->Acquire( );
para comprovar si una tecla ha sido pulsada
bool isKeyPressed( int key ) const {
return (keyboard_state[ key ] & 0x80) != 0;
}
Spear
Web