Custom Controller Configuration

Controller configuration is specified in configuration files bundled with FS-UAE. The folder share/input/ contains the bundled configuration files. There is one .ini file per controller type.

FS-UAE Launcher comes with a joystick / gamepad configuration tool (started from the settings dialog). This tool will create configuration files for you and it is highly recommended.

Custom configurations can be placed in the directory:

(My) Documents/FS-UAE/Controllers/

The name of the ini file is the system name of the controller, converted to lowercase, with an underscore between each work. Characters other than letters and numbers are also converted to underscore, and there is never more than one underscore between each word, and the name will not start nor end with underscore.

Example: Controller (Xbox 360 Wireless Receiver For Windows) becomes

controller_xbox_360_wireless_receiver_for_windows.ini

This forum thread has some more information: http://eab.abime.net/showthread.php?t=63800

Universal configuration file (recommended)

If you have a general-purpose gamepad with button layout more or less like PlayStation/Xbox controllers (e.g. a hat, two analog sticks, 4 buttons to the right, start/select and shoulder/trigger buttons), you can create a config which maps the controller events to generic event names (which again is automatically mapped against amiga input events). In this way, the same configuration can be shared with other emulators using the same configuration file format without having to create an explicit configuration for amiga, super nintendo, c64, and so on.

Here is a complete example for this kind of configuration file:

[default]
include = common/gamepad
axis_0_neg = lstick_left
axis_0_pos = lstick_right
axis_1_neg = lstick_up
axis_1_pos = lstick_down
axis_2_neg = rstick_left
axis_2_pos = rstick_right
axis_3_neg = rstick_up
axis_3_pos = rstick_down
button_0 = west_button
button_1 = south_button
button_2 = east_button
button_3 = north_button
button_4 = left_shoulder
button_5 = right_shoulder
button_6 = left_trigger
button_7 = right_trigger
button_8 = select_button
button_9 = start_button
button_10 = lstick_button
button_11 = rstick_button
button_12 = menu_button
hat_0_left = dpad_left
hat_0_right = dpad_right
hat_0_up = dpad_up
hat_0_down = dpad_down

What you must to is to check (with a joystick test application) what button number each physical button on your gamepad has, and update the configuration accordingly.

Example: If you test a button labelled  “start” on your controller, and you want to map this to the generic event “start_button”, you press “start” in a joystick tester program. Let’s say the program indicates that this is button 5! In the config file, the first button is numbered 0, so if the joystick test program calls the first button “1”, you must subtract one from the number, and you get:

button_5 = start_button

This line is important to include:

include = common/gamepad

– since this imports the common gamepad configuration file which maps the generic button names to Amiga joysticks.

Additional information

Axes on your controller are identified as axis_x_neg/axis_x_pos where x is the zero-based index (the first axis is 0). Hat events are referred to with hat_x_left, hat_x_right, hat_x_up and hat_x_down (x is hat number – the first hat is 0). Button events are simply button_x (where button_0 is the first button on the controller).

Also, remember to check the log file to see whats going on when FS-UAE starts. You will probably get some hints to what’s wrong if it does not work.

If you create a configuration file to support your controller, I would very much like a copy of this file to include with FS-UAE in future releases.

Amiga-specific configuration file

If you have a controllers which looks nothing like a “standard” gamepad, if can be better to create a specific configuration file and map the Amiga joystick events directly.

If you created a universal configuration you do not have to add [menu] or [amiga] sections.

The ini file should contain a section [amiga] with a mapping between controller events and amiga joystick events. You should also create a [menu] section where you provide mapping for the menu navigation (if you want to navigate the menu).

Here is an example for a joystick with one stick and 4 buttons:

[menu]
axis_0_neg = left
axis_0_pos = right
axis_1_neg = up
axis_1_pos = down
button_0 = primary
button_1 = back
button_2 = select
button_3 = start

[amiga]
axis_0_neg = left
axis_0_pos = right
axis_1_neg = up
axis_1_pos = down
button_0 = 1
button_1 = 2
button_2 = 3

Amiga events are named left, right, up, 1 (fire), 2 (secondary fire) and 3 (tertirary fire). (see common/gamepad.ini for Amiga CD32 controller mapping).

88 thoughts on “Custom Controller Configuration

  1. Hello,

    Trying to bind del key of amiga keyboard to button of xbox one gamepad.
    I tried this “button_4 = action_key_del” but it isnt working.
    For example “button_4 = 1” is successfully binding fire to buttton 4 of gamepad.
    Should i activate keyboard emulating or something?

    • Hi, in the controller config, you cannot generally use the “actions”, you can only use the controller config to map to joystick events for the ports, as well as a few special actions (such as menu). Being able to specify any action would indeed by use, but it isn’t possible right now.

      You can sort of make it work by using advanced settings in FS-UAE Launcher / config file in FS-UAE, for example:
      joystick_0_button_4 = action_key_del should work, if your xbox one gamepad is the first in the list of recognized joysticks on your system.

      • Finally make it work. I set first port for joystick and xbox controller and second port for PAD32 and Mac OS keyboard.

  2. Hi

    First up great emulator and I’m enjoying playing some of the old Amiga games I had and many that I bought from Amiga Forever..

    One issue I am having is with my wired xbox 360 controllers. They are not recognised by FS-UAE.

    I’ve booted the emulator up 4 times now and I only once have they worked. The joysticks are always plugged into the computer and directly into USBs, that is no USB hubs. Any help greatly appreciated

  3. Hi there,

    I figured it out by trial-and-error:
    For the PS1 Gamepad I had to enter the following into the advanced settings of the FS-UAE Launcher. The Arcade mode were taking then the right settings as well!
    hid_6666_0667_button_0 = action_joy_1_fire_button
    hid_6666_0667_button_1 = action_key_space
    hid_6666_0667_button_2 = action_joy_1_up
    hid_6666_0667_button_3 = action_joy_1_autofire_button

    And this one for the Competition Pro USB version:
    mosic_usb_2a4k_gamepad_button_0 = action_joy_1_autofire_button
    mosic_usb_2a4k_gamepad_button_1 = action_key_space
    mosic_usb_2a4k_gamepad_button_2 = action_joy_1_fire_button

  4. Hi there,

    I started now with a Gamepad configuration for Turrican II. Normally I would need these functions on the PS1-Gamepad: Fire, autofire and Space. Fire is no problem (north and south button have the same function here), but is it possible to create also a button with autofire instead of switching it on and of via the F12-menu?

Leave a Reply to FrodeSolheim Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.