Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVidia Shield 2019 Remote: Swap buttons used as A and B #839

Merged
merged 1 commit into from
Jan 26, 2024

Conversation

manojka
Copy link
Contributor

@manojka manojka commented Jun 3, 2022

The existing config used the back button on this remote as "A" and the center button as "B". In the default UI, this meant that you need to hit the back button to select an option and the center button to back out. This seemed backwards, so I swapped them.

My guess is that whoever uploaded this configuration was using Nintendo-style controls in their RetroArch UI. Since that wasn't the default in my setup, I don't think it should be the default here. I understand this is a weird case where the remote doesn't resemble a real controller, though, and maybe I'm wrong if the RetroArch default orientation ("Menu Swap OK and Cancel Buttons") changes in cases I'm not aware of.

I could probably go on about a deeper code change that might be a more correct fix that works in all cases, but I don't know that there's interest or that it'd be worth it, so I just proposed this.

The existing config used the back button on this remote as "A" and the center button as "B". In the default UI, this meant that you need to hit the back button to select an option and the center button to back out. This seemed backwards, so I swapped them.

My guess is that whoever uploaded this configuration was using Nintendo-style controls in their RetroArch UI. Since that wasn't the default in my setup, I don't think it should be the default here. I understand this is a weird case where the remote doesn't resemble a real controller, though, and maybe I'm wrong if the RetroArch default orientation ("Menu Swap OK and Cancel Buttons") changes in cases I'm not aware of.

I could probably go on about a deeper code change that might be a more correct fix that works in all cases, but I don't know that there's interest or that it'd be worth it, so I just proposed this.
@manojka manojka changed the title Swap buttons used as A and B Swap buttons used as A and B for NVidia Shield 2019 remote Jun 3, 2022
@hizzlekizzle
Copy link
Contributor

hizzlekizzle commented Jun 3, 2022

hmm, that's a tough call. While you're obviously correct that the current result is unintuitive, the A/B swap is only there for the Shield controller and it seems weird to change the remote mapping to work around something we're already changing...

IMO, we would just not swap A/B by default and let users set it, but that would certainly upset a lot of people, too. No perfect answer, I guess.

@manojka
Copy link
Contributor Author

manojka commented Jun 5, 2022

Huh, my email reply didn't get though. Trying on the website... and thanks for entertaining the topic, it's definitely niche of niche :).

I'm a bit confused by what you're saying. So I'll be very explicit what I think is the case, so you can tell me where I'm wrong. Not trying to be argumentative, even though it might come across that way :).

On Android at least (similar to Windows, Xbox, Linux, Mac, and most things besides Nintendo, even in Japan nowadays), Xbox style is the standard. RetroArch seemed to follow that standard for me, with a Shield controller, Xbox-compatible controller, etc., it works as expected. A/bottom button confirms, B/right button backs out.

Yes, the option in RetroArch is called "Menu Swap OK and Cancel buttons" and in my setup it's "ON" by default, but that seems like semantics. "ON" being the default means means Xbox layout is "standard" (which makes sense on Android too).

With the Shield remote, given the above, to at least be functional in the UI, it'd make sense IMO for the back button to actually mean back and the selector button to actually select something. It seems less likely for someone to actually play a game with this remote, but if they wanted to play a Nintendo game, it'd make sense IMO to then remap it for that console or game, though I'm not even convinced they'd want to much of the time, and it'd have to be a per-game thing anyway, because gaming on this remote would be weird.

One reason I could be wrong is if there is some intent for Nintendo or old-Sony-in-Japan style to actually be the primary orientation in the UI even if that's not the case right now. Even as someone who owns more Nintendo consoles than anything, I'd be surprised at this.

Am I confused about anything above?

@hizzlekizzle
Copy link
Contributor

The default behavior is indeed Nintendo/Sony-in-Japan -style. We detect Shield hardware and apply some settings on a hardcoded basis (I think mainly as a result of the old Shield portables being extremely weird and difficult to configure without special-casing), one of which is the 'swap ok/cancel buttons'.

So, the current behavior is to take the properly-mapped remote and automatically make it weird to benefit other input devices. We could, as you've submitted, make the autoconfig incorrect to compensate for our own automatic-weirdness (which is, itself, trying to accommodate other input devices), and this would be a simple and effective solution for making remotes work as expected. However, it's also a band-aid on top of a band-aid on top of a band-aid, which is not usually a great place to be, long-term.

The alternatives would be to 1) no longer automatically apply the ok/cancel swap, which makes the remote work properly and makes the shield controller work the same as any other pad on any other platform at the expense of being contrary to the way the Shield menus work, or 2) leave everything as-is, where remotes are wonky.

I wouldn't worry much about making the remote mapping incorrect, except that I think some other projects use our autoconfig profiles, and that would leave them with a bad mapping. My personal preference would be alternative 1 as listed above, but I'm not actually against this one, either. I just wanted to make sure we look at all of the angles :)

@manojka
Copy link
Contributor Author

manojka commented Jun 6, 2022 via email

@hizzlekizzle
Copy link
Contributor

Sounds good. Let's leave this one open for a while, then, and see if anyone else chimes in.

@manojka
Copy link
Contributor Author

manojka commented Oct 11, 2022 via email

@RobLoach
Copy link
Member

"Menu Swap OK and Cancel" option ON

I'd love for this to become a controller-specific configuration, because we've had this problem pretty much on every platform. It's been almost 2 years, what are your thoughts on just merging this one forwards, and reverting if it causes issues with the NVidea Sheild remote?

@RobLoach RobLoach changed the title Swap buttons used as A and B for NVidia Shield 2019 remote NVidia Shield 2019 Remote: Swap buttons used as A and B Jan 25, 2024
@RobLoach RobLoach merged commit 1270274 into libretro:master Jan 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants