summaryrefslogtreecommitdiff
path: root/source/key_public.h
blob: e308b6cc0a1e04b0d3ea0ea983248e62eb04b42c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/

//
// these are the key numbers that should be passed to Key_Event
//
#define	K_BACKSPACE		8
#define	K_TAB			9
#define	K_ENTER			13
#define K_PAUSE			19
#define	K_ESCAPE		27
#define	K_SPACE			32

// normal keys should be passed as lowercased ascii

#define	K_DEL			127
#define	K_UPARROW		128
#define	K_DOWNARROW		129
#define	K_LEFTARROW		130
#define	K_RIGHTARROW	131

#define	K_ALT			132
#define	K_CTRL			133
#define	K_SHIFT			134
#define	K_F1			135
#define	K_F2			136
#define	K_F3			137
#define	K_F4			138
#define	K_F5			139
#define	K_F6			140
#define	K_F7			141
#define	K_F8			142
#define	K_F9			143
#define	K_F10			144
#define	K_F11			145
#define	K_F12			146
#define	K_INS			147
#define	K_PGDN			148
#define	K_PGUP			149
#define	K_HOME			150
#define	K_END			151

#define K_NUMLOCK       153
#define K_CAPSLOCK      154
#define K_SCROLLOCK     155
#define K_LWINKEY       156
#define K_RWINKEY       157
#define K_MENU          158

#define K_KP_HOME		160
#define K_KP_UPARROW	161
#define K_KP_PGUP		162
#define	K_KP_LEFTARROW	163
#define K_KP_5			164
#define K_KP_RIGHTARROW	165
#define K_KP_END		166
#define K_KP_DOWNARROW	167
#define K_KP_PGDN		168
#define	K_KP_ENTER		169
#define K_KP_INS   		170
#define	K_KP_DEL		171
#define K_KP_SLASH		172
#define K_KP_MINUS		173
#define K_KP_PLUS		174
#define K_KP_MULTIPLY   175

#define K_LALT          180
#define K_RALT          181
#define K_LCTRL         182
#define K_RCTRL         183
#define K_LSHIFT        184
#define K_RSHIFT        185


//
// joystick buttons
//
#define	K_JOY1			203
#define	K_JOY2			204
#define	K_JOY3			205
#define	K_JOY4			206

//
// aux keys are for multi-buttoned joysticks to generate so they can use
// the normal binding process
//
#define	K_AUX1			207
#define	K_AUX2			208
#define	K_AUX3			209
#define	K_AUX4			210
#define	K_AUX5			211
#define	K_AUX6			212
#define	K_AUX7			213
#define	K_AUX8			214
#define	K_AUX9			215
#define	K_AUX10			216
#define	K_AUX11			217
#define	K_AUX12			218
#define	K_AUX13			219
#define	K_AUX14			220
#define	K_AUX15			221
#define	K_AUX16			222
#define	K_AUX17			223
#define	K_AUX18			224
#define	K_AUX19			225
#define	K_AUX20			226
#define	K_AUX21			227
#define	K_AUX22			228
#define	K_AUX23			229
#define	K_AUX24			230
#define	K_AUX25			231
#define	K_AUX26			232
#define	K_AUX27			233
#define	K_AUX28			234
#define	K_AUX29			235
#define	K_AUX30			236
#define	K_AUX31			237
#define	K_AUX32			238

#define K_MWHEELDOWN	239
#define K_MWHEELUP		240

//
// mouse buttons generate virtual keys
//
#define	K_MOUSE1		241
#define	K_MOUSE2		242
#define	K_MOUSE3		243
#define	K_MOUSE4		244
#define	K_MOUSE5		245
#define	K_MOUSE6		246
#define	K_MOUSE7		247
#define	K_MOUSE8		248

typedef enum keydest_e {
	KEY_GAME	= 0,
	KEY_CONSOLE	= ( 1 << 0 ),
	KEY_MESSAGE	= ( 1 << 1 ),
	KEY_MENU	= ( 1 << 2 )
} keydest_t;

typedef struct keyAPI_s {
	qboolean	(*GetOverstrikeMode)( void );
	void		(*SetOverstrikeMode)( qboolean overstrike );
	keydest_t	(*GetDest)( void );
	void		(*SetDest)( keydest_t dest );

	qboolean	(*IsDown)( int key );
	qboolean	(*AnyKeyDown)( void );
	void		(*ClearStates)( void );

	char	*(*KeyNumToString)( int keynum );
	void	(*SetBinding)( int keynum, const char *binding );
	char	*(*GetBinding)( const char *binding );
	int		(*EnumBindings)( int key, const char *binding );
} keyAPI_t;

extern keyAPI_t		keys;