1 //============================================================================ 2 // 3 // SSSS tt lll lll 4 // SS SS tt ll ll 5 // SS tttttt eeee ll ll aaaa 6 // SSSS tt ee ee ll ll aa 7 // SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" 8 // SS SS tt ee ll ll aa aa 9 // SSSS ttt eeeee llll llll aaaaa 10 // 11 // Copyright (c) 1995-2014 by Bradford W. Mott, Stephen Anthony 12 // and the Stella Team 13 // 14 // See the file "License.txt" for information on usage and redistribution of 15 // this file, and for a DISCLAIMER OF ALL WARRANTIES. 16 // 17 // $Id: StellaKeys.hxx 2838 2014-01-17 23:34:03Z stephena $ 18 //============================================================================ 19 20 #ifndef STELLA_KEYS_HXX 21 #define STELLA_KEYS_HXX 22 23 /** 24 This class implements a thin wrapper around the SDL keysym enumerations, 25 such that SDL-specific code doesn't have to go into the internal parts of 26 the codebase. The keycodes are exactly the same, but from the POV of the 27 rest of the code, they are *KBD* (keyboard) keys, not *SDL* keys. 28 29 Once the codebase is ported to SDL2, the intent is to simply change this 30 file without having to modify all other classes that use StellaKey. 31 32 @author Stephen Anthony 33 */ 34 35 // This comes directly from SDL_keysym.h 36 typedef enum { 37 /** @name ASCII mapped keysyms 38 * The keyboard syms have been cleverly chosen to map to ASCII 39 */ 40 /*@{*/ 41 KBDK_UNKNOWN = 0, 42 KBDK_FIRST = 0, 43 KBDK_BACKSPACE = 8, 44 KBDK_TAB = 9, 45 KBDK_CLEAR = 12, 46 KBDK_RETURN = 13, 47 KBDK_PAUSE = 19, 48 KBDK_ESCAPE = 27, 49 KBDK_SPACE = 32, 50 KBDK_EXCLAIM = 33, 51 KBDK_QUOTEDBL = 34, 52 KBDK_HASH = 35, 53 KBDK_DOLLAR = 36, 54 KBDK_AMPERSAND = 38, 55 KBDK_QUOTE = 39, 56 KBDK_LEFTPAREN = 40, 57 KBDK_RIGHTPAREN = 41, 58 KBDK_ASTERISK = 42, 59 KBDK_PLUS = 43, 60 KBDK_COMMA = 44, 61 KBDK_MINUS = 45, 62 KBDK_PERIOD = 46, 63 KBDK_SLASH = 47, 64 KBDK_0 = 48, 65 KBDK_1 = 49, 66 KBDK_2 = 50, 67 KBDK_3 = 51, 68 KBDK_4 = 52, 69 KBDK_5 = 53, 70 KBDK_6 = 54, 71 KBDK_7 = 55, 72 KBDK_8 = 56, 73 KBDK_9 = 57, 74 KBDK_COLON = 58, 75 KBDK_SEMICOLON = 59, 76 KBDK_LESS = 60, 77 KBDK_EQUALS = 61, 78 KBDK_GREATER = 62, 79 KBDK_QUESTION = 63, 80 KBDK_AT = 64, 81 /* 82 Skip uppercase letters 83 */ 84 KBDK_LEFTBRACKET = 91, 85 KBDK_BACKSLASH = 92, 86 KBDK_RIGHTBRACKET = 93, 87 KBDK_CARET = 94, 88 KBDK_UNDERSCORE = 95, 89 KBDK_BACKQUOTE = 96, 90 KBDK_a = 97, 91 KBDK_b = 98, 92 KBDK_c = 99, 93 KBDK_d = 100, 94 KBDK_e = 101, 95 KBDK_f = 102, 96 KBDK_g = 103, 97 KBDK_h = 104, 98 KBDK_i = 105, 99 KBDK_j = 106, 100 KBDK_k = 107, 101 KBDK_l = 108, 102 KBDK_m = 109, 103 KBDK_n = 110, 104 KBDK_o = 111, 105 KBDK_p = 112, 106 KBDK_q = 113, 107 KBDK_r = 114, 108 KBDK_s = 115, 109 KBDK_t = 116, 110 KBDK_u = 117, 111 KBDK_v = 118, 112 KBDK_w = 119, 113 KBDK_x = 120, 114 KBDK_y = 121, 115 KBDK_z = 122, 116 KBDK_DELETE = 127, 117 /* End of ASCII mapped keysyms */ 118 /*@}*/ 119 120 /** @name International keyboard syms */ 121 /*@{*/ 122 KBDK_WORLD_0 = 160, /* 0xA0 */ 123 KBDK_WORLD_1 = 161, 124 KBDK_WORLD_2 = 162, 125 KBDK_WORLD_3 = 163, 126 KBDK_WORLD_4 = 164, 127 KBDK_WORLD_5 = 165, 128 KBDK_WORLD_6 = 166, 129 KBDK_WORLD_7 = 167, 130 KBDK_WORLD_8 = 168, 131 KBDK_WORLD_9 = 169, 132 KBDK_WORLD_10 = 170, 133 KBDK_WORLD_11 = 171, 134 KBDK_WORLD_12 = 172, 135 KBDK_WORLD_13 = 173, 136 KBDK_WORLD_14 = 174, 137 KBDK_WORLD_15 = 175, 138 KBDK_WORLD_16 = 176, 139 KBDK_WORLD_17 = 177, 140 KBDK_WORLD_18 = 178, 141 KBDK_WORLD_19 = 179, 142 KBDK_WORLD_20 = 180, 143 KBDK_WORLD_21 = 181, 144 KBDK_WORLD_22 = 182, 145 KBDK_WORLD_23 = 183, 146 KBDK_WORLD_24 = 184, 147 KBDK_WORLD_25 = 185, 148 KBDK_WORLD_26 = 186, 149 KBDK_WORLD_27 = 187, 150 KBDK_WORLD_28 = 188, 151 KBDK_WORLD_29 = 189, 152 KBDK_WORLD_30 = 190, 153 KBDK_WORLD_31 = 191, 154 KBDK_WORLD_32 = 192, 155 KBDK_WORLD_33 = 193, 156 KBDK_WORLD_34 = 194, 157 KBDK_WORLD_35 = 195, 158 KBDK_WORLD_36 = 196, 159 KBDK_WORLD_37 = 197, 160 KBDK_WORLD_38 = 198, 161 KBDK_WORLD_39 = 199, 162 KBDK_WORLD_40 = 200, 163 KBDK_WORLD_41 = 201, 164 KBDK_WORLD_42 = 202, 165 KBDK_WORLD_43 = 203, 166 KBDK_WORLD_44 = 204, 167 KBDK_WORLD_45 = 205, 168 KBDK_WORLD_46 = 206, 169 KBDK_WORLD_47 = 207, 170 KBDK_WORLD_48 = 208, 171 KBDK_WORLD_49 = 209, 172 KBDK_WORLD_50 = 210, 173 KBDK_WORLD_51 = 211, 174 KBDK_WORLD_52 = 212, 175 KBDK_WORLD_53 = 213, 176 KBDK_WORLD_54 = 214, 177 KBDK_WORLD_55 = 215, 178 KBDK_WORLD_56 = 216, 179 KBDK_WORLD_57 = 217, 180 KBDK_WORLD_58 = 218, 181 KBDK_WORLD_59 = 219, 182 KBDK_WORLD_60 = 220, 183 KBDK_WORLD_61 = 221, 184 KBDK_WORLD_62 = 222, 185 KBDK_WORLD_63 = 223, 186 KBDK_WORLD_64 = 224, 187 KBDK_WORLD_65 = 225, 188 KBDK_WORLD_66 = 226, 189 KBDK_WORLD_67 = 227, 190 KBDK_WORLD_68 = 228, 191 KBDK_WORLD_69 = 229, 192 KBDK_WORLD_70 = 230, 193 KBDK_WORLD_71 = 231, 194 KBDK_WORLD_72 = 232, 195 KBDK_WORLD_73 = 233, 196 KBDK_WORLD_74 = 234, 197 KBDK_WORLD_75 = 235, 198 KBDK_WORLD_76 = 236, 199 KBDK_WORLD_77 = 237, 200 KBDK_WORLD_78 = 238, 201 KBDK_WORLD_79 = 239, 202 KBDK_WORLD_80 = 240, 203 KBDK_WORLD_81 = 241, 204 KBDK_WORLD_82 = 242, 205 KBDK_WORLD_83 = 243, 206 KBDK_WORLD_84 = 244, 207 KBDK_WORLD_85 = 245, 208 KBDK_WORLD_86 = 246, 209 KBDK_WORLD_87 = 247, 210 KBDK_WORLD_88 = 248, 211 KBDK_WORLD_89 = 249, 212 KBDK_WORLD_90 = 250, 213 KBDK_WORLD_91 = 251, 214 KBDK_WORLD_92 = 252, 215 KBDK_WORLD_93 = 253, 216 KBDK_WORLD_94 = 254, 217 KBDK_WORLD_95 = 255, /* 0xFF */ 218 /*@}*/ 219 220 /** @name Numeric keypad */ 221 /*@{*/ 222 KBDK_KP0 = 256, 223 KBDK_KP1 = 257, 224 KBDK_KP2 = 258, 225 KBDK_KP3 = 259, 226 KBDK_KP4 = 260, 227 KBDK_KP5 = 261, 228 KBDK_KP6 = 262, 229 KBDK_KP7 = 263, 230 KBDK_KP8 = 264, 231 KBDK_KP9 = 265, 232 KBDK_KP_PERIOD = 266, 233 KBDK_KP_DIVIDE = 267, 234 KBDK_KP_MULTIPLY = 268, 235 KBDK_KP_MINUS = 269, 236 KBDK_KP_PLUS = 270, 237 KBDK_KP_ENTER = 271, 238 KBDK_KP_EQUALS = 272, 239 /*@}*/ 240 241 /** @name Arrows + Home/End pad */ 242 /*@{*/ 243 KBDK_UP = 273, 244 KBDK_DOWN = 274, 245 KBDK_RIGHT = 275, 246 KBDK_LEFT = 276, 247 KBDK_INSERT = 277, 248 KBDK_HOME = 278, 249 KBDK_END = 279, 250 KBDK_PAGEUP = 280, 251 KBDK_PAGEDOWN = 281, 252 /*@}*/ 253 254 /** @name Function keys */ 255 /*@{*/ 256 KBDK_F1 = 282, 257 KBDK_F2 = 283, 258 KBDK_F3 = 284, 259 KBDK_F4 = 285, 260 KBDK_F5 = 286, 261 KBDK_F6 = 287, 262 KBDK_F7 = 288, 263 KBDK_F8 = 289, 264 KBDK_F9 = 290, 265 KBDK_F10 = 291, 266 KBDK_F11 = 292, 267 KBDK_F12 = 293, 268 KBDK_F13 = 294, 269 KBDK_F14 = 295, 270 KBDK_F15 = 296, 271 /*@}*/ 272 273 /** @name Key state modifier keys */ 274 /*@{*/ 275 KBDK_NUMLOCK = 300, 276 KBDK_CAPSLOCK = 301, 277 KBDK_SCROLLOCK = 302, 278 KBDK_RSHIFT = 303, 279 KBDK_LSHIFT = 304, 280 KBDK_RCTRL = 305, 281 KBDK_LCTRL = 306, 282 KBDK_RALT = 307, 283 KBDK_LALT = 308, 284 KBDK_RMETA = 309, 285 KBDK_LMETA = 310, 286 KBDK_LSUPER = 311, /**< Left "Windows" key */ 287 KBDK_RSUPER = 312, /**< Right "Windows" key */ 288 KBDK_MODE = 313, /**< "Alt Gr" key */ 289 KBDK_COMPOSE = 314, /**< Multi-key compose key */ 290 /*@}*/ 291 292 /** @name Miscellaneous function keys */ 293 /*@{*/ 294 KBDK_HELP = 315, 295 KBDK_PRINT = 316, 296 KBDK_SYSREQ = 317, 297 KBDK_BREAK = 318, 298 KBDK_MENU = 319, 299 KBDK_POWER = 320, /**< Power Macintosh power key */ 300 KBDK_EURO = 321, /**< Some european keyboards */ 301 KBDK_UNDO = 322, /**< Atari keyboard has Undo */ 302 /*@}*/ 303 304 /* Add any other keys here */ 305 306 KBDK_LAST 307 } StellaKey; 308 309 // Just pass SDLMod directly as int (placeholder for now) 310 // The underlying code doesn't need to know how it's implemented 311 typedef int StellaMod; 312 313 #endif /* StellaKeys */ 314