TARGET Script to use two Thrustmaster T16000 Joysticks with E:D

Hi,

Here is a script I wrote to use two Thrustmaster T16000 joysticks with ED:

https://www.dropbox.com/s/j6zvgt5r51uzhpb/Elite_v1.0.tmc

One advantage of using a second joystick for controlling the speed is that it's easy to find the sweet spot for maneuverability (since it's the rest position of the joystick). However, there is two problems:
  1. If you want to stand still for a while, or cruise at full speed, keeping the joystick pulled or pushed is tenuous.
  2. When you switch Flight Assist off, you generally want to drop your speed to 0 and maintain it there. Again, it's cumbersome with a joystick.

Using the Thrustmaster TARGET software, I wrote a script to correct this two issues. It has the following features:

  • You set a default speed using the slider of your left joystick. This speed will be used when the joystick is at rest. (Note that currently, you can set the default speed by increment of 25% of your max speed).
  • If you push or pull the left joystick, you change the speed relative to the default speed.
  • You can set up a button to act as a FA toggle. Each time you turn FA Off, your default speed is set to 0. When you turn it back on, you return to your previous default speed. (Note that this feature is disabled by default, as the choice of the correct button for this is very personal)
  • You can set up a button to act as a "shift" modifier. When held down, all other buttons have a different binding; this gives access to 22 functions without moving your hands off the sticks. (By default this is bound to the left trigger, but you can change or disable it)
  • When you push the left joystick at maximum speed, a JOY32 button event is generated. This can be useful if you bind it to the engine boost. There is also a JOY31 button event when the stick is pulled to null speed (can be used for reverse). Note that in order to easily bind them in the ED options, these same bindings are also found on the buttons on the base of the joystick.
  • I tried to make the script easy to customize. There are various options and bindings at the start of the file that you can change, without any coding knowledge.
  • One drawback of using this script, is that due to what seems to be a bug in the TARGET software, the POV hat of your second joystick won't be available. I'll try to contact Thrustmaster support to see if there is a fix or workaround.

How to use the script

  1. First you need to install the Thrustmaster TARGET software, if it's not already done.
  2. Start the "TARGET Script Editor" (not the TARGET GUI). Note that you may need to start it in administrator mode, depending on your version of windows and your UAC settings.
  3. Obviously you need to download the script (the link is at the top of the post).
  4. Open the script in TARGET, go to the "tools" tab, and click the "Run" arrow in the toolbar.
  5. To test the script, you can click on the "Device Analyzer" button in the toolbar.
  6. Unfortunately, I didn't find any reliable way to tell which joystick is the left one, and which is the right one. The software pick them in an arbitrary order, and the only way to change it seems to randomly plug the joysticks to new USB slots, until they are recognize in the correct order. Stop the script and restart it to check it.

Hopefully that will be useful to some. If you have any question about it, don't hesitate to ask. If you have suggestions for new features, I'm open to suggestions (within reason ^_^).

For example I'm not sure about the default speed increment: would it be useful to be able to set the default speed more precisely? Hopefully more experienced pilots could give me some feedback on this (i.e. maybe sometime in a dogfight it would be useful to have a default speed slight above or below the sweet spot?).
 
As somebody who will be probably buying 2 T16000s for Elite, this sounds really good. Much appreciated.

How does the 2 joystick setup feel compared to more traditional HOTAS?
 
I've never played with a HOTAS, so I can't compare.

