LETTER_KEYS: set[str] = {
    "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",
}

NUMBER_KEYS: set[str] = {
    "0",
    "1",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
}

FUNCTION_KEYS: set[str] = {
    "F1",
    "F2",
    "F3",
    "F4",
    "F5",
    "F6",
    "F7",
    "F8",
    "F9",
    "F10",
    "F11",
    "F12",
}

SYMBOL_KEYS: set[str] = {
    "`",
    "TILDE",
    "-",
    "MINUS",
    "EQUALS",
    "BACKSPACE",
    "TAB",
    "[",
    "LBRACKET",
    "]",
    "RBRACKET",
    "\\",
    "BACKSLASH",
    "CAPITAL",
    ";",
    "SEMICOLON",
    "'",
    "APOSTROPHE",
    "COMMA",
    ".",
    "PERIOD",
    "/",
    "SLASH",
    "SPACE",
}

SYSTEM_KEYS: set[str] = {
    "ESC",
    "ESCAPE",
    "APPS",
    "SYSRQ",
    "SCROLL",
    "PAUSE",
    "INSERT",
    "DELETE",
}

NAVIGATION_KEYS: set[str] = {
    "HOME",
    "END",
    "PAGEUP",
    "PRIOR",
    "PAGEDOWN",
    "NEXT",
}

ARROW_KEYS: set[str] = {
    "UPARROW",
    "UP",
    "DOWNARROW",
    "DOWN",
    "LEFTARROW",
    "LEFT",
    "RIGHTARROW",
    "RIGHT",
}

MODIFIER_KEYS: set[str] = {
    "LSHIFT",
    "RSHIFT",
    "LALT",
    "LMENU",
    "RALT",
    "RMENU",
    "LCONTROL",
    "LCTRL",
    "RCONTROL",
    "RCTRL",
    "RWIN",
    "LWIN",
}

INTERNATIONAL_KEYS: set[str] = {
    "KANJI",
    "CONVERT",
    "KANA",
}

NUMPAD_KEYS: set[str] = {
    "NUMPAD0",
    "NUMPAD1",
    "NUMPAD2",
    "NUMPAD3",
    "NUMPAD4",
    "NUMPAD5",
    "NUMPAD6",
    "NUMPAD7",
    "NUMPAD8",
    "NUMPAD9",
    "NUMLOCK",
    "DIVIDE",
    "MULTIPLY",
    "SUBTRACT",
    "ADD",
    "DECIMAL",
    "NUMPADENTER",
}

MOUSE_KEYS: set[str] = {
    "LBUTTON",
    "LEFTCLICK",
    "LCLICK",
    "RBUTTON",
    "RIGHTCLICK",
    "RCLICK",
    "MBUTTON",
    "MIDDLECLICK",
    "MCLICK",
    "BUTTON4",
    "BUTTON5",
    "BUTTON6",
    "BUTTON7",
    "BUTTON8",
    "LEFTDOUBLECLICK",
    "LDOUBLECLICK",
    "RIGHTDOUBLECLICK",
    "RDOUBLECLICK",
    "MIDDLEDOUBLECLICK",
    "MDOUBLECLICK",
    "MOUSECHORD",
    "MOUSE_CHORD",
    "LEFTDRAGWORLD",
    "MIDDLEDRAG",
    "MDRAG",
    "MOUSEWHEEL",
    "WHEELPLUS",
    "MOUSEWHEEL_FORWARD",
    "WHEELMINUS",
    "MOUSEWHEEL_BACKWARD",
}

CONTROLLER_KEYS: set[str] = {
    "JOY1",
    "ABUTTON",
    "CROSSBUTTON",
    "JOY2",
    "BBUTTON",
    "CIRCLEBUTTON",
    "JOY3",
    "XBUTTON",
    "SQUAREBUTTON",
    "JOY4",
    "YBUTTON",
    "TRIANGLEBUTTON",
    "JOY5",
    "LEFTBUMPER",
    "LBUMPER",
    "LEFTSHOULDER",
    "LSHOULDER",
    "JOY6",
    "RIGHTBUMPER",
    "RBUMPER",
    "RIGHTSHOULDER",
    "RSHOULDER",
    "JOY7",
    "LEFTTRIGGER",
    "LTRIGGER",
    "JOY8",
    "RIGHTTRIGGER",
    "RTRIGGER",
    "JOY9",
    "LEFTTHUMB",
    "LTHUMB",
    "JOY10",
    "RIGHTTHUMB",
    "RTHUMB",
    "JOY11",
    "STARTBUTTON",
    "OPTIONSBUTTON",
    "JOY12",
    "BACKBUTTON",
    "SHAREBUTTON",
    "JOY13",
    "JOY14",
    "JOY15",
    "JOY16",
    "JOY17",
    "JOY18",
    "JOY19",
    "JOY20",
    "JOY21",
    "JOY22",
    "JOY23",
    "JOY24",
    "JOY25",
    "JOYPAD_UP",
    "DPADUP",
    "JOYPAD_DOWN",
    "DPADDOWN",
    "JOYPAD_LEFT",
    "DPADLEFT",
    "JOYPAD_RIGHT",
    "DPADRIGHT",
    "JOYSTICK1_UP",
    "JOYSTICK1_DOWN",
    "JOYSTICK1_LEFT",
    "JOYSTICK1_RIGHT",
    "JOYSTICK2_UP",
    "JOYSTICK2_DOWN",
    "JOYSTICK2_LEFT",
    "JOYSTICK2_RIGHT",
    "JOYSTICK3_UP",
    "JOYSTICK3_DOWN",
    "JOYSTICK3_LEFT",
    "JOYSTICK3_RIGHT",
    "POV1_UP",
    "POV1_DOWN",
    "POV1_LEFT",
    "POV1_RIGHT",
    "POV2_UP",
    "POV2_DOWN",
    "POV2_LEFT",
    "POV2_RIGHT",
    "POV3_UP",
    "POV3_DOWN",
    "POV3_LEFT",
    "POV3_RIGHT",
}

TRIGGER_KEYS: set[str] = (
    LETTER_KEYS
    | NUMBER_KEYS
    | FUNCTION_KEYS
    | SYMBOL_KEYS
    | SYSTEM_KEYS
    | NAVIGATION_KEYS
    | ARROW_KEYS
    | MODIFIER_KEYS
    | INTERNATIONAL_KEYS
    | NUMPAD_KEYS
    | MOUSE_KEYS
    | CONTROLLER_KEYS
)
