Solved System Specific Controller Inputs Switching
-
Hi,
First of all, thank you all who develop Recalbox. It's a great gaming machine.
I have a question regarding system specific controller inputs switching on a RPi4. Let me explain, right now I have
two SNES controllers in Input 1 and 2 and one PS5 DualSense controller in Input 3. For newer games that support
all the extra buttons and analog sticks, I want to use the PS5 controller when I play. For older games such
as NES and SNES, I want to use my SNES controllers when I play.The problem with my current configuration is that no game recognizes my PS5 controller because it are
in Input 3 right now. I have to manually switch it to Input 1 before I start a game where I want to use it.
And of course it will be the other way around if I now start an older game where I want to use my SNES controllers.My question then is quite obvious, is there any way to system specific switch these inputs automatically?
Or in some other way make all games believe that both SNES controller #1 and my PS5 controller are in Input 1?Thanks in advance...
-
My question then is quite obvious, is there any way to system specific switch these inputs automatically?
No, making Recalbox automatically guess which control you want to use is not possible.
But, you can configure this manually, making a specific configuration file per emulator or game:
- https://recalbox.gitbook.io/documentation/tutorials/controllers/configuring-custom-buttons/how-to-customize-controller-mapping
- https://recalbox.gitbook.io/documentation/tutorials/controllers/configuring-custom-buttons/create-a-custom-configuration-by-emulator
There is yet another way to do this, with a configuration overload file:
-
@zing
I managed to make it work the way I wanted.
Thanks so much! -
Jumping in on this one... I would like to add this as a feature wish, allow me to configure the used controllers not only per system, but on a per game basis. Always thinking of this when juggling controllers again
I have this game where I want to use the analog flight stick, those other ones which I like best with my Competition Pro(s), most others with SNES/PS controller. May even depend who is using the system. The kid might want to use the smaller SNES controller as primary device, while I like the larger PS controller.
And adding to this, not everything is always plugged in.I imagine Recalbox pops up a dialog asking me what to do:
- I can select and change the order of the plugged in controllers as primary and secondary
- I can save the settings for this game
- if I saved a certain controller, like the analog flight stick, and it's not plugged in, the dialog asks me to plug it in before I proceed. Or allow me to temporarily select another one as fallback.
Could be optimized by only showing the first time and when something was saved and does not match.
And/or maybe use the controller I started the game with as primary by default. This could already cover most of cases actually, at least for single player (not sure about the analog stick use case, though).
-
I imagine Recalbox pops up a dialog asking me what to do:
We have a small team of developers, and what you are requesting would not exactly suit all users, to do as you suggest you would need the system to request it before each game, which would definitely be something very annoying in my opinion, and I'm sure the same applies to most users.
Could be optimized by only showing the first time and when something was saved and does not match.
It's not that simple, it would require a lot of programming effort, our developer team can't stop improvements and bug fixes to focus on developing something like that.
Bypassing the development of specific functions, and ignoring popups at each game start, what you are requesting is already available in the controls menu (Switch player 1 joystick), and/or, it is easily configurable with configuration overloads:
https://recalbox.gitbook.io/documentation/advanced-user/configuration/configuration-overload
https://recalbox.gitbook.io/documentation/advanced-user/configuration/configuration-overload/retroarch-overloads -
@zing said in System Specific Controller Inputs Switching:
We have a small team of developers, and what you are requesting would not exactly suit all users, to do as you suggest you would need the system to request it before each game, which would definitely be something very annoying in my opinion, and I'm sure the same applies to most users.
Well, there are other features in Recalbox that don't suit me. Then I don't use them, so what? I didn't say it's perfect, this may require some more thought, of course. It's just an idea to simplify juggling with different controllers. Currently this does not really work so well. Don't know how common this is, but I wouldn't consider myself a pro and still have a few different controllers.
And I would probably also be annoyed if the system asked me every time. It should be in a way that if you don't like it, don't use it.
As I wrote, I could imagine some cases could be covered by simply declaring the controller I use to start the game as 1st player. That's in my opinion a great thing with even just two controllers...
I also understand that there is always too much work for too few people, but it was just an idea, a suggestion.It's not that simple, it would require a lot of programming effort, our developer team can't stop improvements and bug fixes to focus on developing something like that.
I would consider this an improvement.. And sorry, there are lots of places where you make handling nicely easy with things like that. I don't have to configure my buttons in a text file, there is a nice UI. Or whatever. That's why I like Recalbox!
Bypassing the development of specific functions, and ignoring popups at each game start, what you are requesting is already available in the controls menu (Switch player 1 joystick),
Going into the Controls menu is what I do right now. And it's a bit cumbersome, not plug and play. (Also configuring a controller order with this weird swapping logic is more like solving a puzzle)
and/or, it is easily configurable with configuration overloads:
You mean that one: https://wiki.recalbox.com/en/advanced-usage/configuration-override ?
Well, "easy" obviously depends on how deeply involved you are with the project But yea, I have it on the list to check it out.
It does not support me if the configured controller is not plugged in, though, by telling my "Hey, you configured the Competition Pro for this game. Plug it in!" -
It's not that simple, it would require a lot of programming effort
Sorry, I don't think I was clear enough.
I did not say that your suggestion is not an improvement, I just wanted to point out that a modification that requires such a great effort and exclusive dedication to it while there are already resources that meet this need is not something that will be prioritized while there are other situations where there is no alternative solution.
You mean that one: https://wiki.recalbox.com/en/advanced-usage/configuration-override ?
Well, "easy" obviously depends on how deeply involved you are with the projectYes, I mean that one, and when you have the opportunity to try it out, you'll see that you don't need a high level of involvement in the project: it just takes patient reading and a little dedication.
If that's not enough, we're here to help, don't be afraid to ask.
-
@zing Well, sure it's possible to dig through documentation and config files, I'm also capable to dig through code, if needed. But that's not the promise of Recalbox, that's plug and play, which I highly appreciate
And when I bring up such a wish I don't expect immediate implementation. It could simply be taken as a "Hey, here is a use-case which is somewhat difficult to solve currently. Maybe take it up for consideration for future development. Cheers!" And you could say, "We don't have much capacity right now, but interesting point!". Instead of downright turning it down...Anyway, I went through the docs, the various config files, and tried a few things. But I get the impression that reordering might work for libretro based emulators, but is not possible for Amiberry, which is the case where I'm coming from... (Didn't investigate Dosbox yet)
(And as it is a static config in any case, it probably couldn't react on dynamic conditions, like "use starting controller as primary")
-
@h2so4jb Hello, I have the exact same requirement, having my 3rd controller detected as input 1 when it is connected (and having my 4th controller detected as input 2). I checked the links shared by Zing but didn't manage to find a solution.
Can you please share how you manage to do this? I'm really interested
Thank you !
-
@_arthur_ Hi! Well, the actual problem I did not solve. It's not solvable the way Recalbox handles devices with Amiberry, I think. (I didn't try it, but probably also not for Dosbox... unless you use some libretro based Dosbox, I guess) They are not read form the Retroarch configs, but passed as runtime arguments when starting the game, probably in the order they were plugged in or detected on system start. From this list and order the Amiberry config is then generated on-the-fly. Device ids, names or anything like that is not taken into account. Just the order, which may be anything. (IIRC)
At least with Recalbox 8 or so this on-the-fly generating was fixed, so that the generate config at least makes sense now and shows proper device names. So at least you can change it now in the Amiberry GUI, everytime you start the game.
You could override it with custom uae files. It should work within the limitations. But again, only based on order. So you could store "device #3" as first controller. And it will be whatever the system figures out as #3. If you are lucky it's stable. If there is no #3, because it's not plugged in, well... -
the whole controller setup is bugged out.
for my kids it gets pretty frustrating.
I don't remember this being a problem with 6/7.xmy issue had been that if you have 2 controllers plugged in, controller 2 gets set to player one in most of the emulators all the time, and you can only use (special+start) on controller one.
kids get so frustrated playing a game with controller 2 and they cant exit game
also confused that ps3 controller shows them theyre player 1 but they are playing with player 2. and 3 and 4 have same issues.other issues with dolphin also, need keyboard plugged in, to be able to (speical+start) exit.
sometimes if i remember correctly keyboard will set itself as player one.i can deal with it but the kids get confused and frustrated when im not around.