briankendall/devreorder

I must be doing something wrong

AnsgarTOdinson opened this issue · 18 comments

For the life of me I cant get this to work. I have essentially 2 controllers plugged into the system. I have a razer huntsman v2 analog and a xbox one controller. I am trying to avoid disabling the analog function of my keybaord and still have games like the original FF7 and remake of Secret of Mana recognize the xbox one controller. Unfortunately, no combination of configs seems to have worked. Here are my devices and how I have my ini configured.

Screenshot 2022-06-25 084927

Screenshot 2022-06-25 085020

Just to add:

I have tried both the 64x and 86x versions of the DLL.
I have tried taking out the spaces in front.
I have tried using the name of the devices
I have tried using both the name and the string of numbers/letters
I have tried placing the DLL in the program data folder

All I really need it to do, is ignore the Razer Xbox 360 controller for the games I am trying to get this to work for.

Update:

I definitely was able to get this thing working. I experimented with hiding my xbox one controller and was able to do that just fine. The issue is that it doesnt seem to be able to hide the controller device registered by the Razer keyboard. It also doesnt seem to be able to prioritize the Xbox one controller above it. Im afraid that perhaps there is something about this keyboard that just refuses to behave with this fix.

Perhaps there is something I have to ignore in the processes to force this to work?

I need some more information to be able to help.

Did you install devreorder system-wide? If not, I recommend doing so since some apps don't work with dinput8.dll sitting next to their executable.

If you installed it system-wide, what controllers do you see listed in the Windows game controller settings? (aka joy.cpl) In case you need it, here are some handy instructions from Logitech that explain how to open it.

The game controller settings is good for testing how well devreorder is working when installed system-wide, since it definitely uses DirectInput to list controllers and should only show the controllers you have not hidden, and in the order you picked. If it doesn't reflect your settings in devreorder.ini, then either devreorder is installed incorrectly or there's an error in devreorder.ini (although I didn't see one in the screeshot you included).

Installing system wide means placing the INI inside the ProgramData folder? If so, then yes I have done that. Does the Dll also need to go somewhere special? I ddint see instructions for that.

As far as what controllers I see, I have the Huntsman V2 Joystick, the Xbox One Controller, and the one that cuases the issue, the Razer Xbox 360 controller.

If I disable the Razer 360 controller in my devices, my Xbox one controller is recognized. If it is enabled not so much. Further, I can get the config to work and ignore my xbox one controller just as an experiment, so I know it is technically working, but it refuses to disable the Razer Xbox 360 controller

Installing system wide means placing the INI inside the ProgramData folder? If so, then yes I have done that.

Nope, that's not it. Installing system-wide means copying devreorder's versions of dinput8.dll into the Windows directory, being sure to carefully follow the directions in the "Apply to your entire system" in devreorder's read me / main github page.

If you don't want to install system-wide, which games are you trying to run with devreorder?

Offhand, final fantasy 7 (the original) and secret of mana remake.

On the per game basis, as I said before it is capable of hiding my xbox one controller, but doesnt seem to be able to push it up to the primary controller even if I hide all other controllers.

Ill report back after trying system wide

Alright, system wide seemed to have no effect. I also got this error:

Screenshot 2022-06-25 120953

OK, nevermind, I just made a mistake in renaming. Yes, I got it working for system wide. Interestingly enough it hid the Xbox 360 controller. Unfortunately it still is ignoring my xbox one controller in those games... Which means there must be something deeper that this keyboard is doing to the system. I really dont understand. If I disable xbox 360 device, everything works. But merely hiding it like this doesnt.

I can't say but it's possible those games don't use DirectInput for controller input, which would mean that devreorder would have no effect on them. It's hard to say without playing around with it myself. (Though the original Final Fantasy 7 is of course a much older game, so it depends on which version of the PC port you're playing.)

Another thing you can try, though this isn't as nice of a solution as devreorder working as intended, is to disconnect and reconnect your devices in the reverse order you want them to be in. Generally when a device is connected, Windows shunts it to the top of the list, so if you connect things in reverse order you end up with the order you actually want. (It's only good though until Windows reboots or one of your devices disconnects and reconnects.)

As I said, it does work with those games. I can unplug the keyboad and hide my or unhide my xbox one controller and the games will recognize or not accordingly.

Or I can do the same thing with that 360 controller device from my keyboard disabled in the device manager.

But if that keyboard device is enabled, nothing seems to be able to stop it from taking over as the primary controller.

Thank you for all your help btw. I think at this point its down to something Razer has caused with however they designed these drivers and such.

It is strange that having the keyboard connected always causes it to be the first player. You're not the first person that's had some trouble with it and tried to use devreorder to fix it, actually. Check out #42 since it might have some more info for you. It looks like for that user, reconnecting their devices in reverse order fixed it, at least temporarily.

Yeah, they seem to be describing the exact same issue and the exact same keyboard. What a pain. Almost makes me wonder if this keyboard was worth it. Too bad most games wont accept a generic joystick input, because the keybaord emulates that as well.

I found a solution for people who come looking to you in the future.

First, disable the Razer XBOX 360 controller in the device manager.
Then, download Xbox 360 controller emulator here: https://www.x360ce.com/
The Huntman also registers a joystick on the system, so map the joystick controls to the xbox360 emulator.
The virtual 360 controller this program registers plays nice with the system and works with your reordering program

I'm happy to hear you found a solution! It's interesting too, because in the past people have had trouble combining x360ce with devreorder. I've had issues reported where games that use both will crash. (Looking at x360ce's website, I see that version 4 is using a new and better technique for creating a virtual 360 controller, so that must be why it works now. That's great.)

Also, I can't understand why x360ce adding a new XInput controller (the newer, shinier method for controller input in Windows that was supposed to supplant DirectInput) would suddenly get things working, since it shouldn't have any effect on DirectInput. But I certainly won't argue with the results!

Like you said, hopefully other people with a Razer can make use of this technique to fix their games in the future.

@AnsgarTOdinson Have you tried using this? https://github.com/ViGEm/HidHide

That may be a better way to prevent games from detecting your Razer, and may just be a generally better way of hiding controllers than using devreorder!

Ill give it a try this afternoon

Sadly @briankendall, it didnt work. As soon as that virtual Razer Xbox 360 device is enabled, it completely takes over. I even confirmed that the program is working, the device is even invisible when viewing windows controller options. But somehow older games just refuse to recognize ANY other gamepad device while that device is active in the device manager.

However Razer built their driver, it takes some kind of deep control in the system.