From 8e190932e7c346aba4e585b97a3ad6fbc6785b41 Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Mon, 3 Dec 2018 11:21:25 -0500
Subject: [PATCH] Add gc_systemmenu from Kart

---
 src/g_input.c | 1 +
 src/g_input.h | 1 +
 src/m_menu.c  | 3 +++
 3 files changed, 5 insertions(+)

diff --git a/src/g_input.c b/src/g_input.c
index 1ddfae817..864cee381 100644
--- a/src/g_input.c
+++ b/src/g_input.c
@@ -1190,6 +1190,7 @@ void G_Controldefault(void)
 	gamecontrol[gc_jump       ][0] = KEY_SPACE;
 	gamecontrol[gc_console    ][0] = KEY_CONSOLE;
 	gamecontrol[gc_pause      ][0] = 'p';
+	gamecontrol[gc_systemmenu ][0] = KEY_JOY1+7; // Start
 #ifdef WMINPUT
 	gamecontrol[gc_forward    ][0] = KEY_JOY1+02; //UP
 	gamecontrol[gc_backward   ][0] = KEY_JOY1+03; //DOWN
diff --git a/src/g_input.h b/src/g_input.h
index 6dc99ac55..18fd6ac2a 100644
--- a/src/g_input.h
+++ b/src/g_input.h
@@ -118,6 +118,7 @@ typedef enum
 	gc_jump,
 	gc_console,
 	gc_pause,
+	gc_systemmenu,
 	gc_custom1, // Lua scriptable
 	gc_custom2, // Lua scriptable
 	gc_custom3, // Lua scriptable
diff --git a/src/m_menu.c b/src/m_menu.c
index 636e804fe..8f20c69f7 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -1073,6 +1073,7 @@ static menuitem_t OP_MiscControlsMenu[] =
 	{IT_CALL | IT_STRING2, NULL, "Custom Action 3",  M_ChangeControl, gc_custom3      },
 
 	{IT_CALL | IT_STRING2, NULL, "Pause",            M_ChangeControl, gc_pause        },
+	{IT_CALL | IT_STRING2, NULL, "Open/Close Menu (ESC)", M_ChangeControl, gc_systemmenu },
 	{IT_CALL | IT_STRING2, NULL, "Console",          M_ChangeControl, gc_console      },
 };
 
@@ -2172,6 +2173,8 @@ boolean M_Responder(event_t *ev)
 
 	if (ch == -1)
 		return false;
+	else if (ch == gamecontrol[gc_systemmenu][0] || ch == gamecontrol[gc_systemmenu][1]) // allow remappable ESC key
+		ch = KEY_ESCAPE;
 
 	// F-Keys
 	if (!menuactive)