Skip to content

Commit

Permalink
Update README and release directory
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Kendall committed Jan 25, 2020
1 parent f8385c5 commit e992204
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 11 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,18 @@ Tested in Windows 8.1, but should in theory work in any version of Windows. Note

In the release zip file, or in the release directory if you cloned the repo, there is an x86 and x64 folder, each containing dinput8.dll. Depending on whether the game is 32-bit or 64-bit copy dinput8.dll in x86 or x64 respectively to the same folder containing the game's .exe file.

Also copy devreorder.ini and edit it so that its `[order]` section contains a list of controllers in the order that you want them to appear, and the `[hidden]` section contains a list of controllers you want to be hidden.
Also copy devreorder.ini and edit it so that its `[order]` section contains a list of controllers in the order that you want them to appear. You can also optionally decide to hide certain controllers by either adding all the controllers you want to be hidden to the `[hidden]` section, or adding all the controllers you _don't_ want to be hidden to the `[visible]` section.

Any controllers listed in the `[order]` section will always be sorted ahead of any controller not listed in this section. Controllers with the same name will be grouped together, though their relative other between each other will remain the same. You may also use the *instance GUID* of a particular device in case you need to change the order of devices that have the same name.

When specifying names, you need to have it match exactly as it appears in the Game Controllers control panel or the included DeviceLister program, matching any punctuation, spaces, and capital letters. To open the Game Controllers control panel, type Win+R, type joy.cpl into the dialog box that appears, and then press enter. It will list any controllers that you currently have connected to your system in the order that they will appear to most games that use DirectInput. The DeviceLister application can also be used for this, and allows selecting the text so that it can be copied and pasted, probably making it a better, more convenient option.

You can also use DeviceLister.exe to find the GUIDs of each of your connected devices. You can use a GUID instead of a device name in either the `[order]` or `[hidden]` section if you need to specify a specific controller when multiple controllers have the same name. GUIDs may also work better in cases where devreorder doesn't match a controller by name for some reason (such as a bug). The GUID must be enclosed in curly braces and match the format in DeviceLister.exe, e.g. `{01234567-89ab-cdef-0123-456789abcdef}` Unfortunately, when there's more than one device with the same name, DeviceLister currently doesn't have a convenient way of determining which listing corresponds to which physical device. However, the order it uses *should* be the same as in the Game Controllers control panel, and that can display which buttons on a particular device are pressed, so you can use that to help figure out which GUID corresponds with which device. (I hope to improve this situation in the future.)
You can also use DeviceLister.exe to find the GUIDs of each of your connected devices. You can use a GUID instead of a device name in the `[order]`, `[hidden]`, or `[visible]` sections if you need to specify a specific controller when multiple controllers have the same name. GUIDs may also work better in cases where devreorder doesn't match a controller by name for some reason (such as a bug). The GUID must be enclosed in curly braces and match the format in DeviceLister.exe, e.g. `{01234567-89ab-cdef-0123-456789abcdef}` Unfortunately, when there's more than one device with the same name, DeviceLister currently doesn't have a convenient way of determining which listing corresponds to which physical device. However, the order it uses *should* be the same as in the Game Controllers control panel, and that can display which buttons on a particular device are pressed, so you can use that to help figure out which GUID corresponds with which device. (I hope to improve this situation in the future.)

Please note that while these GUIDs are supposed to remain consistent for any one device, they are specific to a particular Windows installation and are therefore not transferable to another system. Also, people have reported that due to bugs in Windows, the GUIDs might be different between different user accounts. In that case you can specify all of the GUIDs that Windows reports for a particular device to ensure it's sorted or hidden consistently.

Finally, if you install devreorder system-wide, you can disable it for specific applications by adding their executable's filename to the `[ignored processes]` section. Be sure to include the file's extension too (which is usually `.exe`).

**NOTE:** This method of using devreorder will not work for games that initialize DirectInput via the COM interface. If you follow these directions to apply devreorder to a single game and it is not having any effect, it is likely that the game is accessing the DirectInput COM interface. In that case, you will need to follow the directions in the [Apply to your entire system](#apply-to-your-entire-system) section.

**NOTE #2:** If you get an error when running DeviceLister.exe that says something like `System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.DirectX.DirectInput'` then you probably need to install the DirectX 9 runtime. [Here's a link to Microsoft's installer.](https://www.microsoft.com/en-us/download/details.aspx?id=8109)
Expand Down
17 changes: 8 additions & 9 deletions release/devreorder.ini
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,22 @@
; {01234567-89ab-cdef-0123-456789abcdef}

[visible]
; In this section, write the names or GUIDs of the
; controllers that you want to be the only ones that are
; visible. If this section is left blank, then it will have
; no effect and only the controllers in the [hidden] section
; will be invisible. Otherwise, any controller not listed in
; this section will be invisible. (This does not affect
; keyboards, mice, and other pointing devices.)
; In this section, write the names or GUIDs of the controllers
; that you want to be the only controllers which are visible.
; If this section is not empty, then all controllers not listed
; in it will be hidden. If this section is left blank, then it
; will have no effect and only the controllers in the [hidden]
; section will be invisible. (This does not affect keyboards,
; mice, and other pointing devices.)
; Example:
; Controller (XBOX 360 For Windows)
; {01234567-89ab-cdef-0123-456789abcdef}

[ignored processes]
; In this section, write the names of processes you want
; devreorder to ignore so that the order and visibility of
; their controllers is not changed, as though devreorder is
; their controllers are not changed, as though devreorder is
; not installed. Matches are not case sensitive. Be sure to
; include the file extension as well.
; Example:
; steam.exe

Binary file modified release/x64/dinput8.dll
Binary file not shown.
Binary file modified release/x86/dinput8.dll
Binary file not shown.

2 comments on commit e992204

@4thkindenter
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am having an issue with Devreorder and MAME. I have a lot of devices connected so this program has been a life saver. The issue is #1 and #2 keep changing joyids in mame. Player 3,4,5 and my other devices have remained the same though. Any thoughts?

@briankendall
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@4thkindenter I'd be happy to help. Would you open an issue for this? A comment on a commit isn't exactly the appropriate place to discuss this, unless it somehow pertains to this exact commit.

Please sign in to comment.