Hardware & Technical [Guide] Getting the most of your Thrustmaster Joystick/HOTAS with TARGET Software

***

This is a beginner's guide getting Thrustmaster's TARGET joystick calibration and enhancement software to work, also under Win8 and Win8.1. This guide can also serve as a starter guide for using TARGET in general, no matter what Windows you have. TARGET works with the Thrustmaster 16000m, Hotas Cougar, Hotas Warthog, Warthog Throttle, MFD Cougar 1 & MFD Cougar 2.

I wrote this since I had a hell of a time to do this with Windows8.1. There were issues that needed to be fixed to get it to run 100%. Sorry, this guide got really long but in essence what you do is really easy. You would only have to find a good setting once anyway and from there it is simple.

***

What is TARGET and Why Do You Want It?

The TARGET software can greatly enhance and improve your joystick 'experience' because you can use it to set deadzones, custom sensitivity curves and much more. In fact, it is an entire scripting language/interpreter which lets you configure your joystick in infinite ways.

Here in this post I only want to focus on the BASICS. In this case I use TARGET to set small deadzones (one in the middle and two outer) on my Thrustmaster 16000m. (You want a small deadzone to get rid of "middle-position" creep!) and the outer I set so I don't have to move the stick as far as is default.

* Make sure you have your Windows updated with all the latest updates.

* Install the TARGET software on your PC. You can get it from Thrustmaster's site here: http://ts.thrustmaster.com/eng/index.php?pg=view_files&gid=1&fid=3&pid=311&cid=5

* Set all the files you installed so they run as administrator

Once you installed the software on your PC, go to the location where you installed it, eg. C:\Program Files (x86)\Thrustmaster\TARGET\ and C:\Program Files (x86)\Thrustmaster\TARGET\x64 and set all the executable files to run as administrator. For this, you right-click the files in the folder like TmService.exe, TargetGui.exe, TargetScripteditor.exe, Properties --> Compatibility --> Set to "Run As Administrator"

(Whether the above is necessary needs to be verified, not 100% certain now)

- The TARGET software basically consists of a program with a GUI (TargetGUI.exe) which you use to create a configuration and a software TargetScripteditor. (I'll explain this later).

* Start the TargetGUI and click on new configuration in the middle, give the configuration some name.

* Click/Check your device(s), in my case the Thrustmaster 16000m, check that there is a green checkmark. Click next.

Now TARGET shows a screen where you can define deadzone, custom curves etc. Here in my example I set a small deadzone of 4 for my 16000m and two outer deadzones of 7 like:

dz.jpg


Note that the outer small deadzone makes the curve steeper, which means practically it reduces the movement needed to max out the stick.

You do the above for the TWO axes, the JOYX and the JOYY axe.

Click "next" when done.

What you do now is actually that you click on View Script. We don't care about anything else.

When you click View Script, your PC's texteditor comes up and has the generated script which for my 16000m looks like:

Code:
include "target.tmh"
int main()
{
    Configure(&HCougar, MODE_EXCLUDED);
    Configure(&Joystick, MODE_EXCLUDED);
    Configure(&Throttle, MODE_EXCLUDED);
    Configure(&LMFD, MODE_EXCLUDED);
    Configure(&RMFD, MODE_EXCLUDED);
    if(Init(&EventHandle)) return 1;
    SetKBRate(32, 50);
    SetKBLayout(KB_ENG);
    MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYX, 7, 4, 7, 0, 0);
    MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYY, 7, 4, 7, 0, 0);
    MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);
    MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);


        // *** [B]HERE WE NEED TO ADD FOUR MORE LINES BY HAND:[/B]
        //
    MapKey(&T16000, H1U,DXHATUP);
    MapKey(&T16000, H1R,DXHATRIGHT);
    MapKey(&T16000, H1D,DXHATDOWN);
    MapKey(&T16000, H1L,DXHATLEFT);
        //
        // *** [B]TO GET THE POV/HAT OF THE STICK WORKING!![/B]

}
int EventHandle(int type, alias o, int x)
{
    DefaultMapping(&o, x);
}
* Correcting the Bug in the script so the POV HAT works.

The above script needs a short, manual addition since for some unknown reason the POV/HAT buttons with the original created script don't work, at least not under Win8/8.1

Look how I added four more lines after the last "SetSCurve ..." that start with MapKey ... Add those four lines before the "}" like I did in the script example above. IMPORTANT: You would need to do that anytime you have TargetGUI create a script.

Whether this problem with the initially non-working POV/HAT is with other versions of Windows and whether it affects other sticks but the 16000m I don't know! If so, you might have to customize your script accordingly, note that my script is specific for the 16000m.


Now you SAVE this script to your computer to some convenient location, like My Documents as "Elite Dangerous.tmc" or similar.

At this point you can actually exit the TargetGUI software.

* Running the Script with the newly "enhanced" joystick settings.

For running the script I personally run TargetScriptEditor.exe but you can ALSO run the script from the TargetGUI program. I use the TargetScriptEditor.exe since it uses less memory than the GUI program.

* Start the TargetScriptEditor.exe

Go to Menu and LOAD (Menu --> OPEN) your newly created script, like My Documents/Elite Dangerous.tmc

You now have a screen like this:

se.jpg


From here you can load, edit, save and most importantly RUN your script.

So click on RUN.

When it runs successfully, you can minimize the TargetScriptEditor to your taskbar and just let it run there. The script MUST run at all times while you play to use the stick with your new settings.

* What it does

