]> icculus.org git repositories - divverent/darkplaces.git/blob - keys.h
fix really stupid typo in SV_Move code, this cures the 'monsters walking through...
[divverent/darkplaces.git] / keys.h
1 /*
2         $RCSfile$
3
4         Copyright (C) 1996-1997  Id Software, Inc.
5
6         This program is free software; you can redistribute it and/or
7         modify it under the terms of the GNU General Public License
8         as published by the Free Software Foundation; either version 2
9         of the License, or (at your option) any later version.
10
11         This program is distributed in the hope that it will be useful,
12         but WITHOUT ANY WARRANTY; without even the implied warranty of
13         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
15         See the GNU General Public License for more details.
16
17         You should have received a copy of the GNU General Public License
18         along with this program; if not, write to:
19
20                 Free Software Foundation, Inc.
21                 59 Temple Place - Suite 330
22                 Boston, MA  02111-1307, USA
23
24         $Id$
25 */
26
27 #ifndef __KEYS_H
28 #define __KEYS_H
29
30 #include "qtypes.h"
31
32 //
33 // these are the key numbers that should be passed to Key_Event
34 //
35 typedef enum keynum_e
36 {
37         K_TAB                   = 9,
38         K_ENTER                 = 13,
39         K_ESCAPE                = 27,
40         K_SPACE                 = 32,
41
42         // normal keys should be passed as lowercased ascii
43
44         K_BACKSPACE             = 127,
45         K_UPARROW,
46         K_DOWNARROW,
47         K_LEFTARROW,
48         K_RIGHTARROW,
49
50         K_ALT,
51         K_CTRL,
52         K_SHIFT,
53         K_F1,
54         K_F2,
55         K_F3,
56         K_F4,
57         K_F5,
58         K_F6,
59         K_F7,
60         K_F8,
61         K_F9,
62         K_F10,
63         K_F11,
64         K_F12,
65         K_INS,
66         K_DEL,
67         K_PGDN,
68         K_PGUP,
69         K_HOME,
70         K_END,
71
72         K_PAUSE,
73
74         K_NUMLOCK,
75         K_CAPSLOCK,
76         K_SCROLLOCK,
77
78         K_KP_0,
79         K_KP_INS = K_KP_0,
80         K_KP_1,
81         K_KP_END = K_KP_1,
82         K_KP_2,
83         K_KP_DOWNARROW = K_KP_2,
84         K_KP_3,
85         K_KP_PGDN = K_KP_3,
86         K_KP_4,
87         K_KP_LEFTARROW = K_KP_4,
88         K_KP_5,
89         K_KP_6,
90         K_KP_RIGHTARROW = K_KP_6,
91         K_KP_7,
92         K_KP_HOME = K_KP_7,
93         K_KP_8,
94         K_KP_UPARROW = K_KP_8,
95         K_KP_9,
96         K_KP_PGUP = K_KP_9,
97         K_KP_PERIOD,
98         K_KP_DEL = K_KP_PERIOD,
99         K_KP_DIVIDE,
100         K_KP_SLASH = K_KP_DIVIDE,
101         K_KP_MULTIPLY,
102         K_KP_MINUS,
103         K_KP_PLUS,
104         K_KP_ENTER,
105         K_KP_EQUALS,
106
107         // mouse buttons generate virtual keys
108
109         K_MOUSE1 = 512,
110         K_MOUSE2,
111         K_MOUSE3,
112         K_MWHEELUP,
113         K_MWHEELDOWN,
114         K_MOUSE4,
115         K_MOUSE5,
116         K_MOUSE6,
117         K_MOUSE7,
118         K_MOUSE8,
119         K_MOUSE9,
120         K_MOUSE10,
121         K_MOUSE11,
122         K_MOUSE12,
123         K_MOUSE13,
124         K_MOUSE14,
125         K_MOUSE15,
126         K_MOUSE16,
127
128 //
129 // joystick buttons
130 //
131         K_JOY1 = 768,
132         K_JOY2,
133         K_JOY3,
134         K_JOY4,
135         K_JOY5,
136         K_JOY6,
137         K_JOY7,
138         K_JOY8,
139         K_JOY9,
140         K_JOY10,
141         K_JOY11,
142         K_JOY12,
143         K_JOY13,
144         K_JOY14,
145         K_JOY15,
146         K_JOY16,
147
148 //
149 // aux keys are for multi-buttoned joysticks to generate so they can use
150 // the normal binding process
151 //
152         K_AUX1,
153         K_AUX2,
154         K_AUX3,
155         K_AUX4,
156         K_AUX5,
157         K_AUX6,
158         K_AUX7,
159         K_AUX8,
160         K_AUX9,
161         K_AUX10,
162         K_AUX11,
163         K_AUX12,
164         K_AUX13,
165         K_AUX14,
166         K_AUX15,
167         K_AUX16,
168         K_AUX17,
169         K_AUX18,
170         K_AUX19,
171         K_AUX20,
172         K_AUX21,
173         K_AUX22,
174         K_AUX23,
175         K_AUX24,
176         K_AUX25,
177         K_AUX26,
178         K_AUX27,
179         K_AUX28,
180         K_AUX29,
181         K_AUX30,
182         K_AUX31,
183         K_AUX32,
184
185 }
186 keynum_t;
187
188 typedef enum keydest_e { key_game, key_message, key_menu } keydest_t;
189
190 #define MAX_INPUTLINES 32
191 #define MAX_BINDMAPS 8
192 #define MAX_KEYS 1024
193 extern  int                     edit_line;
194 extern  int                     history_line;
195 extern  char            key_lines[MAX_INPUTLINES][MAX_INPUTLINE];
196 extern  int                     key_linepos;
197 extern  qboolean        key_insert;     // insert key toggle (for editing)
198 extern  keydest_t       key_dest;
199 // key_consoleactive bits
200 // user wants console (halfscreen)
201 #define KEY_CONSOLEACTIVE_USER 1
202 // console forced because there's nothing else active (fullscreen)
203 #define KEY_CONSOLEACTIVE_FORCED 4
204 extern  int                     key_consoleactive;
205 extern  char            *keybindings[MAX_BINDMAPS][MAX_KEYS];
206
207 extern void Key_ClearEditLine(int edit_line);
208 extern qboolean chat_team;
209 extern char chat_buffer[MAX_INPUTLINE];
210 extern unsigned int chat_bufferlen;
211
212 void Key_WriteBindings(qfile_t *f);
213 void Key_Init(void);
214 void Key_Init_Cvars(void);
215 void Key_Event(int key, char ascii, qboolean down);
216 void Key_ClearStates (void);
217 void Key_SetBinding (int keynum, int bindmap, const char *binding);
218
219 #endif // __KEYS_H
220