Guides

XInput vs DirectInput: why a controller works in some games but not others

Your controller works perfectly in one game and is ignored by the next. The reason is usually the input API the game expects. Here's what XInput and DirectInput are and how to get both sides talking.

A common complaint on PC: a controller works in one game, does nothing in another and behaves strangely in a third. The hardware is usually fine. What differs is the way each game asks Windows for controller input. Two programming interfaces, XInput and DirectInput, still decide much of this, and knowing which one a game and a device use explains most of these mismatches.

What XInput is

XInput is Microsoft's API for Xbox-style controllers. It was introduced alongside the Xbox 360 controller for Windows and assumes one fixed layout: two analog sticks, two analog triggers, a D-pad, the face buttons A/B/X/Y, two bumpers, Back/View and Start/Menu, the two stick clicks and two rumble motors. It supports up to four controllers at once.

Because the layout never changes, XInput is easy for developers. A game knows that “A” is always in the same place and that the triggers are separate axes, so it can show the right button prompts and needs no setup screen. That simplicity is also its limit: anything that doesn't fit the Xbox layout, such as a steering wheel with many buttons, a throttle with extra axes or a hat switch on a flight stick, can't be described through XInput.

What DirectInput is

DirectInput is the older and more flexible API, part of DirectX since the 1990s. Instead of a fixed layout, a device tells Windows what it has: a number of axes, buttons and POV hats. The game then reads whatever is there and usually lets you assign functions in a binding menu. DirectInput also covers force feedback effects, which is why steering wheels rely on it.

Racing wheels, pedals, joysticks, HOTAS throttles, button boxes and many generic or older gamepads present themselves as DirectInput devices. When you open joy.cpl in Windows and see a list of axes and numbered buttons, you're looking at this kind of device description.

Why a controller works in one game but not another

Many modern PC games, especially console ports and action games, are built around XInput. They expect an Xbox-style controller and often ignore anything else. Racing and flight simulators go the other way: they enumerate DirectInput devices so you can combine a wheel, pedals, a shifter and a button box, or a stick, throttle and rudder pedals.

  • A generic DirectInput gamepad in an XInput-only game: the game simply doesn't see it, even though it works in joy.cpl.
  • A wheel or HOTAS in a game without DirectInput support: same result. Some devices offer an Xbox or PC mode, but a wheel presented as a gamepad loses most of what makes it useful.
  • An Xbox controller in an older DirectInput game: it usually works, because Windows also exposes XInput controllers to DirectInput. There is a known legacy quirk, though: read this way, an Xbox 360-style controller reports both triggers on one shared axis. Pressing both cancels them out, so a game can't tell the difference between “both pressed” and “neither pressed”.
  • PlayStation and Switch controllers: they aren't XInput devices. Games that support them natively work fine; others need a translation layer.

Windows also has newer input APIs, and many games use engine-level input libraries on top of them. In practice these still distinguish between gamepads and other kinds of controllers, so the same split often remains visible to you as a player.

Comparison

XInputDirectInput
LayoutFixed Xbox layoutDefined by the device
Number of devicesUp to four controllersMany devices at once
TriggersTwo separate analog axesDevice-dependent (shared axis on Xbox 360-style pads)
Force feedbackTwo rumble motorsFull effects, used by wheels
Typical devicesXbox and Xbox-compatible gamepadsWheels, pedals, joysticks, HOTAS, generic pads
Typical gamesModern action games, console portsRacing and flight sims, older games

How translation layers help

A translation layer reads your controller and presents a virtual controller of a different type to the game. The most widely used one is Steam Input. For games launched through Steam, it can make a PlayStation, Switch or generic controller appear as an Xbox-style controller, and lets you remap buttons per game. You can enable it per controller type in Steam's controller settings, and override it per game in the game's properties.

Third-party remapping and emulation tools exist as well, some of which install virtual controller drivers. They can be useful, but they add another layer that can cause double inputs, conflicts with Steam Input or problems after updates.

Official software first

Before installing a remapper, check whether the device has an Xbox/PC mode switch or a manufacturer app that adds XInput support. If you do use a third-party tool, download it only from its official project page, run one remapper at a time and uninstall it cleanly if you stop using it.

How browsers see controllers

Browsers don't expose XInput or DirectInput to web pages. They read controllers through the operating system and pass them on through the Gamepad API. When a browser recognizes a device as a regular gamepad, it reports the "standard" mapping: buttons and axes in a known order that matches the Xbox/PlayStation layout. For wheels, joysticks and unknown pads, it reports the raw layout instead, with buttons and axes in whatever order the device describes them.

This is why our gamepad tester may show a controller with a neat button diagram, or as a plain list of numbered buttons and axes. Both are normal. If a controller works in games but doesn't appear in the browser at all, follow our guide on controllers not detected in the browser.

Troubleshooting checklist

  1. Check that Windows sees the device: press Win + R, type joy.cpl and test the inputs in Properties.
  2. Find out what the game supports. The store page, settings menu or manual usually says whether it supports gamepads only or also wheels and joysticks.
  3. If the device has a mode switch, try the Xbox or PC mode that matches what the game expects.
  4. For games on Steam, enable Steam Input for non-Xbox controllers, or disable it per game if you see double inputs.
  5. Close other remappers and overlays, then reconnect the controller.
  6. For wheels and HOTAS, install the manufacturer's driver and check that the device is listed correctly. See racing wheel not detected on PC.
  7. If inputs are recognized but assigned wrongly, look for an in-game binding menu instead of relying on default mappings.

Is XInput better than DirectInput?

Neither is better overall. XInput is simpler and gives games a predictable gamepad layout. DirectInput is more flexible and is required for wheels, joysticks and force feedback effects. They suit different devices.

Why do my Xbox controller's triggers act as one axis in an old game?

The game reads the controller through DirectInput, where Xbox 360-style triggers share a single axis. Look for an XInput option in the game, a community patch from a trusted source, or use Steam Input bindings.

Does the browser care whether my controller is XInput or DirectInput?

Not directly. The browser presents both through the Gamepad API. The difference you'll notice is whether it reports the standard mapping or a raw list of buttons and axes.