To me the big advantage is that it's easy to keep the speed in the sweet spot during a dogfight. You don't need to keep an eye on the speed meter, this makes one less thing to monitor. You also have 2 more axis that you can map to lateral and vertical thrusters, so you have complete analog control of your ship (note that some throttles do have a mini thumb joystick, so it's probably equivalent).

One disadvantage is that I think vertical thrusters are more important than lateral thrusters (you can't circle strafe laterally because yaw is not fast enough). And if you map the speed to the Y axis of the joystick, the most natural thing to do is to map lateral to the X axis, and vertical to twist. But the twist axis is not very precise, and tiresome to do with the left hand...

Also, you don't have as many buttons as on high end throttles.

But on this subject, I found a way to make the second POV hat to work! It involves a few manipulations, so I'll post a detailed howto later.
 
Here's the workaround I found to make the second POV hat work when using two T16000 joysticks with TARGET.

  1. First, locate the TARGET installation folder (should be something like "C:\Program Files (x86)\Thrustmaster\TARGET").
  2. Open the "scripts" folder.
  3. Copy the "target.tmh" file to the directory where you have saved my script. (The copy must still be named "target.tmh".)
  4. Open this copy in a editor suitable for plain text (e.g. Notepad).
  5. There is only one line to change. Search for line 258, or for the following text: "if(&dev == &T16000)".
  6. This line should read:
    Code:
    	else if(&dev == &T16000)
    remove everything except the "else":
    Code:
    	else
  7. Save, and launch my script. The two hats should work now, the second one is bound to joystick buttons 21 to 24 (25 to 28 in shift mode).

Note that this should work with any custom script (as long as it's in the same folder), and AFAIK should not interfere with any other (current) Thrustmaster joysticks.
 
Yeah... this is awesome.

Just bought into the Premium Beta today and had my fingers crossed for a thread like this.

I'm thinking of moving on to CH HOTAS and pedals later on, but I got 2 T16000's on sale from Microcenter a while back to give myself an opportunity to test joystick vs. M/KB before sinking $300+.

In any case, I bought myself the Premium Beta as a birthday present and wasn't looking forward to a bunch of mapping before even getting to play (no scripting experience whatsoever).

You've really made my birthday! Thanks for your hard work.

I'll be sure to give some feedback once I have some time in the game.
 
Hey drakmaniso, I have a question that I fear is painfully basic but as I said, I have never configured anything like this before.

I got your script running fine with TARGET and made the modification to allow use of the second hat.

My problem is this: while setting up the controls in-game, ED doesn't seem to recognize the two sticks as unique devices.

So, if I set the Y-axis on the left stick to thrust and then set the Y-axis on the right stick to pitch, it will clear the mapping for thrust.

Any idea what I'm doing wrong?
 
Last edited:
Im playing with a T16000M since alpha1
But ill pass i don't see the benefits
Agreed the small slider is a bit jidderish for throttle.Finding the sweet spot is just a matter of getting used to.
I use all 4 thrusters a lot during dogfights using the left side buttons of the stick.
I wonder if you found out buy they do make your curb smaller.
For the other functions I use voice attack. Full stop is just the same as on the enterprise :)
There's also rocat power grid http://forums.frontier.co.uk/showthread.php?t=15616
How am I going to use that with 2 joysticks in my hands?
 
Last edited:
So, if I set the Y-axis on the left stick to thrust and then set the Y-axis on the right stick to pitch, it will clear the mapping for thrust.

Yes, it sounds like the two joysticks are not combined.

When the script is running, what do you see in Windows "Game Controllers" dialog? (Depending on you Windows version it might have another name; it's the little dialog that list all active joysticks, and where you can access their properties.)

You should only see one "Thrustmaster Virtual Game Controller (root)", and no "T.16000M".

If that's not the case, check the line 21 of the script, it should read:

Code:
define JOYSTICKS_COMBINED  1       // '0' or '1' (default: '1')

If the value is at 0, you've found the problem. If not, well, I'm not sure...
 
There's also rocat power grid http://forums.frontier.co.uk/showthread.php?t=15616
How am I going to use that with 2 joysticks in my hands?

I don't think one control method is better than another (at least, not in Elite). So it's not so much about "advantages" but about "what feels right for me".

And for me, the physicality of input methods is one of the things I love the most in games. For Elite, using both hands to full extent (and not just the fingers) is the main reason I wanted to try dual joysticks. I think even a true throttle wouldn't be as satisfying, since the left hand is somewhat under used. And there's no way I can use a touchscreen while flying...

I did try GlovePIE, which can achieve the same thing as Voice Attack, and it is really nice; though I'm not sure my neighbors would agree. :p
 
This is interesting and I imagine quite flexible and powerful, though the sweet spot does change depending on engine pips, so getting optimal turn rate is not just a matter of letting the throttle stick return to neutral.
 
This is interesting and I imagine quite flexible and powerful, though the sweet spot does change depending on engine pips, so getting optimal turn rate is not just a matter of letting the throttle stick return to neutral.

The sweet spot is always at 50% of your max speed, at least in alpha 1.1. The actual speed change when you put more pips in the engines because your max speed change.

But as others have said, finding the sweet spot seems easy enough with a good throttle, so I'm not sure if there's any real advantage here.

The other benefit of dual joystick is that you can have a very good control of vertical and lateral thrusters (if you bind forward speed to twist or pedals). This can help in dogfights, but I've recently began to experiment with this setup with FAoff, and I think that's where the biggest advantage lies: having precise translational thrusters control makes a big difference, at least for me. I went from "utter crap" in FAoff, to "ok, I might be getting somewhere...".
 
The sweet spot is always at 50% of your max speed, at least in alpha 1.1. The actual speed change when you put more pips in the engines because your max speed change.

Ah, thanks for that insight, I hadn't realised that the relationship was so simple :)

But as others have said, finding the sweet spot seems easy enough with a good throttle, so I'm not sure if there's any real advantage here.

The other benefit of dual joystick is that you can have a very good control of vertical and lateral thrusters (if you bind forward speed to twist or pedals). This can help in dogfights, but I've recently began to experiment with this setup with FAoff, and I think that's where the biggest advantage lies: having precise translational thrusters control makes a big difference, at least for me. I went from "utter crap" in FAoff, to "ok, I might be getting somewhere...".

Having directional thrust on a second stick, and using twist for throttle, sounds very interesting...
 
Well, all seems to be working properly now and I gotta say, I love this control method. I only had about 10 minutes to sit down with it this morning, but I am already getting good at finding the sweet spot for turning speed.

It seemed to work after I tried running the TARGET editor normally rather than as admin. Go figure.

I noticed that the left stick trigger is not mappable. Is this because you have it defaulted as the mode switch button? Do I need to edit the Elite.tmc file directly to set up additional modes? Guess I will be learning some code.

Again drak, thanks for sharing this with us. Not sure if this will be my final control scheme, but I am so thrilled to be up and running in such a short time.

P.S. Is there any foreseeable reason why this script wouldn't also work for a certain other upcoming space flight sim?
 
Can you turn wile using several thrusters at once and not train yourselves?
And perhaps select the shield generator wile you were doing that?
 
It seemed to work after I tried running the TARGET editor normally rather than as admin. Go figure.

That's really strange. What version of Windows do you use?

I noticed that the left stick trigger is not mappable. Is this because you have it defaulted as the mode switch button? Do I need to edit the Elite.tmc file directly to set up additional modes?

Yes, I enabled the shift mode on left trigger by default. That means while you hold this trigger down, all other buttons on both sticks have a different binding. To disable it, just edit line 38 of the script:

Code:
define SHIFT_ENABLED         1       // 0 or 1

Replace 1 by 0, and the left trigger will be disponible in the game (obviously you lose the double bindings for buttons; alternatively, you can select any other button to act as a mode switch). I probably should have made this the default.

Not sure if this will be my final control scheme, but I am so thrilled to be up and running in such a short time.

I'm not sure I will stick with it either. I will at least add some pedals into the mix, as using the twist axis on the left hand is a bit uncomfortable. However one big drawback of dual joysticks is that you don't have as many buttons than on Hotas; so if you don't use something like GlovePIE or Voice Attack, this might be a problem.

P.S. Is there any foreseeable reason why this script wouldn't also work for a certain other upcoming space flight sim?

The only thing that is really ED specific is the FA toggle, which is disabled by default. So it should work with SC, or any other game.
 
Can you turn wile using several thrusters at once and not train yourselves?

I'm not sure what you mean by this? Since I've switched the throttle to the twist axis of my left stick, I often use vertical and/or lateral thrusters during dogfight. Either to stay behind my target, or to try to shake off an ennemy on my six. Also, I've started to experiment with FAoff, and having precise control of translation seems to be a big help.

And perhaps select the shield generator wile you were doing that?

Yes, in alpha 1.1 there is not many bindings in the game, so it's easy to have everything directly accessible while keeping my hands on the sticks.
 
That's really strange. What version of Windows do you use?

I'm using Windows 7. Now that I think of it though, I may have also plugged the sticks into different USB ports than before, so that could be the solution.

Thanks for the tip on the mode switch. Can't wait to play around with that.
 
How do swop it too left handed mode?

Hi,

Here is a script I wrote to use two Thrustmaster T16000 joysticks with ED:

https://www.dropbox.com/s/j6zvgt5r51uzhpb/Elite_v1.0.tmc

One advantage of using a second joystick for controlling the speed is that it's easy to find the sweet spot for maneuverability (since it's the rest position of the joystick). However, there is two problems:
  1. If you want to stand still for a while, or cruise at full speed, keeping the joystick pulled or pushed is tenuous.
  2. When you switch Flight Assist off, you generally want to drop your speed to 0 and maintain it there. Again, it's cumbersome with a joystick.

Using the Thrustmaster TARGET software, I wrote a script to correct this two issues. It has the following features:

  • You set a default speed using the slider of your left joystick. This speed will be used when the joystick is at rest. (Note that currently, you can set the default speed by increment of 25% of your max speed).
  • If you push or pull the left joystick, you change the speed relative to the default speed.
  • You can set up a button to act as a FA toggle. Each time you turn FA Off, your default speed is set to 0. When you turn it back on, you return to your previous default speed. (Note that this feature is disabled by default, as the choice of the correct button for this is very personal)
  • You can set up a button to act as a "shift" modifier. When held down, all other buttons have a different binding; this gives access to 22 functions without moving your hands off the sticks. (By default this is bound to the left trigger, but you can change or disable it)
  • When you push the left joystick at maximum speed, a JOY32 button event is generated. This can be useful if you bind it to the engine boost. There is also a JOY31 button event when the stick is pulled to null speed (can be used for reverse). Note that in order to easily bind them in the ED options, these same bindings are also found on the buttons on the base of the joystick.
  • I tried to make the script easy to customize. There are various options and bindings at the start of the file that you can change, without any coding knowledge.
  • One drawback of using this script, is that due to what seems to be a bug in the TARGET software, the POV hat of your second joystick won't be available. I'll try to contact Thrustmaster support to see if there is a fix or workaround.

How to use the script

  1. First you need to install the Thrustmaster TARGET software, if it's not already done.
  2. Start the "TARGET Script Editor" (not the TARGET GUI). Note that you may need to start it in administrator mode, depending on your version of windows and your UAC settings.
  3. Obviously you need to download the script (the link is at the top of the post).
  4. Open the script in TARGET, go to the "tools" tab, and click the "Run" arrow in the toolbar.
  5. To test the script, you can click on the "Device Analyzer" button in the toolbar.
  6. Unfortunately, I didn't find any reliable way to tell which joystick is the left one, and which is the right one. The software pick them in an arbitrary order, and the only way to change it seems to randomly plug the joysticks to new USB slots, until they are recognize in the correct order. Stop the script and restart it to check it.

Hopefully that will be useful to some. If you have any question about it, don't hesitate to ask. If you have suggestions for new features, I'm open to suggestions (within reason ^_^).

For example I'm not sure about the default speed increment: would it be useful to be able to set the default speed more precisely? Hopefully more experienced pilots could give me some feedback on this (i.e. maybe sometime in a dogfight it would be useful to have a default speed slight above or below the sweet spot?).

Umm... how do you switch the stick scripts over - so a "South-Paw" can use them. Left hand joystick = control axis and Right Hand Joystick = Power / thrust etc.

Same with POVs too and each stick.

I'm using a single TM16000 left handed - with the POV as directional thrust and TrackIR.

I just wished you could get a quality Left Handed HOTAS set up - but no one makes them. :mad: I'm sure they would sell enough of them, even if they charged 50% more -to justify a production run. Any Left Handed flight sim would buy it.... as no-one makes any others.
 
Back
Top Bottom