BetterJoy Double Input Fix: One Controller, Seen Twice

Your character moves twice for every stick push, menus scroll two entries at a time, or the camera drifts on its own. This is the double input problem, and with BetterJoy it has a precise cause: Windows and your game can see two controllers at once — the physical Switch controller (raw HID) and the virtual Xbox 360 or DualShock 4 controller that BetterJoy creates through ViGEmBus. Any game that listens to both will obey both. Issue #455 reports exactly this with a Pro Controller and Joy-Cons in Steam, drift included; issue #1009 describes a controller being read as two separate devices, with hiding the physical one as the accepted fix. Here is how to do that hiding correctly in 2026.

Step 0: Confirm it is double input, not drift

Open joy.cpl (press Win+R, type joy.cpl) with BetterJoy running. If you see both the real controller and an Xbox 360/DS4 entry, and both respond to the same stick, you have double exposure. If only the virtual controller responds oddly, your problem is elsewhere — check the troubleshooting hub instead of changing drivers.

The quick fixes (try these first)

  • In Steam games: pick one master. Either let Steam Input handle the physical controller with BetterJoy closed, or use BetterJoy’s virtual controller and disable Steam Input for that game (right-click the game → Properties → Controller → Disable Steam Input). Steam reading the raw pad while BetterJoy also feeds it is the #455 scenario.
  • For gyro-only use: BetterJoy can run only its motion server. Turn off XInput emulation in BetterJoy and let your emulator take buttons from its native input while motion arrives over the DSU connection — with no virtual gamepad created, there is nothing to double.
  • In emulators: assign the input profile to the virtual XInput device only, and clear any profile bound to the physical controller.

If a game has no such settings — many non-Steam games don’t — you need the real fix: make the physical controller invisible to everything except BetterJoy.

The modern fix: hide the physical controller with HidHide

HidHide (by nefarius, current version 1.5.230) is the maintained tool for exactly this job: it hides selected HID devices from all applications except the ones you whitelist. It is a separate download from the same author’s project pages — it is not part of the BetterJoy v7.1 package on our download page, which still bundles the older HIDGuardian instead.

  1. Remove HIDGuardian first if you ever installed it (see the warning below), then reboot.
  2. Install HidHide and reboot when asked.
  3. Open the HidHide Configuration Client. On the Applications tab, add BetterJoyForCemu.exe — this whitelists BetterJoy so it can still see the physical controller.
  4. On the Devices tab, tick your Switch Pro Controller or Joy-Cons.
  5. Tick Enable device hiding at the bottom.
  6. Restart BetterJoy and check joy.cpl again: only the virtual controller should respond in games now, while BetterJoy still lists the real one.

This is the same approach the community converged on in #1009: hide the native device, keep only the XInput output.

The hard rule: HidHide and HIDGuardian must never coexist

Nefarius’s own setup guide states it in capitals: HidHide and HidGuardian MUST NOT be together on the same system. HIDGuardian is the 2016–2018 research driver that BetterJoy v7.1 installs from its Drivers\HIDGuardian folder; it has been discontinued, and HidHide is its direct successor. If your double-input fix “made things worse” or the controller vanished entirely, a leftover HIDGuardian is the prime suspect. Removal has a safe order — release the devices from the blacklist first, then uninstall, then reboot — and our HIDGuardian recovery guide walks through it. Never delete driver files by hand; mishandled removal is how people end up with a controller no program can see.

Side effects to expect

While hiding is enabled, non-whitelisted programs will not see the physical controller at all — that is the point, but it surprises people when the pad “disappears” from another emulator or from Steam. Whitelist only the programs that should see the raw controller (BetterJoy itself); whitelisting a game defeats the fix for that game. If instead the console starts filling with Duplicate timestamp enqueued, that is the related two-readers problem on the motion side — see our guide to that message. And if you later touch the legacy toggles mentioned in the config file guide (UseHIDG, PurgeWhitelist), note your original values first: they belong to the old HIDGuardian era and interact with everything on this page.

Keeping the fix in place

Two habits keep double input from creeping back. First, after any HidHide update or reinstall, re-open the Configuration Client and confirm your device is still ticked and hiding is still enabled — updates can reset the list, and the symptom returns silently. Second, when you deliberately un-tick device hiding (say, to use the pad somewhere that needs the raw controller), remember that every game can see both devices again from that moment; re-enable hiding before your next BetterJoy session rather than debugging the same drift a second time.

FAQ

Why doesn’t BetterJoy hide the controller automatically?

Version 7.1 was built when HIDGuardian was the standard layer, and it does use that layer when installed — but HIDGuardian is discontinued and conflicts with modern HidHide installs, which is why the maintained route today is the separate HidHide setup described above.

Does hiding affect Bluetooth pairing?

No. Pairing happens at the Windows Bluetooth level, below where HidHide works. The controller still connects normally; it is only hidden from applications that are not whitelisted.

Can I hide the controller for one game but not others?

HidHide’s hiding is system-wide once enabled — the whitelist is per-application for who may see the device. For a single Steam title, the per-game Steam Input toggle is the finer tool; use HidHide when several programs need the same treatment.

Similar Posts