Dual Thrustmaster 16000 FS using TARGET script issue

This looks like an error in the TARGET configuration on your part - I cannot help you without seeing your code.



Interesting. How does the system knows which one is the left-handed variant?

At the risk of sounding stupid, there is a switch underneath for L or R operation, I thought this makes it appear to the PC as 2 different controlers.
 

Arguendo

Volunteer Moderator
And I spoke too soon.
Whenever I run the script now, it treats #1 key on the stick as if it's the same as the #1 stick on the throttle. That is, when starting with an empty control scheme, I map the #1 button on the stick to primary fire. When I then try to map the #1 button on the throttle to Silent Running, it tells me I've already bound that button to Primary Fire. The game also doesn't recognise any of my hats.
Guess I gotta dig a bit deeper in the user manual to sort this [where is it]
 
Last edited:
Here's what appears when clicking "view script". Is this what you guys are talking about?
Code:
include "target.tmh"
int main()
{
    Configure(&HCougar, MODE_EXCLUDED);
    Configure(&Joystick, MODE_EXCLUDED);
    Configure(&Throttle, MODE_EXCLUDED);
    Configure(&T16000L, MODE_EXCLUDED);
    Configure(&LMFD, MODE_EXCLUDED);
    Configure(&RMFD, MODE_EXCLUDED);
    Configure(&TFRPRudder, MODE_EXCLUDED);
    if(Init(&EventHandle)) return 1;
    SetKBRate(32, 50);
    SetKBLayout(KB_ENG);
    SetShiftButton(0, 0, 0, 0, 0, 0);
    MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYX, 0, 10, 0, 5, 0);
    MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYY, 0, 10, 0, 5, 0);
    MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, RUDDER, 0, 4, 0, 2, 0);
    MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);
    MapAxis(&TWCSThrottle, TRDR, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TRDR, 0, 0, 0, 0, 0);
    MapAxis(&TWCSThrottle, TTHR, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TTHR, 0, 20, 0, 0, 0);
    MapAxis(&TWCSThrottle, TANT, DX_Z_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TANT, 0, 0, 0, 0, 0);
    MapAxis(&TWCSThrottle, TMSTX, DX_XROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TMSTX, 0, 5, 0, 5, 0);
    MapAxis(&TWCSThrottle, TMSTY, DX_YROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TMSTY, 0, 5, 0, 5, 0);
    MapAxis(&TWCSThrottle, TCSRIGHT, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TCSRIGHT, 0, 0, 0, 0, 0);
    MapAxis(&TWCSThrottle, TCSRUDDER, DX_THROTTLE_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TCSRUDDER, 0, 0, 0, 0, 0);
    MapAxis(&TWCSThrottle, TCSLEFT, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&TWCSThrottle, TCSLEFT, 0, 0, 0, 0, 0);

}
int EventHandle(int type, alias o, int x)
{
    DefaultMapping(&o, x);
}

And I spoke too soon.
Whenever I run the script now, it treats #1 key on the stick as if it's the same as the #1 stick on the throttle. That is, when starting with an empty control scheme, I map the #1 button on the stick to primary fire. When I then try to map the #1 button on the throttle to Silent Running, it tells me I've already bound that button to Primary Fire. The game also doesn't recognise any of my hats.
Guess I gotta dig a bit deeper in the user manual to sort this [where is it]

You need to map your Joystick and throttle button's through Target GUI ... Not just the Axis

Check this Thrusmaster basic Target (GUI) profile for ED (Not up to date) to see what I mean

http://ts.thrustmaster.com/download/pub/webupdate/TFlight/FCS_HOTAS_ELITE-DANGEROUS.zip
 
Last edited:

Arguendo

Volunteer Moderator
You need to map your Joystick and throttle button's through Target GUI ... Not just the Axis

Check this Thrusmaster basic Target (GUI) profile for ED (Not up to date) to see what I mean
Wholly crap! So I need to "add an event" for every single button on the stick and throttle that are either double-mapped, or not recognized? Yikes.

Well, a man's gotta do what a man's gotta do :)
 
Yes :)

You can also use this GUI script as base one and start from there (it should have almost all already but not necessarily where you want)

This script should have this layout (not checked)
http://ts.thrustmaster.com/download/pictures/pcmac/T16000M/EliteD_T16000MFCS_Mapping.jpg

