Devreorder
Jump to navigation
Jump to search
What is Devreorder
From the GitHub Homepage:
- A utility for reordering and hiding controllers for games using DirectInput 8. It's implemented using a wrapper DLL and can be used to change the behavior of a single game or your entire system.
- The main use of this tool is to bring some sanity to older DirectInput games that rely on the enumeration order of devices to determine the controller order in game (even though they are not supposed to do that).
- Windows XP, and especially starting with Windows 8, the enumeration order of controllers is quite arbitrary and will change after rebooting Windows or unplugging and replugging in your devices.
- This can wreck havoc on games where you have carefully set up controller bindings for players 1-4, only to find that they are totally ruined the next time you boot up Windows.
Ctrlr-Cyclr - a gui for devreorder
- Ctrlr-Cyclr - a gui for devreorder - Homepage
Resources
- GitHub Homepage [Website]
- DEVREORDER overview & troubleshooting... Set binary specific Joystick or Gamepad order in Windows [Video] - Arcade Time Machine (2025)
- GTR - FIA GT Racing Game Windows Instructions + GTR 1 Reborn mod & further improvements + DevReOrder [Video] - Spinelli (2025) - This video is about GTR1 but contains a segment (6m43s) that is quite helpful to getting devreorder and setting it up
How to apply to single game or program
- Based on the README.md section How to use: Apply to single game or program
Devreorder – Applying to a Single Game or Program (Point-Form Instructions)
- Locate the release files (either in the downloaded ZIP or in the cloned repository folder).
- Inside the release folder you will find two subfolders: x86 and x64.
- Each subfolder contains a file named dinput8.dll.
- Determine whether your game/program is 32-bit or 64-bit.
- Copy dinput8.dll from the matching folder (x86 for 32-bit games, x64 for 64-bit games) into the same folder as the game's .exe file.
- Also copy the file devreorder.ini into the same folder as the game's .exe.
Editing devreorder.ini:
- Open devreorder.ini with a text editor.
- In the [order] section, list the controllers (by exact name) in the exact order you want them to appear to the game.
- Optionally, hide controllers using one of these methods:
- Add unwanted controllers to the [hidden] section, OR
- Add only the controllers you want to keep to the [visible] section.
- Controllers listed in [order] will always appear first, sorted in the order you specify.
- Controllers with identical names are kept together but retain their original relative order unless separated by GUID or instance ID.
Getting exact controller names:
- Use either method:
1. Press Win+R → type joy.cpl → Enter (opens Game Controllers control panel).
2. Run DeviceLister.exe (included) – easier for copying text.
- Names must match exactly, including spaces, punctuation, and capitalization.
Using GUIDs or Instance IDs (for duplicate names or unreliable name matching):
- Run DeviceLister.exe to see GUIDs and device instance IDs.
- In devreorder.ini you may use:
- GUIDs enclosed in curly braces, e.g. {01234567-89ab-cdef-0123-456789abcdef}
- Device instance IDs enclosed in angle brackets, e.g. <HID\HIDCLASSOFx86\something&12345>
- These can be used in [order], [hidden], or [visible] sections instead of names.
- To identify which GUID/ID belongs to which physical device:
- Compare the order in DeviceLister with the order in joy.cpl.
- Press buttons on the physical controller while watching joy.cpl to see which entry reacts.
Important notes about GUIDs and Instance IDs:
- GUIDs are unique per Windows installation (not transferable to other PCs).
- GUIDs may differ between user accounts or be duplicated due to Windows bugs.
- Device instance IDs can change if you plug a USB device into a different port or with some wireless devices.
Disabling devreorder for specific programs (system-wide installs only):
- Add the executable filename (including .exe extension) to the [ignored processes] section in devreorder.ini.
If devreorder has no effect on the game:
- The game probably initializes DirectInput via the COM interface instead of dinput8.dll.
- The simple DLL method will not work.
- You must use the Registry changes method instead (see the separate Registry section in the original documentation).
DeviceLister error fix:
- If DeviceLister.exe shows “System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.DirectX.DirectInput'”:
- Install the DirectX 9 End-User Runtime:
https://www.microsoft.com/en-us/download/details.aspx?id=8109