FWIW: USB Thrustmaster joystick keyboard emulation


Veteran Spaceman
I've been playing WC1 and Privateer 1 through DOSBox, first with a Thrustmaster HOTAS Cougar, and then with a hybrid setup consisting of a HOTAS Warthog Flight Stick and the Cougar's throttle. I programmed both setups to emulate keyboard commands so that I could play almost entirely on the stick and throttle. For the Cougar, I used the stick and throttle's native keyboard emulation; for the hybrid setup, I use the T.A.R.G.E.T. software.

With both setups, I noticed that the games would sometimes fail to register key commands from the stick and throttle. This happened FAR more often in WC1 than in Privateer, and especially in heavy combat. Kind of annoying when I'd go to switch missiles and nothing would happen! However, the same commands from the keyboard worked every time.

I solved the problem by adding the "hold" parameter to all of the key commands programmed into the sticks. By default, they use a "pulse" mode, and the pulses may have been too brief for the game engines to notice during busy moments. With the "hold" parameter, the joystick and throttle buttons behave exactly like keyboard buttons, and everything seems fine.

I also managed to make at least some use of the throttle axis using T.A.R.G.E.T. That software allows a region within each axis to send commands just like a keyboard or joystick button. I mapped the bottom 10% of the throttle travel to the Backspace key, and the top 10% to the Tab key. So, if I want to use afterburners, I just throw the throttle all the way forward; if I want to kill my speed, I pull it all the way back. This is fun in both games, but it's SUPER useful in Privateer -- as soon as I come out of autopilot on my way to a nav point, I just throw the throttle to max and speed toward the nav point without having to hold the Tab button. :) I haven't yet found an intelligent way to use the axis to increase or decrease the set speed, so I just have the + and - keys mapped to other buttons on the throttle. If I come up with something, I'll post back.

Last edited:


Veteran Spaceman
Added some more throttle functionality by mapping the [=] and [-] keys to other regions. Here's what I'm using now -- note that the axis percentages are reversed, so 0% is all the way forward and 100% is all the way back:

0% - 10% = [Tab] = Afterburner
10% - 30% = [=] = Increase speed
30% - 70% = Nothing
70% - 90% = [-] = Decrease speed
90% - 100% = [Backspace] = Zero speed

All keys with the "hold" parameter of course.

So, to accelerate, you just move the throttle forward until you're done, and then move it back to center. Same with deceleration: move the throttle back, then center it when done. A bit clumsy, but better than nothing IMO.

For WC3, I thought of adding a Max Speed function between the [Tab] and [=] regions. However, that'd make the throttle hit that key every time it moved in or out of the afterburner region. Not sure that's desirable.