Home
[Script Editor basics - v1.5] 700 KB
Contents
1. Keypad 67 F13 68 F14 69 F15 GA F16 6B F17 6C F18 6D F19 6E F20 6F F21 70 F22 71 F23 72 F24 73 Keyboard Execute 74 Keyboard Help 75 Keyboard Menu 76 Keyboard Select 77 Keyboard Stop 78 Keyboard Again 79 Keyboard Undo 7A Keyboard Cut 7B Keyboard Copy 7C Keyboard Paste 7D Keyboard Find 7E Keyboard Mute 7F Keyboard Volume Up 80 Keyboard Volume Dn 81 Keyboard Locking Caps Lock 82 T A R G E T Script Editor Basics User Manual v1 5 55 60 Keyboard Locking Num Lock 83 Keyboard Locking Scroll Lock 84 Keypad 85 Brazilian Keypad Keyboard Equal Sign 86 Keyboard Int l 1 Ro 87 Keyboard Intl 2 88 Katakana Hiragana Keyboard Int l 2 Yen i Keyboard Int l 4 Henkan an Keyboard Int l 5 8B Muhenkan Keyboard Int l 6 8C PC9800 Keypad Keyboard Int l 7 8D Keyboard Int l 8 8E Keyboard Int l 9 8F Keyboard Lang 1 90 Hanguel English Keyboard Lang 2 91 Hanja Keyboard Lang 3 92 Katakana Keyboard Lang 4 93 Hiragana Keyboard Lang 5 94 Zenkaku Hankaku Keyboard Lang 6 95 Keyboard Lang 7 96 Keyboard Lang 8 97 Keyboard Lang 9 98 Keyboard Alternate Erase Keyboard SysReg Attention Keyboard Cancel Keyboard Clear 9C Keyboard Prior 9D Keyboard Return gE Keyboard Separator 9F Keyboard Out AO Keyboard Oper A1
2. If you run the file and check what happens in the Device Analyzer you will see that your axes are moving If you like you can press a button on the controller and notice that nothing happens This is simply because the buttons do not have functions assigned yet MapAxis optional parameters We have only used a few parameters in the previous script In fact MapAxis supports the following options MapAxis amp lnput device physical axis name dx_axis name AXIS NORMAL or AXIS REVERSED MAP_ABSOLUTE or MAP_RELATIVE AXIS NORMAL the axis runs in the default direction _AXIS_ REVERSED reverses the axis direction MAP ABSOLUTE usual behavior of an axis MAP RELATIVE in this particular mode the axis value will stay at the maximum or minimum value reached until you change your movement direction This parameter was specially created for Slew Control axes or ministicks which control a Target Designation Cursor Only use absolute mode when needed Note this mode provides for realistic handling of the TDC box in Lock On Modern Air Combat DCS Flaming Cliffs 1 and 2 without the patch T A R G E T Script Editor Basics User Manual v1 5 11 60 Example MapAxis amp Throttle SCY DX YROT AXIS AXIS REVERSED MAP RELATIVE MapAxis amp Throttle SCX MOUSE X AXIS AXIS NORMAL MAP RELATIVE Example of a combination between a HOTAS Warthog joystick and a HOTAS Cougar throttle TAS NOTE you will notice that
3. MapAxis amp Joystick JOYX DX_X_AXIS As we have opened a we now must close it with a and finish the line with a MapAxis amp Joystick JOYX DX_X_AXIS 10 60 T A R G E T Script Editor Basics User Manual v1 5 Note the gt this is the only way to finish a line after a function Let s do this for the other HOTAS Warthog axes as well MapAxis amp Joystick JOYY DX Y AXIS MapAxis amp Throttle THR LEFT DX ZROT AXIS MapAxis 8Throttle THR RIGHT DX Z AXIS MapAxis amp Throttle SCX DX XROT AXIS MapAxis amp Throttle SCY DX YROT AXIS MapAxis 8Throttle THR FC DX SLIDER AXIS Now that all the axes have been associated with DirectX axes once you have compiled and executed your script your joystick and throttle will work as on a single ID joystick Our file now looks like this include target tmh here we link this file to the file that contains function code int main if Init amp EventHandle return 1 declare the event handler return on error script and function functions go here MapAxis amp Joystick JOYX DX_X_AXIS MapAxis amp Joystick JOYY DX_Y_AXIS MapAxis amp Throttle THR LEFT DX_ZROT_AXIS MapAxis amp Throttle THR_RIGHT DX_Z_AXIS MapAxis amp Throttle SCX DX_XROT_AXIS MapAxis amp Throttle SCY DX_YROT_ AXIS MapAxis amp Throttle THR_FC DX_SLIDER_AXIS int EventHandle int type alias o int x DefaultMapping 80 x
4. MapKey 8Joystick H1U REXEC 1 100 TrimDXAxis DX_Y_AXIS 5 MapKey amp Joystick H1D REXEC 1 100 TrimDXAxis DX_Y_AXIS 5 To keep your CPU resources for your flight simulator software using SEQ CHAIN EXEC TEMPO AXIS LIST inside an REXEC is forbidden This limit can be overcome by creating a function that contains the SEQ CHAIN EXEC TEMPO AXIS LIST and calls that function in the REXEC statement please see the Creating your own function chapter in this manual for more details T A R G E T Script Editor Basics User Manual v1 5 39 60 DeferCall DeferCall is a command used to call up a function after a programmed delay This is the best tool for inserting a delay into an EXEC or an REXEC statement The delay is started when the line is EXECuted This means that if you want 3 events spaced by one second apart For the first event you will not use DeferCall For the second event you will use a DeferCall of 1000 milliseconds For the third event you will use a delay of 2000 milliseconds Syntax DeferCall Delay code goes here Example MapKey amp Joystick H4U EXEC ActKey KEYON PULSE a DeferCall 1000 amp ActKey KEYON PULSE b DeferCall 2000 amp ActKey KEYON PULSE c 40 60 T A R G E T Script Editor Basics User Manual v1 5 Script Syntax Now let s go a little bit deeper EXEC allows us to execute some code The goal of this document isn t to teach you to code
5. T A R G E T Script Editor Basics User Manual v1 5 KeyAxis Generating events from an axis Sometimes you may need to use an axis to generate events like keystrokes for example we call this a digital axis If the flight simulator software gives you the ability to choose between traditional axis mapping and a digital axis keep things simple and choose the traditional analog method Digital axes are recommended when all the analog axes are already being used or when the function you want to control cannot be associated with an axis There are several possible cases and possible configurations so we will use as many examples as possible Syntax KeyAxis 8 Device axis name concerned layer kind of digital axis program Concerned layers Here you define which layers are concerned by the function Examples KeyAxis amp Joystick JOYX will be applied to all layers KeyAxis amp Joystick JOYX 0 will be applied to all layers KeyAxis amp Joystick JOYX i will be applied only when the In toggle is active KeyAxis 8 Joystick JOYX ud will be applied only in the Up and Down Layers a Note logically there is no point including i and o at the same time because ioud ud It is the same when on if it is always active there is no point declaring all the layers ioumd 0 Depending on how the simulator manages keystrokes and functions ther
6. symbols also define that you will put a keystroke here 14 60 T A R G E T Script Editor Basics User Manual v1 5 If you are using someone else s template all you have to do is to fill in the output area Sometimes you will need to enter special keys such as Escape the space bar and so on As these are not simple letters or numbers you will need to use a particular syntax If you are using these commands you do not need the to encapsulate the keystroke Example MapKey 8Joystick 53 BSP when press S3 on the joystick backspace is pressed The following list describes the syntax for the special keys L CTL R CTL L SHIFT R SHIFT L ALT R ALT L WIN R WIN ESC F1 to F12 PRNTSCRN SCRLCK BRK BSP TAB CAPS ENT SPC INS HOME PGUP DEL END PGDN UARROW DARROW LARROW RARROW NUML KPO KP1 KP2 KP3 KP4 KP5 KP6 KP7 KP8 KP9 KPENT In this way you are now able to map a button with whatever keystroke you would like Combo keystrokes Sometimes to access a particular command in the simulator you need to use a key combination using two or more keys at the same These combos normally use toggle keys such as Control Alt and Shift MapKey amp Joystick S1 L_SHIFT DI When S1 on the joystick is pressed generates a left shift b combo Generate B after an action on the S1 button Here is another example MapKey amp Throttle BSF L SHIFT L CTL c When the Throttle bo
7. KP6 BSB if shift button Out generate Keypad 6 Written this way it s just much easier to read With a little practice you will probably have noticed that sometimes being able to press a key does not provide total control of the simulator While having the ability to create an event when a button turns ON is OK it may also be advantageous to be able to generate an event when a button turns OFF Generating an event when releasing a button with MapKeyR MapKeyR works exactly like MapKey except that the function is activated when the controller button turns OFF You can now send a keystroke when you release a button MapKeyR MapKeyR also supports In Out Up Middle and Down layers MapKeyRIO MapKeyRUMD MapKeyRIOUMD MapKeyR does not have to be equal to the MapKey statement applied to the same button You can have MapKeyUMD amp lJoystick S4 a bel MapKeyRIO amp Joystick S4 y Z Note All keys generated on button release mapped with MapKeyR are automatically pulsed even if you don t 11 explicitly put PULSE key This prevents key sticking You can cheat using a DOWN function When using I O or UMD the output layer will be equal to the one you ve used while pressing the button using MapKeylO even if you release the Shift switch 22 60 T A R G E T Script Editor Basics User Manual v1 5 CHAIN function Generating events at the same time CHAIN is the c
8. amp o x Let s break down the contents of the EXEC index index 1 8 Here we define the index we have 8 events in the Listmode SEQuence so the modulus is 8 We want to offset the index by 1 step so 1 is our offset value ActKey KEYON PULSE X listmode index After defining the index offset value we need to apply it For this we will use X list index function a special function created to manage SEQ or CHAIN or LIST as an initialized list X will index this SEQ and will return the corresponding element Here X checks the index of the listmode SEQuence As we ve just moved the index by one step X will send the next event For the second line it is exactly the same except that we add an almost complete loop to our seguence Our seguenced list has 8 events and returns to event 1 after event 8 has been carried out So whatever the event if add 7 will go to the previous event Example I m on event number 6 of 8 if add 7 steps will go to 8 with 2 steps and the last 5 steps bring me to event number 5 was on event 6 I m now on event 5 This is perfect Why not use 1 to return to previous the event Simply because once you have reached event 1 it cannot move anymore The sequence is made to loop only when the end of the sequence is reached T A R G E T Script Editor Basics User Manual v1 5 51 60 Let s start to count For some special actions you may want to count how many times a button
9. unfortunately this reguires a great deal of practice and would make this manual extremely boring Therefore we will only use the most basic features as examples and then you can build our own functions Let s start off with some vocabulary The following Keywords are supported char byte short word int alias float struct include if else do while while return goto break Operators Operators are used for compare transform math etc We will use them to check a status to validate an output Reference 8 placed before a variable obtain the physical address of the variable Double Reference amp amp placed before a variable obtain the physical address of the variable buffer Logical NOT Multiplication i Division Modulus Addition Subtraction Right shift gt gt Left Shift lt lt Greater than gt Less than lt Less than or egual to lt Greater than or egual to gt Equal to Not equal to l Bitwise AND amp Bitwise XOR W Bitwise OR Very few of us are able to effectively use these operators as they are real programming tools However with some basic examples we can decode them and see how and when they are used T A R G E T Script Editor Basics User Manual v1 5 41 60 Generating keystrokes with pure script Or how to be able to generate a keystroke without MapKey The script has its own syntax to press a key activate an event and sometime
10. Autopilot HRA K KAA K KA Ett define Autopilot_Attitude_Hold L ALT USB Ox1E Autopilot Attitude Hold define Autopilot Barometric Altitude Hold L_ALT USB 0x21 Autopilot Barometric Altitude Hold define Autopilot USB 0x04 Autopilot define Autopilot Altitude And Roll Hold L ALT USB Ox1F Autopilot Altitude And Roll Hold define Autopilot Barometric Altitude Hold H USB Ox0B Autopilot Barometric Altitude Hold H define Autopilot Transition To Level Flight Control L_ALT USB 0x20 Autopilot Transition To Level Flight define Autopilot_Disengage L ALT USB 0x26 Autopilot Disengage define Autopilot Radar Altitude Hold L_ALT USB 0x22 Autopilot Radar Altitude Hold define Autopilot_Route_following L_ALT USB 0x23 Autopilot Route following Note Mr Raphael Bodego has built a free T A R G E T compatible Macro file generator It covers the main simulators on the market and will make your macro file generation quicker than ever the software is called Sim2TARGET It s not an official Thrustmaster product but it is a useful tool You can find it at www checksix fr com T A R G E T Script Editor Basics User Manual v1 5 19 60 Multiple outputs on a single button TEMPO Command Tempo is a sub function of MapKey it is based on real aviation ergonomics TEMPO gives the pilot the possibility of having 2 functions on a single button A short press will generate the first output a long press will gene
11. Copy action Undo lets you cancel your most recent actions step by step Redo lets you redo the last modification if you ve clicked Undo 4 60 T A R G E T Script Editor Basics User Manual v1 5 The Tools button Clicking on the Tools button displays the major tools you need to execute and test a script Compile is used to compile your file Your script is transformed into a DLL file if there are no syntax errors Run compiles and runs the DLL file created from your script When the program is running your controllers will execute your script Options displays the options page We will learn about these later Event Tester launches the Event Tester This is a tool that is used to control outputs keystroke and axis values Device Analyzer is software dedicated to DirectX control that displays real controllers inputs and virtual controller DirectX outputs Event Tester The Event Tester is an event recorder We will use it to test the keystroke generation we have programmed on our controllers Settings Clear Keyboard and mouse events Pressed keys 104ms B0ms B8ms 72ms 64ms The Event Tester displays Mouse button event needs to be activated in the Settings menu Keyboard event press Keyboard event release and how long the key as been pressed The Event Tester uses one line per event so a momentary press on a key will generate 2 lines T A R G E T Script Edit
12. MOUSE_X_AXIS abs Joystick JOYY sin Joystick JOYX AMAXF PI DXAxis MOUSE_Y_AXIS Joystick JOYY cos Joystick JOYX AMAXF PI else DefaultMapping amp o x T A R G E T Script Editor Basics User Manual v1 5 53 60 Appendix USB Keydown and Keyup codes Key Name USB HID code Return 28 Escape 29 Backspace 2A Tab 2B Space 2C 2D 2E II 2F 1 30 31 Europe 1 See notes 32 SE 33 34 S 35 lt 36 EI 37 12 38 Caps Lock 39 F1 SA F2 3B F3 3C F4 3D F5 SE F6 3F F7 40 54 60 T A R G E T Script Editor Basics User Manual v1 5 F8 41 F9 42 F10 43 F11 44 F12 45 Print Screen 46 Scroll Lock 47 Break Ctrl Pause 48 Pause 48 Insert 49 Home 4A Page Up 4B Delete 4C End 4D Page Down 4E Right Arrow 4F Left Arrow 50 Down Arrow 51 Up Arrow 52 Num Lock 53 Keypad 54 Keypad 55 Keypad 56 Keypad 57 Keypad Enter 58 Keypad 1 End 59 Keypad 2 Down SA Keypad 3 PageDn 5B Keypad 4 Left 5C Keypad 5 5D Keypad 6 Right 5E Keypad 7 Home 5F Keypad 8 Up 60 Keypad 9 PageUp 61 Keypad 0 Insert 62 Keypad Delete 63 Europe 2 See notes 64
13. Manual v1 5 Virtual Axis Rotation with RotateDXAxis RotateDXAxis is a little illustration of the power of the script This function has been created for people who want to twist the joystick grip a little You may need it if you use the joystick as a center stick rotated counterclockwise or as a side stick slightly twisted clockwise T A R G E T will calculate and project the X and Y axes to keep the direction of axes realistic whatever the twist angle you re going to apply Syntax RotateDXAxis DirectX axis Name Second DirectX axis name twist angle value Examples RotateDXAxis DX X AXIS DX WV AXIS 5 simulate a 5 twisted side stick like F 16 RotateDXAxis DX X AXIS DX Y AXIS 15 simulate a 15 twisted centred stick for A 10 for example RotateDXAxis DX X AXIS DX WV AXIS 90 transform X to Y and Y to X NOTE As this is an important setting we recommend that you to place it at the top of the MapAxis function list This will make it easier for other users to see T A R G E T Script Editor Basics User Manual v1 5 13 60 Keystroke and DirectX button generation with the MapKey Function Basically we are going to call up a function used to associate a keystroke with a button This function is called MapKey We are going to associate MapKey with a button but we need to know the name of each button and more particularly each position Therefore all the buttons have a name and all the toggle swit
14. autopilot lautopilot We can clearly see that we are writing exactly the same thing twice This is the ideal case for a function to make things simpler We have seen that from the Autopilot point of view the output is a simple seguence of toggling ON and OFF Our function will manage that toggling using a SEGuence 48 60 T A R G E T Script Editor Basics User Manual v1 5 Let s transform the previous program using a function include target tmh int autopilot we declare the autopilot function int main j Init amp EventHandle return 1 autopilot SEO EXEC ActKey PULSE KEYON a EXEC ActKey PULSE KEYON L_SHIFT a we define the contents of the autopilot function MapKey amp Throttle LTB autopilot we simply call up our function inside the MapKey MapKey amp Throttle APENG autopilot we simply call up our function inside the MapKey and that s all int EventHandle int type alias o int x DefaultMapping amp o x Here we have used a simple function the result of it is just 2 keystrokes toggling The content of a function isn t limited to keystrokes inside it you can use all the operators and C keywords to manage data Let s continue to work with that autopilot example In DCS Flaming Cliffs 2 we would like to use a realistic way to manage the autopilot for the A 10 There is a 3 position toggle switch APATH APAH APPAT And 2 buttons to activate deactiva
15. by Dr James Nutty Hallows this document provided a complete overhaul of what a device programming language might be With the HOTAS Cougar Thrustmaster pushed the level of controller programmability to new levels The basic structure of that script was well suited to mid core users and its features generally satisfied everyone Over time however some advanced coders began to feel frustrated and that the basic structure limited their creativity This new programming language provides a solution for these users This new language is very powerful You can achieve the same objectives in different ways by creating your own functions and linking them to certain external languages there are almost no limits to what you can do To make it accessible to everybody we have included many new functions which provide users with more possibilities than with the HOTAS Cougar These new functions also provide a good way to discover and learn how to use the script Most of this manual will be dedicated to describing these functions as a reference guide The document then provides examples of using advanced programming We recommend that you learn the functions provided first If you are new to programmable controllers we suggest that you learn to use the T A R G E T graphical user interface GUI first This experience will really help you when you start to learn the script The best way to learn the script is just to practice While it may seem heav
16. change the status of a LED whatever its current state to make it blink for example LED amp LMFD LED ONOFF LED CURRENT LED2 MapKey amp Joystick H4P LED amp RMFD LED ONOFF LED CURRENT LED2 Each time we press the hat 4 push button the LED 2 onthe right MFD will change its state The backlighting intensity is controlled nearly the same way The difference is that we have different backlight steps You can control the Backlighting intensity from null to full The Warthog throttle offers 6 levels of intensity while the MFDs have 256 different levels of intensity from 0 to 255 T A R G E T Script Editor Basics User Manual v1 5 17 60 The throttle and the MFDs share the same command but as the throttle doesn t offer the same number of levels of lighting you have to divide the full range of values Oto 42is OFF 43 to 85 is level 1 86 to 128 is level 2 129 to 171 is level 3 172 to 214 is level 4 215 to 255 is level 5 Syntax LED amp lnput Device LED INTENSITY value of the intensity Let s imagine that we want to control the left MFD backlight power with the Warthog throttle EAC switch MapKey 8 Throttle EACON LED 8LMFD LED INTENSITY 255 MapKey amp Throttle EACOFF LED 8LMFD LED INTENSITY 0 Start a configuration with all lights in the right status It s possible to initialize the LED status when launching the script For this we use the advanced programming code see later The commands must be p
17. controlling 3 different layers one for Air to Air one for Navigation landing etc and one for Air to Ground MapKeylO To program the In Out only sub layer you simply call up MapKeylO Function amp input device button name Out output In output MapKeylO amp Joystick S1 L_SHIFT b al If you press the joystick s S1 button depending on the position of the shift button you will generate B or a e f pressing the shift button In will generate a Lshift b e Ifthe shift button is not pressed will generate an a Now let s imagine that you want to keep the default DirectX mapping on TG1 and generate a b when the shift button is pressed MapKeylO amp Joystick TG1 DX1 b T A R G E T Script Editor Basics User Manual v1 5 21 60 MapKeylOUMD MapKeylOUMD allows you to generate up to 6 different outputs on a single button although in doing so it obviously becomes more difficult to remember all the outputs Each U M and D layer supports an I O sub layer MapKeylOUMD 8Joystick 54 KP1 KP2 KP3 KP4 KP5 KP6 This one is clearly not easy to read but we can change the way we display it MapKeylOUMD amp Joystick 53 KP1 BSF button if shift button In generate Keypad 1 KP2 BSF if shift button Out generate Keypad 2 KP3 BSM if shift button In generate Keypad 3 KP4 BSM if shift button Out generate Keypad 4 KP5 BSB if shift button In generate Keypad 5
18. is now time to launch the T A R G E T Script Editor Your Windows desktop contains an icon called T A R G E T Script Editor double click on it After the T A R G E T splash screen you access the main page of the Editor Please remember that you cannot run the T A R G E T graphical user interface GUI and the Editor at the same time Click the Menu icon and select Open A T A R G E T script is a file with a tmc extension This file can come with a ttm file that contains the keyboard data Open the tmc file of your choice To activate the contents of that file simply click the Run button in the Tools toolbar To stop the script just click the Stop button beside the Run button Like every program the script has its own structure There are a few lines that may look a bit like exotic alien writing to most of us so we ll just ignore that Note All data placed behind will be ignored until the start of the next line is used to write a comment or disable a line In the Editor these comments will appear in green You may also notice that files can include script for devices you do not own This is not a problem the script can be run without those devices 8 60 T A R G E T Script Editor Basics User Manual v1 5 Script contents Minimal file contents The following code can be executed It will launch the virtualization of controllers into a single virtual device but as there s no code dedicated to creating fu
19. keystroke outputs depending on the flag This gives us if autopilot 1 ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a But we must also change the Flag state each time a button is pressed if autopilot 1 autopilot 0 else autopilot 1 if the autopilot 1 set it to 0 else set it to 1 This one can be simplified using an operator autopilot lautopilot reverse the flag status 44 60 T A R G E T Script Editor Basics User Manual v1 5 As we have 2 different kinds of event to generate at the same time we will use a CHAIN MapKey amp Throttle LTB CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a EXEC autopilot lautopilot Therefore this works for the LTB button We must do the same for APENG MapKey 8 Throttle APENG CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L_SHIFT a EXEC autopilot lautopilot And it works The autopilot flag is shared by the 2 buttons The complete file include target tmh char autopilot we create the flag int main i Init amp EventHandle return 1 MapKey amp Throttle LTB CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a EXEC autopilot autopilot MapKey amp Throttle APENG CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a EXEC autopilot autopilot int Eve
20. state we may or may not generate the ActKey event include target tmh char flag1 we create a flag called flag1 int main if Init amp EventHandle return 1 flag1 0 set the flag1 value to 0 at startup of the configuration MapKey amp Joystick S4 EXEC flag1 1 set the flag1 to 1 true when S4 is pressed MapKeyR amp Joystick 54 EXEC flag1 0 set the flag1 to 0 false when S4 is released MapKey 8Joystick S1 EXEC if flag1 ActKey PULSE KEYON a If flag1 true 1 press a keystroke when S1 is pressed int EventHandle int type alias o int x DefaultMapping amp o x In the last example S1 will only generate the ActKey if the Flag is true 1 Now let s imagine that when the Flag is False 0 we want a b keystroke to be pressed T A R G E T Script Editor Basics User Manual v1 5 43 60 For this we can call up the operator Egual to which is written this way We only have to edit our MapKey 51 line MapKey 8Joystick 51 EXEC if flag1 ActKey PULSE KEYON a if flag1 0 ActKey PULSE KEYON b Ji It works perfectly but in fact we didn t need to call up an operator We only have 2 kinds of outputs a and b so logically if the a condition is false it can only be b You will also notice that we ve only used an operator to check whether Flag 1 was equal to zero false This is specific to the C style langua
21. that layer to control secondary flight simulator functions like external views and so on In our file we must declare the switches that will control access to the layer Here we choose the behavior we want or the kind of switch that controls the selection We have several possibilities S4 PSF and PSB are button position names SetShiftButton amp Joystick S4 amp Throttle PSF PSB no toggle for U M usual HOTAS Cougar setting All layers are momentary SetShiftButton amp Joystick 53 amp Throttle PSF PSB IOTOGGLE toggle only for I O button SetShiftButton amp Joystick 53 amp Throttle PSF PSB IOTOGGLE UDTOGGLE A toggle for I O and U M D buttons SetShiftButton amp Joystick S3 amp Throttle PSF PSB UDTOGGLE toggle for U D buttons Note as Middle is the default layer you do not have to call it or specify anything since if you re not in the U or the D layer you can only be in the M layer Using layers does not change the way buttons are programmed too much MapKeyUMD To program the Up Middle and Down layer only you will have to call up MapKeyUMD Function amp input device button name Up output Middle output Down output MapKeyUMD amp lJoystick S4 u m d when pressing the 54 button if layer UMD master switch is Up generates a u if middle generates an m and if Down generates a d There are no rules for using these features but UMD is great for
22. 0 create useless but funny axis behaviour Axis control with buttons You may also manage axes with any kind of button This is a good alternative solution to accurately control a mixture or a range parameter without mapping a physical axis controller Syntax AXIS DirectX axis name increment delay before repeat Example virtual mouse over the Joystick HAT 2 MapKey amp Joystick H1U AXIS MOUSE_Y_AXIS 80 20 MapKey amp Joystick H1D AXIS MOUSE_Y_AXIS 80 20 MapKey amp Joystick HIL AXIS MOUSE_X_AXIS 80 20 MapKey amp Joystick H1R AXIS MOUSE_X_AXIS 80 20 28 60 T A R G E T Script Editor Basics User Manual v1 5 Axis trimming Trim functions are fairly easy to use but if you want to use them effectively you must be familiar with the EXEC function described later in this manual A trim value is an offset applied to the real value of the axis You read the axis value add or subtract the value of the trim and then send it to DirectX Trim is useful for joystick axes and rudder axes We will use it to tweak the aircraft s control surface to get a more neutral action for the Joystick and the rudder Note In T A R G E T the trim provides 2048 values 1024 to cover the full axis range Most simulators offer an internal trim solution You are free to use the T A R G E T trim or the default trim One advantage of simulator trims is that you can have a graphic display that explains the current trim v
23. A R G E T Script Editor Basics User Manual v1 5 Or a slightly more complex one MapKey 8Joystick TG1 CHAIN LOCK 0pen the locked area PULSE a D 1000 Wait 1 second PULSE b D 1000 Wait 1 second PULSE c D 1000 Wait 1 second LOCK Close the locked area unlock When starting the CHAIN Lock then pulse a wait 1 second then pulse b wait 1 second then pulse c and finally unlock Note If you have a very long CHAIN you can create several LOCK areas in your CHAIN and leave some time for any events from another button Example MapKey amp Joystick TG1 CHAIN LOCK Toggle lock PULSE a D 1000 Wait 1 second PULSE b D 1000 Wait 1 second LOCK Unlock D 33 Delay in milliseconds for possible keystroke event LOCK Toggle Lock PULSE c D 1000 PULSE d LOCK Unlock Sequences The SEQ from sequence function is used to generate different keystrokes each time you press the button This way you can manage all external views or select your weapons just by pressing one button MapKey amp Joystick 51 SEQ a b c In this case pressing TG1 once will provide an a that can be held until you release the trigger press the trigger again and you will get b press again and you will get a c that you can hold and then from the beginning again a You can define some keystrokes to be pulsed if needed MapKey a
24. HATRIGHT DXHATDOWNRIGHT DXHATDOWN DXHATDOWNLEFT DXHATLEFT DXHATUPLEFT Example MapKeylO amp Joystick TG1 DX1 LED and backlighting control The script language lets you control the LED state and backlighting intensity of several controllers such as the HOTAS Warthog Throttle and MFD pack T A R G E T supports some devices that were developed a long time before the software was created The MFD lighting support in the T A R G E T software is a bonus If you are experiencing issues like MFDs not responding stop the script execution simply unplug and then reconnect the MFDs and then relaunch the script This can happen if the USB port was in sleep mode while the MFDs were not being used Turn ON a LED Syntax LED amp input device LED_ONOFF LED_CURRENT operator LEDnumber The operator is used to control the status will turn OFF will turn ON will revert the LED status Example using a MapKey function here we turn ON LED 1 on the Warthog Throttle when the joystick Hat 2 Up position is pressed MapKey amp Joystick H2U LED amp Throttle LED ONOFF LED CURRENT LED1 Turn OFF a LED LED amp input device LED ONOFF LED CURRENT LEDnumber Notice that we ve just changed the for a to turn off the LED Now let s turn OFF our Throttle LED1 each time Hat 2 down is pressed MapKey amp Joystick H2D LED 8 Throttle LED ONOFF LED CURRENT LED1 Change the status of a LED Sometimes you may want to
25. IS 5 MapKey amp Joystick H1R REXEC 0 100 TrimDXAxis DX X AXIS 5 MapKey 8Joystick H1U REXEC 1 100 TrimDXAxis DX Y AXIS 5 MapKey 8Joystick H1D REXEC 1 100 TrimDXAxis DX Y AXIS 5 Force a trim value MapKey 8Joystick 54 EXEC TrimDXAxis DX X AXIS SET 0 TrimDXAxis DX_Y_AXIS SET 0 force the trim value to zero the result is a trim reset Here when press the S4 button on the Joystick set the X and the Y axis trim offset to zero Read an axis value and apply it as trim offset to the same axis MapKey 8Joystick 51 EXEC TrimDXAxis DX XK AXIS CURRENT TrimDXAxis DX Y AXIS CURRENT When press the Joystick S1 button memorize the X and Y axis position and calculate the difference to the center of the axis and then apply it to the X and Y axis It simply works in the same way as the DCS BlackShark trim In this case the use of a cancel trim event is highly recommended T A R G E T Script Editor Basics User Manual v1 5 29 60 This next one is a little bit more complicated MapKey amp Joystick 51 EXEC TrimDXAxis DX Y AXIS SET Throttle THR_FC 32 When press the Joystick S1 button read the THRrottle_Friction axis value divide it by 32 and then apply the offset Why Simply because my axis has 65536 values but my trim offers 2048 steps to cover the full range With 65536 32 2048 scale my axis value to a trim compatible value 30 60
26. IST 0 10 90 100 3 zones one from 0 to 10 one from 10 to 90 and one from 90 to 100 Examples KeyAxis amp Joystick JOYX 0 AXMAP2 LIST 0 10 90 100 PULSE 1 0 PULSE r when the joystick axis value enters the last 10 of the left deflection of the joystick pulse an l when entering the last 10 of the right of the axis generate an r keystroke Let s activate a boost b keystroke when the left Throttle passes over the afterburner trigger KeyAxis amp Throttle THR_LEFT 0 AXMAP1 LIST 0 80 100 0 PULSE b You will notice that the b keystroke is activated only when you enter the axis afterburner range 80 to 100 If there is a keystroke to shut down the boost we can pulse it when we reach the first zone If n is the keystroke to deactivate the boost KeyAxis amp Throttle THR LEFT 0 AXMAP1 LIST 0 33 100 PULSE n PULSE b 34 60 T A R G E T Script Editor Basics User Manual v1 5 LockAxis LockAxis is a Function that freezes the value of a particular axis You can use it in your main file and in an EXEC flag see advanced script By playing with layers and digital axes you can easily use one physical axis to control several digital axes without moving the DirectX axis value Syntax LockAxis 8 Device Axis name status LockAxis amp Throttle THR LEFT 1 will lock the Warthog left throttle LockAxis amp Throttle THR_LEFT 0 will unlock the Wart
27. Init amp EventHandle return 1 SetKBRate 32 50 SetKBLayout KB FR int EventHandle int type alias o int x T A R G E T Script Editor Basics User Manual v1 5 35 60 DefaultMapping amp o x Display a text message in the Script Editor Output Window The script lets you display messages in the dedicated area of the Script Editor This can be useful when you want to test a complicated logic structure or simply display your name while a file is launched Syntax printf text to print xa Example printf this file has been written by John Doe xa This function can be called from the main part of your script file If you want to execute it in a MapKey you will have to use the EXEC advanced function In that case the syntax becomes a little bit more complicated Syntax MapKey amp Device button name EXEC printf text you want to display xa Example MapKey amp Joystick S2 EXEC printf i ve just pressed S2 xa 36 60 T A R G E T Script Editor Basics User Manual v1 5 Advanced features Before you use the following code make sure that you have mastered the previous features Until now we have only used the predefined T A R G E T functions We are now going to start using the script s full power and flexibility Let s start with an incredible function EXEC EXEC Opening Pandora s box This is a powerful function which basically simply executes the associated f
28. Keyboard Clear Again A2 Keyboard CrSel Props A3 Keyboard ExSel A4 Left Control EO Left Shift E1 Left Alt E2 Left GUI E3 Right Control E4 Right Shift E5 Right Alt E6 Right GUI E7 NOTES These keys have various positions depending upon the region for which the keyboard is manufactured Europe 1 is typically in the AT 101 Key Position 42 next to the Enter key Europe 2 is typically in the AT 101 Key Position 45 between the Left Shift and Z keys 56 60 T A R G E T Script Editor Basics User Manual v1 5 In order to continue to improve its T A R G E T software Thrustmaster invites you to report any bugs related to use of the interface or the software s functionalities via a dedicated space at http target bugtracker thrustmaster com Attention this space is reserved for reporting bugs in the T A R G E T software only and must not be used for reporting hardware problems under any circumstances should you experience any problems with your hardware please contact Thrustmaster Technical Support Questions regarding other software such as games or operating systems which Thrustmaster has indicated are not supported are not accepted at this space either TECHNICAL SUPPORT If you encounter a problem with your product please go to http ts thrustmaster com and click Technical Support From there you will be able to access various utilities Frequently Asked Questions FAQ the latest versions of driv
29. THRUSTMASTER USER MANUAL FAST SCRIPT BASICS san fm KA CONTENTS EE Eeer KeySiroke DASICS xcs liste ivvbsapesetasisvdt indu as ki akki Eed EEN SEENEN AER aai a a E EEN Ua117970 705107 TAMSA First things to understand The Script EAITON sec cccistes des sa pant k ag kad ankk naa kava jagava dia The Edit button The Tools button Event Tester Device Analyzer Running a Script Script contents Minimal file contents Target imh iiianoe The TARGE T function tele et ET Linking axes with the MapAxis function ssh derenge aea keelde tarvet Lae E astud aidais MapAxis optional parameters Virtual Axis Rotation with RotateDXAxis Keystroke and DirectX button generation with the MapKey Function The null keystroke Single keystroke Combo keystrokes PULSE command DOWN and UP commande Generating a keystroke with USB codes Generating a DirectX button output LED and backlighting control Using HO D TEE Multiple outputs na single DUHOM tes ee og eet pousasocagivsoen snes saadd sosatie e esitaiat a pie aaaeaii idade TEMPO Command RT MapKeyU MD es rrentreterete bites Ee near ee nement nes MapK OyO eee TR A E A E Ea eee SEES rite MapKeylOQUMD 5535 vett i ud suh v t ikkes
30. alue applied One advantage of the T A R G E T trim is that it is fully adjustable and you can choose how you define trim values With T A R G E T we can Add or subtract a trim value in relation to an axis This is the normal way to manage a digital trim each time you press a button the axis offset is changed You can define the offset value and its direction Force a trim value We will use this value to reset trims for example In that case we will define the offset to have a zero value Read an axis value and apply it as a trim value to the same axis or another axis and apply some mathematics if needed Typical application don t worry if you can t understand the lines that is because the EXEC function is described later You can simply copy and paste them into your file Add or subtract a trim MapKey 8Joystick H1U EXEC TrimDXAxis DX Y AXIS 10 MapKey 8Joystick H1D EXEC TrimDXAxis DX Y AXIS 10 MapKey 8Joystick HIL EXEC TrimDXAxis DX X AXIS 10 MapKey 8Joystick H1R EXEC TrimDXAxis DX X AXIS 10 In these lines each time press a button it offsets the joystick X or Y axis by 10 points If hold the button down it will have no effect the trim value is only EXECuted once If want the offset value to loop until release the button will use the REXEC function please see later on in this manual for an explanation MapKey amp Joystick H1L REXEC 0 100 TrimDXAxis DX X AX
31. at switch is in the front position generates a left shift left control c combo T A R G E T Script Editor Basics User Manual v1 5 15 60 PULSE command Adding PULSE in front of a keystroke will transform it into a momentary key press even if you continue to press the button By default a pulsed keystroke is held for 25 milliseconds Example MapKey amp Joystick H4P PULSE F1 MapKey amp Throttle SPDF PULSE L ALT b NOTE If you are new to toggle switches you must remember that it is not a momentary button Once it has been switched to ON it will stay there If you ve mapped a keystroke on the ON position it will simulate the fact that you re still holding the key until you flick the switch off This can be a problem so to avoid holding down keys unnecessarily you can use the PULSE command DOWN and UP commands If you want to simulate the fact that you are still holding a keystroke you can use the DOWN command However you must be careful with this kind of function using it means that the order to simulate that you are holding the key will be given and maintained until you order the key to be released with the command UP So be sure to have an UP command associated with your DOWN command Example MapKey amp Joystick H1U DOWN a MapKey amp Joystick H1D UP a Now it s time for a little break Try to play with these functions build files and tes
32. ch positions have a name even those without a DirectX output For example on the Warthog throttle in the Autopilot panel the LASTE toggle switch offers 3 positions the middle one is null under DirectX the up one is DX 27 and the down one is DX28 With the script the middle position can receive a function this really makes programming easier In parallel to this manual you will find PDF files describing the names of all buttons for supported devices Printed DX Button i A Script name function number PATH DX 27 APPAT ALT HDG NA APAH ALT DX 28 APALT MapKey rule The MapKey function always uses this structure Syntax MapKey amp input device button name event Example MapKey amp Joystick TG1 al The null keystroke If you want to generate nothing it s very easy MapKey amp Joystick TG1 0 0 is the null event In some cases you may want to neutralize a button To do so simply ask it to execute 0 Single keystroke First we must define the button we want to program for example Trigger 1 We must tell MapKey that our button is on the Warthog joystick and its name is TG1 so MapKey amp Joystick TG1 We have defined that we want to map Trigger 1 on the joystick but we still have to specify the output we want Let s go for an a key MapKey amp Joystick TG1 al Note that the keystroke we want to generate is between 2 symbols to avoid any mix up These
33. d you may also have other legal rights which vary from State to State or Province to Province T A R G E T Script Editor Basics User Manual v1 5 59 60 End User License Agreement IMPORTANT Please read the following End User License Agreement before using the device The term Software refers to all executable programs managers libraries data files and to any documentation relating to the programs as well as the complete operating system included in the product The Software is licensed and not sold to the User exclusively for use complying with the terms of this License Agreement You hereby accept and agree to abide by the Terms 8 Conditions of this License Agreement If you disagree with the Terms amp Conditions ofthis License Agreement please do notuse the Software The Software is protected by international copyright laws and agreements as well as other international laws and agreements relating to intellectual property The Software excluding the software sub applications remains the property of Guillemot Corporation S A All rights reserved Guillemot Corporation S A grants only a limited and non exclusive right to use the Software Guillemot Corporation S A reserves the right to cancel this License Agreement in the event of failure to abide by its Terms amp Conditions License granted 1 The license is granted to the original Buyer alone Guillemot Corporation S A remains the sole owner and holder of the Software
34. e output from 6 to the end There is a simple solution to avoid this We know that the pulse duration is 25 milliseconds Let s wait for our first pulse to finish before pressing the next keystroke For this we will use the Delay command D Delay command If you insert a simple D in your CHAIN you will place the default delay duration between your 2 events You can define your own Delay duration by filling the with the duration of your choice in milliseconds MapKey amp Joystick H3U CHAIN PULSE a D PULSE b When testing this code with the Event Tester you will find that a is pressed and then released and then b is pressed and released As the Delay sets the time for the first key to be released you can create CHAINs with lots of keystrokes and combo keystrokes Remember if you want to separate the keystrokes pulses use a Delay The default delay and key pulse duration can be adjusted with the following function call SetKBRate 25 33 PULSE is 25 ms D is 33 ms T A R G E T Script Editor Basics User Manual v1 5 23 60 Example You can use a CHAIN to create automatic chaff and flare programs or manage the most important radio messages In most of the simulators to manage radio you press a key that opens a list of possibilities then you select a choice in a sub menu Let s imagine that to call your wingman you need to press the w key then order him to Engage F2 your cur
35. e can be several different requirements to match the input flight simulator software logic To support all cases we have created 2 ways to map the axes Note HOTAS Cougar users usually choose between 5 types of digital axis All HOTAS Cougar digital axis types can be achieved in a different way by T A R G E T AXMAP1 AXMAP 1 is the first one In mode 1 it is the direction of the axis that defines the output event keystrokes for example Use it when the simulator offers one key to increase a value and another key to decrease it Note AXMAP1 is able to simulate HOTAS Cougar types 1 5 6 Example You can adjust the engine rpm with Key Pad and Syntax KeyAxis 8 Device axis name layer s AXMAP1 number of zones up event down event optional center event Example KeyAxis amp Joystick JOYX 0 AXMAP1 5 PULSE r PULSE T T A R G E T Script Editor Basics User Manual v1 5 31 60 Or KeyAxis amp Joystick JOYX 0 AXMAP1 use AXMAP mode 1 5 Divide the axis range into 5 equal areas PULSE r when axis value is increasing pulse r in each area PULSE when axis value is decreasing pulse l in each area Moving the HOTAS Warthog joystick X axis from left to right will generate rrrrr Returning from full right to full left and then going full right again will generate ill Note the keystrokes have the PULSE flag associated to avoid the keys being held This use o
36. e perfect for this function Note You can also assign the master switches to different items The default behavior of the layers is momentary the layer is activated only when you press the master button that calls up the layer If you use a toggle switch as a master layer selector the U M D layers will work like toggled layers But if you use a T 16000m this only offers momentary buttons therefore you may have to press several buttons at the same time to work in the layers you want To manage this issue the layer can be defined as momentary or toggle Momentary you have to press a button constantly to access and use the layer s contents Toggle you simply briefly press a button to declare that you are now working in a specific layer Main layers The Main layers are called Up Middle and Down By default you program the Middle layer On the HOTAS Cougar we used to call up the U M and D layers with the Dogfight switch This switch is a 3 position toggle switch and perfectly suits our needs As it is a toggle switch the button stays in the position you ve just moved into you will declare that the UMD layer works as momentary as the button always selects the layer for you 20 60 T A R G E T Script Editor Basics User Manual v1 5 Sub layer Each layer has an internal sub layer knows as In Out for HOTAS Cougar owners This is traditionally used as a momentary layer activated from a button used as a kind of Shift You can use
37. er to stop You can run several REXECs at the same time this is why the first parameter of REXEC is a handle The handle is a reference number like an ID between 0 and 99 This way if you have several REXECs running you can specify the one you want to stop The second parameter of REXEC is a delay in milliseconds use it to define the repeat rate The smaller the value the faster the REXEC will loop REXEC is useful for trimming or simply to launch an event or a function that will loop Syntax REXEC Handle Delay code goes here optional RNOSTOP By default REXEC will loop until you release it You can also force it to loop until you order it to stop For this you will need to add the optional RNOSTOP To stop the REXEC you simply have to use StopAutoRepeat HANDLE number in an EXEC statement EXEC StopAutoRepeat 4 stop the REXEC number 4 Example MapKey amp Joystick H1L REXEC 4 100 TrimDXAxis MOUSE_X_AXIS 10 RNOSTOP MapKey 8Joystick H1R EXEC StopAutoRepeat 4 NOTE if you include an event that takes some time like a chaff and flare sequence be sure that your event is finished before you REXECute it In the next event we could have used 4 different handles but as we can t press all buttons at the same time we can use the same handle per axis MapKey 8Joystick HIL REXEC 0 100 TrimDXAxis DX_X_AXIS 5 MapKey 8Joystick H1R REXEC 0 100 TrimDXAxis DX_X_AXIS 5
38. ers and software that may help to resolve your problem If the problem persists you can contact the Thrustmaster products technical support service Technical Support By email In order to take advantage of technical support by email you must first register online The information you provide will help the agents to resolve your problem more quickly Click Registration on the left hand side of the Technical Support page and follow the on screen instructions If you have already registered fill in the Username and Password fields and then click Login By telephone ENGLISH i i 08450800942 Le KAO Charged atlocal rate United States ur ree 1 866 889 2181 Canada be 80887690 Denmark ib 0200884567 Sweden a Finland kii 913060 ree Monday to Saturday from 8 a m to 7 p m E Monday to Friday from 9 a m to 8 p m Saturday from 8 a m to 2 p m Eastern Standard Time Monday to Friday from 6 a m to 5 p m Saturday from 5 a m to 11 a m Pacific Standard Time Monday to Friday from 9 a m to 8 p m Saturday from 8 a m to 2 p m Eastern Standard Time Monday to Friday from 6 a m to 5 p m Saturday from 5 a m to 11 a m Pacific Standard Time Monday to Saturday from 9 a m to 8 p m English Monday to Saturday from 9 a m to 8 p m English Monday to Saturday from 10 a m to 9 p m English Hours of operation and telephone numbers are subject to change Please visit http ts thrustmaster com for the m
39. espective owners Illustrations not binding Contents designs and specifications are subject to change without notice and may vary from one country to another Made in China ENVIRONMENTAL PROTECTION RECOMMENDATION At the end of its working life this product should not be disposed of with standard household waste but rather dropped off at a collection point for the disposal of Waste Electrical and Electronic Equipment WEEE for recycling This is confirmed by the symbol found on the product user manual or packaging Depending on their characteristics the materials may be recycled Through recycling and other forms of processing Waste Electrical and Electronic Equipment you can make a significant contribution towards helping to protect the environment EE lease contact your local authorities for information on the collection point nearest you Reference 5075862 www thrustmaster com C 60 60 T A R G E T Script Editor Basics User Manual v1 5 Q Guillemot ORP O RA TI O N Thrustmaster is a division of the Guillemot Corporation group 5075862 2010 Guillemot Corporation S A rue du Ch ne H leuc 56910 Carentoir France 414 196 758 R C S Rennes
40. excluding the software sub applications and reserves all rights that are not expressly granted by this License Agreement The User is not allowed to sub license the rights granted by this License Agreement The User is allowed to transfer this License provided that the original Buyer retains no part of the Software and that the Transferee reads and accepts the Terms amp Conditions of this License Agreement The Buyer may only use the software on one computer ata time The machine readable part ofthe Software may be copied to another computer provided that the Software is deleted from the first computer and that it is impossible to use the Software on several computers atthe same time The Buyer hereby acknowledges and accepts the copyright belonging to Guillemot Corporation S A The copyright shall in no event be removed from the Software nor from any documentation whether printed or electronic provided with the Software 4 The License grants the User the right to perform one 1 copy of the machine readable part of the Software for archival purposes provided thatthe User also copies Software s copyright Except within the limits expressly allowed by this License Agreement the Buyer may not agree or allow any third party to agree to grant a sublicense provide or divulge the Software to other third parties allow use ofthe Software on several computers ata time perform alterations or copies of any kind reverse engineer decompile or modif
41. f AXMAP1 will be perfect for controlling the zoom factor of radar a camera or a throttle that is controlled by 2 keys AXMAP1 offers an optional center of axis event generation To use it keep in mind that the center position event is not a zone it is a value If there is a zone over the center position the event will not be generated This means that all odd zone numbers are incompatible with the center of axis events as our axis is divided into equal zones KeyAxis amp Joystick JOYX 0 AXMAP 1 use AXMAP mode 1 2 Divide the axis range into 2 equal areas PULSE r when axis value is increasing pulse r in each area PULSE when axis value is decreasing pulse l in each area PULSE c i Will generate rcr if you move the stick s X axis from full deflection left to full deflection right With KeyAxis amp Joystick JOYX 0 AXMAP1 use AXMAP mode 1 Fe Divide the axis range into 3 equal areas PULSE r when axis value is increasing pulse r in each area PULSE when axis value is decreasing pulse l in each area PULSE C JI You will only generate rrr if you move the stick s X axis from full deflection left to full deflection right The pulsed c is ignored Remember that you can use the Null Event 0 when you do not want to generate anything 32 60 T A R G E T Script Editor Basics User Manual v1 5 b 9 4 For these examples we have used simple events but
42. ge If Flag 1 contains something it is true if Flag 1 equal zero it simply doesn t exist In fact I m not asking if the Flag 1 is zero I m asking if Flag 1 has been created A flag is created only when it becomes true We could obtain the same results with this code MapKey 8Joystick 51 EXEC if flag1 ActKey PULSE KEYON a else ActkKey PULSE KEYON b For simple things like this remember that it can be achieved easily with EXEC Keep the flags for things that really need a memory or complex events Illustration Now we are going to manage a Flag used as a memory Let s imagine that we have an autopilot button like on the Warthog s Autopilot panel The first time you press it it activates the Autopilot sending the keystroke a On the second press you want it to deactivate the simulator autopilot sending shift a This is very easy with a SEQ and a MapKey MapKey amp Throttle APENG SEO a L_SHIFT a Now let s imagine that there are 2 different physical buttons to control the Autopilot one on the autopilot panel and another on the Left Thumb Button on the left throttle like in the real A 10 airplane for example We must synchronize them to be sure that they will produce the right output regardless of the button we press We will use a flag called autopilot The output of the 2 buttons will change according to the state of that flag Therefore each button must have 2 possible
43. h these 2 parameters Application example You can use it to make the throttle more or less sensitive when at high RPM You can use it to make the software afterburner trigger match the physical controller s trigger Syntax SetJCurve amp device axis name physical axe value DirectX output value The value and DirectX output value are in percentages Example SetJCurve amp Throttle THR LEFT 80 95 At 80 of the physical controller s axis travel the DirectX axis must have reached 95 of the axis value SetCustomCurve Sometimes you may need to build your own curve or add zones where the axis output value almost doesn t change or dead zones SetCustomCurve gives you the opportunity to do exactly what you want For this you just need to define a LIST of positions associated with the DirectX output value on an axis The curve is blended to match your points Values are in NOTE a SetCustomCurve Statement cannot be used in an EXEC function Syntax SetCustomCurve amp device axis name LIST Axis physical position 1 Axis output Value 1 Axis physical position 2 Axis output value 2 Examples SetCustomCurve amp Joystick JOYX LIST 0 0 25 25 50 50 75 75 100 100 create a perfect linear response SetCustomCurve amp Joystick JOYX LIST 0 0 45 50 55 50 100 100 create a deadzone in the middle of the axis between 45 and 55 SetCustomCurve amp Joystick JOYX LIST 0 0 25 50 50 0 75 50 100
44. he LED or backlight with an axis the Throttle friction control for example with Axmap2 please see page 27 Now you can create files that are almost egual to the Basic level of the GUI Let s move on and conguer the advanced level 18 60 T A R G E T Script Editor Basics User Manual v1 5 Using Macro Files What is a Macro A Macro can be described as a shortcut to a keystroke combination This mean that you can give a name to a specific keystroke in the macro file and from the main file simply call up that name There are two advantages to using macros they are much easier to read and are also easier to adapt if you use custom flight simulator software key mapping Example Instead of writing MapKey 8Joystick TG1 SPC You write MapKey amp Joystick TG1 Weapon Fire And in the macro file you will find define Weapon Fire USB Ox2C Weapon Fire The files used to store macro files are ttm files for Thrustmaster T A R G E T Macro If you want to use a macro file with your main TMC file you must call it up it must be stored in the same folder as your TMC file You only have to include the file at the beginning of the TMC Example include target tmh include FC2 MIG 29C Macros ttm int main if Init amp EventHandle return A declare the event handler return on error MapAxis amp Joystick JOYX DX X AXIS MapAxis amp Joystick JOYY DX WV AXIS Example of macro file contents Ly
45. hog left throttle Extra functions The script code also supports some useful functions These functions are used to give you more flexibility or help you to be as efficient as possible Launch software from a script It can be useful to launch the simulator or another application from the script As the is a special character from the code point of view we have to double it to get things working well Pay special attention to the and the way the function is built it s very easy to make a mistake here Place it just before your MapKey functions Syntax system spawn w software main folder exe shortcut Here are some examples system spawn w D DCS A 10C D DCS A 10C bin Launcher exe system spawn w D Rise of Flight bin_game release D Rise of Flight bin_game release rof_updater exe Reject a device from a virtual controller You can choose which devices will be included in the virtual controller If you want to keep one working 100 in DirectX mode simply reject it with the EXCLUDE function Syntax Configure amp Device name MODE_EXCLUDED This line must be placed at the beginning of file just after the first Example here only the Warthog Joystick and Throttle can be programmed include target tmh int main Configure amp HCougar MODE_EXCLUDED Configure amp T 16000 MODE EXCLUDED Configure 8LMFD MODE EXCLUDED Configure 8 RMFD MODE EXCLUDED if
46. ick HAD REXEC 1 6800 ActKey KEYON Chaff Flare program 1 RNOSTOP execute and loop chaff and flare program 1 Chaff Flare program 1 CHAIN PULSE INS D 400 PULSE INS D 400 PULSE INS D 400 PULSE INS D 400 PULSE DEL D 400 PULSE DEL D 400 PULSE DEL D 400 PULSE DEL contents of the chaff and flare program 1 int EventHandle int type alias o int x DefaultMapping amp o x This example was a little application with a simple function Remember that when things become very complex to write or repeat several times it s simply much better to create a function There is no ultimate function As things can be done in several ways the right one to use is the one you like the most Its clear that you can optimize things and sometimes divide the number of lines of code by 3 Most of the time once you ve finished writing your file you will already have new ideas about how to better manage the complex aspects Let s try another function and go back to our Flaming Cliffs 2 autopilot management We did this using a flag but there may be a function to simplify how we code this Somewhere in the autopilot flag program we have MapKey amp Throttle LTB CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a EXEC autopilot autopilot MapKey amp Throttle APENG CHAIN EXEC if autopilot ActKey PULSE KEYON a else ActKey PULSE KEYON L SHIFT a EXEC
47. if you want you can use our usual MapKey functions like CHAIN SEQ SEQ inside a CHAIN KeyAxis amp Joystick JOYX 0 AXMAP1 2 CHAIN LOCK PULSE h D PULSE e D PULSE T D PULSE T D PULSE o LOCK CHAIN LOCK PULSE g D PULSE o D PULSE 0 D PULSE d D PULSE b D PULSE y D PULSE e LOCK CHAIN LOCK PULSE e D PULSE c D PULSE h D PULSE o LOCK AXMAP2 AXMAP2 is the second Digital axis mode AXMAP2 generates functions that only depend on the zone Use this mode when the simulator offers shortcuts to direct parameter values or to control a cursor Note AXMAP2 is able to simulate HOTAS Cougar types 2 3 4 Example if the engine s RPM is controlled with the 0 1 2 3 4 5 6 7 8 9 keys Syntax KeyAxis amp Device axis name layer s AXMAP2 number of zones event1 event 2 event3 Note the number of zones must be equal to the number of events Example KeyAxis amp Throttle THR RIGHT ioumd AXMAP2 5 PULSE KP5 PULSE KP4 PULSE KP3 PULSE KP2 PULSE KP1 Or KeyAxis amp Throttle THR_RIGHT ioumd AXMAP2 5 PULSE KP 5 PULSE KP4 PULSE KP3 PULSE KP2 PULSE KP1 Moving the right Warthog Throttle from the IDLE position to MAX will generate 2345 the zone number 1 is ignored as you started from that zone T A R G E T Script Editor Basics User Manual v1 5 33 60 Moving the right Warthog Throt
48. int list1 list2 declaring our custom LIST NOTE Our functions are declared with the int syntax This one must be placed before the int main With one int we have introduced 2 different functions As usual we ve finished the line with a Then we need to define the contents of the functions list LIST 0 30 45 50 55 50 100 70 list2 LIST 0 35 45 50 55 50 100 65 All we have to do now is call up our list in our EXEC statement MapKey amp Throttle CSD EXEC SetCustomCurve amp Throttle SCX list1 MapKey amp Throttle CSU EXEC SetCustomCurve amp Throttle SCX list2 Here is the complete file If we press CSU and CSD we will change the sensitivity of the SCX and SCY axes include target tmh int list1 list2 declaring our custom LIST int main if Init amp EventHandle return 1 A declare the event handler return on error MapAxis amp Throttle SCX DX_XROT_AXIS mapping axis MapAxis amp Throttle SCY DX_YROT_AXIS mapping axis listi LIST 0 30 45 50 55 50 100 70 defining listi list2 LIST 0 35 45 50 55 50 100 65 defining list2 MapKey 8Throttle CSU EXEC SetCustomCurve amp Throttle SCX list1 SetCustomCurve amp Throttle SCY list1 changing axis behaviour MapKey amp Throttle CSD EXEC SetCustomCurve amp Throttle SCX list2 SetCustomCurve amp Throttle SCY list2 changing axis behaviour int EventHandle int type alias 0 int
49. ir or replacement of the Thrustmaster product The consumer s legal rights with respect to legislation applicable to the sale of consumer goods are not affected by this warranty This warranty shall not apply 1 if the product has been modified opened altered or has suffered damage as a result of inappropriate or abusive use negligence an accident normal wear or any other cause not related to a material defect or manufacturing flaw 2 in the event of failure to comply with the instructions provided by Technical Support 3 to software not published by Guillemot said software being subject to a specific warranty provided by its publisher Additional warranty provisions In the United States of America and in Canada this warranty is limited to the product s internal mechanism and external housing Any applicable implied warranties including warranties of merchantability and fitness for a particular purpose are hereby limited to two 2 years from the date of purchase and are subject to the conditions set forth in this limited warranty In no event shall Guillemot Corporation S A or its affiliates be liable for consequential or incidental damage resulting from the breach of any express or implied warranties Some States Provinces do not allow limitation on how long an implied warranty lasts or exclusion or limitation of incidental consequential damages so the above limitation may not apply to you This warranty gives you specific legal rights an
50. ke the Joystick X and Y axes we will use SetSCurve If it is a Slider axis like a Throttle or brake we will use SetJCurve SetSCurve SetSCurve is the function used to fine tune your Joystick axis and rudder axes response TE enone axis name left deadzone center deadzone right deadzone curve scale SetSCurve 8 Throttle SCX 0 30 0 0 4 Or SetSCurve amp Joystick JOYX 5 Left Deadzone set to 5 2 Center Deadzone set to 2 5 Right Deadzone set to 5 eg Curve set to 3 0 Scale zoom neutral SE The Deadzones are value ranges where nothing happens if the axis cursor reaches the zone The value is a of the total axis range This higher the value the larger the Deadzone Be careful with deadzones as you can easily negatively impact your controller s behavior The center Deadzone You can use this one if you want to ignore small axis movements when the axis cursor reaches the center area usually set between 0 to 5 The Left and Right Deadzones Increasing these areas will make the maximum and minimum axes values reached before the physical limits of the mechanical axis travel The result is that the stick sensitivity increases usually not used The Curve parameter defines the controller s sensitivity With this parameter you choose to make the stick Less sensitive in the center position but more sensitive at the extreme axis values More sensitive in the center position but with more precise con
51. keystroke generation axis and curve adjustments which are the essential reguirements Using the Thrustmaster functions makes the script easy to read Everyone can use it and while it may look complicated due to the number of characters used it s really very simple Example MapKey amp Joystick TG1 x If you think that this line generates an x keystroke when you press the Joystick s TG1 trigger first step button you are correct and are ready to learn more Note for HOTAS Cougar users The new script is totally different from the Cougar syntax You will probably feel at home quickly but try to put the old script out of your mind as it could reduce your creativity The T A R G E T script is a lower level code and as such is much more flexible DirectX limits Whatever the number of devices inside the virtual controller this controller will never be able to declare more axes and DirectX buttons than the official DirectX limits 32 buttons and 8 axes This simply means that if you have more than 8 axes available on the real controllers you cannot use all the buttons and axes programmed in the DirectX mode Any unused axes and buttons in DirectX can be used as digital axes and keystroke generators Major rules Respect the syntax to begin with you will probably spend more time solving syntax errors than writing your file Always remember that the script is case sensitive and that when you open a y
52. laced in the same part of the script as your MapKey functions initialize backlight power ActKey PULSE KEYON LED amp Throttle LED INTENSITY 129 set Throttle backlight power to middle ActKey PULSE KEYON LED amp LMFD LED INTENSITY 129 set left MFD backlight power to middle ActKey PULSE KEYON LED amp RMFD LED INTENSITY 129 set right MFD backlight power to middle initialize LED status all OFF ActKey PULSE KEYON LED amp Throttle LED ONOFF LED CURRENT LED1 set LED 1 OFF ActKey PULSE KEYON LED amp Throttle LED ONOFF LED_CURRENT LED2 set LED 2 OFF ActKey PULSE KEYON LED 8 Throttle LED ONOFF LED CURRENT LED3 set LED 3 OFF ActKey PULSE KEYON LED amp Throttle LED_ONOFF LED_CURRENT LED4 set LED 4 OFF ActKey PULSE KEYON LED 8 Throttle LED ONOFF LED CURRENT LED5 set LED 5 OFF ActKey PULSE KEYON LED 8LMFD LED ONOFF LED CURRENT LED1 set left MFD LED 1 OFF ActKey PULSE KEYON LED 8LMFD LED ONOFF LED CURRENT LED2 set left MFD LED 2 OFF ActKey PULSE KEYON LED 8RMFD LED ONOFF LED CURRENT LED1 set right MFD LED 1 OFF ActKey PULSE KEYON LED 8RMFD LED ONOFF LED CURRENT LED2 set right MFD LED 2 OFF To take full advantages of the LED possibilities we recommend that you learn the multiple output function call CHAIN SEQ Once you re done you will be able to interact with the simulator and play with LEDs at the same time with just one action on a button You can also control t
53. mp Joystick 51 SEQ a PULSE b eil A SEQ can be included in the whole MapKey and MapKeyR family MapKeylOUMD amp Joystick H2U Hat2 on the joystick UP SEQ KP1 KP2 KP3 KP4 GC id e f Please note that you can call up a Sequence inside another Sequence to allow you to construct more complex structures like in the following example although it is unlikely that you will need to do so T A R G E T Script Editor Basics User Manual v1 5 25 60 MapKeyR amp Joystick TG1 SEQ SEQ 1 2 RH SHIFT 5 This construction will generate the following sequence of key pulses on each TG1 release 1 S 2 S 1 S You can also call up a CHAIN For example MapKey 8Joystick H2U GEO CHAIN PULSE KP1 D PULSE KP2 First CHAIN CHAIN PULSE KP3 PULSE KP4 Second CHAIN i CHAIN and SEQ can be combined to suit your needs including one inside the other to obtain complex behaviors For instance you can toggle the a key on TG1 on first action on TG1 press a on second action on TG1 release a then press b after the default delay time MapKey amp Joystick TG1 CHAIN SEQ DOWN a UP a DU PULSE b 26 60 T A R G E T Script Editor Basics User Manual v1 5 Axes We already have learned to associate physical axes with DirectX axes Now we will fine tune the behavior of axes The first point is to define the kind of axis we want to edit If it is a mechanically centered axis li
54. n store any kind of value letter or number You must also give your flag a name Therefore it is much more comfortable to use compared to the old Cougar script it just feels easier Depending on the contents of the flag you can create an event As the flag content is not limited to 0 or 1 we can easily avoid using lots of flags The first thing to do is to define your flag Do this at the start of the file just after including your tmh file Just type char name of your flag char simply defines that the box you are about to name will contain characters Choose a name related to the function you re managing such as Autopilot status Master weapon status Etc By default when launching the configuration the flag will be null You may need to fill it in automatically or by a human action This is not always necessary but it is better to be sure that everything starts the way you want it to Autopilot 0 will start your configuration with the Autopilot flag set to 0 Autopilot 1 will start your configuration with the Autopilot flag set to 1 In the following example the Warthog Joystick S4 switch is used to secure the S1 button output If S4 isn t pressed S1 will have no output For this case flags aren t chosen just with simplicity in mind a simple EXEC can achieve this function without any flag We will use an if statement as a condition for the execution of an ActKey Depending on the Flag
55. n with the script in fact we have included a number of functions that will make this simple If you are familiar with the HOTAS Cougar script you will notice that all the syntax is new and that there are few differences that just make things more comfortable and flexible Note With these functions you can already build powerful configurations but if necessary you can create your own functions or rewrite a set of features as a unigue function The possibilities are huge and cannot be covered in a single manual Once you have learned and used all of the predefined functions and want to look into the new language in more detail we recommend that you spend some time discovering the C programming language With a few ideas a bit of logic and some basic C knowledge you will realize the real power of the T A R G E T script This manual provides a few samples as examples each one will show how to achieve your goals sometimes using different methods This virtual device and the new language let us do everything we want to do We can create thousands of programming layers link to external code and so on But these features have a price and can guickly become complex This is exactly what 99 of users hate so don t get too hung up on code Instead focus on your main reguirements With a little practice you will find script editing powerful and faster to use than the graphical user interface The functions provided were created to easily manage
56. nctions or events inside of it nothing will happen if you move an axis or press a button it s just the minimum code needed to create a valid T A R G E T script file include target tmh here we link this file to the file that contains the default Thrustmaster function code int main if Init 8EventHandle return 1 declare the event handler return on error script and function functions go here and before the int EventHandle int type alias 0 int x DefaultMapping amp o x If this appears unclear to you don t worry All we need to do is fill in the line script and function functions go here with the functions provided NOTE When writing a file try to consider the people who will read it The order of functions is free but try to avoid combining too many function types as this will make your file harder to read Target tmh To get your function to work you must link your program to a file that contains the code for the Thrustmaster functions This file is called a header you will need to call it up in all your files and it will be the first line of the file It is called Target tmh The header files are used to store preformatted functions that you will call up in your main file This makes the main file s contents lighter and easier to read We use headers to store standard tools For these examples we will use a HOTAS Warthog but don t worry since except the names of buttons and axe
57. ns We could cheat using SEQuence it may make the things very easy to write But what we want is a little bit more complex We want to have our list of modes act like a sequence but with the ability to choose the direction of the SEQuence For this we need to use a custom function and an index We will create a function called listmode that contains the SEQuence And we will use the index to jump between each event in the SEQuence 50 60 T A R G E T Script Editor Basics User Manual v1 5 On the buttons used to choose the direction of the SEQuence jump we will EXEC the index to define the offset value and apply it to the Seguenced function Here is the code include target tmh include FC2 MIG 29C Macros ttm int listmode index master modes list function 8 index int main if Init amp EventHandle return 1 listmode SEG 8 Gunsight Reticle Switch 7 Air To Ground Mode D Longitudinal Missile Aiming Mode 5 Close Air Combat HMD Helmet Mode 4 Close Air Combat Bore Mode 2 Close Air Combat Vertical Scan Mode 2 Beyond Visual Range Mode 1 Navigation Modes China Hat is used for Modes selection MapKey amp Throttle CHF EXEC index index 1 8 ActKey KEYON PULSE X listmode index forward MapKey 8Throttle CHB EXEC index index 7 8 ActKey KEYON PULSE X listmode index 7 is 8 1 backward int EventHandle int type alias o int x DefaultMapping
58. ntHandle int type alias 0 int x DefaultMapping amp o x You may notice that 80 of the code for the operation of the 2 buttons is similar There is a way to make this simpler to write and manage We have brainstormed from the button point of view but we can also manage the autopilot We ve seen that from the autopilot it was a simple SEQuence between 2 outputs We will transform this SEQuence into a function and define the buttons used to call it up T A R G E T Script Editor Basics User Manual v1 5 45 60 Creating your own function Creating a function is a good way to turn complex writing into something simple or to get around technical limits But before we create the function we need to define its role and contents Let s start with a simple case You ve written the following line and it doesn t work MapKey amp Throttle CSD EXEC SetCustomCurve 8 Throttle SCX LIST 0 35 45 50 55 50 100 65 It doesn t work because inside your EXEC you have used a LIST statement and this one is simply forbidden in an EXEC The solution is to create a function that contains your LIST Then you will simply call up the function in your EXEC Our file uses 2 LISTs to change the behavior of an axis We cannot avoid using LISTs as we are creating custom curves So let s create these functions We will call them list1 and list2 The syntax to declare the 2 functions will be the following
59. ogram 1 Chaff Flare program 1 CHAIN PULSE INS D 400 PULSE INS D 400 PULSE INS D 400 PULSE INS D 400 PULSE DEL D 400 PULSE DEL D 400 PULSE DEL D 400 PULSE DEL Now that the program is ready we need to associate it with our buttons We want the function to loop so we will use REXEC The program uses 2800 milliseconds then we want a break of 4 seconds 4000 milliseconds we must REXECute our function every 4000 2800 6800 milliseconds For H4U MapKey 8Joystick HALL REXEC 0 6800 ActKey KEYON Chaff Flare program 1 For H4D MapKey 8Joystick HAD REXEC 1 6800 ActkKey KEYON Chaff Flare program 1 RNOSTOP And to stop the automatic loop MapKey amp Joystick H4P EXEC StopAutoRepeat 0 Now all we have to do is to declare our Function before the int main int Chaff_Flare_program_1 we declare our new function T A R G E T Script Editor Basics User Manual v1 5 47 60 And here is the complete file include target tmh here we link this file to the file that contains the default Thrustmaster function code int Chaff Flare program 1 we declare our new function int main if Init amp EventHandle return 1 MapKey 8Joystick H4P EXEC StopAutoRepeat 1 stop repeating chaff and flare program 1 MapKey 8Joystick H4U REXEC 0 6800 ActKey KEYON Chaff Flare program 1 execute and loop chaff and flare program 1 until release the button MapKey amp Joyst
60. ommand that gives you the ability to have multiple outputs by pressing a button once CHAIN provides more possibilities than just generating several events on one action it also defines the timing of those events with the Delay and Lock commands please see further along in this manual for more details CHAIN PULSE a PULSE b this chain generates a and b momentary keystrokes Let s place our CHAIN into a MapKey function Syntax MapKey 8 Device button name CHAIN event 1 event2 Example MapKey amp Joystick H3U CHAIN PULSE a PULSE b When press the Hat 3 Up direction on the joystick a and b are going to be pulsed If you test this line with the Event Tester software you will notice that a and b are pressed at the same time then released together This means that if you use several combo keystrokes in your CHAIN they will be mixed up To avoid this use the Delay see later If you remove the PULSE for the b keystroke and still hold the HAT3 button Up b will be held until you release the button To avoid key holding you can simply use the PULSE command You can put an unlimited number of events in a chain but there is a computer hardware limitation The keyboard only supports 5 to 6 keys pressed at the same time and we have seen that our chain presses the keys at the same time Therefore if a CHAIN contains more than 5 keystrokes Windows can simply ignore th
61. or Basics User Manual v1 5 5 60 Example If I press the L key quickly the Event Tester will display Key press L Key release L Settings Clear Keyboard and mouse events MIKey Press L Key Release L 88ms If we use a combo keystroke such as left control L we will get Key press L CTRL Key press L Key release L CTRL Key release L Settings Clear Keyboard and mouse events Pressed keys Key Press LCTL Key Press L Key Release L 112ms Key Release LCTL 488ms This is a basic but useful tool to verify that the button behaves in the way that you want 6 60 T A R G E T Script Editor Basics User Manual v1 5 Device Analyzer The Device Analyzer is used to check DirectX button and axis mapping By left clicking the button in the top left of the window you can select a device to check If you have a script configuration running you can select the virtual combined controller The display will then be divided in 2 parts On the left the window displays the real controller s status On the right the window shows the virtual controller s DirectX outputs FRA d iouog zeg gogog Wl el kad Sen Everts ODE nn er SA RS 28 27 28 29 20 With the Device Analyzer you can easily view the effect of an axis mapping a curve and other axis fine tuning features T A R G E T Script Editor Basics User Manual v1 5 7 60 Running a script It
62. or a flag have been used This is something that s easy to manage include target tmh int count init with value 0 int main if Init amp EventHandle return 1 MapKey amp Joystick TG1 EXEC count count 1 add 1 unit to count if count is greater than 5 hits 6 hits as we start from zero pulse d Key MapKey 8Joystick S2 EXEC if count gt 5 ActKey KEYON PULSE d MapKey 8Joystick S3 EXEC count 0 reset the count event handler int EventHandle int type alias 0 int x DefaultMapping amp o x Math exercise With the script you re also able to use some math to correct or solve some issues We ve seen that the RotateDXAxis parameter was helpful to simulate a rotation of the handle for a center mounted stick If you use high angles you may notice that it becomes impossible to reach the corner of the axes range of values This can be solved with the scale parameter but you may have to try several times in order to get the right value Let s let the script calculate the right scale value for you depending the virtual rotation you ve defined include target tmh define angle 15 set the virtual rotation angle int main if Init amp EventHandle return 1 SetKBRate 25 33 MapAxis amp Joystick JOYX DX X AXIS AXIS NORMAL MAP ABSOLUTE map the X axis MapAxis amp Joystick JOYY DX Y AXIS AXIS NORMAL MAP ABSOLUTE map the Y axis SetSCur
63. ost up to date Technical Support contact information FRANCAIS Canada 1 866 889 2181 Gratuit 02 99 93 21 33 France Num ro fixe France Telecom non surtax Tarif selon op rateur i 0842 000 022 Se Tarif d une communication locale i 078 16 60 56 Eee Tarif d une communication nationale Luxembourg SE Du lundi au samedi de 7h 14h Heure de l Est Du lundi au samedi de 4h 11h Heure du Pacifique Du lundi au samedi de 9h 20h Du lundi au samedi de 9h 20h Du lundi au samedi de 9h 20h Du lundi au samedi de 9h 20h Horaires et num ros de t l phone susceptibles de changer Veuillez consulter http ts thrustmaster com pour obtenir une liste jour T A R G E T Script Editor Basics User Manual v1 5 57 60 DEUTSCH Deutschland 08000 00 1445 Montag bis Freitag 9 00 bis 20 00 Uhr Kostenlos Samstag 9 00 bis 13 00 Uhr und 14 00 bis 18 00 Uhr 0842 000 022 Montag bis Freitag 9 00 bis 20 00 Uhr sele Zum Preis eines Ortsgespr chs Samstag 9 00 bis 13 00 Uhr und 14 00 bis 18 00 Uhr Gesch ftszeiten und Telefonnummern k nnen sich ndern Bitte besuchen Sie f r die aktuellen Kontaktinformationen des Technischen Supports http ts thrustmaster com NEDERLANDS Van maandag t m vrijdag van 9 00 tot 13 00 en van 14 00 tot 18 00 0900 0400 118 Nederlands Kosten van lokaal gesprek Van maandag t m zaterdag van 9 00 tot 20 00 Engels Bedrijfsuren en telefoonnummers kunnen gewijzigd worden Ga naa
64. ou must close it with a This is also true for a The script is a real programming language The functions included allow you to use it easily but if you go into more detail this will be a good way to start learning to program in C T A R G E T Script Editor Basics User Manual v1 5 3 60 The Script Editor The script is made up of text only but we ve built a dedicated editor to make reading and writing easier You can access it from the Windows desktop or Start menu it s called the T A R G E T Script Editor The contents of the Script Editor are simple On top there is the toolbar To the left are the files used or linked to your script The script is in the main area The lower section contains the output window Finally there is a single line called the status bar The toolbar is used to manage and test files EI This is a shortcut to save the file Lets you Undo and Redo a script content modification bi Left click on the Menu icon to open a list of available file management actions Open Save Save As Close Print etc The Edit button Clicking on the Edit button will give you access to the traditional text editing tools Copy will store in memory a text selection that you ve selected Cut will store in memory and delete from the script a text selection that you ve selected Paste will insert the text selection stored in memory from your previous Cut or
65. r http ts thrustmaster com voor de actuele contactgegevens van Technical Support Nederland ITALIANO costo massimo alla riposta de 0 1 Euro Gli orari di reperibilit e i numeri telefonici sono soggetti a modifiche Per conoscere le informazioni pi aggiornate su come contattare il Servizio di Assistenza Tecnica ti preghiamo di visitare il sito http ts thrustmaster com ESPANOL Las horas de funcionamiento y los n meros de tel fono pueden cambiar En http ts thrustmaster com se puede obtener la informaci n de contacto de Soporte t cnico mas actualizada 58 60 T A R G E T Script Editor Basics User Manual v1 5 WARRANTY INFORMATION Worldwide Guillemot Corporation S A Guillemot warrants to the consumer that this Thrustmaster product will be free from material defects and manufacturing flaws for a period of two 2 years from the original date of purchase Should the product appear to be defective during the warranty period immediately contact Technical Support who will indicate the procedure to follow If the defect is confirmed the product must be returned to its place of purchase or any other location indicated by Technical Support Within the context of this warranty the consumer s defective product will at Technical Support s option be either repaired or replaced Where authorized by applicable law the full liability of Guillemot and its subsidiaries including for indirect damages is limited to the repa
66. rate the other output This is a feature used on modern fighters Syntax TEMPO key1 key2 delay delay is optional 500 milliseconds is a good value Example MapKey amp Joystick TG TEMPO x wll short press X long press Y MapKey amp Joystick TG1 TEMPO x y 1000 At pressed for more than 1 second Layers Another solution to multiply the number of functions on a button is to use layers Using layers is like using several parallel programs You select the layer you want to use by an action on a master button The layer selector can be a single button or several buttons but you will have to set the nature of the button Keep in mind that in order to access a layer the associated master button must be pressed For a complete description of the layers we suggest you to read the dedicated GUI pages in the T A R G E T GUI manual HOTAS Cougar users know this as I O U M D modifiers T A R G E T is dedicated to Thrustmaster flight controllers There are a lot of control possibilities in using Master layer selector switches On the HOTAS Cougar TAS we recommend using the Throttle s 3 position switch called Dogfight and the S3 Switch on the Joystick On the HOTAS Warthog Throttle we recommend using the 3 position Boat Switch and S4 the Paddle switch on the Joystick On the T16000M any button on the base could do the job On the MFD Cougar the GAIN SYM BRT and CON rocker switches ar
67. rent target F3 With the Warthog Throttle radio switch you can use one of the directions to create a shortcut button to order your wingman to attack your current target Instead of 3 keys to press successively you will only have one button to press You must write this line of code MapKey amp Throttle MSD CHAIN PULSE w call wingman D PULSE F2 Engage radio Menu D PULSE F3 My current Target Or this way MapKey amp Throttle MSD CHAIN PULSE w D PULSE F2 D PULSE F3 wingman attack my target shortcut If the keystroke program is generated too quickly for the simulator simply increase the delay value like this for example MapKey amp Throttle MSD CHAIN PULSE w call wingman D 50 PULSE F2 Engage radio Menu D 50 PULSE F3 My current Target JI Sometime you must protect your CHAIN keystrokes from any keyboard disturbance All other keystrokes generated from other buttons will have to wait for completion or specific parts of the CHAIN before any other keystroke events are generated To achieve this you simply use the LOCK command LOCK Command The LOCK command protects your keystroke generation from others keystroke generated events This way your chain cannot be broken by another event Syntax At the beginning of the area you wish to lock LOCK Keystroke Atthe end of the locked area LOCK Examples MapKey 8Joystick H2U CHAIN LOCK KP1 KP2 LOCK 24 60 T
68. s other USB devices share the same language T A R G E T Script Editor Basics User Manual v1 5 9 60 The T A R G E T function Toolbox Linking axes with the MapAxis function The first thing to do is to map physical controller axes to virtual controller axes DirectX has 8 axes We can link them to any controller axes To do so we will use the MapAxis command This function maps a physical axis over a virtual one By default all physical axes are unmapped We will focus on axis response and form later in this manual Syntax MapAxis amp lnput device physical axis name dx axis name option1 option2 Table of Axis names Product Axis Name DirectX Name E HOTAS HOTAS Script Axis Name WARTHOG COUGAR T 16000M DX X AXIS JOYX JOYX JOYX DX_Y_AXIS JOYY JOYY JOYY DX ZROT AXIS THR LEFT RUDDER RUDDER DX Z AXIS THR RIGHT THROTTLE DN XROT AXIS SCX RDR X RY DX YROT AXIS SCY RDR Y SliderO DX_SLIDER_AXIS THR_FC MAN_RNG THROTTLE Throttle DX_THROTTLE_AXIS ANT_ELEV MOUSE X MOUSE_X_AXIS MOUSE_X_AXIS MOUSE_X_AXIS MOUSE_X_AXIS MOUSE Y MOUSE_Y_AXIS MOUSE_Y_AXIS MOUSE_Y_AXIS MOUSE_Y_AXIS Let s start by linking the Warthog joystick X axis to the DirectX X axis First we need to specify the name of USB controller hosting the axis MapAxis amp Joystick Then the physical axis name MapAxis amp Joystick JOYX And finally the DirectX axis name
69. s a custom function This is called ActKey ActKey is compatible with our previous flags like PULSE L SHIFT ActKey KEYON x Will press and hold the x key ActKey x Will release the x key You must use KEYON flag to turn the key On ActKey PULSE KEYON A Will pulse the a key ActKey PULSE L SHIFT KEYON b Will pulse L shift b combo ActKey PULSE KEYON autopilot Will activate the autopilot function Example MapKey amp Joystick S2 PULSE MapKey amp Joystick S2 EXEC ActKey PULSE KE YON j The only difference is that in the second line we have used EXEC to launch script code instead of using the usual function Most of the time we will use ActKey as the result of an input condition for example a logical statement Notice the way a Switch s physical position is written in the first EXEC MapKey 8Joystick 54 EXEC if Joystick TG1 ActKey PULSE KEYON a x MapKey 8Joystick 54 EXEC MapKey 8Joystick TG1 PULSE a 3 Note You can also use USB codes inside an ActKey 42 60 T A R G E T Script Editor Basics User Manual v1 5 Logical Flags A Logical Flag is a box used to store a value With some basic logic reguests you can create events that depend on the content of the Flag Note Cougar had 32 programmable Logical Flags The flag value was zero or one With T A R G E T there are no limits on the number of flags and the flag ca
70. stic Autopilot handling with the dedicated panel on the HOTAS Warthog base The solution is to change the Autopilot Engage Disengage button output depending on the LASTE switch position The LASTE toggle switch position will define the APENG output keystroke MapKey amp Throttle APPAT EXEC MapKey amp Throttle APENG L_ALT 6 MapKey amp Throttle APAH EXEC MapKey amp Throttle APENG L_ALT 2 MapKey amp Throttle APALT EXEC MapKey amp Throttle APENG L_ALT 4 We do not even need to apply a default MapKey function to APENG as this is done by the LASTE toggle switch However you will need to move it once to execute one of the functions to get the APENG that generates a keystroke If you EXEC a function generating an event linked to a button state the function will be loaded in the memory but will be executed only when the related button is pressed To keep your CPU s resources for your flight simulator software using SEQ CHAIN EXEC TEMPO AXIS LIST inside an EXEC is forbidden This limit can be overcome by creating a function which contains the SEQ CHAIN EXEC TEMPO AXIS LIST and calls up that function in the EXEC statement please see the Creating your own function chapter in this manual for more details 38 60 T A R G E T Script Editor Basics User Manual v1 5 REXEC REXEC is a function built to repeat an EXEC until you want to stop by releasing the button or sending the ord
71. t hargi khmat eika k ngu dna ka d aa rada Generating an event when releasing a button with MapKeyR CHAIN function Generating events at the same time DO Delay command LOCK Commande SOQUENCES SELSCUNVE ANUMAST SOU CUVG wiiiscs stars street tete iles SetCustomCurve eee ee eect Axis control with buttons AXIS MAMA NAG ER en EE KeyAxis Generating events from an axis sisi AXMAP1 Che e EE Launch software from a Script Reject a device from a virtual controller Display a text message in the Script Editor Output Window Advanced TEE EXEC Opening Pandora s box Managing functions Detert al Script Syntax The following Keywords are supported Operators iesen ce ice Fh kala kata tanke Ek EL taala sae cob anes ewes sa ae USA nee km aaa a at A taga ta EEE E Generating keystrokes with pure script sisi Logical FlagS E Illustration Creating your own function T A R G E T Script Editor Basics User Manual v1 5 1 60 Basics Keystroke basics Introduction You can write your own configuration files without the T A R G E T graphical user interface GUI To do so we will use our own programming language which is usually called script This language follows on directly from a document written
72. t them out Once you feel comfortable you can move on to the next functions Generating a keystroke with USB codes Generating a simple keystroke isn t the best solution As national keyboard mapping is different an a can be read as a q by the software To avoid this problem we can use USB codes the USB codes refer to the physical position of keys on an American keyboard and not on what s printed on it This means that using USB codes is the best way to create a file which is compatible with different international keyboards They are not complicated to use but they make the file harder to read Therefore we recommend that you use comments to note the associated keystroke Syntax MapKey amp input device button name usb event MapKey 8Joystick TG2 USB 0x07 usb code for D In this example Trigger 2 generates a d 07 is the hexadecimal USB code for d key You can find these codes in the appendix to this manual To call up a USB code the syntax is USB OxXX 16 60 T A R G E T Script Editor Basics User Manual v1 5 Generating a DirectX button output For this we simply use the MapKey function again we just have to replace our USB code or keystroke with the DirectX button number Don t forget that DirectX only offers you buttons 1 to 32 8 directions on the hat Syntax of DirectX buttons DX1 DX2 DX3 DX32 Syntax of DirectX Point Of View button DXHATUP DXHATUPRIGHT DX
73. tch of functions A second press will execute another batch of functions that return to the default settings MapKey amp Joystick 54 SEQ open the sequence EXEC open the first EXEC SetSCurve amp Joystick JOYX 0 0 SetSCurve amp Joystick JOYY 0 0 close the first EXEC EXEC open the second EXEC SetSCurve amp Joystick JOYX 0 0 0 0 0 SetSCurve amp Joystick JOYY 0 0 0 0 0 close the second EXEC close the Sequence close the MapKey 19 0 0 0 5 0 Sp T A R G E T Script Editor Basics User Manual v1 5 37 60 This example was just a little demonstration of the capabilities of EXEC You could also write this by using a SEQuence that contains 2 CHAINs of 2 EXEC per CHAIN one per axis But this way seems to be simpler With EXEC you can also Remapall axes swap move revert work as absolute or relative etc Change the settings for axes Deadzones curves Scale etc Change digital axis behavior Change all your T A R G E T functions etc Avoid using some logical flags In short simply by calling up EXEC you can apply a totally new configuration to your controller You can also use EXEC as a kind of mini layer or dynamic key mapping For example in DCS Flaming Cliffs 2 the autopilot modes are directly activated by dedicated keystrokes This is not realistic behavior for an autopilot and it makes the keystroke delicate to manage if you want to have reali
74. te the autopilot LTB APENG The 2 buttons must be synchronized and the autopilot ON keystroke depends on the LASTE 3 position toggle switch So when we press the LTB or APENG for the first time we want to generate a keystroke that depends on the LASTE switch position There are several ways to manage this Only with logical flags using one flag for the Autopilot status and one flag for the toggle switch position playing with 3 values like 1 2 3 inside the flag This is long and boring to write Using flags and a function flags to manage the toggle switch position and a function to manage autopilot status keystroke output we can also do the opposite Using 2 functions a new function that manages the toggle switch positions called up inside the autopilot function T A R G E T Script Editor Basics User Manual v1 5 49 60 We will keep our toggling SEQuence but the autopilot ON keystrokes are going to be replaced by a function linked to the LASTE toggle switch The result of this function will depend on the LASTE Toggle switch position include target tmh int main i Init amp EventHandle return 1 int autopilot SEA EXEC ap ON output PULSE L_ALT 9 defining the autopilot function MapKey amp Throttle APENG autopilot MapKey amp Throttle LTB autopilot notice that the next function is built out of the main program int ap_ON_output naming the function if Thro
75. the HOTAS Cougar Throttle axes are called up under the joystick device This is due to the fact that the Cougar Throttle and Joystick are connected to the computer by a single USB cable via the joystick s base include target tmh int main if Init amp EventHandle return 1 axis mapping Warthog Joystick MapAxis amp Joystick JOYX DX_X_AXIS AXIS NORMAL MAP ABSOLUTE MapAxis amp Joystick JOYY DX Y AXIS AXIS NORMAL MAP ABSOLUTE Axis Mapping TQS MapAxis amp HCougar THROTTLE DX_Z_AXIS AXIS NORMAL MAP ABSOLUTE MapAxis 8HCougar MAN RNG DX SLIDER AXIS AXIS NORMAL MAP ABSOLUTE MapAxis 8HCougar ANT ELEV DX THROTTLE AXIS AXIS NORMAL MAP ABSOLUTE MapAxis 8HCougar RDR X DX XROT AXIS AXIS NORMAL MAP ABSOLUTE MapAxis amp HCougar RDR Y DX YROT AXIS AXIS NORMAL MAP ABSOLUTE MapAxis amp HCougar RUDDER DX ZROT AXIS AXIS NORMAL MAP ABSOLUTE int EventHandle int type alias 0 int x DefaultMapping amp o x Once we have defined the mapping for our axes we can start to assign events to buttons Later on we will see how to customize axis response Note When writing a file try to consider the people who will read it The order of functions is free but try to avoid combining too many function types as this will make your file harder to read Remember that all DirectX axes will still be available even if not mapped to a physical axis 12 60 T A R G E T Script Editor Basics User
76. tle from the MAX to IDLE position will generate 4321 the zone number 5 is ignored as you started from that zone Note the keystrokes have the PULSE flag associated to avoid the keys being held Now let s imagine that we want to control a radar Target Designation Cursor with the HOTAS Warthog throttle Slew Control device The simulated cursor is controlled with the arrow keys Note With the HOTAS Cougar we would have used a Type 3 digital axis Here we will simply set up AXMAP2 to perform like the old Cougar Type 3 We will divide each axis into 3 zones Down or Left Center where we don t want the cursor to move Upor Right As we do not want any events in the center zone we will have to use a null event 0 KeyAxis amp Throttle SCX 0 AXMAP2 3 LARROW 0 RARROW KeyAxis amp Throttle SCY 0 AXMAP2 3 UARROW 0 DARROW We did not use the PULSE command because the arrow keys must be pressed for a constant Target Designation Cursor movement The KeyAxis commands are really flexible to use but the solution to equally divide up the axis range cannot be adapted for all situations This is where the LIST command comes in LIST LIST is a command used to replace our axis range divisor the number of zones LIST allows custom size zone building it s useful when you want to place an event accurately To use LIST you need simply replace the zone number by LIST ranges of zone in L
77. trol at the extreme axis values There is a range of 40 values 20 to 20 Negative values make the axis more sensitive around the center while positive values provide better control in the center position The Scale is a new parameter Scale is a kind of multiplier divider With a negative value it will limit the travel on the axis With a positive value it will make the minimum and maximum values on the axis reached before the mechanical axis limits Using scale is the best way to fine tune a cursor control with a ministick or the Warthog Throttle Slew Control If you find it too sensitive in the simulator simply enter a negative value The higher the value the more the scale will affect the axis use values between 20 and 20 zero has no effect Example of settings to control the mouse with the HOTAS Warthog Throttle slew control MapAxis amp Throttle SCX MOUSE_X_AXIS AXIS NORMAL MAP RELATIVE SetSCurve amp Throttle SCX 0 10 0 0 4 MapAxis amp Throttle SCY MOUSE Y AXIS AXIS REVERSED MAP RELATIVE SetSCurve amp Throttle SCY 0 10 0 0 4 T A R G E T Script Editor Basics User Manual v1 5 27 60 SetJCurve SetJCurve is dedicated to adjusting the sensitivity of the axes used to control a throttle mixture propeller pitch and brakes You define a particular DirectX axis value that must be emulated when the physical axis reaches a particular value The default linear response is combined wit
78. ttle APPAT ActkKey KEYON PULSE L_ALT 6 else if Throttle APALT ActKey KEYON PULSE L ALT 4 else ActKey KEYON PULSE L_ALT 2 if it s not the 2 others it can only be APAH int EventHandle int type alias o int x DefaultMapping amp o x Let s take care of another setting the Autopilot Alt mode can use Barometric or Radar This is chosen according to the position of the RDR ALTM toggle switch This adds a new variable in our function We will not create a new function to manage this but simply use a logic filter inside our function We only have to use the 8 operator int apkey if Throttle APPAT ActKey KEYON PULSE L_ALT 6 else if Throttle APALT amp Throttle RDRDIS AciKey KEYON PULSE L ALT 4 else if Throttle APALT amp Throttle RDRNRM ActKey KEYON PULSE L_ALT 5 else ActKey KEYON PULSE L ALT 2 For the same function using macros things are much easier to read int apkey if Throttle APPAT ActKey KEYON PULSE Autopilot_Route following else if Throttle APALT 8 Throttle RDRDIS ActKey KEYON PULSE Autopilot Barometric Altitude Hold else if Throttle APALT 8 Throttlef RDRNRM ActKey KEYON PULSE Autopilot Radar Altitude Hold else ActKey KEYON PULSE Autopilot Altitude And Roll Hold Another example using more code an indexed list This one is a little bit complicated We have a list of 8 flight modes and we want to select them with just 2 butto
79. unction or code In fact this function is made to be used in the default T A R G E T function MapKey etc and open a direct door to the script code or call up other functions There are multiple ways to use EXEC you can use EXEC to manage functions or the execute script code for logical flag or pure code Managing functions EXEC can be used in all the MapKey family KeyAxis etc You can place EXEC in your CHAIN SEQ or TEMPO as it is just an event It s very simple to use because you already know the functions For this example we will use EXEC to change the Warthog Joystick X and Y axis curves when the user presses the S4 paddle switch Syntax MapKey 8Joystick 54 EXEC SetSCurve amp Joystick JOYX 0 0 0 5 0 SetSCurve amp Joystick JOYY 0 0 0 5 0 Notice that in the EXEC we have added at the beginning of the function list and at the end This isn t very easy to read so we can also separate the functions by jumping to the next line but we will have to limit all functions with MapKey 8Joystick 54 EXEC SetSCurve amp Joystick JOYX 0 0 0 5 0 SetSCurve amp Joystick JOYY 0 0 0 5 0 Di This way it s much easier to read Once executed Paddle Switch pressed momentarily the new setting will stay active If you want to return to the original setting you can simply apply a SEQuence to your S4 button The first event generated by an action on the S4 button will EXEC a first ba
80. ve amp Joystick JOYX 0 0 0 0 ZoomScale angle notice that the scale parameter has been replaced SetSCurve 8Joystick JOYY 0 0 0 0 ZoomScale angle notice that the scale parameter has been replaced RotateDXAxis DX X AXIS DX WV AXIS angle notice that the value has been replaced by our angle float ZoomScale float ang ang ang 3 1415926 180 convert angle from degrees into radians return 2 In 2 In abs cos ang abs sin ang returns the optimal zoom scale int EventHandle int type alias o int x DefaultMapping amp o x 52 60 T A R G E T Script Editor Basics User Manual v1 5 The Event Handle Some may wonder about the role of the last 4 lines of a script This function is in fact a loophole for those who want to create things that cannot be done with the current script functions In the following example the user wants to map the Joystick X and Y axes to the mouse but in polar coordinates Y axis to be the circle radius and X axis the angle In the script there s no tool to achieve this kind of operation after all it s impossible to predict all of the ideas script creators might have So let s do this in the EventHandle include target tmh define PI int main if Init amp EventHandle return 1 nothing here this time int EventHandle int type alias o int x if amp o 8Joystick A x JOYX x JOYY ifthe event came from Joystick X or Y axis DXAxis
81. x 46 60 T A R G E T Script Editor Basics User Manual v1 5 DefaultMapping amp o x You will see that it is not complicated to use a custom function and it makes things much easier to read You can also imagine that when something is used in several places in your program it will sometimes be better to create a function and call it up when you need it Let s study another case In the DCS Flaming Cliffs 2 software you cannot create your own chaff and flare program T A R G E T gives you the possibility of generating keystroke outputs This is how we will create our custom chaff and flare program We want to release 4 chaffs and 4 flares 400 milliseconds apart and we will repeat this program every 4 seconds We also want the ability to have this program looping automatically We will use the Joystick HAT4 to manage the chaff and flares H4U will launch the program and loop it until release the button HAD will launch the program to loop until order a stop H4P will stop the Program The interesting point here is that we will use the same program twice So rather than write it twice we will create a function that contains our keystrokes This way we will only have to call up the function in H4U and H4D For the program we will use a CHAIN with delays to manage the keystroke outputs The big difference here is that we will not associate this CHAIN with any MapKey We will create a function called Chaff Flare Pr
82. y going to begin with you will soon find it simple in fact the learning curve is very quick Reading this manual will give you an overall understanding of the new script however practicing the script is the only way to really learn and understand it This document gives you all the tools you need to get started First things to understand T A R G E T isn t just a simple graphical user interface it is also a powerful driver that is able to simulate other physical devices such as a mouse keyboard or joystick These devices allow us to simulate all the inputs we need to manage simulator software All of the human action on the physical controllers will be merged into one single virtual device and then sent to the flight simulator software This virtual device may be a combination of several Thrustmaster controllers Stick Throttle Stick Throttle MFDs etc Here is what happens when you launch a configuration The physical controllers are disconnected virtually A virtual controller is connected You may then launch your flight simulator software Advantages of this system Different USB devices can interact directly Configuration is easier in the flight simulator control panel with just one ID to manage Management is simplified with one program for all devices Compatibility with older software is increased 2 60 T A R G E T Script Editor Basics User Manual v1 5 Its not difficult to write a configuratio
83. y the Software in any way or attempt to obtain information relating to the Software that is not accessible to the User perform copies or translations of the User Manual Warranty limitation The Software is provided as is with no guarantee whatsoever from Guillemot Corporation S A regarding its use and or performance Guillemot Corporation S A does not guarantee thatthe operation ofthe Software will be free from interruptions or errors The use orthe performance ofthe Software remain under the Buyer s entire responsibility and Guillemot Corporation S A can provide no guarantee of any kind with regard to the performance and results obtained by the Buyer while using the Software No guarantee of any kind whether explicit or implied is offered by Guillemot Corporation S A with regard to the non violation of third party rights the merchantability or the adequacy of the Software to a specific use In no event shall Guillemot Corporation S A s liability be engaged in the event of damages of any kind arising from the use or the incapacity to use the Software Applicable law The Terms 8 Conditions of this License Agreement are subject to French Law R w e COPYRIGHT 2010 Guillemot Corporation S A All rights reserved Thrustmaster is a registered trademark of Guillemot Corporation S A T A R G E T is a trademark of Guillemot Corporation S A All other trademarks and brand names are hereby acknowledged and are property of their r
Download Pdf Manuals
Related Search
Related Contents
New Vission Pad U-15WF User Manual - e-Lis Samsung 931CWPLUS Инструкция по использованию Aluratek AUCS02F mobile device charger Kenwood DNN991HD Quick Start Guide Copyright © All rights reserved.
Failed to retrieve file