FTL: Faster Than Light Guide

[How to] add controller support for FTL: Faster Than Light

[How to] add controller support

Overview

This guide shows how to add controller support in a few simple steps.

Foreword

This guide will show how to add controller support to FTL: Faster Than Light. Unfortunately the game does not have any official support for controllers, offering only keyboard + mouse controls, but it’s nothing that can’t be fixed using external tools!

I provide two sets of mappings to suit different playstyles – a basic and an extended – which differ in the number of keys mapped and slightly in the layout. However, because this is an unofficial method all the key/button mappings provided in this guide are based on my personal preferences. I have tried to make them as reasonable and universal as possible, but if something doesn’t feel right/comfortable it’s easy enough to customize the mappings (which will also be covered in the guide).

Tools

This guide is based around using a gamepad-to-keyboard emulator in order to translate the gamepad input into keyboard/mouse input that FTL can understand.

The software of choice for this guide is JoyToKey, quite possibly the best stand-alone tool that offers such functionality. Its tiny footprint means running the emulation does not impact on game performance in any way, and the added input lag is completely imperceptible.

Currently two versions of JoyToKey can be found, a Freeware and a Shareware version. The differences between the two are explained below, and this guide will offer instructions for both versions. I personally use JTK 5.3.1 (current full paid version at the time of writing) but have also used the freeware versions for years.

Freeware

The older versions of JoyToKey (up to and including 3.7.9) were released as freeware, available for download from the developer’s site. With the coming of version 4.x the licensing was changed to Shareware (see below), but the older versions can still be easily found around the web. Some example sources include:

Shareware

Following version 4.x the licensing for JTK was changed to a free to try shareware, with the full version costing $7. The free trial offers most of the functionality, so check that out first if interested. The trial and full version are available from the JTK homepage[joytokey.net]. Blatant advertisement follows: if you ask me JTK is well worth the $7, you’ll get much much more value out of this tool as you can use it to control just about anything with a pad.

As far as improvements go 5.3.1 has some useful changes:

  • an option to suspend mapping (sorely missing in the old versions, can be improvised)
  • bind mapping profiles to specific applications (auto-load profile when app starts)
  • bind specific devices to different joystick configurations within a profile
  • sensitivity settings now separate for each stick
  • Auto-fire was refined somewhat + more controls
  • buttons can now be toggled (always pressed)
  • mapping list was refreshed to be easier to understand for beginners
  • added joystick presets for easier selection (1/2/4 sticks with/without D-pad)
  • optional faster processing (increases max key (auto)press rate from 30/s to 60/s)

None of this is absolutely necessary for FTL, though it makes life a little easier (as explained below).

Important differences between 3.7.x and 5.x.x

As far as basic functionality goes, the two versions are equivalent. The internals are vastly different though, and this affects the way profiles are handled and stored.

