Release Aussiedroid's Enhanced Thrustmaster Warthog Script



Replaced AD_EDfunctions file with your beta from github. Tried both HOLD and TOGGLE as internal. Both of them now works as a toggle, not PTT? So if I press/hold the button it mutes the mic and it stays muted. If I press again it's active. So it's almost working ingame :)

update: In the event tester it works now as a PTT, but not ingame as mentioned. Sorry to be a pain in the regarding this.
Last edited:
Thanks for the updates guys.

Hoping it might be a simple fix, but will look into it further. Its no issues at all btw :)

I am about to get a little busy IRL for next couple of weeks but will try to figure out what is going on in the code. My logic must be wrong.

Likewise, will look into misfiring issue and see if I can replicate as soon as I can.

Cheers, AD
Absolutely no hurry with that! Take care of your family and the things IRL first.

I'll try to take a look at the script and maybe learn to do some more things myself.

There is not too much complexity to the actual internal comms code (although the initMicCommander is big its mainly for the external channels).

Most of the internal code is around line 477 and 503. Just uses a couple of flags to determine the state/path of the logic.

One thing you can try is to change the following:

if(!Throttle[MSP] & MicCheckHold)



at line 498.

See if that might be stopping the UP action from happening when releasing.

Another thing I may try is to remove the internal comms from the function and split the logic directly in the MapKey commands in AD_ED main file. See if it works there. Might give a clue to the cause. Anyways just spit ballin'.


I think I need an idiot's guide to this, because I can't even get the configuration to appear in the Control Options list!

I'm running Target GUI, have copied Aussiedroid Warthog Enhanced 4.1.0 to C:\Users\xxxxxxx\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings, am pretty sure I have compiled it in Target Script Editor, HOTAS is plugged in, no idea what I am missing here!

Help appreciated!

I think I need an idiot's guide to this, because I can't even get the configuration to appear in the Control Options list!

I'm running Target GUI, have copied Aussiedroid Warthog Enhanced 4.1.0 to C:\Users\xxxxxxx\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings, am pretty sure I have compiled it in Target Script Editor, HOTAS is plugged in, no idea what I am missing here!

Help appreciated!
Hi, you say you copied "Aussiedroid Warthog Enhanced 4.1.0" to the folder.
What exactly did you copy?
You only need to copy the .binds file there.
You can copy the script files where ever you wish, then run the TARGET Script Editor (not the GUI), open and compile the script file to make sure everything is fine...then, run the script BEFORE you run ED.

All going well, Aussiedroid's bind set should be available to select in the Controller Settings in game.

The script creates a "Thrustmaster Combined" USB game controller when it runs.
If this is not available/present when the game loads then you will not see Aussiedroid's binds file as an option in Controller Settings.

Hope this helps.

Clicker, thank you, I now have the configuration recognised in the game, but that leaves me with two more questions...

First - how do I switch it from forward and reverse on the throttle (front to rear positions) to throttle up/throttle down with a button to switch between forward and reverse?

Secondly - I have no yaw that I can find, do I need to set that myself, I used to have it on the index finger HAT button on the front of the throttle grip but can't remember if I set that myself or it was an option in the config.

Thanks again for your help!

1) Forward only on the throttle (ie 0 --> 100%). This can be set via the flaps switch set to "up". Sorry, but even I couldn't work out how to reverse with this set. According to the image file for the joystick and keyboard it "should be" the CMS (Press) button or LCTRL+R, but neither of these worked for me.

2) Yaw is by default, the x-axis of the joystick. (Use the "Without MFG Crosswind" binds file). The index finger HAT button also worked for me.

Hope this helps
Thanks, I think you're right about the Yaw being on the index finger HAT, I set the joystick for roll, kept yaw where it is, and I think I made a press in on the throttle thumb hat button switch throttle direction.

I've been out of the game for a while, finally built a new PC and am desperately trying to remember how I had it set up before.

I'm going to give this a whirl and let you know how it works out!

Training mode never had so much use out of me before! :D
No, still running into problems, this is the readout from the script editor when I try to start up the script.

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"
USB HID device with hardware id "VID_044F&PID_0403" cannot be found
USB HID device with hardware id "VID_044F&PID_B10B" cannot be found
USB HID device with hardware id "VID_044F&PID_B687" cannot be found