And Then, once done, Bind All this pressing joystick and throttle button's in ED

Good luck

Edit : It's worth it to understand how it's works. Target Script (and GUI) are powerfull tools to play with (search warthog ED target script on your browser, you should find some warthog script ;) )
 
Last edited:

Arguendo

Volunteer Moderator
Well, all I did was take the buttons and hats on the throttle and remapped them to buttons 17-29 on the virtual joystick. That should work fine, as I have to remap them in the game anyhow.
An issue I am hitting now is the throttle itself. It appears as the X-axis, which is also the axis that is mapped to roll on the stick. So I need to somehow remap the throttle to an analogue virtual axis, but I can't seem to figure out how to do that in the GUI. Only misc buttons available for that :(
There is however an axis called Throttle in the Device Analyzer that doesn't move no matter what I move or press, so it seems like the GUI doesn't map the Throttle Axis correctly when combining the two.
And the same goes for the paddles. It's mapped to the same axis as pitch on the stick, and I can't figure out how to separate Right and Left (making it digital input, instead of analogue). It only shows as one input TRDR.

Hrmph. Not exactly self-explanatory this GUI thing tbh.


And the script the GUI puts out looks nothing like the one you gave an example of :D
 
Last edited:
I think what your looking for is this .
At the beginning of the script there is the following line :

Configure(&T16000L, MODE_EXCLUDED);

This will tell you what "target" should do with the device .

You actually have 3 options for the line :

Configure(&T16000L, MODE_EXCLUDED); ->> This will not include any binds with your script , so if you press a button in Elite Dangerous , it will just treat the joystick as it would without using any script

Configure(&T16000L, MODE_FILTERED); ->> This will tell it to use your bindings and map it to the "thrustmaster combined" virtual controller

Configure(&T16000L, MODE_KEEPENABLED); ->> This will keep your T16000 enabled AND Map your bindings to the virtual controller ( Thrustmaster combined) .

So you only have to map the buttons you want , and use the Configure(&T16000L, MODE_FILTERED); line at the start of your config .

If for some reason some buttons are still mapped .

For e.g : MapKey(&T16000, TS2,DX2); and you would like to give it no binding at all
the line would look like

MapKey(&T16000, TS2,0);

Hope you can achieve what you want to achieve !


O7
 

Arguendo

Volunteer Moderator
I think what your looking for is this .
At the beginning of the script there is the following line :
<snippety snip>
That looks very helpful indeed!
Code:
Configure(&HCougar, MODE_EXCLUDED);
    Configure(&Joystick, MODE_EXCLUDED);
    Configure(&Throttle, MODE_EXCLUDED);
    Configure(&T16000L, MODE_EXCLUDED);
    Configure(&LMFD, MODE_EXCLUDED);
    Configure(&RMFD, MODE_EXCLUDED);
    Configure(&TFRPRudder, MODE_EXCLUDED);
Is what my header looks like. So just replace MODE_EXCLUDED with MODE_FILTERED for the &16000L item, and all buttons will remain the same unless I do something to them? How will this affect curves though?
Basically, what I really want is just to use the curves for the analogue inputs (excluding paddles and throttle) in TARGET, and leave all the buttons as they are.

EDIT:
You're answering the OP. My bad.
Think that would work for my Throttle? Just do the same to it, and it will leave it alone? That would solve everything except the curves on the analogue mini-stick.
 
Last edited:
Hi, I use Thrustmaster TARGET with dual stick, however I have one Warthog and one T16000m. My script is a customised version of Aussiedroid's Enhanced Warthog Script.

The thing to note is that in those scripts the individual peripherals are referred to with their respective hardware id, which in case of two T16000m should be identical I guess. I would however be really surprised if there was no way to configure independently different curves for different sticks.

Finally I also have issues aiming railguns with the joystick - could I ask you what kind of curve you had planned for your main stick?


I haven't tried doing custom script as I use the TARGET GUI and not the script editor. I don't code so I don't like to muck with it too much. The TARGET GUI is supposed to help people like me and those who can do code.


The problem I run into with twin controllers is that TARGET will create ONE virtual controller.

ED will recognize this as one joystick even though when it has been setup for left and right joysticks including the profile/curve adjustments for each individual joystick.

