Ppsspp: [UWP] Odd Xbox One Controller Behavior

Created on 21 Apr 2018  路  8Comments  路  Source: hrydgard/ppsspp

What happens?
Welp, now that I got all the UWP built and running, testing it out has yielded a button on my controller not acting properly, the B button, or as I'd have it bound, the O button. It pauses the emulation, you know the save state/ppsspp options screen. I can have pause completely unbound, and it still does it.

What should happen?

my b button should act like the O button

What hardware and operating system are you running PPSSPP on? GPU might matter if it's a graphical issue.

Xbox 1 UWP

Going to be sorting through this as of now, any tips would be appreciated, mainly, if you know of a file that can dictate the button bindings.

InpuController Platform-specific (UWP)

Most helpful comment

Should build now, don't forget to update the submodules (git submodule update --init --recursive)

All 8 comments

Check out Common/KeyMap.cpp and also IsEscapeKey() and friends in ext/native/ui/view.cpp .

i am also having this issue. i've gone through both the keymap file and the view.cpp file but can't seem to find where the call is for the save state menu is

Got the following info through e-mail, putting it here so it doesn't get lost:

sorry to be annoying, but i found this article at microsoft:

https://docs.microsoft.com/en-us/windows/uwp/design/devices/designing-for-tv

specifically under the Built-in button support section:
*When neither the KeyDown nor KeyUp events for the B button are handled by the app, the 
SystemNavigationManager.BackRequested event will be fired, which should result in back navigation 
within the app. However, you have to implement this yourself, as in the following code snippet:
// from http://community.monogame.net/t/xbox-one-back-vs-b-button-possible-bug/8862/10
int ButtonB_KeyUpTime = 0;
public void Update()
        {
            previousPadState = currentPadState;
            currentPadState = GamePad.GetState(index);
    #if XBOX
            if (currentPadState.IsButtonUp(Buttons.B) && previousPadState.IsButtonDown(Buttons.B))
            {
                ButtonB_KeyUpTime = 3;
            }
            else
            {
                --ButtonB_KeyUpTime;
            }
    #endif
        }

        public bool BackButtonDownEvent()
        { //Locks the Back button three frames after B keyUp
    #if XBOX
            if (ButtonB_KeyUpTime > 0)
            {
                return false;
            }
    #endif
            return currentPadState.IsButtonDown(Buttons.Back) && previousPadState.IsButtonUp(Buttons.Back);
        }

This should now be fixed, will close on confirmation that the above change takes care of it.

thanks I saw the button fix has been merged :) I would test but I cant get UWP to compile :/ Is UWP build broken?

Should build now, don't forget to update the submodules (git submodule update --init --recursive)

i can confirm that the fix indeed does work. b is properly doing only back and it builds without error.

thanks!

I can confirm too, built perfectly thanks :)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

joelolopez picture joelolopez  路  3Comments

ultrasuper19 picture ultrasuper19  路  4Comments

oatmeal picture oatmeal  路  6Comments

zminhquanz picture zminhquanz  路  6Comments

ewlkkf picture ewlkkf  路  6Comments