In this lesson, you will learn how to leverage Unreal’s Enhanced Input visualizers to peer inside your input chains and pinpoint exactly where a command is getting blocked or ignored.
When you stack multiple Input Mapping Contexts, use complex Modifiers, and chain Triggers together, it’s easy for an input event to "disappear" before it reaches your character code. If you press a key and nothing happens, the culprit is often a higher-priority context consuming the input or a modifier failing its logic check.
Using the Input Debugger
The most powerful tool for this is the Enhanced Input Debugger. While your game is running in the editor, press the tilde key (~) and type ShowDebug EnhancedInput. This command opens an on-screen overlay that displays every active InputMappingContext, the InputAction states, and the current trigger evaluation.
Reading the Chain
The visualizer breaks down the input flow into a readable list. You can see:
- Active Contexts: Verify if your desired context is actually in the stack and if its priority is high enough.
- Trigger States: Look for labels like
None,Ongoing,Started, orTriggered. If an action stays inOngoing, aChordedtrigger or aHoldtrigger likely isn't being satisfied by your hardware input. - Modifier Impact: If an action shows as
Triggeredbut your character doesn't move, check the input value passed through the modifier chain.
For example, if you are using a DeadZone modifier, the debugger shows the raw input versus the processed output value. If the output value is 0.0, your logic is functioning, but your modifier is stripping the input because it falls below the threshold.
-- Active Action: IA_Jump --
Trigger: Held (Ongoing)
Modifier: DeadZone (Output: 0.0) -> Logic: Blocked
By watching the debugger as you press keys, you can identify if an input is being swallowed by an unintended mapping or if a modifier is silently killing your signal.
Key Takeaway: The Enhanced Input Debugger visualizes the raw-to-processed flow, allowing you to see exactly which modifier or priority layer is preventing your input from reaching its destination.