Change History of JoyToKey
JoyToKey 7.4
- Added support for Command input (an extension of sequence input)
For more details, please refer to this blog page
- Changed the code-signing certificate from Sectigo to Microsoft Azure Artifact Signing.
As a result, you might encounter a security warning when downloading or installing the file during the transition period. If a warning pops up, please check the publisher details to confirm it says "FREE COLORS, LTD." (ensuring the file hasn't been altered by a third party), and then continue with the download and execution.
- Bug fix for button release in the middle of sequence execution
- Other minor bug fixes (such as logging)
JoyToKey 7.3.3
- Fixed the flickering display issue when highlighted buttons are changed.
JoyToKey 7.3
- Added support for "Auto start with Windows".
To use it, launch JoyToKey as an administrator by right-clicking it and selecting "Run as Administrator", then enable the menu "Settings" -> "Auto start with Windows".
- Fixed the issue where Windows didn't go into sleep mode when JoyToKey was running.
JoyToKey 7.2
- Fixed a few important bugs that occasionally occurred in edge cases.
(For example, "Input1 when the button is released" occasionally got stuck.)
JoyToKey 7.1.1
- Improved the key code emulation for the Pause/Break key, and also provided an alternative key code (accessible from the right-click menu).
JoyToKey 7.1
If the buttons are pressed when the mapping changes due to SHIFT function or active profile switch, there has been a feature to ignore the already pressed input "for the specified time". This feature was enhanced so that it can also ignore the input "until it's pressed again".
This behavior can be configured from the "Preferences" menu.
- Added "Tab" key in the right-click assignment menu.
- Bug fix: When the same button's definition is triggered from multiple buttons, (e.g. Button[20] is called from both LT and RT), it wasn't released at the expected timing.
- Bug fix: Fixed an occasional display issue when "Options" tab was selected.
JoyToKey 7.0
- Support for the dark mode
- Support for high DPI display
- Button display template
For each joystick device (or tab), you can configure the button display names from the right-click menu (or from the device configuration menu) like "A", "B", "X", "Y", ... , instead of "Button 1", "Button 2", ...
- On the joystick tabs, device names will be displayed by default.
Users can also edit the device name for convenience. (Right-click on the tab, and select "Edit the display name for this device")
- In the device configuration window, added the ability to delete the configuration of an old (disconnected) device
- Other various improvements
JoyToKey 6.9.2
- For those who have trouble displaying Unicode arrow characters (such as "←") in certain PC environments, an alternative build that uses only ASCII characters is now provided.
- Added a task tray right-click menu item "Reset main window position to (0,0)". This can be useful if the JoyToKey window gets lost off-screen and you want to forcibly bring it back.
- Renamed and re-ordered the right-click menu items during button assignment
- Several bug fixes
JoyToKey 6.9.1
- Fixed an access violation error in certain PC environments
JoyToKey 6.9
- Enhanced the "Keyboard" tab: added a right-click menu to specify mouse wheel input.
This makes it easy to combine wheel input with other key inputs, such as "ALT + wheel" or "CTRL + wheel" for zoom in/out shortcuts.
- Added a feature to trigger a custom vibration pattern when the active profile is switched (under the Options tab).
NOTE: Currently, it is limited to the first XInput device. If you need notifications on other devices, please contact us.
- In the main window, added a right-click menu to easily swap two button assignments.
- Main menu: Added a few menu items for easier access, such as "License key", "TIPs" and "Donation" (under Help).
- Fixed the behavior of the TAB key in the "Keyboard Multi" setting window so that basic configuration can be done without a mouse.
- Other minor bug fixes
JoyToKey 6.8
- Enhanced "Configure diagonal input as separate buttons" feature such that
it can be configured separately for left and right sticks.
(Under "Options" tab -> Show/Hide Buttons)
JoyToKey 6.7
- Enhanced the "Keyboard (multi)" tab - you can now define a button to trigger the assignments on other buttons.
For example, you can configure the following:- When Button1 is pressed for a short duration, rotate the input across Input1 -> Input2 -> Input3 -> …
- When Button1 is pressed for a long duration, enable SHIFT function
- Enhanced the switch rotation in "Keyboard(Multi)" tab - Added the ability to reset the counter when a button isn't pressed for a certain duration. That is, the next time the button is pressed, it will go back to Input1.
- Enhanced the assignment based on the press duration in "Keyboard(Multi)" tab - It is now possible to assign an additional key "Input3" when the long-press is released.
- Updated the application icon - special thanks to Peter (Silent_ip)!
- Changed the behavior when associating profiles with the applications as follows:
- if both path and title are specified, profile will switch only when both are matched
- if only path is specified, profile will switch if path is matched
- if only title is specified, profile will switch if title is matched
- When profiles (*.cfg files) exist in the same folder as "JoyToKey.exe", they'll take precedence over the "JoyToKey" folder in the user's Documents folder (except when JoyToKey is launched from "Program Files (x86)" folder).
- When the "Internal Processing Speed" is changed in Preferences, various timings (such as auto-repeat frequency and button hold duration) are no longer affected.
- Various bug fixes
JoyToKey 6.6
- Experimental support for the "Share" button on the Xbox Series X/S controller when it's connected over Bluetooth.
By default, Windows doesn't seem to recognize the newly introduced "Share" button on the Xbox Series X/S controller when it's connected over Bluetooth. Even so, you may be able to use the "Share" button through JoyToKey, by enabling the experimental mode from the menu "Settings" -> "Preferences" and changing "Input device types" to "Experimental Logic (Beta)".
- Improved the automatic detection when an additional joystick is connected.
- Added support for negative coordinates when moving the mouse cursor to an absolute location. This is useful if you want to jump to a monitor that is positioned to the left of the main monitor.
- Added a new command line option "-q" (quiet) to disable log file generation.
- Added a new parameter in the "JoyToKey.ini" file to set the default configuration for newly detected devices (primarily used by https://www.oneswitch.org.uk/)
- Dropped support for Windows XP in order to use a new API. If you are using Windows XP or 2000, DO NOT upgrade, and please continue to use the old version you have been using.
- Various bug fixes
JoyToKey 6.5
- Added a feature to paste predefined text into the target application
- Enhancement for "Re-process when the same key continues while it's already pressed" option:
- If this option is OFF, when the emulation of the same key continues (during sequence or from other buttons), that key will be emulated only once and held down.
For example, if a button for "SHIFT+RIGHT" and a button for "SHIFT+DOWN" are both pressed, SHIFT will be emulated only once and held until both buttons are released.
- If this option is ON, SHIFT key will be pressed and released for each button, i.e. pressed and released twice in total.
- If this option is OFF, when the emulation of the same key continues (during sequence or from other buttons), that key will be emulated only once and held down.
- Minor bug fixes
JoyToKey 6.4.2
- Added support for repeat and toggle click in absolute mouse movement mode
- Enhanced the association of profiles - Profiles can now be associated based on the target window title as well as the file path of the target application
- Enhanced the Button Alias function - it now supports combinations of three buttons
- Improved the compatibility when used from a launcher application such as RocketLauncher
- Minor bug fixes
JoyToKey 6.3
- Starting from this version, user configuration data is stored by default in the "JoyToKey" folder in the user's "Documents" folder.
If you upgrade JoyToKey from an older version, please copy (or move) the old "JoyToKey" folder into your "Documents" folder so that you can continue to access your configuration data.
- To be friendlier for new users,
- JoyToKey is packaged as an installer, instead of a zip file format
- Tab names in the button assignment window are made clearer (e.g. "Keyboard 2" -> "Keyboard (Multi)")
- The UI layout for assigning mouse cursor movement has been simplified
- Minor bug fixes
JoyToKey 6.2
- Support for up to 50 joysticks (previously 32)
- Support for up to 128 buttons (previously 32)
- Enhanced the execution of external programs to allow you to
- pass command parameters
- specify the starting working directory
- In the button assignment window, added navigation buttons to go to the next and the previous assignment.
If JoyToKey is started when no controller is connected, it automatically tries to detect devices until one controller is connected.
However, some users may want to continue the auto-detection until two controllers are connected, and others may want to disable it completely. From this version, you can change this behavior by editing the following lines in the "JoyToKey.ini" file.
# in case you want to continue the auto-detection until two devices AutoDetectDevicesUpTo=2 # in case you want to disable the auto-detection AutoDetectDevicesUpTo=0NOTE: Repeated auto-detection of devices while playing a game may occasionally cause a slight delay or input lag. So auto-detection should be used only for the number of devices that are always connected.
JoyToKey 6.1.1
- Added support for multiple screens for absolute mouse cursor movement.
- Version 6.1.1 includes an important bug fix for version 6.x. If you're using version 6.0 or 6.1, we recommend upgrading to 6.1.1.
JoyToKey 6.1
- Added support for executing an external program from a button assignment.
Besides launching a program, you can also open a URL in the browser. This lets you use JoyToKey as a kind of launcher. - Added the command line argument "-r".
When new joysticks are connected, there are a few ways to make JoyToKey recognize them. (e.g. clicking the JoyToKey icon in the task tray) This command line argument is another way to trigger that: you can create a shortcut to execute "JoyToKey.exe -r", and it'll force the already-running JoyToKey instance to refresh the list of joystick devices.
JoyToKey 6.0
- Added support for additional key code emulation, such as the volume control (up / down / mute), media control (prev / next / play / stop), and SCROLL_LOCK key.
- Changed the default key emulation code for arrow keys, R-Alt and R-Ctrl, to fix a compatibility issue with recent versions of Windows 10. If this causes a problem for certain old games and you want to use the old key code, select the equivalent key labeled "for DirectInput" from the right-click menu in the button assignment window.
- Click the task tray icon once to refresh joystick connections
When you connect a new joystick to the PC, you can just click the task tray icon to get it recognized (either left-click or right-click). Added the ability to re-process the key emulation event when the same key continues during the Input1-Input4 sequence (Keyboard 2).
By default, when processing the sequence of key emulation through Input1 to Input4, if the same key assignment continues, it's emulated only once. In the example below, key "↓" will be pressed only once and held until Input2 is released.
- Input1 = "↓"
- Input2 = "↓" + "→"
- Input3 = "→"
From this version on, this behavior can be changed in the "Options" tab by enabling the following checkbox: "Re-process when the same key continues in sequence"
- Miscellaneous bug fixes, such as button highlighting
JoyToKey 5.9
- Fixed a crash in some online games
- Enhanced the "Keyboard2" page to support the following:
- Supported the emulation of Input1 ~ Input4 in sequence at the specified interval (hold duration)
- Supported different key assignments based on how many times a button is pressed within the specified time threshold
- Supported the key assignment when a button is released
- Supported the definition of mouse cursor movement via right click menu. For example, this enables one button input to cycle through up, right, down, left mouse cursor movement whenever it's pressed
- Added support for horizontal mouse wheel rotation
- Improved the keycode emulation for the Numpad '/' and a few other keys
- Miscellaneous configuration options were added for OneSwitch.org.uk
ex) FontSizeProfileList=20 FontSizeButtonList=20 ProfileImageFullScreenRatio=1.0
JoyToKey 5.8.2
- Added two modes for highlighting pressed buttons in the JoyToKey main window
- Only highlight on the corresponding joystick tab (default)
- Highlight on all tabs regardless of the joystick number (useful for configuring virtual joysticks)
- Increased the maximum number of joysticks from 16 to 32
- Bug fix for the preferred joystick number assignment
JoyToKey 5.8
- Enhanced the support for the Xbox 360 controller. For example,
- The silver guide button can be assigned as button 13
- Left/Right trigger can be assigned as analog input button 11, 12
- Added support for XInput devices besides DirectInput devices
- Enhanced the auto-repeat setting to allow more flexible definitions.
(for example, 1.2 times per second, or repeat every 2.5 seconds) - Added the ability to show an image file when the active profile changes.
An image file can be registered for each profile in the Options tab. - A few minor bug fixes
JoyToKey 5.7.1
- Support "Numpad Enter" key assignment via right-click menu
- Support up to 4 POV inputs
- Enhanced the right-click menu on the joystick tab and on the button list such that the selected configuration can be copied to or pasted from the clipboard
- Enhanced device configuration to support stick-axis mapping across all 8 axes
JoyToKey 5.7
- Support for an absolute mouse movement (a.k.a. spring mode)
- Mouse cursor can be positioned at a configured center location and can be moved within a specified range with an analog input stick. This can be useful for controlling an application like a flight simulator.
- In addition, a regular button can also be used as a mouse shortcut by jumping the mouse cursor to a preconfigured position, followed by a mouse click.
- Enhanced the SHIFT key (virtual joystick) function to support delayed switching.
- For example, combined with a "Button Number Mapping" feature, one button can be assigned for both a regular key input (for a short press) and a SHIFT function (for a long press).
- Enhanced "Switch depending on how long the button is pressed" in Keyboard2.
- If the event emulation is not recognized reliably when you press the button too quickly, JoyToKey can now hold it for a minimum duration. (default 20 msec)
- Exposed the hidden parameter "AnalogDeadZone" (which is used for DirectInput setup) in "Settings -> Configure Joysticks".
- If you want to minimize the input threshold for your device, please try setting it to zero. If you need a different threshold for Stick1 and Stick2, you can continue to do so in "Options" tab for each profile.
- Other minor bug fixes
JoyToKey 5.6
- Enhanced the "Keyboard 2" functionality to support the following:
- support 4 keys per definition
- support the rotation of 4 input definitions
- support auto repeat and toggle configuration
- Upgraded DirectX library version from 7 to 8
JoyToKey 5.5
- Support "Button Number Mapping"
- Example 1: Swap button numbers if the connected joystick has a different layout from your preferred one.
- Example 2: Associate Button21 with Button1 so that both functions are triggered when Button1 is pressed.
- Example 3: It is also possible to configure some button (e.g. Button22) to be triggered when both Button5 and Button6 are pressed simultaneously.
- If some buttons are pressed when the profile is changed or the SHIFT function is triggered, those button presses are likely to trigger both the old and new assignments right before/after the switch.
- It is now possible to define a duration (e.g. 100 msec) during which to ignore those inputs right after the switch (from the Preferences menu)
- When both mouse cursor movement and mouse click are assigned to a button, click&hold will be processed before cursor movement.
- Improved the reliability after resuming from PC sleep.
- Preferences were moved from menu items to a separate window.
- Added the ability to specify the number of buttons to configure.
- Changed the user interface font to Calibri
- Configuration files are now saved in Unicode format (UTF8+BOM). This may fix garbled character issues when using a non-default language.
JoyToKey 5.4.2
- Fixed garbled characters on some non-Japanese PCs and keyboards.
- (only for advanced users) Added support for configuring the "JoyToKey.ini" file path via the registry.
If you need to forcibly specify the "JoyToKey.ini" file path (e.g. you're using a launcher like HyperLaunch), you can do so via the registry editor.- Run "regedit" program
- Create a key "HKEY_CURRENT_USER\Software\JoyToKey"
- Create a string value "IniFilePath=c:\WhateverPath\JoyToKey.ini"
JoyToKey 5.4.1
- Added support for various file formats (such as MP3) for sound notifications.
JoyToKey 5.4
- Added the ability to play a sound or show a task tray balloon when the selected profile changes.
- The task tray balloon can be enabled from "Preferences" menu.
- Sound notification can be configured for each profile in "Options" tab. (currently, only WAV files are supported)
- Profile files are now smaller because empty lines are eliminated.
- If the "JoyToKey.ini" file or its directory is not writable, JoyToKey will try to make it writable.
JoyToKey 5.3
- Added support for delayed input for a special function that switches profiles. If you want to keep JoyToKey running in the background while you play a game with native joystick support, the following trick may be useful.
- When the game with native Joystick support becomes active, temporarily switch to a profile that is basically empty
- This profile should have one button assigned for switching back to the original profile after it is pressed for X seconds
- The behavior when the JoyToKey window is active can be controlled from the menu:
"Preferences"-> "Don't emulate keyboard input when JoyToKey window is active"
JoyToKey 5.2.3
- Support for emulating the 4th and 5th mouse buttons.
They can be useful if you're using mouse gestures with joysticks. - Turbo mode was enhanced to support up to x16 processing speed.
(However, this is experimental and should not be used regularly, as it is very CPU-intensive and likely to slow down the PC)
JoyToKey 5.2.2
- Added a new menu "Open file folder in Explorer"
- Support for loading configuration files from a common AppData folder (only when it exists).
By default, configuration files are created in the same folder as "JoyToKey.exe". But once you create an empty file "JoyToKey.ini" in common AppData folder ("C:\ProgramData\JoyToKey\JoyToKey.ini"), you can share the configuration files across multiple users, or you can launch JoyToKey.exe from a read-only folder.
JoyToKey 5.2.0
- Support for combining keyboard and mouse clicks.
Ex) SHIFT+Click, CTRL+Click
To assign a mouse click in the keyboard assignment window, right-click the entry box and select mouse click from the context menu. - Bug fix: SHIFT + arrow keys were not properly processed for text selection and some games (such as Minecraft)
JoyToKey 5.1.x
- Mouse cursor emulation is now much smoother with analog sticks, by using a continuous acceleration without a threshold.
- If analog stick input is wrong, the axis mapping can be specified manually.
(Menu: "Preferences" -> "Configure joysticks") - If you have multiple joysticks and always want to 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")
JoyToKey 5.0.x
- Support for different key assignments based on analog stick input level.
- Support for different key assignments based on button hold duration.
- Support for rotating key assignments.
For example, whenever the same button is pressed, its key assignment can rotate like "A -> B -> C -> A -> B -> C -> A ..." - Enhanced auto-repeat key functionality.
The following auto-repeat definitions are newly possible:- "1.5 repeats per second"
- "one repeat per 123.4 seconds"
- "auto-repeat only after 500 milliseconds"
- When the main window of JoyToKey is activated and joystick buttons are pressed, those buttons will be highlighted in the main window so that you can easily see which button corresponds to which row in the config. (You can change it back to the old behavior from menu setting)
- When the window is minimized, the icon will be kept in the taskbar by default. If you prefer the old behavior and want to hide it from the taskbar, you can switch back from the settings menu.
- Added a comment field for each button definition.
For example, you can record a memo for each button like "This button is used for Jump". - Support for copying joystick configuration from one to another.
Right-click the "Joystick 1" header in the main window to open a popup menu. - Support for up to 4 key assignments for each button.
- Added a menu "Help -> Overview"
- Added a button "Edit button assignment"
JoyToKey 4.6
- You can choose the default behavior when the target application switches to a non-associated program
- When you temporarily switch to the virtual joystick configuration while some button is being pressed, the pressed state will be kept without release-action, if its original key config and the new key config are the same. (e.g. if the arrow key is assigned for both the joystick1 config and the virtual joystick3 config, then switching between joystick1 and joystick3 won't trigger unnecessary release event)
JoyToKey 4.5
- Support for associating config files with applications
Active configuration file can be automatically switched based on the focused application. - Support dynamic acceleration of mouse cursor movement
If you use mouse cursor emulation with analog sticks, the speed sensitivity can be accelerated at a certain threshold. - Support 4-way and 8-way assignment for POV control
- Auto repeat functionality, ranging from very slow repeat (1 time per 15 minutes) up to 60 times per second (with 2x processing mode)
- Support for toggle button
e.g. use it for drag&drop with mouse emulation, or for truly automated repeat of keys even when you are away from the PC. - The window is now resizable
- Task tray icon
- left-click to open/close the main window
- right-click to open popup menu
- JoyToKey can be started even when a joystick is not connected
It will automatically detect a newly connected joystick. (NOTE: it only works for the first joystick. If you connect a second one or more, please press the "detect" button manually in the preferences panel) - Several additions in the menu such as
- copy configuration file
- open game controller setting from control panel
- suspend / resume the processing temporarily
- 2x processing mode (if you want to minimize the input latency, sacrificing extra CPU load)
- generate debug log