Another TM16000 question
-
Greetings,
I purchased the TM T16000 HOTAS stick, throttle, and rudder pedals. I was wondering if it would be possible for the moderators to give this HOTAS system an area of it’s own?
To tell you the truth, I’m having a bit of trouble getting all the components to work together. Based on what I’ve been able to learn so far from search and trying things on my own it appears that you can use the advanced setup in sim to assign axes but getting all three components to work at the same time, that is, rudder, wheel brakes, hat POV, throttle hat and rotary, throttle, and stick together appear to require some kind “combining” script using target script editor that is, well, beyond me.
Any help would be appreciated. Teach me to fish?
Regards
G-:p
-
I have the same system as you (stick, throttle and rudder) and use it with the target script.
I managed to do some changes in sbelcl script to use it with the rudder. If you want the file ask me (i don’t know how to put a file in the forum ^^ )
You just have to launch target script, load the script and run it, then launch BMS. then you can change your axes in the BMS setup.
I could learn to fish too -
SF
Thank you for the reply. Could you post the contents of the script here?
-
My T16000 fcs .tmc :
include “target.tmh”
include “FalconBMS.ttm” //Actual button asignments
int main()
{
//Devices not used
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;
// Set axis
//T16000
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYY, 0, 0, 0, 0, 0);
MapAxis(&T16000, RUDDER, 0, 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);
//TWCS Throttle
MapAxis(&TWCSThrottle, TRDR, 0, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TRDR, 0, 0, 0, 0, 0);
MapAxis(&TWCSThrottle, TTHR, DX_THROTTLE_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TTHR, 0, 0, 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, 0, 0, 0, 0);
MapAxis(&TWCSThrottle, TMSTY, DX_YROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TMSTY, 0, 0, 0, 0, 0);
MapAxis(&TWCSThrottle, TCSRIGHT, 0, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TCSRIGHT, 0, 0, 0, 0, 0);
MapAxis(&TWCSThrottle, TCSRUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TCSRUDDER, 0, 0, 0, 0, 0);
MapAxis(&TWCSThrottle, TCSLEFT, 0, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&TWCSThrottle, TCSLEFT, 0, 0, 0, 0, 0);
// Set keyboard rate and layout
SetKBRate(32, 50);
SetKBLayout(KB_ENG);
//Set UMD layer buttons
SetShiftButton(0, 0, &TWCSThrottle, TBTN2, TBTN3, 0);
//Set button assignments
//T16000
MapKeyUMD(&T16000, TS1, TriggerFirstDetent, TriggerSecondDetent, TriggerSecondDetent);
MapKeyUMD(&T16000, TS2, APOverride, SimPinkySwitch, AFResetTrim);
MapKeyUMD(&T16000, TS3, SimLeftAPSwitch, SimPickle, SimTrimYawLeft);
MapKeyUMD(&T16000, TS4, SimRightAPSwitch, SimMissileStep, SimTrimYawRight);
MapKeyUMD(&T16000, B5, 0, AFGearToggle, 0);
MapKeyUMD(&T16000, B6, 0, AFFlapToggle, 0);
MapKeyUMD(&T16000, B7, 0, LEFlapToggle, 0);
MapKeyUMD(&T16000, B8, 0, AFTriggerCatapult, 0);
MapKeyUMD(&T16000, B9, 0, SimHookToggle, 0);
MapKeyUMD(&T16000, B10, 0, AFWingFoldToggle, 0);
MapKeyUMD(&T16000, B13, 0, AFCanopyToggle, 0);
MapKeyUMD(&T16000, B14, SimEject, SimEject, SimEject);
MapKeyUMD(&T16000, H1U, DMSUp, TMSUp, AFElevatorTrimUp);
MapKeyUMD(&T16000, H1D, DMSDown, TMSDown, AFElevatorTrimDown);
MapKeyUMD(&T16000, H1L, DMSLeft, TMSLeft, AFElevatorTrimLeft);
MapKeyUMD(&T16000, H1R, DMSRight, TMSRight, AFElevatorTrimRight);
//TWCS Throttle
MapKeyUMD(&TWCSThrottle, TBTN1, 0, SimToggleMissileCage, SimThrottleIdleDetent);
MapKeyUMD(&TWCSThrottle, TBTN4, AFBrakesOut, SimSelectSRMOverride, SimSelectSRMOverride);
MapKeyUMD(&TWCSThrottle, TBTN5, AFBrakesIn, SimSelectMRMOverride, SimSelectMRMOverride);
MapKeyUMD(&TWCSThrottle, TLOCK, SimRadarCursorZero, SimCursorEnable, SimCursorStopMovement);
MapKeyUMD(&TWCSThrottle, THAT1U, 0, CMSUp, 0);
MapKeyUMD(&TWCSThrottle, THAT1D, 0, CMSDown, 0);
MapKeyUMD(&TWCSThrottle, THAT1L, 0, CMSLeft, 0);
MapKeyUMD(&TWCSThrottle, THAT1R, 0, CMSRightSimSlapSwitch, 0);
MapKeyUMD(&TWCSThrottle, THAT2U, 0, SimRadarElevationUp, 0);
MapKeyUMD(&TWCSThrottle, THAT2D, 0, SimRadarElevationDown, 0);
MapKeyUMD(&TWCSThrottle, THAT2L, 0, SimRangeKnobDown, 0);
MapKeyUMD(&TWCSThrottle, THAT2R, 0, SimRangeKnobUp, 0);
MapKeyUMD(&TWCSThrottle, THAT3U, 0, SimTransmitCom1, 0);
MapKeyUMD(&TWCSThrottle, THAT3D, 0, SimTransmitCom2, 0);
MapKeyUMD(&TWCSThrottle, THAT3L, 0, SimCommsSwitchLeft, 0);
MapKeyUMD(&TWCSThrottle, THAT3R, 0, SimCommsSwitchRight, 0);
//Throttle rudder axis
KeyAxis(&TWCSThrottle, TRDR, ‘u’, AXMAP2( LIST( 0, 40, 60 ), AFBreaksToggleSimParkingBrakeToggle, 0, SimWheelBrakes));
KeyAxis(&TWCSThrottle, TRDR, ‘m’, AXMAP2( LIST( 0, 40, 60 ), AFBreaksToggleSimParkingBrakeToggle, 0, SimWheelBrakes));
KeyAxis(&TWCSThrottle, TRDR, ‘d’, AXMAP2( LIST( 0, 40, 60 ), AFBreaksToggleSimParkingBrakeToggle, 0, SimWheelBrakes));}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
} -
you need to add the FalconBMS.ttm :
define TriggerFirstDetent REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+‘/’);”)
define TriggerSecondDetent REXEC(20, 20, “ActKey(KEYON+PULSE+L_ALT+‘/’);”)
define SimPinkySwitch PULSE+‘v’
define APOverride PULSE+L_ALT+‘a’
define AFResetTrim PULSE+L_ALT+ENT
define SimPickle REXEC(25, 20, “ActKey(KEYON+PULSE+SPC);”)
define SimLeftAPSwitch PULSE+L_SHIFT+‘a’
define SimTrimYawLeft REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+L_ALT+F9);”)
define SimMissileStep REXEC(25, 20, “ActKey(KEYON+PULSE+L_SHIFT+‘/’);”)
define SimRightAPSwitch PULSE+‘a’
define SimTrimYawRight REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+L_ALT+F10);”)
define AFGearToggle TEMPO(PULSE+‘g’, PULSE+L_CTL+L_SHIFT+L_ALT+‘g’, 1000)
define AFFlapToggle TEMPO(PULSE+L_CTL+F9, PULSE+L_CTL+F10)
define LEFlapToggle TEMPO(PULSE+L_ALT+F9, PULSE+L_ALT+F10)
define AFTriggerCatapult TEMPO(0, PULSE+L_SHIFT+‘k’, 1000)
define SimHookToggle TEMPO(PULSE+L_CTL+‘k’, PULSE+L_ALT+‘k’)
define AFWingFoldToggle TEMPO(PULSE+L_SHIFT+‘w’, PULSE+L_CTL+‘w’, 1000)
define AFCanopyToggle TEMPO(PULSE+L_CTL+‘c’, PULSE+L_CTL+L_SHIFT+L_ALT+‘c’, 1000)
define SimEject REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+‘e’);”)
define TMSUp PULSE+L_SHIFT+HOME
define DMSUp PULSE+L_CTL+HOME
define AFElevatorTrimUp REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+UARROW);”)
define TMSDown PULSE+L_SHIFT+END
define DMSDown REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+END);”)
define AFElevatorTrimDown REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+DARROW);”)
define TMSLeft PULSE+L_SHIFT+DEL
define DMSLeft PULSE+L_CTL+DEL
define AFElevatorTrimLeft REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+LARROW);”)
define TMSRight REXEC(25, 20, “ActKey(KEYON+PULSE+L_SHIFT+PGDN);”)
define DMSRight PULSE+L_CTL+PGDN
define AFElevatorTrimRight REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+RARROW);”)
define SimToggleMissileCage PULSE+‘u’
define AFBreaksToggle PULSE+‘b’
define SimThrottleIdleDetent PULSE+L_ALT+‘i’
define AFBrakesOut REXEC(25, 20, “ActKey(KEYON+PULSE+L_SHIFT+‘b’);”)
define SimSelectSRMOverride TEMPO(PULSE+‘d’, PULSE+‘c’)
define AFBrakesIn REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+‘b’);”)
define SimSelectMRMOverride TEMPO(PULSE+‘m’, PULSE+‘c’)
define SimCursorEnable REXEC(25, 20, “ActKey(KEYON+PULSE+INS);”)
define SimRadarCursorZero PULSE+PGUP
define SimCursorStopMovement PULSE+L_SHIFT+‘y’
define CMSUp PULSE+L_ALT+HOME
define CMSDown PULSE+L_ALT+END
define CMSLeft PULSE+L_ALT+DEL
define CMSRightSimSlapSwitch TEMPO(PULSE+‘s’, PULSE+L_ALT+PGDN)
define SimRadarElevationUp REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+F7);”)
define SimRadarElevationDown REXEC(25, 20, “ActKey(KEYON+PULSE+L_CTL+F5);”)
define SimRangeKnobUp REXEC(25, 20, “ActKey(KEYON+PULSE+L_ALT+F4);”)
define SimRangeKnobDown REXEC(25, 20, “ActKey(KEYON+PULSE+L_ALT+F3);”)
define SimTransmitCom1 REXEC(25, 20, “ActKey(KEYON+PULSE+HOME);”)
define SimTransmitCom2 REXEC(25, 20, “ActKey(KEYON+PULSE+END);”)
define SimCommsSwitchLeft REXEC(25, 20, “ActKey(KEYON+PULSE+DEL);”)
define SimCommsSwitchRight REXEC(25, 20, “ActKey(KEYON+PULSE+PGDN);”)
define AFBreaksToggleSimParkingBrakeToggle TEMPO(PULSE+‘b’, PULSE+L_ALT+‘p’, 500)
define SimWheelBrakes ‘k’ -
Hope that helps
-
Can’t wait to get home and try it out. Thanks much!
-
man I’m drowning here, Fresh Install- same setup,Trying to sate the itch. Cannot for the life of me get my head around this. When you wrap this in rubber and make it idiot proof I’ll be waiting.
-
Ok, so that worked. If you have the Thrustmaster T16000 FCS (joystick, throttle, and rudder pedals) the above works. I am most grateful StayFreaky. Many thanks.
Fairly Certain, you should have two Thrustmaster programs. Target GUI and Target Script Editor. If you didn’t install them go the TM website and download. I put a folder on my desktop labeled TM just for those TM shortcuts, files, .pdf’s etc. Once you create the below files you have to save them in that folder and point the program to them. At least that what I had to do.
Anyway, you basically cut and past the above information into the TM TSE , click on menu, then new, create the .tmc file and past the above from post one into the TM TSE program. There will be an asterisk there, that means you have to click on save. Do the same with the information from his post two, for the .ttm file. Then save that one too.
Click compile, it should go well, then run, leave the TM TSE program running and then open the game. Go to setup and assign your desired axis in the game.
I know I didn’t wrap it that in rubber, more like saran wrap, but I hope you can muddle through.
Let us know how it goes.
Still waiting for this forum to give the TM16000 folks a special area. Maybe they could attach training wheels for we misfits that actually couldn’t afford the high priced Warthawgs or Cougars.
LOL JK
-
i got most of my controls working but can anyone give a low drag run through of why only one POV HAT? the one on my stick works, but the one on my throttle is not recognized, I’ve looked around, but I was able to figure out why the t1600m was sucking going directx, but I figured it out, it has to do with signal chain and sequence of loading, I was able to map everything I wanted directx through the game, without using TARGET at all, but that POV on the throttle just will not come to. any guidance?
-
DirectX has a limitation of only one POV Hat, to use both you will need TARGET….
Been there too… -
stay freaky you deserve credit. I wanted you to know. I emailed them a bunch and told them and linked them here and there and I suggest all of us do the same because this is a DX limitation not a software or game limitation and ANY JOY or THROTTLE should have direct digital in the year 2017.
-
DirectX has a limitation of only one POV Hat, to use both you will need TARGET….
Been there too…I don’t like his layout one bit, not to be rude- but it’s just so cumbersome to have to configure my controls hands off.