From f55623ef9c78b1b5232cc6d1beef0278a4fc885c Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Sun, 23 Dec 2018 14:51:58 -0500
Subject: [PATCH] Clear all control keys before loading defaults in LoadConfig

---
 src/g_input.c | 10 ++++++++++
 src/g_input.h |  1 +
 src/m_misc.c  |  1 +
 3 files changed, 12 insertions(+)

diff --git a/src/g_input.c b/src/g_input.c
index 44d9f2b282..579a048e33 100644
--- a/src/g_input.c
+++ b/src/g_input.c
@@ -1010,6 +1010,16 @@ void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control)
 	setupcontrols[control][1] = KEY_NULL;
 }
 
+void G_ClearAllControlKeys(void)
+{
+	INT32 i;
+	for (i = 0; i < num_gamecontrols; i++)
+	{
+		G_ClearControlKeys(gamecontrol, i);
+		G_ClearControlKeys(gamecontrolbis, i);
+	}
+}
+
 //
 // Returns the name of a key (or virtual key for mouse and joy)
 // the input value being an keynum
diff --git a/src/g_input.h b/src/g_input.h
index 557fb3bf38..102809f7ff 100644
--- a/src/g_input.h
+++ b/src/g_input.h
@@ -160,6 +160,7 @@ INT32 G_KeyStringtoNum(const char *keystr);
 
 // detach any keys associated to the given game control
 void G_ClearControlKeys(INT32 (*setupcontrols)[2], INT32 control);
+void G_ClearAllControlKeys(void);
 void Command_Setcontrol_f(void);
 void Command_Setcontrol2_f(void);
 void G_Controldefault(void);
diff --git a/src/m_misc.c b/src/m_misc.c
index 01b468bd34..198bc7487f 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -443,6 +443,7 @@ void Command_LoadConfig_f(void)
 	FIL_ForceExtension(configfile, ".cfg");
 
 	// load default control
+	G_ClearAllControlKeys();
 	G_Controldefault();
 
 	// temporarily reset execversion to default
-- 
GitLab