What the TARGET software does is that it creates a new, "virtual" device with the new settings while hiding your original device.

Tip: In case you just freshly installed the stick in Win8/8.1 and it doesn't work when you run the TARGET script, please see "Troubleshooting" at the end of this post. There is a fix for this.

Since TARGET hides the "original" joystick and creates a new, virtual one...this also means that Elite: Dangerous will use a different config compared to as if you were not running TARGET. So, when you had an old control config in Elite and now you use the "new" stick with TARGET you will have to get into Elite: Dangerous Options and make a new config, it will not use the old one you had before! Of course you would only need to do that once anyway, assuming that from there on you will always use TARGET.

TARGET offers a lot of important features, especially setting deadzones etc. so I consider it extremely helpful, there is no reason to use the "old" stick/config without TARGET any longer. My $0.02

* Making quick changes to your stick settings by modifying the script

You can quickly make changes in the script like altering the values for curves, deadzone WITHOUT really needing to use the TargetGUI software.

Simply stop the script in TargetScripteditor. Alter a value, like in my example I have two lines SetSCurve(&T16000, JOYX, 7, 2, 7, 0, 0);

You could change the 2 into a 5 (the 2 here is the value for the center deadzone), SAVE the script...and run it script again.

* CALIBRATING your stick to find the right values, eg. for the deadzones. Quick and Dirty Method

Like above, make sure the script is RUNNING. As we discussed, this creates a new virtual joystick called "Thrustmaster Combined".

In newer Windows, you can start the built-in "Set up USB controllers". (The easiest way for me to do this is in Win Start Menu actually to type and search for "Set Up USB" until you see "Set Up USB Controllers" in Windows menu and then create a shortcut on the Desktop!

There is also a built-in "Device Analyzer" in the two Target Softwares which basically does the same. You start the Device Analyzer from the menu (while your virtual joystick is running!) Now, VERY IMPORTANT, chances are you don't see your stick here.

You click in the Target Device Analyzer all the way on TOP, left that round symbol. It then comes up with a list of devices to select from. Here you click on Thrustmaster Combined to select the stick.

You get something like:

da.jpg


Whether you use the built-in Windows calibration tool or this one, you want to use it to find a good deadzone setting.

The Windows joystick calibration tool, after you select the virtual Joystick Thrustmaster Combined, SHOWS THE VIRTUAL JOYSTICK, the Thrustmaster Device Analyzer also shows the "original" joystick to the left and the virtual in the larger section.

You can use either tool to "quick and dirty" calibrate your stick's deadzone to see whether the deadzone set in the script is big enough: What you do, you grab your stick and only slightly wiggle it around and check on the screen whether the wiggling results in movement.

(Almost ANY joystick has some play in the middle position. It should not result in any movement on the virtual joystick if you slightly wiggle it. In the "Device Analyzer" you can see the original, non-calibrated movement on the left side. So if you wiggle the stick slightly and you see numbers/movement in the large section in Device Analyzer as well we can assume the stick is too sensitive and needs a deadzone in the middle. You may want to set the deadzone just as big that the slight wiggling does not result in movement. A good general rough value to use there would be 4 or 5).

Stop the script, and change the value of your deadzone setting like

SetSCurve(&T16000, JOYX, 7, 2, 7, 0, 0);

to
SetSCurve(&T16000, JOYX, 7, 5, 7, 0, 0);

Save the modified script, re-start script.

Check again with the calibration tools.

I found that values anywhere from 2-8 for the deadzones can work. Just make sure you set it that accidental slight touching doesn't move your stick, you don't usually want any "middle position creep". The 16000m is very sensitive out of the box and any slight touching would already move your ship :) Not optimal.

Also, if you change any values, make sure you do it always for BOTH axis in the script. Modify the two lines, the one for the JOYX axis and the other line for the JOYY axis.


NOTES:

I was initially hesitant to use TARGET and thought there is no reason since the stick works out of the box. HOWEVER, without TARGET you miss out on essential things which would become clear once you get annoyed in game by an overly sensitive joystick. Elite has deadzone settings in the options, yes, but I figure with TARGET you can fine-tune them a lot better.
Also, one main reason that I use it is that I was coming from a XBOX 360 controller and found it very difficult to get used to having to move the stick that far to "max it out". This is why I set small deadzones on the "outer zones" which I guess is like that now you only need to move the stick 85% or so as compared to before. And of course can you do a lot more with TARGET if you wish so.
For example, you could set custom "S-Curves" to make the stick more sensitive in the middle, things like that.

*Troubleshooting

There is a chance that your virtual/calibrated stick won't work right away using Windows 8/8.1. It has to do with the new "enhanced power management settings" for USB devices in Win8.1. Some claim the problem is gone with the latest Windows updates but I can confirm the problem still persists when the joystick is freshly installed.

If you have that problem, like you move the stick when you run TARGET but nothing happens, Microsoft has a workaround to fix the problem here.

http://support.microsoft.com/kb/2900614/en-us
(Check the steps where it says "Workaround". It requires editing the registry.)

You would check the status at the bottom in TARGET when you run your script, it would show you the ID of the device somewhere like USB HID device "T.16000M"(USB\VID_044F&PID_B10A\5&BE1018E&0&2) selected

You would then use the above workaround and edit the registry setting for this particular device, eg. by disabling Enhanced Power Management, change the registry value from "1" to "0". That's it and your stick from thereon will be recognized.

