2 * $Logfile: /Freespace2/code/Io/Key.h $
7 * Include file for keyboard reading routines
10 * Revision 1.1 2002/05/03 03:28:12 root
14 * 2 10/07/98 10:53a Dave
17 * 1 10/07/98 10:49a Dave
19 * 26 5/19/98 12:28a Mike
22 * 25 5/18/98 11:01p Mike
23 * Adding support for cheat system.
25 * 24 5/01/98 4:23p Lawrance
26 * Remap the scancode for the UK "\" key
28 * 23 1/07/98 6:41p Lawrance
29 * Pass message latency to the keyboard lib.
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".
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.
40 * 20 9/13/97 9:30a Lawrance
41 * added ability to block certain keys from the keyboard
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.
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
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
71 extern int shifted_ascii_table[];
72 extern int ascii_table[];
74 extern ubyte keyd_pressed[NUM_KEYS];
78 void key_level_init();
79 void key_lost_focus();
81 void key_mark( uint code, int state, uint latency );
85 // Routines/data you can access:
86 //NOT USED! extern fix key_down_time( uint code );
87 float key_down_timef( uint code );
89 int key_to_ascii(int keycode );
92 // global flag that will enable/disable the backspace key from stopping execution
93 //extern int Backspace_debug;
95 uint key_get_shift_status();
96 int key_down_count(int scancode);
97 int key_up_count(int scancode);
99 int key_check(int key);
101 // Put "key" back in the input buffer.
102 void key_outkey(int key);
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();
108 extern int Cheats_enabled;
109 extern int Key_normal_game;
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
118 #define KEY_DEBUG_KEY 0x29 // KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard)
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
167 #define KEY_LBRACKET 0x1A
168 #define KEY_RBRACKET 0x1B
170 #define KEY_RAPOSTRO 0x28
171 #define KEY_LAPOSTRO 0x29
174 #define KEY_ENTER 0x1C
175 #define KEY_BACKSP 0x0E
177 #define KEY_SPACEBAR 0x39
179 #define KEY_NUMLOCK 0x45
180 #define KEY_SCROLLOCK 0x46
181 #define KEY_CAPSLOCK 0x3A
183 #define KEY_LSHIFT 0x2A
184 #define KEY_RSHIFT 0x36
186 #define KEY_LALT 0x38
187 #define KEY_RALT 0xB8
189 #define KEY_LCTRL 0x1D
190 #define KEY_RCTRL 0x9D
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
222 #define KEY_INSERT 0xD2
223 #define KEY_HOME 0xC7
224 #define KEY_PAGEUP 0xC9
225 #define KEY_DELETE 0xd3
227 #define KEY_PAGEDOWN 0xD1
229 #define KEY_DOWN 0xD0
230 #define KEY_LEFT 0xCB
231 #define KEY_RIGHT 0xCD
233 #define KEY_PRINT_SCRN 0xB7
234 #define KEY_PAUSE 0x45 //DOS: 0x61
235 #define KEY_BREAK 0xc6