Please do not post a support request without first reading and following the advice in

Keyboard Confusion with EmulationStation and RetroArch.cfg using: IPAC, RPi3B+, 15khz arcade monitor (focused on 0.78 libretro)

  • Setup Info:

    Here is the setup:
    Pi Model: 3B+
    Power Supply used: one with Kit (no lightning bolts ever)
    RetroPie Version: I installed the stretch image that was mandatory for 3b+ support (Raspbian Stretch 4.3) + curl for current RetroPie
    Built From: curl of current install script
    USB Devices connected: 1x IPAC2
    Controller used: IPAC2 -> Arcade buttons (using cherry switches)
    Error messages received: None that I have found
    Log found in /dev/shm/runcommand.log (if relevant):
    Guide used:
    File: (File with issue - with FULL pat
    Emulator: I am only concerned with the mame2003 set at the moment. so libretro (yes i have the 0.78 rom set this is not a rom issue)
    Attachment of config files: I'd be happy to post but I dont think any of my retroarch.cfg's are actually being used.

    What I am trying to do:

    I have an arcade machine running a rpi 3b+, using an GBS8100 for video sync, an amp for audio to the machine's original speaker, an IPAC2 for joystick to USB into the rpi3b+. Everything is working except button mapping.

    For clarity purpose:
    1p, 2p, CoinOP, 1p UDLR, 2p UDLR,
    buttons are mapped button not in the right positions in most configurations.

    I have 6 buttons for 1p and 2p (think street fighter layout).

    Here's the issue. When I setup emulationstation with the configuration it sets several of the p1 buttons for the IPAC; however at that point my retroarch.cfg never seems to be used.

    I have spent days reading these forum posts, the documents, and googling the issue. Im sure this is common but for the life of me I can not figure out why my configs arent being applied. I have tried about every combination of things to get this to work.

    Things Ive Read

    Things I have read repeatedly:

    and tons of related posts.

    Stuff Ive Tried

    I can confirm that i have removed all of the retroarch.cfg files that had more than the #include statement in them. I can also confirm that config_save_on_exit = "false"

    I have tried using:

    i have tried using:


    Neither seem to make any difference.

    I have reconfiged the emulationstation mappings a dozen different ways.

    Im sure the solution is something simple that I have missed, but am mostly surprised that there isnt just an IPAC to emulationstation and retroarch.cfg mapping somewhere I can use. At least none that I have found yet have worked.


  • Global Moderator

    @marion Don't delete any config files, they're in place for a reason.
    You can try re-configuring your input by

    • pressing tab while in-game, to bring up the Mame config dialog
    • Pressing Select + X (or Hotkey + X if you selected another key as hotkey) to open up RGUI and then using the Input configuration in RGUI to map player1/player2 buttons, then saving the Core overrides.

    Give this a try first instead of editing configuration files.

  • @marion What have you made input_player1_a equal to when you say you have tried? Please post the actual config for us to see because we could spot a typo, for example "f"would be correct but curly "smart quotes" “f” would not be. Then there is the question as to whether you auto configured your ipac through emulationstation (i.e.pressed each button on first boot) or skipped it and configured solely through the retroarch config files. You could find for example that it is working in Emulationstation but not retroarch. Take a look at this:

    alt text

    Pay attention to the quotes. The full article is this and is a great starting point.

    There can be no ready to go pre-configured file like you suggest for the ipac because everyone's panel is slightly different and what might work for me will probably not work for you and then the false promise of a plug and play outcome causes ill health!

    Good Luck!

  • @marion A very good point is made by @rbaker above. Those of us with arcade panels have built them differently, but we might also have our IPAC devices configured differently, so even if we did share config files, the hardware keys mapped inside the IPAC may not match.

    The image above in rbaker's post shows the button layout as two rows of four buttons:

    1sw1   1sw2   1sw3  1sw4
    1sw5   1sw6   1sw7   1sw8

    while my panel looks like this:

    1sw1   1sw2   1sw3
    1sw4   1sw5   1sw6 

    Furthermore, while rbaker uses LSHIFT for 1sw1, I am using LCONTROL. This is the keystroke that gets sent when I press my button wired to 1sw1 because that is how my IPAC is configured (i.e. using WinIPAC utility). The wiring matters, the location on your panel matters, and the actual key the IPAC is sending matters--and this is BEFORE any mapping is configured inside a retroarch.cfg file.

    The easiest way to figure this out is to make a little drawing of your panel, label all of the switches as wired. Then, either run a test program or hook up the IPAC to a windows box and run WinIPAC. Then, mark on your drawing which buttons are sending which keys.

    Finally, you should be able to look at a retroarch.cfg file which identifies the common gamepad button names, (a, b, x, y, etc) and you should be able to mark which IPAC keys should trigger these inputs based on which button/position you want to send each input.

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.