(TARGET makes the "original" joystick invisible, Windows would assume it's not used and power management would disable it. We don't want this since TARGET of course still needs the "hidden" joystick turned on to read the raw input and translate it for the virtual, calibrated one).

Addition: There is a VERY handy free utility out there to view, manipulate, uninstall etc. your USB devices, "USBDeview" from here: http://www.nirsoft.net/utils/usb_devices_view.html
Download the appropriate version (64bit, 32bit etc.) for your windows. Install and run it. This tool can help to quickly edit the "EnancedPowerManagement" registry setting. In the utility you would just right-click your stick in the list (in my case Thrustmaster 16000) and then click on "Open in Regedit". It then jumps right to your joystick setting in the Windows registry so you won't have to search. You click the entry in the registry and then "Device Parameters" and can quickly change the EnhancedPowerManagement setting from "1" to "0"

Addition 2: It can help understanding how TARGET works when you realize that every time you run a script/config it creates a virtual joystick and hides the "real" one. The input from the real stick is read and the modifications and changes are applied to the virtual stick.
 
Last edited:
Awesome guide. Anyone have a working TARGET script for HOTAS Cougar so that I can get the RDR cursor to work too? I really don't understand how to create this. :S
 
Awesome guide. Anyone have a working TARGET script for HOTAS Cougar so that I can get the RDR cursor to work too? I really don't understand how to create this. :S

I want to let everyone know how I figured this out for Windows 8.1 64-bit. First of all, you don't need TARGET. What you need is this (the Vista drivers). Now what you need to do is make sure you run the installer in Compatibility Mode for Windows Vista (Service Pack 2) and Run as Administrator. Now, someone said that you should turn off UAC, so I did. I don't know if that's necessary. Anyway, after you've installed the stuff go to your C:\Program Files (x86)\HOTAS\ folder and from inside the driver folder copy the STTubeDevice203.dll under your C:\Windows\SysWOW64\ folder. Next, back in the HOTAS folder, set the HOTASConfig.exe to run in the windows vista (service pack 2) mode and Run it as Administrator.

When the HOTAS Cougar Control Panel (CCP) starts up, on the Axis Setup tab you want to have Microstick X and Y on 7 and 8 unless you are planning to use Toe Brakes. This will enable Microstick and disable Toe Brakes. Now you hit Apply.

Go to Axis Shaping tab and set your curves as you like them. I have Curve of -4 on both X axis and Y axis of the stick. Remember to Apply.

On the Startup & Calibration tab, and this is important y'all, you want to set Axis Response to User mode, Emulation to Off, Calibration mode to Manual calibration. Then in the Calibration section you want to click Manual Calibration button and follow the instructions given. After calibration, you apply the settings and save the profile. I think you also need to click Save in the Startup Options section and load the profile you've just saved in the Profile section. And to be sure just Apply again. There may be too many unnecessary steps in that part.

Anyhow you can now close the CCP. To try out if your calibration and setups were assigned correctly, launch HOTASView.exe and try your microstick. It should show as moving both the Zr and Yr axis next to the pedals image.

I hope this was helpful to someone.
 
Last edited:
Since you are using the t16000m I though I might put this here for those wanting to use it for t16000m mappings, I find it useful to print this out so I know whats what in the various games I play. Feel free to stick it in the OP.

kZSCidZ.png
 
Last edited:
I have a strange little problem with my TM Warthog in combination with TARGET, and I don't even know if it's not working as intended:
In this excellent guide here there are multiple mentions that when a TARGET script is running, the original devices are hidden, "virtually" disconnected, disabled, etc. When I read the TARGET manuals I also get the impression that this should be so.
The problem is, on my system this isn't true at all (Win 7 64 bit, TM Warthog with newest drivers and firmware).
When I run a TARGET script - no matter if from the GUI or from the script editor - my Game Controllers listing looks as follows:

Thrustmaster Combined OK
Joystick - HOTAS Warthog OK
Throttle - HOTAS Warthog OK

The first one is obviously the virtual controller from the TARGET script but the other two are the same physical devices as are present when no script is running.
These devices are also seen by games, and cause problems in the controller assignments there. In Elite:Dangerous when I assign a button which is mapped to "r" for example in the TARGET script, I get "r"+JOY_7 (just an example) as assignment in the controller options. The JOY_7 is coming from the still present physical device.
The main problem is assigning axes if I want to get the axis as defined in the TARGET script. When I try to assign it in Elite by moving the axis, more often than not the axis from the physical device is assigned instead of the virtual one from the TARGET script.
Now, all this can be solved by editing the Elite binds file, but I still think there might be something wrong.

Can anyone confirm that his physical devices really are disabled/hidden when running a TARGET script or is it the same as on my system?
 
Thanks for the post, I will have to check this out again once my Warthog shows up on Monday.

I did DL the drivers last night, and they have a new release from November. It lists 8.1 as supported, so hopefully the Hat fix is already in there and is 'post' your publish of this guide.

Great job!

*fingers crossed*
 
Looking at the Device Analyser still in your guide, why does TARGET appear to multiply the axis's granulation by a factor of nearly 4? Surely, this winds up making small movements less precise, as TARGET can't report a truly precise reading if your HALL sensors are being doubled or even quadrupled up for the virtual joystick's output. Am I misunderstanding something horribly basic, or is there a means to force TARGET's virtual joystick to carry over the original stick's precise degree of granularity?

Honestly, figuring this out seems more important to me than understanding dead zones. I shouldn't need 32000 or 64000 degrees of granulation, arguably 16000 is overkill, but I'd rather TARGET report exactly the movement of the stick if possible.

From reading the script editor basics, the section on the TRIM manipulation would affect this, but I'm a bit unsure as to how exactly to get my desired result. As you appear to know more about it, I was hoping maybe you all might have some tips.

For reference, I'm using dual T16000Ms, so as ED is currently coded, I have to use TARGET if I want Elite to detect the joysticks properly.

EDIT: Huh. It just worked without confusing my identical sticks. Nice! Way to go Frontier!
 
Last edited:
Hi,

I am having a major problem with using the Thrustmaster TARGET GUI and loading configuration files for games to my HOTAS Warthog setup.

The software detects my TM Warthog HOTAS and 2 x MFD's when in the main TARGET GUI editing environment but upon trying to load ANY config file for use in a game i get the following result after the software attempts to load the file:


*** Allocated ProcInstances found from the previous run: use FreeProcInstance() ***

Mapped plugin module "C:\Program Files (x86)\Thrustmaster\TARGET\Plugins\sys.dll"

Physical USB HID devices managed by script!

Currently plugged USB HID devices[4]:

1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"

2: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"

3: "F16 MFD 2" - "USB\VID_044F&PID_B352&REV_0100"

4: "F16 MFD 1" - "USB\VID_044F&PID_B351&REV_0100"

Error: (internal) cannot associate a filter with the selected USB HID device "VID_044F&PID_0404"

Error: (internal) cannot associate a filter with the selected USB HID device "VID_044F&PID_0402"

Virtual HID devices managed by script!
Connecting virtual joystick...Done

Device name FAILED (0x00000002) - using default.

Connecting virtual keyboard...Done

Connecting virtual mouse...Done


main returned 0

This happens with every config file i have and that includes the stock ones included with the TM hardware such as DCS Black Shark etc.

My system is as follows:

ASUS G74SX Gaming Laptop
Intel Quad Core i7-2670QM @ 2.2 GHz Turbo Boost to 3.1 GHz.
16 GB RAM
GeForce GTX560M with 3 GB VRAM
Realtek On-board Sound Card
Windows 7 64 Bit
TrackIR 5 w/Pro Clip
Logitech G602 Gaming Mouse
Logitech Wifi Keyboard
Creative Rage3D Tactic Gaming Headset
Samsung 32 in. TV/Monitor on HDMI
TM HOTAS Warthog Stick & Throttle & 2 Cougar MFD's
10 socket USB Hub used to connect some of the peripherals.

Solutions tried so far that haven't worked:

1: Uninstall TARGET and re-install.
2: Uninstall HOTAS Warthog Drivers from Control Panel Programs then re-install.
3: Updated TM HOTAs Firmware to latest versions (11 & 23)
4: Disconnect and re-connect all TM and all other devices when prompted to by the above 3 processes. Multiple system reboots and cold starts.
5: Sequential re-connection of key devices only (Mouse, Keyboard and HOTAS Stick & Throttle) whilst monitoring activity in Devices and Printers and Device Manager.
6: Confirmation that the the 2 devices referred to in the above error message are the TM Throttle and Stick ("VID_044F&PID_0404" and "VID_044F&PID_0402").
7: Enable ALL the executables in Thrustmaster root folders with "Run as Administrator" priveleges.
8: Disable Firewall (Commodo & Windows) before, during and after re-insalls or running TARGET.
9: Connecting TM HOTAS directly to USB Ports on computer rather than through USB Hub.
10: Scattering chicken bones, howling at the moon, rain dances, consulting a soothsayer!!!!

Not sure if i've missed or forgotten anything but any assistance or ideas would be appreciated? I understand that most games don't need TARGET to come up up with fairly comprehensive controller setup but my point is that it seems wrong

to have purchased a $250 controller setup with its own editing software and find that the 2 DO NOT work together AT ALL based on my experience.

Is there a viable alternative to TARGET that can be used? I've never used FSUIPC so am not familiar with its capabilities as opposed to TARGET? Will definitely look into it now though, i'm not optimistic about sorting this out to be

honest?

Thanks guys.

Stu

TARGET%20Error%20Msg.jpg


Devs%20and%20Printers.jpg


CPL%20HID%20USB%20Devices.jpg


Drivers%20Version.jpg


TARGET%20Firmware.jpg


Attached Images


 
Hi there,
I was wondering if you know how to program the script for having 1 output on 2 inputs.
So for example when i press 2 buttons i would get "A", when i only press 1 button i would get nothing.

Thx
 
Hi there,
I was wondering if you know how to program the script for having 1 output on 2 inputs.
So for example when i press 2 buttons i would get "A", when i only press 1 button i would get nothing.

Thx

Hi,

I think it should just be a case of assigning a switch/button etc on your controller as a "modifier" such as the S4 (BTN 4) joystick "paddle" switch on a TM Warthog or Cougar.

Then assign any other desired button to generate the "A" when both are pressed simultaneously? Both pressed will give you "A", just S4 will generate nothing.

Obviously once the "paddle" (modifier) switch is allocated in that role it cannot be used to generate any other key, but you can create as many "modified" combinations as your imagination allows using that S4 switch and other buttons etc?

And you can obviously have more than one "modifier" as well? I often assign the "external lights" switch Warthog Throttle BTN's 13 & 14 as modifiers as well. So if 13 is switched it can generate modified functions on other buttons and the same if 14 (or even the middle (OFF) position is assigned as a modifier in TARGET).

