Page 1 sur 3
Programmation joy Thrustmaster T16000 ?
Publié : ven. mai 13, 2011 6:37 pm
par Furie
Bonjour,
savez vous s'il existe un soft pour programmer le T16000 de Thrustmaster ?
Je suis allé sur le site du fabriquant mais il me semble après installation que ce ne soit qu'un driver...
S'il n'existe pas de soft du fabriquant dédié au T16000, existe t'il un soft "alternatif" qui pourrait faire l'affaire ?
Merci d'avance.
Publié : ven. mai 13, 2011 7:46 pm
par dimebug
il te faut target, c le meme soft que pour le warthog... dispo sur le site de TM
Publié : ven. mai 13, 2011 8:41 pm
par Furie
ah oki, je vais regarder ça, merci.
j'ignorais que le "target" était adapté aussi pour le petit T16000.
Publié : ven. mai 13, 2011 9:58 pm
par dimebug
y'a les même possibilités :-)
Publié : ven. mai 13, 2011 11:34 pm
par Furie
J'aurais pleins de questions à poser, mais je ne sais pas si je peux le faire ici, ni envie de polluer un topic existant, ouvrir un nouveau topic ou utiliser un topic existant.
J'attends ta réponse.
En tout cas, j'ai déjà réussi à modifier les courbes tangage et roulis ainsi que d'affecter des touches.
Merci encore.
Publié : sam. mai 14, 2011 9:50 am
par dimebug
bas pose les questions...
Publié : sam. mai 14, 2011 11:09 am
par Furie
Bon, j'y vais...
Je ne comprends pas le rôle de la touche "add" en haut à gauche de l’écran du Target command center.
Je m'explique : j'ai créé un profil, je l'ai enregistré, testé etc.
Je vais dans "add" et j'associe mon profil .fcf avec Il2.exe par exemple.
je clic sur "run configuration", je sélectionne le .fcf que je veux et ça passe en mode "running script".
-si je ferme ce running script en cliquant sur "stop", le profil n'est pas pris en compte, bref ça marche pas...
-si je réduis la fenêtre "running script" dans la barre des taches et que je lance IL2, là le profil est actif dans le jeu.
Il est actif dans le jeu mais partout aussi : si j'ouvre le note pad, je m'aperçois qu'avec le soft en "running script", l'appui sur les touches du joy permettent d'afficher leur prog, et actif aussi dans RoF alors que je ne l'ai pas selectionné avec "add"....
Donc j'aurais 2 questions :
-a quoi sert exactement le "add" pour associer un profil a un jeu, sachant que ce profil est valable non seulement pour le jeu "sélectionné" mais aussi pour tous les autres. Par exemple, mon profil que j'ai "add" avec Il2.exe, fonctionne aussi avec RoF...
-pour que le profil soit actif, quelle est la bonne méthode ?
cliquer sur "run configuration" + sélection profil .fcf + réduire la fenêtre Gui "running script" dans la barre des taches ?
je sais pas si je suis très clair sur le coup...
:wacko::crying:
Publié : sam. mai 14, 2011 11:35 am
par dimebug
le "add" de la fenetre Fly now premet de lier un proifil a un soft.
Une fois l'association faite il suffit de double cliquer sur le nom du soft (en vert, dans la meme fenetre "Fly Now!") pour lancer le profil puis le simu.
La fenêtre du dessous, c'est le "how do i" qui est un lien vers des docs.
Enfin la fenêtre "GUI Configuration files" et une zone qui permet, d’éditer ou de lancer des configuration seules.
Donc pour repondre a tes question, si tu veux lancer un profil et le simu en meme temps, il faut que tu configure le tout depuis la zone Fly Now ! via le bouton Add. Le seul truc a savoir c'est que dans ce cas, tu doit deja avoir créer ton "programm" car tu ne pourra pas l'editer depuis cette zone.
Pour lancer un profil seul, il faut le lancer depuis la Zone "Gui Configuration file" en le selectionnant puis en cliquant sur "Run". Ensuite tu lance ton simu. Pour arreter un profil, il suffis de cliquer sur "stop" de la fenetre qui s'ouvre aussitot apres que tu ais lancé (Run) ta configuration.
Pour creer une configuration 100% perso, il suffis de cliquer sur le bouton "New configuration" de la fenetre "My controllers".
Publié : sam. mai 14, 2011 11:57 am
par Furie
Merci pour ta réponse rapide.
Donc en fait, si j'ai bien compris, associer un profil à un jeu, ne sert qu'a lancer le jeu a travers le target, c'est bien ça ?
Et pour avoir la programmation du target active , il faut cliquer sur "run conf", le laisser tourner (running script) puis lancer le jeu a partir d'hyper lobby par exemple ?
encore une question : target permet d'associer plusieurs contrôleurs pour n'en faire qu'un (comme le warthog avec ses gaz + manche).
peut on faire de même avec un Saitek X45 + T16000 ?
edit : quand je clic sur "device analyser", une fenêtre s'ouvre et affiche des infos sur le x45, mais je ne vois pas ce que je peux en faire...
Publié : sam. mai 14, 2011 12:01 pm
par dimebug
tu as bien compris.
Target ne supporte que les controlleurs TM : T-16000, MFDs, Warthog et dans une moindre mesure, le Cougar
Publié : sam. mai 14, 2011 12:23 pm
par Furie
Merci, je vais bidouiller pour voir cette histoire d'affectation d'axe T16000=>X45
Publié : sam. mai 14, 2011 3:17 pm
par Furie
Encore une question : dans le target, j'ai réussi a modifier la sensibilité des axes.
J'aimerais savoir si on peut programmer une fonction sur le joy pour modifier cette courbe en vol. Une courbe très sensible pour les chasseurs et une courbe plus douce pour les bombers par exemple, le tout sélectionnable d'un clic ou bien avec un axe (celui des gaz du T16000 qui ne me sert pas).
Je pose cette question car un pote faisait ça avec son Cougar.
Merci d'avance
Publié : sam. mai 14, 2011 6:41 pm
par dimebug
possible mais il faudra compléter ton fichier avec du script.
Publié : dim. mai 15, 2011 10:39 pm
par Furie
Je viens de lire le .pdf "Documentatiion Scriipt Thrustmaster Warthog".
Un script m'interesse, c'est page 26, "trimmer un axe".
Je ne maitrise pas du tout les scripts, donc je suis allé sous "target gui", j'ai ouvert et edité un fichier .fcf, cliqué sur la touche "view script", ça m'ouvre un fichier en .tmc avec le note pad :
*******************************
include "target.tmh"
int main()
{
Configure(&HCougar, MODE_EXCLUDED);
Configure(&Joystick, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYX, 0, 0, 0, 2, 0);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYY, 0, 0, 0, 2, 0);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);
MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
*************************************
le script de "trim" que je souhaite rajouter est :
MapKey(&Joystick, H1U, EXEC("TrimDXAxis(DX_Y_AXIS, -10);")); MapKey(&Joystick, H1D, EXEC("TrimDXAxis(DX_Y_AXIS, 10);")); MapKey(&Joystick, H1L, EXEC("TrimDXAxis(DX_X_AXIS, -10);")); MapKey(&Joystick, H1R, EXEC("TrimDXAxis(DX_X_AXIS, 10);"));
je rajoute ce script a mon fichier en copié collé ce qui donne :
*****************************************************
include "target.tmh"
int main()
{
Configure(&HCougar, MODE_EXCLUDED);
Configure(&Joystick, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYX, 0, 0, 0, 2, 0);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYY, 0, 0, 0, 2, 0);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);
MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);
MapKey(&Joystick, H1U, EXEC("TrimDXAxis(DX_Y_AXIS, -10);")); MapKey(&Joystick, H1D, EXEC("TrimDXAxis(DX_Y_AXIS, 10);")); MapKey(&Joystick, H1L, EXEC("TrimDXAxis(DX_X_AXIS, -10);")); MapKey(&Joystick, H1R, EXEC("TrimDXAxis(DX_X_AXIS, 10);"));
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
************************************
je clic sur enregistrer dans le note pad, je ferme.
si je reclic sur "view script" pour vérifier et valider ma modif, le note pad s'ouvre mais la modif n'a pas été prise en compte, pas enregistré donc aucune chance que mon script ne fonctionne...
Savez vous d'où peut provenir le problème ?
Publié : lun. mai 16, 2011 8:44 am
par dimebug
quand tu as cliqué sur viewsript depuis la GUI, il s'ouvre un fichier .tmc
Il suffis de sauvegarder ce fichier ou tu veux puis de le lancer depuis TARGET script editor ou depuis la GUI.
fichier fcf : pour jouer avec dans la GUI
fichier tmc : contient que du script, n'est pas éditable dans la GUI
Ton bout de script ne foncitonnera pas car il y a une petite erreur : le flag &Joystick correspond à "l'adresse" du joystick du Warthog, or tu as un T-16000m.
donc MapKey(&T16000, H1U, EXEC("TrimDXAxis(DX_Y_AXIS, -10);")); donnera de meilleur resultats.
On retrouve bien la structure Fonction(&nom du contrôleur, nom du bouton du contrôleur, paramètres à exécuter);
Publié : lun. mai 16, 2011 9:42 am
par Furie
Alors là, bravo !!!
Merci pour la correction du script, merci pour les explications : ça marche nickel !
Publié : lun. mai 16, 2011 10:41 am
par Furie
Bon, je vais encore t’embêter une nouvelle fois si tu le veux bien :
dans le .tmc, il y a cette ligne qui définit les propriété d'un axe, en particulier les valeurs de la courbe
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYX, 0, 0, 0,
2, 0);
J'aimerais pouvoir modifier cette 4éme valeur (et pourquoi pas les autres) a l'aide d'un bouton du T16000, pour pouvoir ainsi au gré des appuis, avoir un joy + ou - sensible, toujours avec le bouton H1U et H1D par exemple.
exemple : un clic vers le haut je passe de (&T16000, JOYX, 0, 0, 0,
2, 0); à (&T16000, JOYX, 0, 0, 0,
3, 0);
un clic vers le bas je passe de (&T16000, JOYX, 0, 0, 0,
2, 0); à (&T16000, JOYX, 0, 0, 0,
1, 0);
Une idée ?
Merci d'avance
Publié : lun. mai 16, 2011 11:30 am
par dimebug
pas de probleme, rajoute ca dans ton fichier, mais attention, ca va être en conflit avec ton trim car sur les même boutons.
MapKey(&T16000, H1U, EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, 2, 0);"));
MapKey(&T16000, H1D, EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, 3, 0);"));
Si tu veux, tu peut mettre cette fonction sur un seul bouton, a chaque appuis, tu change la sensibilité (ici sur le boutons B5, celui en haut a gauche de la base):
MapKey(&T16000, B5, SEQ(EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, 2, 0);"), EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, 3, 0);")));
Nota, j'ai pas testé mais ca doit etre a peut pret correct
Publié : lun. mai 16, 2011 12:56 pm
par Furie
Si j'ai bien compris ton script, il a 2 positions H1U et H1D, avec donc 2 valeurs prédéterminées (2 et 3)
En fait, je pensais à un script qui incrémente de +1 ou -1 (selon le bouton appuyé) a chaque fois.
position initiale (&T16000, JOYX, 0, 0, 0,
0, 0)=> 1 impuls => (&T16000, JOYX, 0, 0, 0,
1, 0) => 2 impuls => (&T16000, JOYX, 0, 0, 0,
2, 0) etc etc et dans les 2 sens.
Avec donc autant de valeurs que d'appuis, tout ça avec le même bouton.
Quoi qu'il en soit, ton script précédent fonctionne parfaitement.
Un grand merci à toi.
:king::yes:
Publié : lun. mai 16, 2011 2:15 pm
par dimebug
C'est faisable mais plus compliqué, il faut utiliser une list et un index (exemple type page 51 du manuel). Je te fais ça un peu plus tard... si ca marche
Publié : lun. mai 16, 2011 3:45 pm
par dimebug
finalement pas besoin d'index, je me compliquais la vie, voila un exemple, pour l'axe X pour un warthog.
On peu faire ça de plusieurs façon différente, celle ci me parait assez lisible mais son champ d'application est limité, on peut faire plus performant, plus précis dans la customisation des axes mais ca sera un peu plus lourd a écrire.
A noter que la on joue sur le paramètre de courbe, mais on pourrait également jouer sur le paramètre "scale" qui lui reduit les débattements des commandes la ou la courbe ne fait que déformer la reponse autour du neutre.
H1L diminue la sensibilité, H1R l'augmente
Pour cela je créer une boite que je nomme curvevalueX dans la quel je vais stocker une valeur que je vais incrementé ou decrementé a chaque appuis sur le H1 gauche ou droite.
Suite a chaque appuis, je redéfinie la courbe de réponse en tenant compte de la valeur de curvevalueX (je n'ai qu'a renplacer le chiffre par le nom de ma boite...).
include "target.tmh"
//program startup
int curvevalueX; ///custom function for curve management
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//Axes mapping
MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
//Axes default curves
SetSCurve(&Joystick, JOYY, 0, 0, 0, 0, 0);
SetSCurve(&Joystick, JOYX, 0, 0, 0, 0, 0);
MapKey(&Joystick, H1L, CHAIN(EXEC("curvevalueX = curvevalueX + 1;"), // add 1 unit to "curvevalueX"
EXEC("SetSCurve(&Joystick, JOYX, 0, 0, 0, curvevalueX, 0);"))); // apply new curvevalueX value
MapKey(&Joystick, H1R, CHAIN(EXEC("curvevalueX = curvevalueX - 1;"), // substract 1 unit to "curvevalueX"
EXEC("SetSCurve(&Joystick, JOYX, 0, 0, 0, curvevalueX, 0);"))); // apply new curvevalueX value
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
Publié : lun. mai 16, 2011 4:03 pm
par Furie
Pfiouuuuuuuuuuuuuuuu !!!
Pinaise, t'es un vrai magicien des scripts !!!
Je teste cela d'taleur mais je te remercie tout de suite.
:notworthy:yes:
Publié : lun. mai 16, 2011 4:39 pm
par Furie
ah là j'ai un soucis : les axes ne sont pas reconnus, y a rien qui bouge dans le jeu en actionnant le joy, et quand je lance target ça me dit :
*** Allocated ProcInstances found from the previous run: use FreeProcInstance() ***
Mapped plugin module "C:\Program Files (x86)\Thrustmaster\TARGET\Plugins\sys.dll"
Physical USB HID devices managed by script!
Currently plugged USB HID devices[1]:
1: "T.16000M" - "USB\VID_044F&PID_B10A&REV_0500"
USB HID device with hardware id "VID_044F&PID_0404" cannot be found
USB HID device with hardware id "VID_044F&PID_0402" cannot be found
USB HID device with hardware id "VID_044F&PID_b351" cannot be found
USB HID device with hardware id "VID_044F&PID_b352" cannot be found
USB HID device with hardware id "VID_044F&PID_0400" cannot be found
USB HID device "T.16000M"(USB\VID_044F&PID_B10A\6&DF2EE03&0&3) selected
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse...Done
main returned 0
Publié : lun. mai 16, 2011 4:42 pm
par Furie
faut surement rajouter les lignes :
Configure(&HCougar, MODE_EXCLUDED);
Configure(&Joystick, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYX, 0, 0, 0, 2, 0);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, JOYY, 0, 0, 0, 2, 0);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);
MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
SetSCurve(&T16000, THR, 0, 0, 0, 0, 0);
mais je ne vois pas trop si c'est ça et comment les inclure dans le script que tu m'as donné ?
Publié : lun. mai 16, 2011 6:20 pm
par dimebug
oui, il faut que tes axes soient mappés :
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
donc en les incluants dans le fichier en utilisant le script editor ou le notepad :
include "target.tmh"
//program startup
int curvevalueX; ///custom function for curve management
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//Axes mapping
MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
//Axes default curves
SetSCurve(&T16000, JOYY, 0, 0, 0, 0, 0);
SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);
MapKey(&T16000, H1L, CHAIN(EXEC("curvevalueX = curvevalueX + 1;"), // add 1 unit to "curvevalueX"
EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, curvevalueX, 0);"))); // apply new curvevalueX value
MapKey(&T16000, H1R, CHAIN(EXEC("curvevalueX = curvevalueX - 1;"), // substract 1 unit to "curvevalueX"
EXEC("SetSCurve(&T16000, JOYX, 0, 0, 0, curvevalueX, 0);"))); // apply new curvevalueX value
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}