Emulationstation UI Mode return not working from BT controller
-
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!
-
@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). -
@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.
-
@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 extraneutral?
orisMappedTo=
information may be causing trouble with the parse. -
@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).
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.