1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19*/
20
21//
22// these are the key numbers that should be passed to Key_Event
23//
24#define	K_TAB			9
25#define	K_ENTER			13
26#define	K_ESCAPE		27
27#define	K_SPACE			32
28
29// normal keys should be passed as lowercased ascii
30
31#define	K_BACKSPACE		127
32#define	K_UPARROW		128
33#define	K_DOWNARROW		129
34#define	K_LEFTARROW		130
35#define	K_RIGHTARROW	131
36
37#define	K_ALT			132
38#define	K_CTRL			133
39#define	K_SHIFT			134
40#define	K_F1			135
41#define	K_F2			136
42#define	K_F3			137
43#define	K_F4			138
44#define	K_F5			139
45#define	K_F6			140
46#define	K_F7			141
47#define	K_F8			142
48#define	K_F9			143
49#define	K_F10			144
50#define	K_F11			145
51#define	K_F12			146
52#define	K_INS			147
53#define	K_DEL			148
54#define	K_PGDN			149
55#define	K_PGUP			150
56#define	K_HOME			151
57#define	K_END			152
58
59#define K_PAUSE			255
60
61//
62// mouse buttons generate virtual keys
63//
64#define	K_MOUSE1		200
65#define	K_MOUSE2		201
66#define	K_MOUSE3		202
67
68//
69// joystick buttons
70//
71#define	K_JOY1			203
72#define	K_JOY2			204
73#define	K_JOY3			205
74#define	K_JOY4			206
75
76//
77// aux keys are for multi-buttoned joysticks to generate so they can use
78// the normal binding process
79//
80#define	K_AUX1			207
81#define	K_AUX2			208
82#define	K_AUX3			209
83#define	K_AUX4			210
84#define	K_AUX5			211
85#define	K_AUX6			212
86#define	K_AUX7			213
87#define	K_AUX8			214
88#define	K_AUX9			215
89#define	K_AUX10			216
90#define	K_AUX11			217
91#define	K_AUX12			218
92#define	K_AUX13			219
93#define	K_AUX14			220
94#define	K_AUX15			221
95#define	K_AUX16			222
96#define	K_AUX17			223
97#define	K_AUX18			224
98#define	K_AUX19			225
99#define	K_AUX20			226
100#define	K_AUX21			227
101#define	K_AUX22			228
102#define	K_AUX23			229
103#define	K_AUX24			230
104#define	K_AUX25			231
105#define	K_AUX26			232
106#define	K_AUX27			233
107#define	K_AUX28			234
108#define	K_AUX29			235
109#define	K_AUX30			236
110#define	K_AUX31			237
111#define	K_AUX32			238
112
113// JACK: Intellimouse(c) Mouse Wheel Support
114
115#define K_MWHEELUP		239
116#define K_MWHEELDOWN	240
117
118
119
120typedef enum {key_game, key_console, key_message, key_menu, keydest_t_max = 1 << 30} keydest_t;
121
122extern keydest_t	key_dest;
123extern char *keybindings[256];
124extern	int		key_repeats[256];
125extern	int		key_count;			// incremented every key event
126extern	int		key_lastpress;
127
128void Key_Event (int key, qboolean down);
129void Key_Init (void);
130void Key_WriteBindings (FILE *f);
131void Key_SetBinding (int keynum, const char *binding);
132void Key_ClearStates (void);
133
134