1 /*
2  * SDL_keysym.h
3  *
4  * Written by
5  *  Sam Lantinga <slouken@libsdl.org>
6  *
7  * This file is a modified SDL header.
8  *
9  * This file is part of VICE, the Versatile Commodore Emulator.
10  * See README for copyright notice.
11  *
12  *  This program is free software; you can redistribute it and/or modify
13  *  it under the terms of the GNU General Public License as published by
14  *  the Free Software Foundation; either version 2 of the License, or
15  *  (at your option) any later version.
16  *
17  *  This program is distributed in the hope that it will be useful,
18  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  *  GNU General Public License for more details.
21  *
22  *  You should have received a copy of the GNU General Public License
23  *  along with this program; if not, write to the Free Software
24  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
25  *  02111-1307  USA.
26  *
27  */
28 
29 #ifndef _SDL_keysym_h
30 #define _SDL_keysym_h
31 
32 /** What we really want is a mapping of every raw key on the keyboard.
33  *  To support international keyboards, we use the range 0xA1 - 0xFF
34  *  as international virtual keycodes.  We'll follow in the footsteps of X11...
35  *  @brief The names of the keys
36  */
37 typedef enum {
38         /** @name ASCII mapped keysyms
39          *  The keyboard syms have been cleverly chosen to map to ASCII
40          */
41         /*@{*/
42 	SDLK_UNKNOWN    = 0,
43 	SDLK_FIRST      = 0,
44 	SDLK_BACKSPACE  = 8,
45 	SDLK_TAB        = 9,
46 	SDLK_CLEAR      = 12,
47 	SDLK_RETURN     = 13,
48 	SDLK_PAUSE      = 19,
49 	SDLK_ESCAPE     = 27,
50 	SDLK_SPACE      = 32,
51 	SDLK_EXCLAIM    = 33,
52 	SDLK_QUOTEDBL   = 34,
53 	SDLK_HASH       = 35,
54 	SDLK_DOLLAR     = 36,
55 	SDLK_AMPERSAND  = 38,
56 	SDLK_QUOTE      = 39,
57 	SDLK_LEFTPAREN  = 40,
58 	SDLK_RIGHTPAREN = 41,
59 	SDLK_ASTERISK   = 42,
60 	SDLK_PLUS       = 43,
61 	SDLK_COMMA      = 44,
62 	SDLK_MINUS      = 45,
63 	SDLK_PERIOD     = 46,
64 	SDLK_SLASH      = 47,
65 	SDLK_0          = 48,
66 	SDLK_1          = 49,
67 	SDLK_2          = 50,
68 	SDLK_3          = 51,
69 	SDLK_4          = 52,
70 	SDLK_5          = 53,
71 	SDLK_6          = 54,
72 	SDLK_7          = 55,
73 	SDLK_8          = 56,
74 	SDLK_9          = 57,
75 	SDLK_COLON      = 58,
76 	SDLK_SEMICOLON  = 59,
77 	SDLK_LESS       = 60,
78 	SDLK_EQUALS     = 61,
79 	SDLK_GREATER    = 62,
80 	SDLK_QUESTION   = 63,
81 	SDLK_AT         = 64,
82 
83 	/*
84 	   Skip uppercase letters
85 	 */
86 	SDLK_LEFTBRACKET  = 91,
87 	SDLK_BACKSLASH    = 92,
88 	SDLK_RIGHTBRACKET = 93,
89 	SDLK_CARET        = 94,
90 	SDLK_UNDERSCORE   = 95,
91 	SDLK_BACKQUOTE    = 96,
92 	SDLK_a            = 97,
93 	SDLK_b            = 98,
94 	SDLK_c            = 99,
95 	SDLK_d            = 100,
96 	SDLK_e            = 101,
97 	SDLK_f            = 102,
98 	SDLK_g            = 103,
99 	SDLK_h            = 104,
100 	SDLK_i            = 105,
101 	SDLK_j            = 106,
102 	SDLK_k            = 107,
103 	SDLK_l            = 108,
104 	SDLK_m            = 109,
105 	SDLK_n            = 110,
106 	SDLK_o            = 111,
107 	SDLK_p            = 112,
108 	SDLK_q            = 113,
109 	SDLK_r            = 114,
110 	SDLK_s            = 115,
111 	SDLK_t            = 116,
112 	SDLK_u            = 117,
113 	SDLK_v            = 118,
114 	SDLK_w            = 119,
115 	SDLK_x            = 120,
116 	SDLK_y            = 121,
117 	SDLK_z            = 122,
118 	SDLK_DELETE       = 127,
119 	/* End of ASCII mapped keysyms */
120         /*@}*/
121 
122 	/** @name International keyboard syms */
123         /*@{*/
124 	SDLK_WORLD_0  = 160,		/* 0xA0 */
125 	SDLK_WORLD_1  = 161,
126 	SDLK_WORLD_2  = 162,
127 	SDLK_WORLD_3  = 163,
128 	SDLK_WORLD_4  = 164,
129 	SDLK_WORLD_5  = 165,
130 	SDLK_WORLD_6  = 166,
131 	SDLK_WORLD_7  = 167,
132 	SDLK_WORLD_8  = 168,
133 	SDLK_WORLD_9  = 169,
134 	SDLK_WORLD_10 = 170,
135 	SDLK_WORLD_11 = 171,
136 	SDLK_WORLD_12 = 172,
137 	SDLK_WORLD_13 = 173,
138 	SDLK_WORLD_14 = 174,
139 	SDLK_WORLD_15 = 175,
140 	SDLK_WORLD_16 = 176,
141 	SDLK_WORLD_17 = 177,
142 	SDLK_WORLD_18 = 178,
143 	SDLK_WORLD_19 = 179,
144 	SDLK_WORLD_20 = 180,
145 	SDLK_WORLD_21 = 181,
146 	SDLK_WORLD_22 = 182,
147 	SDLK_WORLD_23 = 183,
148 	SDLK_WORLD_24 = 184,
149 	SDLK_WORLD_25 = 185,
150 	SDLK_WORLD_26 = 186,
151 	SDLK_WORLD_27 = 187,
152 	SDLK_WORLD_28 = 188,
153 	SDLK_WORLD_29 = 189,
154 	SDLK_WORLD_30 = 190,
155 	SDLK_WORLD_31 = 191,
156 	SDLK_WORLD_32 = 192,
157 	SDLK_WORLD_33 = 193,
158 	SDLK_WORLD_34 = 194,
159 	SDLK_WORLD_35 = 195,
160 	SDLK_WORLD_36 = 196,
161 	SDLK_WORLD_37 = 197,
162 	SDLK_WORLD_38 = 198,
163 	SDLK_WORLD_39 = 199,
164 	SDLK_WORLD_40 = 200,
165 	SDLK_WORLD_41 = 201,
166 	SDLK_WORLD_42 = 202,
167 	SDLK_WORLD_43 = 203,
168 	SDLK_WORLD_44 = 204,
169 	SDLK_WORLD_45 = 205,
170 	SDLK_WORLD_46 = 206,
171 	SDLK_WORLD_47 = 207,
172 	SDLK_WORLD_48 = 208,
173 	SDLK_WORLD_49 = 209,
174 	SDLK_WORLD_50 = 210,
175 	SDLK_WORLD_51 = 211,
176 	SDLK_WORLD_52 = 212,
177 	SDLK_WORLD_53 = 213,
178 	SDLK_WORLD_54 = 214,
179 	SDLK_WORLD_55 = 215,
180 	SDLK_WORLD_56 = 216,
181 	SDLK_WORLD_57 = 217,
182 	SDLK_WORLD_58 = 218,
183 	SDLK_WORLD_59 = 219,
184 	SDLK_WORLD_60 = 220,
185 	SDLK_WORLD_61 = 221,
186 	SDLK_WORLD_62 = 222,
187 	SDLK_WORLD_63 = 223,
188 	SDLK_WORLD_64 = 224,
189 	SDLK_WORLD_65 = 225,
190 	SDLK_WORLD_66 = 226,
191 	SDLK_WORLD_67 = 227,
192 	SDLK_WORLD_68 = 228,
193 	SDLK_WORLD_69 = 229,
194 	SDLK_WORLD_70 = 230,
195 	SDLK_WORLD_71 = 231,
196 	SDLK_WORLD_72 = 232,
197 	SDLK_WORLD_73 = 233,
198 	SDLK_WORLD_74 = 234,
199 	SDLK_WORLD_75 = 235,
200 	SDLK_WORLD_76 = 236,
201 	SDLK_WORLD_77 = 237,
202 	SDLK_WORLD_78 = 238,
203 	SDLK_WORLD_79 = 239,
204 	SDLK_WORLD_80 = 240,
205 	SDLK_WORLD_81 = 241,
206 	SDLK_WORLD_82 = 242,
207 	SDLK_WORLD_83 = 243,
208 	SDLK_WORLD_84 = 244,
209 	SDLK_WORLD_85 = 245,
210 	SDLK_WORLD_86 = 246,
211 	SDLK_WORLD_87 = 247,
212 	SDLK_WORLD_88 = 248,
213 	SDLK_WORLD_89 = 249,
214 	SDLK_WORLD_90 = 250,
215 	SDLK_WORLD_91 = 251,
216 	SDLK_WORLD_92 = 252,
217 	SDLK_WORLD_93 = 253,
218 	SDLK_WORLD_94 = 254,
219 	SDLK_WORLD_95 = 255,		/* 0xFF */
220         /*@}*/
221 
222 	/** @name Numeric keypad */
223         /*@{*/
224 	SDLK_KP0         = 256,
225 	SDLK_KP1         = 257,
226 	SDLK_KP2         = 258,
227 	SDLK_KP3         = 259,
228 	SDLK_KP4         = 260,
229 	SDLK_KP5         = 261,
230 	SDLK_KP6         = 262,
231 	SDLK_KP7         = 263,
232 	SDLK_KP8         = 264,
233 	SDLK_KP9         = 265,
234 	SDLK_KP_PERIOD   = 266,
235 	SDLK_KP_DIVIDE   = 267,
236 	SDLK_KP_MULTIPLY = 268,
237 	SDLK_KP_MINUS    = 269,
238 	SDLK_KP_PLUS     = 270,
239 	SDLK_KP_ENTER    = 271,
240 	SDLK_KP_EQUALS   = 272,
241         /*@}*/
242 
243 	/** @name Arrows + Home/End pad */
244         /*@{*/
245 	SDLK_UP       = 273,
246 	SDLK_DOWN     = 274,
247 	SDLK_RIGHT    = 275,
248 	SDLK_LEFT     = 276,
249 	SDLK_INSERT   = 277,
250 	SDLK_HOME     = 278,
251 	SDLK_END      = 279,
252 	SDLK_PAGEUP   = 280,
253 	SDLK_PAGEDOWN = 281,
254         /*@}*/
255 
256 	/** @name Function keys */
257         /*@{*/
258 	SDLK_F1  = 282,
259 	SDLK_F2  = 283,
260 	SDLK_F3  = 284,
261 	SDLK_F4  = 285,
262 	SDLK_F5  = 286,
263 	SDLK_F6  = 287,
264 	SDLK_F7  = 288,
265 	SDLK_F8  = 289,
266 	SDLK_F9  = 290,
267 	SDLK_F10 = 291,
268 	SDLK_F11 = 292,
269 	SDLK_F12 = 293,
270 	SDLK_F13 = 294,
271 	SDLK_F14 = 295,
272 	SDLK_F15 = 296,
273         /*@}*/
274 
275 	/** @name Key state modifier keys */
276         /*@{*/
277 	SDLK_NUMLOCK   = 300,
278 	SDLK_CAPSLOCK  = 301,
279 	SDLK_SCROLLOCK = 302,
280 	SDLK_RSHIFT    = 303,
281 	SDLK_LSHIFT    = 304,
282 	SDLK_RCTRL     = 305,
283 	SDLK_LCTRL     = 306,
284 	SDLK_RALT      = 307,
285 	SDLK_LALT      = 308,
286 	SDLK_RMETA     = 309,
287 	SDLK_LMETA     = 310,
288 	SDLK_LSUPER    = 311,		/**< Left "Windows" key */
289 	SDLK_RSUPER    = 312,		/**< Right "Windows" key */
290 	SDLK_MODE      = 313,		/**< "Alt Gr" key */
291 	SDLK_COMPOSE   = 314,		/**< Multi-key compose key */
292         /*@}*/
293 
294 	/** @name Miscellaneous function keys */
295         /*@{*/
296 	SDLK_HELP   = 315,
297 	SDLK_PRINT  = 316,
298 	SDLK_SYSREQ = 317,
299 	SDLK_BREAK  = 318,
300 	SDLK_MENU   = 319,
301 	SDLK_POWER  = 320,		/**< Power Macintosh power key */
302 	SDLK_EURO   = 321,		/**< Some european keyboards */
303 	SDLK_UNDO   = 322,		/**< Atari keyboard has Undo */
304         /*@}*/
305 
306 	/* Add any other keys here */
307 
308 	SDLK_LAST
309 } SDLKey;
310 
311 /** Enumeration of valid key mods (possibly OR'd together) */
312 typedef enum {
313 	KMOD_NONE     = 0x0000,
314 	KMOD_LSHIFT   = 0x0001,
315 	KMOD_RSHIFT   = 0x0002,
316 	KMOD_LCTRL    = 0x0040,
317 	KMOD_RCTRL    = 0x0080,
318 	KMOD_LALT     = 0x0100,
319 	KMOD_RALT     = 0x0200,
320 	KMOD_LMETA    = 0x0400,
321 	KMOD_RMETA    = 0x0800,
322 	KMOD_NUM      = 0x1000,
323 	KMOD_CAPS     = 0x2000,
324 	KMOD_MODE     = 0x4000,
325 	KMOD_RESERVED = 0x8000
326 } SDLMod;
327 
328 #define KMOD_CTRL    (KMOD_LCTRL | KMOD_RCTRL)
329 #define KMOD_SHIFT   (KMOD_LSHIFT | KMOD_RSHIFT)
330 #define KMOD_ALT     (KMOD_LALT | KMOD_RALT)
331 #define KMOD_META    (KMOD_LMETA | KMOD_RMETA)
332 
333 #endif /* _SDL_keysym_h */
334