Controller doesn't work in retroarch until manually setting inputs
-
Hello! I'm running RetroArch on Debian x86. Using an xbox controller, I'm able to run through the ES controller wizard, and have controller support in ES. I see ES creating the appropriate file for the controller in
all/retroarch/autoconfig
as well.When I attempt to play a game that leverages retroarch, I run in to the issue that my controller does absolutely nothing, and instead my keyboard is used (hotkeys and core controls). I've tried unplugging my keyboard and restarting ES, but with no change.
When looking at the input settings in Retroarch while a core is up, I can see the Controller type is set to Retropad, with the Index set properly to my xbox controller, yet all of the bindings are only set to keyboard keys. If I run through the retroarch wizard to manually set bindings, everything works.
The problem with manually setting them, is that I don't think this is leveraging the retropad magic that ES provides, as it's using the controller specific keys. For example, when I then plug in my PS4 controller, the controller "works", but the mappings are all incorrect. According to documentation, if retropad was working, I'd imagine that the ES autoconfig would handle all of the mappings properly (i do indeed to an autoconfig generated for the ps4 controller as well).
One last thing to note is that this only appears to affect retroarch -- if I load up mupen64, the controller works just fine off of the ES autoconfig.
So my question is this: How can I get retroarch to support my controller(s) without having to manually map them within a core (or within retroarch at all)? Is this somehow related to the fact that my keyboard is available for control when the core loads up?
-
@jml said in Controller doesn't work in retroarch until manually setting inputs:
So my question is this: How can I get retroarch to support my controller(s) without having to manually map them within a core (or within retroarch at all)? Is this somehow related to the fact that my keyboard is available for control when the core loads up?
I think you may have stumbled on this bug, where the autoconfig profile for the joypad, created by EmulationStation, is not loaded by RetroArch because of the gamepad name change in SDL.
This may be easily fixed by renaming the file in/opt/retropie/configs/all/retroarch-joypads
with the original joypad name, as reported by RetroArch/udev. -
@mitu That worked perfectly. Thank you!
2 quick follow ups if you don't mind:
-
I noticed the PR from that thread that you opened seems mostly focused on the SDL issue. Does it also cover the similar issue described here when using udev?
-
A bit more general, but what is the best way to configure some of the additional hotkeys for retroarch? Does it have to be done manually from the config file? Or now that it's reading the auto-configs properly, I'll be able to do it from the retroarch UI and it will assign it to the proper RetroPad controller instead of the raw inputs as it was before?
-
-
@jml said in Controller doesn't work in retroarch until manually setting inputs:
I noticed the PR from that thread that you opened seems mostly focused on the SDL issue. Does it also cover the similar issue described here when using udev?
The PR is geared to solve this exact issue - reconcile the difference between the
udev
device naming and SDL's own naming.A bit more general, but what is the best way to configure some of the additional hotkeys for retroarch? Does it have to be done manually from the config file?
You can do it manually using the config file, though most of the buttons already have a hotkey assigned. If you replace one of the default hotkeys, make sure you don't re-configure the gamepad, they'll be overwritten.
Or now that it's reading the auto-configs properly, I'll be able to do it from the retroarch UI and it will assign it to the proper RetroPad controller instead of the raw inputs as it was before?
You can probably do it also from the RetroArch's menu, by saving an override, but it's better to keep it in the same auto-configuration profille (via manually editing) since it's simpler and applies to all cores.
-
@mitu I see. I was hoping there would be a non-config-editing way to handle this (as to not have to remember what changes I've made, etc. in the future). For example, if I wanted to add
hotkey + R3
to toggle fullscreen. For 360, that is button10
, for ps4, that is button12
.I thought that retropad provided an abstraction layer so that you could just set "toggle fullscreen" to "hotkey + r3", and it would handle determining R3 behind the scenes. But it sounds like I would need to manually configure each autoconfig file to have
input_toggle_fullscreen_btn
set to 10 and 12 respectively? -
@jml said in Controller doesn't work in retroarch until manually setting inputs:
I thought that retropad provided an abstraction layer so that you could just set "toggle fullscreen" to "hotkey + r3", and it would handle determining R3 behind the scenes. But it sounds like I would need to manually configure each autoconfig file to have input_toggle_fullscreen_btn set to 10 and 12 respectively?
Yes, the RetroPad abstraction doesn't apply here, you'd still need to configure the the
.._btn
on each controller auto-profile with the appropriate value. -
@mitu Sounds good. Thanks so much for all the help!
-
Hi @mitu
Same problem here. My controller stop working in Retroarch UI
My contoller
input_device = "Teensyduino Keyboard/Mouse/Joystick"
input_driver = "udev"File name in
/opt/retropie/configs.hdmi/all/retroarch/autoconfig
Teensyduino KeyboardMouseJoystick.cfgWith the older Retroarch version, the name of this file was
Teensyduino Keyboard_Mouse_Joystick.cfgBoth names no longer work with the UI. To play games, I have no problem.
I need help for that one.
Thanks, best regards
-
@DTEAM Please open a separate topic and post a verbose RetroArch log, along with the details of your system.
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.