Hope this helps, if not just get back to me and i'll try and clarify or answer any questions i can. I'm not using TARGET a great deal at the moment as i mostly fly DCS sims which don't really need TARGET programming for the most part due to the very good in-sim Controls set up functionality.

Good luck.

- - - - - Additional Content Posted / Auto Merge - - - - -

By the way, for anyone else reading my earlier posts with images regarding TARGET not working/running scripts etc. the problem turned out to be my Firewall (COMMODO Free Firewall)!!

Uninstalled it, went with ZoneAlarmPro and it worked like a dream first time and has been ever since?

Worth trying or knowing if you use TM gear i guess?
 
The TARGET software is not meant to work with the T-Flight HOTAS X. Is this correct?
Couldn't find this device listed on the TARGET page...

Correct, as far as i know? TARGET only works with TM Warthog HOTAS and Cougar HOTAS. The T-Flight either has it's own app or just uses standard Direct X key mapping? But i could be wrong, i have a T-Flight but haven't used it for over 2 years.
 
Hi,

I think it should just be a case of assigning a switch/button etc on your controller as a "modifier" such as the S4 (BTN 4) joystick "paddle" switch on a TM Warthog or Cougar.

Then assign any other desired button to generate the "A" when both are pressed simultaneously? Both pressed will give you "A", just S4 will generate nothing.

Obviously once the "paddle" (modifier) switch is allocated in that role it cannot be used to generate any other key, but you can create as many "modified" combinations as your imagination allows using that S4 switch and other buttons etc?

And you can obviously have more than one "modifier" as well? I often assign the "external lights" switch Warthog Throttle BTN's 13 & 14 as modifiers as well. So if 13 is switched it can generate modified functions on other buttons and the same if 14 (or even the middle (OFF) position is assigned as a modifier in TARGET).

Hope this helps, if not just get back to me and i'll try and clarify or answer any questions i can. I'm not using TARGET a great deal at the moment as i mostly fly DCS sims which don't really need TARGET programming for the most part due to the very good in-sim Controls set up functionality.

Good luck.

- - - - - Additional Content Posted / Auto Merge - - - - -

By the way, for anyone else reading my earlier posts with images regarding TARGET not working/running scripts etc. the problem turned out to be my Firewall (COMMODO Free Firewall)!!

Uninstalled it, went with ZoneAlarmPro and it worked like a dream first time and has been ever since?

Worth trying or knowing if you use TM gear i guess?

Hi , having Comodo CIS too here working no problem with same hotas and target , it could just be the settings of HIPS and/or Sandbox within Comodo causing your former problem. I have them both turned off as I had some games giving me headaches a year back, problems gone since. But whatever works ;)
Cheers
 
Hi there,
I was wondering if you know how to program the script for having 1 output on 2 inputs.
So for example when i press 2 buttons i would get "A", when i only press 1 button i would get nothing.

Thx

you can do this directly within the Mapping:
MapKey(&Joystick,MenuNavLeft,EXEC("if(Throttle[EORMOTOR]) CallBSF(0);else ActKey(KEYON+DX10);"));

(MenuNavLeft is H2L)
So, if H2L is triggered, the EXEC is fired and doing a check if EORMOTOR on Throttle is "on", if it is the function CallBSF() being called. Otherwise the H2L leads to a press Button DX10.


you can outsource the check for a second, third, fourth Button to be presses at the same time in the function:
MapKey(&Joystick,MenuNavLeft, CallBSF(0));


int CallBSF(int function)
{
if(Throttle[PSF] & Throttle[EORMOTOR] & Joystick[S2])
{
initall();
LEDindicator();
setLEDs();
ActKey(KEYON+FocusRightPanel);
Sleep(200);
ActKey(FocusRightPanel);
Sleep(100);
ActKey(KEYON+CycleNextPanel);
Sleep(100);
ActKey(CycleNextPanel);
}
}


if H2L is pressed the function CallBSF(0) is called. Some things happen within that function but only if Throttle[PSF], Throttle[EORMOTOR] and Joystick[S2] is pressed (means triggered or switched "on")
 
Last edited:
T.16000M/TARGET Throttle Issue

I am really glad to have found this thread, because I need some advice from an experienced person on a frustrating problem I am having with trying to programme my T.16000M with TARGET.

The situation is this. When I run the vanilla (ie no TARGET profile) stick with the old Microprose helo sim "Gunship!" (yes I know it's old but I'm on deployment just now so using my laptop not the good home desktop), the throttle slider works just fine. So do the X, Y and Z axes.

But when I use the stick with a TARGET profile, to give me sim keys mapped to joystick buttons, the slider has no effect at all. The X, Y and Z axes still work as they should do though.

So, question; how do I programme the stick through TARGET so that the throttle slider continues to operate in just the same way as it does in a vanilla connection?

Thanks

Mike
 
Hi there,

i also have the issue that Target wont make a new virtual Joystick. I have tried the tips from here. but cant get it to work...

My System: TM Cougar HOTAS, Simped F16C nonUSB Rudders, Windows 10 pro, Target 1.011.304, Foxy 4.2 beta, HOTAS Cougar Viewer 3.00,

