/*
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
//
enum QKEYS {
	K_TAB				= 9,
	K_ENTER				= 13,
	K_ESCAPE			= 27,
	K_SPACE				= 32,

// normal keys should be passed as lowercased ascii

	K_BACKSPACE			= 127,
	K_UPARROW			= 128,
	K_DOWNARROW			= 129,
	K_LEFTARROW			= 130,
	K_RIGHTARROW		= 131,

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

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

//
// mouse buttons generate virtual keys
//
	K_MOUSE1			= 200,
	K_MOUSE2			= 201,
	K_MOUSE3			= 202,

//
// joystick buttons
//
	K_JOY1				= 203,
	K_JOY2				= 204,
	K_JOY3				= 205,
	K_JOY4				= 206,

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

	K_MWHEELDOWN		= 239,
	K_MWHEELUP			= 240,

	K_PAUSE				= 255,

	K_LAST
};

extern char	   *keybindings[K_LAST];
extern int		key_repeats[K_LAST];

extern	int	anykeydown;
extern char chat_buffer[];
extern	int chat_bufferlen;
extern	qboolean	chat_team;

void Key_Event (int key, qboolean down, unsigned time);
void Key_Init (void);
void Key_WriteBindings (FILE *f);
void Key_SetBinding (int keynum, char *binding);
void Key_ClearStates (void);
int Key_GetKey (void);
