enum{
    KeyCode_A = 1,
    KeyCode_B = 2,
    KeyCode_C = 3,
    KeyCode_D = 4,
    KeyCode_E = 5,
    KeyCode_F = 6,
    KeyCode_G = 7,
    KeyCode_H = 8,
    KeyCode_I = 9,
    KeyCode_J = 10,
    KeyCode_K = 11,
    KeyCode_L = 12,
    KeyCode_M = 13,
    KeyCode_N = 14,
    KeyCode_O = 15,
    KeyCode_P = 16,
    KeyCode_Q = 17,
    KeyCode_R = 18,
    KeyCode_S = 19,
    KeyCode_T = 20,
    KeyCode_U = 21,
    KeyCode_V = 22,
    KeyCode_W = 23,
    KeyCode_X = 24,
    KeyCode_Y = 25,
    KeyCode_Z = 26,
    KeyCode_0 = 27,
    KeyCode_1 = 28,
    KeyCode_2 = 29,
    KeyCode_3 = 30,
    KeyCode_4 = 31,
    KeyCode_5 = 32,
    KeyCode_6 = 33,
    KeyCode_7 = 34,
    KeyCode_8 = 35,
    KeyCode_9 = 36,
    KeyCode_Space = 37,
    KeyCode_Tick = 38,
    KeyCode_Minus = 39,
    KeyCode_Equal = 40,
    KeyCode_LeftBracket = 41,
    KeyCode_RightBracket = 42,
    KeyCode_Semicolon = 43,
    KeyCode_Quote = 44,
    KeyCode_Comma = 45,
    KeyCode_Period = 46,
    KeyCode_ForwardSlash = 47,
    KeyCode_BackwardSlash = 48,
    KeyCode_Tab = 49,
    KeyCode_Escape = 50,
    KeyCode_Pause = 51,
    KeyCode_Up = 52,
    KeyCode_Down = 53,
    KeyCode_Left = 54,
    KeyCode_Right = 55,
    KeyCode_Backspace = 56,
    KeyCode_Return = 57,
    KeyCode_Delete = 58,
    KeyCode_Insert = 59,
    KeyCode_Home = 60,
    KeyCode_End = 61,
    KeyCode_PageUp = 62,
    KeyCode_PageDown = 63,
    KeyCode_CapsLock = 64,
    KeyCode_NumLock = 65,
    KeyCode_ScrollLock = 66,
    KeyCode_Menu = 67,
    KeyCode_Shift = 68,
    KeyCode_Control = 69,
    KeyCode_Alt = 70,
    KeyCode_Command = 71,
    KeyCode_F1 = 72,
    KeyCode_F2 = 73,
    KeyCode_F3 = 74,
    KeyCode_F4 = 75,
    KeyCode_F5 = 76,
    KeyCode_F6 = 77,
    KeyCode_F7 = 78,
    KeyCode_F8 = 79,
    KeyCode_F9 = 80,
    KeyCode_F10 = 81,
    KeyCode_F11 = 82,
    KeyCode_F12 = 83,
    KeyCode_F13 = 84,
    KeyCode_F14 = 85,
    KeyCode_F15 = 86,
    KeyCode_F16 = 87,
    KeyCode_F17 = 88,
    KeyCode_F18 = 89,
    KeyCode_F19 = 90,
    KeyCode_F20 = 91,
    KeyCode_F21 = 92,
    KeyCode_F22 = 93,
    KeyCode_F23 = 94,
    KeyCode_F24 = 95,
    KeyCode_NumPad0 = 96,
    KeyCode_NumPad1 = 97,
    KeyCode_NumPad2 = 98,
    KeyCode_NumPad3 = 99,
    KeyCode_NumPad4 = 100,
    KeyCode_NumPad5 = 101,
    KeyCode_NumPad6 = 102,
    KeyCode_NumPad7 = 103,
    KeyCode_NumPad8 = 104,
    KeyCode_NumPad9 = 105,
    KeyCode_NumPadStar = 106,
    KeyCode_NumPadPlus = 107,
    KeyCode_NumPadMinus = 108,
    KeyCode_NumPadDot = 109,
    KeyCode_NumPadSlash = 110,
    KeyCode_Ex0 = 111,
    KeyCode_Ex1 = 112,
    KeyCode_Ex2 = 113,
    KeyCode_Ex3 = 114,
    KeyCode_Ex4 = 115,
    KeyCode_Ex5 = 116,
    KeyCode_Ex6 = 117,
    KeyCode_Ex7 = 118,
    KeyCode_Ex8 = 119,
    KeyCode_Ex9 = 120,
    KeyCode_Ex10 = 121,
    KeyCode_Ex11 = 122,
    KeyCode_Ex12 = 123,
    KeyCode_Ex13 = 124,
    KeyCode_Ex14 = 125,
    KeyCode_Ex15 = 126,
    KeyCode_Ex16 = 127,
    KeyCode_Ex17 = 128,
    KeyCode_Ex18 = 129,
    KeyCode_Ex19 = 130,
    KeyCode_Ex20 = 131,
    KeyCode_Ex21 = 132,
    KeyCode_Ex22 = 133,
    KeyCode_Ex23 = 134,
    KeyCode_Ex24 = 135,
    KeyCode_Ex25 = 136,
    KeyCode_Ex26 = 137,
    KeyCode_Ex27 = 138,
    KeyCode_Ex28 = 139,
    KeyCode_Ex29 = 140,
    KeyCode_COUNT = 141,
};
global char* key_code_name[KeyCode_COUNT] = {
    "None",
    "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",
    "0",
    "1",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "Space",
    "Tick",
    "Minus",
    "Equal",
    "LeftBracket",
    "RightBracket",
    "Semicolon",
    "Quote",
    "Comma",
    "Period",
    "ForwardSlash",
    "BackwardSlash",
    "Tab",
    "Escape",
    "Pause",
    "Up",
    "Down",
    "Left",
    "Right",
    "Backspace",
    "Return",
    "Delete",
    "Insert",
    "Home",
    "End",
    "PageUp",
    "PageDown",
    "CapsLock",
    "NumLock",
    "ScrollLock",
    "Menu",
    "Shift",
    "Control",
    "Alt",
    "Command",
    "F1",
    "F2",
    "F3",
    "F4",
    "F5",
    "F6",
    "F7",
    "F8",
    "F9",
    "F10",
    "F11",
    "F12",
    "F13",
    "F14",
    "F15",
    "F16",
    "F17",
    "F18",
    "F19",
    "F20",
    "F21",
    "F22",
    "F23",
    "F24",
    "NumPad0",
    "NumPad1",
    "NumPad2",
    "NumPad3",
    "NumPad4",
    "NumPad5",
    "NumPad6",
    "NumPad7",
    "NumPad8",
    "NumPad9",
    "NumPadStar",
    "NumPadPlus",
    "NumPadMinus",
    "NumPadDot",
    "NumPadSlash",
    "Ex0",
    "Ex1",
    "Ex2",
    "Ex3",
    "Ex4",
    "Ex5",
    "Ex6",
    "Ex7",
    "Ex8",
    "Ex9",
    "Ex10",
    "Ex11",
    "Ex12",
    "Ex13",
    "Ex14",
    "Ex15",
    "Ex16",
    "Ex17",
    "Ex18",
    "Ex19",
    "Ex20",
    "Ex21",
    "Ex22",
    "Ex23",
    "Ex24",
    "Ex25",
    "Ex26",
    "Ex27",
    "Ex28",
    "Ex29",
};
enum{
    MouseCode_Left = 1,
    MouseCode_Middle = 2,
    MouseCode_Right = 3,
    MouseCode_COUNT = 4,
};
global char* mouse_code_name[MouseCode_COUNT] = {
    "None",
    "Left",
    "Middle",
    "Right",
};
enum{
    CoreCode_Startup = 1,
    CoreCode_Animate = 2,
    CoreCode_ClickActivateView = 3,
    CoreCode_ClickDeactivateView = 4,
    CoreCode_TryExit = 5,
    CoreCode_FileExternallyModified = 6,
    CoreCode_NewClipboardContents = 7,
    CoreCode_COUNT = 8,
};
global char* core_code_name[CoreCode_COUNT] = {
    "None",
    "Startup",
    "Animate",
    "ClickActivateView",
    "ClickDeactivateView",
    "TryExit",
    "FileExternallyModified",
    "NewClipboardContents",
};
