//from "sdl_scancode.h" {** * The SDL keyboard scancode representation. * * Values of this type are used to represent keyboard keys, among other places * in the SDL_Keysym.scancode key.keysym.scancode \endlink field of the * SDL_Event structure. * * The values in this enumeration are based on the USB usage page standard: * http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf *} const SDL_SCANCODE_UNKNOWN = 0; {** * Usage page $07 * * These values are from usage page $07 (USB keyboard page). *} SDL_SCANCODE_A = 4; SDL_SCANCODE_B = 5; SDL_SCANCODE_C = 6; SDL_SCANCODE_D = 7; SDL_SCANCODE_E = 8; SDL_SCANCODE_F = 9; SDL_SCANCODE_G = 10; SDL_SCANCODE_H = 11; SDL_SCANCODE_I = 12; SDL_SCANCODE_J = 13; SDL_SCANCODE_K = 14; SDL_SCANCODE_L = 15; SDL_SCANCODE_M = 16; SDL_SCANCODE_N = 17; SDL_SCANCODE_O = 18; SDL_SCANCODE_P = 19; SDL_SCANCODE_Q = 20; SDL_SCANCODE_R = 21; SDL_SCANCODE_S = 22; SDL_SCANCODE_T = 23; SDL_SCANCODE_U = 24; SDL_SCANCODE_V = 25; SDL_SCANCODE_W = 26; SDL_SCANCODE_X = 27; SDL_SCANCODE_Y = 28; SDL_SCANCODE_Z = 29; SDL_SCANCODE_1 = 30; SDL_SCANCODE_2 = 31; SDL_SCANCODE_3 = 32; SDL_SCANCODE_4 = 33; SDL_SCANCODE_5 = 34; SDL_SCANCODE_6 = 35; SDL_SCANCODE_7 = 36; SDL_SCANCODE_8 = 37; SDL_SCANCODE_9 = 38; SDL_SCANCODE_0 = 39; SDL_SCANCODE_RETURN = 40; SDL_SCANCODE_ESCAPE = 41; SDL_SCANCODE_BACKSPACE = 42; SDL_SCANCODE_TAB = 43; SDL_SCANCODE_SPACE = 44; SDL_SCANCODE_MINUS = 45; SDL_SCANCODE_EQUALS = 46; SDL_SCANCODE_LEFTBRACKET = 47; SDL_SCANCODE_RIGHTBRACKET = 48; SDL_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 * VERTICAL LINE in a US layout; REVERSE * SOLIDUS and VERTICAL LINE in a UK Mac * layout; NUMBER SIGN and TILDE in a UK * Windows layout; DOLLAR SIGN and POUND SIGN * in a Swiss German layout; NUMBER SIGN and * APOSTROPHE in a German layout; GRAVE * ACCENT and POUND SIGN in a French Mac * layout; and ASTERISK and MICRO SIGN in a * French Windows layout. *} SDL_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 SDL_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. *} SDL_SCANCODE_SEMICOLON = 51; SDL_SCANCODE_APOSTROPHE = 52; SDL_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 * and NOT SIGN in a UK Windows layout; SECTION * SIGN and PLUS-MINUS SIGN in US and UK Mac * layouts on ISO keyboards; SECTION SIGN and * DEGREE SIGN in a Swiss German layout (Mac: * only on ISO keyboards); CIRCUMFLEX ACCENT and * DEGREE SIGN in a German layout (Mac: only on * ISO keyboards); SUPERSCRIPT TWO and TILDE in a * French Windows layout; COMMERCIAL AT and * NUMBER SIGN in a French Mac layout on ISO * keyboards; and LESS-THAN SIGN and GREATER-THAN * SIGN in a Swiss German; German; or French Mac * layout on ANSI keyboards. *} SDL_SCANCODE_COMMA = 54; SDL_SCANCODE_PERIOD = 55; SDL_SCANCODE_SLASH = 56; SDL_SCANCODE_CAPSLOCK = 57; SDL_SCANCODE_F1 = 58; SDL_SCANCODE_F2 = 59; SDL_SCANCODE_F3 = 60; SDL_SCANCODE_F4 = 61; SDL_SCANCODE_F5 = 62; SDL_SCANCODE_F6 = 63; SDL_SCANCODE_F7 = 64; SDL_SCANCODE_F8 = 65; SDL_SCANCODE_F9 = 66; SDL_SCANCODE_F10 = 67; SDL_SCANCODE_F11 = 68; SDL_SCANCODE_F12 = 69; SDL_SCANCODE_PRINTSCREEN = 70; SDL_SCANCODE_SCROLLLOCK = 71; SDL_SCANCODE_PAUSE = 72; SDL_SCANCODE_INSERT = 73; {**< insert on PC; help on some Mac keyboards (but does send code 73; not 117) *} SDL_SCANCODE_HOME = 74; SDL_SCANCODE_PAGEUP = 75; SDL_SCANCODE_DELETE = 76; SDL_SCANCODE_END = 77; SDL_SCANCODE_PAGEDOWN = 78; SDL_SCANCODE_RIGHT = 79; SDL_SCANCODE_LEFT = 80; SDL_SCANCODE_DOWN = 81; SDL_SCANCODE_UP = 82; SDL_SCANCODE_NUMLOCKCLEAR = 83; {**< num lock on PC; clear on Mac keyboards *} SDL_SCANCODE_KP_DIVIDE = 84; SDL_SCANCODE_KP_MULTIPLY = 85; SDL_SCANCODE_KP_MINUS = 86; SDL_SCANCODE_KP_PLUS = 87; SDL_SCANCODE_KP_ENTER = 88; SDL_SCANCODE_KP_1 = 89; SDL_SCANCODE_KP_2 = 90; SDL_SCANCODE_KP_3 = 91; SDL_SCANCODE_KP_4 = 92; SDL_SCANCODE_KP_5 = 93; SDL_SCANCODE_KP_6 = 94; SDL_SCANCODE_KP_7 = 95; SDL_SCANCODE_KP_8 = 96; SDL_SCANCODE_KP_9 = 97; SDL_SCANCODE_KP_0 = 98; SDL_SCANCODE_KP_PERIOD = 99; SDL_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 * US or UK Mac layout; REVERSE SOLIDUS * (backslash) and VERTICAL LINE in a * US or UK Windows layout; and * LESS-THAN SIGN and GREATER-THAN SIGN * in a Swiss German; German; or French * layout. *} SDL_SCANCODE_APPLICATION = 101; {**< windows contextual menu; compose *} SDL_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. *} SDL_SCANCODE_KP_EQUALS = 103; SDL_SCANCODE_F13 = 104; SDL_SCANCODE_F14 = 105; SDL_SCANCODE_F15 = 106; SDL_SCANCODE_F16 = 107; SDL_SCANCODE_F17 = 108; SDL_SCANCODE_F18 = 109; SDL_SCANCODE_F19 = 110; SDL_SCANCODE_F20 = 111; SDL_SCANCODE_F21 = 112; SDL_SCANCODE_F22 = 113; SDL_SCANCODE_F23 = 114; SDL_SCANCODE_F24 = 115; SDL_SCANCODE_EXECUTE = 116; SDL_SCANCODE_HELP = 117; SDL_SCANCODE_MENU = 118; SDL_SCANCODE_SELECT = 119; SDL_SCANCODE_STOP = 120; SDL_SCANCODE_AGAIN = 121; {**< redo *} SDL_SCANCODE_UNDO = 122; SDL_SCANCODE_CUT = 123; SDL_SCANCODE_COPY = 124; SDL_SCANCODE_PASTE = 125; SDL_SCANCODE_FIND = 126; SDL_SCANCODE_MUTE = 127; SDL_SCANCODE_VOLUMEUP = 128; SDL_SCANCODE_VOLUMEDOWN = 129; {* not sure whether there's a reason to enable these *} {* SDL_SCANCODE_LOCKINGCAPSLOCK = 130; *} {* SDL_SCANCODE_LOCKINGNUMLOCK = 131; *} {* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132; *} SDL_SCANCODE_KP_COMMA = 133; SDL_SCANCODE_KP_EQUALSAS400 = 134; SDL_SCANCODE_INTERNATIONAL1 = 135; {**< used on Asian keyboards; see footnotes in USB doc *} SDL_SCANCODE_INTERNATIONAL2 = 136; SDL_SCANCODE_INTERNATIONAL3 = 137; {**< Yen *} SDL_SCANCODE_INTERNATIONAL4 = 138; SDL_SCANCODE_INTERNATIONAL5 = 139; SDL_SCANCODE_INTERNATIONAL6 = 140; SDL_SCANCODE_INTERNATIONAL7 = 141; SDL_SCANCODE_INTERNATIONAL8 = 142; SDL_SCANCODE_INTERNATIONAL9 = 143; SDL_SCANCODE_LANG1 = 144; {**< Hangul{English toggle *} SDL_SCANCODE_LANG2 = 145; {**< Hanja conversion *} SDL_SCANCODE_LANG3 = 146; {**< Katakana *} SDL_SCANCODE_LANG4 = 147; {**< Hiragana *} SDL_SCANCODE_LANG5 = 148; {**< Zenkaku{Hankaku *} SDL_SCANCODE_LANG6 = 149; {**< reserved *} SDL_SCANCODE_LANG7 = 150; {**< reserved *} SDL_SCANCODE_LANG8 = 151; {**< reserved *} SDL_SCANCODE_LANG9 = 152; {**< reserved *} SDL_SCANCODE_ALTERASE = 153; {**< Erase-Eaze *} SDL_SCANCODE_SYSREQ = 154; SDL_SCANCODE_CANCEL = 155; SDL_SCANCODE_CLEAR = 156; SDL_SCANCODE_PRIOR = 157; SDL_SCANCODE_RETURN2 = 158; SDL_SCANCODE_SEPARATOR = 159; SDL_SCANCODE_OUT = 160; SDL_SCANCODE_OPER = 161; SDL_SCANCODE_CLEARAGAIN = 162; SDL_SCANCODE_CRSEL = 163; SDL_SCANCODE_EXSEL = 164; SDL_SCANCODE_KP_00 = 176; SDL_SCANCODE_KP_000 = 177; SDL_SCANCODE_THOUSANDSSEPARATOR = 178; SDL_SCANCODE_DECIMALSEPARATOR = 179; SDL_SCANCODE_CURRENCYUNIT = 180; SDL_SCANCODE_CURRENCYSUBUNIT = 181; SDL_SCANCODE_KP_LEFTPAREN = 182; SDL_SCANCODE_KP_RIGHTPAREN = 183; SDL_SCANCODE_KP_LEFTBRACE = 184; SDL_SCANCODE_KP_RIGHTBRACE = 185; SDL_SCANCODE_KP_TAB = 186; SDL_SCANCODE_KP_BACKSPACE = 187; SDL_SCANCODE_KP_A = 188; SDL_SCANCODE_KP_B = 189; SDL_SCANCODE_KP_C = 190; SDL_SCANCODE_KP_D = 191; SDL_SCANCODE_KP_E = 192; SDL_SCANCODE_KP_F = 193; SDL_SCANCODE_KP_XOR = 194; SDL_SCANCODE_KP_POWER = 195; SDL_SCANCODE_KP_PERCENT = 196; SDL_SCANCODE_KP_LESS = 197; SDL_SCANCODE_KP_GREATER = 198; SDL_SCANCODE_KP_AMPERSAND = 199; SDL_SCANCODE_KP_DBLAMPERSAND = 200; SDL_SCANCODE_KP_VERTICALBAR = 201; SDL_SCANCODE_KP_DBLVERTICALBAR = 202; SDL_SCANCODE_KP_COLON = 203; SDL_SCANCODE_KP_HASH = 204; SDL_SCANCODE_KP_SPACE = 205; SDL_SCANCODE_KP_AT = 206; SDL_SCANCODE_KP_EXCLAM = 207; SDL_SCANCODE_KP_MEMSTORE = 208; SDL_SCANCODE_KP_MEMRECALL = 209; SDL_SCANCODE_KP_MEMCLEAR = 210; SDL_SCANCODE_KP_MEMADD = 211; SDL_SCANCODE_KP_MEMSUBTRACT = 212; SDL_SCANCODE_KP_MEMMULTIPLY = 213; SDL_SCANCODE_KP_MEMDIVIDE = 214; SDL_SCANCODE_KP_PLUSMINUS = 215; SDL_SCANCODE_KP_CLEAR = 216; SDL_SCANCODE_KP_CLEARENTRY = 217; SDL_SCANCODE_KP_BINARY = 218; SDL_SCANCODE_KP_OCTAL = 219; SDL_SCANCODE_KP_DECIMAL = 220; SDL_SCANCODE_KP_HEXADECIMAL = 221; SDL_SCANCODE_LCTRL = 224; SDL_SCANCODE_LSHIFT = 225; SDL_SCANCODE_LALT = 226; {**< alt; option *} SDL_SCANCODE_LGUI = 227; {**< windows; command (apple); meta *} SDL_SCANCODE_RCTRL = 228; SDL_SCANCODE_RSHIFT = 229; SDL_SCANCODE_RALT = 230; {**< alt gr; option *} SDL_SCANCODE_RGUI = 231; {**< windows; command (apple); meta *} SDL_SCANCODE_MODE = 257; {**< I'm not sure if this is really not covered * by any of the above; but since there's a * special KMOD_MODE for it I'm adding it here *} {*Usage page $07*} {** * Usage page $0C * * These values are mapped from usage page $0C (USB consumer page). *} SDL_SCANCODE_AUDIONEXT = 258; SDL_SCANCODE_AUDIOPREV = 259; SDL_SCANCODE_AUDIOSTOP = 260; SDL_SCANCODE_AUDIOPLAY = 261; SDL_SCANCODE_AUDIOMUTE = 262; SDL_SCANCODE_MEDIASELECT = 263; SDL_SCANCODE_WWW = 264; SDL_SCANCODE_MAIL = 265; SDL_SCANCODE_CALCULATOR = 266; SDL_SCANCODE_COMPUTER = 267; SDL_SCANCODE_AC_SEARCH = 268; SDL_SCANCODE_AC_HOME = 269; SDL_SCANCODE_AC_BACK = 270; SDL_SCANCODE_AC_FORWARD = 271; SDL_SCANCODE_AC_STOP = 272; SDL_SCANCODE_AC_REFRESH = 273; SDL_SCANCODE_AC_BOOKMARKS = 274; {*Usage page $0C*} {** * Walther keys * * These are values that Christian Walther added (for mac keyboard?). *} SDL_SCANCODE_BRIGHTNESSDOWN = 275; SDL_SCANCODE_BRIGHTNESSUP = 276; SDL_SCANCODE_DISPLAYSWITCH = 277; {**< display mirroring{dual display switch; video mode switch *} SDL_SCANCODE_KBDILLUMTOGGLE = 278; SDL_SCANCODE_KBDILLUMDOWN = 279; SDL_SCANCODE_KBDILLUMUP = 280; SDL_SCANCODE_EJECT = 281; SDL_SCANCODE_SLEEP = 282; SDL_SCANCODE_APP1 = 283; SDL_SCANCODE_APP2 = 284; {*Walther keys*} {* Add any other keys here. *} SDL_NUM_SCANCODES = 512; {**< not a key, just marks the number of scancodes for array bounds *} type PSDL_ScanCode = ^TSDL_ScanCode; TSDL_ScanCode = DWord; //from "sdl_keycode.h" {** * The SDL virtual key representation. * * Values of this type are used to represent keyboard keys using the current * layout of the keyboard. These values include Unicode values representing * the unmodified character that would be generated by pressing the key, or * an SDLK_* constant for those keys that do not generate characters. *} PSDL_KeyCode = ^TSDL_KeyCode; TSDL_KeyCode = SInt32; const SDLK_SCANCODE_MASK = 1 shl 30; SDLK_UNKNOWN = 0; SDLK_RETURN = '\r'; SDLK_ESCAPE = '\033'; SDLK_BACKSPACE = '\b'; SDLK_TAB = '\t'; SDLK_SPACE = ' '; SDLK_EXCLAIM = '!'; SDLK_QUOTEDBL = '"'; SDLK_HASH = '#'; SDLK_PERCENT = '%'; SDLK_DOLLAR = '$'; SDLK_AMPERSAND = '&'; SDLK_QUOTE = '\'; SDLK_LEFTPAREN = '('; SDLK_RIGHTPAREN = ')'; SDLK_ASTERISK = '*'; SDLK_PLUS = '+'; SDLK_COMMA = ';'; SDLK_MINUS = '-'; SDLK_PERIOD = '.'; SDLK_SLASH = '/'; SDLK_0 = '0'; SDLK_1 = '1'; SDLK_2 = '2'; SDLK_3 = '3'; SDLK_4 = '4'; SDLK_5 = '5'; SDLK_6 = '6'; SDLK_7 = '7'; SDLK_8 = '8'; SDLK_9 = '9'; SDLK_COLON = ':'; SDLK_SEMICOLON = ';'; SDLK_LESS = '<'; SDLK_EQUALS = '='; SDLK_GREATER = '>'; SDLK_QUESTION = '?'; SDLK_AT = '@'; {* Skip uppercase letters *} SDLK_LEFTBRACKET = '['; SDLK_BACKSLASH = '\\'; SDLK_RIGHTBRACKET = ']'; SDLK_CARET = '^'; SDLK_UNDERSCORE = '_'; SDLK_BACKQUOTE = '`'; SDLK_a = 'a'; SDLK_b = 'b'; SDLK_c = 'c'; SDLK_d = 'd'; SDLK_e = 'e'; SDLK_f = 'f'; SDLK_g = 'g'; SDLK_h = 'h'; SDLK_i = 'i'; SDLK_j = 'j'; SDLK_k = 'k'; SDLK_l = 'l'; SDLK_m = 'm'; SDLK_n = 'n'; SDLK_o = 'o'; SDLK_p = 'p'; SDLK_q = 'q'; SDLK_r = 'r'; SDLK_s = 's'; SDLK_t = 't'; SDLK_u = 'u'; SDLK_v = 'v'; SDLK_w = 'w'; SDLK_x = 'x'; SDLK_y = 'y'; SDLK_z = 'z'; SDLK_CAPSLOCK = SDL_SCANCODE_CAPSLOCK or SDLK_SCANCODE_MASK; SDLK_F1 = SDL_SCANCODE_F1 or SDLK_SCANCODE_MASK; SDLK_F2 = SDL_SCANCODE_F2 or SDLK_SCANCODE_MASK; SDLK_F3 = SDL_SCANCODE_F3 or SDLK_SCANCODE_MASK; SDLK_F4 = SDL_SCANCODE_F4 or SDLK_SCANCODE_MASK; SDLK_F5 = SDL_SCANCODE_F5 or SDLK_SCANCODE_MASK; SDLK_F6 = SDL_SCANCODE_F6 or SDLK_SCANCODE_MASK; SDLK_F7 = SDL_SCANCODE_F7 or SDLK_SCANCODE_MASK; SDLK_F8 = SDL_SCANCODE_F8 or SDLK_SCANCODE_MASK; SDLK_F9 = SDL_SCANCODE_F9 or SDLK_SCANCODE_MASK; SDLK_F10 = SDL_SCANCODE_F10 or SDLK_SCANCODE_MASK; SDLK_F11 = SDL_SCANCODE_F11 or SDLK_SCANCODE_MASK; SDLK_F12 = SDL_SCANCODE_F12 or SDLK_SCANCODE_MASK; SDLK_PRINTSCREEN = SDL_SCANCODE_PRINTSCREEN or SDLK_SCANCODE_MASK; SDLK_SCROLLLOCK = SDL_SCANCODE_SCROLLLOCK or SDLK_SCANCODE_MASK; SDLK_PAUSE = SDL_SCANCODE_PAUSE or SDLK_SCANCODE_MASK; SDLK_INSERT = SDL_SCANCODE_INSERT or SDLK_SCANCODE_MASK; SDLK_HOME = SDL_SCANCODE_HOME or SDLK_SCANCODE_MASK; SDLK_PAGEUP = SDL_SCANCODE_PAGEUP or SDLK_SCANCODE_MASK; SDLK_DELETE = '\177'; SDLK_END = SDL_SCANCODE_END or SDLK_SCANCODE_MASK; SDLK_PAGEDOWN = SDL_SCANCODE_PAGEDOWN or SDLK_SCANCODE_MASK; SDLK_RIGHT = SDL_SCANCODE_RIGHT or SDLK_SCANCODE_MASK; SDLK_LEFT = SDL_SCANCODE_LEFT or SDLK_SCANCODE_MASK; SDLK_DOWN = SDL_SCANCODE_DOWN or SDLK_SCANCODE_MASK; SDLK_UP = SDL_SCANCODE_UP or SDLK_SCANCODE_MASK; SDLK_NUMLOCKCLEAR = SDL_SCANCODE_NUMLOCKCLEAR or SDLK_SCANCODE_MASK; SDLK_KP_DIVIDE = SDL_SCANCODE_KP_DIVIDE or SDLK_SCANCODE_MASK; SDLK_KP_MULTIPLY = SDL_SCANCODE_KP_MULTIPLY or SDLK_SCANCODE_MASK; SDLK_KP_MINUS = SDL_SCANCODE_KP_MINUS or SDLK_SCANCODE_MASK; SDLK_KP_PLUS = SDL_SCANCODE_KP_PLUS or SDLK_SCANCODE_MASK; SDLK_KP_ENTER = SDL_SCANCODE_KP_ENTER or SDLK_SCANCODE_MASK; SDLK_KP_1 = SDL_SCANCODE_KP_1 or SDLK_SCANCODE_MASK; SDLK_KP_2 = SDL_SCANCODE_KP_2 or SDLK_SCANCODE_MASK; SDLK_KP_3 = SDL_SCANCODE_KP_3 or SDLK_SCANCODE_MASK; SDLK_KP_4 = SDL_SCANCODE_KP_4 or SDLK_SCANCODE_MASK; SDLK_KP_5 = SDL_SCANCODE_KP_5 or SDLK_SCANCODE_MASK; SDLK_KP_6 = SDL_SCANCODE_KP_6 or SDLK_SCANCODE_MASK; SDLK_KP_7 = SDL_SCANCODE_KP_7 or SDLK_SCANCODE_MASK; SDLK_KP_8 = SDL_SCANCODE_KP_8 or SDLK_SCANCODE_MASK; SDLK_KP_9 = SDL_SCANCODE_KP_9 or SDLK_SCANCODE_MASK; SDLK_KP_0 = SDL_SCANCODE_KP_0 or SDLK_SCANCODE_MASK; SDLK_KP_PERIOD = SDL_SCANCODE_KP_PERIOD or SDLK_SCANCODE_MASK; SDLK_APPLICATION = SDL_SCANCODE_APPLICATION or SDLK_SCANCODE_MASK; SDLK_POWER = SDL_SCANCODE_POWER or SDLK_SCANCODE_MASK; SDLK_KP_EQUALS = SDL_SCANCODE_KP_EQUALS or SDLK_SCANCODE_MASK; SDLK_F13 = SDL_SCANCODE_F13 or SDLK_SCANCODE_MASK; SDLK_F14 = SDL_SCANCODE_F14 or SDLK_SCANCODE_MASK; SDLK_F15 = SDL_SCANCODE_F15 or SDLK_SCANCODE_MASK; SDLK_F16 = SDL_SCANCODE_F16 or SDLK_SCANCODE_MASK; SDLK_F17 = SDL_SCANCODE_F17 or SDLK_SCANCODE_MASK; SDLK_F18 = SDL_SCANCODE_F18 or SDLK_SCANCODE_MASK; SDLK_F19 = SDL_SCANCODE_F19 or SDLK_SCANCODE_MASK; SDLK_F20 = SDL_SCANCODE_F20 or SDLK_SCANCODE_MASK; SDLK_F21 = SDL_SCANCODE_F21 or SDLK_SCANCODE_MASK; SDLK_F22 = SDL_SCANCODE_F22 or SDLK_SCANCODE_MASK; SDLK_F23 = SDL_SCANCODE_F23 or SDLK_SCANCODE_MASK; SDLK_F24 = SDL_SCANCODE_F24 or SDLK_SCANCODE_MASK; SDLK_EXECUTE = SDL_SCANCODE_EXECUTE or SDLK_SCANCODE_MASK; SDLK_HELP = SDL_SCANCODE_HELP or SDLK_SCANCODE_MASK; SDLK_MENU = SDL_SCANCODE_MENU or SDLK_SCANCODE_MASK; SDLK_SELECT = SDL_SCANCODE_SELECT or SDLK_SCANCODE_MASK; SDLK_STOP = SDL_SCANCODE_STOP or SDLK_SCANCODE_MASK; SDLK_AGAIN = SDL_SCANCODE_AGAIN or SDLK_SCANCODE_MASK; SDLK_UNDO = SDL_SCANCODE_UNDO or SDLK_SCANCODE_MASK; SDLK_CUT = SDL_SCANCODE_CUT or SDLK_SCANCODE_MASK; SDLK_COPY = SDL_SCANCODE_COPY or SDLK_SCANCODE_MASK; SDLK_PASTE = SDL_SCANCODE_PASTE or SDLK_SCANCODE_MASK; SDLK_FIND = SDL_SCANCODE_FIND or SDLK_SCANCODE_MASK; SDLK_MUTE = SDL_SCANCODE_MUTE or SDLK_SCANCODE_MASK; SDLK_VOLUMEUP = SDL_SCANCODE_VOLUMEUP or SDLK_SCANCODE_MASK; SDLK_VOLUMEDOWN = SDL_SCANCODE_VOLUMEDOWN or SDLK_SCANCODE_MASK; SDLK_KP_COMMA = SDL_SCANCODE_KP_COMMA or SDLK_SCANCODE_MASK; SDLK_KP_EQUALSAS400 = SDL_SCANCODE_KP_EQUALSAS400 or SDLK_SCANCODE_MASK; SDLK_ALTERASE = SDL_SCANCODE_ALTERASE or SDLK_SCANCODE_MASK; SDLK_SYSREQ = SDL_SCANCODE_SYSREQ or SDLK_SCANCODE_MASK; SDLK_CANCEL = SDL_SCANCODE_CANCEL or SDLK_SCANCODE_MASK; SDLK_CLEAR = SDL_SCANCODE_CLEAR or SDLK_SCANCODE_MASK; SDLK_PRIOR = SDL_SCANCODE_PRIOR or SDLK_SCANCODE_MASK; SDLK_RETURN2 = SDL_SCANCODE_RETURN2 or SDLK_SCANCODE_MASK; SDLK_SEPARATOR = SDL_SCANCODE_SEPARATOR or SDLK_SCANCODE_MASK; SDLK_OUT = SDL_SCANCODE_OUT or SDLK_SCANCODE_MASK; SDLK_OPER = SDL_SCANCODE_OPER or SDLK_SCANCODE_MASK; SDLK_CLEARAGAIN = SDL_SCANCODE_CLEARAGAIN or SDLK_SCANCODE_MASK; SDLK_CRSEL = SDL_SCANCODE_CRSEL or SDLK_SCANCODE_MASK; SDLK_EXSEL = SDL_SCANCODE_EXSEL or SDLK_SCANCODE_MASK; SDLK_KP_00 = SDL_SCANCODE_KP_00 or SDLK_SCANCODE_MASK; SDLK_KP_000 = SDL_SCANCODE_KP_000 or SDLK_SCANCODE_MASK; SDLK_THOUSANDSSEPARATOR = SDL_SCANCODE_THOUSANDSSEPARATOR or SDLK_SCANCODE_MASK; SDLK_DECIMALSEPARATOR = SDL_SCANCODE_DECIMALSEPARATOR or SDLK_SCANCODE_MASK; SDLK_CURRENCYUNIT = SDL_SCANCODE_CURRENCYUNIT or SDLK_SCANCODE_MASK; SDLK_CURRENCYSUBUNIT = SDL_SCANCODE_CURRENCYSUBUNIT or SDLK_SCANCODE_MASK; SDLK_KP_LEFTPAREN = SDL_SCANCODE_KP_LEFTPAREN or SDLK_SCANCODE_MASK; SDLK_KP_RIGHTPAREN = SDL_SCANCODE_KP_RIGHTPAREN or SDLK_SCANCODE_MASK; SDLK_KP_LEFTBRACE = SDL_SCANCODE_KP_LEFTBRACE or SDLK_SCANCODE_MASK; SDLK_KP_RIGHTBRACE = SDL_SCANCODE_KP_RIGHTBRACE or SDLK_SCANCODE_MASK; SDLK_KP_TAB = SDL_SCANCODE_KP_TAB or SDLK_SCANCODE_MASK; SDLK_KP_BACKSPACE = SDL_SCANCODE_KP_BACKSPACE or SDLK_SCANCODE_MASK; SDLK_KP_A = SDL_SCANCODE_KP_A or SDLK_SCANCODE_MASK; SDLK_KP_B = SDL_SCANCODE_KP_B or SDLK_SCANCODE_MASK; SDLK_KP_C = SDL_SCANCODE_KP_C or SDLK_SCANCODE_MASK; SDLK_KP_D = SDL_SCANCODE_KP_D or SDLK_SCANCODE_MASK; SDLK_KP_E = SDL_SCANCODE_KP_E or SDLK_SCANCODE_MASK; SDLK_KP_F = SDL_SCANCODE_KP_F or SDLK_SCANCODE_MASK; SDLK_KP_XOR = SDL_SCANCODE_KP_XOR or SDLK_SCANCODE_MASK; SDLK_KP_POWER = SDL_SCANCODE_KP_POWER or SDLK_SCANCODE_MASK; SDLK_KP_PERCENT = SDL_SCANCODE_KP_PERCENT or SDLK_SCANCODE_MASK; SDLK_KP_LESS = SDL_SCANCODE_KP_LESS or SDLK_SCANCODE_MASK; SDLK_KP_GREATER = SDL_SCANCODE_KP_GREATER or SDLK_SCANCODE_MASK; SDLK_KP_AMPERSAND = SDL_SCANCODE_KP_AMPERSAND or SDLK_SCANCODE_MASK; SDLK_KP_DBLAMPERSAND = SDL_SCANCODE_KP_DBLAMPERSAND or SDLK_SCANCODE_MASK; SDLK_KP_VERTICALBAR = SDL_SCANCODE_KP_VERTICALBAR or SDLK_SCANCODE_MASK; SDLK_KP_DBLVERTICALBAR = SDL_SCANCODE_KP_DBLVERTICALBAR or SDLK_SCANCODE_MASK; SDLK_KP_COLON = SDL_SCANCODE_KP_COLON or SDLK_SCANCODE_MASK; SDLK_KP_HASH = SDL_SCANCODE_KP_HASH or SDLK_SCANCODE_MASK; SDLK_KP_SPACE = SDL_SCANCODE_KP_SPACE or SDLK_SCANCODE_MASK; SDLK_KP_AT = SDL_SCANCODE_KP_AT or SDLK_SCANCODE_MASK; SDLK_KP_EXCLAM = SDL_SCANCODE_KP_EXCLAM or SDLK_SCANCODE_MASK; SDLK_KP_MEMSTORE = SDL_SCANCODE_KP_MEMSTORE or SDLK_SCANCODE_MASK; SDLK_KP_MEMRECALL = SDL_SCANCODE_KP_MEMRECALL or SDLK_SCANCODE_MASK; SDLK_KP_MEMCLEAR = SDL_SCANCODE_KP_MEMCLEAR or SDLK_SCANCODE_MASK; SDLK_KP_MEMADD = SDL_SCANCODE_KP_MEMADD or SDLK_SCANCODE_MASK; SDLK_KP_MEMSUBTRACT = SDL_SCANCODE_KP_MEMSUBTRACT or SDLK_SCANCODE_MASK; SDLK_KP_MEMMULTIPLY = SDL_SCANCODE_KP_MEMMULTIPLY or SDLK_SCANCODE_MASK; SDLK_KP_MEMDIVIDE = SDL_SCANCODE_KP_MEMDIVIDE or SDLK_SCANCODE_MASK; SDLK_KP_PLUSMINUS = SDL_SCANCODE_KP_PLUSMINUS or SDLK_SCANCODE_MASK; SDLK_KP_CLEAR = SDL_SCANCODE_KP_CLEAR or SDLK_SCANCODE_MASK; SDLK_KP_CLEARENTRY = SDL_SCANCODE_KP_CLEARENTRY or SDLK_SCANCODE_MASK; SDLK_KP_BINARY = SDL_SCANCODE_KP_BINARY or SDLK_SCANCODE_MASK; SDLK_KP_OCTAL = SDL_SCANCODE_KP_OCTAL or SDLK_SCANCODE_MASK; SDLK_KP_DECIMAL = SDL_SCANCODE_KP_DECIMAL or SDLK_SCANCODE_MASK; SDLK_KP_HEXADECIMAL = SDL_SCANCODE_KP_HEXADECIMAL or SDLK_SCANCODE_MASK; SDLK_LCTRL = SDL_SCANCODE_LCTRL or SDLK_SCANCODE_MASK; SDLK_LSHIFT = SDL_SCANCODE_LSHIFT or SDLK_SCANCODE_MASK; SDLK_LALT = SDL_SCANCODE_LALT or SDLK_SCANCODE_MASK; SDLK_LGUI = SDL_SCANCODE_LGUI or SDLK_SCANCODE_MASK; SDLK_RCTRL = SDL_SCANCODE_RCTRL or SDLK_SCANCODE_MASK; SDLK_RSHIFT = SDL_SCANCODE_RSHIFT or SDLK_SCANCODE_MASK; SDLK_RALT = SDL_SCANCODE_RALT or SDLK_SCANCODE_MASK; SDLK_RGUI = SDL_SCANCODE_RGUI or SDLK_SCANCODE_MASK; SDLK_MODE = SDL_SCANCODE_MODE or SDLK_SCANCODE_MASK; SDLK_AUDIONEXT = SDL_SCANCODE_AUDIONEXT or SDLK_SCANCODE_MASK; SDLK_AUDIOPREV = SDL_SCANCODE_AUDIOPREV or SDLK_SCANCODE_MASK; SDLK_AUDIOSTOP = SDL_SCANCODE_AUDIOSTOP or SDLK_SCANCODE_MASK; SDLK_AUDIOPLAY = SDL_SCANCODE_AUDIOPLAY or SDLK_SCANCODE_MASK; SDLK_AUDIOMUTE = SDL_SCANCODE_AUDIOMUTE or SDLK_SCANCODE_MASK; SDLK_MEDIASELECT = SDL_SCANCODE_MEDIASELECT or SDLK_SCANCODE_MASK; SDLK_WWW = SDL_SCANCODE_WWW or SDLK_SCANCODE_MASK; SDLK_MAIL = SDL_SCANCODE_MAIL or SDLK_SCANCODE_MASK; SDLK_CALCULATOR = SDL_SCANCODE_CALCULATOR or SDLK_SCANCODE_MASK; SDLK_COMPUTER = SDL_SCANCODE_COMPUTER or SDLK_SCANCODE_MASK; SDLK_AC_SEARCH = SDL_SCANCODE_AC_SEARCH or SDLK_SCANCODE_MASK; SDLK_AC_HOME = SDL_SCANCODE_AC_HOME or SDLK_SCANCODE_MASK; SDLK_AC_BACK = SDL_SCANCODE_AC_BACK or SDLK_SCANCODE_MASK; SDLK_AC_FORWARD = SDL_SCANCODE_AC_FORWARD or SDLK_SCANCODE_MASK; SDLK_AC_STOP = SDL_SCANCODE_AC_STOP or SDLK_SCANCODE_MASK; SDLK_AC_REFRESH = SDL_SCANCODE_AC_REFRESH or SDLK_SCANCODE_MASK; SDLK_AC_BOOKMARKS = SDL_SCANCODE_AC_BOOKMARKS or SDLK_SCANCODE_MASK; SDLK_BRIGHTNESSDOWN = SDL_SCANCODE_BRIGHTNESSDOWN or SDLK_SCANCODE_MASK; SDLK_BRIGHTNESSUP = SDL_SCANCODE_BRIGHTNESSUP or SDLK_SCANCODE_MASK; SDLK_DISPLAYSWITCH = SDL_SCANCODE_DISPLAYSWITCH or SDLK_SCANCODE_MASK; SDLK_KBDILLUMTOGGLE = SDL_SCANCODE_KBDILLUMTOGGLE or SDLK_SCANCODE_MASK; SDLK_KBDILLUMDOWN = SDL_SCANCODE_KBDILLUMDOWN or SDLK_SCANCODE_MASK; SDLK_KBDILLUMUP = SDL_SCANCODE_KBDILLUMUP or SDLK_SCANCODE_MASK; SDLK_EJECT = SDL_SCANCODE_EJECT or SDLK_SCANCODE_MASK; SDLK_SLEEP = SDL_SCANCODE_SLEEP or SDLK_SCANCODE_MASK; {** * Enumeration of valid key mods (possibly OR'd together). *} KMOD_NONE = $0000; KMOD_LSHIFT = $0001; KMOD_RSHIFT = $0002; KMOD_LCTRL = $0040; KMOD_RCTRL = $0080; KMOD_LALT = $0100; KMOD_RALT = $0200; KMOD_LGUI = $0400; KMOD_RGUI = $0800; KMOD_NUM = $1000; KMOD_CAPS = $2000; KMOD_MODE = $4000; KMOD_RESERVED = $8000; type PSDL_KeyMod = ^TSDL_KeyMod; TSDL_KeyMod = Word; const KMOD_CTRL = KMOD_LCTRL or KMOD_RCTRL; KMOD_SHIFT = KMOD_LSHIFT or KMOD_RSHIFT; KMOD_ALT = KMOD_LALT or KMOD_RALT; KMOD_GUI = KMOD_LGUI or KMOD_RGUI;