X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=keys.h;h=3736ac4d561419af08bbf85197d1bf3a591b4fa3;hp=9e85a321d3d336695e543ce9f326d368d7e36a58;hb=76ed5d5ee3a2517bfae3df09fb0b8d912f7286bc;hpb=c8b10ff42dfa1208346879250f655c3fd2909704 diff --git a/keys.h b/keys.h index 9e85a321..3736ac4d 100644 --- a/keys.h +++ b/keys.h @@ -1,172 +1,220 @@ /* -Copyright (C) 1996-1997 Id Software, Inc. + $RCSfile$ -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. + Copyright (C) 1996-1997 Id Software, Inc. -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. + 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. -See the GNU General Public License for more details. + 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. -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. + 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: + + Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA + + $Id$ */ -#ifndef KEYS_H -#define KEYS_H +#ifndef __KEYS_H +#define __KEYS_H + +#include "qtypes.h" // // these are the key numbers that should be passed to Key_Event // -#define K_TAB 9 -#define K_ENTER 13 -#define K_ESCAPE 27 -#define K_SPACE 32 - -// normal keys should be passed as lowercased ascii - -#define K_BACKSPACE 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_DEL 148 -#define K_PGDN 149 -#define K_PGUP 150 -#define K_HOME 151 -#define K_END 152 - -#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_PAUSE 255 +typedef enum keynum_e +{ + 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, + K_DOWNARROW, + K_LEFTARROW, + K_RIGHTARROW, + + K_ALT, + K_CTRL, + K_SHIFT, + K_F1, + K_F2, + K_F3, + K_F4, + K_F5, + K_F6, + K_F7, + K_F8, + K_F9, + K_F10, + K_F11, + K_F12, + K_INS, + K_DEL, + K_PGDN, + K_PGUP, + K_HOME, + K_END, + + K_PAUSE, + + K_NUMLOCK, + K_CAPSLOCK, + K_SCROLLOCK, + + K_KP_0, + K_KP_INS = K_KP_0, + K_KP_1, + K_KP_END = K_KP_1, + K_KP_2, + K_KP_DOWNARROW = K_KP_2, + K_KP_3, + K_KP_PGDN = K_KP_3, + K_KP_4, + K_KP_LEFTARROW = K_KP_4, + K_KP_5, + K_KP_6, + K_KP_RIGHTARROW = K_KP_6, + K_KP_7, + K_KP_HOME = K_KP_7, + K_KP_8, + K_KP_UPARROW = K_KP_8, + K_KP_9, + K_KP_PGUP = K_KP_9, + K_KP_PERIOD, + K_KP_DEL = K_KP_PERIOD, + K_KP_DIVIDE, + K_KP_SLASH = K_KP_DIVIDE, + K_KP_MULTIPLY, + K_KP_MINUS, + K_KP_PLUS, + K_KP_ENTER, + K_KP_EQUALS, + + // mouse buttons generate virtual keys + + K_MOUSE1 = 512, + K_MOUSE2, + K_MOUSE3, + K_MWHEELUP, + K_MWHEELDOWN, + K_MOUSE4, + K_MOUSE5, + K_MOUSE6, + K_MOUSE7, + K_MOUSE8, + K_MOUSE9, + K_MOUSE10, + K_MOUSE11, + K_MOUSE12, + K_MOUSE13, + K_MOUSE14, + K_MOUSE15, + K_MOUSE16, // // joystick buttons // -#define K_JOY1 203 -#define K_JOY2 204 -#define K_JOY3 205 -#define K_JOY4 206 + K_JOY1 = 768, + K_JOY2, + K_JOY3, + K_JOY4, + K_JOY5, + K_JOY6, + K_JOY7, + K_JOY8, + K_JOY9, + K_JOY10, + K_JOY11, + K_JOY12, + K_JOY13, + K_JOY14, + K_JOY15, + K_JOY16, // // 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 -// LordHavoc: thanks to backslash for this MOUSE4 and MOUSE5 code, -// LordHavoc: however I renumbered it differently and added MOUSE6 through MOUSE10 -/* backslash :: imouse explorer buttons */ -#define K_MOUSE4 244 -#define K_MOUSE5 245 -/* backslash :: renumber everything that follows so that the mouse4/5 buttons can be squeezed in */ -// LordHavoc: added these for completeness -#define K_MOUSE6 246 -#define K_MOUSE7 247 -#define K_MOUSE8 248 -#define K_MOUSE9 249 -#define K_MOUSE10 250 - - -extern char *keybindings[256]; -extern int key_repeats[256]; - -extern char chat_buffer[256]; -extern int chat_bufferlen; -extern qboolean chat_team; - -typedef enum {key_game, key_message, key_menu} keydest_t; - + K_AUX1, + K_AUX2, + K_AUX3, + K_AUX4, + K_AUX5, + K_AUX6, + K_AUX7, + K_AUX8, + K_AUX9, + K_AUX10, + K_AUX11, + K_AUX12, + K_AUX13, + K_AUX14, + K_AUX15, + K_AUX16, + K_AUX17, + K_AUX18, + K_AUX19, + K_AUX20, + K_AUX21, + K_AUX22, + K_AUX23, + K_AUX24, + K_AUX25, + K_AUX26, + K_AUX27, + K_AUX28, + K_AUX29, + K_AUX30, + K_AUX31, + K_AUX32, + +} +keynum_t; + +typedef enum keydest_e { key_game, key_message, key_menu } keydest_t; + +#define MAX_INPUTLINES 32 +#define MAX_BINDMAPS 8 +#define MAX_KEYS 1024 +extern int edit_line; +extern int history_line; +extern char key_lines[MAX_INPUTLINES][MAX_INPUTLINE]; +extern int key_linepos; +extern qboolean key_insert; // insert key toggle (for editing) +extern keydest_t key_dest; // key_consoleactive bits // user wants console (halfscreen) #define KEY_CONSOLEACTIVE_USER 1 // console forced because there's nothing else active (fullscreen) -#define KEY_CONSOLEACTIVE_FORCED 2 -extern int key_consoleactive; -extern keydest_t key_dest; - -void Key_Event (int key, qboolean down); -void Key_Init (void); -void Key_WriteBindings (qfile_t *f); -void Key_SetBinding (int keynum, char *binding); +#define KEY_CONSOLEACTIVE_FORCED 4 +extern int key_consoleactive; +extern char *keybindings[MAX_BINDMAPS][MAX_KEYS]; + +extern void Key_ClearEditLine(int edit_line); +extern qboolean chat_team; +extern char chat_buffer[MAX_INPUTLINE]; +extern unsigned int chat_bufferlen; + +void Key_WriteBindings(qfile_t *f); +void Key_Init(void); +void Key_Init_Cvars(void); +void Key_Event(int key, char ascii, qboolean down); void Key_ClearStates (void); +void Key_SetBinding (int keynum, int bindmap, const char *binding); -#endif +#endif // __KEYS_H