Kids & Kiosk Mode, coming back [testers needed!]
-
The fix for w360 controllers is now merged into the dev (expermental) branch! Please give it a try!
-
Hi.
I have installed on my RP3 the 2.7.3RP version of emulationstation and I had been testing this new feature for differents UI modes.
Once it is updated through retropie script (from binary of sources, does not matter) I can change it to kiosk or kid mode from emulationstation menu but, it is not saved in es_settings.cfg so as soon as I reboot my raspberry it come back to Full Mode.
If I edit manually that file, emulationstation never lost configuration and allways boot on Kiosk Mode (or Kid mode) however something I've detected is, when I return to full mode with konami code, "full" label is written in the right way on config file but never when you change from full to kiosk or kid...I like very much this UImode feature, I allways was waiting for it...
Thanks! -
Sorry, just now I've see there is a post with this...
https://retropie.org.uk/forum/topic/14432/kiosk-mode-not-surviving-reboot/26 -
Yeah, this was also fixed in the latest pr, please install the experimental / dev branch (from source) and try again.
Let me know how you fare!
-
@zigurana I installed the new dev version today and the ui mode is staying intact after reboots. Thank you! I am having a new issue similar to the xbo360 Konami code issues recently fixed. Now I am unable to enter this code using 8bitdo Nes30 pro controllers. I am running 4.3 with the new emulationstation-dev just posted.
I have tried configuring the controllers again but this did not work. I have changed my pass key to “baxbax” for the time being and this works perfectly. The hat/d-pad seems to be the issue. Btw the Konami code works flawlessly on the keyboard as of now and worked with both the keyboard and 8bitdo before the latest update I performed.
I am a bit of a “dummy” when it comes to posting logs so let me know if you would like to see any and I will try my best :). Thank you again for all the awesome work! -
Now with dev version of ES kiosk mode persist after a reboot but I loose the unlock feature... now it doesn't work as before, as much as I try to set konami code never come back to full mode... I have an 8bitdo nes30 pro.. :-(
-
@srfrboybob & @dvf00
Could you try running EmulationStation with the debug flag, and see what the logged input values are when you enter the code?So, exit Es with F4, and then enter
emulationstation --debug
, the logging should end up in~/.emulationstation/es_log.txt
I suspect that the controller you are using is registering the dpad as a hat-type input, which are now intentionally ignored.
If that is the case, I'll need to reconsider the fix for xbox360 controllers. -
@zigurana huh. I thought we were just ignoring any inputs that were not associated with any ES-recognized/mapped input event? Was that not good enough as an approach?
I imagine excluding all hat inputs will not be appropriate for different types of controllers.
You may, though, consider ignoring any event that's not mapped to the inputs you can accept for the unlock pattern altogether. I believe it's everything except the inputs assigned to the analog joysticks, l3/r3, l2/r2, correct? So pretty much a SNES pad button layout?
-
@pjft yes, that was the place at first, but it did not work for the Xbox 360 controller that darknoir was using, so I changed it to simply ignore all hat inputs, assuming (incorrectly) that the dpad would always be axes.
Back to the drawing board... -
@zigurana well, it's too early to jump the gun. Both of us are just assuming that some controllers map the dpad to hats. Might be something different.
-
So my understanding is, there is a new kids mode you can install from Retropie? One that matches the new emulationstation changes? If so awesome! I've been wanting to do alot more controlled build for my friends who have kids and stuff that they don't want mucking around with options :)
-
@zigurana I ran debug mode as requested. Here is a quick photo (sorry all I was able to provide at this time). The 8bitdo does use “hat” for dpad inputs as suspected.
Sorry if the image is rotated funny. My phone uploads have done this in the past
-
Hi Kids... and kiosks....
Here it is my log:
lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
As srfrboybob said, seems that 8bitdo interprets d-pad as hat...
-
@Srfrboybob and @dvf00 , thanks for the info, that is very helpful.
ok, so now we have the following situation to work with:
XBox360 controllers intersperses the dpad inputs with hat inputs of varying value:
lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 up, isMappedTo= , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 15, isMappedTo= up, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 down, isMappedTo= , value=4 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 down, isMappedTo= , value=4 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 13, isMappedTo= left, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 left, isMappedTo= , value=8 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 13, isMappedTo= left, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0
8Bitdo NES30 pro controllers report all dpad actions as hat movements, also with varying values, but now alternated with a
neutral?
state, value = 0:lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
... and finally the observation that my initial implementation of finding inputs that have no
isMappedTo
value did not work.Looking at this, I think that filtering out the values that have no mappedTo (undefined keypresses) should be the best way to cope with this. The question is how.
I'll try to replicate the issue with another controller, to see how to catch those undefined inputs. -
@darknior @dvf00 @Srfrboybob , @anyone with a fancycontroller
I've rewritten the logic for input validation (again), I'd like both users with a x360 and an 8-bitdo controllers to give this a try.
Could you maybe try it out?repo: zigurana\EmulationStation
branch: UIModeInputHandlingPlease run
emulationstation --debug
to get all the logging.Thanks!
-
I've just tested EmulationStation from your repo (UIModeInputHandling branch) and I get the same problem: doesn't work.
Here the output of logging:lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=0
I've made a script for download and compile from your own fork using the method on this post: how to compile custom emulation-station from retropie . It looks like this, and seems to work:
#!/usr/bin/env bash rp_module_id="emulationstation-custom" rp_module_desc="A modified version of EmulationStation." rp_module_section="core" function depends_emulationstation-custom() { depends_emulationstation } function sources_emulationstation-custom() { sources_emulationstation "https://github.com/zigurana/EmulationStation" "UIModeInputHandling" } function build_emulationstation-custom() { build_emulationstation } function install_emulationstation-custom() { install_emulationstation } function configure_emulationstation-custom() { configure_emulationstation } function gui_emulationstation-custom() { gui_emulationstation }
So I guess I did it right, when I press start I see the same version as official retropie fork 2.7.3RP so I'm not pretty sure I have your new logic for controller handling....
-
@dvf00 My apologies, I screwed up.
Somehow I only created a new branch, but my new commit was not pushed to it.
I've just updated it, should be good now.Your script should work, nice tinkering btw! There is an easier alternative though, by using Meleu's testing scripts, which can be found here. It will allow you to create a list of branches from which you can install and test, and also to revert easily to stock ES. Do give it a try.
Again sorry for wasting your time.
-
No worries Zigurana...
Ohh yes... downloaded and running, that script is the way! I didn't know it... :-)
Compiling now ES... let me try -
working with 8Bitdo! :-)
lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 11, isMappedTo= start, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=1, isValidInput: yes lvl3: UIModeController::listen(): Passkey sequence completed, switching UIMode to full lvl3: Settings::saveFile() : Saving Settings to file. lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0, isValidInput: no lvl2: EmulationStation cleanly shutting down. ´´´
-
@dvf00 Yes already try 8bitDo and report it works fine too.
I don't know where to report this :
With these last ES versions, i have some aleatory crash. Some time during the Video Screensaver ... but i don't know when it will come.
Some time it loop on one video, it reading it at infinity ... i can't move out.
Some time it crash to linux, and i'm locked too, the keyboard don't respond.
But i always have the SSH access.My last crash screen :
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.