#ifndef __KEYBOARD_H__
#define __KEYBOARD_H__

#ifdef __HOME__
#include "d:\job\include\Keyboard.cpp"
#else
#include "d:\job\include\Keyboard.cpp"
#endif

bool			cKeyboard::GetKeyboardState( void ){
	if( !Buffer ){
		MessageBox( 0 , "Буффер клавиатуры не инициализирован." , "Ошибка" , 0 );
		return( false );
	}
	if( DIKeyboard->GetDeviceState( 256 , ( LPVOID ) Buffer ) != DI_OK ){
		MessageBox( 0 , "Ошибка получения состояния клавиатуры." , "Ошибка" , 0 );
		return( false );
	}
	return( true );
}

bool			cKeyboard::GetButtonState( char Button ){
	if( !Buffer ){
		MessageBox( 0 , "Буффер клавиатуры не инициализирован." , "Ошибка" , 0 );
		return( false );
	}
	return( Buffer[ Button ] & 0x80 );
}

void			cKeyboard::Release( void ){
	if( DIKeyboard )
		DIKeyboard->Release();
	if( Buffer )
		delete [] Buffer;
}

bool			cKeyboard::InitKeyboard( cDIObject &DIObject , HWND hWnd ){
	Buffer = new char[ 256 ];

	if( DIObject->CreateDevice( GUID_SysKeyboard , &DIKeyboard , NULL ) != DI_OK ){
		MessageBox( 0 , "Ошибка создания девайса для клавиатуры." , "Ошибка" , 0 );
		return( false );
	}

	if( DIKeyboard->SetDataFormat( &c_dfDIKeyboard ) != DI_OK ){
		MessageBox( 0 , "Ошибка установки формата клавиатуры." , "Ошибка" , 0 );
		return( false );
	}

	if( DIKeyboard->SetCooperativeLevel( hWnd , DISCL_BACKGROUND | DISCL_NONEXCLUSIVE ) != DI_OK){
		MessageBox( 0 , "Ошибка установки Cooperative Level'а для клавиатуры." , "Ошибка" , 0 );
		return( false );
	}

	if( DIKeyboard->Acquire() != DI_OK ){
		MessageBox( 0 , "Ошибка получения доступа к клавиатуры." , "Ошибка." , 0 );
		return( false );
	}

	return( true );
}

#endif