1 /*
2  * Copyright (C) Volition, Inc. 1999.  All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _KEY_H
13 #define _KEY_H
14 
15 #include "globalincs/pstypes.h"
16 
17 #define NUM_KEYS 256
18 
19 const size_t SIZE_OF_ASCII_TABLE = 128;
20 extern int shifted_ascii_table[SIZE_OF_ASCII_TABLE];
21 extern int ascii_table[SIZE_OF_ASCII_TABLE];
22 
23 extern ubyte keyd_pressed[NUM_KEYS];
24 
25 // O/S level hooks...
26 void key_init();
27 void key_level_init();
28 void key_lost_focus();
29 void key_got_focus();
30 void key_mark( uint code, int state, uint latency );
31 int key_getch();
32 void key_flush();
33 
34 // Routines/data you can access:
35 float key_down_timef( uint code );
36 
37 int key_to_ascii(int keycode );
38 int key_inkey();
39 
40 // global flag that will enable/disable the backspace key from stopping execution
41 //extern int Backspace_debug;
42 
43 uint key_get_shift_status();
44 int key_down_count(int scancode);
45 int key_checkch();
46 
47 extern int Cheats_enabled;
48 extern int Key_normal_game;
49 
50 #define KEY_SHIFTED     0x1000
51 #define KEY_ALTED       0x2000
52 #define KEY_CTRLED      0x4000
53 #define KEY_DEBUGGED    0x8000
54 #define KEY_DEBUGGED1   0x0800	// Cheat bit in release version of game.
55 #define KEY_MASK        0x00FF
56 
57 #define KEY_DEBUG_KEY   0x29	// KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard)
58 
59 #define KEY_0           0x0B
60 #define KEY_1           0x02
61 #define KEY_2           0x03
62 #define KEY_3           0x04
63 #define KEY_4           0x05
64 #define KEY_5           0x06
65 #define KEY_6           0x07
66 #define KEY_7           0x08
67 #define KEY_8           0x09
68 #define KEY_9           0x0A
69 
70 #define KEY_A           0x1E
71 #define KEY_B           0x30
72 #define KEY_C           0x2E
73 #define KEY_D           0x20
74 #define KEY_E           0x12
75 #define KEY_F           0x21
76 #define KEY_G           0x22
77 #define KEY_H           0x23
78 #define KEY_I           0x17
79 #define KEY_J           0x24
80 #define KEY_K           0x25
81 #define KEY_L           0x26
82 #define KEY_M           0x32
83 #define KEY_N           0x31
84 #define KEY_O           0x18
85 #define KEY_P           0x19
86 #define KEY_Q           0x10
87 #define KEY_R           0x13
88 #define KEY_S           0x1F
89 #define KEY_T           0x14
90 #define KEY_U           0x16
91 #define KEY_V           0x2F
92 #define KEY_W           0x11
93 #define KEY_X           0x2D
94 #define KEY_Y           0x15
95 #define KEY_Z           0x2C
96 
97 #define KEY_MINUS       0x0C
98 #define KEY_EQUAL       0x0D
99 #define KEY_DIVIDE      0x35
100 #define KEY_SLASH       0x2B
101 #define KEY_SLASH_UK    0x56
102 #define KEY_COMMA       0x33
103 #define KEY_PERIOD      0x34
104 #define KEY_SEMICOL     0x27
105 
106 #define KEY_LBRACKET    0x1A
107 #define KEY_RBRACKET    0x1B
108 
109 #define KEY_RAPOSTRO    0x28
110 #define KEY_LAPOSTRO    0x29
111 
112 #define KEY_ESC         0x01
113 #define KEY_ENTER       0x1C
114 #define KEY_BACKSP      0x0E
115 #define KEY_TAB         0x0F
116 #define KEY_SPACEBAR    0x39
117 
118 #define KEY_NUMLOCK     0x45
119 #define KEY_SCROLLOCK   0x46
120 #define KEY_CAPSLOCK    0x3A
121 
122 #define KEY_LSHIFT      0x2A
123 #define KEY_RSHIFT      0x36
124 
125 #define KEY_LALT        0x38
126 #define KEY_RALT        0xB8
127 
128 #define KEY_LCTRL       0x1D
129 #define KEY_RCTRL       0x9D
130 
131 #define KEY_F1          0x3B
132 #define KEY_F2          0x3C
133 #define KEY_F3          0x3D
134 #define KEY_F4          0x3E
135 #define KEY_F5          0x3F
136 #define KEY_F6          0x40
137 #define KEY_F7          0x41
138 #define KEY_F8          0x42
139 #define KEY_F9          0x43
140 #define KEY_F10         0x44
141 #define KEY_F11         0x57
142 #define KEY_F12         0x58
143 
144 #define KEY_PAD0        0x52
145 #define KEY_PAD1        0x4F
146 #define KEY_PAD2        0x50
147 #define KEY_PAD3        0x51
148 #define KEY_PAD4        0x4B
149 #define KEY_PAD5        0x4C
150 #define KEY_PAD6        0x4D
151 #define KEY_PAD7        0x47
152 #define KEY_PAD8        0x48
153 #define KEY_PAD9        0x49
154 #define KEY_PADMINUS    0x4A
155 #define KEY_PADPLUS     0x4E
156 #define KEY_PADPERIOD   0x53
157 #define KEY_PADDIVIDE   0xB5
158 #define KEY_PADMULTIPLY 0x37
159 #define KEY_PADENTER    0x9C
160 
161 #define KEY_INSERT      0xD2
162 #define KEY_HOME        0xC7
163 #define KEY_PAGEUP      0xC9
164 #define KEY_DELETE      0xd3
165 #define KEY_END         0xCF
166 #define KEY_PAGEDOWN    0xD1
167 #define KEY_UP          0xC8
168 #define KEY_DOWN        0xD0
169 #define KEY_LEFT        0xCB
170 #define KEY_RIGHT       0xCD
171 
172 #define KEY_PRINT_SCRN  0xB7
173 #define KEY_PAUSE       0x45	//DOS: 0x61
174 #define KEY_BREAK       0xc6
175 
176 #endif
177