[macOS/iOS/iPadOS] RetroPad bindings don't work with Bluetooth controllers
Description
RetroPad button bindings on macOS, iOS, and iPadOS don't function with Bluetooth controllers. I tried with two controllers: a Nintendo Switch Pro Controller and a PS4 Controller.
Expected behavior
I setup the RetroPad Port 1 Controls with any of the Bluetooth controllers mentioned. Any configuration done here doesn’t affect any core with any game, and I have to setup every core individually, instead of one configuration for all, which is the function of the RetroPad configuration.
This is notable by activating "Unified Menu Controls" and changing the RetroPad bindings. The menu navigation should be affected by the changes in the RetroPad bindings (and therefore, the cores as well).
Actual behavior
The new bindings are not applied to the menu navigation, and thus the cores also will not read any new bindings. Apparently, the menu and the cores are reading macOS/iPadOS/iOS own default bindings, and are not reading the RetroPad ones.
For example, I have Unified Menu Controls activated:
I've setup my controller, so RetroPad's Up is my controller's Down, and RetroPad's Down is my controller's Up:
Since Unified Menu Controls is active, this should mean that if I press Down, I should go Up in the menu; and if I press Up, I should go down. But this is not happening. If I press Up I go Up, and if I press Down I go Down. Same thing happens in the cores with any game. RetroPad's configuration is not being read.
As previously mentioned, I believe Retroarch is grabbing macOS's bindings, instead of RetroPad's.
This only happens with bluetooth controllers. If I setup my keyboard so up is down and down is up:
The keyboard's bindings are respected; which means if I press down on my keyboard I will go up, and if I press up I will go down.
Unless I'm missing something very obvious, my Bluetooth controller's bindings on Retropad should work, like the keyboard's bindings do.
Steps to reproduce the bug
- Connect on macOS a Bluetooth controller.
- Go to RetroPad's bindings and change any binding
- This will not get applied to either the menu (if Unified menu controls is active) or any core.
Version/Commit
1.18.0
- OS: macOS, iPadOS, iOS
Probably best to close the previous issue in favor of this one since this title is more accurate.
The exact same issue occurs with me on tvOS with the 8BitDo Pro 2 controller in Bluetooth mode. I also run into the issue using a wired controller (Backbone One) on iOS. I'm using the AppStore version of RetroArch, 1.18.2.
I'm experiencing the exact same problem. I'm using a Nintendo Switch Online SNES controller, but the observed behavior is identical.
I also previously observed the same with an 8bitdo SN30Pro controller, but managed to remap it by starting it in Dinput mode, which causes it to be read as a PlayStation Controller.
I am facing the same problem and exactly the same behavior on iOS and on iPadOs. Did anyone find a solution for this problem?
I've been slowly going insane trying to figure out why my RetroPad binding changes don't have any effect (macOS + bluetooth Switch Joy-Cons & PS4 controller). Glad I finally came across this bug report.
Seems the only workaround is applying core/content input overrides?
I also have this issue on Apple TV / TV OS 17
This works for me. (Though, "works" is contextual; the rebinds don't affect the menu.)
In the original report, Unified Menu Controls is activated. But the help message below it clearly says "Applies to the keyboard".
In the retropad binds, I change up D-Pad Up to be bound to the controller down button, and Down to up. Then I open the Remote RetroPad (Main Menu > Load Core > Start Remote RetroPad (at the very bottom)) and observe that when I press up on my controller the RetroPad image highlights that down is pressed.
I am having a similar issue when using my Gamesir X2s on my iPhone 16 Pro Max. When trying to change the RetroPad Keybinds to reflect that the ABXY layout is the same as an Xbox controller, not a Switch controller, controlling games and navigating the menu acts as if the layout is that of the Switch. Changing the RetroPad keybinds doesn't seem to do anything, and this is connecting through my USB Type C port, not over bluetooth.
I have the same issue with my Pro Controller with my iPhone 16 Pro.
I managed to work around the issue by changing the key binds in the Quick Menu’s Controls submenu, at which point the controls worked as expected.
As I play 90% Nintendo games, this is a good enough solution for now, but it’s clear there’s something in the backend that’s just not working as expected.
I’m not even sure what the intended difference is between the Controls menu and the “RetroPad binds” menu.