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:
- Buttons fire twice, or menus skip an entry with every press.
- Your deadzone, curve or remap seems to do nothing, because the game is reading the untouched controller.
- It works in one game and not in another, because each game picks its controller in its own way.
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.
- Plug in the controller.
- Start your remapping tool and connect it, so the controller is hidden.
- 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:
- Check the order again (step 3) — this is the cause more often than not.
- Try the other virtual controller type. Most games accept an Xbox 360 controller; some only react to a DualShock 4, or show the right button prompts only with one. Switch, reconnect, then restart the game.
- Look in the game's own settings for a controller or input device option; some games need it set before they read a pad at all.
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
- The installer offers HidHide 1.5.230 when it is missing, and asks for a restart only after a fresh install.
- Coda configures HidHide itself when you connect. Its start screen shows the result: CODA OUTPUT · EXCLUSIVE when games see only Coda's controller, or NOT EXCLUSIVE · CHECK SYSTEM when they can still see the real one. One click opens System → Controller visibility, which names the cause — HidHide missing, or a restart still due after installing it — and the action that fixes it.
- Xbox controllers are hidden through HidHide as well. Without it, Coda asks before removing the controller's device from Windows while connected; it comes back the next time you plug it in. Do not disable the Xbox controller you play on in Device Manager — Coda reads it through that device.
- After you disconnect, the controller stays hidden (STILL EXCLUSIVE TO CODA) until you quit Coda or press System → Make controller visible again. If your controller is missing in other programs after Coda has closed, check that Keep controller hidden after Coda exits is off — it is off unless you turned it on.
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.