Advertisement
keybode

Input.h

Jan 22nd, 2015
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #ifndef INPUT_H
  2. #define INPUT_H
  3.  
  4. #pragma once
  5.  
  6. #include "..\Include\Main.h"
  7.  
  8. typedef LRESULT (WINAPI* WndProcFn)(HWND, UINT, WPARAM, LPARAM);
  9.  
  10. #define GET_KS_BYTE(vk)                 ((vk) * 2 / 8)
  11. #define GET_KS_DOWN_BIT(vk)             (1 << (((vk) % 4) * 2))
  12. #define GET_KS_LOCK_BIT(vk)             (1 << (((vk) % 4) * 2 + 1))
  13. #define IS_KEY_DOWN(ks, vk)             (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
  14. #define IS_KEY_LOCKED(ks, vk)           (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
  15. #define SET_KEY_LOCKED(ks, vk, down)    ((down) ? \
  16.                                         ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
  17.                                         ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
  18. #define SET_KEY_DOWN(ks, vk, down)      ((down) ? \
  19.                                         ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
  20.                                         ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
  21.  
  22. class CInput {
  23. public:
  24.                             CInput();
  25.                             ~CInput();
  26.  
  27.     void                    SetupHook();
  28.     void                    RemoveHook();
  29.  
  30.     WORD                    GetKeyState(int Key);
  31.  
  32. private:
  33.     void                    UpdateAsyncKeyState(WORD wVk, BOOL bIsDown);
  34.  
  35.     static LRESULT WINAPI   WndHook(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
  36.  
  37. private:
  38.     WndProcFn               m_WndOriginal;
  39.  
  40.     BYTE                    m_AsyncKeyState[256 * 2 / 8];
  41.     BYTE                    m_AsyncKeyStateRecentDown[256 / 8];
  42. };
  43.  
  44. extern CInput* g_pInput;
  45.  
  46. #endif // INPUT_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement