TARGET Script Editor

Joysticks, throttles, palonniers, MFD...
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

TARGET Script Editor

#1

Message par Biluf »

TARGET SCRIPT EDITOR

Introduction

Certains d'entre vous se sont offert un Warthog mais n'exploitent pas encore son potentiel, c'est dommage.
Vous pouvez installer le logiciel TARGET de Thrusmaster qui permet de programmer des profils pour vos différents simulateurs.
TARGET permet de gérer l'affectation des touches et les courbes pour le HOTAS Cougar, le HOTAS Warthog, le T-16000M et les MFD Cougar.
Un profil TARGET permet de n'avoir à modifier qu'à minima les fichiers de config des touches d'un jeu (généralement on a besoin de n'y paramétrer que les Axes, comme ça on peut conserver les configs par défaut et s'éviter les problèmes de réinitialisation suite à mise à jour, bordel dans les IDs des devices USB Windows, etc...

Le doc de ce logiciel est disponible après son installation dans C:\Program Files (x86)\Thrustmaster\TARGET\Resources mais aussi en téléchargement sur le site : http://ts.thrustmaster.com/download/acc ... .5_eng.pdf
Liens disponibles ici : https://support.thrustmaster.com/fr/pro ... warthog-fr
Traduction FR du manuel du Script Editor : http://www.checksix-fr.com/Files/matos/ ... ipt_FR.pdf

Il y a 3 façons de faire un profil :
  • Basic - Pour faire un truc simple et rapide par le biais de l'interface (fichiers .fcf).
  • Advanced - Pour aller un peu plus loin dans la construction du profil par le biais de l'interface toujours, notamment utiliser les touches shifts et les interrupteurs de profil (fichiers .fcf).
  • Script - Pour exploiter au maximum les capacités du matériel mais en mode programmation pure (fichiers .tmc & .ttm).
C'est ce dernier mode que je vais traiter; la création de profils par le Script Editor. J'ai eu du mal à m'y mettre, il n'y a pas beaucoup de doc sur le net j'ai donc du me taper le fichier de doc de Thrusmaster. Ce guide me servira également personnellement de référence rapide.
Je ne prétend pas tout savoir, il y a des fonctions que je n'aborderai pas (encore) car je ne les maîtrise absolument pas mais ce guide permettra à tous les pilotes (un tant soit peu motivés pour le lire) de commencer à mettre les mains dans le cambouis.
A noter que lorsqu'on commence à comprendre le principe du Script, on peut se faire des profils beaucoup plus rapidement que par le biais de l'interface graphique de TARGET, que ce soit en mode Basic ou Advanced. Parceque bon il faut bien le dire, ce n'est pas un modèle d'ergonomie.

TARGET fourni un "Editeur de texte" (TARGETScriptEditor.exe) mais il est particulièrement pauvre et il vaut mieux que vous utilisiez celui avec lequel vous êtes le plus à l'aise (VSCode, Notepad++, etc...). Sa seule fonction utile au final sera de tester l'intégrité du code que vous aurez écrit grace à ses boutons "Compile" et "Run".

Personnellement j'utilise VSCode. Vous pourrez utiliser la colorisation syntaxique "C#" par exemple puisque le langage utilisé en est à priori dérivé. Les extensions de fichier que vous utiliserez sont les .tmc qui sont les fichiers de programmation des touches (et autres) et les fichiers .ttm qui sont les fichiers de macro.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#2

Message par Biluf »

Les macros

Dans un fichier de macro on trouve des définitions de variable (les macros) qui servirons dans le fichier Script d'affectation des touches. De la qualité d'un fichier de macro dépend la facilité et la rapidité avec laquelle vous pourrez concevoir vos affectations de touche.

Ci-dessous un petit extrait de fichier de macros pour BoS :
ExempleMacro.PNG
Exemple : define missionbriefing USB[0x12] // Mission briefing (key_o)
Un fichier de macro c'est tout simple, on défini (define) une variable missionbriefing qui correspond à la touche USB[0x12] (position du clavier US pour la lettre 'O').
Tous les éléments après le // sont des commentaires.

