CodaCoda

Double controller input on PC: why games see two controllers, and how to fix it

Updated

Short answer

Double input happens when a game sees two controllers: your real one and the virtual one a remapping tool creates. Every press then arrives twice, or the game reads the unmodified controller and ignores your settings. The fix is to hide the real controller from games while the tool can still read it, which is what HidHide, a free driver by Nefarius, does — and it only works if the controller is hidden before the game opens it. Coda's installer sets HidHide up, and Coda's start screen says whether games can see only its output.

Why games see two controllers

A remapping tool cannot change what your physical controller tells Windows. So every tool that changes controller input — DS4Windows, reWASD, Coda and the rest — reads the real controller, processes the input and presents the result as a second, virtual controller. The game is meant to use that one. Unless something stops it, though, the game can open the real controller too, because it is still plugged in.

What that looks like in a game:

Step 1: count the controllers

Before changing anything, find out how many controllers Windows is presenting. Open the free gamepad tester with your remapping tool running and press a button: it lists every controller the PC exposes. With hiding working, you see one — the virtual controller. Two means the real one is visible. More than two means something else is adding a controller: a second remapping tool, Steam, or a vendor app that came with the controller.

Step 2: hide the real controller with HidHide

HidHide is a filter driver. Devices on its list become invisible to every program on the PC except the ones you allow — so the remapping tool can still read the controller while games cannot find it. Some tools set it up themselves; with others you add the controller and the tool in the HidHide Configuration Client.

After a fresh install of HidHide, restart Windows. Until then the driver may not be active, and the controller stays visible however it is configured.

Step 3: get the order right

This is the step most fixes miss. HidHide stops a program from opening the controller. It cannot take the controller away from a program that already has it open — a game, a launcher or an anti-cheat service that started before the controller was hidden keeps seeing it.

  1. Plug in the controller.
  2. Start your remapping tool and connect it, so the controller is hidden.
  3. Then start the game.

If the game was already running, closing only the game is often not enough, because its launcher keeps running in the background. Close the launcher as well, then start again in the order above.

Step 4: switch off the other layers

Steam Input

For games launched through Steam, Steam Input can read the controller and present one of its own — according to Valve's documentation, it does so inside the game's process, where a driver like HidHide does not reach. If you use another tool, turn Steam Input off for that game: right-click the game in your Steam library → Properties → Controller → Disable Steam Input. It can also be switched off for a controller type in Steam's controller settings. For games that are not launched through Steam, Steam is not involved.

A second remapping tool or a vendor app

Two remapping tools reading one controller each create a virtual controller, and neither knows about the other. Run one at a time. The same goes for the companion apps some controllers install, which can hold the controller or add a device of their own.

A second physical controller

A tool hides the controller it reads, not every controller on the PC. A second pad that is plugged in but not used is still visible to games; unplug it.

When the game ignores the virtual controller

If the tester shows the virtual controller but the game does not react to it:

When the virtual controller does not appear at all

Every tool built on ViGEmBus — DS4Windows, x360ce, Coda and others — stops creating its virtual controller when that driver stops responding. In Coda's support tickets this has mostly followed a Windows update, or another virtual-controller tool holding the driver. Close the other tools, reinstall ViGEmBus 1.22.0, and restart Windows: without the restart the broken driver stays loaded. The ViGEmBus guide explains what the driver is and how to check it.

How Coda handles it

Coda's virtual controller is an Xbox 360 or a DualShock 4, set under System → Output; the default, Automatic, picks Xbox 360 for a PlayStation controller and DualShock 4 for an Xbox controller, so a game never sees two Xbox pads.

Coda for Windows

One controller, the one you tuned.

Coda hides your physical controller with HidHide and shows its state on the start screen, so games see only the virtual controller with your curves, deadzones and bindings. Windows 10 and 11.

Sources

  1. Nefarius — HidHide documentation
  2. HidHide on GitHub
  3. Steamworks — Steam Input gamepad emulation
  4. Nefarius — ViGEmBus end of life

Related