In game options I don't have the Combined Thrustmaster option, just the Aussiedroid Enhanced Script, which is not giving me full control in the game.

It's all very odd and I have no idea how to correct it!

Any assistance appreciated!

again, an amazing work! "chapeau"

just started today to play again, since last christmas ;-)

one problem:

i got that message all the time.

how to get rid of that?

Edit: just found it ^^

but, anyway, could someone please explain a bit more precisely on how to switch

from combat mode to analysis mode and all the auto repeater-fire options, like mining auto-pulse, comabt endless, explorer-scanner?
i cant find the buttons correctly... very difficult -.-

also i got an message in my upper right corner: "Incorrect cockpit mode - press "7" to switch" where is that function on my hotas?

i dont have a clue on how to manage that. hit a button by mistake and cant figure out which it was, all this happens by "magic" -->
Comms Auto-Text :SENT: "/clear"
Comms Auto-Text :SENT: "/clear"
Comms Auto-Text :SENT: "/clear"


cheers :-D
Last edited:
@CMDR Corleone ... I think your issue is that you need to update your TARGET software to the latest version.
While you are at it, check and upgrade the firmware on the WARTHOG if required.

Latest TARGET software is v3.0.18.328
Latest Firmware for WARTHOG Joystick is 12.
Latest Firmware for WARTHOG Throttle is 23.

Hope this helps
@feiercrack ... the “incorrect cockpit mode” message is due to having a mix of Combat and Analysis mode “weapons” in the same fire perhaps a Discovery Scanner + a FSD Interdictor. If you seperate your weapons so that you only have Analysis Mode or Combat mode weapons in the same groups, you won’t get this message.

I’ll have a look at AD’s documentation and try to answer the other parts of your question if I get a chance later today.

@feiercrack ... the reapeated messages (fire sequence) happens when you use the modifiers along with the trigger.

In your case you have the Throttle Pinky Switch in the “Down” position when you pressed the trigger.
This causes “PrimaryFire” to send a fire pulse once every 6.2 seconds until you cancel this mode.
To cancel, you move the Throttle Pinky Switch to “Down” again, and press the trigger (again).

Hope this helps.
I have updated the HOTAS firmware and am using a fresh TARGET download from the TM site, I think next move is uninstall it all and start again.

The error messages you are getting indicate a driver or hardware issue.
Try plugging the devices into different USB ports and try again.

If still no good try this...
Before running the script, run “joy.cpl”...does this see all your Thrustmaster devices?
If so, leave joy.cpl running and run the script...does joy.cpl now see a “Thrustmaster Combined” device in place of the individual Joystick & Throttle?


p.s. The in game controller options do not show a “Thurstmaster Combined”, however if you can see/select Aussiedroids Enhanced script option, then chances are that everything is working...if this is the case, perhaps you can be more specific on what’s missing or not working for you.
Last edited:
Hey All,

I'm back!

@Clicker .. thanks for helping everyone out while I was away!

@kontrolldon & @ptimale - Haven't forgotten about the Internal Mic issue you shared a few weeks back. I have uploaded another version of the AD_EDFunctions file to the beta build here. Would be awesome if you could test out some time. This round I have removed the release action used in the function. This should mean it just fires when pressing down. I am hoping this is where the issue lies. Should still have 'Hold' set in the bindings too (all going well). Just download the latest version and rename to 4.1.0 as per last time. Appreciate your feedback!

@CMDR Corleone - Been a while mate! Think @Clicker is correct in his analysis of your issue, and if I recall you had something similar last year till it was ironed out? Let us know if still having issues after the reinstall and trying different USB ports etc. Thinking about some of these reoccurring questions, you have encouraged me to start a Q&A in my Steam Guide too. WIP currently, but will start to add commonly asked questions and issues found.

@feiercrack - Another blast from the past! Good to see you back around. To add to @Clicker's info on the print outs for the fire modes as you may have already found, you can disable the verbose output via the User Prefs (if you prefer). But this will disable all or none. In short though, if you are not holding down the Pinky Trigger modifier when using primary or secondary fire then you should not see the fire modes activate. The 3-way toggle on the left side of the throttle is the 'Shift Key' (Modifier) for the fire modes. Based on its position, it will fire a different mode (Explorer, Mining etc). Let me know if you need any further clarification.

Thanks everyone!

Last edited:
Hey, hey, hey! Welcome back AD!

