diff options
| author | realtradam <[email protected]> | 2023-04-24 00:50:24 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-04-24 00:50:24 -0400 |
| commit | c7d724e4f11abb335efcc0d58639a1b458b77019 (patch) | |
| tree | a0222fed2f77aa994232abf9df79351548db4e92 | |
| parent | dcd867dc95d13e152716e12f6333796dfc84f4ef (diff) | |
| download | RodeoKit-c7d724e4f11abb335efcc0d58639a1b458b77019.tar.gz RodeoKit-c7d724e4f11abb335efcc0d58639a1b458b77019.zip | |
rework input system. first proper interation
| -rw-r--r-- | include/compile_flags.txt | 1 | ||||
| -rw-r--r-- | include/rodeo/input.h | 63 | ||||
| -rw-r--r-- | include/rodeo/input_t.h | 1160 | ||||
| -rw-r--r-- | src/compile_flags.txt | 1 | ||||
| -rw-r--r-- | src/input/irodeo_input_t.h (renamed from src/input/irodeo_input.h) | 1 | ||||
| -rw-r--r-- | src/input/rodeo_input.c | 290 | ||||
| -rw-r--r-- | src/rodeo.c | 3 |
7 files changed, 830 insertions, 689 deletions
diff --git a/include/compile_flags.txt b/include/compile_flags.txt index 2c81d8a..26d1cc4 100644 --- a/include/compile_flags.txt +++ b/include/compile_flags.txt @@ -9,3 +9,4 @@ -Wextra -Wpedantic -Wconversion +-std=c99 diff --git a/include/rodeo/input.h b/include/rodeo/input.h index 1f89b8c..5c7cb1c 100644 --- a/include/rodeo/input.h +++ b/include/rodeo/input.h @@ -7,25 +7,68 @@ bool rodeo_input_events_poll(void); void -rodeo_input_scene_activate( - rodeo_input_scene_t *scene +rodeo_input_command_register_callback( + rodeo_input_command_t *command, + rodeo_input_callback_function func ); void -rodeo_input_scene_deactivate( - rodeo_input_scene_t *scene +rodeo_input_command_unregister_callback( + rodeo_input_command_t *command, + rodeo_input_callback_function func +); + +rodeo_input_scene_t* +rodeo_input_scene_create(void); + +void +rodeo_input_scene_destroy(rodeo_input_scene_t *scene); + +rodeo_input_command_t* +rodeo_input_command_create(uint32_t input_type); + +// make sure to unregister from all scenes before destroying +void +rodeo_input_command_destroy(rodeo_input_command_t *command); + +// returns false if attempting to register +// input type that has been set as valid +bool +rodeo_input_command_register_binary_scancode( + rodeo_input_command_t *input_command, + rodeo_input_binary_scancode_t scancode +); + +bool +rodeo_input_command_register_binary_mouseButton( + rodeo_input_command_t *input_command, + rodeo_input_binary_mouseButton_t mouse_button ); +// alternative proposed "general" registration methods +//rodeo_input_command_register_binary(cmd, rodeo_input_binary_Scancode, rodeo_input_binary_scancode_Q ); +//rodeo_input_command_register_any(cmd, rodeo_input_type_Binary, rodeo_input_binary_Scancode, rodeo_input_binary_scancode_Q ); + + void -rodeo_input_scene_register_callback( - rodeo_input_callback_function func, +rodeo_input_scene_register_command( rodeo_input_scene_t *scene, - rodeo_input_register_type_t type + rodeo_input_command_t *command ); void -rodeo_input_scene_unregister_callback( - rodeo_input_callback_function func, +rodeo_input_scene_unregister_command( rodeo_input_scene_t *scene, - rodeo_input_register_type_t type + rodeo_input_command_t *command +); + +void +rodeo_input_scene_activate( + rodeo_input_scene_t *scene ); + +void +rodeo_input_scene_deactivate( + rodeo_input_scene_t *scene +); + diff --git a/include/rodeo/input_t.h b/include/rodeo/input_t.h index f5330ef..39385da 100644 --- a/include/rodeo/input_t.h +++ b/include/rodeo/input_t.h @@ -44,7 +44,7 @@ */ typedef enum { - rodeo_input_scancode_UNKNOWN = 0, + rodeo_input_binary_scancode_UNKNOWN = 0, /** * \name Usage page 0x07 @@ -53,55 +53,55 @@ typedef enum */ /* @{ */ - rodeo_input_scancode_A = 4, - rodeo_input_scancode_B = 5, - rodeo_input_scancode_C = 6, - rodeo_input_scancode_D = 7, - rodeo_input_scancode_E = 8, - rodeo_input_scancode_F = 9, - rodeo_input_scancode_G = 10, - rodeo_input_scancode_H = 11, - rodeo_input_scancode_I = 12, - rodeo_input_scancode_J = 13, - rodeo_input_scancode_K = 14, - rodeo_input_scancode_L = 15, - rodeo_input_scancode_M = 16, - rodeo_input_scancode_N = 17, - rodeo_input_scancode_O = 18, - rodeo_input_scancode_P = 19, - rodeo_input_scancode_Q = 20, - rodeo_input_scancode_R = 21, - rodeo_input_scancode_S = 22, - rodeo_input_scancode_T = 23, - rodeo_input_scancode_U = 24, - rodeo_input_scancode_V = 25, - rodeo_input_scancode_W = 26, - rodeo_input_scancode_X = 27, - rodeo_input_scancode_Y = 28, - rodeo_input_scancode_Z = 29, - - rodeo_input_scancode_1 = 30, - rodeo_input_scancode_2 = 31, - rodeo_input_scancode_3 = 32, - rodeo_input_scancode_4 = 33, - rodeo_input_scancode_5 = 34, - rodeo_input_scancode_6 = 35, - rodeo_input_scancode_7 = 36, - rodeo_input_scancode_8 = 37, - rodeo_input_scancode_9 = 38, - rodeo_input_scancode_0 = 39, - - rodeo_input_scancode_RETURN = 40, - rodeo_input_scancode_ESCAPE = 41, - rodeo_input_scancode_BACKSPACE = 42, - rodeo_input_scancode_TAB = 43, - rodeo_input_scancode_SPACE = 44, - - rodeo_input_scancode_MINUS = 45, - rodeo_input_scancode_EQUALS = 46, - rodeo_input_scancode_LEFTBRACKET = 47, - rodeo_input_scancode_RIGHTBRACKET = 48, - rodeo_input_scancode_BACKSLASH = 49, /**< Located at the lower left of the return + rodeo_input_binary_scancode_A = 4, + rodeo_input_binary_scancode_B = 5, + rodeo_input_binary_scancode_C = 6, + rodeo_input_binary_scancode_D = 7, + rodeo_input_binary_scancode_E = 8, + rodeo_input_binary_scancode_F = 9, + rodeo_input_binary_scancode_G = 10, + rodeo_input_binary_scancode_H = 11, + rodeo_input_binary_scancode_I = 12, + rodeo_input_binary_scancode_J = 13, + rodeo_input_binary_scancode_K = 14, + rodeo_input_binary_scancode_L = 15, + rodeo_input_binary_scancode_M = 16, + rodeo_input_binary_scancode_N = 17, + rodeo_input_binary_scancode_O = 18, + rodeo_input_binary_scancode_P = 19, + rodeo_input_binary_scancode_Q = 20, + rodeo_input_binary_scancode_R = 21, + rodeo_input_binary_scancode_S = 22, + rodeo_input_binary_scancode_T = 23, + rodeo_input_binary_scancode_U = 24, + rodeo_input_binary_scancode_V = 25, + rodeo_input_binary_scancode_W = 26, + rodeo_input_binary_scancode_X = 27, + rodeo_input_binary_scancode_Y = 28, + rodeo_input_binary_scancode_Z = 29, + + rodeo_input_binary_scancode_1 = 30, + rodeo_input_binary_scancode_2 = 31, + rodeo_input_binary_scancode_3 = 32, + rodeo_input_binary_scancode_4 = 33, + rodeo_input_binary_scancode_5 = 34, + rodeo_input_binary_scancode_6 = 35, + rodeo_input_binary_scancode_7 = 36, + rodeo_input_binary_scancode_8 = 37, + rodeo_input_binary_scancode_9 = 38, + rodeo_input_binary_scancode_0 = 39, + + rodeo_input_binary_scancode_RETURN = 40, + rodeo_input_binary_scancode_ESCAPE = 41, + rodeo_input_binary_scancode_BACKSPACE = 42, + rodeo_input_binary_scancode_TAB = 43, + rodeo_input_binary_scancode_SPACE = 44, + + rodeo_input_binary_scancode_MINUS = 45, + rodeo_input_binary_scancode_EQUALS = 46, + rodeo_input_binary_scancode_LEFTBRACKET = 47, + rodeo_input_binary_scancode_RIGHTBRACKET = 48, + rodeo_input_binary_scancode_BACKSLASH = 49, /**< Located at the lower left of the return * key on ISO keyboards and at the right end * of the QWERTY row on ANSI keyboards. * Produces REVERSE SOLIDUS (backslash) and @@ -115,21 +115,21 @@ typedef enum * layout, and ASTERISK and MICRO SIGN in a * French Windows layout. */ - rodeo_input_scancode_NONUSHASH = 50, /**< ISO USB keyboards actually use this code + rodeo_input_binary_scancode_NONUSHASH = 50, /**< ISO USB keyboards actually use this code * instead of 49 for the same key, but all * OSes I've seen treat the two codes * identically. So, as an implementor, unless * your keyboard generates both of those * codes and your OS treats them differently, - * you should generate rodeo_input_scancode_BACKSLASH + * you should generate rodeo_input_binary_scancode_BACKSLASH * instead of this code. As a user, you * should not rely on this code because SDL * will never generate it with most (all?) * keyboards. */ - rodeo_input_scancode_SEMICOLON = 51, - rodeo_input_scancode_APOSTROPHE = 52, - rodeo_input_scancode_GRAVE = 53, /**< Located in the top left corner (on both ANSI + rodeo_input_binary_scancode_SEMICOLON = 51, + rodeo_input_binary_scancode_APOSTROPHE = 52, + rodeo_input_binary_scancode_GRAVE = 53, /**< Located in the top left corner (on both ANSI * and ISO keyboards). Produces GRAVE ACCENT and * TILDE in a US Windows layout and in US and UK * Mac layouts on ANSI keyboards, GRAVE ACCENT @@ -146,60 +146,60 @@ typedef enum * SIGN in a Swiss German, German, or French Mac * layout on ANSI keyboards. */ - rodeo_input_scancode_COMMA = 54, - rodeo_input_scancode_PERIOD = 55, - rodeo_input_scancode_SLASH = 56, - - rodeo_input_scancode_CAPSLOCK = 57, - - rodeo_input_scancode_F1 = 58, - rodeo_input_scancode_F2 = 59, - rodeo_input_scancode_F3 = 60, - rodeo_input_scancode_F4 = 61, - rodeo_input_scancode_F5 = 62, - rodeo_input_scancode_F6 = 63, - rodeo_input_scancode_F7 = 64, - rodeo_input_scancode_F8 = 65, - rodeo_input_scancode_F9 = 66, - rodeo_input_scancode_F10 = 67, - rodeo_input_scancode_F11 = 68, - rodeo_input_scancode_F12 = 69, - - rodeo_input_scancode_PRINTSCREEN = 70, - rodeo_input_scancode_SCROLLLOCK = 71, - rodeo_input_scancode_PAUSE = 72, - rodeo_input_scancode_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + rodeo_input_binary_scancode_COMMA = 54, + rodeo_input_binary_scancode_PERIOD = 55, + rodeo_input_binary_scancode_SLASH = 56, + + rodeo_input_binary_scancode_CAPSLOCK = 57, + + rodeo_input_binary_scancode_F1 = 58, + rodeo_input_binary_scancode_F2 = 59, + rodeo_input_binary_scancode_F3 = 60, + rodeo_input_binary_scancode_F4 = 61, + rodeo_input_binary_scancode_F5 = 62, + rodeo_input_binary_scancode_F6 = 63, + rodeo_input_binary_scancode_F7 = 64, + rodeo_input_binary_scancode_F8 = 65, + rodeo_input_binary_scancode_F9 = 66, + rodeo_input_binary_scancode_F10 = 67, + rodeo_input_binary_scancode_F11 = 68, + rodeo_input_binary_scancode_F12 = 69, + + rodeo_input_binary_scancode_PRINTSCREEN = 70, + rodeo_input_binary_scancode_SCROLLLOCK = 71, + rodeo_input_binary_scancode_PAUSE = 72, + rodeo_input_binary_scancode_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but does send code 73, not 117) */ - rodeo_input_scancode_HOME = 74, - rodeo_input_scancode_PAGEUP = 75, - rodeo_input_scancode_DELETE = 76, - rodeo_input_scancode_END = 77, - rodeo_input_scancode_PAGEDOWN = 78, - rodeo_input_scancode_RIGHT = 79, - rodeo_input_scancode_LEFT = 80, - rodeo_input_scancode_DOWN = 81, - rodeo_input_scancode_UP = 82, - - rodeo_input_scancode_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + rodeo_input_binary_scancode_HOME = 74, + rodeo_input_binary_scancode_PAGEUP = 75, + rodeo_input_binary_scancode_DELETE = 76, + rodeo_input_binary_scancode_END = 77, + rodeo_input_binary_scancode_PAGEDOWN = 78, + rodeo_input_binary_scancode_RIGHT = 79, + rodeo_input_binary_scancode_LEFT = 80, + rodeo_input_binary_scancode_DOWN = 81, + rodeo_input_binary_scancode_UP = 82, + + rodeo_input_binary_scancode_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards */ - rodeo_input_scancode_KP_DIVIDE = 84, - rodeo_input_scancode_KP_MULTIPLY = 85, - rodeo_input_scancode_KP_MINUS = 86, - rodeo_input_scancode_KP_PLUS = 87, - rodeo_input_scancode_KP_ENTER = 88, - rodeo_input_scancode_KP_1 = 89, - rodeo_input_scancode_KP_2 = 90, - rodeo_input_scancode_KP_3 = 91, - rodeo_input_scancode_KP_4 = 92, - rodeo_input_scancode_KP_5 = 93, - rodeo_input_scancode_KP_6 = 94, - rodeo_input_scancode_KP_7 = 95, - rodeo_input_scancode_KP_8 = 96, - rodeo_input_scancode_KP_9 = 97, - rodeo_input_scancode_KP_0 = 98, - rodeo_input_scancode_KP_PERIOD = 99, - - rodeo_input_scancode_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + rodeo_input_binary_scancode_KP_DIVIDE = 84, + rodeo_input_binary_scancode_KP_MULTIPLY = 85, + rodeo_input_binary_scancode_KP_MINUS = 86, + rodeo_input_binary_scancode_KP_PLUS = 87, + rodeo_input_binary_scancode_KP_ENTER = 88, + rodeo_input_binary_scancode_KP_1 = 89, + rodeo_input_binary_scancode_KP_2 = 90, + rodeo_input_binary_scancode_KP_3 = 91, + rodeo_input_binary_scancode_KP_4 = 92, + rodeo_input_binary_scancode_KP_5 = 93, + rodeo_input_binary_scancode_KP_6 = 94, + rodeo_input_binary_scancode_KP_7 = 95, + rodeo_input_binary_scancode_KP_8 = 96, + rodeo_input_binary_scancode_KP_9 = 97, + rodeo_input_binary_scancode_KP_0 = 98, + rodeo_input_binary_scancode_KP_PERIOD = 99, + + rodeo_input_binary_scancode_NONUSBACKSLASH = 100, /**< This is the additional key that ISO * keyboards have over ANSI ones, * located between left shift and Y. * Produces GRAVE ACCENT and TILDE in a @@ -209,134 +209,134 @@ typedef enum * LESS-THAN SIGN and GREATER-THAN SIGN * in a Swiss German, German, or French * layout. */ - rodeo_input_scancode_APPLICATION = 101, /**< windows contextual menu, compose */ - rodeo_input_scancode_POWER = 102, /**< The USB document says this is a status flag, + rodeo_input_binary_scancode_APPLICATION = 101, /**< windows contextual menu, compose */ + rodeo_input_binary_scancode_POWER = 102, /**< The USB document says this is a status flag, * not a physical key - but some Mac keyboards * do have a power key. */ - rodeo_input_scancode_KP_EQUALS = 103, - rodeo_input_scancode_F13 = 104, - rodeo_input_scancode_F14 = 105, - rodeo_input_scancode_F15 = 106, - rodeo_input_scancode_F16 = 107, - rodeo_input_scancode_F17 = 108, - rodeo_input_scancode_F18 = 109, - rodeo_input_scancode_F19 = 110, - rodeo_input_scancode_F20 = 111, - rodeo_input_scancode_F21 = 112, - rodeo_input_scancode_F22 = 113, - rodeo_input_scancode_F23 = 114, - rodeo_input_scancode_F24 = 115, - rodeo_input_scancode_EXECUTE = 116, - rodeo_input_scancode_HELP = 117, /**< AL Integrated Help Center */ - rodeo_input_scancode_MENU = 118, /**< Menu (show menu) */ - rodeo_input_scancode_SELECT = 119, - rodeo_input_scancode_STOP = 120, /**< AC Stop */ - rodeo_input_scancode_AGAIN = 121, /**< AC Redo/Repeat */ - rodeo_input_scancode_UNDO = 122, /**< AC Undo */ - rodeo_input_scancode_CUT = 123, /**< AC Cut */ - rodeo_input_scancode_COPY = 124, /**< AC Copy */ - rodeo_input_scancode_PASTE = 125, /**< AC Paste */ - rodeo_input_scancode_FIND = 126, /**< AC Find */ - rodeo_input_scancode_MUTE = 127, - rodeo_input_scancode_VOLUMEUP = 128, - rodeo_input_scancode_VOLUMEDOWN = 129, + rodeo_input_binary_scancode_KP_EQUALS = 103, + rodeo_input_binary_scancode_F13 = 104, + rodeo_input_binary_scancode_F14 = 105, + rodeo_input_binary_scancode_F15 = 106, + rodeo_input_binary_scancode_F16 = 107, + rodeo_input_binary_scancode_F17 = 108, + rodeo_input_binary_scancode_F18 = 109, + rodeo_input_binary_scancode_F19 = 110, + rodeo_input_binary_scancode_F20 = 111, + rodeo_input_binary_scancode_F21 = 112, + rodeo_input_binary_scancode_F22 = 113, + rodeo_input_binary_scancode_F23 = 114, + rodeo_input_binary_scancode_F24 = 115, + rodeo_input_binary_scancode_EXECUTE = 116, + rodeo_input_binary_scancode_HELP = 117, /**< AL Integrated Help Center */ + rodeo_input_binary_scancode_MENU = 118, /**< Menu (show menu) */ + rodeo_input_binary_scancode_SELECT = 119, + rodeo_input_binary_scancode_STOP = 120, /**< AC Stop */ + rodeo_input_binary_scancode_AGAIN = 121, /**< AC Redo/Repeat */ + rodeo_input_binary_scancode_UNDO = 122, /**< AC Undo */ + rodeo_input_binary_scancode_CUT = 123, /**< AC Cut */ + rodeo_input_binary_scancode_COPY = 124, /**< AC Copy */ + rodeo_input_binary_scancode_PASTE = 125, /**< AC Paste */ + rodeo_input_binary_scancode_FIND = 126, /**< AC Find */ + rodeo_input_binary_scancode_MUTE = 127, + rodeo_input_binary_scancode_VOLUMEUP = 128, + rodeo_input_binary_scancode_VOLUMEDOWN = 129, /* not sure whether there's a reason to enable these */ -/* rodeo_input_scancode_LOCKINGCAPSLOCK = 130, */ -/* rodeo_input_scancode_LOCKINGNUMLOCK = 131, */ -/* rodeo_input_scancode_LOCKINGSCROLLLOCK = 132, */ - rodeo_input_scancode_KP_COMMA = 133, - rodeo_input_scancode_KP_EQUALSAS400 = 134, +/* rodeo_input_binary_scancode_LOCKINGCAPSLOCK = 130, */ +/* rodeo_input_binary_scancode_LOCKINGNUMLOCK = 131, */ +/* rodeo_input_binary_scancode_LOCKINGSCROLLLOCK = 132, */ + rodeo_input_binary_scancode_KP_COMMA = 133, + rodeo_input_binary_scancode_KP_EQUALSAS400 = 134, - rodeo_input_scancode_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + rodeo_input_binary_scancode_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see footnotes in USB doc */ - rodeo_input_scancode_INTERNATIONAL2 = 136, - rodeo_input_scancode_INTERNATIONAL3 = 137, /**< Yen */ - rodeo_input_scancode_INTERNATIONAL4 = 138, - rodeo_input_scancode_INTERNATIONAL5 = 139, - rodeo_input_scancode_INTERNATIONAL6 = 140, - rodeo_input_scancode_INTERNATIONAL7 = 141, - rodeo_input_scancode_INTERNATIONAL8 = 142, - rodeo_input_scancode_INTERNATIONAL9 = 143, - rodeo_input_scancode_LANG1 = 144, /**< Hangul/English toggle */ - rodeo_input_scancode_LANG2 = 145, /**< Hanja conversion */ - rodeo_input_scancode_LANG3 = 146, /**< Katakana */ - rodeo_input_scancode_LANG4 = 147, /**< Hiragana */ - rodeo_input_scancode_LANG5 = 148, /**< Zenkaku/Hankaku */ - rodeo_input_scancode_LANG6 = 149, /**< reserved */ - rodeo_input_scancode_LANG7 = 150, /**< reserved */ - rodeo_input_scancode_LANG8 = 151, /**< reserved */ - rodeo_input_scancode_LANG9 = 152, /**< reserved */ - - rodeo_input_scancode_ALTERASE = 153, /**< Erase-Eaze */ - rodeo_input_scancode_SYSREQ = 154, - rodeo_input_scancode_CANCEL = 155, /**< AC Cancel */ - rodeo_input_scancode_CLEAR = 156, - rodeo_input_scancode_PRIOR = 157, - rodeo_input_scancode_RETURN2 = 158, - rodeo_input_scancode_SEPARATOR = 159, - rodeo_input_scancode_OUT = 160, - rodeo_input_scancode_OPER = 161, - rodeo_input_scancode_CLEARAGAIN = 162, - rodeo_input_scancode_CRSEL = 163, - rodeo_input_scancode_EXSEL = 164, - - rodeo_input_scancode_KP_00 = 176, - rodeo_input_scancode_KP_000 = 177, - rodeo_input_scancode_THOUSANDSSEPARATOR = 178, - rodeo_input_scancode_DECIMALSEPARATOR = 179, - rodeo_input_scancode_CURRENCYUNIT = 180, - rodeo_input_scancode_CURRENCYSUBUNIT = 181, - rodeo_input_scancode_KP_LEFTPAREN = 182, - rodeo_input_scancode_KP_RIGHTPAREN = 183, - rodeo_input_scancode_KP_LEFTBRACE = 184, - rodeo_input_scancode_KP_RIGHTBRACE = 185, - rodeo_input_scancode_KP_TAB = 186, - rodeo_input_scancode_KP_BACKSPACE = 187, - rodeo_input_scancode_KP_A = 188, - rodeo_input_scancode_KP_B = 189, - rodeo_input_scancode_KP_C = 190, - rodeo_input_scancode_KP_D = 191, - rodeo_input_scancode_KP_E = 192, - rodeo_input_scancode_KP_F = 193, - rodeo_input_scancode_KP_XOR = 194, - rodeo_input_scancode_KP_POWER = 195, - rodeo_input_scancode_KP_PERCENT = 196, - rodeo_input_scancode_KP_LESS = 197, - rodeo_input_scancode_KP_GREATER = 198, - rodeo_input_scancode_KP_AMPERSAND = 199, - rodeo_input_scancode_KP_DBLAMPERSAND = 200, - rodeo_input_scancode_KP_VERTICALBAR = 201, - rodeo_input_scancode_KP_DBLVERTICALBAR = 202, - rodeo_input_scancode_KP_COLON = 203, - rodeo_input_scancode_KP_HASH = 204, - rodeo_input_scancode_KP_SPACE = 205, - rodeo_input_scancode_KP_AT = 206, - rodeo_input_scancode_KP_EXCLAM = 207, - rodeo_input_scancode_KP_MEMSTORE = 208, - rodeo_input_scancode_KP_MEMRECALL = 209, - rodeo_input_scancode_KP_MEMCLEAR = 210, - rodeo_input_scancode_KP_MEMADD = 211, - rodeo_input_scancode_KP_MEMSUBTRACT = 212, - rodeo_input_scancode_KP_MEMMULTIPLY = 213, - rodeo_input_scancode_KP_MEMDIVIDE = 214, - rodeo_input_scancode_KP_PLUSMINUS = 215, - rodeo_input_scancode_KP_CLEAR = 216, - rodeo_input_scancode_KP_CLEARENTRY = 217, - rodeo_input_scancode_KP_BINARY = 218, - rodeo_input_scancode_KP_OCTAL = 219, - rodeo_input_scancode_KP_DECIMAL = 220, - rodeo_input_scancode_KP_HEXADECIMAL = 221, - - rodeo_input_scancode_LCTRL = 224, - rodeo_input_scancode_LSHIFT = 225, - rodeo_input_scancode_LALT = 226, /**< alt, option */ - rodeo_input_scancode_LGUI = 227, /**< windows, command (apple), meta */ - rodeo_input_scancode_RCTRL = 228, - rodeo_input_scancode_RSHIFT = 229, - rodeo_input_scancode_RALT = 230, /**< alt gr, option */ - rodeo_input_scancode_RGUI = 231, /**< windows, command (apple), meta */ - - rodeo_input_scancode_MODE = 257, /**< I'm not sure if this is really not covered + rodeo_input_binary_scancode_INTERNATIONAL2 = 136, + rodeo_input_binary_scancode_INTERNATIONAL3 = 137, /**< Yen */ + rodeo_input_binary_scancode_INTERNATIONAL4 = 138, + rodeo_input_binary_scancode_INTERNATIONAL5 = 139, + rodeo_input_binary_scancode_INTERNATIONAL6 = 140, + rodeo_input_binary_scancode_INTERNATIONAL7 = 141, + rodeo_input_binary_scancode_INTERNATIONAL8 = 142, + rodeo_input_binary_scancode_INTERNATIONAL9 = 143, + rodeo_input_binary_scancode_LANG1 = 144, /**< Hangul/English toggle */ + rodeo_input_binary_scancode_LANG2 = 145, /**< Hanja conversion */ + rodeo_input_binary_scancode_LANG3 = 146, /**< Katakana */ + rodeo_input_binary_scancode_LANG4 = 147, /**< Hiragana */ + rodeo_input_binary_scancode_LANG5 = 148, /**< Zenkaku/Hankaku */ + rodeo_input_binary_scancode_LANG6 = 149, /**< reserved */ + rodeo_input_binary_scancode_LANG7 = 150, /**< reserved */ + rodeo_input_binary_scancode_LANG8 = 151, /**< reserved */ + rodeo_input_binary_scancode_LANG9 = 152, /**< reserved */ + + rodeo_input_binary_scancode_ALTERASE = 153, /**< Erase-Eaze */ + rodeo_input_binary_scancode_SYSREQ = 154, + rodeo_input_binary_scancode_CANCEL = 155, /**< AC Cancel */ + rodeo_input_binary_scancode_CLEAR = 156, + rodeo_input_binary_scancode_PRIOR = 157, + rodeo_input_binary_scancode_RETURN2 = 158, + rodeo_input_binary_scancode_SEPARATOR = 159, + rodeo_input_binary_scancode_OUT = 160, + rodeo_input_binary_scancode_OPER = 161, + rodeo_input_binary_scancode_CLEARAGAIN = 162, + rodeo_input_binary_scancode_CRSEL = 163, + rodeo_input_binary_scancode_EXSEL = 164, + + rodeo_input_binary_scancode_KP_00 = 176, + rodeo_input_binary_scancode_KP_000 = 177, + rodeo_input_binary_scancode_THOUSANDSSEPARATOR = 178, + rodeo_input_binary_scancode_DECIMALSEPARATOR = 179, + rodeo_input_binary_scancode_CURRENCYUNIT = 180, + rodeo_input_binary_scancode_CURRENCYSUBUNIT = 181, + rodeo_input_binary_scancode_KP_LEFTPAREN = 182, + rodeo_input_binary_scancode_KP_RIGHTPAREN = 183, + rodeo_input_binary_scancode_KP_LEFTBRACE = 184, + rodeo_input_binary_scancode_KP_RIGHTBRACE = 185, + rodeo_input_binary_scancode_KP_TAB = 186, + rodeo_input_binary_scancode_KP_BACKSPACE = 187, + rodeo_input_binary_scancode_KP_A = 188, + rodeo_input_binary_scancode_KP_B = 189, + rodeo_input_binary_scancode_KP_C = 190, + rodeo_input_binary_scancode_KP_D = 191, + rodeo_input_binary_scancode_KP_E = 192, + rodeo_input_binary_scancode_KP_F = 193, + rodeo_input_binary_scancode_KP_XOR = 194, + rodeo_input_binary_scancode_KP_POWER = 195, + rodeo_input_binary_scancode_KP_PERCENT = 196, + rodeo_input_binary_scancode_KP_LESS = 197, + rodeo_input_binary_scancode_KP_GREATER = 198, + rodeo_input_binary_scancode_KP_AMPERSAND = 199, + rodeo_input_binary_scancode_KP_DBLAMPERSAND = 200, + rodeo_input_binary_scancode_KP_VERTICALBAR = 201, + rodeo_input_binary_scancode_KP_DBLVERTICALBAR = 202, + rodeo_input_binary_scancode_KP_COLON = 203, + rodeo_input_binary_scancode_KP_HASH = 204, + rodeo_input_binary_scancode_KP_SPACE = 205, + rodeo_input_binary_scancode_KP_AT = 206, + rodeo_input_binary_scancode_KP_EXCLAM = 207, + rodeo_input_binary_scancode_KP_MEMSTORE = 208, + rodeo_input_binary_scancode_KP_MEMRECALL = 209, + rodeo_input_binary_scancode_KP_MEMCLEAR = 210, + rodeo_input_binary_scancode_KP_MEMADD = 211, + rodeo_input_binary_scancode_KP_MEMSUBTRACT = 212, + rodeo_input_binary_scancode_KP_MEMMULTIPLY = 213, + rodeo_input_binary_scancode_KP_MEMDIVIDE = 214, + rodeo_input_binary_scancode_KP_PLUSMINUS = 215, + rodeo_input_binary_scancode_KP_CLEAR = 216, + rodeo_input_binary_scancode_KP_CLEARENTRY = 217, + rodeo_input_binary_scancode_KP_BINARY = 218, + rodeo_input_binary_scancode_KP_OCTAL = 219, + rodeo_input_binary_scancode_KP_DECIMAL = 220, + rodeo_input_binary_scancode_KP_HEXADECIMAL = 221, + + rodeo_input_binary_scancode_LCTRL = 224, + rodeo_input_binary_scancode_LSHIFT = 225, + rodeo_input_binary_scancode_LALT = 226, /**< alt, option */ + rodeo_input_binary_scancode_LGUI = 227, /**< windows, command (apple), meta */ + rodeo_input_binary_scancode_RCTRL = 228, + rodeo_input_binary_scancode_RSHIFT = 229, + rodeo_input_binary_scancode_RALT = 230, /**< alt gr, option */ + rodeo_input_binary_scancode_RGUI = 231, /**< windows, command (apple), meta */ + + rodeo_input_binary_scancode_MODE = 257, /**< I'm not sure if this is really not covered * by any of the above, but since there's a * special rodeo_input_rodeo_input_keymod_MODE for it I'm adding it here */ @@ -355,23 +355,23 @@ typedef enum */ /* @{ */ - rodeo_input_scancode_AUDIONEXT = 258, - rodeo_input_scancode_AUDIOPREV = 259, - rodeo_input_scancode_AUDIOSTOP = 260, - rodeo_input_scancode_AUDIOPLAY = 261, - rodeo_input_scancode_AUDIOMUTE = 262, - rodeo_input_scancode_MEDIASELECT = 263, - rodeo_input_scancode_WWW = 264, /**< AL Internet Browser */ - rodeo_input_scancode_MAIL = 265, - rodeo_input_scancode_CALCULATOR = 266, /**< AL Calculator */ - rodeo_input_scancode_COMPUTER = 267, - rodeo_input_scancode_AC_SEARCH = 268, /**< AC Search */ - rodeo_input_scancode_AC_HOME = 269, /**< AC Home */ - rodeo_input_scancode_AC_BACK = 270, /**< AC Back */ - rodeo_input_scancode_AC_FORWARD = 271, /**< AC Forward */ - rodeo_input_scancode_AC_STOP = 272, /**< AC Stop */ - rodeo_input_scancode_AC_REFRESH = 273, /**< AC Refresh */ - rodeo_input_scancode_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + rodeo_input_binary_scancode_AUDIONEXT = 258, + rodeo_input_binary_scancode_AUDIOPREV = 259, + rodeo_input_binary_scancode_AUDIOSTOP = 260, + rodeo_input_binary_scancode_AUDIOPLAY = 261, + rodeo_input_binary_scancode_AUDIOMUTE = 262, + rodeo_input_binary_scancode_MEDIASELECT = 263, + rodeo_input_binary_scancode_WWW = 264, /**< AL Internet Browser */ + rodeo_input_binary_scancode_MAIL = 265, + rodeo_input_binary_scancode_CALCULATOR = 266, /**< AL Calculator */ + rodeo_input_binary_scancode_COMPUTER = 267, + rodeo_input_binary_scancode_AC_SEARCH = 268, /**< AC Search */ + rodeo_input_binary_scancode_AC_HOME = 269, /**< AC Home */ + rodeo_input_binary_scancode_AC_BACK = 270, /**< AC Back */ + rodeo_input_binary_scancode_AC_FORWARD = 271, /**< AC Forward */ + rodeo_input_binary_scancode_AC_STOP = 272, /**< AC Stop */ + rodeo_input_binary_scancode_AC_REFRESH = 273, /**< AC Refresh */ + rodeo_input_binary_scancode_AC_BOOKMARKS = 274, /**< AC Bookmarks */ /* @} *//* Usage page 0x0C */ @@ -382,18 +382,18 @@ typedef enum */ /* @{ */ - rodeo_input_scancode_BRIGHTNESSDOWN = 275, - rodeo_input_scancode_BRIGHTNESSUP = 276, - rodeo_input_scancode_DISPLAYSWITCH = 277, /**< display mirroring/dual display + rodeo_input_binary_scancode_BRIGHTNESSDOWN = 275, + rodeo_input_binary_scancode_BRIGHTNESSUP = 276, + rodeo_input_binary_scancode_DISPLAYSWITCH = 277, /**< display mirroring/dual display switch, video mode switch */ - rodeo_input_scancode_KBDILLUMTOGGLE = 278, - rodeo_input_scancode_KBDILLUMDOWN = 279, - rodeo_input_scancode_KBDILLUMUP = 280, - rodeo_input_scancode_EJECT = 281, - rodeo_input_scancode_SLEEP = 282, /**< SC System Sleep */ + rodeo_input_binary_scancode_KBDILLUMTOGGLE = 278, + rodeo_input_binary_scancode_KBDILLUMDOWN = 279, + rodeo_input_binary_scancode_KBDILLUMUP = 280, + rodeo_input_binary_scancode_EJECT = 281, + rodeo_input_binary_scancode_SLEEP = 282, /**< SC System Sleep */ - rodeo_input_scancode_APP1 = 283, - rodeo_input_scancode_APP2 = 284, + rodeo_input_binary_scancode_APP1 = 283, + rodeo_input_binary_scancode_APP2 = 284, /* @} *//* Walther keys */ @@ -404,8 +404,8 @@ typedef enum */ /* @{ */ - rodeo_input_scancode_AUDIOREWIND = 285, - rodeo_input_scancode_AUDIOFASTFORWARD = 286, + rodeo_input_binary_scancode_AUDIOREWIND = 285, + rodeo_input_binary_scancode_AUDIOFASTFORWARD = 286, /* @} *//* Usage page 0x0C (additional media keys) */ @@ -416,16 +416,16 @@ typedef enum */ /* @{ */ - rodeo_input_scancode_SOFTLEFT = 287, /**< Usually situated below the display on phones and + rodeo_input_binary_scancode_SOFTLEFT = 287, /**< Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom left of the display. */ - rodeo_input_scancode_SOFTRIGHT = 288, /**< Usually situated below the display on phones and + rodeo_input_binary_scancode_SOFTRIGHT = 288, /**< Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom right of the display. */ - rodeo_input_scancode_CALL = 289, /**< Used for accepting phone calls. */ - rodeo_input_scancode_ENDCALL = 290, /**< Used for rejecting phone calls. */ + rodeo_input_binary_scancode_CALL = 289, /**< Used for accepting phone calls. */ + rodeo_input_binary_scancode_ENDCALL = 290, /**< Used for rejecting phone calls. */ /* @} *//* Mobile keys */ @@ -434,290 +434,290 @@ typedef enum rodeo_input_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes for array bounds */ } -rodeo_input_scancode_t; +rodeo_input_binary_scancode_t; -#define mrodeo_input_scancode_mask (1<<30) -#define mrodeo_input_scancode_maskshift(X) (X | mrodeo_input_scancode_mask) +#define mrodeo_input_binary_scancode_mask (1<<30) +#define mrodeo_input_binary_scancode_maskshift(X) (X | mrodeo_input_binary_scancode_mask) typedef enum { - rodeo_input_keycode_UNKNOWN = 0, - - rodeo_input_keycode_RETURN = '\r', - rodeo_input_keycode_ESCAPE = '\x1B', - rodeo_input_keycode_BACKSPACE = '\b', - rodeo_input_keycode_TAB = '\t', - rodeo_input_keycode_SPACE = ' ', - rodeo_input_keycode_EXCLAIM = '!', - rodeo_input_keycode_QUOTEDBL = '"', - rodeo_input_keycode_HASH = '#', - rodeo_input_keycode_PERCENT = '%', - rodeo_input_keycode_DOLLAR = '$', - rodeo_input_keycode_AMPERSAND = '&', - rodeo_input_keycode_QUOTE = '\'', - rodeo_input_keycode_LEFTPAREN = '(', - rodeo_input_keycode_RIGHTPAREN = ')', - rodeo_input_keycode_ASTERISK = '*', - rodeo_input_keycode_PLUS = '+', - rodeo_input_keycode_COMMA = ',', - rodeo_input_keycode_MINUS = '-', - rodeo_input_keycode_PERIOD = '.', - rodeo_input_keycode_SLASH = '/', - rodeo_input_keycode_0 = '0', - rodeo_input_keycode_1 = '1', - rodeo_input_keycode_2 = '2', - rodeo_input_keycode_3 = '3', - rodeo_input_keycode_4 = '4', - rodeo_input_keycode_5 = '5', - rodeo_input_keycode_6 = '6', - rodeo_input_keycode_7 = '7', - rodeo_input_keycode_8 = '8', - rodeo_input_keycode_9 = '9', - rodeo_input_keycode_COLON = ':', - rodeo_input_keycode_SEMICOLON = ';', - rodeo_input_keycode_LESS = '<', - rodeo_input_keycode_EQUALS = '=', - rodeo_input_keycode_GREATER = '>', - rodeo_input_keycode_QUESTION = '?', - rodeo_input_keycode_AT = '@', + rodeo_input_binary_keycode_UNKNOWN = 0, + + rodeo_input_binary_keycode_RETURN = '\r', + rodeo_input_binary_keycode_ESCAPE = '\x1B', + rodeo_input_binary_keycode_BACKSPACE = '\b', + rodeo_input_binary_keycode_TAB = '\t', + rodeo_input_binary_keycode_SPACE = ' ', + rodeo_input_binary_keycode_EXCLAIM = '!', + rodeo_input_binary_keycode_QUOTEDBL = '"', + rodeo_input_binary_keycode_HASH = '#', + rodeo_input_binary_keycode_PERCENT = '%', + rodeo_input_binary_keycode_DOLLAR = '$', + rodeo_input_binary_keycode_AMPERSAND = '&', + rodeo_input_binary_keycode_QUOTE = '\'', + rodeo_input_binary_keycode_LEFTPAREN = '(', + rodeo_input_binary_keycode_RIGHTPAREN = ')', + rodeo_input_binary_keycode_ASTERISK = '*', + rodeo_input_binary_keycode_PLUS = '+', + rodeo_input_binary_keycode_COMMA = ',', + rodeo_input_binary_keycode_MINUS = '-', + rodeo_input_binary_keycode_PERIOD = '.', + rodeo_input_binary_keycode_SLASH = '/', + rodeo_input_binary_keycode_0 = '0', + rodeo_input_binary_keycode_1 = '1', + rodeo_input_binary_keycode_2 = '2', + rodeo_input_binary_keycode_3 = '3', + rodeo_input_binary_keycode_4 = '4', + rodeo_input_binary_keycode_5 = '5', + rodeo_input_binary_keycode_6 = '6', + rodeo_input_binary_keycode_7 = '7', + rodeo_input_binary_keycode_8 = '8', + rodeo_input_binary_keycode_9 = '9', + rodeo_input_binary_keycode_COLON = ':', + rodeo_input_binary_keycode_SEMICOLON = ';', + rodeo_input_binary_keycode_LESS = '<', + rodeo_input_binary_keycode_EQUALS = '=', + rodeo_input_binary_keycode_GREATER = '>', + rodeo_input_binary_keycode_QUESTION = '?', + rodeo_input_binary_keycode_AT = '@', /* Skip uppercase letters */ - rodeo_input_keycode_LEFTBRACKET = '[', - rodeo_input_keycode_BACKSLASH = '\\', - rodeo_input_keycode_RIGHTBRACKET = ']', - rodeo_input_keycode_CARET = '^', - rodeo_input_keycode_UNDERSCORE = '_', - rodeo_input_keycode_BACKQUOTE = '`', - rodeo_input_keycode_A = 'a', - rodeo_input_keycode_B = 'b', - rodeo_input_keycode_C = 'c', - rodeo_input_keycode_D = 'd', - rodeo_input_keycode_E = 'e', - rodeo_input_keycode_F = 'f', - rodeo_input_keycode_G = 'g', - rodeo_input_keycode_H = 'h', - rodeo_input_keycode_I = 'i', - rodeo_input_keycode_J = 'j', - rodeo_input_keycode_K = 'k', - rodeo_input_keycode_L = 'l', - rodeo_input_keycode_M = 'm', - rodeo_input_keycode_N = 'n', - rodeo_input_keycode_O = 'o', - rodeo_input_keycode_P = 'p', - rodeo_input_keycode_Q = 'q', - rodeo_input_keycode_R = 'r', - rodeo_input_keycode_S = 's', - rodeo_input_keycode_T = 't', - rodeo_input_keycode_U = 'u', - rodeo_input_keycode_V = 'v', - rodeo_input_keycode_W = 'w', - rodeo_input_keycode_X = 'x', - rodeo_input_keycode_Y = 'y', - rodeo_input_keycode_Z = 'z', + rodeo_input_binary_keycode_LEFTBRACKET = '[', + rodeo_input_binary_keycode_BACKSLASH = '\\', + rodeo_input_binary_keycode_RIGHTBRACKET = ']', + rodeo_input_binary_keycode_CARET = '^', + rodeo_input_binary_keycode_UNDERSCORE = '_', + rodeo_input_binary_keycode_BACKQUOTE = '`', + rodeo_input_binary_keycode_A = 'a', + rodeo_input_binary_keycode_B = 'b', + rodeo_input_binary_keycode_C = 'c', + rodeo_input_binary_keycode_D = 'd', + rodeo_input_binary_keycode_E = 'e', + rodeo_input_binary_keycode_F = 'f', + rodeo_input_binary_keycode_G = 'g', + rodeo_input_binary_keycode_H = 'h', + rodeo_input_binary_keycode_I = 'i', + rodeo_input_binary_keycode_J = 'j', + rodeo_input_binary_keycode_K = 'k', + rodeo_input_binary_keycode_L = 'l', + rodeo_input_binary_keycode_M = 'm', + rodeo_input_binary_keycode_N = 'n', + rodeo_input_binary_keycode_O = 'o', + rodeo_input_binary_keycode_P = 'p', + rodeo_input_binary_keycode_Q = 'q', + rodeo_input_binary_keycode_R = 'r', + rodeo_input_binary_keycode_S = 's', + rodeo_input_binary_keycode_T = 't', + rodeo_input_binary_keycode_U = 'u', + rodeo_input_binary_keycode_V = 'v', + rodeo_input_binary_keycode_W = 'w', + rodeo_input_binary_keycode_X = 'x', + rodeo_input_binary_keycode_Y = 'y', + rodeo_input_binary_keycode_Z = 'z', - rodeo_input_keycode_CAPSLOCK = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CAPSLOCK), + rodeo_input_binary_keycode_CAPSLOCK = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CAPSLOCK), - rodeo_input_keycode_F1 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F1), - rodeo_input_keycode_F2 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F2), - rodeo_input_keycode_F3 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F3), - rodeo_input_keycode_F4 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F4), - rodeo_input_keycode_F5 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F5), - rodeo_input_keycode_F6 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F6), - rodeo_input_keycode_F7 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F7), - rodeo_input_keycode_F8 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F8), - rodeo_input_keycode_F9 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F9), - rodeo_input_keycode_F10 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F10), - rodeo_input_keycode_F11 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F11), - rodeo_input_keycode_F12 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F12), + rodeo_input_binary_keycode_F1 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F1), + rodeo_input_binary_keycode_F2 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F2), + rodeo_input_binary_keycode_F3 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F3), + rodeo_input_binary_keycode_F4 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F4), + rodeo_input_binary_keycode_F5 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F5), + rodeo_input_binary_keycode_F6 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F6), + rodeo_input_binary_keycode_F7 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F7), + rodeo_input_binary_keycode_F8 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F8), + rodeo_input_binary_keycode_F9 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F9), + rodeo_input_binary_keycode_F10 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F10), + rodeo_input_binary_keycode_F11 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F11), + rodeo_input_binary_keycode_F12 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F12), - rodeo_input_keycode_PRINTSCREEN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PRINTSCREEN), - rodeo_input_keycode_SCROLLLOCK = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SCROLLLOCK), - rodeo_input_keycode_PAUSE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PAUSE), - rodeo_input_keycode_INSERT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_INSERT), - rodeo_input_keycode_HOME = mrodeo_input_scancode_maskshift(rodeo_input_scancode_HOME), - rodeo_input_keycode_PAGEUP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PAGEUP), - rodeo_input_keycode_DELETE = '\x7F', - rodeo_input_keycode_END = mrodeo_input_scancode_maskshift(rodeo_input_scancode_END), - rodeo_input_keycode_PAGEDOWN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PAGEDOWN), - rodeo_input_keycode_RIGHT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RIGHT), - rodeo_input_keycode_LEFT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_LEFT), - rodeo_input_keycode_DOWN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_DOWN), - rodeo_input_keycode_UP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_UP), + rodeo_input_binary_keycode_PRINTSCREEN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PRINTSCREEN), + rodeo_input_binary_keycode_SCROLLLOCK = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SCROLLLOCK), + rodeo_input_binary_keycode_PAUSE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PAUSE), + rodeo_input_binary_keycode_INSERT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_INSERT), + rodeo_input_binary_keycode_HOME = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_HOME), + rodeo_input_binary_keycode_PAGEUP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PAGEUP), + rodeo_input_binary_keycode_DELETE = '\x7F', + rodeo_input_binary_keycode_END = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_END), + rodeo_input_binary_keycode_PAGEDOWN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PAGEDOWN), + rodeo_input_binary_keycode_RIGHT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RIGHT), + rodeo_input_binary_keycode_LEFT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_LEFT), + rodeo_input_binary_keycode_DOWN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_DOWN), + rodeo_input_binary_keycode_UP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_UP), - rodeo_input_keycode_NUMLOCKCLEAR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_NUMLOCKCLEAR), - rodeo_input_keycode_KP_DIVIDE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_DIVIDE), - rodeo_input_keycode_KP_MULTIPLY = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MULTIPLY), - rodeo_input_keycode_KP_MINUS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MINUS), - rodeo_input_keycode_KP_PLUS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_PLUS), - rodeo_input_keycode_KP_ENTER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_ENTER), - rodeo_input_keycode_KP_1 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_1), - rodeo_input_keycode_KP_2 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_2), - rodeo_input_keycode_KP_3 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_3), - rodeo_input_keycode_KP_4 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_4), - rodeo_input_keycode_KP_5 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_5), - rodeo_input_keycode_KP_6 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_6), - rodeo_input_keycode_KP_7 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_7), - rodeo_input_keycode_KP_8 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_8), - rodeo_input_keycode_KP_9 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_9), - rodeo_input_keycode_KP_0 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_0), - rodeo_input_keycode_KP_PERIOD = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_PERIOD), + rodeo_input_binary_keycode_NUMLOCKCLEAR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_NUMLOCKCLEAR), + rodeo_input_binary_keycode_KP_DIVIDE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_DIVIDE), + rodeo_input_binary_keycode_KP_MULTIPLY = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MULTIPLY), + rodeo_input_binary_keycode_KP_MINUS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MINUS), + rodeo_input_binary_keycode_KP_PLUS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_PLUS), + rodeo_input_binary_keycode_KP_ENTER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_ENTER), + rodeo_input_binary_keycode_KP_1 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_1), + rodeo_input_binary_keycode_KP_2 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_2), + rodeo_input_binary_keycode_KP_3 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_3), + rodeo_input_binary_keycode_KP_4 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_4), + rodeo_input_binary_keycode_KP_5 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_5), + rodeo_input_binary_keycode_KP_6 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_6), + rodeo_input_binary_keycode_KP_7 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_7), + rodeo_input_binary_keycode_KP_8 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_8), + rodeo_input_binary_keycode_KP_9 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_9), + rodeo_input_binary_keycode_KP_0 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_0), + rodeo_input_binary_keycode_KP_PERIOD = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_PERIOD), - rodeo_input_keycode_APPLICATION = mrodeo_input_scancode_maskshift(rodeo_input_scancode_APPLICATION), - rodeo_input_keycode_POWER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_POWER), - rodeo_input_keycode_KP_EQUALS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_EQUALS), - rodeo_input_keycode_F13 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F13), - rodeo_input_keycode_F14 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F14), - rodeo_input_keycode_F15 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F15), - rodeo_input_keycode_F16 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F16), - rodeo_input_keycode_F17 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F17), - rodeo_input_keycode_F18 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F18), - rodeo_input_keycode_F19 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F19), - rodeo_input_keycode_F20 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F20), - rodeo_input_keycode_F21 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F21), - rodeo_input_keycode_F22 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F22), - rodeo_input_keycode_F23 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F23), - rodeo_input_keycode_F24 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_F24), - rodeo_input_keycode_EXECUTE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_EXECUTE), - rodeo_input_keycode_HELP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_HELP), - rodeo_input_keycode_MENU = mrodeo_input_scancode_maskshift(rodeo_input_scancode_MENU), - rodeo_input_keycode_SELECT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SELECT), - rodeo_input_keycode_STOP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_STOP), - rodeo_input_keycode_AGAIN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AGAIN), - rodeo_input_keycode_UNDO = mrodeo_input_scancode_maskshift(rodeo_input_scancode_UNDO), - rodeo_input_keycode_CUT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CUT), - rodeo_input_keycode_COPY = mrodeo_input_scancode_maskshift(rodeo_input_scancode_COPY), - rodeo_input_keycode_PASTE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PASTE), - rodeo_input_keycode_FIND = mrodeo_input_scancode_maskshift(rodeo_input_scancode_FIND), - rodeo_input_keycode_MUTE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_MUTE), - rodeo_input_keycode_VOLUMEUP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_VOLUMEUP), - rodeo_input_keycode_VOLUMEDOWN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_VOLUMEDOWN), - rodeo_input_keycode_KP_COMMA = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_COMMA), - rodeo_input_keycode_KP_EQUALSAS400 = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_EQUALSAS400), + rodeo_input_binary_keycode_APPLICATION = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_APPLICATION), + rodeo_input_binary_keycode_POWER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_POWER), + rodeo_input_binary_keycode_KP_EQUALS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_EQUALS), + rodeo_input_binary_keycode_F13 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F13), + rodeo_input_binary_keycode_F14 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F14), + rodeo_input_binary_keycode_F15 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F15), + rodeo_input_binary_keycode_F16 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F16), + rodeo_input_binary_keycode_F17 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F17), + rodeo_input_binary_keycode_F18 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F18), + rodeo_input_binary_keycode_F19 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F19), + rodeo_input_binary_keycode_F20 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F20), + rodeo_input_binary_keycode_F21 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F21), + rodeo_input_binary_keycode_F22 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F22), + rodeo_input_binary_keycode_F23 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F23), + rodeo_input_binary_keycode_F24 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_F24), + rodeo_input_binary_keycode_EXECUTE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_EXECUTE), + rodeo_input_binary_keycode_HELP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_HELP), + rodeo_input_binary_keycode_MENU = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_MENU), + rodeo_input_binary_keycode_SELECT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SELECT), + rodeo_input_binary_keycode_STOP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_STOP), + rodeo_input_binary_keycode_AGAIN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AGAIN), + rodeo_input_binary_keycode_UNDO = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_UNDO), + rodeo_input_binary_keycode_CUT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CUT), + rodeo_input_binary_keycode_COPY = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_COPY), + rodeo_input_binary_keycode_PASTE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PASTE), + rodeo_input_binary_keycode_FIND = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_FIND), + rodeo_input_binary_keycode_MUTE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_MUTE), + rodeo_input_binary_keycode_VOLUMEUP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_VOLUMEUP), + rodeo_input_binary_keycode_VOLUMEDOWN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_VOLUMEDOWN), + rodeo_input_binary_keycode_KP_COMMA = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_COMMA), + rodeo_input_binary_keycode_KP_EQUALSAS400 = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_EQUALSAS400), - rodeo_input_keycode_ALTERASE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_ALTERASE), - rodeo_input_keycode_SYSREQ = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SYSREQ), - rodeo_input_keycode_CANCEL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CANCEL), - rodeo_input_keycode_CLEAR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CLEAR), - rodeo_input_keycode_PRIOR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_PRIOR), - rodeo_input_keycode_RETURN2 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RETURN2), - rodeo_input_keycode_SEPARATOR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SEPARATOR), - rodeo_input_keycode_OUT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_OUT), - rodeo_input_keycode_OPER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_OPER), - rodeo_input_keycode_CLEARAGAIN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CLEARAGAIN), - rodeo_input_keycode_CRSEL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CRSEL), - rodeo_input_keycode_EXSEL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_EXSEL), + rodeo_input_binary_keycode_ALTERASE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_ALTERASE), + rodeo_input_binary_keycode_SYSREQ = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SYSREQ), + rodeo_input_binary_keycode_CANCEL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CANCEL), + rodeo_input_binary_keycode_CLEAR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CLEAR), + rodeo_input_binary_keycode_PRIOR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_PRIOR), + rodeo_input_binary_keycode_RETURN2 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RETURN2), + rodeo_input_binary_keycode_SEPARATOR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SEPARATOR), + rodeo_input_binary_keycode_OUT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_OUT), + rodeo_input_binary_keycode_OPER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_OPER), + rodeo_input_binary_keycode_CLEARAGAIN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CLEARAGAIN), + rodeo_input_binary_keycode_CRSEL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CRSEL), + rodeo_input_binary_keycode_EXSEL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_EXSEL), - rodeo_input_keycode_KP_00 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_00), - rodeo_input_keycode_KP_000 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_000), - rodeo_input_keycode_THOUSANDSSEPARATOR = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_THOUSANDSSEPARATOR), - rodeo_input_keycode_DECIMALSEPARATOR = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_DECIMALSEPARATOR), - rodeo_input_keycode_CURRENCYUNIT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CURRENCYUNIT), - rodeo_input_keycode_CURRENCYSUBUNIT = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_CURRENCYSUBUNIT), - rodeo_input_keycode_KP_LEFTPAREN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_LEFTPAREN), - rodeo_input_keycode_KP_RIGHTPAREN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_RIGHTPAREN), - rodeo_input_keycode_KP_LEFTBRACE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_LEFTBRACE), - rodeo_input_keycode_KP_RIGHTBRACE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_RIGHTBRACE), - rodeo_input_keycode_KP_TAB = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_TAB), - rodeo_input_keycode_KP_BACKSPACE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_BACKSPACE), - rodeo_input_keycode_KP_A = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_A), - rodeo_input_keycode_KP_B = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_B), - rodeo_input_keycode_KP_C = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_C), - rodeo_input_keycode_KP_D = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_D), - rodeo_input_keycode_KP_E = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_E), - rodeo_input_keycode_KP_F = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_F), - rodeo_input_keycode_KP_XOR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_XOR), - rodeo_input_keycode_KP_POWER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_POWER), - rodeo_input_keycode_KP_PERCENT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_PERCENT), - rodeo_input_keycode_KP_LESS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_LESS), - rodeo_input_keycode_KP_GREATER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_GREATER), - rodeo_input_keycode_KP_AMPERSAND = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_AMPERSAND), - rodeo_input_keycode_KP_DBLAMPERSAND = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_DBLAMPERSAND), - rodeo_input_keycode_KP_VERTICALBAR = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_VERTICALBAR), - rodeo_input_keycode_KP_DBLVERTICALBAR = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_DBLVERTICALBAR), - rodeo_input_keycode_KP_COLON = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_COLON), - rodeo_input_keycode_KP_HASH = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_HASH), - rodeo_input_keycode_KP_SPACE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_SPACE), - rodeo_input_keycode_KP_AT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_AT), - rodeo_input_keycode_KP_EXCLAM = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_EXCLAM), - rodeo_input_keycode_KP_MEMSTORE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMSTORE), - rodeo_input_keycode_KP_MEMRECALL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMRECALL), - rodeo_input_keycode_KP_MEMCLEAR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMCLEAR), - rodeo_input_keycode_KP_MEMADD = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMADD), - rodeo_input_keycode_KP_MEMSUBTRACT = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMSUBTRACT), - rodeo_input_keycode_KP_MEMMULTIPLY = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMMULTIPLY), - rodeo_input_keycode_KP_MEMDIVIDE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_MEMDIVIDE), - rodeo_input_keycode_KP_PLUSMINUS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_PLUSMINUS), - rodeo_input_keycode_KP_CLEAR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_CLEAR), - rodeo_input_keycode_KP_CLEARENTRY = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_CLEARENTRY), - rodeo_input_keycode_KP_BINARY = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_BINARY), - rodeo_input_keycode_KP_OCTAL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_OCTAL), - rodeo_input_keycode_KP_DECIMAL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_DECIMAL), - rodeo_input_keycode_KP_HEXADECIMAL = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KP_HEXADECIMAL), + rodeo_input_binary_keycode_KP_00 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_00), + rodeo_input_binary_keycode_KP_000 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_000), + rodeo_input_binary_keycode_THOUSANDSSEPARATOR = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_THOUSANDSSEPARATOR), + rodeo_input_binary_keycode_DECIMALSEPARATOR = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_DECIMALSEPARATOR), + rodeo_input_binary_keycode_CURRENCYUNIT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CURRENCYUNIT), + rodeo_input_binary_keycode_CURRENCYSUBUNIT = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CURRENCYSUBUNIT), + rodeo_input_binary_keycode_KP_LEFTPAREN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_LEFTPAREN), + rodeo_input_binary_keycode_KP_RIGHTPAREN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_RIGHTPAREN), + rodeo_input_binary_keycode_KP_LEFTBRACE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_LEFTBRACE), + rodeo_input_binary_keycode_KP_RIGHTBRACE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_RIGHTBRACE), + rodeo_input_binary_keycode_KP_TAB = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_TAB), + rodeo_input_binary_keycode_KP_BACKSPACE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_BACKSPACE), + rodeo_input_binary_keycode_KP_A = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_A), + rodeo_input_binary_keycode_KP_B = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_B), + rodeo_input_binary_keycode_KP_C = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_C), + rodeo_input_binary_keycode_KP_D = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_D), + rodeo_input_binary_keycode_KP_E = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_E), + rodeo_input_binary_keycode_KP_F = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_F), + rodeo_input_binary_keycode_KP_XOR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_XOR), + rodeo_input_binary_keycode_KP_POWER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_POWER), + rodeo_input_binary_keycode_KP_PERCENT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_PERCENT), + rodeo_input_binary_keycode_KP_LESS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_LESS), + rodeo_input_binary_keycode_KP_GREATER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_GREATER), + rodeo_input_binary_keycode_KP_AMPERSAND = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_AMPERSAND), + rodeo_input_binary_keycode_KP_DBLAMPERSAND = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_DBLAMPERSAND), + rodeo_input_binary_keycode_KP_VERTICALBAR = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_VERTICALBAR), + rodeo_input_binary_keycode_KP_DBLVERTICALBAR = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_DBLVERTICALBAR), + rodeo_input_binary_keycode_KP_COLON = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_COLON), + rodeo_input_binary_keycode_KP_HASH = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_HASH), + rodeo_input_binary_keycode_KP_SPACE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_SPACE), + rodeo_input_binary_keycode_KP_AT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_AT), + rodeo_input_binary_keycode_KP_EXCLAM = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_EXCLAM), + rodeo_input_binary_keycode_KP_MEMSTORE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMSTORE), + rodeo_input_binary_keycode_KP_MEMRECALL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMRECALL), + rodeo_input_binary_keycode_KP_MEMCLEAR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMCLEAR), + rodeo_input_binary_keycode_KP_MEMADD = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMADD), + rodeo_input_binary_keycode_KP_MEMSUBTRACT = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMSUBTRACT), + rodeo_input_binary_keycode_KP_MEMMULTIPLY = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMMULTIPLY), + rodeo_input_binary_keycode_KP_MEMDIVIDE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_MEMDIVIDE), + rodeo_input_binary_keycode_KP_PLUSMINUS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_PLUSMINUS), + rodeo_input_binary_keycode_KP_CLEAR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_CLEAR), + rodeo_input_binary_keycode_KP_CLEARENTRY = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_CLEARENTRY), + rodeo_input_binary_keycode_KP_BINARY = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_BINARY), + rodeo_input_binary_keycode_KP_OCTAL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_OCTAL), + rodeo_input_binary_keycode_KP_DECIMAL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_DECIMAL), + rodeo_input_binary_keycode_KP_HEXADECIMAL = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KP_HEXADECIMAL), - rodeo_input_keycode_LCTRL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_LCTRL), - rodeo_input_keycode_LSHIFT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_LSHIFT), - rodeo_input_keycode_LALT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_LALT), - rodeo_input_keycode_LGUI = mrodeo_input_scancode_maskshift(rodeo_input_scancode_LGUI), - rodeo_input_keycode_RCTRL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RCTRL), - rodeo_input_keycode_RSHIFT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RSHIFT), - rodeo_input_keycode_RALT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RALT), - rodeo_input_keycode_RGUI = mrodeo_input_scancode_maskshift(rodeo_input_scancode_RGUI), + rodeo_input_binary_keycode_LCTRL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_LCTRL), + rodeo_input_binary_keycode_LSHIFT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_LSHIFT), + rodeo_input_binary_keycode_LALT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_LALT), + rodeo_input_binary_keycode_LGUI = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_LGUI), + rodeo_input_binary_keycode_RCTRL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RCTRL), + rodeo_input_binary_keycode_RSHIFT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RSHIFT), + rodeo_input_binary_keycode_RALT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RALT), + rodeo_input_binary_keycode_RGUI = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_RGUI), - rodeo_input_keycode_MODE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_MODE), + rodeo_input_binary_keycode_MODE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_MODE), - rodeo_input_keycode_AUDIONEXT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIONEXT), - rodeo_input_keycode_AUDIOPREV = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOPREV), - rodeo_input_keycode_AUDIOSTOP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOSTOP), - rodeo_input_keycode_AUDIOPLAY = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOPLAY), - rodeo_input_keycode_AUDIOMUTE = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOMUTE), - rodeo_input_keycode_MEDIASELECT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_MEDIASELECT), - rodeo_input_keycode_WWW = mrodeo_input_scancode_maskshift(rodeo_input_scancode_WWW), - rodeo_input_keycode_MAIL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_MAIL), - rodeo_input_keycode_CALCULATOR = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CALCULATOR), - rodeo_input_keycode_COMPUTER = mrodeo_input_scancode_maskshift(rodeo_input_scancode_COMPUTER), - rodeo_input_keycode_AC_SEARCH = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_SEARCH), - rodeo_input_keycode_AC_HOME = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_HOME), - rodeo_input_keycode_AC_BACK = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_BACK), - rodeo_input_keycode_AC_FORWARD = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_FORWARD), - rodeo_input_keycode_AC_STOP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_STOP), - rodeo_input_keycode_AC_REFRESH = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_REFRESH), - rodeo_input_keycode_AC_BOOKMARKS = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AC_BOOKMARKS), - - rodeo_input_keycode_BRIGHTNESSDOWN = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_BRIGHTNESSDOWN), - rodeo_input_keycode_BRIGHTNESSUP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_BRIGHTNESSUP), - rodeo_input_keycode_DISPLAYSWITCH = mrodeo_input_scancode_maskshift(rodeo_input_scancode_DISPLAYSWITCH), - rodeo_input_keycode_KBDILLUMTOGGLE = - mrodeo_input_scancode_maskshift(rodeo_input_scancode_KBDILLUMTOGGLE), - rodeo_input_keycode_KBDILLUMDOWN = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KBDILLUMDOWN), - rodeo_input_keycode_KBDILLUMUP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_KBDILLUMUP), - rodeo_input_keycode_EJECT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_EJECT), - rodeo_input_keycode_SLEEP = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SLEEP), - rodeo_input_keycode_APP1 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_APP1), - rodeo_input_keycode_APP2 = mrodeo_input_scancode_maskshift(rodeo_input_scancode_APP2), + rodeo_input_binary_keycode_AUDIONEXT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIONEXT), + rodeo_input_binary_keycode_AUDIOPREV = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOPREV), + rodeo_input_binary_keycode_AUDIOSTOP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOSTOP), + rodeo_input_binary_keycode_AUDIOPLAY = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOPLAY), + rodeo_input_binary_keycode_AUDIOMUTE = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOMUTE), + rodeo_input_binary_keycode_MEDIASELECT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_MEDIASELECT), + rodeo_input_binary_keycode_WWW = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_WWW), + rodeo_input_binary_keycode_MAIL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_MAIL), + rodeo_input_binary_keycode_CALCULATOR = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CALCULATOR), + rodeo_input_binary_keycode_COMPUTER = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_COMPUTER), + rodeo_input_binary_keycode_AC_SEARCH = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_SEARCH), + rodeo_input_binary_keycode_AC_HOME = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_HOME), + rodeo_input_binary_keycode_AC_BACK = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_BACK), + rodeo_input_binary_keycode_AC_FORWARD = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_FORWARD), + rodeo_input_binary_keycode_AC_STOP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_STOP), + rodeo_input_binary_keycode_AC_REFRESH = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_REFRESH), + rodeo_input_binary_keycode_AC_BOOKMARKS = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AC_BOOKMARKS), + + rodeo_input_binary_keycode_BRIGHTNESSDOWN = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_BRIGHTNESSDOWN), + rodeo_input_binary_keycode_BRIGHTNESSUP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_BRIGHTNESSUP), + rodeo_input_binary_keycode_DISPLAYSWITCH = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_DISPLAYSWITCH), + rodeo_input_binary_keycode_KBDILLUMTOGGLE = + mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KBDILLUMTOGGLE), + rodeo_input_binary_keycode_KBDILLUMDOWN = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KBDILLUMDOWN), + rodeo_input_binary_keycode_KBDILLUMUP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_KBDILLUMUP), + rodeo_input_binary_keycode_EJECT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_EJECT), + rodeo_input_binary_keycode_SLEEP = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SLEEP), + rodeo_input_binary_keycode_APP1 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_APP1), + rodeo_input_binary_keycode_APP2 = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_APP2), - rodeo_input_keycode_AUDIOREWIND = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOREWIND), - rodeo_input_keycode_AUDIOFASTFORWARD = mrodeo_input_scancode_maskshift(rodeo_input_scancode_AUDIOFASTFORWARD), + rodeo_input_binary_keycode_AUDIOREWIND = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOREWIND), + rodeo_input_binary_keycode_AUDIOFASTFORWARD = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_AUDIOFASTFORWARD), - rodeo_input_keycode_SOFTLEFT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SOFTLEFT), - rodeo_input_keycode_SOFTRIGHT = mrodeo_input_scancode_maskshift(rodeo_input_scancode_SOFTRIGHT), - rodeo_input_keycode_CALL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_CALL), - rodeo_input_keycode_ENDCALL = mrodeo_input_scancode_maskshift(rodeo_input_scancode_ENDCALL) + rodeo_input_binary_keycode_SOFTLEFT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SOFTLEFT), + rodeo_input_binary_keycode_SOFTRIGHT = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_SOFTRIGHT), + rodeo_input_binary_keycode_CALL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_CALL), + rodeo_input_binary_keycode_ENDCALL = mrodeo_input_binary_scancode_maskshift(rodeo_input_binary_scancode_ENDCALL) } -rodeo_input_keycode_t; +rodeo_input_binary_keycode_t; /** * \brief Enumeration of valid key mods (possibly OR'd together). @@ -751,76 +751,54 @@ rodeo_input_keymod_t; typedef enum { - rodeo_input_mouse_INVALID = 0, - rodeo_input_mouse_LEFT = 1, - rodeo_input_mouse_MIDDLE = 2, - rodeo_input_mouse_RIGHT = 3, - rodeo_input_mouse_X1 = 4, - rodeo_input_mouse_X2 = 5, + rodeo_input_binary_mouseButton_INVALID = 0, + rodeo_input_binary_mouseButton_LEFT = 1, + rodeo_input_binary_mouseButton_MIDDLE = 2, + rodeo_input_binary_mouseButton_RIGHT = 3, + rodeo_input_binary_mouseButton_X1 = 4, + rodeo_input_binary_mouseButton_X2 = 5, } -rodeo_input_mouse_t; +rodeo_input_binary_mouseButton_t; // - SDL code end - -// - for sending state - - typedef enum { - rodeo_input_type_Invalid = 0, - rodeo_input_type_Binary + rodeo_input_type_Invalid = (1 << 0), + rodeo_input_type_Binary = (1 << 1) } -rodeo_input_type_t; +rodeo_input_type_t ; typedef enum { - rodeo_input_binary_state_Up = false, - rodeo_input_binary_state_Down = true -} -rodeo_input_binary_state_t; - -typedef -struct -{ - union - { - rodeo_input_binary_state_t binary_state; - }; - rodeo_input_type_t type; + rodeo_input_binary_Invalid = 0, + rodeo_input_binary_Scancode, + rodeo_input_binary_Mouse } -rodeo_input_any_state_t; - -// - for sending state end - +rodeo_input_binary_type_t; -// - for registering state - typedef enum { - rodeo_input_binary_Invalid = 0, - rodeo_input_binary_Scancode, - rodeo_input_binary_Mouse + rodeo_input_binary_state_Up = false, + rodeo_input_binary_state_Down = true } -rodeo_input_binary_type_t; +rodeo_input_binary_state_t; typedef struct { union { - // binary types - rodeo_input_scancode_t scancode; - rodeo_input_mouse_t mouse; - }; - union - { - rodeo_input_binary_type_t binary_type; - }; - rodeo_input_type_t type; - + rodeo_input_binary_state_t binary_state; + } + data; + rodeo_input_type_t input_type; } -rodeo_input_register_type_t; +rodeo_input_any_state_t; typedef void @@ -828,28 +806,42 @@ void rodeo_input_any_state_t state ); -// - for registering state end - - #define i_val rodeo_input_callback_function #define i_tag input_callback_functions -#include <stc/cvec.h> +#include <stc/cset.h> -#define i_key rodeo_input_scancode_t -#define i_val cvec_input_callback_functions -#define i_tag input_scancode_scene -#include <stc/cmap.h> +#define i_val rodeo_input_binary_scancode_t +#define i_tag input_binary_scancodes +#include <stc/cset.h> -#define i_key rodeo_input_mouse_t -#define i_val cvec_input_callback_functions -#define i_tag input_mouse_scene -#include <stc/cmap.h> +#define i_val rodeo_input_binary_mouseButton_t +#define i_tag input_binary_mouseButtons +#include <stc/cset.h> typedef struct { - cmap_input_scancode_scene scancode; - cmap_input_mouse_scene mouse; + uint32_t valid_types; // rodeo_input_type_t + //rodeo_input_callback_function *callback; + cset_input_callback_functions callbacks; + // binary + struct + { + cset_input_binary_scancodes scancodes; + cset_input_binary_mouseButtons mouse_buttons; + } + binary; + } -rodeo_input_scene_t; +rodeo_input_command_t; -//typedef cmap_input_scene rodeo_input_scene_t; +#define i_val rodeo_input_command_t* +#define i_tag input_commands +#include <stc/cset.h> + +typedef +struct +{ + cset_input_commands commands; +} +rodeo_input_scene_t; diff --git a/src/compile_flags.txt b/src/compile_flags.txt index 2c81d8a..26d1cc4 100644 --- a/src/compile_flags.txt +++ b/src/compile_flags.txt @@ -9,3 +9,4 @@ -Wextra -Wpedantic -Wconversion +-std=c99 diff --git a/src/input/irodeo_input.h b/src/input/irodeo_input_t.h index 6cd9992..77e150e 100644 --- a/src/input/irodeo_input.h +++ b/src/input/irodeo_input_t.h @@ -1,4 +1,5 @@ + // -- internal -- // public #include "rodeo/input_t.h" diff --git a/src/input/rodeo_input.c b/src/input/rodeo_input.c index e8c736b..bbfbfcf 100644 --- a/src/input/rodeo_input.c +++ b/src/input/rodeo_input.c @@ -3,12 +3,13 @@ // public #include "rodeo/input.h" #include "irodeo_input.h" +#include "irodeo_input_t.h" #include "rodeo/log.h" // -- external -- #include "SDL2/SDL.h" -static irodeo_input_state_t state = {0}; +static irodeo_input_state_t istate = {0}; bool rodeo_input_events_poll(void) @@ -23,32 +24,39 @@ rodeo_input_events_poll(void) return true; } break; + // - Binary - case SDL_KEYUP: case SDL_KEYDOWN: { - c_foreach(i, cset_input_scene, state.active_scenes) + c_foreach(i, cset_input_scene, istate.active_scenes) { - const cmap_input_scancode_scene_value *value = cmap_input_scancode_scene_get( - &((*i.ref)->scancode), - (rodeo_input_scancode_t)event.key.keysym.scancode - ); - if(value == NULL) + rodeo_input_scene_t *scene = *i.ref; + c_foreach(j, cset_input_commands, scene->commands) { - continue; - } - else - { - rodeo_input_any_state_t key_state = { - .binary_state = event.key.state, - .type = rodeo_input_type_Binary - }; - c_foreach( - j, - cvec_input_callback_functions, - value->second - ) + rodeo_input_command_t *command = *j.ref; + const cset_input_binary_scancodes_value *value = cset_input_binary_scancodes_get( + &command->binary.scancodes, + (rodeo_input_binary_scancode_t)event.key.keysym.scancode + ); + + if(value == NULL) + { + continue; + } + else { - (**j.ref)(key_state); + rodeo_input_any_state_t key_state = { + .data.binary_state = event.key.state, + .input_type = rodeo_input_type_Binary + }; + c_foreach( + k, + cset_input_callback_functions, + command->callbacks + ) + { + (**k.ref)(key_state); + } } } } @@ -57,31 +65,36 @@ rodeo_input_events_poll(void) case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: { - //event.button.button // which sdl mouse button it was - //event.button.state // if thue button was clicked or released - c_foreach(i, cset_input_scene, state.active_scenes) + c_foreach(i, cset_input_scene, istate.active_scenes) { - const cmap_input_mouse_scene_value *value = cmap_input_mouse_scene_get( - &((*i.ref)->mouse), - (rodeo_input_mouse_t)event.button.button - ); - if(value == NULL) + rodeo_input_scene_t *scene = *i.ref; + c_foreach(j, cset_input_commands, scene->commands) { - continue; - } - else - { - rodeo_input_any_state_t key_state = { - .binary_state = event.button.state, - .type = rodeo_input_type_Binary - }; - c_foreach( - j, - cvec_input_callback_functions, - value->second - ) + rodeo_input_command_t *command = *j.ref; + const cset_input_binary_mouseButtons_value *value = cset_input_binary_mouseButtons_get( + &command->binary.mouse_buttons, + (rodeo_input_binary_mouseButton_t)event.button.button + + ); + + if(value == NULL) { - (**j.ref)(key_state); + continue; + } + else + { + rodeo_input_any_state_t input_state = { + .data.binary_state = event.button.state, + .input_type = rodeo_input_type_Binary + }; + c_foreach( + k, + cset_input_callback_functions, + command->callbacks + ) + { + (**k.ref)(input_state); + } } } } @@ -93,77 +106,166 @@ rodeo_input_events_poll(void) } void -rodeo_input_scene_activate( - rodeo_input_scene_t *scene +rodeo_input_command_register_callback( + rodeo_input_command_t *command, + rodeo_input_callback_function func ) { - cset_input_scene_insert(&state.active_scenes, scene); + const cset_input_callback_functions_value *callback = cset_input_callback_functions_get(&(command->callbacks), func); + if(callback == NULL) + { + cset_input_callback_functions_insert(&(command->callbacks), func); + return; + } + else + { + rodeo_log( + rodeo_logLevel_warning, + "Input already registered" + ); + return; + } } void -rodeo_input_scene_deactivate( - rodeo_input_scene_t *scene +rodeo_input_command_unregister_callback( + rodeo_input_command_t *command, + rodeo_input_callback_function func ) { - cset_input_scene_erase(&state.active_scenes, scene); + cset_input_callback_functions_value *callback = + cset_input_callback_functions_get_mut(&(command->callbacks), func); + if(callback != NULL) + { + cset_input_callback_functions_erase_entry(&(command->callbacks), callback); + return; + } + else + { + rodeo_log( + rodeo_logLevel_warning, + "Attempted to remove callback but it is not registered" + ); + return; + } +} + +rodeo_input_scene_t* +rodeo_input_scene_create(void) +{ + rodeo_input_scene_t *result = malloc(sizeof(rodeo_input_scene_t)); + *result = (rodeo_input_scene_t){0}; + return result; } void -rodeo_input_scene_register_callback( - rodeo_input_callback_function func, - rodeo_input_scene_t *scene, - rodeo_input_register_type_t type +rodeo_input_scene_destroy(rodeo_input_scene_t *scene) +{ + rodeo_input_scene_deactivate(scene); + cset_input_commands_drop(&scene->commands); + free(scene); +} + +rodeo_input_command_t* +rodeo_input_command_create(uint32_t input_type) +{ + rodeo_input_command_t *result = malloc(sizeof(rodeo_input_command_t)); + *result = (rodeo_input_command_t) + { + .valid_types = input_type + }; + return result; +} + +void +rodeo_input_command_destroy(rodeo_input_command_t *command) +{ + cset_input_binary_scancodes_drop(&command->binary.scancodes); + cset_input_binary_mouseButtons_drop(&command->binary.mouse_buttons); + cset_input_callback_functions_drop(&command->callbacks); + free(command); +} + +bool +rodeo_input_command_register_binary_scancode( + rodeo_input_command_t *input_command, + rodeo_input_binary_scancode_t scancode ) { - switch (type.type) + if((rodeo_input_type_Binary & input_command->valid_types) == 0) { - case rodeo_input_type_Binary: - switch (type.binary_type) { - case rodeo_input_binary_Scancode: - { - if(!cmap_input_scancode_scene_contains(&scene->scancode, type.scancode)) - { - cmap_input_scancode_scene_insert(&scene->scancode, type.scancode, cvec_input_callback_functions_init()); - } - cvec_input_callback_functions* callbacks = cmap_input_scancode_scene_at_mut(&scene->scancode, type.scancode); - cvec_input_callback_functions_push(callbacks, func); - } - break; + rodeo_log( + rodeo_logLevel_error, + "Attempting to register input type which is invalid for this input command, failed to do so" + ); + return false; + } + else + { + cset_input_binary_scancodes_insert( + &input_command->binary.scancodes, + scancode + ); + return true; + } +} - case rodeo_input_binary_Mouse: - { - if(!cmap_input_mouse_scene_contains(&scene->mouse, type.mouse)) - { - cmap_input_mouse_scene_insert(&scene->mouse, type.mouse, cvec_input_callback_functions_init()); - } - cvec_input_callback_functions* callbacks = cmap_input_mouse_scene_at_mut(&scene->mouse, type.mouse); - cvec_input_callback_functions_push(callbacks, func); - } - break; - - case rodeo_input_binary_Invalid: - rodeo_log( - rodeo_logLevel_error, - "Failed to register invalid binary input type" - ); - break; - } - break; - case rodeo_input_type_Invalid: - rodeo_log( - rodeo_logLevel_error, - "Failed to register invalid input type" - ); - break; +bool +rodeo_input_command_register_binary_mouseButton( + rodeo_input_command_t *input_command, + rodeo_input_binary_mouseButton_t mouse_button +) +{ + if((rodeo_input_type_Binary & input_command->valid_types) == 0) + { + rodeo_log( + rodeo_logLevel_error, + "Attempting to register input type which is invalid for this input command, failed to do so" + ); + return false; + } + else + { + cset_input_binary_mouseButtons_insert( + &input_command->binary.mouse_buttons, + mouse_button + ); + return true; } } void -rodeo_input_scene_unregister_callback( - rodeo_input_callback_function func, +rodeo_input_scene_register_command( + rodeo_input_scene_t *scene, + rodeo_input_command_t *command +) +{ + cset_input_commands_insert( + &scene->commands, + command + ); +} + +void +rodeo_input_scene_unregister_command( rodeo_input_scene_t *scene, - rodeo_input_register_type_t type + rodeo_input_command_t *command ) { + cset_input_commands_erase( + &scene->commands, + command + ); +} + +void +rodeo_input_scene_activate(rodeo_input_scene_t *scene) +{ + cset_input_scene_insert(&istate.active_scenes, scene); +} +void +rodeo_input_scene_deactivate(rodeo_input_scene_t *scene) +{ + cset_input_scene_erase(&istate.active_scenes, scene); } diff --git a/src/rodeo.c b/src/rodeo.c index dcac005..91ce4f8 100644 --- a/src/rodeo.c +++ b/src/rodeo.c @@ -306,6 +306,8 @@ rodeo_frame_begin(void) irodeo_render_buffer_transient_alloc(); + state.quit = rodeo_input_events_poll(); + state.start_frame = state.end_frame; } @@ -316,7 +318,6 @@ rodeo_frame_end(void) bgfx_frame(false); - state.quit = rodeo_input_events_poll(); #ifndef __EMSCRIPTEN__ irodeo_frame_stall(); #endif |
