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_COUNT = 88,
};
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",
};
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",
};