clockworkpi / launcher

The launcher for GameShell
GNU General Public License v3.0
332 stars 79 forks source link

fix foot bar button layouts being swapped #246

Closed Cecilectomy closed 5 years ago

Cecilectomy commented 5 years ago

When using SNES it shows the button actions for XBOX When using XBOX it shows the button actions for SNES

cuu commented 5 years ago

it is not swapped

Cecilectomy commented 5 years ago

You are only partially correct, it is not entirely swapped, it IS however still incorrect. When SNES is selected as the button layout the button actions do NOT match the layout.

B does NOT toggle, it goes back, and A does NOT go back, it toggles, and Y does NOT update retroarch, X does. The same is true on other screens. Screen shot attached:

IMG_20190707_174009

Cecilectomy commented 5 years ago

My fix appears to only have switched the issue to the xbox layout instead of the snes layout.

If the intention of the afflicted update was to make it so the actual buttons stay the same, but the button image and action text change, then it was not done correctly.

Otherwise reverting back to the code before where it does not take into account whether xbox is selected or not, then barr = ["nav","y","x","b","a","select"] worked fine before. There was no need to change it to:

if config.ButtonsLayout == "xbox":
    barr = ["nav","y","x","b","a","select"]
else:
    barr = ["nav","x","y","a","b","select"]

Please explain.

cuu commented 5 years ago

the text changes when the buttons layout changes,that's the purpose I did not see any problems ,sorry like A is Enter when the layout is XBOX A is Back when the layout is SNES what is the problem anyway? I dont understand

Cecilectomy commented 5 years ago

Look at the screenshot. Look at the button layout on screen, and look at the buttons on the actual GameShell. They match. This is called SNES layout.

Now look at the footer action text. It says "(A) Back" and "(B) Toggle".

The issue is that this is NOT true. If A is pressed it toggles (but it says it should be "Back"), and if B is pressed, it backs (but it says it should be "Toggle").

I am not sure how much clearer I can be. For SNES the actions are wrong.

SIDE NOTE: for SNES, A as the back button doesn't make sense because on the snes, gb, gba, and pretty much all Nintendo consoles, A is typically "accept" and B is "cancel" or "back", and before this change that was correct on the GameShell using SNES layout.

Cecilectomy commented 5 years ago

Are you trying to change the text so that when you change to SNES mode the text matches without actually changing the device button layout physically? That makes absolutely no sense since the point of the layout is that the button layout should physically change on the device as well (meaning the user physically puts the buttons to match the actual layout). The update only makes sense if the users changes the layout to SNES but leaves the physical buttons on the GameShell as the XBOX layout... ???

cuu commented 5 years ago

ok ,now I can understand a little bit sorry for my english and really thanks for your explanation,really and you are right at last comment, but clockworkpi wants to do it like so And it doesn't seem to possible to satisfy both sides for now. For the confusing from different understanding the buttons layout , Maybe it is better to close this feature in the future to save troubles?

Cecilectomy commented 5 years ago

So the intention is to avoid confusion with users that change the layout but not the actual buttons? But to do this would be at the expense of people who actually want to use the proper physical layout...

I feel like it should follow the proper physical layouts and have a notice / text explaining that the layout needs to be made to the physical buttons as well.

Or maybe add a third layout? XBOX, SNES, and SNES (Physical)?

If this is acceptable, I can make a third layout and update the code to account for it.

4k1 commented 5 years ago

You are only partially correct, it is not entirely swapped, it IS however still incorrect. When SNES is selected as the button layout the button actions do NOT match the layout.

B does NOT toggle, it goes back, and A does NOT go back, it toggles, and Y does NOT update retroarch, X does. The same is true on other screens. Screen shot attached:

IMG_20190707_174009

hi @Cecilectomy, Interesting behavior. How did you operation on it? On my environment,

both modes don't shows like your screenshot.

Could it be possible that are you using LuncherGo? Now on LuncherGo, the footer indicator doesn't toggle.(not fixed yet)

Cecilectomy commented 5 years ago

hi @4k1

No, I am not using launchergo.

This issue was introduced to launcher in commit https://github.com/clockworkpi/launcher/commit/badeb13268fa58ba4489384c1e9f66370d8fc852 (you will need to update to this commit or newer to see the behavior)

You should notice that lines 139-142 in sys.py/UI/foot_bar.py change the code from using a single array of key texts to using two different ones depending on if it sees you have xbox layout selected or not.

Before this change, it did indeed behave like you are describing on your environment, which in my opinion was correct (and this update makes the SNES layout incorrect).

But, If I understand @cuu correctly, they are changing this behavior even though it does not match the actual physical layout the SNES layout represents (read comments above). I am not entirely sure why, as it makes absolutely no sense since the layouts represent a physical layout, and the actions now no longer correspond correctly.

4k1 commented 5 years ago

Oh now I understand what happened and the codes related the buttons layout has been large updated by b47b020 and badeb13. Thanks! I'll update to newest on my device and try to review this issue.

glindsey commented 5 years ago

I have to second @Cecilectomy's comment. To change this functionality so that the button layout shown no longer matches the physical layout on the system is an extremely poor choice with regards to user experience.

rmdesign commented 5 years ago

Yes, please fix this so that we can position our physical buttons in the SNES layout (as per the SNES Compatible screen), and have the on-screen button prompts match the actual button labels.

It was working perfectly previous. This change has broken things for people who prefer the SNES button layout.