]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - keys.h
experimental new persistent console history (uses same buffer as console output)...
[xonotic/darkplaces.git] / keys.h
diff --git a/keys.h b/keys.h
index 9e85a321d3d336695e543ce9f326d368d7e36a58..beb5df69734769c3e7012c3ff269fc136ef4c8fb 100644 (file)
--- a/keys.h
+++ b/keys.h
 /*
-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_OTHERDEVICESBEGIN = K_MOUSE1,
+       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, key_menu_grabbed, key_console, key_void } keydest_t;
+
+#define MAX_BINDMAPS 8
+#define MAX_KEYS 1024
+extern char            key_line[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 int chat_mode; // 0 for say, 1 for say_team, -1 for command
+extern char chat_buffer[MAX_INPUTLINE];
+extern unsigned int chat_bufferlen;
+
+void Key_WriteBindings(qfile_t *f);
+void Key_Init(void);
+void Key_Shutdown(void);
+void Key_Init_Cvars(void);
+void Key_Event(int key, int ascii, qboolean down);
 void Key_ClearStates (void);
+void Key_SetBinding (int keynum, int bindmap, const char *binding);
 
-#endif
+#endif // __KEYS_H