Skip to content

Setting up Input Controllers

Horace And The Spider edited this page Jan 20, 2018 · 10 revisions

From Amiberry 2.5 onwards, support is provided for universal gamepad / controller mapping.

There are two options available for this purpose:

  • A standard USB or Bluetooth connected device, automatically detected by the host system
  • Remapping of keyboard controls (or a keyboard controller device, such as Ultimarc's I-PAC devices) to act as a controller.

To use a keyboard controller as a joystick device,

You can use the controller for regular in-emulation play (mapped to any Amiga port, including the optional Parallel port input), as either a classic Amiga Joystick, or a CD32 controller, or you can customise your settings to allow keyboard controls to be mappe to the controller also.

The 'first' detected controller on the host system will also be able to navigate the Amiberry menus.

Using a Standard Controller

Any controller which is currently picked up by the host system should be availble for use within Amiberry.

If you want, you can verify that your controller is available by using the command jstest with the input number for your device by typing into a command prompt jstest /dev/input/js0

This will display information regarding the first connected "joystick" device (i.e. a controller) and allow you to see the number of buttons, hats (often used for d-pads) and axis (thumbsticks and d-pads) available.

jstest /dev/input/js1 jstest /dev/input/js2 etc can be used if you wish to perform the same check on additional devices.

Click here to view an example output.

By default, Amiberry will assume that the "fire button" (aka 'Red' on the Amiga CD32 layout) is mapped to the button #0 of any connected device. The second button (aka 'Blue') will be on button #1 etc.

For some devices with smaller number of buttons, this may be acceptable. However, for some controllers this may not be ideal, for example where Sony's Playstation DS3 controller has the 'select' button as button #0. For these situations, a controller map will be required (see below.)

Creating a controller map

In order to ensure your controller is laid out appropriately, regardless of button numbering/ordering, you will need to create a controller map, which will tell Amiberry which buttons to map to which Amiga controls.

For this, Amiberry follows the conventions of RetroArch, as an existing standard. This is also used by the popular emulation distro RetroPie. RetroArch controller maps (.cfg files) are simply plain text files which are used to associate any part of a device (buttons, axis etc) to specific actions - this means you will be able to get the same function regardless of device used.

If you are using a pre-packaged system, such as RetroPie, controller mapping, your controller will have already had a RetroArch configuration set up, and you can skip this section.

If you require the creation of your own .cfg file, or wish to use a layout specifically for Amiberry, you can create a file for this purpose with a plain text editor.

You must name the file after the device, as it appears in jstest /dev/input/js0 and append the file name with '.cfg' (you should ensure that any .txt extension is removed) for example, Sony PLAYSTATION(R)3 Controller.cfg would be the filename for a common Sony Playstation DS3 controller.

If you are not using an existing RetroArch system build such as RetroPie, it is recommended you save the .cfg file to a Controllers sub-folder within Amiberry's installed location.

input_up_btn = "4"
input_down_btn = "6"
input_left_btn = "7"
input_right_btn = "5"

input_a_btn = "13"
input_b_btn = "14"
input_y_btn = "15"
input_x_btn = "12"

input_select_btn = "0"
input_start_btn = "3"

input_l_btn = "10"
input_l2_btn = "8"
input_l3_btn = "1"

input_r_btn = "11"
input_r2_btn = "9"
input_r3_btn = "2"

input_l_y_minus_axis = "-1"
input_l_y_plus_axis = "+1"
input_l_x_minus_axis = "-0"
input_l_x_plus_axis = "+0"

input_r_y_minus_axis = "-3"
input_r_y_plus_axis = "+3"
input_r_x_minus_axis = "-2"
input_r_x_plus_axis = "+2"

input_menu_toggle_btn = "12"
input_enable_hotkey_btn = "0"
input_reset_btn = "14"
input_exit_emulator_btn = "3"

If your device does not use button numbering for the HAT (d-pad) of your controller, but instead uses a 'hat', this can be specified as per the following example, which would use hat 0 as standard up/down/left/right controls:

input_up_btn = "h0up"
input_right_btn = "h0right"
input_down_btn = "h0down"
input_left_btn = "h0left"

The following picture will help you associate the correct buttons with your controller. Common names are given with associated RetroArch names. Controllers Layout

Select the location your RetroArch controller map(s) from within Amiberry

From the Amiberry GUI you should navigate to the Paths panel. From here you will need to select the location where your .cfg file(s) have been stored.

For RetroPie, you should select /opt/retropie/configs/all/retroarch/autoconfig/

Once selected, click the 'Rescan Paths' button shown at the bottom of the panel.

Verify RetroArch controller mapping

The easiest way to verify if your RetroArch controller map has been recognised, is to check for the [R] on the Custom Control panel, adjacent to the Input Device name. This will otherwise be displayed as [N] (Normal Controller}

Custom Panel

Using the RetroArch HotKey, standard Commands and Control customisations

It is possible to use the RetroArch settings for emulator quit, GUI/menu activation and emulation reset. More information on this can be found on the RetroArch commands page.

You can also set game-specific control customisations, e.g. mapping individual keyboard keys to controller buttons. More information for this can be found on the Custom Controls page.

Clone this wiki locally