diff --git a/src/g_input.c b/src/g_input.c index 95664e2d1..c0ed73647 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 557fb3bf3..102809f7f 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 80c58d644..79fb0c99b 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -442,6 +442,10 @@ void Command_LoadConfig_f(void) strcpy(configfile, COM_Argv(1)); FIL_ForceExtension(configfile, ".cfg"); + // load default control + G_ClearAllControlKeys(); + G_Controldefault(); + // temporarily reset execversion to default cv_execversion.flags &= ~CV_HIDEN; COM_BufInsertText(va("%s \"%s\"\n", cv_execversion.name, cv_execversion.defaultvalue));