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.
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.
- Run "regedit" program (Registry Editor)
- Create a key "HKEY_CURRENT_USER\Software\JoyToKey"
- Create a string value "IniFilePath=c:\Whatever\Path\JoyToKey.ini"