Hotkeys are not remapped when using a different controller (& more)

Hey there,

I am using a DualSense with XInput via DS4Windows (because I use BigBox as front-end and other emulators that work with XInput only).

It’s worked great so far.

I just got an 8Bitdo M30 Bluetooth controller (at least for now, to use with GenesisplusGX and Mednafen Beetle Saturn, which for me is the core that works best with most Saturn games even if it doesn’t offer upscaling features unfortunately), I have set the controller it as XInput and D-Pad modes for compatibility with BigBox.

I created a custom controls profile (as the default one was not doing it for my use case) according to the GenesisplusGX mapping (adding “Select”, L(L2) and R(R2)) within the main Retroarch menu with no cores/games loaded. The Xbox(PS) button opens the BigBox Pause screen, while “Start+Select” open the Retroarch quick menu.

So far so good, tested Mega Drive games and controls are mapped properly.

Hotkeys So regarding Hotkeys, they were set with my DualSense (XInput mode) a while back and work great with this controller only (Buttons are actually labelled with digits and axis+or- in the menu which is a bit confusing so I am keeping the PS version here to make it clearer):

  • Hotkey toggle -> Select
  • Rewind -> L2
  • Fast-forward (Hold) -> R2
  • Fast-forward (Toggle) -> R1

Unfortunately the remap of the M30 controller is not taken into account for hotkeys and it is all messed-up and I can see that controls give a different button when either using the DualSense or the M30 when binding hotkeys to controller buttons, and whatever you set with a controller will remain even when using the other controller auto-config so it is not consistent having to use other buttons when using the M30 compared to what I am using with the DualSense, I would have expected that the R button (mapped as R2) would fast-forward but it Rewinds instead, but C does it (mapped as Circle or A right button) to give an example.

Controls in Mednafen Beetle Saturn It seems that the default button remap doesn’t follow the same logic as the GenesisplusGX (which makes sense for modern controllers), although both the Mega Drive and Saturn controllers were very much alike. So I went ahead and did a core-remap (I may lose the possibility to play Saturn games with the DualSense or have player 2 use it, as I guess it messes up the controls too much).

But 1 weird thing I noticed is that the L and R buttons which are mapped as L2 and R2 in Beetle Saturn, they both act as L2 even though in the Input setting they show correctly assigned. I played Alien trilogy because I know it uses L and R for strafing, but maybe other buttons have issues A and B were fine (fire and action).

Has anyone experience with this type of setups? I wanted to get other controllers like for the N64 and Neo Geo but it seems difficult to manage.

Having different core-specific controllers plugged in all the time and automagically switching among them with controller-specific hotkeys isn’t easily achieved in RetroArch.

Since you’re using bigbox, probably the easiest thing to do is to disable autoconfiguration entirely, make config fragments that include the mappings you want to use with a given core and then use --append-config via bigbox’s launch commands to point to those fragments as appropriate (just make sure you disable the config-save-on-exit setting or the fragments will pollute your main config).

You’ll also likely need to use the external utility “devreorder” to ensure that your various pads maintain consistent devices indexes with the OS, as they will usually get shuffled around after reboots.

1 Like

Thanks a lot, I’ll investigate that when I get a moment.

Hey for anyone who’ll stumble upon this in the future I managed to find a solution to this :D

  1. Set the M30 to Switch mode (Hold start+Y for a few seconds) and pair it to Windows.

  2. Set it to D-Pad mode (Hold Select+D-pad up for a few seconds)

  3. If like me you tried to fiddle with controller configs in Retroarch, make sure you use the default auto-config profiles in Retroarch and save your config.

  4. I took my Dual Sense (Emulating an Xbox360 controller via DS4Windows) and had to reconfigure it manually for some reason.

  5. Connect your M30 using DS4Windows (Hide the Nintendo controller in Hid Hide wizard), it will now be recognized as a Switch pro controller (make sure Switch pro emulation is enabled) and emulate an X360 controller with it also.

  6. Retroarch will recognize both as the same x360 controller which is good (it means that hotkeys will work on both controllers the same way)!

  7. Make sure you create a separate profile in DS4Windows for both controllers in DS4Windows and that they are linked to each by default.

  8. You now have to re-assign a few buttons manually in the DS4Windows profile config (A,C,X,Y,Z only were needed IIRC) for your M30 to match the auto config mapping of the x360 controller in Retroarch.

Now everything works and Mega Drive and Saturn buttons are mapped well without any modifications needed on the cores (which means you can also use the regular controller if you want to :smiley: