1 /*
2  * keys.h -- key definitions and keyboard public functions
3  * $Id: keys.h,v 1.13 2007-11-16 10:24:57 sezero Exp $
4  *
5  * Copyright (C) 1996-1997  Id Software, Inc.
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or (at
10  * your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21  */
22 
23 #ifndef __HX2_KEYS_H
24 #define __HX2_KEYS_H
25 
26 //
27 // these are the key numbers that should be passed to Key_Event
28 //
29 #define	K_TAB			9
30 #define	K_ENTER			13
31 #define	K_ESCAPE		27
32 #define	K_SPACE			32
33 
34 // normal keys should be passed as lowercased ascii
35 
36 #define	K_BACKSPACE		127
37 #define	K_UPARROW		128
38 #define	K_DOWNARROW		129
39 #define	K_LEFTARROW		130
40 #define	K_RIGHTARROW		131
41 
42 #define	K_ALT			132
43 #define	K_CTRL			133
44 #define	K_SHIFT			134
45 #define	K_F1			135
46 #define	K_F2			136
47 #define	K_F3			137
48 #define	K_F4			138
49 #define	K_F5			139
50 #define	K_F6			140
51 #define	K_F7			141
52 #define	K_F8			142
53 #define	K_F9			143
54 #define	K_F10			144
55 #define	K_F11			145
56 #define	K_F12			146
57 #define	K_INS			147
58 #define	K_DEL			148
59 #define	K_PGDN			149
60 #define	K_PGUP			150
61 #define	K_HOME			151
62 #define	K_END			152
63 
64 #define K_KP_NUMLOCK		153
65 #define K_KP_SLASH		154
66 #define K_KP_STAR		155
67 #define K_KP_MINUS		156
68 #define K_KP_HOME		157
69 #define K_KP_UPARROW		158
70 #define K_KP_PGUP		159
71 #define K_KP_PLUS		160
72 #define K_KP_LEFTARROW		161
73 #define K_KP_5			162
74 #define K_KP_RIGHTARROW		163
75 #define K_KP_END		164
76 #define K_KP_DOWNARROW		165
77 #define K_KP_PGDN		166
78 #define K_KP_ENTER		167
79 #define K_KP_INS		168
80 #define K_KP_DEL		169
81 
82 #define K_COMMAND		170
83 
84 #define K_PAUSE			255
85 
86 //
87 // mouse buttons generate virtual keys
88 //
89 #define	K_MOUSE1		200
90 #define	K_MOUSE2		201	/* right mouse button			*/
91 #define	K_MOUSE3		202	/* middle mouse button			*/
92 #define	K_MWHEELUP		203	/* wheel-up as a virtual button		*/
93 #define	K_MWHEELDOWN		204	/* wheel-down as a virtual button	*/
94 #define	K_MOUSE4		205	/* thumb buttons			*/
95 #define	K_MOUSE5		206	/* thumb buttons			*/
96 
97 //
98 // joystick buttons
99 //
100 #define	K_JOY1			207
101 #define	K_JOY2			208
102 #define	K_JOY3			209
103 #define	K_JOY4			210
104 // aux keys are for multi-buttoned joysticks to generate so they can use
105 // the normal binding process
106 // aux29-32: reserved for the HAT (POV) switch motion
107 #define	K_AUX1			211
108 #define	K_AUX2			212
109 #define	K_AUX3			213
110 #define	K_AUX4			214
111 #define	K_AUX5			215
112 #define	K_AUX6			216
113 #define	K_AUX7			217
114 #define	K_AUX8			218
115 #define	K_AUX9			219
116 #define	K_AUX10			220
117 #define	K_AUX11			221
118 #define	K_AUX12			222
119 #define	K_AUX13			223
120 #define	K_AUX14			224
121 #define	K_AUX15			225
122 #define	K_AUX16			226
123 #define	K_AUX17			227
124 #define	K_AUX18			228
125 #define	K_AUX19			229
126 #define	K_AUX20			230
127 #define	K_AUX21			231
128 #define	K_AUX22			232
129 #define	K_AUX23			233
130 #define	K_AUX24			234
131 #define	K_AUX25			235
132 #define	K_AUX26			236
133 #define	K_AUX27			237
134 #define	K_AUX28			238
135 #define	K_AUX29			239
136 #define	K_AUX30			240
137 #define	K_AUX31			241
138 #define	K_AUX32			242
139 
140 
141 #define	MAXCMDLINE	256
142 
143 #define	key_game	0
144 #define	key_console	(1 << 0)
145 #define	key_message	(1 << 1)
146 #define	key_menu	(1 << 2)	/* last valid keydest */
147 
148 #define	key_bindbit	(key_menu << 1)
149 #define	key_menubind	(key_menu | key_bindbit)
150 
151 typedef int keydest_t;
152 
153 extern	char	*keybindings[256];
154 extern	int		key_count;			/* incremented every key event */
155 extern	int		key_lastpress;
156 
157 extern	char	key_lines[32][MAXCMDLINE];
158 extern	int		edit_line;
159 extern	int		key_linepos;
160 extern	int		key_insert;
161 
162 extern	qboolean	chat_team;
163 
164 void Key_Init (void);
165 void Key_ClearStates (void);
166 
167 void Key_Event (int key, qboolean down);
168 
169 qboolean Key_IsGameKey (void);
170 keydest_t Key_GetDest (void);
171 void Key_SetDest (keydest_t dest);
172 
173 void Key_SetBinding (int keynum, const char *binding);
174 const char *Key_KeynumToString (int keynum);
175 void Key_WriteBindings (FILE *f);
176 
177 void Key_EndChat (void);
178 const char *Key_GetChatBuffer (void);
179 int Key_GetChatMsgLen (void);
180 
181 #endif	/* __HX2_KEYS_H */
182 
183