[SOLVED] How to unbind Semicolon and Apostrophe from debug controls in PIE?

I need to use the Semicolon and Apostrophe keys as normal input actions, but when playing in the editor they are bound to debug functions - how do I unbind them?

In the project settings under “Gameplay Debugger,” I removed Apostrophe from the “Activation Key” command (set it to None), but it still activates debugging when I press play.
Under “Debug Camera Controller,” there aren’t even any input options, so I don’t see any way to unbind Semicolon.

I haven’t been able to find much online for disabling the debugger shortcut (and what I did find didn’t work), and nothing at all about disabling the shortcut for the debug camera.

Edit: Solved

The solution was to go to my engine install directory - UE_4.26 / Engine / Config / BaseInput.ini

Under [/Script/Engine.PlayerInput], change

+DebugExecBindings=(Key=Apostrophe,Command=“EnableGDT”)
+DebugExecBindings=(Key=Quote,Command=“EnableGDT”)
+DebugExecBindings=(Key=Semicolon,Command=“ToggleDebugCamera”)

to

-DebugExecBindings=(Key=Apostrophe,Command=“EnableGDT”)
-DebugExecBindings=(Key=Quote,Command=“EnableGDT”)
-DebugExecBindings=(Key=Semicolon,Command=“ToggleDebugCamera”)

11 Likes

This doesn’t seem to work in 5.0, as I’ve made the changes, restarted my engine, and " still brings up debugging.

Thank you so much !!!

I have been looking for something on this for like a week now.

This helped me a lot, cheers! I went about it a little different so not to do it at an engine level and override it at project level when needed. I find the debug cam really handy but obviously want shot of it in the build (thought it’s do it automatically but it didn’t).
So to help others, in your projects config folder, open the DefaultInput.ini and add the following:

[/Script/Engine.PlayerInput]
-DebugExecBindings=(Key=Semicolon,Command=“ToggleDebugCamera”)

The [script etc] is needed otherwise it’s ignored

1 Like

Another solution: Disable the GameplayDebugger’s input in C++. Useful if you cannot get the config files to work, or if you want it conditionally disabled (in my case for example, I want the host to be able to use this tool but not any clients).

#include <GameplayDebugger.h>
#include <GameplayDebuggerPlayerManager.h>

void AMyPlayerController::BeginPlay()
{
	Super::BeginPlay();

	#if WITH_GAMEPLAY_DEBUGGER
	GetWorld()->GetTimerManager().SetTimerForNextTick(this, &AMyPlayerController::DisableGameplayDebugger);
#endif
}

void AMyPlayerController::DisableGameplayDebugger()
{
// This needs to wait until after AGameplayDebuggerPlayerManager has finished setting up, which can take multiple frames on clients.
#if WITH_GAMEPLAY_DEBUGGER
	UC0GameInstance* GI = UC0Statics::GetGameInstance();
	// Disabled in the main menu, and for clients.
	if (IGameplayDebugger::IsAvailable())
	{		
		AGameplayDebuggerPlayerManager& Manager = AGameplayDebuggerPlayerManager::GetCurrent(GetWorld());
		if (UInputComponent* ManagerInput = Manager.GetInputComponent(*this))
		{
			PopInputComponent(ManagerInput);
		}
		else
		{
			// Try again next tick until ready
			GetWorld()->GetTimerManager().SetTimerForNextTick(this, &AMyPlayerController::DisableGameplayDebugger);
		}
	}
#endif
}