diff --git a/src/console.c b/src/console.c
index c0ca3217d6046e1abcd96ef562415a0c15346278..bca6dc6de80ccdafa26af2ac99c8b79d667e1fa4 100644
--- a/src/console.c
+++ b/src/console.c
@@ -919,10 +919,13 @@ static void CON_InputDelChar(void)
 //
 
 //
-// Same as CON_Responder, but is process before everything else, so it cannot be blocked.
+// Same as CON_Responder, but is processed before everything else, so it cannot be blocked.
 //
 boolean CON_PreResponder(event_t *ev)
 {
+	if (modeattacking || metalrecording || marathonmode)
+		return false;
+
 	if (ev->type == ev_keydown && shiftdown == 1 && ev->key == KEY_ESCAPE)
 	{
 		I_SetTextInputMode(con_destlines == 0); // inverse, since this is changed next tic.