$#include "Input/InputEvents.h" enum MouseButton { MOUSEB_LEFT, MOUSEB_MIDDLE, MOUSEB_RIGHT }; enum Qualifier { QUAL_SHIFT, QUAL_CTRL, QUAL_ALT, QUAL_ANY, }; enum Key { KEY_UNKNOWN, KEY_A, 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_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_BACKSPACE, KEY_TAB, KEY_RETURN, KEY_RETURN2, KEY_KP_ENTER, KEY_SHIFT, KEY_CTRL, KEY_ALT, KEY_GUI, KEY_PAUSE, KEY_CAPSLOCK, KEY_ESCAPE, KEY_SPACE, KEY_PAGEUP, KEY_PAGEDOWN, KEY_END, KEY_HOME, KEY_LEFT, KEY_UP, KEY_RIGHT, KEY_DOWN, KEY_SELECT, KEY_PRINTSCREEN, KEY_INSERT, KEY_DELETE, KEY_LGUI, KEY_RGUI, KEY_APPLICATION, KEY_KP_0, KEY_KP_1, KEY_KP_2, KEY_KP_3, KEY_KP_4, KEY_KP_5, KEY_KP_6, KEY_KP_7, KEY_KP_8, KEY_KP_9, KEY_KP_MULTIPLY, KEY_KP_PLUS, KEY_KP_MINUS, KEY_KP_PERIOD, KEY_KP_DIVIDE, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_F13, KEY_F14, KEY_F15, KEY_F16, KEY_F17, KEY_F18, KEY_F19, KEY_F20, KEY_F21, KEY_F22, KEY_F23, KEY_F24, KEY_NUMLOCKCLEAR, KEY_SCROLLLOCK, KEY_LSHIFT, KEY_RSHIFT, KEY_LCTRL, KEY_RCTRL, KEY_LALT, KEY_RALT, KEY_AC_BACK, KEY_AC_BOOKMARKS, KEY_AC_FORWARD, KEY_AC_HOME, KEY_AC_REFRESH, KEY_AC_SEARCH, KEY_AC_STOP, KEY_AGAIN, KEY_ALTERASE, KEY_AMPERSAND, KEY_ASTERISK, KEY_AT, KEY_AUDIOMUTE, KEY_AUDIONEXT, KEY_AUDIOPLAY, KEY_AUDIOPREV, KEY_AUDIOSTOP, KEY_BACKQUOTE, KEY_BACKSLASH, KEY_BRIGHTNESSDOWN, KEY_BRIGHTNESSUP, KEY_CALCULATOR, KEY_CANCEL, KEY_CARET, KEY_CLEAR, KEY_CLEARAGAIN, KEY_COLON, KEY_COMMA, KEY_COMPUTER, KEY_COPY, KEY_CRSEL, KEY_CURRENCYSUBUNIT, KEY_CURRENCYUNIT, KEY_CUT, KEY_DECIMALSEPARATOR, KEY_DISPLAYSWITCH, KEY_DOLLAR, KEY_EJECT, KEY_EQUALS, KEY_EXCLAIM, KEY_EXSEL, KEY_FIND, KEY_GREATER, KEY_HASH, KEY_HELP, KEY_KBDILLUMDOWN, KEY_KBDILLUMTOGGLE, KEY_KBDILLUMUP, KEY_KP_00, KEY_KP_000, KEY_KP_A, KEY_KP_AMPERSAND, KEY_KP_AT, KEY_KP_B, KEY_KP_BACKSPACE, KEY_KP_BINARY, KEY_KP_C, KEY_KP_CLEAR, KEY_KP_CLEARENTRY, KEY_KP_COLON, KEY_KP_COMMA, KEY_KP_D, KEY_KP_DBLAMPERSAND, KEY_KP_DBLVERTICALBAR, KEY_KP_DECIMAL, KEY_KP_E, KEY_KP_EQUALS, KEY_KP_EQUALSAS400, KEY_KP_EXCLAM, KEY_KP_F, KEY_KP_GREATER, KEY_KP_HASH, KEY_KP_HEXADECIMAL, KEY_KP_LEFTBRACE, KEY_KP_LEFTPAREN, KEY_KP_LESS, KEY_KP_MEMADD, KEY_KP_MEMCLEAR, KEY_KP_MEMDIVIDE, KEY_KP_MEMMULTIPLY, KEY_KP_MEMRECALL, KEY_KP_MEMSTORE, KEY_KP_MEMSUBTRACT, KEY_KP_OCTAL, KEY_KP_PERCENT, KEY_KP_PLUSMINUS, KEY_KP_POWER, KEY_KP_RIGHTBRACE, KEY_KP_RIGHTPAREN, KEY_KP_SPACE, KEY_KP_TAB, KEY_KP_VERTICALBAR, KEY_KP_XOR, KEY_LEFTBRACKET, KEY_LEFTPAREN, KEY_LESS, KEY_MAIL, KEY_MEDIASELECT, KEY_MENU, KEY_MINUS, KEY_MODE, KEY_MUTE, KEY_OPER, KEY_OUT, KEY_PASTE, KEY_PERCENT, KEY_PERIOD, KEY_PLUS, KEY_POWER, KEY_PRIOR, KEY_QUESTION, KEY_QUOTE, KEY_QUOTEDBL, KEY_RIGHTBRACKET, KEY_RIGHTPAREN, KEY_SEMICOLON, KEY_SEPARATOR, KEY_SLASH, KEY_SLEEP, KEY_STOP, KEY_SYSREQ, KEY_THOUSANDSSEPARATOR, KEY_UNDERSCORE, KEY_UNDO, KEY_VOLUMEDOWN, KEY_VOLUMEUP, KEY_WWW }; enum Scancode { SCANCODE_UNKNOWN, SCANCODE_CTRL, SCANCODE_SHIFT, SCANCODE_ALT, SCANCODE_GUI, SCANCODE_A, SCANCODE_B, SCANCODE_C, SCANCODE_D, SCANCODE_E, SCANCODE_F, SCANCODE_G, SCANCODE_H, SCANCODE_I, SCANCODE_J, SCANCODE_K, SCANCODE_L, SCANCODE_M, SCANCODE_N, SCANCODE_O, SCANCODE_P, SCANCODE_Q, SCANCODE_R, SCANCODE_S, SCANCODE_T, SCANCODE_U, SCANCODE_V, SCANCODE_W, SCANCODE_X, SCANCODE_Y, SCANCODE_Z, SCANCODE_1, SCANCODE_2, SCANCODE_3, SCANCODE_4, SCANCODE_5, SCANCODE_6, SCANCODE_7, SCANCODE_8, SCANCODE_9, SCANCODE_0, SCANCODE_RETURN, SCANCODE_ESCAPE, SCANCODE_BACKSPACE, SCANCODE_TAB, SCANCODE_SPACE, SCANCODE_MINUS, SCANCODE_EQUALS, SCANCODE_LEFTBRACKET, SCANCODE_RIGHTBRACKET, SCANCODE_BACKSLASH, SCANCODE_NONUSHASH, SCANCODE_SEMICOLON, SCANCODE_APOSTROPHE, SCANCODE_GRAVE, SCANCODE_COMMA, SCANCODE_PERIOD, SCANCODE_SLASH, SCANCODE_CAPSLOCK, SCANCODE_F1, SCANCODE_F2, SCANCODE_F3, SCANCODE_F4, SCANCODE_F5, SCANCODE_F6, SCANCODE_F7, SCANCODE_F8, SCANCODE_F9, SCANCODE_F10, SCANCODE_F11, SCANCODE_F12, SCANCODE_PRINTSCREEN, SCANCODE_SCROLLLOCK, SCANCODE_PAUSE, SCANCODE_INSERT, SCANCODE_HOME, SCANCODE_PAGEUP, SCANCODE_DELETE, SCANCODE_END, SCANCODE_PAGEDOWN, SCANCODE_RIGHT, SCANCODE_LEFT, SCANCODE_DOWN, SCANCODE_UP, SCANCODE_NUMLOCKCLEAR, SCANCODE_KP_DIVIDE, SCANCODE_KP_MULTIPLY, SCANCODE_KP_MINUS, SCANCODE_KP_PLUS, SCANCODE_KP_ENTER, SCANCODE_KP_1, SCANCODE_KP_2, SCANCODE_KP_3, SCANCODE_KP_4, SCANCODE_KP_5, SCANCODE_KP_6, SCANCODE_KP_7, SCANCODE_KP_8, SCANCODE_KP_9, SCANCODE_KP_0, SCANCODE_KP_PERIOD, SCANCODE_NONUSBACKSLASH, SCANCODE_APPLICATION, SCANCODE_POWER, SCANCODE_KP_EQUALS, SCANCODE_F13, SCANCODE_F14, SCANCODE_F15, SCANCODE_F16, SCANCODE_F17, SCANCODE_F18, SCANCODE_F19, SCANCODE_F20, SCANCODE_F21, SCANCODE_F22, SCANCODE_F23, SCANCODE_F24, SCANCODE_EXECUTE, SCANCODE_HELP, SCANCODE_MENU, SCANCODE_SELECT, SCANCODE_STOP, SCANCODE_AGAIN, SCANCODE_UNDO, SCANCODE_CUT, SCANCODE_COPY, SCANCODE_PASTE, SCANCODE_FIND, SCANCODE_MUTE, SCANCODE_VOLUMEUP, SCANCODE_VOLUMEDOWN, SCANCODE_KP_COMMA, SCANCODE_KP_EQUALSAS400, SCANCODE_INTERNATIONAL1, SCANCODE_INTERNATIONAL2, SCANCODE_INTERNATIONAL3, SCANCODE_INTERNATIONAL4, SCANCODE_INTERNATIONAL5, SCANCODE_INTERNATIONAL6, SCANCODE_INTERNATIONAL7, SCANCODE_INTERNATIONAL8, SCANCODE_INTERNATIONAL9, SCANCODE_LANG1, SCANCODE_LANG2, SCANCODE_LANG3, SCANCODE_LANG4, SCANCODE_LANG5, SCANCODE_LANG6, SCANCODE_LANG7, SCANCODE_LANG8, SCANCODE_LANG9, SCANCODE_ALTERASE, SCANCODE_SYSREQ, SCANCODE_CANCEL, SCANCODE_CLEAR, SCANCODE_PRIOR, SCANCODE_RETURN2, SCANCODE_SEPARATOR, SCANCODE_OUT, SCANCODE_OPER, SCANCODE_CLEARAGAIN, SCANCODE_CRSEL, SCANCODE_EXSEL, SCANCODE_KP_00, SCANCODE_KP_000, SCANCODE_THOUSANDSSEPARATOR, SCANCODE_DECIMALSEPARATOR, SCANCODE_CURRENCYUNIT, SCANCODE_CURRENCYSUBUNIT, SCANCODE_KP_LEFTPAREN, SCANCODE_KP_RIGHTPAREN, SCANCODE_KP_LEFTBRACE, SCANCODE_KP_RIGHTBRACE, SCANCODE_KP_TAB, SCANCODE_KP_BACKSPACE, SCANCODE_KP_A, SCANCODE_KP_B, SCANCODE_KP_C, SCANCODE_KP_D, SCANCODE_KP_E, SCANCODE_KP_F, SCANCODE_KP_XOR, SCANCODE_KP_POWER, SCANCODE_KP_PERCENT, SCANCODE_KP_LESS, SCANCODE_KP_GREATER, SCANCODE_KP_AMPERSAND, SCANCODE_KP_DBLAMPERSAND, SCANCODE_KP_VERTICALBAR, SCANCODE_KP_DBLVERTICALBAR, SCANCODE_KP_COLON, SCANCODE_KP_HASH, SCANCODE_KP_SPACE, SCANCODE_KP_AT, SCANCODE_KP_EXCLAM, SCANCODE_KP_MEMSTORE, SCANCODE_KP_MEMRECALL, SCANCODE_KP_MEMCLEAR, SCANCODE_KP_MEMADD, SCANCODE_KP_MEMSUBTRACT, SCANCODE_KP_MEMMULTIPLY, SCANCODE_KP_MEMDIVIDE, SCANCODE_KP_PLUSMINUS, SCANCODE_KP_CLEAR, SCANCODE_KP_CLEARENTRY, SCANCODE_KP_BINARY, SCANCODE_KP_OCTAL, SCANCODE_KP_DECIMAL, SCANCODE_KP_HEXADECIMAL, SCANCODE_LCTRL, SCANCODE_LSHIFT, SCANCODE_LALT, SCANCODE_LGUI, SCANCODE_RCTRL, SCANCODE_RSHIFT, SCANCODE_RALT, SCANCODE_RGUI, SCANCODE_MODE, SCANCODE_AUDIONEXT, SCANCODE_AUDIOPREV, SCANCODE_AUDIOSTOP, SCANCODE_AUDIOPLAY, SCANCODE_AUDIOMUTE, SCANCODE_MEDIASELECT, SCANCODE_WWW, SCANCODE_MAIL, SCANCODE_CALCULATOR, SCANCODE_COMPUTER, SCANCODE_AC_SEARCH, SCANCODE_AC_HOME, SCANCODE_AC_BACK, SCANCODE_AC_FORWARD, SCANCODE_AC_STOP, SCANCODE_AC_REFRESH, SCANCODE_AC_BOOKMARKS, SCANCODE_BRIGHTNESSDOWN, SCANCODE_BRIGHTNESSUP, SCANCODE_DISPLAYSWITCH, SCANCODE_KBDILLUMTOGGLE, SCANCODE_KBDILLUMDOWN, SCANCODE_KBDILLUMUP, SCANCODE_EJECT, SCANCODE_SLEEP, SCANCODE_APP1, SCANCODE_APP2 }; enum HatPosition { HAT_CENTER, HAT_UP, HAT_RIGHT, HAT_DOWN, HAT_LEFT, }; enum ControllerButton { CONTROLLER_BUTTON_A, CONTROLLER_BUTTON_B, CONTROLLER_BUTTON_X, CONTROLLER_BUTTON_Y, CONTROLLER_BUTTON_BACK, CONTROLLER_BUTTON_GUIDE, CONTROLLER_BUTTON_START, CONTROLLER_BUTTON_LEFTSTICK, CONTROLLER_BUTTON_RIGHTSTICK, CONTROLLER_BUTTON_LEFTSHOULDER, CONTROLLER_BUTTON_RIGHTSHOULDER, CONTROLLER_BUTTON_DPAD_UP, CONTROLLER_BUTTON_DPAD_DOWN, CONTROLLER_BUTTON_DPAD_LEFT, CONTROLLER_BUTTON_DPAD_RIGHT }; enum ControllerAxis { CONTROLLER_AXIS_LEFTX, CONTROLLER_AXIS_LEFTY, CONTROLLER_AXIS_RIGHTX, CONTROLLER_AXIS_RIGHTY, CONTROLLER_AXIS_TRIGGERLEFT, CONTROLLER_AXIS_TRIGGERRIGHT, };