#pragma once

#define VK_NONE  -1
#define	VK_KEY_0 0x30
#define	VK_KEY_1 0x31
#define	VK_KEY_2 0x32
#define	VK_KEY_3 0x33
#define	VK_KEY_4 0x34
#define	VK_KEY_5 0x35
#define	VK_KEY_6 0x36
#define	VK_KEY_7 0x37
#define	VK_KEY_8 0x38
#define	VK_KEY_9 0x39
#define	VK_KEY_A 0x41
#define	VK_KEY_B 0x42
#define	VK_KEY_C 0x43
#define	VK_KEY_D 0x44
#define	VK_KEY_E 0x45
#define	VK_KEY_F 0x46
#define	VK_KEY_G 0x47
#define	VK_KEY_H 0x48
#define	VK_KEY_I 0x49
#define	VK_KEY_J 0x4A
#define	VK_KEY_K 0x4B
#define	VK_KEY_L 0x4C
#define	VK_KEY_M 0x4D
#define	VK_KEY_N 0x4E
#define	VK_KEY_O 0x4F
#define	VK_KEY_P 0x50
#define	VK_KEY_Q 0x51
#define	VK_KEY_R 0x52
#define	VK_KEY_S 0x53
#define	VK_KEY_T 0x54
#define	VK_KEY_U 0x55
#define	VK_KEY_V 0x56
#define	VK_KEY_W 0x57
#define	VK_KEY_X 0x58
#define	VK_KEY_Y 0x59
#define	VK_KEY_Z 0x5A


static std::string key_names[]
{
	"LMB",
	"RMB",
	"Cancel",
	"MMB",
	"X1MB",
	"X2MB",
	"Unknown1",
	"Back",
	"Tab",
	"Reserved1",
	"Reserved2",
	"Clear",
	"Enter",
	"Unknown2",
	"Unknown3",
	"Shift",
	"Ctrl",
	"Alt",
	"Pause",
	"Capslock",
	"IME",
	"IME2",
	"IME3",
	"Unknown4",
	"IME4",
	"Unknown5",
	"Esc",
	"IME5"
	"IME6",
	"IME7",
	"IME8",
	"IME9",
	"Space",
	"Pup",
	"Pdown",
	"End",
	"Home",
	"Left",
	"Up",
	"Right",
	"Down",
	"Select",
	"Print",
	"Execute",
	"Print Screen",
	"INS",
	"Del",
	"Help",
	"0",
	"1",
	"2",
	"3",
	"4",
	"5",
	"6",
	"7",
	"8",
	"9",
	"Unknown6",
	"Unknown7",
	"Unknown8",
	"Unknown9",
	"Unknown10",
	"Unknown11",
	"Unknown12",
	"A",
	"B",
	"C",
	"D",
	"E",
	"F",
	"G",
	"H",
	"I",
	"J",
	"K",
	"L",
	"M",
	"N",
	"O",
	"P",
	"Q",
	"R",
	"S",
	"T",
	"U",
	"V",
	"W",
	"X",
	"Y",
	"Z",
	"LWin",
	"RWin",
	"Apps",
	"Unknown11",
	"Sleep",
	"Numpad 0",
	"Numpad 1",
	"Numpad 2",
	"Numpad 3",
	"Numpad 4",
	"Numpad 5",
	"Numpad 6",
	"Numpad 7",
	"Numpad 8",
	"Numpad 9",
	"Multiply",
	"Add",
	"Separator",
	"Substract",
	"Decimal",
	"Divide",
	"F1",
	"F2",
	"F3",
	"F4",
	"F5",
	"F6",
	"F7",
	"F8",
	"F9",
	"F10",
	"F11",
	"F12",
	"F13",
	"F14",
	"F15",
	"F16",
	"F17",
	"F18",
	"F19",
	"F20",
	"F21",
	"F22",
	"F23",
	"F24",
	"Unknown12",
	"Unknown13",
	"Unknown14",
	"Unknown15",
	"Unknown16",
	"Unknown17",
	"Unknown18",
	"Numlock",
	"Scroll",
	"Unknown19",
	"Unknown20",
	"Unknown21",
	"Unknown22",
	"Unknown23",
	"Unknown24",
	"Unknown25",
	"Unknown26",
	"Unknown27",
	"Unknown28",
	"Unknown29",
	"Unknown30",
	"Unknown31",
	"Unknown32",
	"Unknown33",
	"LShift",
	"RShift",
	"LCtrl",
	"RCtrl",
	"LMenu",
	"RMenu"
};
