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
| XInput | DirectInput | |
|---|---|---|
| Layout | Fixed Xbox layout | Defined by the device |
| Number of devices | Up to four controllers | Many devices at once |
| Triggers | Two separate analog axes | Device-dependent (shared axis on Xbox 360-style pads) |
| Force feedback | Two rumble motors | Full effects, used by wheels |
| Typical devices | Xbox and Xbox-compatible gamepads | Wheels, pedals, joysticks, HOTAS, generic pads |
| Typical games | Modern action games, console ports | Racing 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.
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
- Check that Windows sees the device: press Win + R, type
joy.cpland test the inputs in Properties. - 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.
- If the device has a mode switch, try the Xbox or PC mode that matches what the game expects.
- For games on Steam, enable Steam Input for non-Xbox controllers, or disable it per game if you see double inputs.
- Close other remappers and overlays, then reconnect the controller.
- For wheels and HOTAS, install the manufacturer's driver and check that the device is listed correctly. See racing wheel not detected on PC.
- 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.