I know the TARGET GUI has a feature where you can select a different axis name when you click on the axis title on the page where it allow you to select which axis to customize response curves so as the joysticks don't have the same axis names but it seems too limited.

That is why when you press a button on one controller it is duplicated on another as the same button, ED sees it as the same button even though it is not.

Since TARGET GUI always seems to create one virtual controller even for combined controls, I think it really should create a virtual controller for each controller profiled, so that ED will see it as two individual sticks with custom profiles as it would if you didn't run the TARGET script. Windows will map it as individual sticks.


I haven't really given railguns a decent go.

But my curve profile is mostly flat at the middle so as I get a finer adjustment without the jerkiness or over-correction.

I increase the zoom a little so as I can get to max quicker if needed.
 
Last edited:
I think what your looking for is this .
At the beginning of the script there is the following line :

Configure(&T16000L, MODE_EXCLUDED);

This will tell you what "target" should do with the device .

You actually have 3 options for the line :

Configure(&T16000L, MODE_EXCLUDED); ->> This will not include any binds with your script , so if you press a button in Elite Dangerous , it will just treat the joystick as it would without using any script

Configure(&T16000L, MODE_FILTERED); ->> This will tell it to use your bindings and map it to the "thrustmaster combined" virtual controller

Configure(&T16000L, MODE_KEEPENABLED); ->> This will keep your T16000 enabled AND Map your bindings to the virtual controller ( Thrustmaster combined) .

So you only have to map the buttons you want , and use the Configure(&T16000L, MODE_FILTERED); line at the start of your config .

If for some reason some buttons are still mapped .

For e.g : MapKey(&T16000, TS2,DX2); and you would like to give it no binding at all
the line would look like

MapKey(&T16000, TS2,0);

Hope you can achieve what you want to achieve !


O7

Interesting, I might try mucking with this when I get too frustrated with the left-handed stick not having a profile script running.

I just finished re-binding in ED for what I script is run by TARGET GUI.

"Configure(&T16000L, MODE_KEEPENABLED); ->> This will keep your T16000 enabled AND Map your bindings to the virtual controller ( Thrustmaster combined) ."

This part looks interesting.
 
That's a lot of effort!

Why not just get used to the sticks? I use Twin T16000s without TARGET. I fly FA off and used fixed weapons. I can scoop cargo and shoot AI no problems. I have just set up a tiny deadzone in the menu to deal with a bit of drift.
 

Arguendo

Volunteer Moderator
I know the TARGET GUI has a feature where you can select a different axis name when you click on the axis title on the page where it allow you to select which axis to customize response curves so as the joysticks don't have the same axis names but it seems too limited.
This may have saved it for me tbh. The buttons I can just map out to different numbers, but the axis were confusing me. I never even saw that pulldown menu. Thanks!

Now, how do I get target to recognise the hat on my stick as an 8-way? It only registers as 4-way in the GUI and I need the 8-way for my VA pip Macros :O

Edit: Can I just add a line in the script that looks something like this?
Code:
MapKeyIOUMD(&T16000, H1U+H1R, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT);
Or doesn't coding work like that? My script currently says the following for HAT UP and HAT RIGHT:
Code:
MapKeyIOUMD(&T16000, H1U, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP);
    MapKeyIOUMD(&T16000, H1R, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT);
 
Last edited:
This may have saved it for me tbh. The buttons I can just map out to different numbers, but the axis were confusing me. I never even saw that pulldown menu. Thanks!

Now, how do I get target to recognise the hat on my stick as an 8-way? It only registers as 4-way in the GUI and I need the 8-way for my VA pip Macros :O

Edit: Can I just add a line in the script that looks something like this?
Code:
MapKeyIOUMD(&T16000, H1U+H1R, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT, PULSE+DXHATUPRIGHT);
Or doesn't coding work like that? My script currently says the following for HAT UP and HAT RIGHT:
Code:
MapKeyIOUMD(&T16000, H1U, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP, PULSE+DXHATUP);
    MapKeyIOUMD(&T16000, H1R, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT, PULSE+DXHATRIGHT);

It gets a bit tricky , since you probably have to use an IF command , since like you allready noticed target sees the T16000 as a 4 point hat .
Not sure what you want to achieve . But i never used the hat in a 8 way configuration , since it gets tricky cause you have to hit exactly the two buttons ( H1U & H1R ) at the same time .
when you have stuff mapped to the H1U , it will register first , so in practice its a little trippy to use it like that .

