diff --git a/src/d_main.c b/src/d_main.c
index 6b5164894445233d7b5c6d530ff0551ec7b47cd1..cff6b88053fc91f57a0738bf2cb7fadbf92446d3 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -188,14 +188,14 @@ void D_ProcessEvents(void)
 				continue;
 		}
 
-		// console input
-		if (CON_Responder(ev))
-			continue; // ate the event
-
 		// Menu input
 		if (M_Responder(ev))
 			continue; // menu ate the event
 
+		// console input
+		if (CON_Responder(ev))
+			continue; // ate the event
+
 		G_Responder(ev);
 	}
 }
diff --git a/src/m_menu.c b/src/m_menu.c
index dbe5d854f690e4e97acfb84bf91c342990fde456..687f87051783b899701b161c814f04d7a622a70c 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -3150,6 +3150,9 @@ boolean M_Responder(event_t *ev)
 	if (gamestate == GS_TITLESCREEN && finalecount < TICRATE)
 		return false;
 
+	if (CON_Ready())
+		return false;
+
 	if (noFurtherInput)
 	{
 		// Ignore input after enter/escape/other buttons
@@ -3509,6 +3512,7 @@ boolean M_Responder(event_t *ev)
 			return false;
 
 		default:
+			CON_Responder(ev);
 			break;
 	}