I have installed the drivers (Windows 98SE/ME/2K/XP HotasCougarv3.exe 5.88MB and Windows 98SE/ME/2K/XP .exe 3_HCO_2004.exe" 6,4MB )described from here https://www.reddit.com/r/hotas/comm..._and_hotases_if_you_are_using_windows/ctvygun, after that the Foxy 4.2 beta (as i cant find my CD with 4.1)

In Arma 3 everything seems to work fine.
I cant use HOTAS CCP 3.01 for uploading any files to the stick, cause it wont recognise it.
In Target Software, when i run a script, it shows:
Mapped plugin module "C:\Program Files (x86)\Thrustmaster\TARGET\Plugins\sys.dll"Physical USB HID devices managed by script!
Currently plugged USB HID devices[1]:
1: "HOTAS Cougar Joystick" - "USB\VID_044F&PID_0400&REV_0110&MI_00"
USB HID device with hardware id "VID_044F&PID_B10A" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse...Done


main returned 0

I have the Cougar HOTAS, and NOT the T1600, the "VID_044F&PID_B10A" stands for the T1600, why is Target looking for the T1600?
The Thumb Stick on the TQS is also not working...
Then, when i save my Configuration via Target, it makes an .fcf file, and not as described an .tmc
file looks completely wrong, like this:
<?xml version="1.0" encoding="utf-8"?><FastEventsMapping>
<Version>
<ProgramVersionNumber>1.0.11.304</ProgramVersionNumber>
<ProjectVersionNumber>2.0</ProjectVersionNumber>
</Version>
<ProjectData>
<CharGenRate>20</CharGenRate>
<KeyboardLayout>2</KeyboardLayout>
<PulseEventTime>32</PulseEventTime>
<MouseSensitivity>100</MouseSensitivity>
<AdvancedConfiguration>False</AdvancedConfiguration>
<SelectedDevices>1000 </SelectedDevices>
</ProjectData>
<AxisCustomization>
<Mapping0>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>JOYX</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>X</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>X</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping0>
<Mapping1>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>JOYY</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Y</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Y</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping1>
<Mapping2>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>RUDDER</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RZ</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RZ</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping2>
<Mapping3>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>THROTTLE</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Z</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Z</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping3>
<Mapping4>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>ANT_ELEV</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Throttle</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Throttle</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping4>
<Mapping5>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>MAN_RNG</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Slider1</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>Slider1</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping5>
<Mapping6>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>RDR_X</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RX</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RX</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping6>
<Mapping7>
<HidEvent>
<DeviceNumber>1000</DeviceNumber>
<Name>RDR_Y</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RY</ControlIndex>
<HidCommand>
<EventName>
</EventName>
<IsSequence>False</IsSequence>
<Layers>
</Layers>
<Delay>-1</Delay>
<Comment>
</Comment>
<EventsNumber>1</EventsNumber>
<StartTrigger>0</StartTrigger>
<StopTrigger>0</StopTrigger>
<CurveType>0</CurveType>
<Lower>0</Lower>
<Center>0</Center>
<Upper>0</Upper>
<Trim>0</Trim>
<Curve>0</Curve>
<Zoom>0</Zoom>
<AxisIsReversed>False</AxisIsReversed>
<AxisIsRelative>False</AxisIsRelative>
<XPosition>50</XPosition>
<YPosition>50</YPosition>
<HidEvent0>
<DeviceNumber>-1</DeviceNumber>
<Name>
</Name>
<HidType>3</HidType>
<EventType>0</EventType>
<ActionType>2</ActionType>
<ControlIndex>RY</ControlIndex>
</HidEvent0>
</HidCommand>
</HidEvent>
</Mapping7>
</AxisCustomization>
</FastEventsMapping>

My Workaround is to copy the text from the Script Editor into a new .tms file. Then the file can be run from Target

In my Control Panel --> Hardware and Sound --> Devices and Printers: i cant see my Joystick.

devices.jpg

In my Device Manager i have the 2 Issues:

manager.jpg

After running the new .tmc file, System creates the virtual Stick, found under Gamecontrollers. But USBDeview dont show any changes!
usbd.jpg
When i hit "Stop" in Target, to stop the running script, the virtual Joystick dissapears.

The Target Device Analyzer recognises my HOTAS, also the Joystick Control Panel, inside the Target Soft does.

My only Problem is, that i cant get new files into the Cougar.

Any suggestions or help?

Many thanks from germany...
 
Cant get it 100% to work

double post

i´ve found my solution.

changed the windows 98 driver to vista driver...foxy and all other programs work fine. also i can download files to stick as before...and target software is (still making) crap!
 
Last edited:
Any chance you made a game profile for Star Wars Battefront 2015?

I am having a rough time getting the Thrustmaster configured for the game.


***

This is a beginner's guide getting Thrustmaster's TARGET joystick calibration and enhancement software to work, also under Win8 and Win8.1. This guide can also serve as a starter guide for using TARGET in general, no matter what Windows you have. TARGET works with the Thrustmaster 16000m, Hotas Cougar, Hotas Warthog, Warthog Throttle, MFD Cougar 1 & MFD Cougar 2.

I wrote this since I had a hell of a time to do this with Windows8.1. There were issues that needed to be fixed to get it to run 100%. Sorry, this guide got really long but in essence what you do is really easy. You would only have to find a good setting once anyway and from there it is simple.

***

What is TARGET and Why Do You Want It?

The TARGET software can greatly enhance and improve your joystick 'experience' because you can use it to set deadzones, custom sensitivity curves and much more. In fact, it is an entire scripting language/interpreter which lets you configure your joystick in infinite ways.

Here in this post I only want to focus on the BASICS. In this case I use TARGET to set small deadzones (one in the middle and two outer) on my Thrustmaster 16000m. (You want a small deadzone to get rid of "middle-position" creep!) and the outer I set so I don't have to move the stick as far as is default.

* Make sure you have your Windows updated with all the latest updates.

* Install the TARGET software on your PC. You can get it from Thrustmaster's site here: http://ts.thrustmaster.com/eng/index.php?pg=view_files&gid=1&fid=3&pid=311&cid=5

* Set all the files you installed so they run as administrator

Once you installed the software on your PC, go to the location where you installed it, eg. C:\Program Files (x86)\Thrustmaster\TARGET\ and C:\Program Files (x86)\Thrustmaster\TARGET\x64 and set all the executable files to run as administrator. For this, you right-click the files in the folder like TmService.exe, TargetGui.exe, TargetScripteditor.exe, Properties --> Compatibility --> Set to "Run As Administrator"

(Whether the above is necessary needs to be verified, not 100% certain now)

- The TARGET software basically consists of a program with a GUI (TargetGUI.exe) which you use to create a configuration and a software TargetScripteditor. (I'll explain this later).

* Start the TargetGUI and click on new configuration in the middle, give the configuration some name.

* Click/Check your device(s), in my case the Thrustmaster 16000m, check that there is a green checkmark. Click next.

Now TARGET shows a screen where you can define deadzone, custom curves etc. Here in my example I set a small deadzone of 4 for my 16000m and two outer deadzones of 7 like:

http://www.1up-seo.com/dz.jpg

Note that the outer small deadzone makes the curve steeper, which means practically it reduces the movement needed to max out the stick.

You do the above for the TWO axes, the JOYX and the JOYY axe.

Click "next" when done.

What you do now is actually that you click on View Script. We don't care about anything else.

When you click View Script, your PC's texteditor comes up and has the generated script which for my 16000m looks like:

Code:
include "target.tmh"
int main()
{
    Configure(&HCougar, MODE_EXCLUDED);
    Configure(&Joystick, MODE_EXCLUDED);
    Configure(&Throttle, MODE_EXCLUDED);
    Configure(&LMFD, MODE_EXCLUDED);
    Configure(&RMFD, MODE_EXCLUDED);
    if(Init(&EventHandle)) return 1;
    SetKBRate(32, 50);
    SetKBLayout(KB_ENG);
    MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYX, 7, 4, 7, 0, 0);
    MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, JOYY, 7, 4, 7, 0, 0);
    MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);
    MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
    SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);


        // *** [B]HERE WE NEED TO ADD FOUR MORE LINES BY HAND:[/B]
        //
    MapKey(&T16000, H1U,DXHATUP);
    MapKey(&T16000, H1R,DXHATRIGHT);
    MapKey(&T16000, H1D,DXHATDOWN);
    MapKey(&T16000, H1L,DXHATLEFT);
        //
        // *** [B]TO GET THE POV/HAT OF THE STICK WORKING!![/B]

}
int EventHandle(int type, alias o, int x)
{
    DefaultMapping(&o, x);
}
* Correcting the Bug in the script so the POV HAT works.