Send me a PM of your current script , and your goal , and if you give me some time ill work out a script for you that will work .
 

Arguendo

Volunteer Moderator
It gets a bit tricky , since you probably have to use an IF command , since like you allready noticed target sees the T16000 as a 4 point hat .
Not sure what you want to achieve . But i never used the hat in a 8 way configuration , since it gets tricky cause you have to hit exactly the two buttons ( H1U & H1R ) at the same time .
when you have stuff mapped to the H1U , it will register first , so in practice its a little trippy to use it like that .

Send me a PM of your current script , and your goal , and if you give me some time ill work out a script for you that will work .
Well, I figured it out. It actually does read the diagonals, it's just very tricky to hit them when using "pulse". All it takes is practice.

What I am trying to do is use the main axis of the Hat for my standard pip distribution (down = balanced, the rest distributes 1 pip to either direction), and the diagonals for Voice Attack preset Pip Macros.
 

Arguendo

Volunteer Moderator
And finally I have everything set up and working. Puh! That TARGET program isn't for the faint-hearted. For others who are setting it up via the GUI, here are some of the things I found:

- UFO Reality's tip about changing the axis in the "curve setting" screen made it possible to place curves on most analogue inputs. There are however only 8 available iirc, so if you're using pedals you're quickly running out and even with the HOTAS version you have one too many. I chose to skip the throttle slider on the stick. I couldn't find a use for it, mostly since I need to take one of my hands off a control to use it and that doesn't make sense with an analogue input with a curve. And DO NOT use the Mouse X/Y axis. That actually gets registered as mouse input in the game and is pretty much useless unless you actually want to use for example the mini-stick on the throttle as a mouse. Summary; put everything you don't use to None, and then distribute the rest making sure you haven't mapped any axis to two different inputs.

- Mapping all the digital inputs takes a bit of time, but basically I just put everything to pulse and started at #17 and put all the throttle controls there. So stick is combined joystick buttons 1-16 (not necessary to map) and throttle uses 17-32. That includes all the three hats on the throttle, so I ran out of buttons here as well. Only needed to map one button outside the 32 available though.

- For shift buttons, to be able to have multifunctions on buttons, I chose the #4 and #5 on the throttle, ie the up-down button in the middle front. This needs to be set for two functions, PRESS and RELEASE to work properly. It does not work with the default setting of PULSE. I didn't touch the different layers/modes in TARGET, as it was easier for me to use this button in the Game Options instead.

- The 8-way hat on the stick was mapped to the POV and it actually registers the diagonals as well. That's hard to see when setting it to pulse though, as you have to be really accurate. That also translates into the game. So I ended up setting those to PRESS and RELEASE as well, and now they're super easy to use for diagonals. The other hats all have pulse, as I don't use diagonals on those. But in theory it should work the same for those.

It's a bit of a pain to do this in TARGET, because you have to do exactly the same in the game, ie map every single function. It's really strange for a company to ship a program that is meant to work with its controllers to not have it automatically set different numbers for the different controllers. The same goes for the analogue axis. There just aren't enough when combining all three components (stick, throttle, pedals), which means some will have double functions, which is useless imo.
 
Last edited:
That's a lot of effort!

Why not just get used to the sticks? I use Twin T16000s without TARGET. I fly FA off and used fixed weapons. I can scoop cargo and shoot AI no problems. I have just set up a tiny deadzone in the menu to deal with a bit of drift.

I'm with you on this

For Basic use (like in this thread), you don't need to use Target

But Target SCRIPT (the GUI is just a limited demo :) ) offer so much possibility when you need advanced control and you understand how to program (or use someone else script) :


  • Macro (requesting docking, system jump, target subsystem,...)
  • Different presets depending how long you hold down the Button (work great for PIP)
  • Switching joystick Curve On the Fly
  • Trimming Joystick axis On the Fly
  • Cycle function on one button (work great for PIP)
  • ....


I Know i'm offtopic since it is not for t16000m, and i'm sorry, but check this thread for example

https://forums.frontier.co.uk/showt...edroid-s-Enhanced-Thrustmaster-Warthog-Script
 
Last edited:
Back
Top Bottom