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

    How Do I Block These Inputs on my Controller?

    Scheduled Pinned Locked Moved Help and Support
    8bitdo
    12 Posts 3 Posters 1.8k 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.
    • A
      AlphaBetaPie
      last edited by

      I have tried to ensure that only the standard controller settings are present on my 8BitDo controllers. Basically, no access to the backend emulator menu or features (like loading save states, changing slots, etc). I want it as much of a "kiosk" mode as possible.

      But even though I've edited my controller config and Emulationstation input files to ensure only the basic functions are listed there, I'm still able to activate certain Retroarch features from my controller. If I hold the hotkey and fiddle around with the shoulder buttons for example, it does everything from fast-forwarding, to scrolling through the shader settings.

      I have even gone into the keybinding in the Retroarch menu, and it appears that only the keyboard keys are assigned to these features. So how is it that my controller still triggers them? And how do I block that?

      S 2 Replies Last reply Reply Quote 0
      • S
        sleve_mcdichael @AlphaBetaPie
        last edited by

        @AlphaBetaPie said in How Do I Block These Inputs on my Controller?:

        I have even gone into the keybinding in the Retroarch menu, and it appears that only the keyboard keys are assigned to these features. So how is it that my controller still triggers them? And how do I block that?

        Indeed, by default these hotkey functions are only assigned to keyboard keys and not controller buttons. So it sounds like your controller is sending keyboard inputs. You could just disable these in your retroarch.cfg; if you still want to have them available on the keyboard, you'll need to look into the controller function itself, probably. I imagine the manual would be a good place to start; what model do you have?

        1 Reply Last reply Reply Quote 0
        • S
          sleve_mcdichael @AlphaBetaPie
          last edited by

          @AlphaBetaPie said in How Do I Block These Inputs on my Controller?:

          If I hold the hotkey and fiddle around with the shoulder buttons for example, it does everything from fast-forwarding, to scrolling through the shader settings.

          And everything in between, or just these two things specifically? I know that some cores have their own native hotkeys and that lr-gambatte, for example, does FFWD on R-Trigger (not a hotkey, configurable in "quick menu > controls"), and I can't find the thread but I remember something about one of the NES cores switching color palettes on a certain input.

          A 1 Reply Last reply Reply Quote 0
          • A
            AlphaBetaPie @sleve_mcdichael
            last edited by

            @sleve_mcdichael Thanks for following up!

            It does seem strange, as I have gone back in all my config files and checked the bindings for both Emulationstation and the 8BitDo N30 Pro 2. Below are both snippets of code relating to that controller. As you can see, it doesn't have anything bound to keyboard commands or anything weird (beyond just the default controls). Or am I missing something?

            es_input

            <inputConfig type="joystick" deviceName="8BitDo N30 Pro 2" deviceGUID="05000000c82d00006528000000010000">
                <input name="pageup" type="button" id="6" value="1"/>
                <input name="up" type="hat" id="0" value="1"/>
                <input name="left" type="hat" id="0" value="8"/>
                <input name="select" type="button" id="10" value="1"/>
                <input name="right" type="hat" id="0" value="2"/>
                <input name="pagedown" type="button" id="7" value="1"/>
                <input name="y" type="button" id="4" value="1"/>
                <input name="x" type="button" id="3" value="1"/>
                <input name="down" type="hat" id="0" value="4"/>
                <input name="start" type="button" id="11" value="1"/>
                <input name="b" type="button" id="1" value="1"/>
                <input name="a" type="button" id="0" value="1"/>
                <input name="rightanalogup" type="axis" id="3" value="-1"/>
                <input name="rightanalogdown" type="axis" id="3" value="1"/>
                <input name="rightanalogleft" type="axis" id="2" value="-1"/>
                <input name="leftanalogdown" type="axis" id="1" value="1"/>
                <input name="leftanalogright" type="axis" id="0" value="1"/>
                <input name="leftanalogleft" type="axis" id="0" value="-1"/>
                <input name="rightanalogright" type="axis" id="2" value="1"/>
                <input name="leftanalogup" type="axis" id="1" value="-1"/>
              </inputConfig>
            

            8BitDo N30 Pro 2 from autoconfig folder

            input_device = "8BitDo N30 Pro 2"
            input_driver = "udev"
            input_enable_hotkey_btn = "2"
            input_r3_btn = "14"
            input_r3_btn_label = "RS"
            input_r_y_minus_axis = "-3"
            input_r_y_minus_axis_label = "RS Up"
            input_l_btn = "6"
            input_l_btn_label = "L1"
            input_r_y_plus_axis = "+3"
            input_r_y_plus_axis_label = "RS Down"
            input_up_btn = "h0up"
            input_up_btn_label = "Dpad Up"
            input_left_btn = "h0left"
            input_left_btn_label = "Dpad Left"
            input_select_btn = "10"
            input_select_btn_label = "Select"
            input_r2_btn = "9"
            input_r2_btn_label = "R2"
            input_r_x_minus_axis = "-2"
            input_r_x_minus_axis_label = "RS Left"
            input_l_y_plus_axis = "+1"
            input_l_y_plus_axis_label = "LS Down"
            input_l_x_plus_axis = "+0"
            input_l_x_plus_axis_label = "LS Right"
            input_right_btn = "h0right"
            input_right_btn_label = "Dpad Right"
            input_l2_btn = "8"
            input_l2_btn_label = "L2"
            input_l_x_minus_axis = "-0"
            input_l_x_minus_axis_label = "LS Left"
            input_r_x_plus_axis = "+2"
            input_r_x_plus_axis_label = "RS Right"
            input_l3_btn = "13"
            input_l3_btn_label = "LS"
            input_r_btn = "7"
            input_r_btn_label = "R1"
            input_l_y_minus_axis = "-1"
            input_l_y_minus_axis_label = "LS Up"
            input_y_btn = "4"
            input_y_btn_label = "Y"
            input_x_btn = "3"
            input_x_btn_label = "X"
            input_menu_toggle_btn = "3"
            input_down_btn = "h0down"
            input_down_btn_label = "Dpad Down"
            input_start_btn = "11"
            input_start_btn_label = "Start"
            input_exit_emulator_btn = "11"
            input_b_btn = "1"
            input_b_btn_label = "B"
            input_reset_btn = "1"
            input_a_btn = "0"
            input_a_btn_label = "A"
            
            S 1 Reply Last reply Reply Quote 0
            • S
              sleve_mcdichael @AlphaBetaPie
              last edited by

              @AlphaBetaPie those both look normal enough.

              Can you identify which buttons or combinations activate which functions? Does it happen across all emulators?

              Do those buttons or combinations produce any keyboard inputs if you drop into a console? (Press F4 on an attached keyboard. Type "exit" or "logout" or press ctrl-d to restart EmulationStation.)

              A 1 Reply Last reply Reply Quote 0
              • A
                AlphaBetaPie @sleve_mcdichael
                last edited by AlphaBetaPie

                @sleve_mcdichael said in How Do I Block These Inputs on my Controller?:

                @AlphaBetaPie those both look normal enough.

                Can you identify which buttons or combinations activate which functions? Does it happen across all emulators?

                Do those buttons or combinations produce any keyboard inputs if you drop into a console? (Press F4 on an attached keyboard. Type "exit" or "logout" or press ctrl-d to restart EmulationStation.)

                Sure, and as you can see, it's all over the map. None of this should be happening (and would wreak havoc on a Retropie setup if a kid started button mashing the controller and changed things like the shaders).

                For example:

                • NES - Hotkey+L or R = Load/Save State Slots #0 / Hotkey+B = Reset / Hotkey+X = Retroarch menu

                • Gameboy - Hotkey+R2 = Fast Foward / Hotkey + L or R = Change shader settings

                S 1 Reply Last reply Reply Quote 0
                • S
                  sleve_mcdichael
                  last edited by sleve_mcdichael

                  @AlphaBetaPie said in How Do I Block These Inputs on my Controller?:

                  • Gameboy - Hotkey+R2 = Fast Foward / Hotkey + L or R = Change shader settings

                  These are both native to the Gambatte core.

                  R2 enables fast-forward.

                  L1/R1, if you have GB Colorization set to Internal under core options, will cycle through the internal palettes (if colorization is set to "custom," "auto," "gbc," "sgb," or "off," they won't do anything, because it's not using the "internal" palette at all in those cases.)

                  These are not RetroArch hotkeys; they function without the use of enable_hotkey button, and they can be remapped or disabled under quick menu > controls > port {n} controls.

                  Additionally, I still didn't find the thread that discussed it but I did figure out that in NES core lr-fceumm, internal palette is selected with L2 + (D-pad left/right) (again, not a RetroArch hotkey, can be remapped or disabled in controls.)

                  Hotkey+B = Reset / Hotkey+X = Retroarch menu

                  Reset and Menu Toggle are still coded into your controller config. You may remove the lines:

                  input_menu_toggle_btn = "3"
                  

                  ...and:

                  input_reset_btn = "1"
                  

                  ...if you wish.

                  • NES - Hotkey+L or R = Load/Save State Slots #0

                  This, I do not see in the controller config. Does it happen across other emulators or only NES? Can we see your NES and global retroarch.cfgs?

                  /opt/retropie/configs/nes/retroarch.cfg
                  

                  (Network share: configs > nes > retroarch.cfg)

                  ...and

                  /opt/retropie/configs/all/retroarch.cfg
                  

                  (Network share: configs > all > retroarch.cfg)

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

                    NES - Hotkey+L or R = Load/Save State Slots #0

                    This, I do not see in the controller config. Does it happen across other emulators or only NES? Can we see your NES and global retroarch.cfgs?

                    Load/Save state slot change is a global hotkey combo set by RetroPie controller auto-configuration, documented in https://retropie.org.uk/docs/Controller-Configuration/#hotkey.

                    1 Reply Last reply Reply Quote 0
                    • S
                      sleve_mcdichael
                      last edited by sleve_mcdichael

                      @mitu said in How Do I Block These Inputs on my Controller?:

                      Load/Save state slot change is a global hotkey combo set by RetroPie controller auto-configuration, documented in https://retropie.org.uk/docs/Controller-Configuration/#hotkey.

                      ...which is saved to your controller config in /opt/retropie/configs/all/retroarch/autoconfig/[device_name].cfg, yes? Or is this handled somehow else, too?

                      And they can also be set in the global, system, or any override config, I thought.

                      https://github.com/libretro/RetroArch/blob/master/retroarch.cfg#L556-L564

                      Their controller autoconfig as posted above doesn't have the input_save_state/etc. lines that mine has, but the hotkey functions are still activating with the L/R shoulder buttons. While the default NES core lr-fceumm does have native functions mapped to the shoulder buttons, these are FDS disk control functions, not save/load state, so I don't think that's what is happening here, as it is in the Gameboy system. So instead, I am wondering if maybe they've saved an RA configuration through RGUI which has written a custom config (the big one, with then-current values for all 3000-odd settings that are in RetroArch) that is configuring these functions outside the controller autoconfig. That's why I asked to see the NES and global configs.

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

                        @sleve_mcdichael said in How Do I Block These Inputs on my Controller?:

                        .. hotkey functions are still activating with the L/R

                        I'm thinking this means (D-Pad) left/right, which change the save state slot.

                        That's why I asked to see the NES and global configs.

                        Yes, the config files should make things more clear.

                        1 Reply Last reply Reply Quote 0
                        • S
                          sleve_mcdichael @AlphaBetaPie
                          last edited by

                          • NES - Hotkey+L or R = Load/Save State Slots #0

                          @mitu I had read this as "save or load a state in slot 0" but I suppose it could be read to mean "change the save/load state slot from 0."

                          A 1 Reply Last reply Reply Quote 0
                          • A AlphaBetaPie referenced this topic on
                          • A
                            AlphaBetaPie @sleve_mcdichael
                            last edited by

                            Thanks for the info all. With a combination of core remapping and removing some lines I didn't realize 8BitDo stuck into the autoconfig by default, I have removed access to 99% of these menus. Still having some issues closing off Mame's menus, but that will be another thread for another day. Thanks as always!

                            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.