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


This forum thread has some more information:

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:

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:

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

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).

81 thoughts on “Custom Controller Configuration

  1. 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

Leave a Reply

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