RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Emulationstation UI Mode return not working from BT controller

    Scheduled Pinned Locked Moved Help and Support
    emulationstaionkiosk kids modekiosk mode8bitdo nes30
    5 Posts 3 Posters 1.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • caver01C
      caver01
      last edited by caver01

      After rebuilding my NESPi system connected to my TV (Pi 3B in a NESPi case running a fresh RetroPie 4.4 image downloaded and installed last week) I decided to try Kiosk Mode. While entering Kiosk worked, I could not get out of it using by bluetooth controller. I am using a pair of 8BitDo NES30 Pro controllers. They have always worked fine for me and they are working well otherwise.

      Getting back to FULL UI mode requires a passkey. Of course, the default is the Konami cheat code which I tried and it did nothing. I have tried over and over from the controller and I cannot get it to work. So, I decided to SSH into my Pi from my Mac to make sure nothing was odd in the config file. Sure enough, UI mode is showing Kiosk as expected in es_settings.cfg and I found: <string name="UIMode_passkey" value="uuddlrlrba" /> correctly set (default). Puzzled, I reconnected a USB keyboard that I used to setup the system before configuring my bluetooth controllers. So, I used my arrow keys and AB as configured on the keyboard and BAM! Emulation Station recognized the Konami code and restarted back into FULL UI mode.

      What's going on here? Is there some other way to specify the passkey so that I can get out of Kiosk mode from my controller? Would someone else that uses the NES30 Pro give this a try? Thanks!

      My 4-player cocktail style cabinet built as a custom "roadcase"

      mituM 1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator @caver01
        last edited by mitu

        @caver01 Some controllers have problems with the directional keys being registered properly by SDL - try modifying the passkey to include only the buttons (i.e. abbba or something).

        EDIT: you can start ES with --debug and check the input recorded while you're trying the Konami code, they should appear in the log file (or on the standard output, if you're starting ES from a SSH session).

        caver01C 1 Reply Last reply Reply Quote 0
        • caver01C
          caver01 @mitu
          last edited by

          @mitu said in Emulationstation UI Mode return not working from BT controller:

          @caver01 Some controllers have problems with the directional keys being registered properly by SDL
          EDIT: you can start ES with --debug and check the input recorded while you're trying the Konami code, they should appear in the log file (or on the standard output, if you're starting ES from a SSH session).

          Thanks! I will see if I can debug.

          My 4-player cocktail style cabinet built as a custom "roadcase"

          roslofR 1 Reply Last reply Reply Quote 0
          • roslofR
            roslof @caver01
            last edited by roslof

            @caver01 @mitu Topic is still relevant. Keyboard works. Joystick doesn't.

            KEYBOARD:
            Jan 02 11:27:33 lvl3:   UIModeController::logInput( Keyboard ):Key Up, isMappedTo= up, , value=1
            Jan 02 11:27:33 lvl3:   UIModeController::logInput( Keyboard ):Key Up, isMappedTo= up, , value=0
            Jan 02 11:27:35 lvl3:   UIModeController::logInput( Keyboard ):Key Up, isMappedTo= up, , value=1
            Jan 02 11:27:35 lvl3:   UIModeController::logInput( Keyboard ):Key Up, isMappedTo= up, , value=0
            Jan 02 11:27:36 lvl3:   UIModeController::logInput( Keyboard ):Key Down, isMappedTo= down, , value=1
            Jan 02 11:27:36 lvl3:   UIModeController::logInput( Keyboard ):Key Down, isMappedTo= down, , value=0
            Jan 02 11:27:36 lvl3:   UIModeController::logInput( Keyboard ):Key Down, isMappedTo= down, , value=1
            Jan 02 11:27:36 lvl3:   UIModeController::logInput( Keyboard ):Key Down, isMappedTo= down, , value=0
            Jan 02 11:27:37 lvl3:   UIModeController::logInput( Keyboard ):Key Left, isMappedTo= left, , value=1
            Jan 02 11:27:37 lvl3:   UIModeController::logInput( Keyboard ):Key Left, isMappedTo= left, , value=0
            Jan 02 11:27:37 lvl3:   UIModeController::logInput( Keyboard ):Key Right, isMappedTo= right, , value=1
            Jan 02 11:27:38 lvl3:   UIModeController::logInput( Keyboard ):Key Right, isMappedTo= right, , value=0
            Jan 02 11:27:38 lvl3:   UIModeController::logInput( Keyboard ):Key Left, isMappedTo= left, , value=1
            Jan 02 11:27:38 lvl3:   UIModeController::logInput( Keyboard ):Key Left, isMappedTo= left, , value=0
            Jan 02 11:27:39 lvl3:   UIModeController::logInput( Keyboard ):Key Right, isMappedTo= right, , value=1
            Jan 02 11:27:39 lvl3:   UIModeController::logInput( Keyboard ):Key Right, isMappedTo= right, , value=0
            Jan 02 11:27:40 lvl3:   UIModeController::logInput( Keyboard ):Key Left Shift, isMappedTo= b, , value=1
            Jan 02 11:27:40 lvl3:   UIModeController::logInput( Keyboard ):Key Left Shift, isMappedTo= b, , value=0
            Jan 02 11:27:41 lvl3:   UIModeController::logInput( Keyboard ):Key Left Ctrl, isMappedTo= a, , value=1
            Jan 02 11:27:41 lvl3:   UIModeController::logInput( Keyboard ):Key Left Ctrl, isMappedTo= a, , value=0
            
            JOYSTICK:
            Jan 02 11:35:38 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 up, isMappedTo= up, , value=1
            Jan 02 11:35:38 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:40 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 up, isMappedTo= up, , value=1
            Jan 02 11:35:40 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:41 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 down, isMappedTo= down, , value=4
            Jan 02 11:35:41 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:42 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 down, isMappedTo= down, , value=4
            Jan 02 11:35:42 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:42 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 left, isMappedTo= left, , value=8
            Jan 02 11:35:42 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:43 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 right, isMappedTo= right, , value=2
            Jan 02 11:35:43 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:43 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 left, isMappedTo= left, , value=8
            Jan 02 11:35:43 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:44 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 right, isMappedTo= right, , value=2
            Jan 02 11:35:44 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
            Jan 02 11:35:47 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Button 1, isMappedTo= b, , value=1
            Jan 02 11:35:47 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Button 1, isMappedTo= b, , value=0
            Jan 02 11:35:49 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Button 0, isMappedTo= a, , value=1
            Jan 02 11:35:49 lvl3:   UIModeController::logInput( Sony Interactive Entertainment Wireless Controller ):Button 0, isMappedTo= a, , value=0
            

            Not sure how the code is reading this, but in the example above (using a DualShock 4 controller) when any "hat" button is released, the output is quite different than a keyboard. value=0 is correct, but wondering of the extra neutral? or isMappedTo= information may be causing trouble with the parse.

            mituM 1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @roslof
              last edited by mitu

              @roslof The release event is not counted for the unlock passkey, so it doesn't matter what's the mapping reported. At some point, the HAT events have been discarded as valid input from the passcode matching (here) and this causes your issue.
              For a Dualshock controller (like yours) unlocking works using one of the joysticks, but not the D-Pad (which is a HAT type input).

              1 Reply Last reply Reply Quote 1
              • First post
                Last post

              Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

              Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.