The above script needs a short, manual addition since for some unknown reason the POV/HAT buttons with the original created script don't work, at least not under Win8/8.1

Look how I added four more lines after the last "SetSCurve ..." that start with MapKey ... Add those four lines before the "}" like I did in the script example above. IMPORTANT: You would need to do that anytime you have TargetGUI create a script.

Whether this problem with the initially non-working POV/HAT is with other versions of Windows and whether it affects other sticks but the 16000m I don't know! If so, you might have to customize your script accordingly, note that my script is specific for the 16000m.


Now you SAVE this script to your computer to some convenient location, like My Documents as "Elite Dangerous.tmc" or similar.

At this point you can actually exit the TargetGUI software.

* Running the Script with the newly "enhanced" joystick settings.

For running the script I personally run TargetScriptEditor.exe but you can ALSO run the script from the TargetGUI program. I use the TargetScriptEditor.exe since it uses less memory than the GUI program.

* Start the TargetScriptEditor.exe

Go to Menu and LOAD (Menu --> OPEN) your newly created script, like My Documents/Elite Dangerous.tmc

You now have a screen like this:

http://www.1up-seo.com/se.jpg

From here you can load, edit, save and most importantly RUN your script.

So click on RUN.

When it runs successfully, you can minimize the TargetScriptEditor to your taskbar and just let it run there. The script MUST run at all times while you play to use the stick with your new settings.

* What it does

What the TARGET software does is that it creates a new, "virtual" device with the new settings while hiding your original device.

Tip: In case you just freshly installed the stick in Win8/8.1 and it doesn't work when you run the TARGET script, please see "Troubleshooting" at the end of this post. There is a fix for this.

Since TARGET hides the "original" joystick and creates a new, virtual one...this also means that Elite: Dangerous will use a different config compared to as if you were not running TARGET. So, when you had an old control config in Elite and now you use the "new" stick with TARGET you will have to get into Elite: Dangerous Options and make a new config, it will not use the old one you had before! Of course you would only need to do that once anyway, assuming that from there on you will always use TARGET.

TARGET offers a lot of important features, especially setting deadzones etc. so I consider it extremely helpful, there is no reason to use the "old" stick/config without TARGET any longer. My $0.02

* Making quick changes to your stick settings by modifying the script

You can quickly make changes in the script like altering the values for curves, deadzone WITHOUT really needing to use the TargetGUI software.

