How Do I Block These Inputs on my Controller?
-
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?
-
@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? -
@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.
-
@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"
-
@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.)
-
@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
-
-
@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.cfg
s?/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)
-
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.
-
@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. -
@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.
-
- 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."
-
-
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!
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.