Page 1 sur 1
TARGET Script DOUBLE CLICK
Publié : jeu. oct. 31, 2013 7:27 pm
par Rcaf_Frenchy
Bonjour
Est-il possible de generer un double click sur l'appui d'un bouton du stick avec le target software?
et positionner ainsi un flag à 1 par exemple....
push1 release1 push2 release2 et cela avec un temps max entre push1 et release2..
Re: TARGET Script DOUBLE CLICK
Publié : jeu. oct. 31, 2013 8:44 pm
par dimebug
un double clic oui pas de soucis, ca se fait tres meme sans passer par le script
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 5:12 am
par Rcaf_Frenchy
Bonjour Dimebug
Je me suis mal exprimé.
générer n'et pas le bon terme.. mais plutot la fonction
"faire une action" lorsqu'il y a eu un doubleclick sur un bouton du stick.
Comment programmer le test du doubleclick..?
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 1:15 pm
par dimebug
a ok, donc c'est possible, pas vraiment compliqué mais ca demande un peu de travail. il faut le faire en script, dans ce cas, la GUI ne suffis pas.
ca dépends vraiment de ce que tu veux faire. Lorsque tu fait un double clic tu souhaites qu'il y ai une action différente que lors d'un simple clic ?
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 1:53 pm
par dimebug
en alternative tu as aussi la fonction TEMPO, qui fait le distinguo entre un appuis court et un appuis long et que te permet de programmer 2 actions différentes sur un simple bouton. C'est déjà plus pratique que le double clic
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 5:06 pm
par Rcaf_Frenchy
Je connais le target script,
je souhaite traduire un script glovepie qui m'allait tres bien, en target script, donc oui il me faut un doubleclick ( le test final est fait sur le second release de la touche..
je pensais que certain s'était déjà poser la question..Apres bien sur je peux revoir ma programmation..Ensuite le plaisir du défi "programmatique" existe aussi...!!
je vais regarder cela de plus prés en regardant les differents exemples car au niveau doc c'est plutot tres light...
je suis parti sur ca, mais faut peaufiner encore..: ce qui me manque c'est d'avoir une échelle de temps passée comme la fonction QueryPerformanceFrequency
incluse dans le target..je ne peux jouer qu'avec le defercall, le tempo..
Code : Tout sélectionner
include "target.tmh"
int S4_DBCLK=0;
int main()
{
Exclude(&HCougar); Exclude(&T16000); Exclude(&LMFD); Exclude(&RMFD);
if(Init(&EventHandle)) return 1;
MapKey(&Joystick, S4, TEMPO(EXEC("S4_DBCLK=S4_DBCLK+1;if(S4_DBCLK > 2)S4_DBCLK=1;"),EXEC("S4_DBCLK=0;"),150));
MapKeyR(&Joystick, S4,EXEC("printf(\"S4_DBCLK=%d:\\xa\",S4_DBCLK);");
}
int EventHandle(int type, alias o, int x) {
{
DefaultMapping(&o, x);
}
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 8:32 pm
par dimebug
en faisant une fonction flag a durée limitée et un EXEC if.. else... doit y avoir moyen de faire quelques chose faudrait que je me penche sur la question
Y'a sans doute moyen en utilisant un compteur avec un REXEC pour te donner l'échelle de temps.
Ou simplement un DeferCall dans un EXEC. La première partie de l'EXEC définis active une fonction flag a la durée definie, la seconde partie interroge l'etat du flag, selon son état, l'output change.
Re: TARGET Script DOUBLE CLICK
Publié : ven. nov. 01, 2013 8:35 pm
par Rcaf_Frenchy
Pour le plaisir: y a peut etre plus ingenieux (certainement) il est brut de fonderie..
Code : Tout sélectionner
include "target.tmh"
int S4_DBCLK=0;
int titi=0; // flag du doubleclick raz par defercall ou si le dblclick a eu lieu
int lc=0; // defercall lance?
int main()
{
Exclude(&HCougar); Exclude(&T16000); Exclude(&LMFD); Exclude(&RMFD);
if(Init(&EventHandle)) return 1;
printf("DCS_AP_main:\xa");
MapKey(&Joystick, S4, EXEC("DD(700);"));
MapKeyR(&Joystick, S4, EXEC("S4_DBCL();"));
printf("...ready\xa");
}
int S4_DBCL()
{
if(S4_DBCLK==0)
{
S4_DBCLK=1;
titi=1;
}else
{
if (titi > 0 & S4_DBCLK)
{
S4_DBCLK=0;
titi=0;
printf("Dbcl:\xa"); // yes doubleclick
}
S4_DBCLK=0;
titi=0;
}
}
int EventHandle(int type, alias o, int x) {
{
DefaultMapping(&o, x);
}
int RazFlag(alias t)
{
t=0;
S4_DBCLK=0;
lc=0;
}
int DD(int delay) //lance le defercall qui raz les flags
{
if (lc) return 0; // juste lancer 1 seul defercall
lc=1;
DeferCall(delay,&RazFlag,&titi);
}
Re: TARGET Script DOUBLE CLICK
Publié : dim. nov. 03, 2013 8:14 pm
par Rcaf_Frenchy
le code mieux agencé...
S4_DBCLK joue le role de bascule quand on doubleclicke sur S4.. TG1 affiche la valeur de cette variable..
Code : Tout sélectionner
include "target.tmh"
define DELAI 500 //ms
int S4_DBCLK=0;
int S4_Press=0;
int main()
{
Exclude(&HCougar); Exclude(&T16000); Exclude(&LMFD); Exclude(&RMFD);
if(Init(&EventHandle))return 1;
MapKey(&Joystick, S4, TEMPO(EXEC("S4_Press=S4_Press+1;"),EXEC("S4_Press=0;"),150));
MapKeyR(&Joystick, S4, EXEC("if(S4_Press)S4_DBCLK=DoubleClicked(&S4_Press)^S4_DBCLK;"));
MapKey(&Joystick, TG1, EXEC("printf(\"S4_DBCLK=%d\\xa\",S4_DBCLK);"));
printf("...ready\xa");
}
int DoubleClicked(alias f)
{
if(f==1)
{
DeferCall(DELAI, &RazFlag, &f);
return 0;
}
else{Beep(700,500);return 1;}
}
int RazFlag(alias f){f=0;}
int Beep(int freq, int duree)
{
// char buffer;Dim(&buffer, 64);
// sprintf (&buffer, "spawn e:\\wbeep.exe %d %d", freq, duree);
// system(&buffer);
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}