]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - keys.h
Fix engine not starting on Windows if linked against SDL > 2.0.5
[xonotic/darkplaces.git] / keys.h
diff --git a/keys.h b/keys.h
index b8749341cee363f71f7ebed42354010fb248b0da..7841e9d007df0354807ad4664fb96ca807907e8e 100644 (file)
--- a/keys.h
+++ b/keys.h
@@ -1,40 +1,48 @@
 /*
-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:
 
-// these are the key numbers that should be passed to Key_Event
+               Free Software Foundation, Inc.
+               59 Temple Place - Suite 330
+               Boston, MA  02111-1307, USA
 
-typedef enum {
-       K_TAB = 9,
-       K_ENTER = 13,
-       K_ESCAPE = 27,
-       K_SPACE = 32,
+       $Id$
+*/
 
-       // normal keys should be passed as lowercased ascii
+#ifndef __KEYS_H
+#define __KEYS_H
 
-       K_BACKSPACE = 127,
+#include "qtypes.h"
 
-       K_CAPSLOCK,
-       K_PRNTSCR,
-       K_SCRLCK,
-       K_PAUSE,
+//
+// these are the key numbers that should be passed to Key_Event
+//
+typedef enum keynum_e
+{
+       K_TEXT                  = 1, // used only for unicode character input
+       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,
@@ -43,6 +51,7 @@ typedef enum {
        K_ALT,
        K_CTRL,
        K_SHIFT,
+
        K_F1,
        K_F2,
        K_F3,
@@ -55,6 +64,7 @@ typedef enum {
        K_F10,
        K_F11,
        K_F12,
+
        K_INS,
        K_DEL,
        K_PGDN,
@@ -62,48 +72,89 @@ typedef enum {
        K_HOME,
        K_END,
 
+       K_PAUSE,
 
-       // Keypad stuff..
-
-       KP_NUMLCK,
-       KP_DIVIDE,
-       KP_MULTIPLY,
-
-       KP_HOME,
-       KP_UPARROW,
-       KP_PGUP,
-       KP_MINUS,
-
-       KP_LEFTARROW,
-       KP_5,
-       KP_RIGHTARROW,
-       KP_PLUS,
-
-       KP_END,
-       KP_DOWNARROW,
-       KP_PGDN,
+       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,
 
-       KP_INS,
-       KP_DEL,
-       KP_ENTER,
+       K_PRINTSCREEN,
 
        // mouse buttons generate virtual keys
-       K_MOUSE1 = 200,
+
+       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
-       K_JOY1,
+//
+// joystick buttons
+//
+       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
-       ////
-       //
+//
+// aux keys are for multi-buttoned joysticks to generate so they can use
+// the normal binding process
+//
        K_AUX1,
        K_AUX2,
        K_AUX3,
@@ -137,24 +188,204 @@ typedef enum {
        K_AUX31,
        K_AUX32,
 
-       // JACK: Intellimouse(c) Mouse Wheel Support
+       // Microsoft Xbox 360 Controller For Windows
+       K_X360_DPAD_UP,
+       K_X360_DPAD_DOWN,
+       K_X360_DPAD_LEFT,
+       K_X360_DPAD_RIGHT,
+       K_X360_START,
+       K_X360_BACK,
+       K_X360_LEFT_THUMB,
+       K_X360_RIGHT_THUMB,
+       K_X360_LEFT_SHOULDER,
+       K_X360_RIGHT_SHOULDER,
+       K_X360_A,
+       K_X360_B,
+       K_X360_X,
+       K_X360_Y,
+       K_X360_LEFT_TRIGGER,
+       K_X360_RIGHT_TRIGGER,
+       K_X360_LEFT_THUMB_UP,
+       K_X360_LEFT_THUMB_DOWN,
+       K_X360_LEFT_THUMB_LEFT,
+       K_X360_LEFT_THUMB_RIGHT,
+       K_X360_RIGHT_THUMB_UP,
+       K_X360_RIGHT_THUMB_DOWN,
+       K_X360_RIGHT_THUMB_LEFT,
+       K_X360_RIGHT_THUMB_RIGHT,
 
-       K_MWHEELUP,
-       K_MWHEELDOWN
-} keynum_t;
+       // generic joystick emulation for menu
+       K_JOY_UP,
+       K_JOY_DOWN,
+       K_JOY_LEFT,
+       K_JOY_RIGHT,
+
+       K_MIDINOTE0 = 896, // to this, the note number is added
+       K_MIDINOTE1,
+       K_MIDINOTE2,
+       K_MIDINOTE3,
+       K_MIDINOTE4,
+       K_MIDINOTE5,
+       K_MIDINOTE6,
+       K_MIDINOTE7,
+       K_MIDINOTE8,
+       K_MIDINOTE9,
+       K_MIDINOTE10,
+       K_MIDINOTE11,
+       K_MIDINOTE12,
+       K_MIDINOTE13,
+       K_MIDINOTE14,
+       K_MIDINOTE15,
+       K_MIDINOTE16,
+       K_MIDINOTE17,
+       K_MIDINOTE18,
+       K_MIDINOTE19,
+       K_MIDINOTE20,
+       K_MIDINOTE21,
+       K_MIDINOTE22,
+       K_MIDINOTE23,
+       K_MIDINOTE24,
+       K_MIDINOTE25,
+       K_MIDINOTE26,
+       K_MIDINOTE27,
+       K_MIDINOTE28,
+       K_MIDINOTE29,
+       K_MIDINOTE30,
+       K_MIDINOTE31,
+       K_MIDINOTE32,
+       K_MIDINOTE33,
+       K_MIDINOTE34,
+       K_MIDINOTE35,
+       K_MIDINOTE36,
+       K_MIDINOTE37,
+       K_MIDINOTE38,
+       K_MIDINOTE39,
+       K_MIDINOTE40,
+       K_MIDINOTE41,
+       K_MIDINOTE42,
+       K_MIDINOTE43,
+       K_MIDINOTE44,
+       K_MIDINOTE45,
+       K_MIDINOTE46,
+       K_MIDINOTE47,
+       K_MIDINOTE48,
+       K_MIDINOTE49,
+       K_MIDINOTE50,
+       K_MIDINOTE51,
+       K_MIDINOTE52,
+       K_MIDINOTE53,
+       K_MIDINOTE54,
+       K_MIDINOTE55,
+       K_MIDINOTE56,
+       K_MIDINOTE57,
+       K_MIDINOTE58,
+       K_MIDINOTE59,
+       K_MIDINOTE60,
+       K_MIDINOTE61,
+       K_MIDINOTE62,
+       K_MIDINOTE63,
+       K_MIDINOTE64,
+       K_MIDINOTE65,
+       K_MIDINOTE66,
+       K_MIDINOTE67,
+       K_MIDINOTE68,
+       K_MIDINOTE69,
+       K_MIDINOTE70,
+       K_MIDINOTE71,
+       K_MIDINOTE72,
+       K_MIDINOTE73,
+       K_MIDINOTE74,
+       K_MIDINOTE75,
+       K_MIDINOTE76,
+       K_MIDINOTE77,
+       K_MIDINOTE78,
+       K_MIDINOTE79,
+       K_MIDINOTE80,
+       K_MIDINOTE81,
+       K_MIDINOTE82,
+       K_MIDINOTE83,
+       K_MIDINOTE84,
+       K_MIDINOTE85,
+       K_MIDINOTE86,
+       K_MIDINOTE87,
+       K_MIDINOTE88,
+       K_MIDINOTE89,
+       K_MIDINOTE90,
+       K_MIDINOTE91,
+       K_MIDINOTE92,
+       K_MIDINOTE93,
+       K_MIDINOTE94,
+       K_MIDINOTE95,
+       K_MIDINOTE96,
+       K_MIDINOTE97,
+       K_MIDINOTE98,
+       K_MIDINOTE99,
+       K_MIDINOTE100,
+       K_MIDINOTE101,
+       K_MIDINOTE102,
+       K_MIDINOTE103,
+       K_MIDINOTE104,
+       K_MIDINOTE105,
+       K_MIDINOTE106,
+       K_MIDINOTE107,
+       K_MIDINOTE108,
+       K_MIDINOTE109,
+       K_MIDINOTE110,
+       K_MIDINOTE111,
+       K_MIDINOTE112,
+       K_MIDINOTE113,
+       K_MIDINOTE114,
+       K_MIDINOTE115,
+       K_MIDINOTE116,
+       K_MIDINOTE117,
+       K_MIDINOTE118,
+       K_MIDINOTE119,
+       K_MIDINOTE120,
+       K_MIDINOTE121,
+       K_MIDINOTE122,
+       K_MIDINOTE123,
+       K_MIDINOTE124,
+       K_MIDINOTE125,
+       K_MIDINOTE126,
+       K_MIDINOTE127,
+
+       MAX_KEYS
+}
+keynum_t;
+
+typedef enum keydest_e { key_game, key_message, key_menu, key_menu_grabbed, key_console, key_void } keydest_t;
+
+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 4
+extern int                     key_consoleactive;
+extern char            *keybindings[MAX_BINDMAPS][MAX_KEYS];
 
+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;
 
-typedef enum {key_game, key_console, key_message, key_menu} keydest_t;
+void Key_ClearEditLine(int edit_line);
+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_ReleaseAll (void);
+void Key_EventQueue_Block(void);
+void Key_EventQueue_Unblock(void);
 
-extern keydest_t       key_dest;
-extern char *keybindings[256];
-extern int             key_repeats[256];
-extern int             key_count;                      // incremented every key event
-extern int             key_lastpress;
+qboolean Key_SetBinding (int keynum, int bindmap, const char *binding);
+const char *Key_GetBind (int key, int bindmap);
+void Key_FindKeysForCommand (const char *command, int *keys, int numkeys, int bindmap);
+qboolean Key_SetBindMap(int fg, int bg);
+void Key_GetBindMap(int *fg, int *bg);
 
-void Key_Event (int key, qboolean down);
-void Key_Init (void);
-void Key_WriteBindings (FILE *f);
-void Key_SetBinding (int keynum, char *binding);
-void Key_ClearStates (void);
+#endif // __KEYS_H