Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef INPUT_H
- #define INPUT_H
- #pragma once
- #include "..\Include\Main.h"
- typedef LRESULT (WINAPI* WndProcFn)(HWND, UINT, WPARAM, LPARAM);
- #define GET_KS_BYTE(vk) ((vk) * 2 / 8)
- #define GET_KS_DOWN_BIT(vk) (1 << (((vk) % 4) * 2))
- #define GET_KS_LOCK_BIT(vk) (1 << (((vk) % 4) * 2 + 1))
- #define IS_KEY_DOWN(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_DOWN_BIT(vk)) ? TRUE : FALSE)
- #define IS_KEY_LOCKED(ks, vk) (((ks)[GET_KS_BYTE(vk)] & GET_KS_LOCK_BIT(vk)) ? TRUE : FALSE)
- #define SET_KEY_LOCKED(ks, vk, down) ((down) ? \
- ((ks)[GET_KS_BYTE(vk)] | GET_KS_LOCK_BIT(vk)) : \
- ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_LOCK_BIT(vk)))
- #define SET_KEY_DOWN(ks, vk, down) ((down) ? \
- ((ks)[GET_KS_BYTE(vk)] | GET_KS_DOWN_BIT(vk)) : \
- ((ks)[GET_KS_BYTE(vk)] & ~GET_KS_DOWN_BIT(vk)))
- class CInput {
- public:
- CInput();
- ~CInput();
- void SetupHook();
- void RemoveHook();
- WORD GetKeyState(int Key);
- private:
- void UpdateAsyncKeyState(WORD wVk, BOOL bIsDown);
- static LRESULT WINAPI WndHook(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
- private:
- WndProcFn m_WndOriginal;
- BYTE m_AsyncKeyState[256 * 2 / 8];
- BYTE m_AsyncKeyStateRecentDown[256 / 8];
- };
- extern CInput* g_pInput;
- #endif // INPUT_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement