Creating hotkey alternates for multiple controllers

I’d like to set hotkey enable bindings for multiple controllers, in this case for: XB1, sn30modkit (snes bluetooth), and n30modkit (nes bluetooth) controllers. Hotkey enable should be right-stick-click for the XB1 and Select for the others.

Referencing: Hotkeys for more than one controller

It looks like I should edit the controller autoconfig files outside of Retroarch. However, I’m confused by the instruction to delete any settings in retroarch.cfg. In 1.78, there is no “input_btn” in the file. Is this something that existed in 2017 but has changed since then? Could I get more specifics on what I should do to create the hotkey settings I want?

2 Likes

nice idea, hope can be do it, its one of my actual problems right now.

It seems do-able. I just don’t know where to start to find what settings I can safely remove from the retroarch.cfg file. The author is not clear at all on that. He just says “And I erased all the hotkeys input_btn from retroarch cfg file to stay “Auto:”” I’m not entirely sure the hotkey settings all say “hotkey” on them or whether anything has changed since 2017. I’m leery of missing something.

If I get a chance in the next couple of days I’ll try to experiment.

Edit: Have to put that off. I’ve got other things to worry about for the next (n+1) days.

I am currently able to do this. I have an Xbox One controller, N30Modkit and SN30Modkit.

Step 1: Delete hotkey settings

In retroarch.cfg look for:

input_enable_hotkey

You will find multiple inputs with hotkey in them. Simply type/replace what is in the quotes with nul:

input_enable_hotkey = "nul"
input_enable_hotkey_axis = "nul"
input_enable_hotkey_btn = "nul"
input_enable_hotkey_mbtn = "nul"

This will appear as “Auto:” in Retroarch.

Step 2: Creating autoprofiles

Next, in “_parent/autoconfig/xinput” folder I have two cfg files which were created by retroarch. In order to keep it clean i deleted everything else from this folder. If you don’t have these cfg files, we will create them.

XBOX One Controller (User 1).cfg
XInput Controller (User 1).cfg (M30modkit/SN30modkit)
  1. Connect only the controller you wish to configure first.
  2. Launch retroarch.
  3. Go to Settings > Input > User1Binds
  4. Bind the controller to your liking
  5. When finished, select “User1SaveAutoconfig”. (This will create the cfg file)
  6. Exit retroarch and disconnect controller. Connect the next controller to configure and repeat.

I discovered that the XInput Controller (User 1).cfg profile works for both the N30 and SN30 so it is only necessary to configure the SN30 first.

Step 3: Multiple hotkeys

In “_parent/autoconfig/xinput” folder edit the cfg files and add:

input_enable_hotkey_btn = "button_listed_in_cfg"

Xbox One example:

input_enable_hotkey_btn = “8” #Left Thumb button

N30/SN30 example:

input_enable_hotkey_btn = “7” #Select Button

The issue i am having which I am hoping someone here can help me out with. When assigning select or start buttons as a hotkey, that button will no longer function in some games on NES/SNES/Gameboy etc. For example if I assign the start button as the hotkey, the start button no longer works in Super Metroid for SNES but it will in other SNES games. Same issue with using select for example in Link’s Awakening for gameboy, the select no longer functions when using the hotkey.

It is my understanding that whatever button you assign as the hotkey on the controller, it will block the original command and be overwritten as a hotkey only. If only there was the option to allow a slight delay when pressing assigned hotkey button to first trigger the in-game command and then begin the hotkey call.