[SOLVED] RetroArch Input Mapping for Keyboard

Status
Not open for further replies.

pofo14

Member
Due to all the great work being done with RocketLauncher, I decided to work on upgrading my system to the latest version. During the upgrade I also decided to try to streamline my emulator setup and leverage RetroArch for all systems possible.

So I got it running, played around with the overlays & shaders and like what I see so far. I am completely stuck on mapping the input to my keyboard / IPAC configuration. I have searched these forums and elsewhere but haven't been able to find a clear example / tutorial.

Can anyone point me in the right direction of how to setup retroarch to use keyboard input. Since all my emulators previously were configured the same, which is based off my IPAC config, I am thinking I should only need to do this mapping once, and either leave it in the global config, or copy it for each core.

Thanks in advance...
 

pofo14

Member
OK, so through much googling and trial and error I figured it out. I added information below that helped me out, hopefully it may help others if they have similar questions / issue's.

1) I turned off the setting 'config_save_on_exit' in RetroArch. Even through I had 'Config Per Core' turned on, it seemed to have some inconsistent behavior when automatically saving the config. It was overwriting my configs which I was editing manually which was part of my problem.

2) I got hung up understanding how the RetroArch Joypad "abstraction" mapped to a system controller. I found the wiki for the RetroPie project on github to be very helpful. The link below shows the mapping for a Sega Gensis Controller, but there are links to all supported systems as well.

https://github.com/RetroPie/RetroPie-Setup/wiki/Genesis-Megadrive

3) Once you understand the RetroArch joypad to System controller mapping, it is a pretty straightforward exercise to go into the appropriate <core>.cfg file and setup the keyboard mappings for the appropriate buttons. Below is an explanation of a my config for a 6 button sega genesis controller. The button layout is as follows:
D Pad Up = "Up Arrow" (input_player1_up = "up")
D Pad Down = "Down Arrow" (input_player1_down = "down")
D Pad Left = "Left Arrow" (input_player1_left = "left")
D Pad Right = "Right Arrow" (input_player1_right = "right")
A Button = "Left Control" (input_player1_y = "ctrl")
B Button = "Left Alt" (input_player1_b = "alt")
C Button = "Space" (input_player1_a = "space")
X Button = "Left Shift" (input_player1_l = "shift")
Y Button = "Z" (input_player1_x = "z")
Z Button = "X" (input_player1_r = "x")
Start Button = "5" (input_player1_start = "num5")

Here is a link to the full config file for reference: http://pastebin.com/JERNuBRc

4) Specifically for the 6 Button Genesis controller, you need to make sure your retroarch-core-options.cfg is configured properly for the controller. This step will apply to some other emulators that have multiple controller types.

picodrive_input1 = "6 button pad"
picodrive_input2 = "6 button pad"
picodrive_sprlim = "disabled"
picodrive_ramcart = "disabled"
picodrive_region = "Auto"

5) Lastly, I couldn't find any resource on the web that gives the exact text to put in for each keyboard "key". For example I have Left Shift mapped, but in RetroArch it is just "shift" (FYI Right shift is "rshift"). To determine the appropriate text to put in the RetroArch config I would actually run the Bind tool in the UI to update the config with the appropriate button. Once I figured it out the button, I found it easier to modify the rest within a text editor. To run the Bind Tool do the following:

- Open RetroArch, Load the appropriate Core
- Go to Settings-->Input Settings
- Set BindMode to RetroKeyboard
- Select User # Bind All (whichever controller you want to configure)

It will walk you through all the RetroArch Joypad buttons and ask you to select the appropriate key for that button. I would just press the keys I needed to know the text for and then let the time run out on the rest. After that I would open the config and set it up manually, but that is just me.

Assuming that your controlpanel uses the an IPAC (or something like it) and you use the same IPAC config for all emulators, you should be able to use a very similiar RetroArch config for input settings for all the cores. You will just need to validate the RetroArch joypad setup and tweak accordingly.

Hope this helps....
 
Status
Not open for further replies.
Top