3.7.x
3.7.x profiles can store multiple joystick configurations, however when using multiple physical pads their order is fixed and bound to the order JTK detects the controllers (i.e. config #1 is used for first plugged in pad, config #2 for second pad, etc). So while it is possible to include different mappings for each joystick it does impose the requirement that all different joysticks must always be plugged in and always in the same usb ports. Totally not viable in this case!

So I will provide two separate config files for each group of controllers. Simply save the one to match your controller (or save both and switch profiles as and when needed).

5.x.x
Thankfully, 5.x.x supports pairing specific devices to specific mapping sets within a single profile, so only one config file is needed! Now, the mapping sets can’t be renamed AFAIK, so they’ll appear as Joystick 1 and Joystick 2 in the JTK window. They correspond to the PS and Xbox mapping respectively. For the extended profile that’s Joystick 1 to Joystick 4, with PS on 1(base)-2(alt) and xbox on 3(base)-4(alt).

The way to take advantage of this is to go to the Options tab after the profile is selected, and press Configure. In the new window head over to the second tab. This screen allows to pair up any device JTK has previously detected with a specific mapping. To set up the pairing(s) simply select your controller from the first list and match it to either Joystick 1 (for ps-type controllers) or Joystick 2 (for xbox-type controllers) and press ok. For the extended profiles this would be Joystick #1 and Joystick #3 respectively. This setting is saved in the main .ini for JTK and is device-specific so I can’t share it for easy copy-paste. However, this is also a global setting that takes effect for any and all profiles created. So if you use JTK for a lot of games this setting might need to be changed when switching to/from a different profile.

Instructions

Setting up JTK is very simple, and the process is the same irrespective of the version. JTK does not require installation, simply unzip the downloaded archive to a convenient place.

The normal process would be to start JTK, click on Create to open a new profile, and start mapping the desired buttons. However, for this guide the mappings will be provided. So:

  • In the same folder as JoyToKey.exe create a new text file
  • Open the file in a text editor (eg Notepad)
  • Pick desired control scheme (see button explanations below).
  • Depending on the JTK version used navigate to the correct section in this guide.
  • Copy the code and paste it into the open file. Save and close editor.
  • Rename the file as desired, making sure to change the extension to .cfg (eg ftl.cfg)
  • If using 5.x.x set up device/profile pairings under Options -> Configure (see bottom of previous section)

That’s all there is to setting it up. Now all that’s needed is to start JTK and select the FTL profile from the list and the mappings will be applied instantly. Read below for an explanation of the mappings.

Note: To cater to as many players as possible I’ve included bindings for both the xbox controllers as well as ps/ps-style gamepads. That, and each controller type has slightly different button IDs.

Also note: the mappings are system-wide and affect any and all inputs, so make sure to close JTK (or suspend mapping in 5.x.x) when not needed.

Controls
| —————————–+—————————– | | Basic | Extended | | ——————+———-+———-+—————— | | Function | Button | Function | +——————-+———————+——————-+ | Mouse move (fast) | Left Stick | Mouse move (fast) | | Mouse move (slow) | Right Stick | Mouse move (slow) | | a | Dpad Left | a | | s | Dpad Up | s | | d | Dpad Right | d | | f | Dpad Left | f | | 1 | A / Suare | 1 | | 2 | B / Cross | 2 | | 3 | X / Circle | 3 | | 4 | Y / Triangle | 4 | | Left click | LB / L1 | Left click | | Right click | RB / R1 | Right click | | Shift | LT / L2 | Change mapping | | Space | RT / R2 | shift | | Esc | Left Stick (Press) | space | | Enter | Right Stick (Press) | j | | Esc | Back/Select | Esc | | Enter | Start | Enter | +——————-+———————+——————-+ | While holding LT/L2: | +———————+——————-+ | Dpad Left | g | | Dpad Up | h | | Dpad Right | t | | Dpad Left | r | | A/Suare | 5 | | B/Cross | 6 | | X/Circle | 7 | | Y/Triangle | c | | Left Stick (Press) | z | | Right Stick (Press) | x | +———————+——————-+

Customising controls

Once the proper config file is created (see above) modifying the bindings is trivial. With JTK open and the FTL profile selected the right half of the JTK window will display all the mappings. Changing them is as easy as clicking twice on a desired entry (opens a new window) and pressing the desired key. In 5.x.x pressing anything on the gamepad will highlight the relevant entry in the list.

3.7.x Config – PS (Basic)

PasteBin link[pastebin.com]

[General] FileVersion=37 NumberOfJoysticks=1 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 Use8Axes=1 UsePOV=1 [Joystick 1] Axis1n=2, -80, 0, 0, 0, 0, 0, 0 Axis1p=2, 80, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -80, 0, 0, 0, 0, 0 Axis2p=2, 0, 80, 0, 0, 0, 0, 0 Axis3n=2, -20, 0, 0, 0, 0, 0, 0 Axis3p=2, 20, 0, 0, 0, 0, 0, 0 Axis4n=0 Axis4p=0 Axis5n=0 Axis5p=0 Axis6n=2, 0, -20, 0, 0, 0, 0, 0 Axis6p=2, 0, 20, 0, 0, 0, 0, 0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00, 0 POV1-2=1, 44:00:00, 0 POV1-3=1, 46:00:00, 0 POV1-4=1, 41:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00, 0 Button02=1, 32:00:00, 0 Button03=1, 33:00:00, 0 Button04=1, 34:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=1, 10:00:00, 0 Button08=1, 20:00:00, 0 Button09=1, 1B:00:00, 0 Button10=1, 0D:00:00, 0 Button11=1, 1B:00:00, 0 Button12=1, 0D:00:00, 0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0

3.7.x Config – PS (Extended)

PasteBin link[pastebin.com]

[General] FileVersion=37 NumberOfJoysticks=2 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 Use8Axes=1 UsePOV=1 [Joystick 1] Axis1n=2, -40, 0, 0, 0, 0, 0, 0 Axis1p=2, 40, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -40, 0, 0, 0, 0, 0 Axis2p=2, 0, 40, 0, 0, 0, 0, 0 Axis3n=2, -20, 0, 0, 0, 0, 0, 0 Axis3p=2, 20, 0, 0, 0, 0, 0, 0 Axis4n=0 Axis4p=0 Axis5n=0 Axis5p=0 Axis6n=2, 0, -20, 0, 0, 0, 0, 0 Axis6p=2, 0, 20, 0, 0, 0, 0, 0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00, 0 POV1-2=1, 44:00:00, 0 POV1-3=1, 46:00:00, 0 POV1-4=1, 41:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00, 0 Button02=1, 32:00:00, 0 Button03=1, 33:00:00, 0 Button04=1, 34:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=5, 1 Button08=1, 10:00:00, 0 Button09=1, 1B:00:00, 0 Button10=1, 0D:00:00, 0 Button11=1, 20:00:00, 0 Button12=1, 4A:00:00, 0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0 [Joystick 2] Axis1n=2, -40, 0, 0, 0, 0, 0, 0 Axis1p=2, 40, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -40, 0, 0, 0, 0, 0 Axis2p=2, 0, 40, 0, 0, 0, 0, 0 Axis3n=2, -20, 0, 0, 0, 0, 0, 0 Axis3p=2, 20, 0, 0, 0, 0, 0, 0 Axis4n=0 Axis4p=0 Axis5n=0 Axis5p=0 Axis6n=2, 0, -20, 0, 0, 0, 0, 0 Axis6p=2, 0, 20, 0, 0, 0, 0, 0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 48:00:00, 0 POV1-2=1, 54:00:00, 0 POV1-3=1, 52:00:00, 0 POV1-4=1, 47:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 35:00:00, 0 Button02=1, 36:00:00, 0 Button03=1, 37:00:00, 0 Button04=1, 43:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=0 Button08=1, 10:00:00, 0 Button09=1, 1B:00:00, 0 Button10=1, 0D:00:00, 0 Button11=1, 5A:00:00, 0 Button12=1, 58:00:00, 0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0

3.7.x Config – xbox (Basic)

PasteBin link[pastebin.com]

[General] FileVersion=37 NumberOfJoysticks=1 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 Use8Axes=1 UsePOV=1 [Joystick 1] Axis1n=2, -80, 0, 0, 0, 0, 0, 0 Axis1p=2, 80, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -80, 0, 0, 0, 0, 0 Axis2p=2, 0, 80, 0, 0, 0, 0, 0 Axis3n=1, 20:00:00, 0 Axis3p=1, 10:00:00, 0 Axis4n=2, -20, 0, 0, 0, 0, 0, 0 Axis4p=2, 20, 0, 0, 0, 0, 0, 0 Axis5n=2, 0, -20, 0, 0, 0, 0, 0 Axis5p=2, 0, 20, 0, 0, 0, 0, 0 Axis6n=0 Axis6p=0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00, 0 POV1-2=1, 44:00:00, 0 POV1-3=1, 46:00:00, 0 POV1-4=1, 41:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00, 0 Button02=1, 32:00:00, 0 Button03=1, 33:00:00, 0 Button04=1, 34:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=1, 1B:00:00, 0 Button08=1, 0D:00:00, 0 Button09=1, 1B:00:00, 0 Button10=1, 0D:00:00, 0 Button11=0 Button12=0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0

3.7.x Config – xbox (Extended)

PasteBin link[pastebin.com]

[General] FileVersion=37 NumberOfJoysticks=2 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 Use8Axes=1 UsePOV=1 [Joystick 1] Axis1n=2, -40, 0, 0, 0, 0, 0, 0 Axis1p=2, 40, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -40, 0, 0, 0, 0, 0 Axis2p=2, 0, 40, 0, 0, 0, 0, 0 Axis3n=1, 10:00:00, 0 Axis3p=5, 1 Axis4n=2, -20, 0, 0, 0, 0, 0, 0 Axis4p=2, 20, 0, 0, 0, 0, 0, 0 Axis5n=2, 0, -20, 0, 0, 0, 0, 0 Axis5p=2, 0, 20, 0, 0, 0, 0, 0 Axis6n=0 Axis6p=0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00, 0 POV1-2=1, 44:00:00, 0 POV1-3=1, 46:00:00, 0 POV1-4=1, 41:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00, 0 Button02=1, 32:00:00, 0 Button03=1, 33:00:00, 0 Button04=1, 34:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=1, 1B:00:00, 0 Button08=1, 0D:00:00, 0 Button09=1, 20:00:00, 0 Button10=1, 4A:00:00, 0 Button11=0 Button12=0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0 [Joystick 2] Axis1n=2, -40, 0, 0, 0, 0, 0, 0 Axis1p=2, 40, 0, 0, 0, 0, 0, 0 Axis2n=2, 0, -40, 0, 0, 0, 0, 0 Axis2p=2, 0, 40, 0, 0, 0, 0, 0 Axis3n=1, 10:00:00, 0 Axis3p=0 Axis4n=2, -20, 0, 0, 0, 0, 0, 0 Axis4p=2, 20, 0, 0, 0, 0, 0, 0 Axis5n=2, 0, -20, 0, 0, 0, 0, 0 Axis5p=2, 0, 20, 0, 0, 0, 0, 0 Axis6n=0 Axis6p=0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 48:00:00, 0 POV1-2=1, 54:00:00, 0 POV1-3=1, 52:00:00, 0 POV1-4=1, 47:00:00, 0 POV1-5=0 POV1-6=0 POV1-7=0 POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00, 0 Button02=1, 32:00:00, 0 Button03=1, 33:00:00, 0 Button04=1, 34:00:00, 0 Button05=2, 0, 0, 0, 1, 0, 0, 0 Button06=2, 0, 0, 0, 0, 0, 1, 0 Button07=1, 1B:00:00, 0 Button08=1, 0D:00:00, 0 Button09=1, 5A:00:00, 0 Button10=1, 58:00:00, 0 Button11=0 Button12=0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0

5.x.x Config – Common (Basic)

Please note, PS-type controllers should be mapped to Joystick 1 under options, while xbox-type controllers should be mapped to Joystick 2.

PasteBin link[pastebin.com]

[General] FileVersion=51 NumberOfJoysticks=2 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 [Joystick 1] Axis1n=2, -80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis5n=0 Axis5p=0 Axis6n=0 Axis6p=0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00:00, 0.000, 0, 0 ##dpad up POV1-2=0 POV1-3=1, 44:00:00:00, 0.000, 0, 0 ##dpad right POV1-4=0 POV1-5=1, 46:00:00:00, 0.000, 0, 0 ##dpad down POV1-6=0 POV1-7=1, 41:00:00:00, 0.000, 0, 0 ##dpad left POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00:00, 0.000, 0, 0 ##square Button02=1, 32:00:00:00, 0.000, 0, 0 ##cross Button03=1, 33:00:00:00, 0.000, 0, 0 ##circle Button04=1, 34:00:00:00, 0.000, 0, 0 ##triangle Button05=1, 201:00:00:00, 0.000, 0, 0 ##L1 Button06=1, 203:00:00:00, 0.000, 0, 0 ##R1 Button07=1, 10:00:00:00, 0.000, 0, 0 ##L2 Button08=1, 20:00:00:00, 0.000, 0, 0 ##R2 Button09=1, 1B:00:00:00, 0.000, 0, 0 ##select Button10=1, 0D:00:00:00, 0.000, 0, 0 ##start Button11=1, 1B:00:00:00, 0.000, 0, 0 ##left stick press Button12=1, 0D:00:00:00, 0.000, 0, 0 ##right stick press Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0 [Joystick 2] Axis1n=2, -40, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 40, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -40, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 40, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis5n=1, 20:00:00:00, 0.000, 0, 0 ##right trigger Axis5p=1, 10:00:00:00, 0.000, 0, 0 ##left trigger Axis6n=0 Axis6p=0 Axis7n=0 Axis7p=0 Axis8n=0 Axis8p=0 POV1-1=1, 53:00:00:00, 0.000, 0, 0 ##dpad up POV1-2=0 POV1-3=1, 44:00:00:00, 0.000, 0, 0 ##dpad right POV1-4=0 POV1-5=1, 46:00:00:00, 0.000, 0, 0 ##dpad down POV1-6=0 POV1-7=1, 41:00:00:00, 0.000, 0, 0 ##dpad left POV1-8=0 POV2-1=0 POV2-2=0 POV2-3=0 POV2-4=0 POV2-5=0 POV2-6=0 POV2-7=0 POV2-8=0 Up-Right=0 Up- Left=0 Dn- Left=0 Dn-Right=0 Up-Right2=0 Up- Left2=0 Dn- Left2=0 Dn-Right2=0 Button01=1, 31:00:00:00, 0.000, 0, 0 ##A Button02=1, 32:00:00:00, 0.000, 0, 0 ##B Button03=1, 33:00:00:00, 0.000, 0, 0 ##C Button04=1, 34:00:00:00, 0.000, 0, 0 ##D Button05=1, 201:00:00:00, 0.000, 0, 0 ##left bumper Button06=1, 203:00:00:00, 0.000, 0, 0 ##right bumper Button07=1, 1B:00:00:00, 0.000, 0, 0 ##back button Button08=1, 0D:00:00:00, 0.000, 0, 0 ##start button Button09=1, 1B:00:00:00, 0.000, 0, 0 ##left stick press Button10=1, 0D:00:00:00, 0.000, 0, 0 ##right stick press Button11=0 Button12=0 Button13=0 Button14=0 Button15=0 Button16=0 Button17=0 Button18=0 Button19=0 Button20=0 Button21=0 Button22=0 Button23=0 Button24=0 Button25=0 Button26=0 Button27=0 Button28=0 Button29=0 Button30=0 Button31=0 Button32=0

5.x.x Config – Common (Extended)

Please note, PS-type controllers should be mapped to Joystick 1 under options, while xbox-type controllers should be mapped to Joystick 3. Joystick 2 contains the alternative (L2 hold) mappings for PS controllers, while Joystick 4 holds the same (LT hold) for xbox controllers.

Also note: I had to remove the empty entries from this config files to fit within the character limit for guide sections. The profile works just fine like this, and those entries will be regenerated when JTK saves the file (i.e. after making modifications). The PasteBin link contains the full file.

PasteBin link[pastebin.com]

[General] FileVersion=51 NumberOfJoysticks=4 DisplayMode=3 UseDiagonalInput=0 UsePOV8Way=0 Threshold=0 Threshold2=0 KeySendMode=0 [Joystick 1] Axis1n=2, -80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick POV1-1=1, 53:00:00:00, 0.000, 0, 0 ##dpad up POV1-3=1, 44:00:00:00, 0.000, 0, 0 ##dpad right POV1-5=1, 46:00:00:00, 0.000, 0, 0 ##dpad down POV1-7=1, 41:00:00:00, 0.000, 0, 0 ##dpad left Button01=1, 31:00:00:00, 0.000, 0, 0 ##square Button02=1, 32:00:00:00, 0.000, 0, 0 ##cross Button03=1, 33:00:00:00, 0.000, 0, 0 ##circle Button04=1, 34:00:00:00, 0.000, 0, 0 ##triangle Button05=1, 201:00:00:00, 0.000, 0, 0 ##L1 Button06=1, 203:00:00:00, 0.000, 0, 0 ##R1 Button07=5, 1 ##L2 Button08=1, 10:00:00:00, 0.000, 0, 0 ##R2 Button09=1, 1B:00:00:00, 0.000, 0, 0 ##select Button10=1, 0D:00:00:00, 0.000, 0, 0 ##start Button11=1, 20:00:00:00, 0.000, 0, 0 ##left stick press Button12=1, 4A:00:00:00, 0.000, 0, 0 ##right stick press [Joystick 2] Axis1n=2, -80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick POV1-1=1, 48:00:00:00, 0.000, 0, 0 ##dpad up POV1-3=1, 54:00:00:00, 0.000, 0, 0 ##dpad right POV1-5=1, 52:00:00:00, 0.000, 0, 0 ##dpad down POV1-7=1, 47:00:00:00, 0.000, 0, 0 ##dpad left Button01=1, 35:00:00:00, 0.000, 0, 0 ##square Button02=1, 36:00:00:00, 0.000, 0, 0 ##cross Button03=1, 37:00:00:00, 0.000, 0, 0 ##circle Button04=1, 43:00:00:00, 0.000, 0, 0 ##triangle Button05=1, 201:00:00:00, 0.000, 0, 0 ##L1 Button06=1, 203:00:00:00, 0.000, 0, 0 ##R1 Button08=1, 10:00:00:00, 0.000, 0, 0 ##R2 Button09=1, 1B:00:00:00, 0.000, 0, 0 ##select Button10=1, 0D:00:00:00, 0.000, 0, 0 ##start Button11=1, 5A:00:00:00, 0.000, 0, 0 ##left stick press Button12=1, 58:00:00:00, 0.000, 0, 0 ##right stick press [Joystick 3] Axis1n=2, -80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis5n=1, 10:00:00:00, 0.000, 0, 0 ##right trigger Axis5p=5, 3 ##left trigger POV1-1=1, 53:00:00:00, 0.000, 0, 0 ##dpad up POV1-3=1, 44:00:00:00, 0.000, 0, 0 ##dpad right POV1-5=1, 46:00:00:00, 0.000, 0, 0 ##dpad down POV1-7=1, 41:00:00:00, 0.000, 0, 0 ##dpad left Button01=1, 31:00:00:00, 0.000, 0, 0 ##A Button02=1, 32:00:00:00, 0.000, 0, 0 ##B Button03=1, 33:00:00:00, 0.000, 0, 0 ##X Button04=1, 34:00:00:00, 0.000, 0, 0 ##Y Button05=1, 201:00:00:00, 0.000, 0, 0 ##left bumper Button06=1, 203:00:00:00, 0.000, 0, 0 ##right bumper Button07=1, 1B:00:00:00, 0.000, 0, 0 ##back button Button08=1, 0D:00:00:00, 0.000, 0, 0 ##start button Button09=1, 20:00:00:00, 0.000, 0, 0 ##left stick press Button10=1, 4A:00:00:00, 0.000, 0, 0 ##right stick press [Joystick 4] Axis1n=2, -80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis1p=2, 80, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2n=2, 0, -80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis2p=2, 0, 80, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##left stick Axis3n=2, -20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis3p=2, 20, 0, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4n=2, 0, -20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis4p=2, 0, 20, 0, 0, 0, 0, 0.000, 0, 95, 1.0, 100, 0 ##right stick Axis5n=1, 10:00:00:00, 0.000, 0, 0 ##right trigger Axis5p=5, 3 ##left trigger POV1-1=1, 48:00:00:00, 0.000, 0, 0 ##dpad up POV1-3=1, 54:00:00:00, 0.000, 0, 0 ##dpad right POV1-5=1, 52:00:00:00, 0.000, 0, 0 ##dpad down POV1-7=1, 47:00:00:00, 0.000, 0, 0 ##dpad left Button01=1, 35:00:00:00, 0.000, 0, 0 ##A Button02=1, 36:00:00:00, 0.000, 0, 0 ##B Button03=1, 37:00:00:00, 0.000, 0, 0 ##X Button04=1, 43:00:00:00, 0.000, 0, 0 ##Y Button05=1, 201:00:00:00, 0.000, 0, 0 ##left bumper Button06=1, 203:00:00:00, 0.000, 0, 0 ##right bumper Button07=1, 1B:00:00:00, 0.000, 0, 0 ##back button Button08=1, 0D:00:00:00, 0.000, 0, 0 ##start button Button09=1, 5A:00:00:00, 0.000, 0, 0 ##left stick press Button10=1, 58:00:00:00, 0.000, 0, 0 ##right stick press

Thanks, final thoughts, etc

First off FTL wouldn’t exist without the great folks at Subset Games, so thanks be to them for making this great game!

Any problems or questions about JTK I’ll try to answer in the comments best as I can. Please consider rating the thread if you like or dislike it!

Finally, even though I put effort into making the configs work on as many members of each controller family as possible there is a chance that some custom/third-party controllers will not be perfectly mapped. This will in particular affect controllers with an increased number of buttons compared to the official representatives of each family. If you run into any problems of this nature it’s easy enough to add in the necessary buttons as explained in the guide. If that doesn’t work out or you run into problems I can try to provide some general advice, just leave a comment.

SteamSolo.com