Creating hotkey alternates for multiple controllers

Ok, I’m almost there. I’ve got both the controllers working properly, however they do not exchange control between one another correctly (ie-starting Retroarch with a different controller turned on). I have to go into user 1 binds to switch the controller. This ought to happen automatically.

I tried using a copy of retroarch.cfg from a fresh download of the program. No change.

The current relevant files.

retroarch.cfg: https://pastebin.com/uQFMJZ4B

XBox_One_Controller_Wireless_Adapter.cfg: https://pastebin.com/ss9JSYj8

8Bitdo_SN30__BT.cfg: https://pastebin.com/3L7f61NS

I asked this before for exactly this scenario but have not received a response, what method(receiver) are you using to connect your 8bitdo SN30 to Windows? (8bitdo usb adapter, bluetooth USB dapater, built-in bluetooth).

In order to relinquish control from the 8bitdo, you would have to disconnect the adapter and not just turning off the controller. The xbox one controller is the exception, you can simply turn off the controller without disconnecting the receiver and it will relinquish control (unless you are also connecting the XB1 controller via bluetooth to windows). This is not practical but attempt to do this first so we can make sure the autoprofile switch is working properly

Testing Xbox controller

  1. Disconnect 8bido adapter, turn off SN30 controller
  2. Turn on Xbox controller
  3. Run retroarch and test Xbox controller

and then

Testing SN30 Controller

  1. Turn off Xbox One Controller
  2. Connect 8bitdo adapter, Turn on SN30 Controller
  3. Run retroarch and test SN30 Controller

Assuming this works, you will be at the same point I am at. I am still trying to figure out how to switch controllers without disconnecting the receivers or turning off controllers.

Ah, had forgotten. Bluetooth is integrated into the motherboard. I suppose I could test the theory by disabling the radio itself and see if control transfers back and forth correctly.

Turning the Bluetooth antenna on or off as appropriate to swap out the XB1 with the SN30BT doesn’t do anything. I still have to go into

input->user 1 binds->user 1 device index

and change to the device I want to connect. Then all the auto settings are populated.

To be absolutely clear about my setup, I have a z370n wifi motherboard with a wireless antenna hooked up via SMA connectors. The XB1 wireless dongle is connected to a USB 3.0 hub along with a Logitech unifying antenna and a steam antenna. All work fine.

Is retroarch closed when you turn off the bluetooth antenna (leaving it off) and then run retroarch with the XB1 controller?

Since it is the built in bluetooth for you it makes it a bit different from my setup, I simply remove the 8bitdo retro receiver.

Correct. I connect with the SNES controller, check functionality, close Retroarch, turn off the bluetooth antenna, connect the XB1, run Retroarch. And then same in the opposite direction. Have to explicitly set the device in the user input options.

Hm so even after turning off the bluetooth, when you run retroarch it detects the 8bitdo controller?

Does retroarch show both controllers popping up within retroarch?

Try changing:

auto_remaps_enable = "true"
input_player2_joypad_index = "5"

to

auto_remaps_enable = "false"
input_player2_joypad_index = "1"

No. What happens is that the XB1 loads at port 0 before the four Dolphin devices for five total. The SN30 loads after the four Dolphin devices at port 4 for five total.

I’ll try changing those lines as soon I can. I’m in the middle of migrating my storage drive data to a larger one. It’ll be quite a few hours (1.3TB to go).

edit: Sorry, it’s been a few days. I haven’t had an opportunity to get back to this yet as I’ve had to do hard disk upgrades to two different systems and only got done with that today.

Update: no dice. Making those two changes to retroarch.cfg did not change the behavior of the controllers.

Out of curiosity, I tried one other thing. I switched the 8bitdo mode to Windows (two flashes per second by pressing X while turning the controller on). I re-paired it in the Windows Bluetooth dialog and ran Retroarch. The device appears to work correctly, but it is detected as an XBox 1 controller. I can swap between the actual XB1 and the SNES Bluetooth controller as I did before, by using the keyboard to navigate to: input, User 1 Binds, User 1 Device Index, and then switching between port 1 and port 4 manually. Retroarch simply cannot auto-detect which controller is active and then assigning the correct port.

One final message. I switched the Dolphinbar’s mode and that actually seems to have solved everything. The SN30 and XB1 controllers alternate port 0 and everything detects correctly. Even without any Mayflash autoconfigs in the system, they were still being detected by Retroarch and playing havoc with the main controllers.

This works out well because I thought I’d have to physically disconnect the Dolphinbar which is a bit of a problem for my media setup.

Thanks very much for all the help and being patient while I worked the problem. I’m really grateful.

Awesome, so glad it works for you now. No problem, just glad I could help.

1 Like

The effort wasn’t without useful results. I’ve identified some device ID problems with the N30 autoconfig that I’ll submit to GitHub when I get a chance and have a better idea now of the autoconfig hierarchy, which makes custom hotkey bindings go a lot more reliably.