Ce qui fait que dans le fichier de map des touches, on écrit aucune des touches, on écrit des variables "lisibles" et on ne se prend pas la tête avec les claviers Français vs les claviers US. On peut généralement faire rapidement un fichier de macro à partir du fichier de config des touches du jeux. Celui de BoS est facile à transformer par exemple. Pour DCS c'est un peu plus compliqué, j'avais trouvé un parseur en Javascript mais il est buggé. Et comme on est jamais mieux servis que par soi même, j'en ai fait un qui poutre en Powershell. J'y reviendrai plus tard.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#3

Message par Biluf »

Le Script

Dans le fichier de script proprement dit, on défini les axes, on indique quels fichiers de macro il faut utiliser et on écrit les commandes à proprement dite. Je me suis fait un fichier de script vierge avec tous les boutons du HOTAS Warthog sans aucune affectation de touche, je fournirai tout ça plus tard.

Le minimum syndical d'un fichier de Script :
MinimalScript.PNG
Les deux include en haut incorporent le fichier target.tmh (ça c'est obligé) et généralement l'importation du fichier de macro du simulateur qu'on veut configurer (ici celui du Mirage 2000 de DCS).
Ensuite on a du blabla pour commencer le paramétrage des axes/touches
J'y ai incorporé un printf qui permet de balancer un message dans la fenêtre d’exécution du script et qui m'indique quel profil je lance.
Ensuite la définition des axes (ici on peut même les inverser si on en a besoin ou définir des modifications de courbe)
Puis au niveau du commentaire on aura toutes les commandes.
Et pour finir le blabla obligatoire pour fermer le script.

Le Script est constitué de fonctions et de commandes

En gros la syntaxe principale d'une fonction c'est :
Fonction(Periphérique, Bouton, Action);
Vous remarquerez qu'on fini la ligne avec un ;
  • Le nom du périphérique, ça sera soit :
    &Joystick Le Joystick du Warthog
    &Throttle Le Manette des gaz du Warthog
    &LMFD Le MFD 1 du Pack MFD Cougar
    &RMFD Le MFD 2 du Pack MFD Cougar
    &HCougar Le Cougar
    &T16000 Le T-16000
  • Le nom des Boutons ne s'invente pas, on en retrouvera la liste dans les PDF présents dans le répertoire de documentation de TARGET (C:\Program Files (x86)\Thrustmaster\TARGET\Resources). Le premier étage de la gâchette par exemple ça sera TG1.
  • L'action, ça sera soit le nom d'une touche directement, de son code USB ou le nom d'une macro (et je vous ai dit d'utiliser les macros !), le tout combiné avec des commandes qu'on verra par la suite.
Aller c'est partit !


Fonction MapKey()
Associer une Action avec l'appui sur un Bouton

MapKey c'est la base, ça permet d'affecter une action lors de l'appui sur un bouton.
Syntaxe : MapKey($Joystick, Bouton, 'Touche');

Exemple :
MapKey.PNG
Permet donc de lancer la macro Bombe lors de l'appui sur le gros bouton rouge en haut du Joystick de Warthog.
A noter que si on reste appuyé sur le bouton, on va spammer la macro, on verra plus tard dans les commandes comment faire pour que ça ne lance qu'une fois la commande même si on reste appuyé sur le bouton.

A SAVOIR : Pour désactiver un bouton du Joystick, on indique 0 à la place de la touche : MapKey($Joystick, Bouton, 0);


Fonction MapKeyR()
Associer une Action en relâchant un Bouton

MapKeyR permet donc d'affecter une autre action sur le retour d'un bouton, typiquement pour configurer une action temporaire à un bouton.
Syntaxe : MapKeyR($Joystick, Bouton, 'Touche');

Par exemple j'ai 2 macros :
Airbrake_On pour déployer les aérofreins
Airbrake_Off pour rentrer les aérofreins
Je peux par exemple affecter sur la gâchette du pouce sur le Trottle (qui est faite un peu pour cette fonction) :
MapKeyR.PNG
Sous Fonction TEMPO()
Associer une Action à l'appui prolongé sur un bouton (Temporisation)

TEMPO permet donc d'affecter une action spécifique lors de l'appui prolongé sur un bouton. Il me semble que de base l'appui est de 500 millisecondes mais on peut préciser la durée si on en a besoin.
Syntaxe : TEMPO('Touche1', 'Touche2', Délai)

