Advanced Features of JoyToKey

Virtual joysticks (a.k.a. SHIFT-key function)

Assume your joystick has only 6 buttons, but you want to assign 10 different key inputs to your joystick buttons. What can you do?

Then, you can configure extra key assignments for a virtual joystick number and you can switch the key assignments by pressing a special joystick button (a.k.a. SHIFT-key button).

For example, by default you're using key/mouse assignments defined for Joystick #1. But in the example below, you can switch to key/mouse assignments defined for Joystick #3 whenever "button 3" is pressed.

Button alias - Combine multiple definitions (e.g. "SHIFT + Mouse Wheel")

How can I configure a horizontal scroll (SHIFT + Mouse Wheel) for a single stick (button) input?

For assigning multiple functionalities to a single input, you can use the button alias (mapping) functionality from "Options" -> "Configure Button Alias (Mapping)...". For example, in the screenshot below, button19 is configured to be triggered when stick-left is pressed. Therefore, if you configure stick-left as a SHIFT key and Button19 as a wheel rotation, "SHIFT + wheel rotation" will be emulated when stick-left is pressed.

It is also possible to configure some button (e.g. Button22) to be triggered only when both Button5 and Button6 are pressed simultaneously. Then, you can assign 3 different functionalities for two buttons: Button5 alone, Button6 alone, and when both Button5 and Button6 are pressed.

Switch across multiple key assignments

Starting from 5.0 version, JoyToKey allows you to assign two or three sets of key-assignments for a single button, and switch among them in several ways.

  • Switch in rotation
    In the sample screenshot below, key-assignments will rotate as below whenever a button is pressed.
       "A -> B -> C -> A -> B -> C-> A -> ..."
  • Switch based on press-duration
    Input can change depending on how long the button is pressed.
    - ex) small jump key if a button is pressed less than 300 milli-seconds
    - ex) big jump key if a button is pressed more than 300 milli-seconds
  • Switch based on analog input level
    For analog stick inputs, the assignment can change depending on the analog input level.
    - ex) small stick input => slow movement key
    - ex) large stick input => fast movement key

Define a priority among multiple joysticks

In case you have multiple joysticks and you want to always use one of them as "Joystick 2" (or any other joystick number), you can define a priority/preferred number for each device.
(Menu: "Preferences" -> "Configure joysticks")

In this window, you can also configure the axis mapping for Stick1 and Stick2.

Command line arguments

JoyToKey supports the following command line arguments. For normal usage, you don't need to use them, but they could be useful in case you want to create a shortcut to control JoyToKey without using a graphical user interface.

JoyToKey [-r] [profile]
In case JoyToKey program is already running, it'll send a message to the running instance and forces it to refresh the list of joystick devices. This command line argument can be used for creating a shortcut to detect newly connected joysticks.
JoyToKey will be started with the specified profile. In case JoyToKey program is already running, the specified profile name will be sent to the running instance and the active profile will be switched. This command line argument can be used for creating a shortcut for switching the profile.

Change the location of configuration files

By default, configuration files (JoyToKey.ini and profiles) are stored in the same folder as JoyToKey.exe. However, JoyToKey allows you to change it in several ways.

Firstly, in case the folder where JoyToKey.exe is placed is not write-able, you can also use "%ALLUSERSPROFILE%\JoyToKey\" folder for storing configuration files. (This is a recommended folder to store application data for users by Microsoft)

In order to do that, open "%ALLUSERSPROFILE%\JoyToKey\" in explorer, and create an empty file named "JoyToKey.ini". Then, all the configuration files will be stored in that folder going forward.

Secondly, when you launch JoyToKey, you can pass a profile as a command line argument. Then, JoyToKey will be started by using the specified profile and its folder for configurations.

Finally, if you have any reason why you need to forcibly specify "JoyToKey.ini" file path (e.g. you're using some launcher like Hyperlaunch), you can can do that via manual configuration in registry.

  1. Run "regedit" program (Registry Editor)
  2. Create a key "HKEY_CURRENT_USER\Software\JoyToKey"
  3. Create a string value "IniFilePath=c:\Whatever\Path\JoyToKey.ini"

Return To Top