ControlMyJoystick emulates a joystick and can send keyboard and mouse commands to a game. Whether the game can recognize that is determined by the game developer.
It can also use a 3Dconnexion controller as a digital joystick to allow WASD scrolling-like movement in a game.
ControlMyJoystick can take axis position data from a 3Dconnexion controller, apply a curve and then send it to the virtual controller driver. 3Dconnexion also has it’s own KMJ driver that is installed when you install their 3DxWare10 software for their controllers. You may also have a physical joystick a driver which uses it’s own driver. So a game has three joysticks to choose from.
- Tetherscript Virtual Controller
- 3Dconnexion KMJ Driver
- My PhysicalJoystick Driver
Some games will just default to the first available joystick and only accept input from that joystick. This happens more often on older games. Sometimes the Tetherscript Virtual Controller is not seen as the default joystick. The only way around this is to disable the drivers for all other joysticks and then restart the game.
Newer games generally allow a user to select which joystick to use. Some newer games even allow the selection of more than one joystick, so you can use one for flight controls and another joystick for throttle. These are great designs and make it very easy to use with ControlMyJoystick.
The 3Dconnexion KMJ Driver
The Keyboard, Mouse, Joystick driver that is installed with 3DxWare10 can cause problems. When you are mapping controls in-game, some games prompt you to move a joystick along an axis or press a button. These games may monitor all joystick drivers and look for the one that is emitting data.
If you are using a 3Dconnexion controller, both the KMJ driver and ControlMyJoystick’s Virtual Controller driver will emit data at the same time. This may cause the game to map to the KMJ driver instead of the ControlMyJoystick’s virtual controller driver. If that happens, the game is listening to the wrong joystick driver and ControlMyJoystick’s ‘s curves and joystick button press scripts will not work properly.
The only workaround is to disable the KMJ driver, restart the game and then do the control mapping again. No data will be emitted from the KMJ driver and this will allow the game to see the virtual controller driver.
ControlMyJoystick allows a macro’s script to send keystrokes to a game using the Windows API SendInput function. Not all games will respond to this input and it is up to the developer to allow it. We could have written a virtual keyboard driver, but this would raise all sorts of security red flags by antivirus software, and some game’s anti-cheat controls. So, if the game developer truly wants to block this, they can. The keystroke script commands are:
- Send KeyDown – use this to press a single key and hold it down.
- Send KeyUp – use this to release a single key.
- Send Text – use this to specify one or more keys in a series of keydown/keyup commands. You can specify how long to hold the key down, as well as how long between keydown’s. This allows you to control the keyup/keydown timing. Some games don’t like it if you send the commands to fast. Using 100 milliseconds for both seems to work for most games, but you may need to experiment a bit to find the correct timing.
Some games also discriminate between upper and lower case. So, even if the in-game command to toggle the landing gear looks like a capital ‘G’, you may send a lowercase ‘g’ via script command to get it to work.
As you try these keyboard script commands, you may do a KeyDown, but forget to do a KeyUp. This can cause your keyboard to act strangely. The fix it, just physically press and release the button on the physical keyboard.
ControlMyJoystick allows a macro’s script to send mouse button presses and axis position data to a game using the Windows API SendInput function. Not all games will respond to this input and it is up to the developer to allow it. We could have written a virtual mouse driver, but this would raise all sorts of security red flags by antivirus software, and some game’s anti-cheat controls. So, if the game developer truly wants to block this, they can.
The mouse script commands are:
- Send Mouse Button Left/Middle/Right Down – use this to press a mouse button and hold it down.
- Send Mouse Button Left/Middle/Right Up- use this to release a mouse button.
- Send Mouse Move Relative/Absolute – use this to move the mouse pointer.
With these commands, you could move the mouse to a certain location on-screen, and simulate a mouse click.
As you try these mouse script commands, you may do a Button Down, but forget to do a Button Up. This can cause your mouse to act strangely. The fix it, just physically press and release the button on the physical mouse.