Exemples :
Appui court : X, appui long : Y (délai de 500 ms) : MapKey(&Joystick, TG1, TEMPO('x', 'y'));
Appui court : X, appui long : Y (délai de 1000 ms) : MapKey(&Joystick, TG1, TEMPO('x', 'y', 1000));

Pour plus de visibilité dans mon code j'aime bien aérer, on pourra écrire la même chose comme ça :
TEMPO.PNG
Sous Fonction SEQ()
Associer différentes actions lors de l'appui successif d'un même bouton (Séquence)

Il est tout à fait naturel d'associer plusieurs fonctions sur un même bouton si la logique est de notre côté. Si je veux cycler par exemple entre plusieurs modes missile qui sont activables chacun avec sa propre touche.
Syntaxe : SEQ('Touche1', 'Touche2', 'Touche3')

Exemple :
SEQ.PNG
Sous Fonction CHAIN()
Déclencher plusieurs actions lors de l'appui sur un bouton (Chaine)

CHAIN permet donc d'affecter plusieurs appuis successifs de touches pour une seule pression sur un bouton.
Syntaxe : CHAIN('Touche1', 'Touche2', 'Touche3')

Exemple complètement improbable :
CHAIN.PNG
Commande D()
On peut également introduire des délais entre chaque action si le simulateur ne comprend rien à votre chaine qui est exécutée trop vite, avec la commande D(). Bien sûr on peut ici aussi spécifier la durée du délai si on veux autre chose que la valeur par défaut (33 ms).
Syntaxe : CHAIN('Touche1', D(), 'Touche2', D(100), 'Touche3')

Commande LOCK+
Si votre chaine est particulièrement longue et que vous ne voulez pas que d'autres actions provenant d'autres bouton interrompent l’exécution de votre chaine, on peut peux verrouiller le processus.
Syntaxe : LOCK+ pour commencer le blocage, LOCK pour finir le blocage

Exemple combiné :
LOCK.PNG
A NOTER : On peut combiner les fonctions CHAIN() et SEQ() pour obtenir des choses complexes.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#4

Message par Biluf »

Commande PULSE+
Pression momentanée sur une touche

J'ai indiqué précédemment que si on ne spécifiait rien de particulier dans une fonction et qu'on laissait le bouton pressé, on allait spammer la touche configurée. C'est justement à ça que sert la commande PULSE+ et vous allez en mettre partout s'il vous plait !
Typiquement vous utiliserez PULSE+ avec toutes les touches qui ne nécessitent pas que l'on reste appuyé sur le bouton comme la gâchette de tir canon par exemple.

Exemple :
PULSE.PNG
Dans cet exemple qui représente des actions affectées à un Coolie Hat de mon joystick, j'ai besoin de deux touches de zoom + et - sur lesquelles je peux rester appuyer pour zoomer plus ou moins.
Mais j'ai également 2 touches pour lesquelles je désire avoir une action momentanée, ici j'utilise le PULSE+.

A NOTER : Toutes les touches lancées par le biais de la fonction MapKeyR() sont automatiquent pulsées donc on peut éviter d'y utiliser PULSE+. On pourra toujours tricher avec les 2 commandes qu'on voit tout de suite après.

Commandes DOWN+ et UP+
Appui sur une touche puis relâchement

Pour l'instant je ne me sers pas trop de ces deux commandes.
DOWN+ permet de déclencher l'appui sur une touche et tant qu'on ne déclenchera pas la commande UP+, cette touche restera appuyée.

Exemple :
DOWN-UP.PNG
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#5

Message par Biluf »

Les Layers / Sub-Layers (Couches / Sous-Couches)

Définition des Layers

Fonction MapKeyUMD()

Fonction MapKeyIO()

Fonction MapKeyIOUMD()

Fonction MapKeyR() et les Layers


En attente d'écriture Ne sera jamais écrit...
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#6

Message par Biluf »

