RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Kids & Kiosk Mode, coming back [testers needed!]

    Scheduled Pinned Locked Moved Ideas and Development
    emulationstatiokiosk kids modetestingbackfromthedead
    182 Posts 28 Posters 51.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.
    • Z
      Zigurana @Srfrboybob
      last edited by

      @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.

      If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

      pjftP S 2 Replies Last reply Reply Quote 0
      • pjftP
        pjft @Zigurana
        last edited by

        @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?

        Z 1 Reply Last reply Reply Quote 0
        • Z
          Zigurana @pjft
          last edited by

          @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...

          If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

          pjftP 1 Reply Last reply Reply Quote 0
          • pjftP
            pjft @Zigurana
            last edited by

            @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.

            1 Reply Last reply Reply Quote 0
            • MrJordaaanyM
              MrJordaaany
              last edited by

              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 :)

              1 Reply Last reply Reply Quote 0
              • S
                Srfrboybob @Zigurana
                last edited by

                @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.

                0_1512009001762_2BE87F92-A7CD-4FC1-9212-453E87891795.jpeg

                Sorry if the image is rotated funny. My phone uploads have done this in the past

                1 Reply Last reply Reply Quote 0
                • K
                  Krahs
                  last edited by Krahs

                  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...

                  1 Reply Last reply Reply Quote 0
                  • Z
                    Zigurana
                    last edited by

                    @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.

                    If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                    1 Reply Last reply Reply Quote 1
                    • Z
                      Zigurana
                      last edited by

                      @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: UIModeInputHandling

                      Please run emulationstation --debug to get all the logging.

                      Thanks!

                      If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                      1 Reply Last reply Reply Quote 1
                      • K
                        Krahs
                        last edited by

                        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....

                        Z 1 Reply Last reply Reply Quote 0
                        • Z
                          Zigurana @Krahs
                          last edited by Zigurana

                          @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.

                          If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                          1 Reply Last reply Reply Quote 0
                          • K
                            Krahs
                            last edited by

                            No worries Zigurana...
                            Ohh yes... downloaded and running, that script is the way! I didn't know it... :-)
                            Compiling now ES... let me try

                            1 Reply Last reply Reply Quote 0
                            • K
                              Krahs
                              last edited by

                              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.
                              ´´´
                              darkniorD 1 Reply Last reply Reply Quote 0
                              • darkniorD
                                darknior @Krahs
                                last edited by

                                @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 :
                                0_1512077306483_20171130_222055_HDR.jpg

                                Life is game, just play it !

                                Z 1 Reply Last reply Reply Quote 0
                                • Z
                                  Zigurana @darknior
                                  last edited by

                                  @darknior
                                  You mean to say you tried the x360 controller?

                                  If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                                  darkniorD 1 Reply Last reply Reply Quote 0
                                  • darkniorD
                                    darknior @Zigurana
                                    last edited by darknior

                                    @zigurana I don't try it again, but last time i try it it works fine.
                                    I will try your last beta to see.

                                    This crash is an other problem.

                                    Life is game, just play it !

                                    Z 1 Reply Last reply Reply Quote 0
                                    • Z
                                      Zigurana @darknior
                                      last edited by

                                      @darknior yes, please try it, I am hoping that it will not regress your issue, but there is only one way to be sure ;-).

                                      Regarding your crashes, I suspect it has nothing to do with the topic of this thread, but likely something with video playback. So I'd suggest to start a new thread on this, as it seems a serious issue.

                                      If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                                      1 Reply Last reply Reply Quote 0
                                      • pjftP
                                        pjft
                                        last edited by

                                        I can say I've never seen such a crash dump in EmulationStation, which may point to faulty media (SD card or USB drive). I imagine that if you try it with your previously working binary you will run into the same thing.

                                        Still, some more investigation can only help: is it the same video all the time, etc?

                                        Thanks.

                                        1 Reply Last reply Reply Quote 0
                                        • darkniorD
                                          darknior
                                          last edited by

                                          @Zigurana I have try your last build, emulationstation-dev, to try my x360 controller game-pad. And :

                                          • x360 gamepad not working
                                          • 8bitDo NES not working
                                          • 8bitDo NES PRO not working
                                          • 8bitDo SNES is the only one working fine for me.

                                          Life is game, just play it !

                                          Z 1 Reply Last reply Reply Quote 0
                                          • Z
                                            Zigurana @darknior
                                            last edited by

                                            @darknior what in the name of all that's retro?!

                                            To be sure: this is on the zigurana / UIModeController branch?

                                            Would you have the logging from each of those controllers available?

                                            If tetris has thought me anything, it's that errors pile up and that accomplishments dissappear.

                                            darkniorD 1 Reply Last reply Reply Quote 0
                                            • 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.