]> icculus.org git repositories - taylor/freespace2.git/blob - include/key.h
Keyboard partially fixed
[taylor/freespace2.git] / include / key.h
1 /*
2  * $Logfile: /Freespace2/code/Io/Key.h $
3  * $Revision$
4  * $Date$
5  * $Author$
6  *
7  * Include file for keyboard reading routines
8  *
9  * $Log$
10  * Revision 1.4  2002/05/30 16:50:24  theoddone33
11  * Keyboard partially fixed
12  *
13  * Revision 1.3  2002/05/29 23:17:49  theoddone33
14  * Non working text code and fixed keys
15  *
16  * Revision 1.2  2002/05/29 06:25:12  theoddone33
17  * Keyboard input, mouse tracking now work
18  *
19  * Revision 1.1.1.1  2002/05/03 03:28:12  root
20  * Initial import.
21  *
22  * 
23  * 2     10/07/98 10:53a Dave
24  * Initial checkin.
25  * 
26  * 1     10/07/98 10:49a Dave
27  * 
28  * 26    5/19/98 12:28a Mike
29  * Cheat stuff.
30  * 
31  * 25    5/18/98 11:01p Mike
32  * Adding support for cheat system.
33  * 
34  * 24    5/01/98 4:23p Lawrance
35  * Remap the scancode for the UK "\" key
36  * 
37  * 23    1/07/98 6:41p Lawrance
38  * Pass message latency to the keyboard lib.
39  * 
40  * 22    11/14/97 4:33p Mike
41  * Change Debug key to backquote (from F11).
42  * Balance a ton of subsystems in ships.tbl.
43  * Change "Heavy Laser" to "Disruptor".
44  * 
45  * 21    10/21/97 7:18p Hoffoss
46  * Overhauled the key/joystick control structure and usage throughout the
47  * entire FreeSpace code.  The whole system is very different now.
48  * 
49  * 20    9/13/97 9:30a Lawrance
50  * added ability to block certain keys from the keyboard
51  * 
52  * 19    9/10/97 6:02p Hoffoss
53  * Added code to check for key-pressed sexp operator in FreeSpace as part
54  * of training mission stuff.
55  * 
56  * 18    4/15/97 3:47p Allender
57  * moved type selection of list box items into actual UI code.  Made it
58  * behave more like windows listboxes do
59  * 
60  * 17    2/17/97 5:18p John
61  * Added a bunch of RCS headers to a bunch of old files that don't have
62  * them.
63  *
64  * $NoKeywords: $
65  */
66
67 #ifndef _KEY_H
68 #define _KEY_H
69
70 /*
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 */
75
76 #include "pstypes.h"
77
78 #ifndef PLAT_UNIX
79 #define NUM_KEYS 256
80 #else
81 #define NUM_KEYS SDLK_LAST
82 #endif
83
84 extern int shifted_ascii_table[];
85 extern int ascii_table[];
86
87 extern ubyte keyd_pressed[NUM_KEYS];
88
89 // O/S level hooks...
90 void key_init();
91 void key_level_init();
92 void key_lost_focus();
93 void key_got_focus();
94 void key_mark( uint code, int state, uint latency );
95 int key_getch();
96 void key_flush();
97
98 // Routines/data you can access:
99 //NOT USED! extern fix key_down_time( uint code );
100 float key_down_timef( uint code );
101
102 int key_to_ascii(int keycode );
103 int key_inkey();
104
105 // global flag that will enable/disable the backspace key from stopping execution
106 //extern int Backspace_debug;
107
108 uint key_get_shift_status();
109 int key_down_count(int scancode);
110 int key_up_count(int scancode);
111 int key_checkch();
112 int key_check(int key);
113
114 //      Put "key" back in the input buffer.
115 void key_outkey(int key);
116
117 // used to restrict keys that are read into keyboard buffer
118 void key_set_filter(int *filter_array, int num);
119 void key_clear_filter();
120
121 extern int Cheats_enabled;
122 extern int Key_normal_game;
123
124 #ifdef PLAT_UNIX
125 #define KEY_SHIFTED     0x30000         //(KMOD_SHIFT)<<16;
126 #define KEY_ALTED       0x3000000       //(KMOD_ALT)<<16;
127 #define KEY_CTRLED      0xc00000        //(KMOD_CTRL)<<16;
128 #define KEY_DEBUGGED    0x010000        // Dummy
129 #define KEY_DEBUGGED1   0x2000000       // Dummy
130 #define KEY_MASK                        0xffff
131
132 #define KEY_DEBUG_KEY   0x29                    //      KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard)
133
134 #define KEY_0           SDLK_0
135 #define KEY_1           SDLK_1
136 #define KEY_2           SDLK_2
137 #define KEY_3           SDLK_3
138 #define KEY_4           SDLK_4
139 #define KEY_5           SDLK_5
140 #define KEY_6           SDLK_6
141 #define KEY_7           SDLK_7
142 #define KEY_8           SDLK_8
143 #define KEY_9           SDLK_9
144
145 #define KEY_A           SDLK_a
146 #define KEY_B           SDLK_b
147 #define KEY_C           SDLK_c
148 #define KEY_D           SDLK_d
149 #define KEY_E           SDLK_e
150 #define KEY_F           SDLK_f
151 #define KEY_G           SDLK_g
152 #define KEY_H           SDLK_h
153 #define KEY_I           SDLK_i
154 #define KEY_J           SDLK_j
155 #define KEY_K           SDLK_k
156 #define KEY_L           SDLK_l
157 #define KEY_M           SDLK_m
158 #define KEY_N           SDLK_n
159 #define KEY_O           SDLK_o
160 #define KEY_P           SDLK_p
161 #define KEY_Q           SDLK_q
162 #define KEY_R           SDLK_r
163 #define KEY_S           SDLK_s
164 #define KEY_T           SDLK_t
165 #define KEY_U          SDLK_u
166 #define KEY_V           SDLK_v
167 #define KEY_W           SDLK_w
168 #define KEY_X           SDLK_x
169 #define KEY_Y           SDLK_y
170 #define KEY_Z           SDLK_z
171
172 #define KEY_MINUS      SDLK_MINUS
173 #define KEY_EQUAL      SDLK_EQUALS
174 #define KEY_DIVIDE    SDLK_SLASH
175 #define KEY_SLASH       SDLK_SLASH
176 #define KEY_SLASH_UK    SDLK_SLASH
177 #define KEY_COMMA       SDLK_COMMA
178 #define KEY_PERIOD      SDLK_PERIOD
179 #define KEY_SEMICOL     SDLK_SEMICOLON
180
181 #define KEY_LBRACKET    SDLK_LEFTBRACKET
182 #define KEY_RBRACKET   SDLK_RIGHTBRACKET
183
184 #define KEY_RAPOSTRO    SDLK_BACKQUOTE
185 #define KEY_LAPOSTRO    SDLK_QUOTE
186
187 #define KEY_ESC         SDLK_ESCAPE
188 #define KEY_ENTER       SDLK_RETURN
189 #define KEY_BACKSP      SDLK_BACKSPACE
190 #define KEY_TAB         SDLK_TAB
191 #define KEY_SPACEBAR    SDLK_SPACE
192
193 #define KEY_NUMLOCK     SDLK_NUMLOCK
194 #define KEY_SCROLLOCK   SDLK_SCROLLOCK
195 #define KEY_CAPSLOCK    SDLK_CAPSLOCK
196
197 #define KEY_LSHIFT      SDLK_LSHIFT
198 #define KEY_RSHIFT      SDLK_RSHIFT
199
200 #define KEY_LALT        SDLK_LALT
201 #define KEY_RALT        SDLK_RALT
202
203 #define KEY_LCTRL      SDLK_LCTRL
204 #define KEY_RCTRL       SDLK_RCTRL
205
206 #define KEY_F1          SDLK_F1
207 #define KEY_F2          SDLK_F2
208 #define KEY_F3          SDLK_F3
209 #define KEY_F4          SDLK_F4
210 #define KEY_F5          SDLK_F5
211 #define KEY_F6          SDLK_F6
212 #define KEY_F7          SDLK_F7
213 #define KEY_F8          SDLK_F8
214 #define KEY_F9          SDLK_F9
215 #define KEY_F10         SDLK_F10
216 #define KEY_F11         SDLK_F11
217 #define KEY_F12         SDLK_F12
218
219 #define KEY_PAD0        SDLK_KP0
220 #define KEY_PAD1        SDLK_KP1
221 #define KEY_PAD2        SDLK_KP2
222 #define KEY_PAD3        SDLK_KP3
223 #define KEY_PAD4        SDLK_KP4
224 #define KEY_PAD5        SDLK_KP5
225 #define KEY_PAD6        SDLK_KP6
226 #define KEY_PAD7        SDLK_KP7
227 #define KEY_PAD8        SDLK_KP8
228 #define KEY_PAD9        SDLK_KP9
229 #define KEY_PADMINUS    SDLK_KP_MINUS
230 #define KEY_PADPLUS     SDLK_KP_PLUS
231 #define KEY_PADPERIOD   SDLK_KP_PERIOD
232 #define KEY_PADDIVIDE   SDLK_KP_DIVIDE
233 #define KEY_PADMULTIPLY SDLK_KP_MULTIPLY
234 #define KEY_PADENTER    SDLK_KP_ENTER
235
236 #define KEY_INSERT      SDLK_INSERT
237 #define KEY_HOME        SDLK_HOME
238 #define KEY_PAGEUP      SDLK_PAGEUP
239 #define KEY_DELETE      SDLK_DELETE
240 #define KEY_END         SDLK_END
241 #define KEY_PAGEDOWN    SDLK_PAGEDOWN
242 #define KEY_UP          SDLK_UP
243 #define KEY_DOWN        SDLK_DOWN
244 #define KEY_LEFT        SDLK_LEFT
245 #define KEY_RIGHT       SDLK_RIGHT
246
247 #define KEY_PRINT_SCRN  SDLK_PRINT
248 #define KEY_PAUSE       SDLK_PAUSE
249 #define KEY_BREAK       SDLK_BREAK
250 #else
251 #define KEY_SHIFTED     0x1000
252 #define KEY_ALTED       0x2000
253 #define KEY_CTRLED      0x4000
254 #define KEY_DEBUGGED            0x8000
255 #define KEY_DEBUGGED1   0x0800          //      Cheat bit in release version of game.
256 #define KEY_MASK                        0x00FF
257
258 #define KEY_DEBUG_KEY   0x29                    //      KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard)
259
260 #define KEY_0           0x0B
261 #define KEY_1           0x02
262 #define KEY_2           0x03
263 #define KEY_3           0x04
264 #define KEY_4           0x05
265 #define KEY_5           0x06
266 #define KEY_6           0x07
267 #define KEY_7           0x08
268 #define KEY_8           0x09
269 #define KEY_9           0x0A
270
271 #define KEY_A           0x1E
272 #define KEY_B           0x30
273 #define KEY_C           0x2E
274 #define KEY_D           0x20
275 #define KEY_E           0x12
276 #define KEY_F           0x21
277 #define KEY_G           0x22
278 #define KEY_H           0x23
279 #define KEY_I           0x17
280 #define KEY_J           0x24
281 #define KEY_K           0x25
282 #define KEY_L           0x26
283 #define KEY_M           0x32
284 #define KEY_N           0x31
285 #define KEY_O           0x18
286 #define KEY_P           0x19
287 #define KEY_Q           0x10
288 #define KEY_R           0x13
289 #define KEY_S           0x1F
290 #define KEY_T           0x14
291 #define KEY_U           0x16
292 #define KEY_V           0x2F
293 #define KEY_W           0x11
294 #define KEY_X           0x2D
295 #define KEY_Y           0x15
296 #define KEY_Z           0x2C
297
298 #define KEY_MINUS       0x0C
299 #define KEY_EQUAL       0x0D
300 #define KEY_DIVIDE      0x35
301 #define KEY_SLASH       0x2B
302 #define KEY_SLASH_UK            0x56
303 #define KEY_COMMA       0x33
304 #define KEY_PERIOD      0x34
305 #define KEY_SEMICOL     0x27
306
307 #define KEY_LBRACKET    0x1A
308 #define KEY_RBRACKET    0x1B
309
310 #define KEY_RAPOSTRO    0x28
311 #define KEY_LAPOSTRO    0x29
312
313 #define KEY_ESC         0x01
314 #define KEY_ENTER       0x1C
315 #define KEY_BACKSP      0x0E
316 #define KEY_TAB         0x0F
317 #define KEY_SPACEBAR    0x39
318
319 #define KEY_NUMLOCK     0x45
320 #define KEY_SCROLLOCK   0x46
321 #define KEY_CAPSLOCK    0x3A
322
323 #define KEY_LSHIFT      0x2A
324 #define KEY_RSHIFT      0x36
325
326 #define KEY_LALT        0x38
327 #define KEY_RALT        0xB8
328
329 #define KEY_LCTRL       0x1D
330 #define KEY_RCTRL       0x9D
331
332 #define KEY_F1          0x3B
333 #define KEY_F2          0x3C
334 #define KEY_F3          0x3D
335 #define KEY_F4          0x3E
336 #define KEY_F5          0x3F
337 #define KEY_F6          0x40
338 #define KEY_F7          0x41
339 #define KEY_F8          0x42
340 #define KEY_F9          0x43
341 #define KEY_F10         0x44
342 #define KEY_F11         0x57
343 #define KEY_F12         0x58
344
345 #define KEY_PAD0        0x52
346 #define KEY_PAD1        0x4F
347 #define KEY_PAD2        0x50
348 #define KEY_PAD3        0x51
349 #define KEY_PAD4        0x4B
350 #define KEY_PAD5        0x4C
351 #define KEY_PAD6        0x4D
352 #define KEY_PAD7        0x47
353 #define KEY_PAD8        0x48
354 #define KEY_PAD9        0x49
355 #define KEY_PADMINUS    0x4A
356 #define KEY_PADPLUS     0x4E
357 #define KEY_PADPERIOD   0x53
358 #define KEY_PADDIVIDE   0xB5
359 #define KEY_PADMULTIPLY 0x37
360 #define KEY_PADENTER    0x9C
361
362 #define KEY_INSERT      0xD2
363 #define KEY_HOME        0xC7
364 #define KEY_PAGEUP      0xC9
365 #define KEY_DELETE      0xd3
366 #define KEY_END         0xCF
367 #define KEY_PAGEDOWN    0xD1
368 #define KEY_UP          0xC8
369 #define KEY_DOWN        0xD0
370 #define KEY_LEFT        0xCB
371 #define KEY_RIGHT       0xCD
372
373 #define KEY_PRINT_SCRN  0xB7
374 #define KEY_PAUSE                       0x45    //DOS: 0x61
375 #define KEY_BREAK                       0xc6
376
377 #endif
378 /*
379 #ifdef __cplusplus
380 }
381 #endif
382 */
383
384 #endif
385