Added in_mouse_x and in_mouse_y, which contain the rel. coords of the mouse.
[divverent/darkplaces.git] / keys.h
1 /*
2 Copyright (C) 1996-1997 Id Software, Inc.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13 See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19 */
20
21 #ifndef KEYS_H
22 #define KEYS_H
23
24 //
25 // these are the key numbers that should be passed to Key_Event
26 //
27 #define K_TAB                   9
28 #define K_ENTER                 13
29 #define K_ESCAPE                27
30 #define K_SPACE                 32
31
32 // normal keys should be passed as lowercased ascii
33
34 #define K_BACKSPACE             127
35 #define K_UPARROW               128
36 #define K_DOWNARROW             129
37 #define K_LEFTARROW             130
38 #define K_RIGHTARROW    131
39
40 #define K_ALT                   132
41 #define K_CTRL                  133
42 #define K_SHIFT                 134
43 #define K_F1                    135
44 #define K_F2                    136
45 #define K_F3                    137
46 #define K_F4                    138
47 #define K_F5                    139
48 #define K_F6                    140
49 #define K_F7                    141
50 #define K_F8                    142
51 #define K_F9                    143
52 #define K_F10                   144
53 #define K_F11                   145
54 #define K_F12                   146
55 #define K_INS                   147
56 #define K_DEL                   148
57 #define K_PGDN                  149
58 #define K_PGUP                  150
59 #define K_HOME                  151
60 #define K_END                   152
61
62 #define K_KP_HOME               160
63 #define K_KP_UPARROW    161
64 #define K_KP_PGUP               162
65 #define K_KP_LEFTARROW  163
66 #define K_KP_5                  164
67 #define K_KP_RIGHTARROW 165
68 #define K_KP_END                166
69 #define K_KP_DOWNARROW  167
70 #define K_KP_PGDN               168
71 #define K_KP_ENTER              169
72 #define K_KP_INS                170
73 #define K_KP_DEL                171
74 #define K_KP_SLASH              172
75 #define K_KP_MINUS              173
76 #define K_KP_PLUS               174
77
78 #define K_PAUSE                 255
79
80 //
81 // joystick buttons
82 //
83 #define K_JOY1                  203
84 #define K_JOY2                  204
85 #define K_JOY3                  205
86 #define K_JOY4                  206
87
88 //
89 // aux keys are for multi-buttoned joysticks to generate so they can use
90 // the normal binding process
91 //
92 #define K_AUX1                  207
93 #define K_AUX2                  208
94 #define K_AUX3                  209
95 #define K_AUX4                  210
96 #define K_AUX5                  211
97 #define K_AUX6                  212
98 #define K_AUX7                  213
99 #define K_AUX8                  214
100 #define K_AUX9                  215
101 #define K_AUX10                 216
102 #define K_AUX11                 217
103 #define K_AUX12                 218
104 #define K_AUX13                 219
105 #define K_AUX14                 220
106 #define K_AUX15                 221
107 #define K_AUX16                 222
108 #define K_AUX17                 223
109 #define K_AUX18                 224
110 #define K_AUX19                 225
111 #define K_AUX20                 226
112 #define K_AUX21                 227
113 #define K_AUX22                 228
114 #define K_AUX23                 229
115 #define K_AUX24                 230
116 #define K_AUX25                 231
117 #define K_AUX26                 232
118 #define K_AUX27                 233
119 #define K_AUX28                 234
120 #define K_AUX29                 235
121 #define K_AUX30                 236
122 #define K_AUX31                 237
123 #define K_AUX32                 238
124
125 #define K_MWHEELDOWN    239
126 #define K_MWHEELUP              240
127
128 //
129 // mouse buttons generate virtual keys
130 //
131 #define K_MOUSE1                241
132 #define K_MOUSE2                242
133 #define K_MOUSE3                243
134 // LordHavoc: thanks to backslash for this MOUSE4 and MOUSE5 code,
135 // LordHavoc: however I renumbered it differently and added MOUSE6 through MOUSE10
136 /* backslash :: imouse explorer buttons */
137 #define K_MOUSE4                244
138 #define K_MOUSE5                245
139 /* backslash :: renumber everything that follows so that the mouse4/5 buttons can be squeezed in */
140 // LordHavoc: added these for completeness
141 #define K_MOUSE6                246
142 #define K_MOUSE7                247
143 #define K_MOUSE8                248
144 #define K_MOUSE9                249
145 #define K_MOUSE10               250
146
147
148 extern char *keybindings[256];
149 extern int key_repeats[256];
150
151 extern char chat_buffer[256];
152 extern int chat_bufferlen;
153 extern qboolean chat_team;
154
155 typedef enum {key_game, key_message, key_menu} keydest_t;
156
157 // key_consoleactive bits
158 // user wants console (halfscreen)
159 #define KEY_CONSOLEACTIVE_USER 1
160 // console forced because there's nothing else active (fullscreen)
161 #define KEY_CONSOLEACTIVE_FORCED 2
162 extern int key_consoleactive;
163 extern keydest_t key_dest;
164
165 void Key_Event (int key, char ascii, qboolean down);
166 void Key_Init (void);
167 void Key_WriteBindings (qfile_t *f);
168 void Key_SetBinding (int keynum, char *binding);
169 void Key_ClearStates (void);
170
171 #endif
172