Here's a little something I've been toying with lately.
(apologies for the wall-of text....I did try to keep it simple...honest!)

TARGET Script - Making noises - "part 1"

ED already provides quite a bit of audible feedback via their COVAS as well as their excellent sound effects, and let's face it what I'm suggesting here will not replace that...well maybe...maybe not...depends on your own creativity!

Now, I've spent a bit of time researching the best way I can cause some sort of audible feedback based on a button press within TARGET and here's what I came up with.

Ok, so, I'm cheating here as I'm using an external application.
If I ever work out a more elegant way to make noises triggered by pressing buttons etc from within TARGET, I'll write a "part 2".

Whilst not exactly straight forward, it really is not hard.
I'm using "Voice Attack" ( as it's free if you only need one profile (and 20 commands) and only US$10 if you need more.
If you already have VA and, for example EDDI or an HCS Voice Pack or two you can still use this method.
An added benefit is that VA allows you to either play a sound file or use its inbuilt text-to-speech engine.
If you don't already have VA, go ahead and download and install on your PC.

Desired outcome of this exercise;
In this mini tutorial, I'll create audible feedback each time we change our joystick curves by sending a special key press to VA which in turn triggers a simple command and use VA's inbuilt text-to-speech engine.

What we need to do;
1) Create some new defines within AD_EDKeymap
2) Create several simple lines of code within AD_EDFunctions
3) Create a new profile in VA and add new commands

Here we go...
First up, open the AD_ED_v4.1.0.tmc script file in the TARGET Script Editor and hit compile. This will load all the supporting files, then...

1) Open the AD_EDKeyMap file and at line 259 (end of External Bindings section) add...
    define Curve0                                R_CTL+USB[0x24]            // CTRL+7        (Create a command in VA to play text-to-speech response for curve setting)
    define Curve1                                R_CTL+USB[0x25]            // CTRL+8        (Create a command in VA to play text-to-speech response for curve setting)
    define Curve2                                R_CTL+USB[0x26]            // CTRL+9        (Create a command in VA to play text-to-speech response for curve setting)

Save the changes.
I've used these key combos for several reasons;
a) they weren't already in use as far as I can tell
b) I've set my VA profile to disable pass-through for the new if you use the keyboard at all during the game, the keys I've used here are unlikely to cause problems.

2) Open the AD_EDHardware file and modify initSetJoystickCurves to look like this...
(I just messed with lines 3-13 of this code...can't use code formatting WITH BOLD unfortunately)

    int initSetJoystickCurves() {                                                                // Autopilot Select Switch position sets Joystick Curve Profile
        profile = 1;                                                                            // Three different presets are selectable On-The-Fly

// from here....

        int crvtxt = Curve1;
        if(Throttle[APPAT])    {
            profile = 0;
            crvtxt = Curve0;
        if(Throttle[APALT]) {
            profile = 2;
            crvtxt = Curve2;


// here

        SetSCurve(&Joystick, JOYX, 0, JS_DEADZONE, 0, JS_CURVE[profile], JS_ZOOM[profile]);
        SetSCurve(&Joystick, JOYY, 0, JS_DEADZONE, 0, JS_CURVE[profile], JS_ZOOM[profile]);
        if(UseRuddersT16000 & UseRudderAxisCurves)    SetSCurve(&TFRPRudder,      TRUDDER,         0, TR_DEADZONE, 0, YAW_CURVE[profile], JS_ZOOM[profile]);
        else if(UseRuddersTPR & UseRudderAxisCurves)SetSCurve(&TFRPHARudder, TFRPHA_RUDDER, 0, TR_DEADZONE, 0, YAW_CURVE[profile], JS_ZOOM[profile]);
        if(!FAOFFToggle) {
            if(UseRudderAxisCurves & VerboseOutput) printf("Joystick Profile[%d]: Yaw=%d, Curve=%d, Zoom=%d\x0a", profile, YAW_CURVE[profile], JS_CURVE[profile], JS_ZOOM[profile]);
            else if(VerboseOutput)                     printf("Joystick Profile[%d]: Curve=%d, Zoom=%d\x0a", profile, JS_CURVE[profile], JS_ZOOM[profile]); } }

Save the changes and compile again to ensure no typos.
Run the script and use the Auto Pilot switch up/middle/down, again just to be sure we don't have any errors.
At this point you'll get the Joystick Profile messages printed to the console but no sound.

3) Rather than trying to instruct you how to create commands in VA, I've provided a .vap file as a shortcut.
(I can explain how if anyone wants extra instruction...just ask!)

Grab the attached ZIP file and unzip the provided VAP file to anywhere you like (C:\temp is as good as any)
Run Voice Attack (usually good idea to run as Administrator), select "import a new profile", and select the vap file we unzipped above.

If you have the free version only, please...
Ok, so, whilst the unpaid, trial version won’t let you import a profile, it will let you import commands.

1) Fire up VA in Administrator mode
2) Select the “Edit Profile” button (or press Alt+E)
3) Select “Import Commands” button (lower left hand corner of the window)
4) Navigate to where you unzipped my ED-Clicker-Profile.vap file and select it
5) Select all the commands (tick the check boxes)
6) Click Import
7) Click “Apply”, then “Done”

