From da50e4cd7f98acaecb74f81ded68a0f5c18f1a98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= Date: Sun, 20 Oct 2024 12:35:56 +0200 Subject: [PATCH] Add unblockable console key --- src/console.c | 16 ++++++++++++++++ src/console.h | 1 + src/d_main.c | 3 +++ 3 files changed, 20 insertions(+) diff --git a/src/console.c b/src/console.c index 50ecfec9c..c38a32b4f 100644 --- a/src/console.c +++ b/src/console.c @@ -918,6 +918,22 @@ static void CON_InputDelChar(void) // ---- // +// +// Same as CON_Responder, but is process before everything else, so it cannot be blocked. +// +boolean CON_PreResponder(event_t *ev) +{ + if (ev->type == ev_keydown && shiftdown == 1 && ev->key == KEY_ESCAPE) + { + I_SetTextInputMode(con_destlines == 0); // inverse, since this is changed next tic. + consoletoggle = true; + return true; + } + + return false; +} + +// // Handles console key input // boolean CON_Responder(event_t *ev) diff --git a/src/console.h b/src/console.h index 2af01f1a3..664b74a22 100644 --- a/src/console.h +++ b/src/console.h @@ -19,6 +19,7 @@ void CON_Init(void); void CON_StartRefresh(void); void CON_StopRefresh(void); +boolean CON_PreResponder(event_t *ev); boolean CON_Responder(event_t *ev); #ifdef HAVE_THREADS diff --git a/src/d_main.c b/src/d_main.c index a6a9385d2..2ae741c4e 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -227,6 +227,9 @@ void D_ProcessEvents(void) } } + if (CON_PreResponder(ev)) + continue; + // Screenshots over everything so that they can be taken anywhere. if (M_ScreenshotResponder(ev)) continue; // ate the event