JoystickCursorTool is a small utility simulating keyboard keys using a joystick. It can be used for keyboardless navigation in browsers and file managers, playing games without native joystick support, using the joystick port for electronic interfaces without needing to write a joystick driver as well as other situations where only a small subset of the keyboard is typically used.
- Windows95/NT/2000/XP or higher
- A joystick supported by Windows (installed as primary or secondary joystick)
- Up to 4 axes, 16 buttons and point-of-view are supported
The tool supports all programs using the standard windows driver for keyboard input. It does not always work with programs retrieving keyboard data at a lower level like the Win9x DOS box.
After starting the program a small icon shows up in the task bar:
Either the normal joystick cursor icon indicating the tool beeing active
or a crossed joystick cursor icon indicating the tool beein in idle state
The tool switches to idle state automatically if the joystick is not connected or switched off. A left click on the icon will open the setup dialog, a double click will close it.
A standard setting is included, but you might also define your own. This allows using the remaining buttons as well as the other axes. After a right click the following options are available:
- The left side contains up to 128 fields each referring a single key. Their number can be toggled using the + and - buttons.
- The right side is a matrix in which each row refers to the key field next to it. Each column refers to the joystick key / axis position noted on top. Note: Only entries supported by the joystick will be shown.
- The topmost line of the matrix does not refer to a key. It shows the current state of the joystick instead.
- Repeated keypresses can be switched on and off using the Use Typematic option.
- Experienced users can adjust the timing behaviour in the Timing setup. Or enable portable mode which stores the settings in a local file rather than in the system registry
- The other buttons are self-explanatory: Default settings will restore the standard configuration, OK closes the window saving the settings permanently, Cancel closes the window restoring old settings. Joystick Nr selects the joystick to use with the current settings.
Assigning keys to the joystick
Key assignment is straightforward, although a bit unusual:
- Press the Associated Key field you want to modify. It´s when changes to -- Choose key --
- Move the joystick or press the joystick button(s) you want to use. The associated row reflects the current joystick state.
- Once you´ve found a suitable setting assign press the keyboard key you want to assign it to.
Repeat this sequence for every assignment you want to change.
Tips and tricks
- You can also change the joystick state assigned to a key by modifying the matrix elements directly.
- The displayed configuration takes effect immediately. So there is no need to close the configuration dialog for testing it.
- It is possible to assign mouse buttons by pressing the mouse button instead of a key. Note that the mouse cursor should point to an unused part of the window then.
- It is possible to assign multiple keys to the same joystick state by using multiple table rows. The topmost key is simulated first.
Example: First joystick button activates Alt-Tab, second button activates Shift-Alt-Tab
- Joystick buttons or axis positions can be combined in an assignment.
- Example: The Y axis may be assigned to the up and down keys when used alone, but will map to the PageUp and PageDown keys when combined with the first joystick button.
Or you may combine two axis positions for simulating a diagonal key (like 1,3,7 and 9 of the numeric keypad).
- Note that the X, Y, Z and R axis split to Left/Right, Up/Down, Top/Bottom and High/Low pairs. Only one member of each pair can be active at the same time, checking both members of a pair will thus enable the axis mode instead.
- 4-way point-of-views support only one POV position being active at the same time, better point-of-view controls also support pairs of adjacent positions.
- Via Timing Setup, you can adjust the speed in units of 1/1000 seconds
- Polling interval adjusts how often the joystick is polled. Smaller settings result in more precise behaviour, but will increase processor usage as well.
- Typematic delay is the delay until a pressed key is automatically triggered again repeatedly. Note that this value should best be set larger than the polling interval for most cases.
- Typematic interval is the delay between automatically repeated keypresses
- Changing Joystick threshold allows adjusting the joystick sensitivity
- An axis position is sensed active whenever the elongation exceeds the given threshold. Joystick sensitivity can be calibrated using the standard windows control panel.
- The order of the rows (and thus the order of simulated keys) can be changed via drag-and-drop. Just click an empty part of the row and move it as desired.
- Scrolling via keyboard or mouse is enabled as soon as there are more rows than the screen height can show.
- The current version of the tool is available at deinmeister digital delusions
Multiple joystick and settings support
The Joystick Cursor Tool supports multiple settings for various purposes
- Multiple settings can be stored and retrieved by using a command line parameter:
joycur.exe id=n will retrive setting n, where n is a single letter or number.
- Or, when starting multiple instances of the program at the same time, settings id=2, id=3, id=4,... are used automatically
- Thus, additional joysticks and keyboad keys are possible
- Assigned id= values are shown in the setup dialog
You can enable a sequence of keys to an axis. Each key maps to a specific range on that axis and will be triggered whenever the axis position enters that range. This functionality is primarily intended for using rudders or knobs as a volume control or virtual gas pedal.
- In order to enable this functionality, check both axis positions of an axis for every key which should be part of the sequence. The topmost key in the list maps to the minimum axis position, the last key in the list maps to the maximum axis position.
- ALT-, CTRL- and Shift keys have a special meaning. They are not assigned to a specific range but are used as modifier for the whole range instead. Whenever a key within the sequence gets triggered, this modifier is invoked as well. This makes it possible to build combinations like Shift-1, ..., Shift-9.
- Each axis mode sequence contains at least two keys which are not a modifier. You may use as many keys as possible, however in practice more than 10 keys per sequence are hardly useful. Analogue gameport joysticks usually only allow using 3-5 keys properly.
- You may use multiple axes each having their own sequence if the input device provides enough accuracy.
- Note that some ranges might be skipped while changing the axis position fast enough or when the input device lacks precision. Since this is the case with real keyboard keys as well, any keyboard-controlled application should be able to handle this behaviour properly.
Whenever there is a joycur.cfg file in the program directory, the tool reads the settings out of this one rather than the system registry. This allows you to move the settings to a different computer or to store them in different locations by renaming or copying the file. In order to reuse it, just pass it on the command line or drag&drop it onto the tools program icon.
(c) deinmeister.de 2009