Ipac2 with retropie in keyboard mode issues with controls


I am building my arcade and I am using a Pi4; got the latest Retroarch build and updated the various elements. I ran at first boot in emulationstation, the setup for controller; I use an Ipac2 with 8 buttons per player, a joystick per player, and then I have 2 extra buttons per player.

In the setup I have the joysticks to up-down-left-right as usual, and as far as buttons I have X, Y, A, B, LT and RT for each player; this cover 6 out of the 8 buttons per player on the panel. I set select and start to the top 2 buttons, so this leave me with 2 extra buttons per player. One of those 2 is set as hotkey in emulationstation, the other is left unassigned for now.

I then ran Retroarch from the retropie menu, and went in the settings for controllers. Changed the number of players to 2 (since I have only the ipac 2 connected), and each controller is set to be a retropad so no analog controls. I went through the configuration,and configured each player in the same exact way as I did with emulationstation: XYAB LT RT, Select Start for the 8 buttons, the joysticks for movements and select and start for the top 2 buttons. On top of that, I went in the hotkeys menu, and selected the 2 remaining buttons (the one I set as hotkey in emulationstation and the one that was not assigned) and assigned one to quit retroarch, and the other to pull the retroarch menu.

This is where confusion starts; I save and quit, so this should now be the default for all cores in retroarch; but when I run emulationstation and run a game, for example an arcade running either mame or FBA, the game start, and when I press just the button to quit retroarch or to call the menu, nothing happens. I need to hold the button I set as hotkey in emulationstation AND either the menu button or the quit button, and this will pull the menu or quit the game.

My first question here is “why do I have to press the hotkey set in emulationstation, to quit retroarch?”.

So I told myself that the hotkey is always active and it is “passed” to retroarch from emulationstation. This means that I can use those 2 buttons I used for the menu and quit retroarch, in emulationstation as L and R shoulder buttons, since the menu and the quit functions will happen only when I press the hotkey; and here we have the second issue: now that I set L and R shoulder buttons in emulationstation, when I run a mame or FBA game, L and R works, but now I can’t quit anymore nor I can pull the menu, because those combinations of buttons does not work. And out of the blue, now to quit I have to hold for few seconds the hotkey button and the button I assigned as “start” button.

I didn’t change anything in the retroarch settings; so the second question would be “did emulationstation got upset that I did assign a non-hotkey function AND a hotkey function to the same button?”.

In the end, all that I want is to use the ipac2 for my 2 player controller; and that should be pretty straightforward, but this whole hotkey situation is really confusing and it is hard to deal with, since the documentation overall is only giving generic guidelines. I get that I assign controls in the cfg file, but if I set controls in emulationstation, which run retroarch and those controls get messed up, to the point where the global controls does not even stick between cores (tried to run a Sega CD game and my A button which should be the first fire button was not working, and instead the Y button was the fire button; which I assume it is because the Sega controller has XYZ as buttons?).

On Windows I set the keys to my xbox one controller and everything works fine; select+start always works; but as far as RPI with the ipac2, since it emulate a keyboard; I guess it has issues and mess up things. Spent a day going back and forth trying to make sense of it, and most videos and tutorials mention controllers…Yes, that works great! The issue is with a usb encoder like the Ipac2, which is simulating a keyboard. For mame works great, but in a setup like the emulationstation+retroarch, it seems to be just a big pain in the neck. And I am aware that I can switch it to Xinput mode; although that didn’t work because my arcade is not set to be used as joypad; I tried and things were pretty weird when I switched to the various ipac2 modes. The only one that seems to work somehow is the keyboard mode which is the default.

Sorry for the wall of text; hopefully someone has an ipac2 used as keyboard, that can give me suggestions about how to set up things on my retropie setup. Thanks in advance

I use an IPAC as a keyboard in one of my setups (and a JPAC in another) with no issues. However, I don’t use EmulationStation and I’m afraid I can’t give you any advice on it because I don’t know anything about it.

If you have a hotkey enabler set in RetroArch, it will not register any hotkey events unless that button/key is held down first. Assigning a hotkey enabler to another key that you intend to use for in-game functionality (select/coin is a common one that people try to use for double-duty) is dicey, as the hotkey enabler also blocks non-hotkey functions once it’s held. So, it depends on the individual core (and even individual game) how long it takes to respond to a button being pressed as to whether that button action will even fire.

Thanks; so you use retroarch directly? On which platform?

Where can I check if I have the hotkey enabler? The options does not show that from what I can tell.

And to be clear; can I use a button (say the connection to the coin and start), for multiple operations, like if the modifier is not pressed I can use the button for coin insert and the other button for start; while when the modifier is on, I can use it to pull the menu and quit retroarch? This is fundamentally what I am trying to do in the end.

Yes, I use RetroArch directly via Lakka on RPi3B.

The hotkey enabler in RetroArch is in settings > input > hotkey binds.

For RetroArch’s hotkey enabler, at least, you shouldn’t assign the hotkey enabler to a gameplay button because it’s a crapshoot whether the gameplay button will fire or not. However, as long as you have at least 1 spare button for the hotkey enabler, you can put all of your other hotkey functions on gameplay buttons and they can still function just fine.

Thanks, I set the button in retroarch to be keyboard number 6, same one set in emulationstation as hotkey.

Although there is no option that allow me to change the hotkey behavior; I should see the option to turn hotkey off, on all the time or only when the hotkey modifier is press; I don’t see this.

In RetroArch, it’s always “only when modifier is pressed”.

1 Like

Thanks; I just reset the retroarch cfg file and the emulationstation and started all over again. Now it seems to work as expected for most cores.

How do I configure per-core? Do I load a game and then go in the menu and make the changes to the controls for each core? Or does it works if I run retroarch from the menu, then load one core at time and set them up?

Once you have a core + content loaded, you can make changes and then go to quick menu > overrides to save per-core/game settings, and/or you can go to quick menu > controls to move the core’s functions around on your gamepad/retropad if you don’t like the default retropad mapping and save those changes on a per-core/game basis, as well. In quick menu > options, you can access the settings exposed by the core itself and those automatically change for the whole core, but you can save a “game options file” to make them apply for a single game.