Fichier Script vierge pour le mapping des touches du Warthog
Ce fichier vous permet d'obtenir un fichier de Script prêt à l'emploi (.tmc)
TARGET_Script_Warthog_Vierge_v1.1.zip
Script Powershell pour Parser les fichiers d'input des avions de DCS
Ce script vous permet d'obtenir un fichier de macro prêt à l'emploi
https://www.digitalcombatsimulator.com/en/files/1730806
Dans le .zip se trouve un fichier .ps1, vous le positionnez dans le répertoire où vous avez fait l'export au format HTML de la config de votre avion (vous faites ça dans les options keybindings du jeu).
Normalement l'export se retrouve dans C:\Users\<Login>\Saved Games\DCS\InputLayoutsTxt\<Nom de l'avion>
Sur le fichier .ps1 obtenu, clic-droit, "Exécuter avec PowerShell"

Si le script échoue, il faudra modifier la stratégie d'exécution des scripts Powershell :
Lancez Powershell.exe en mode administrateur et exécutez la commande ci-dessous :

Code : Tout sélectionner

Set-ExecutionPolicy RemoteSigned
En cas de pb, prévenez moi, j'en suis l'auteur.

Fichier de macro pour BOS
Ci-joint mon fichier de macro BOS.
Toutes les touches sont par défaut sauf 3 que j'ai reconfiguré, elle sont indiquées en commentaire au début du fichier.
IL2 - BoS_Macro.7z
Fichier de Script pour BOS
Ci-joint mon fichier de Script BOS.
A prendre comme un exemple de configuration "simple"
IL2 - BoS.7z
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Golgoth21
Réserviste
Messages : 857
Inscription : 09 avr. 2015, 21:28

Re: TARGET Script Editor

#7

Message par Golgoth21 »

Impressionnant... je vais le relire plusieurs fois pour comprendre l'intérêt pout mon t16000m.
Merci pour ce tuto !
Avatar de l’utilisateur
Golgoth21
Réserviste
Messages : 857
Inscription : 09 avr. 2015, 21:28

Re: TARGET Script Editor

#8

Message par Golgoth21 »

Bon voilà j'y suis en plein dedans avec le warthog. Question... si je fait une config "advanced" est-ce que je peux l'enrichir avec le script ou bien tout refaire en script ? Je check le manuel pour trouver la réponse.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#9

Message par Biluf »

Le Script Editor et la GUI sont complètement différents au niveau fichiers.
Mais de toute façon une fois que tu goûtes à l'éditeur tu peux plus revenir en arrière :)

Je joint mon fichier de macro BOS.
Toutes les touches sont par défaut sauf 3 que j'ai reconfiguré sinon c'est le bordel.

J'ai pas forcément reporté toutes les touches complexes, juste celles que j'utilise.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Golgoth21
Réserviste
Messages : 857
Inscription : 09 avr. 2015, 21:28

Re: TARGET Script Editor

#10

Message par Golgoth21 »

Bon, je réponds à mon poste fait dans la section "config joystick" je pense que je vais passer par le script ce sera toujours moins long que les heures passées à tester une combinaison de touches dans le GUI.


Question : ou trouve t'on les codes usb ?
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#11

Message par Biluf »

À la fin du manuel de l'éditeur je crois.
Sinon à disposition dans le même répertoire Doc de TARGET.
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#12

Message par Biluf »

Golgoth21 a écrit :Question : ou trouve t'on les codes usb ?
Sinon tu réutilises le fichier de macro que j'ai posté 3 messages au dessus.
Avatar de l’utilisateur
Golgoth21
Réserviste
Messages : 857
Inscription : 09 avr. 2015, 21:28

Re: TARGET Script Editor

#13

Message par Golgoth21 »

Merci. Une fois qu'on lit le manuel, tout est presque plus clair. RTFM
Avatar de l’utilisateur
Biluf
Réserviste
Messages : 5063
Inscription : 03 mai 2015, 19:59

Re: TARGET Script Editor

#14

Message par Biluf »

Le manuel ou mon tuto ?
Avatar de l’utilisateur
Golgoth21
Réserviste
Messages : 857
Inscription : 09 avr. 2015, 21:28

Re: TARGET Script Editor

#15

Message par Golgoth21 »

Ton tuto permet une approche mais le manuel C6 est plus précis.

Néanmoins, ce sont tes fichiers qui sont un vrai plus.
Répondre