libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.1k stars 1.81k forks source link

[macOS/iOS/iPadOS] RetroPad bindings don't work with Bluetooth controllers #16552

Open jamescastells opened 4 months ago

jamescastells commented 4 months ago

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:

image

I've setup my controller, so RetroPad's Up is my controller's Down, and RetroPad's Down is my controller's Up:

image

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:

image

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

  1. Connect on macOS a Bluetooth controller.
  2. Go to RetroPad's bindings and change any binding
  3. This will not get applied to either the menu (if Unified menu controls is active) or any core.

Version/Commit

1.18.0

hizzlekizzle commented 4 months ago

Probably best to close the previous issue in favor of this one since this title is more accurate.

MichaelDWalker commented 3 months ago

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.

wrychime commented 3 months ago

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.

ngoc-truong commented 1 month ago

I am facing the same problem and exactly the same behavior on iOS and on iPadOs. Did anyone find a solution for this problem?

fizwidget commented 2 days ago

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?