]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - keys.c
-reconnect wont work if being called from the console (it never did but now
[xonotic/darkplaces.git] / keys.c
diff --git a/keys.c b/keys.c
index e11ea703591f95b14ae091354acc4a2224d7f43f..8dffbe90b6a692b587c027c4bc728f7ecfcb8a6c 100644 (file)
--- a/keys.c
+++ b/keys.c
@@ -804,8 +804,8 @@ Key_Init (void)
        consolekeys[K_KP_MINUS] = true;
        consolekeys[K_KP_DIVIDE] = true;
        consolekeys[K_KP_MULTIPLY] = true;
-       consolekeys['`'] = true;
-       consolekeys['~'] = true;
+       consolekeys['`'] = false;
+       consolekeys['~'] = false;
 
        menubound[K_ESCAPE] = true;
        for (i = 0; i < 12; i++)
@@ -833,7 +833,7 @@ Should NOT be called during an interrupt!
 void
 Key_Event (int key, char ascii, qboolean down)
 {
-#if 0
+#if 1
 #define USERPLAYING()  ( !key_consoleactive && key_dest == key_game && (cls.state == ca_connected && cls.signon == SIGNONS) )
        const char *bind;
        static qboolean shift_down = false;
@@ -869,8 +869,8 @@ Key_Event (int key, char ascii, qboolean down)
        } else {
                // handle ESCAPE specially, so unbinding wont help
                if( key == K_ESCAPE ) {
-                       // ctrl-escape is a safety measure for users who cant toggle the console otherwise
-                       if( shift_down || key_consoleactive ) {
+                       // shift-escape is a safety measure for users who cant toggle the console otherwise
+                       if( shift_down ) {
                                Con_ToggleConsole_f();
                                return;
                        }
@@ -882,6 +882,11 @@ Key_Event (int key, char ascii, qboolean down)
                                        MR_Keydown( key, ascii );
                                        break;
                                case key_game:
+                                       if (COM_CheckParm ("-demolooponly"))
+                                       {
+                                               CL_Disconnect ();
+                                               return;
+                                       }
                                        MR_ToggleMenu_f();
                                        break;
                                default:
@@ -890,26 +895,24 @@ Key_Event (int key, char ascii, qboolean down)
                        return;
                }
 
-               if( key_consoleactive ) {
-                               Key_Console( key, ascii );
-                               return;
-               }
-
-               if (bind && !strncmp( bind, "toggleconsole", strlen( "toggleconsole" ) ) )
-               {
+               if( !(key_consoleactive && consolekeys[ key ]) && bind && !strncmp( bind, "toggleconsole", strlen( "toggleconsole" ) ) ) {
                        Cbuf_AddText( bind );
                        Cbuf_AddText( "\n" );
+                       if( ascii != STRING_COLOR_TAG ) {
+                               return;
+                       }
                } else {
                        // during demo playback, all keys ingame bring up the main menu
                        if( cls.demoplayback && !key_consoleactive && key_dest == key_game ) {
-                               MR_ToggleMenu_f ();
+                               if (!COM_CheckParm ("-demolooponly"))
+                                       MR_ToggleMenu_f ();
                                return;
                        }
 
                        // menu bind/function keys or normal binds
                        if( (key_dest == key_menu && menubound[key]) || USERPLAYING() ) {
                                if( bind ) {
-                                       if( bind[0] == '+' ) {                  // button commands add keynum as a parm
+                                       if( bind[0] == '+' ) { // button commands add keynum as a parm
                                                Cbuf_AddText( va( "%s %i\n", bind, key ) );
                                        } else {
                                                Cbuf_AddText( bind );
@@ -921,18 +924,22 @@ Key_Event (int key, char ascii, qboolean down)
                }
 
                // either console or game state key functions
-               switch (key_dest) {
-                       case key_message:
-                               Key_Message( key, ascii );
-                               break;
-                       case key_menu:
-                               MR_Keydown( key, ascii );
-                               break;
-                       case key_game:
-                               // unbound key
-                               break;
-                       default:
-                               Sys_Error( "Bad key_dest" );
+               if( key_consoleactive ) {
+                               Key_Console( key, ascii );
+               } else {
+                       switch (key_dest) {
+                               case key_message:
+                                       Key_Message( key, ascii );
+                                       break;
+                               case key_menu:
+                                       MR_Keydown( key, ascii );
+                                       break;
+                               case key_game:                          
+                                       // unbound key
+                                       break;
+                               default:
+                                       Sys_Error( "Bad key_dest" );
+                       }
                }
        }
 #else