Simply stop the script in TargetScripteditor. Alter a value, like in my example I have two lines SetSCurve(&T16000, JOYX, 7, 2, 7, 0, 0);

You could change the 2 into a 5 (the 2 here is the value for the center deadzone), SAVE the script...and run it script again.

* CALIBRATING your stick to find the right values, eg. for the deadzones. Quick and Dirty Method

Like above, make sure the script is RUNNING. As we discussed, this creates a new virtual joystick called "Thrustmaster Combined".

In newer Windows, you can start the built-in "Set up USB controllers". (The easiest way for me to do this is in Win Start Menu actually to type and search for "Set Up USB" until you see "Set Up USB Controllers" in Windows menu and then create a shortcut on the Desktop!

There is also a built-in "Device Analyzer" in the two Target Softwares which basically does the same. You start the Device Analyzer from the menu (while your virtual joystick is running!) Now, VERY IMPORTANT, chances are you don't see your stick here.

You click in the Target Device Analyzer all the way on TOP, left that round symbol. It then comes up with a list of devices to select from. Here you click on Thrustmaster Combined to select the stick.

You get something like:

http://www.1up-seo.com/da.jpg

Whether you use the built-in Windows calibration tool or this one, you want to use it to find a good deadzone setting.

The Windows joystick calibration tool, after you select the virtual Joystick Thrustmaster Combined, SHOWS THE VIRTUAL JOYSTICK, the Thrustmaster Device Analyzer also shows the "original" joystick to the left and the virtual in the larger section.

You can use either tool to "quick and dirty" calibrate your stick's deadzone to see whether the deadzone set in the script is big enough: What you do, you grab your stick and only slightly wiggle it around and check on the screen whether the wiggling results in movement.

(Almost ANY joystick has some play in the middle position. It should not result in any movement on the virtual joystick if you slightly wiggle it. In the "Device Analyzer" you can see the original, non-calibrated movement on the left side. So if you wiggle the stick slightly and you see numbers/movement in the large section in Device Analyzer as well we can assume the stick is too sensitive and needs a deadzone in the middle. You may want to set the deadzone just as big that the slight wiggling does not result in movement. A good general rough value to use there would be 4 or 5).

Stop the script, and change the value of your deadzone setting like

SetSCurve(&T16000, JOYX, 7, 2, 7, 0, 0);

to
SetSCurve(&T16000, JOYX, 7, 5, 7, 0, 0);

Save the modified script, re-start script.

Check again with the calibration tools.

I found that values anywhere from 2-8 for the deadzones can work. Just make sure you set it that accidental slight touching doesn't move your stick, you don't usually want any "middle position creep". The 16000m is very sensitive out of the box and any slight touching would already move your ship :) Not optimal.

Also, if you change any values, make sure you do it always for BOTH axis in the script. Modify the two lines, the one for the JOYX axis and the other line for the JOYY axis.


NOTES:

I was initially hesitant to use TARGET and thought there is no reason since the stick works out of the box. HOWEVER, without TARGET you miss out on essential things which would become clear once you get annoyed in game by an overly sensitive joystick. Elite has deadzone settings in the options, yes, but I figure with TARGET you can fine-tune them a lot better.
Also, one main reason that I use it is that I was coming from a XBOX 360 controller and found it very difficult to get used to having to move the stick that far to "max it out". This is why I set small deadzones on the "outer zones" which I guess is like that now you only need to move the stick 85% or so as compared to before. And of course can you do a lot more with TARGET if you wish so.
For example, you could set custom "S-Curves" to make the stick more sensitive in the middle, things like that.

*Troubleshooting

There is a chance that your virtual/calibrated stick won't work right away using Windows 8/8.1. It has to do with the new "enhanced power management settings" for USB devices in Win8.1. Some claim the problem is gone with the latest Windows updates but I can confirm the problem still persists when the joystick is freshly installed.

If you have that problem, like you move the stick when you run TARGET but nothing happens, Microsoft has a workaround to fix the problem here.

http://support.microsoft.com/kb/2900614/en-us
(Check the steps where it says "Workaround". It requires editing the registry.)

You would check the status at the bottom in TARGET when you run your script, it would show you the ID of the device somewhere like USB HID device "T.16000M"(USB\VID_044F&PID_B10A\5&BE1018E&0&2) selected

You would then use the above workaround and edit the registry setting for this particular device, eg. by disabling Enhanced Power Management, change the registry value from "1" to "0". That's it and your stick from thereon will be recognized.

(TARGET makes the "original" joystick invisible, Windows would assume it's not used and power management would disable it. We don't want this since TARGET of course still needs the "hidden" joystick turned on to read the raw input and translate it for the virtual, calibrated one).

Addition: There is a VERY handy free utility out there to view, manipulate, uninstall etc. your USB devices, "USBDeview" from here: http://www.nirsoft.net/utils/usb_devices_view.html
Download the appropriate version (64bit, 32bit etc.) for your windows. Install and run it. This tool can help to quickly edit the "EnancedPowerManagement" registry setting. In the utility you would just right-click your stick in the list (in my case Thrustmaster 16000) and then click on "Open in Regedit". It then jumps right to your joystick setting in the Windows registry so you won't have to search. You click the entry in the registry and then "Device Parameters" and can quickly change the EnhancedPowerManagement setting from "1" to "0"

Addition 2: It can help understanding how TARGET works when you realize that every time you run a script/config it creates a virtual joystick and hides the "real" one. The input from the real stick is read and the modifications and changes are applied to the virtual stick.
 
Back
Top Bottom