///////////////////////////////////////////////////////////////////// // Created by [Dennis Andersen] [2013] ///////////////////////////////////////////////////////////////////// #ifndef INPUT_KEYBOARD_H #define INPUT_KEYBOARD_H #include "..\Keyboard.h" #define NOMINMAX #include namespace Input { class Win32Keyboard :public Keyboard { public: Win32Keyboard(HWND target); ~Win32Keyboard(); bool IsKeyUp (Enum::SAKI key) override; bool IsKeyDown (Enum::SAKI key) override; wchar_t* GetAsText(Enum::SAKI key) override; public: /* From InputObject */ void Activate () override; void Deactivate () override; inline bool IsActive() override { return this->isActive; } void ProccessKeyboardData (RAWKEYBOARD keyboard); bool Create( ); private: void MapKey(RAWKEYBOARD& rawKB, Enum::SAKI& out_key, bool& isE0); struct Keys { bool isE0; bool isDown; unsigned int makecode; }; RAWINPUTDEVICE device; static const int MAXKEYS = 256; Keys keys[MAXKEYS]; bool isActive; }; } #endif // !INPUT_KEYBOARD_H