-
Автор темы
- #1
Писалось давно для одного из проектов.
Суть: перечень всех стандартных клавиш клавиатуры и мыши + способы визуального отображения нажатых пользователем клавишь
Вроде симпатичней смотрится)))
Имя клавиш(писал для InputManager'a), две вариации:
1) std::vector(Инкапсулирующий массив):
2) std::map(ассоциативный массив);
Суть: перечень всех стандартных клавиш клавиатуры и мыши + способы визуального отображения нажатых пользователем клавишь
Код:
enum class vKey : UINT
{
KEY_MOUSE_BUTTON_LEFT = 1,
KEY_MOUSE_BUTTON_RIGHT,
KEY_CANCEL,
KEY_MOUSE_BUTTON_MIDDLE,
KEY_0 = 48,
KEY_1,
KEY_2,
KEY_3,
KEY_4,
KEY_5,
KEY_6,
KEY_7,
KEY_8,
KEY_9,
KEY_A = 65,
KEY_B,
KEY_C,
KEY_D,
KEY_E,
KEY_F,
KEY_G,
KEY_H,
KEY_I,
KEY_J,
KEY_K,
KEY_L,
KEY_M,
KEY_N,
KEY_O,
KEY_P,
KEY_Q,
KEY_R,
KEY_S,
KEY_T,
KEY_U,
KEY_V,
KEY_W,
KEY_X,
KEY_Y,
KEY_Z,
KEY_NUMPAD_0 = 320,
KEY_NUMPAD_1,
KEY_NUMPAD_2,
KEY_NUMPAD_3,
KEY_NUMPAD_4,
KEY_NUMPAD_5,
KEY_NUMPAD_6,
KEY_NUMPAD_7,
KEY_NUMPAD_8,
KEY_NUMPAD_9,
KEY_F1 = 290,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_F10,
KEY_F11,
KEY_F12,
KEY_SHIFT_LEFT = 340,
KEY_CTRL_LEFT,
KEY_ALT_LEFT,
KEY_SHIFT_RIGHT = 344,
KEY_CTRL_RIGHT,
KEY_ALT_RIGHT,
KEY_SPACE = 32,
KEY_ESC = 256,
KEY_ENTER,
KEY_TAB,
KEY_BACKSPACE,
KEY_INSERT = 260,
KEY_DELETE,
KEY_ARROW_RIGHT,
KEY_ARROW_LEFT,
KEY_ARROW_DOWN,
KEY_ARROW_UP,
KEY_PAGE_UP,
KEY_PAGE_DOWN,
KEY_HOME,
KEY_END,
KEY_CAPS_LOCK = 280,
KEY_SCROLL_LOCK,
KEY_NUM_LOCK,
KEY_PRINT_SCREEN,
KEY_PAUSE,
};
Код:
if (GetAsyncKeyState((UINT)vKey::KEY_END))
break;
Имя клавиш(писал для InputManager'a), две вариации:
1) std::vector(Инкапсулирующий массив):
Код:
struct VIRTUALKEY
{
vKey uiKey;
PCHAR szKey;
};
std::vector<VIRTUALKEY> vtable =
{
{ vKey::KEY_MOUSE_BUTTON_LEFT, "LeftClick" },
{ vKey::KEY_MOUSE_BUTTON_RIGHT, "RighClick" },
{ vKey::KEY_MOUSE_BUTTON_MIDDLE, "MiddleMouse" },
{ vKey::KEY_0, "0" },
{ vKey::KEY_1, "1" },
{ vKey::KEY_2, "2" },
{ vKey::KEY_3, "3" },
{ vKey::KEY_4, "4" },
{ vKey::KEY_5, "5" },
{ vKey::KEY_6, "6" },
{ vKey::KEY_7, "7" },
{ vKey::KEY_8, "8" },
{ vKey::KEY_9, "9" },
{ vKey::KEY_A, "A" },
{ vKey::KEY_B, "B" },
{ vKey::KEY_C, "C" },
{ vKey::KEY_D, "D" },
{ vKey::KEY_E, "E" },
{ vKey::KEY_F, "F" },
{ vKey::KEY_G, "G" },
{ vKey::KEY_H, "H" },
{ vKey::KEY_I, "I" },
{ vKey::KEY_J, "J" },
{ vKey::KEY_K, "K" },
{ vKey::KEY_L, "L" },
{ vKey::KEY_M, "M" },
{ vKey::KEY_N, "N" },
{ vKey::KEY_O, "O" },
{ vKey::KEY_P, "P" },
{ vKey::KEY_Q, "Q" },
{ vKey::KEY_R, "R" },
{ vKey::KEY_S, "S" },
{ vKey::KEY_T, "T" },
{ vKey::KEY_U, "U" },
{ vKey::KEY_V, "V" },
{ vKey::KEY_W, "W" },
{ vKey::KEY_X, "X" },
{ vKey::KEY_Y, "Y" },
{ vKey::KEY_Z, "Z" },
{ vKey::KEY_NUMPAD_0, "NUM 0" },
{ vKey::KEY_NUMPAD_1, "NUM 1" },
{ vKey::KEY_NUMPAD_2, "NUM 2" },
{ vKey::KEY_NUMPAD_3, "NUM 3" },
{ vKey::KEY_NUMPAD_4, "NUM 4" },
{ vKey::KEY_NUMPAD_5, "NUM 5" },
{ vKey::KEY_NUMPAD_6, "NUM 6" },
{ vKey::KEY_NUMPAD_7, "NUM 7" },
{ vKey::KEY_NUMPAD_8, "NUM 8" },
{ vKey::KEY_NUMPAD_9, "NUM 9" },
{ vKey::KEY_F1, "F1" },
{ vKey::KEY_F2, "F2" },
{ vKey::KEY_F3, "F3" },
{ vKey::KEY_F4, "F4" },
{ vKey::KEY_F5, "F5" },
{ vKey::KEY_F6, "F6" },
{ vKey::KEY_F7, "F7" },
{ vKey::KEY_F8, "F8" },
{ vKey::KEY_F9, "F9" },
{ vKey::KEY_F10, "F10" },
{ vKey::KEY_F11, "F11" },
{ vKey::KEY_F12, "F12" },
{ vKey::KEY_SHIFT_LEFT, "SHIFT L" },
{ vKey::KEY_CTRL_LEFT, "CTRL L" },
{ vKey::KEY_ALT_LEFT, "ALT L" },
{ vKey::KEY_SHIFT_RIGHT, "SHIFT R" },
{ vKey::KEY_CTRL_RIGHT, "CTRL R" },
{ vKey::KEY_ALT_RIGHT, "ALT R" },
{ vKey::KEY_SPACE, "Space" },
{ vKey::KEY_ESC, "Esc" },
{ vKey::KEY_ENTER, "Enter" },
{ vKey::KEY_TAB, "Tab" },
{ vKey::KEY_BACKSPACE, "BackSpace" },
{ vKey::KEY_INSERT, "Iinsert" },
{ vKey::KEY_DELETE, "Delete" },
{ vKey::KEY_ARROW_RIGHT, "Right" },
{ vKey::KEY_ARROW_LEFT, "Left" },
{ vKey::KEY_ARROW_DOWN, "Down" },
{ vKey::KEY_ARROW_UP, "Up" },
{ vKey::KEY_PAGE_UP, "Page Up" },
{ vKey::KEY_PAGE_DOWN, "Page Down" },
{ vKey::KEY_HOME, "Home" },
{ vKey::KEY_END, "End" },
{ vKey::KEY_CAPS_LOCK, "CapsLock" },
{ vKey::KEY_SCROLL_LOCK, "ScrollLock" },
{ vKey::KEY_NUM_LOCK, "NumLock" },
{ vKey::KEY_PRINT_SCREEN, "PrintScreen" },
{ vKey::KEY_PAUSE, "Pause" },
};
Код:
while (true)
{
for (size_t i = 0; i < vKeyTable.size(); i++)
{
if (GetAsyncKeyState(UINT(vKeyTable[i].uiKey)))
std::cout << UINT(vKeyTable[i].uiKey) << " : " << vKeyTable[i].szKey << std::endl;//отабразит кид и имя нажатой клавиши
}
}
Код:
std::map <vKey, std::string> mKeyTable =
{
{ vKey::KEY_MOUSE_BUTTON_LEFT, "LeftClick" },
{ vKey::KEY_MOUSE_BUTTON_RIGHT, "RighClick" },
{ vKey::KEY_MOUSE_BUTTON_MIDDLE, "MiddleMouse" },
{ vKey::KEY_0, "0" },
{ vKey::KEY_1, "1" },
{ vKey::KEY_2, "2" },
{ vKey::KEY_3, "3" },
{ vKey::KEY_4, "4" },
{ vKey::KEY_5, "5" },
{ vKey::KEY_6, "6" },
{ vKey::KEY_7, "7" },
{ vKey::KEY_8, "8" },
{ vKey::KEY_9, "9" },
{ vKey::KEY_A, "A" },
{ vKey::KEY_B, "B" },
{ vKey::KEY_C, "C" },
{ vKey::KEY_D, "D" },
{ vKey::KEY_E, "E" },
{ vKey::KEY_F, "F" },
{ vKey::KEY_G, "G" },
{ vKey::KEY_H, "H" },
{ vKey::KEY_I, "I" },
{ vKey::KEY_J, "J" },
{ vKey::KEY_K, "K" },
{ vKey::KEY_L, "L" },
{ vKey::KEY_M, "M" },
{ vKey::KEY_N, "N" },
{ vKey::KEY_O, "O" },
{ vKey::KEY_P, "P" },
{ vKey::KEY_Q, "Q" },
{ vKey::KEY_R, "R" },
{ vKey::KEY_S, "S" },
{ vKey::KEY_T, "T" },
{ vKey::KEY_U, "U" },
{ vKey::KEY_V, "V" },
{ vKey::KEY_W, "W" },
{ vKey::KEY_X, "X" },
{ vKey::KEY_Y, "Y" },
{ vKey::KEY_Z, "Z" },
{ vKey::KEY_NUMPAD_0, "NUM 0" },
{ vKey::KEY_NUMPAD_1, "NUM 1" },
{ vKey::KEY_NUMPAD_2, "NUM 2" },
{ vKey::KEY_NUMPAD_3, "NUM 3" },
{ vKey::KEY_NUMPAD_4, "NUM 4" },
{ vKey::KEY_NUMPAD_5, "NUM 5" },
{ vKey::KEY_NUMPAD_6, "NUM 6" },
{ vKey::KEY_NUMPAD_7, "NUM 7" },
{ vKey::KEY_NUMPAD_8, "NUM 8" },
{ vKey::KEY_NUMPAD_9, "NUM 9" },
{ vKey::KEY_F1, "F1" },
{ vKey::KEY_F2, "F2" },
{ vKey::KEY_F3, "F3" },
{ vKey::KEY_F4, "F4" },
{ vKey::KEY_F5, "F5" },
{ vKey::KEY_F6, "F6" },
{ vKey::KEY_F7, "F7" },
{ vKey::KEY_F8, "F8" },
{ vKey::KEY_F9, "F9" },
{ vKey::KEY_F10, "F10" },
{ vKey::KEY_F11, "F11" },
{ vKey::KEY_F12, "F12" },
{ vKey::KEY_SHIFT_LEFT, "SHIFT L" },
{ vKey::KEY_CTRL_LEFT, "CTRL L" },
{ vKey::KEY_ALT_LEFT, "ALT L" },
{ vKey::KEY_SHIFT_RIGHT, "SHIFT R" },
{ vKey::KEY_CTRL_RIGHT, "CTRL R" },
{ vKey::KEY_ALT_RIGHT, "ALT R" },
{ vKey::KEY_SPACE, "Space" },
{ vKey::KEY_ESC, "Esc" },
{ vKey::KEY_ENTER, "Enter" },
{ vKey::KEY_TAB, "Tab" },
{ vKey::KEY_BACKSPACE, "BackSpace" },
{ vKey::KEY_INSERT, "Iinsert" },
{ vKey::KEY_DELETE, "Delete" },
{ vKey::KEY_ARROW_RIGHT, "Right" },
{ vKey::KEY_ARROW_LEFT, "Left" },
{ vKey::KEY_ARROW_DOWN, "Down" },
{ vKey::KEY_ARROW_UP, "Up" },
{ vKey::KEY_PAGE_UP, "Page Up" },
{ vKey::KEY_PAGE_DOWN, "Page Down" },
{ vKey::KEY_HOME, "Home" },
{ vKey::KEY_END, "End" },
{ vKey::KEY_CAPS_LOCK, "CapsLock" },
{ vKey::KEY_SCROLL_LOCK, "ScrollLock" },
{ vKey::KEY_NUM_LOCK, "NumLock" },
{ vKey::KEY_PRINT_SCREEN, "PrintScreen" },
{ vKey::KEY_PAUSE, "Pause" }
};
Код:
while (true)
{
for (auto it = mKeyTable.begin(); it != mKeyTable.end(); ++it)
{
if (GetAsyncKeyState(UINT(it->first)))
std::cout << UINT(it->first) << " : " << it->second << std::endl;//отабразит кид и имя нажатой клавиши
}
}