What is JoyToKey?
JoyToKey (or Joy2Key) enables PC game controllers to emulate the keyboard and mouse input, so that windows applications and web games can be controlled with your favorite joysticks! Whenever buttons and sticks are pressed on the controllers, JoyToKey converts them into keyboard strokes and/or mouse movements so that the target application will work as if a real keyboard and a mouse were used.

Joystick to Keyboard input
JoyToKey is a shareware, but you can download the latest version for free. Try it on your PC to play games which don't have native controller support with your favorite joysticks and/or use it for general applications to improve efficiency by registering frequently used key shortcuts as joystick input. If you find JoyToKey useful, you can purchase a license key at any time from JoyToKey application menu.
Information
Location of user configuration data (profiles)
When JoyToKey is installed from the installer (JoyToKeySetup_en.exe), user configuration data will be by default stored in "JoyToKey" folder in user's "Documents" folder.
In case you can no longer find your configurations after upgrading JoyToKey, please manually copy the configuration files (JoyToKey.ini and *.cfg files) from the old "JoyToKey" folder into your "Documents/JoyToKey" folder so that your old configuration data can be accessed. For more details, please refer to this page.
JoyToKey Version 6.9.2 Released
Version 6.9.2 includes the following change(s):
- For those who have trouble displaying UNICODE arrow characters (such as "←") in certain PC environments, an alternative build is now provided which only uses ASCII characters.
- Added a task tray right-click menu "Reset main window position to (0,0)". This can be useful in case JoyToKey window is lost somewhere and you want to forcibly bring it back to the screen.
- Renamed and re-ordered the right-click menu items during button assignment
- Several bug fixes
Other notable changes included in the recent releases:
- You can now define a button to trigger the assignments defined on other buttons.
For example, it is possible to configure the followings.- 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
- Various enhancements to "Keyboard(Multi)" functionality
- Switch rotation - Added an ability to reset the counter when a button isn't pressed for a certain duration. That means, when the button is pressed next time, it will go back to Input1.
- Switch depending on how long the button is pressed - It is now possible to assign an additional key "Input3" when the long-press is released.
- Feature to trigger the custom vibration pattern when the active profile is switched (under the Options tab).
NOTE: At this moment, it's limited to the first XInput device. If there is a demand to notify on other devices, please contact us.
- 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)
- Updated the application icon - special thanks to Peter (Silent_ip)!
- Enhanced the automated association of profiles based on the target application 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
- Improved the automatic detection when an additional joystick is connected.
- New feature to paste a pre-defined text to the target application
- Supported repeat and toggle click in mouse absolute movement mode
- Enhanced ButtonAlias function - Now support 3 button combination
- Support up to max 50 joysticks (previously 32 joysticks)
- Support up to max 128 buttons (previously 32 buttons)
- Enhanced an execution of an external program to be able to
- pass command parameters
- specify the starting working directory
- Single click a task tray icon 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). - Supported multiple screens for the absolute movement of a mouse cursor.
- Supported additional key-code emulations 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 some compatibility issue with recent Windows 10. In case it causes a problem for certain old games and you want to use the old key code, in the button assignment window, please select an equivalent key (from right-click menu) which is labeled as "for DirectInput".
WARNING: Be careful with unofficial download sites
JoyToKey seems to be distributed in various unofficial websites, and some of them seem to be distributing a tweaked software (or "download manager") to install extra applications on your PC.
They are not official distributions, and the author of JoyToKey is not involved in any of those activities. Unless you have a good reason to trust those unofficial websites, you should download JoyToKey from the official download page in order to avoid unnecessary troubles.
(There does exist some useful 3rd party websites though, for example, a site for people with disabilities where JoyToKey is packaged with pre-defined configurations for PC accessibility)
Releases
- Sep 9, 2023
- JoyToKey 6.9.2 Release
- Aug 30, 2022
- JoyToKey 6.9.1 Release
- Aug 14, 2022
- JoyToKey 6.9 Release
- Jan 29, 2022
- JoyToKey 6.8 Release
- Aug 28, 2021
- JoyToKey 6.7 Release
- Mar 14, 2021
- JoyToKey 6.6 Release
- Aug 16, 2020
- JoyToKey 6.5 Release
- Jun 3, 2020
- JoyToKey 6.4.3 Release (bug fix)
- Apr 19, 2020
- JoyToKey 6.4.2 Release
- Jul 21, 2019
- JoyToKey 6.3 Release
- Feb 2, 2019
- JoyToKey 6.2 Release
- Sep 23, 2018
- JoyToKey 6.1.1 Release
- Sep 16, 2018
- JoyToKey 6.1 Release
- Sep 9, 2018
- JoyToKey 6.0 Release