If you go ahead and edit the profile you'll see the three commands called "Curve0", "Curve1" and "Curve2".
Now, if you are already using VA along with a previously bought or created profile, then you need to do some extra stuff...
A) switch back to that profile now in the main window and hit the edit button.
B) Select "Options" and select (or edit) the "Include commands from other profiles setting
C) click the "+" button and choose my vap profile from the dropdown menu.
D) Click "ok" and "done" to return to the main VA Window.

If not already set, enable keyboard shortcuts by clicking the keyboard icon.

Now, each time we adjust the Auto Pilot Switch position (on the Throttle) in order to change our joystick curves on the fly, we should hear VA telling us which position we've selected.

Obviously, getting in and editing these couple of commands you can get VA to use it's text-to-speech engine to say whatever you want.
Alternately, you can change the command to play a sound file (eg ding.wav)...all you need then is navigate to where you've downloaded a bunch of sounds you wish to use, or, navigate to c:\windows\media if you're inclined to use the pre-canned noises that come with Windows.

Hopefully this proves a useful addition or inspiration for even more improvement to what is already and awesome tool/product.

If anyone needs clarification or otherwise can't get it to work, just ask!


p.s. other thing...Voice Attack requires the Windows Speech Engine to be installed if you don't already have this!
Even if you don't intend to use VA to recognise voice commands, you still need the engine.


EDIT: January 2020

NOTE: - if you edit the TARGET script to include the feature as ABOVE ... BE WARNED ... if Voice Attack is not running, the key combo this uses will be parsed through to the game and may conflict with any bindings you've made which use the unmodified (shifted etc) keys.

e.g. ED will interpret LeftShift+1 as simply 1 and open the NavPanel.
When VA is running you can set your VA command to intercept this key combo, do "stuff", but not parse the key combo through to the game.

I have fixed this by;
  • included a global flag variable "HCSTriggers" and setting it to 0 by default
  • included some code in my startup script which tests if VA is running and write a 1 or 0 to a txt file
  • included TARGET code to read the above file and set HCSTriggers accordingly
  • where I use triggers that get sent to VA, I include an "if/else" wrapper testing HCSTriggers
Windows Startup batch file script code...stick this just prior to issuing the commands to start your TARGET script...
rem Check to see if VoiceAttack is running and set variable accordingly
tasklist /FI "IMAGENAME eq voiceattack.exe" 2>NUL | find /I /N "voiceattack.exe">NUL
if "%ERRORLEVEL%"=="0" (echo 1 > c:\vastatus.txt) else (echo 0 > c:\vastatus.txt)
...and remember, you MUST run this startup batch script as "Administrator" otherwise you will get an "access denied" message when it tries to write to the file.

TARGET Code to read the file and set HCSTriggers...
// Check if VoiceAttack is running...
fp = fopen("c:\\vastatus.txt", "r");
if (fp) {
    fread(VA, 1, 1, fp);
    HCSTriggers = ieval(VA);                                    // Set HCSTriggers if VA is running
Example TARGET code to send trigger to VA...
        if (JSProfile == 2) {
            JSCurveSetting = "MEDIUM";
            VACurveTxt = Curve2;       

            if(HCSTriggers) ActKey(PULSE+KEYON+VACurveTxt);
...where "Curve2" is defined in the KeyMap file thus...
define Curve2                                L_SHIFT+USB[0x26]        // LSHIFT+9        (Create a command in VA to play text-to-speech response for curve setting)


Last edited:
Top Bottom