1 /*
2 ===========================================================================
3 Copyright (C) 1999 - 2005, Id Software, Inc.
4 Copyright (C) 2000 - 2013, Raven Software, Inc.
5 Copyright (C) 2001 - 2013, Activision, Inc.
6 Copyright (C) 2013 - 2015, OpenJK contributors
7 
8 This file is part of the OpenJK source code.
9 
10 OpenJK is free software; you can redistribute it and/or modify it
11 under the terms of the GNU General Public License version 2 as
12 published by the Free Software Foundation.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, see <http://www.gnu.org/licenses/>.
21 ===========================================================================
22 */
23 
24 #pragma once
25 
26 // these are the key numbers that should be passed to KeyEvent
27 
28 typedef enum
29 {
30 	A_NULL = 0,
31 	A_SHIFT,
32 	A_CTRL,
33 	A_ALT,
34 	A_CAPSLOCK,
35 	A_NUMLOCK,
36 	A_SCROLLLOCK,
37 	A_PAUSE,
38 	A_BACKSPACE,
39 	A_TAB,
40 	A_ENTER,
41 	A_KP_PLUS,
42 	A_KP_MINUS,
43 	A_KP_ENTER,
44 	A_KP_PERIOD,
45 	A_PRINTSCREEN,
46 	A_KP_0,
47 	A_KP_1,
48 	A_KP_2,
49 	A_KP_3,
50 	A_KP_4,
51 	A_KP_5,
52 	A_KP_6,
53 	A_KP_7,
54 	A_KP_8,
55 	A_KP_9,
56 	A_CONSOLE,
57 	A_ESCAPE,
58 	A_F1,
59 	A_F2,
60 	A_F3,
61 	A_F4,
62 
63 	A_SPACE,
64 	A_PLING,
65 	A_DOUBLE_QUOTE,
66 	A_HASH,
67 	A_STRING,
68 	A_PERCENT,
69 	A_AND,
70 	A_SINGLE_QUOTE,
71 	A_OPEN_BRACKET,
72 	A_CLOSE_BRACKET,
73 	A_STAR,
74 	A_PLUS,
75 	A_COMMA,
76 	A_MINUS,
77 	A_PERIOD,
78 	A_FORWARD_SLASH,
79 	A_0,
80 	A_1,
81 	A_2,
82 	A_3,
83 	A_4,
84 	A_5,
85 	A_6,
86 	A_7,
87 	A_8,
88 	A_9,
89 	A_COLON,
90 	A_SEMICOLON,
91 	A_LESSTHAN,
92 	A_EQUALS,
93 	A_GREATERTHAN,
94 	A_QUESTION,
95 
96 	A_AT,
97 	A_CAP_A,
98 	A_CAP_B,
99 	A_CAP_C,
100 	A_CAP_D,
101 	A_CAP_E,
102 	A_CAP_F,
103 	A_CAP_G,
104 	A_CAP_H,
105 	A_CAP_I,
106 	A_CAP_J,
107 	A_CAP_K,
108 	A_CAP_L,
109 	A_CAP_M,
110 	A_CAP_N,
111 	A_CAP_O,
112 	A_CAP_P,
113 	A_CAP_Q,
114 	A_CAP_R,
115 	A_CAP_S,
116 	A_CAP_T,
117 	A_CAP_U,
118 	A_CAP_V,
119 	A_CAP_W,
120 	A_CAP_X,
121 	A_CAP_Y,
122 	A_CAP_Z,
123 	A_OPEN_SQUARE,
124 	A_BACKSLASH,
125 	A_CLOSE_SQUARE,
126 	A_CARET,
127 	A_UNDERSCORE,
128 
129 	A_LEFT_SINGLE_QUOTE,
130 	A_LOW_A,
131 	A_LOW_B,
132 	A_LOW_C,
133 	A_LOW_D,
134 	A_LOW_E,
135 	A_LOW_F,
136 	A_LOW_G,
137 	A_LOW_H,
138 	A_LOW_I,
139 	A_LOW_J,
140 	A_LOW_K,
141 	A_LOW_L,
142 	A_LOW_M,
143 	A_LOW_N,
144 	A_LOW_O,
145 	A_LOW_P,
146 	A_LOW_Q,
147 	A_LOW_R,
148 	A_LOW_S,
149 	A_LOW_T,
150 	A_LOW_U,
151 	A_LOW_V,
152 	A_LOW_W,
153 	A_LOW_X,
154 	A_LOW_Y,
155 	A_LOW_Z,
156 	A_OPEN_BRACE,
157 	A_BAR,
158 	A_CLOSE_BRACE,
159 	A_TILDE,
160 	A_DELETE,
161 
162 	A_EURO,
163 	A_SHIFT2,
164 	A_CTRL2,
165 	A_ALT2,
166 	A_F5,
167 	A_F6,
168 	A_F7,
169 	A_F8,
170 	A_CIRCUMFLEX,
171 	A_MWHEELUP,
172 	A_CAP_SCARON,
173 	A_MWHEELDOWN,
174 	A_CAP_OE,
175 	A_MOUSE1,
176 	A_MOUSE2,
177 	A_INSERT,
178 	A_HOME,
179 	A_PAGE_UP,
180 	A_RIGHT_SINGLE_QUOTE,
181 	A_LEFT_DOUBLE_QUOTE,
182 	A_RIGHT_DOUBLE_QUOTE,
183 	A_F9,
184 	A_F10,
185 	A_F11,
186 	A_F12,
187 	A_TRADEMARK,
188 	A_LOW_SCARON,
189 	A_SHIFT_ENTER,
190 	A_LOW_OE,
191 	A_END,
192 	A_PAGE_DOWN,
193 	A_CAP_YDIERESIS,
194 
195 	A_SHIFT_SPACE,
196 	A_EXCLAMDOWN,
197 	A_CENT,
198 	A_POUND,
199 	A_SHIFT_KP_ENTER,
200 	A_YEN,
201 	A_MOUSE3,
202 	A_MOUSE4,
203 	A_MOUSE5,
204 	A_COPYRIGHT,
205 	A_CURSOR_UP,
206 	A_CURSOR_DOWN,
207 	A_CURSOR_LEFT,
208 	A_CURSOR_RIGHT,
209 	A_REGISTERED,
210 	A_UNDEFINED_7,
211 	A_UNDEFINED_8,
212 	A_UNDEFINED_9,
213 	A_UNDEFINED_10,
214 	A_UNDEFINED_11,
215 	A_UNDEFINED_12,
216 	A_UNDEFINED_13,
217 	A_UNDEFINED_14,
218 	A_UNDEFINED_15,
219 	A_UNDEFINED_16,
220 	A_UNDEFINED_17,
221 	A_UNDEFINED_18,
222 	A_UNDEFINED_19,
223 	A_UNDEFINED_20,
224 	A_UNDEFINED_21,
225 	A_UNDEFINED_22,
226 	A_QUESTION_DOWN,
227 
228 	A_CAP_AGRAVE,
229 	A_CAP_AACUTE,
230 	A_CAP_ACIRCUMFLEX,
231 	A_CAP_ATILDE,
232 	A_CAP_ADIERESIS,
233 	A_CAP_ARING,
234 	A_CAP_AE,
235 	A_CAP_CCEDILLA,
236 	A_CAP_EGRAVE,
237 	A_CAP_EACUTE,
238 	A_CAP_ECIRCUMFLEX,
239 	A_CAP_EDIERESIS,
240 	A_CAP_IGRAVE,
241 	A_CAP_IACUTE,
242 	A_CAP_ICIRCUMFLEX,
243 	A_CAP_IDIERESIS,
244 	A_CAP_ETH,
245 	A_CAP_NTILDE,
246 	A_CAP_OGRAVE,
247 	A_CAP_OACUTE,
248 	A_CAP_OCIRCUMFLEX,
249 	A_CAP_OTILDE,
250 	A_CAP_ODIERESIS,
251 	A_MULTIPLY,
252 	A_CAP_OSLASH,
253 	A_CAP_UGRAVE,
254 	A_CAP_UACUTE,
255 	A_CAP_UCIRCUMFLEX,
256 	A_CAP_UDIERESIS,
257 	A_CAP_YACUTE,
258 	A_CAP_THORN,
259 	A_GERMANDBLS,
260 
261 	A_LOW_AGRAVE,
262 	A_LOW_AACUTE,
263 	A_LOW_ACIRCUMFLEX,
264 	A_LOW_ATILDE,
265 	A_LOW_ADIERESIS,
266 	A_LOW_ARING,
267 	A_LOW_AE,
268 	A_LOW_CCEDILLA,
269 	A_LOW_EGRAVE,
270 	A_LOW_EACUTE,
271 	A_LOW_ECIRCUMFLEX,
272 	A_LOW_EDIERESIS,
273 	A_LOW_IGRAVE,
274 	A_LOW_IACUTE,
275 	A_LOW_ICIRCUMFLEX,
276 	A_LOW_IDIERESIS,
277 	A_LOW_ETH,
278 	A_LOW_NTILDE,
279 	A_LOW_OGRAVE,
280 	A_LOW_OACUTE,
281 	A_LOW_OCIRCUMFLEX,
282 	A_LOW_OTILDE,
283 	A_LOW_ODIERESIS,
284 	A_DIVIDE,
285 	A_LOW_OSLASH,
286 	A_LOW_UGRAVE,
287 	A_LOW_UACUTE,
288 	A_LOW_UCIRCUMFLEX,
289 	A_LOW_UDIERESIS,
290 	A_LOW_YACUTE,
291 	A_LOW_THORN,
292 	A_LOW_YDIERESIS,
293 
294 	A_JOY0,
295 	A_JOY1,
296 	A_JOY2,
297 	A_JOY3,
298 	A_JOY4,
299 	A_JOY5,
300 	A_JOY6,
301 	A_JOY7,
302 	A_JOY8,
303 	A_JOY9,
304 	A_JOY10,
305 	A_JOY11,
306 	A_JOY12,
307 	A_JOY13,
308 	A_JOY14,
309 	A_JOY15,
310 	A_JOY16,
311 	A_JOY17,
312 	A_JOY18,
313 	A_JOY19,
314 	A_JOY20,
315 	A_JOY21,
316 	A_JOY22,
317 	A_JOY23,
318 	A_JOY24,
319 	A_JOY25,
320 	A_JOY26,
321 	A_JOY27,
322 	A_JOY28,
323 	A_JOY29,
324 	A_JOY30,
325 	A_JOY31,
326 
327 	A_AUX0,
328 	A_AUX1,
329 	A_AUX2,
330 	A_AUX3,
331 	A_AUX4,
332 	A_AUX5,
333 	A_AUX6,
334 	A_AUX7,
335 	A_AUX8,
336 	A_AUX9,
337 	A_AUX10,
338 	A_AUX11,
339 	A_AUX12,
340 	A_AUX13,
341 	A_AUX14,
342 	A_AUX15,
343 	A_AUX16,
344 	A_AUX17,
345 	A_AUX18,
346 	A_AUX19,
347 	A_AUX20,
348 	A_AUX21,
349 	A_AUX22,
350 	A_AUX23,
351 	A_AUX24,
352 	A_AUX25,
353 	A_AUX26,
354 	A_AUX27,
355 	A_AUX28,
356 	A_AUX29,
357 	A_AUX30,
358 	A_AUX31,
359 
360 	MAX_KEYS
361 } fakeAscii_t;
362 
363 
364 // The menu code needs to get both key and char events, but
365 // to avoid duplicating the paths, the char events are just
366 // distinguished by or'ing in K_CHAR_FLAG (ugly)
367 #define	K_CHAR_FLAG		1024
368