]> icculus.org git repositories - taylor/freespace2.git/blob - include/key.h
Initial revision
[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.1  2002/05/03 03:28:12  root
11  * Initial revision
12  *
13  * 
14  * 2     10/07/98 10:53a Dave
15  * Initial checkin.
16  * 
17  * 1     10/07/98 10:49a Dave
18  * 
19  * 26    5/19/98 12:28a Mike
20  * Cheat stuff.
21  * 
22  * 25    5/18/98 11:01p Mike
23  * Adding support for cheat system.
24  * 
25  * 24    5/01/98 4:23p Lawrance
26  * Remap the scancode for the UK "\" key
27  * 
28  * 23    1/07/98 6:41p Lawrance
29  * Pass message latency to the keyboard lib.
30  * 
31  * 22    11/14/97 4:33p Mike
32  * Change Debug key to backquote (from F11).
33  * Balance a ton of subsystems in ships.tbl.
34  * Change "Heavy Laser" to "Disruptor".
35  * 
36  * 21    10/21/97 7:18p Hoffoss
37  * Overhauled the key/joystick control structure and usage throughout the
38  * entire FreeSpace code.  The whole system is very different now.
39  * 
40  * 20    9/13/97 9:30a Lawrance
41  * added ability to block certain keys from the keyboard
42  * 
43  * 19    9/10/97 6:02p Hoffoss
44  * Added code to check for key-pressed sexp operator in FreeSpace as part
45  * of training mission stuff.
46  * 
47  * 18    4/15/97 3:47p Allender
48  * moved type selection of list box items into actual UI code.  Made it
49  * behave more like windows listboxes do
50  * 
51  * 17    2/17/97 5:18p John
52  * Added a bunch of RCS headers to a bunch of old files that don't have
53  * them.
54  *
55  * $NoKeywords: $
56  */
57
58 #ifndef _KEY_H
59 #define _KEY_H
60
61 /*
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 */
66
67 #include "pstypes.h"
68
69 #define NUM_KEYS 256
70
71 extern int shifted_ascii_table[];
72 extern int ascii_table[];
73
74 extern ubyte keyd_pressed[NUM_KEYS];
75
76 // O/S level hooks...
77 void key_init();
78 void key_level_init();
79 void key_lost_focus();
80 void key_got_focus();
81 void key_mark( uint code, int state, uint latency );
82 int key_getch();
83 void key_flush();
84
85 // Routines/data you can access:
86 //NOT USED! extern fix key_down_time( uint code );
87 float key_down_timef( uint code );
88
89 int key_to_ascii(int keycode );
90 int key_inkey();
91
92 // global flag that will enable/disable the backspace key from stopping execution
93 //extern int Backspace_debug;
94
95 uint key_get_shift_status();
96 int key_down_count(int scancode);
97 int key_up_count(int scancode);
98 int key_checkch();
99 int key_check(int key);
100
101 //      Put "key" back in the input buffer.
102 void key_outkey(int key);
103
104 // used to restrict keys that are read into keyboard buffer
105 void key_set_filter(int *filter_array, int num);
106 void key_clear_filter();
107
108 extern int Cheats_enabled;
109 extern int Key_normal_game;
110
111 #define KEY_SHIFTED     0x1000
112 #define KEY_ALTED       0x2000
113 #define KEY_CTRLED      0x4000
114 #define KEY_DEBUGGED            0x8000
115 #define KEY_DEBUGGED1   0x0800          //      Cheat bit in release version of game.
116 #define KEY_MASK                        0x00FF
117
118 #define KEY_DEBUG_KEY   0x29                    //      KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard)
119
120 #define KEY_0           0x0B
121 #define KEY_1           0x02
122 #define KEY_2           0x03
123 #define KEY_3           0x04
124 #define KEY_4           0x05
125 #define KEY_5           0x06
126 #define KEY_6           0x07
127 #define KEY_7           0x08
128 #define KEY_8           0x09
129 #define KEY_9           0x0A
130
131 #define KEY_A           0x1E
132 #define KEY_B           0x30
133 #define KEY_C           0x2E
134 #define KEY_D           0x20
135 #define KEY_E           0x12
136 #define KEY_F           0x21
137 #define KEY_G           0x22
138 #define KEY_H           0x23
139 #define KEY_I           0x17
140 #define KEY_J           0x24
141 #define KEY_K           0x25
142 #define KEY_L           0x26
143 #define KEY_M           0x32
144 #define KEY_N           0x31
145 #define KEY_O           0x18
146 #define KEY_P           0x19
147 #define KEY_Q           0x10
148 #define KEY_R           0x13
149 #define KEY_S           0x1F
150 #define KEY_T           0x14
151 #define KEY_U           0x16
152 #define KEY_V           0x2F
153 #define KEY_W           0x11
154 #define KEY_X           0x2D
155 #define KEY_Y           0x15
156 #define KEY_Z           0x2C
157
158 #define KEY_MINUS       0x0C
159 #define KEY_EQUAL       0x0D
160 #define KEY_DIVIDE      0x35
161 #define KEY_SLASH       0x2B
162 #define KEY_SLASH_UK            0x56
163 #define KEY_COMMA       0x33
164 #define KEY_PERIOD      0x34
165 #define KEY_SEMICOL     0x27
166
167 #define KEY_LBRACKET    0x1A
168 #define KEY_RBRACKET    0x1B
169
170 #define KEY_RAPOSTRO    0x28
171 #define KEY_LAPOSTRO    0x29
172
173 #define KEY_ESC         0x01
174 #define KEY_ENTER       0x1C
175 #define KEY_BACKSP      0x0E
176 #define KEY_TAB         0x0F
177 #define KEY_SPACEBAR    0x39
178
179 #define KEY_NUMLOCK     0x45
180 #define KEY_SCROLLOCK   0x46
181 #define KEY_CAPSLOCK    0x3A
182
183 #define KEY_LSHIFT      0x2A
184 #define KEY_RSHIFT      0x36
185
186 #define KEY_LALT        0x38
187 #define KEY_RALT        0xB8
188
189 #define KEY_LCTRL       0x1D
190 #define KEY_RCTRL       0x9D
191
192 #define KEY_F1          0x3B
193 #define KEY_F2          0x3C
194 #define KEY_F3          0x3D
195 #define KEY_F4          0x3E
196 #define KEY_F5          0x3F
197 #define KEY_F6          0x40
198 #define KEY_F7          0x41
199 #define KEY_F8          0x42
200 #define KEY_F9          0x43
201 #define KEY_F10         0x44
202 #define KEY_F11         0x57
203 #define KEY_F12         0x58
204
205 #define KEY_PAD0        0x52
206 #define KEY_PAD1        0x4F
207 #define KEY_PAD2        0x50
208 #define KEY_PAD3        0x51
209 #define KEY_PAD4        0x4B
210 #define KEY_PAD5        0x4C
211 #define KEY_PAD6        0x4D
212 #define KEY_PAD7        0x47
213 #define KEY_PAD8        0x48
214 #define KEY_PAD9        0x49
215 #define KEY_PADMINUS    0x4A
216 #define KEY_PADPLUS     0x4E
217 #define KEY_PADPERIOD   0x53
218 #define KEY_PADDIVIDE   0xB5
219 #define KEY_PADMULTIPLY 0x37
220 #define KEY_PADENTER    0x9C
221
222 #define KEY_INSERT      0xD2
223 #define KEY_HOME        0xC7
224 #define KEY_PAGEUP      0xC9
225 #define KEY_DELETE      0xd3
226 #define KEY_END         0xCF
227 #define KEY_PAGEDOWN    0xD1
228 #define KEY_UP          0xC8
229 #define KEY_DOWN        0xD0
230 #define KEY_LEFT        0xCB
231 #define KEY_RIGHT       0xCD
232
233 #define KEY_PRINT_SCRN  0xB7
234 #define KEY_PAUSE                       0x45    //DOS: 0x61
235 #define KEY_BREAK                       0xc6
236
237 /*
238 #ifdef __cplusplus
239 }
240 #endif
241 */
242
243 #endif
244