Bottom Line Up Front (BLUF): Your controller is detected as Player 2 because the Microsoft XInput API is restricted to four fixed device indices (User Index 0 through 3), and an existing device—such as a phantom virtual gamepad, a dual-registered Steam Input node, or your physical DirectInput gamepad itself—has already claimed Slot 0 (Player 1). When you launch a game, the engine assigns your active controller to Slot 1 (Player 2). To restore Player 1 control immediately: (1) Cloak your physical gamepad with Nefarius HidHide so games only see XOutput’s virtual Xbox 360 device; (2) In Steam, right-click your game, select Properties > Controller, and set Steam Input to “Disable” to eliminate duplicate API wrapping; and (3) Open joy.cpl to verify that only one active gamepad is enumerated in Windows.
Why PC Games Assign Your Gamepad to Player 2 — The XInput Slot Architecture
To understand why your controller suddenly controls the second player in games like Rocket League, FIFA / EA Sports FC, Street Fighter 6, or It Takes Two, you must understand how the Microsoft Windows XInput subsystem manages connected hardware.
Unlike DirectInput (which allows an arbitrary number of controllers identified by global unique identifiers / GUIDs), XInput is hard-coded to support exactly four player slots, indexed numerically from 0 to 3:
Slot Index 1 –> Player 2 (Top-Right LED)
Slot Index 2 –> Player 3 (Bottom-Left LED)
Slot Index 3 –> Player 4 (Bottom-Right LED)
When a game initializes, it executes an input polling loop querying the Windows XInput API:
for (DWORD i = 0; i < XUSER_MAX_COUNT; i++) {
XINPUT_STATE state;
dwResult = XInputGetState(i, &state);
if (dwResult == ERROR_SUCCESS) {
// First active controller found claims Player 1!
AssignToPlayer(i);
}
}
Windows allocates these slots strictly on a first-come, first-served basis during Plug and Play (PnP) hardware enumeration. If an inactive virtual device driver, a background Steam Input hook, or your uncloaked physical DirectInput controller is enumerated by the OS first, it claims dwUserIndex = 0. When XOutput or your physical gamepad comes online moments later, Windows assigns it to dwUserIndex = 1 (Player 2). The game listens exclusively to Player 1 for main menu navigation, rendering your controller completely unresponsive.
Quick Diagnostic — Identifying Phantom Controllers in Windows joy.cpl
Before modifying system settings or reinstalling drivers, perform this 30-second hardware audit to identify exactly which devices are occupying Windows controller slots:
- Press Win + R on your keyboard, type
joy.cpl, and press Enter. - Examine the Installed game controllers list.
- Count the entries: If you only have one physical gamepad plugged into your PC, you should ideally see only one entry (or two if XOutput emulation is currently active: your physical DirectInput gamepad and the virtual Xbox 360 controller).
- Isolate Ghost Controllers:
- If you see gamepads listed when nothing is plugged into your USB ports, you have ghost virtual devices created by uninstalled software (such as vJoy, older ScpToolkit, DS4Windows, or JoyShockMapper).
- Select each controller, click Properties, and move your physical thumbsticks. The entry that responds to your physical touch is your active hardware. Any entry that sits completely dead is a phantom slot squatter.
| Enumerated Device in joy.cpl | Probable Root Cause | Impact on Player Slot | Target Action |
|---|---|---|---|
| Generic USB Joystick + Controller (XBOX 360 For Windows) | XOutput is emulating XInput, but the physical DirectInput pad is visible. | Physical pad claims Slot 0; virtual pad gets pushed to Slot 1 (Player 2). | Cloak physical device using HidHide. |
| vJoy Device / Virtual Joystick | Leftover flight simulator or remapping driver in background. | vJoy claims Slot 0 at Windows startup. | Disable or uninstall vJoy in Device Manager. |
| Duplicate Xbox 360 Controllers | Steam Input and Windows GameInput both wrapping the same pad. | Steam virtual controller and OS driver battle for Slot 0 and 1. | Disable Steam Input for the specific game. |
| Wireless Controller (Bluetooth) + Wired USB | Gamepad paired via Bluetooth while simultaneously connected via USB cable. | Each interface registers as an independent controller. | Disconnect Bluetooth pairing or unplug cable. |
Fix 1 — Cloak Physical DirectInput Devices with HidHide to Prevent Slot Stealing
This is the single most common cause of the Player 2 glitch for users running XOutput. When you use XOutput, your system has two concurrent controller devices:
- Your physical DirectInput gamepad (connected via USB or Bluetooth).
- The virtual Microsoft Xbox 360 controller spawned by ViGEmBus.
If the game engine initializes DirectInput first, your physical gamepad takes Player 1. However, because modern games only map buttons using the XInput standard, the game waits for XInput signals from Player 1—which never arrive because XOutput is sending XInput signals to Player 2! The result is total input failure or involuntary split-screen co-op.
XOutput.exe. Because games cannot see the physical gamepad, the virtual Xbox 360 controller becomes the first and only controller enumerated, guaranteeing it receives Slot 0 (Player 1).
- Download and install the latest signed release of HidHide from the official Nefarius repository.
- Launch HidHide Configuration Client from your Windows Start Menu.
- Under the Applications tab, click + and browse to your
XOutput.exebinary to whitelist it. - Under the Devices tab, check the box next to your physical gamepad (look for its USB vendor ID / gaming device name) and ensure the red padlock icon is locked.
- Check Enable device hiding at the bottom. Reopen
joy.cpl: your physical controller disappears, and only the virtual Xbox 360 controller remains, firmly assigned to Player 1.
Fix 2 — Resolve Steam Input and GameInput Double-Registration Conflicts
On Windows 10 and Windows 11 (especially version 24H2), Microsoft’s native GameInput Service and Valve’s Steam Input subsystem frequently conflict. When Steam Input is active, Steam hooks into your physical gamepad and exposes a virtual Steam Virtual Gamepad to the game. If the game engine already has native XInput support, it may detect both the raw controller and the Steam virtual controller simultaneously.
- Open the Steam desktop client.
- Navigate to your Library and right-click the problematic game > select Properties.
- Click the Controller tab on the left sidebar.
- Under Override for [Game Name], open the dropdown menu and select Disable Steam Input.
- Restart the game. The game will now bypass Steam’s virtual layer and read your controller directly through XInput in Slot 0.
If you rely on XOutput to convert non-standard gamepads, disabling Steam Input is mandatory. Allowing Steam Input to wrap a ViGEmBus virtual controller creates an unnecessary layer of emulation that frequently shifts the controller index from Slot 0 to Slot 1.
Fix 3 — Purge Ghost Virtual Controllers and Orphaned ViGEmBus Devices
If you previously installed emulator software such as DS4Windows, reWASD, ScpToolkit, or JoyShockMapper and later uninstalled them, their virtual device nodes often remain cached inside the Windows Plug and Play (PnP) registry. Windows treats these disconnected devices as “present but offline”, reserving low-indexed XInput slots for them.
- Press Win + X and select Device Manager.
- In the top menu bar, click View > Show hidden devices. This makes inactive and disconnected hardware visible (rendered with greyed-out translucent icons).
- Expand Human Interface Devices and Xbox 360 Peripherals (or Universal Serial Bus devices).
- Look for greyed-out entries named:
Virtual Xbox 360 ControllerNefarius ViGEm Virtual Bus Enumerator(if duplicate)HID-compliant game controller(ghost duplicates)vJoy Device
- Right-click each stale ghost entry and select Uninstall device. Check “Attempt to remove the driver for this device” only if you no longer use that third-party software.
- Restart your computer. Upon reboot, Windows rebuilds the active controller enumeration table cleanly from Slot 0.
Fix 4 — Disconnect Dual-Mode Wireless and Stale Bluetooth Pairings
Many popular modern controllers (such as 8BitDo Ultimate, DualSense, and third-party Switch Pro controllers) support both 2.4GHz wireless USB dongles and Bluetooth connectivity. A frequent user error is leaving the 2.4GHz USB receiver plugged into a PC back-panel port while simultaneously pairing the controller to Windows via onboard Bluetooth.
To eliminate this conflict:
- Choose One Connection Method: If using a USB cable, unplug wireless dongles and turn off Bluetooth on the controller.
- Purge Stale Bluetooth Profiles: Open Windows Settings (Win + I) > Bluetooth & devices > Devices. Locate any old or offline gamepad entries, click the three dots, and select Remove device. Re-pair your controller only when necessary.
Fix 5 — Reorder USB Root Hub Device Enumeration Priority
In multi-device PC setups—especially systems with analog flight sticks, racing pedals, gaming keypads (like Razer Tartarus), or keyboard firmware that emulates gamepad analog inputs (like Wooting or Corsair analog keyboards)—Windows may assign Slot 0 to the non-gamepad peripheral during system boot.
- Unplug All Input Peripherals: Disconnect all USB controllers, flight sticks, racing wheels, and extra USB hubs. Leave only your primary keyboard and mouse plugged in.
- Connect to a Direct Motherboard Port: Plug your primary gaming controller directly into a rear USB port attached directly to the motherboard chipset (avoid unpowered front-panel case ports or external USB pass-through hubs).
- Launch XOutput and Start Emulation: Start XOutput before plugging in secondary peripherals. This ensures ViGEmBus claims the first vacant XInput slot (Slot 0).
- Plug in Secondary Devices: Reconnect flight throttles or secondary gamepads only after your primary controller has successfully acquired Slot 0.
Fix 6 — Configure Game-Specific In-Engine Controller Slot Overrides
Certain modern PC titles recognize that Windows controller slot assignment can be unpredictable and include manual controller reassignment menus within their settings:
| Game Title | In-Game Setting Location | Player Slot Fix Procedure |
|---|---|---|
| Rocket League | Options > Gameplay / Controls | Disable “Split Screen Guest”. If Player 2 joins automatically upon pressing Start, disable Steam Input and cloak physical device with HidHide. |
| EA Sports FC / FIFA | Customize > Settings > Select Sides | Move controller icon manually to the left/right team side. If two icons appear for one controller, enable HidHide to eliminate the DirectInput ghost. |
| Street Fighter 6 / Tekken 8 | Options > Controller Settings > Controller Allocation | Set Controller 1 manually to “Assigned to Player 1” rather than “Automatic Detection”. |
| RetroArch / Emulators | Settings > Input > Port 1 Controls | Select Device Index explicitly and set it to XInput Controller (Player 1) instead of leaving it on Any / Default. |
Frequently Asked Questions About Controller Slot Assignment and Player 2 Glitches
Why does my controller only work as Player 2 in Rocket League?
Rocket League reads both raw DirectInput and modern XInput. When using an emulator like XOutput without HidHide, the game registers your physical pad as Player 1 and the emulated Xbox 360 pad as Player 2. Pressing any button prompts the game to join local split-screen co-op. Installing HidHide to hide the physical DirectInput pad completely resolves this issue.
Can I force Windows to reorder XInput controller slots?
Windows does not have a native “reorder controller slots” GUI. XInput slots are assigned chronologically based on when devices are connected or enumerated by the PnP manager. The simplest way to reorder them is to unplug all gamepads, open joy.cpl to confirm the list is empty, and reconnect your primary gamepad first so it claims Slot 0.
Does XOutput support changing the virtual controller slot?
XOutput delegates virtual controller creation to the ViGEmBus kernel driver. ViGEmBus requests the lowest available XInput user index from Windows. If Slot 0 is vacant, ViGEmBus always takes Slot 0. If your XOutput controller lands in Slot 1 or Slot 2, an existing device is already occupying the lower slot on your system.
Why does disabling Steam Input fix the Player 2 problem?
Steam Input creates an additional virtual controller abstraction layer. For games that already support XInput natively, Steam Input causes duplicate device detection: the game sees both the raw device and the Steam virtual device. Disabling Steam Input removes the duplicate layer, leaving only the primary controller in Slot 0.
Can analog keyboards like Wooting cause controllers to become Player 2?
Yes. Analog gaming keyboards with Hall-effect switches often feature gamepad emulation modes to allow variable movement speed. Windows can detect the keyboard as an XInput gamepad and assign it to Slot 0 during boot. Disable controller emulation in your keyboard’s configuration software (e.g., Wootility) if you use a standalone gamepad.
