Quick answer: Check four things in order: the Input Mapping Context has gamepad keys and is actually added; the game window has focus (and in PIE, the gamepad is routed to the right player); the input mode is not UI Only; and the controller is one Unreal reads natively. Unreal on Windows reads XInput (Xbox) controllers; PlayStation, Switch and generic pads need Steam Input or a plugin.
Keyboard and mouse work, the controller does nothing. Or it works in the menu but not in game, or in a packaged build but not in the editor. Gamepad problems in Unreal come from a short list of places, and showdebug enhancedinput tells you which one you are dealing with.
- First: see what Enhanced Input receives
- Fix 1: gamepad keys in the mapping context
- Fix 2: focus and PIE routing
- Fix 3: input mode and widget focus
- Fix 4: the controller itself
- Works in the editor, not in the packaged game (or the reverse)
- Controller problems you cannot reproduce
- Related problems
- Frequently asked questions
First: see what Enhanced Input receives
In PIE or a Development build, open the console and run showdebug enhancedinput. It lists the active mapping contexts and the current value of each action. Press buttons and move sticks:
- Nothing changes for any input: no mapping context is applied, or the game does not have input (focus, input mode).
- Keyboard actions change, gamepad ones do not: the mapping context has no gamepad keys, or the device is not being read.
- Values change but nothing happens: the action is bound in the wrong Blueprint or the triggers never fire. See the Enhanced Input posts linked below.
Fix 1: gamepad keys in the mapping context
Open your Input Mapping Context and make sure each action has gamepad mappings: Gamepad Left Thumbstick 2D-Axis for move, Gamepad Right Thumbstick 2D-Axis for look, face buttons for actions. Then check the context is added at runtime, typically in the PlayerController or Character after possession:
if (APlayerController* PC = Cast<APlayerController>(GetController()))
{
if (auto* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer()))
{
Subsystem->AddMappingContext(DefaultMappingContext, 0);
}
}
Mouse look usually has a Negate modifier on Y; a right stick usually does not. Copying mouse modifiers to the stick gives inverted look.
Fix 2: focus and PIE routing
- A window without focus does not receive gamepad input. Click into the PIE viewport after pressing Play.
- With multiple PIE clients, the gamepad goes to the first window by default. Editor Preferences > Level Editor > Play > Route Gamepad to Second Window changes that.
- Project Settings > Maps & Modes > Local Multiplayer > Skip Assigning Gamepad to Player 1, when enabled, gives the first gamepad to player 2. Turn it off for single-player games.
Fix 3: input mode and widget focus
After a menu calls Set Input Mode UI Only, gamepad input goes to the focused widget, not your pawn. When the menu closes, call Set Input Mode Game Only (or Game and UI) again. If the controller works in game but not in menus, that is a widget focus problem, which the UMG and Common UI posts below cover.
Fix 4: the controller itself
On Windows, Unreal reads XInput controllers (Xbox controllers and anything emulating one) out of the box. PlayStation, Switch Pro and generic USB controllers are not XInput devices:
- Through Steam: when the game is launched from Steam with Steam Input enabled for that controller type, Steam presents it to the game as an Xbox controller. This is how most Unreal games on Steam support PlayStation pads.
- Outside Steam: the engine's Windows RawInput plugin can read generic HID controllers with a per-device mapping, and recent UE5 versions include a GameInput plugin for Windows. Both need setup and testing per device.
- Player workarounds: tools such as DS4Windows emulate an Xbox controller.
To confirm Windows sees the controller at all, open joy.cpl (Set up USB game controllers).
Works in the editor, not in the packaged game (or the reverse)
- A packaged game launched from Steam may be receiving Steam Input's virtual controller, which changes what device the game sees and can cause double input if you also read the physical device.
- Mapping contexts added from an editor-only path or a level that is not the packaged default map never get applied.
- Plugin-based input (RawInput, GameInput) must be enabled for the packaged platform.
Controller problems you cannot reproduce
Controller issues depend on hardware you probably do not own. Bugnet's Unreal SDK lets players file a report from your UMG menu (which they can reach with a mouse when the pad fails) with a screenshot and their OS and hardware attached, and you can add the connected device names as report metadata.
Related problems
- Fix: Unreal Enhanced Input Action Not Firing on Gamepad
- Fix: Unreal UMG Widget Focus Not Working with Gamepad
- Fix: Unreal Common UI Widget Not Receiving Input
- Fix: XInput Controller Not Detected on Windows 11
Frequently asked questions
Why does my controller not work in Unreal Engine?
Usually the Input Mapping Context has no gamepad keys or is never added, the window lacks focus, the input mode is UI Only, or the controller is not an XInput device that Unreal reads natively.
Does Unreal Engine support PS5 or PS4 controllers on PC?
Not natively through XInput. Most games rely on Steam Input to present them as Xbox controllers, or use the RawInput or GameInput plugins with per-device setup.
How do I debug Enhanced Input gamepad bindings?
Run showdebug enhancedinput in the console to see the active mapping contexts and live action values while pressing buttons.
showdebug enhancedinput first. It tells you whether the problem is the mapping, the focus or the device.