FREEPIE + VJOY une Alternative possible à TARGET

Salle dedieé aux péripheriques : Joystick, palloniers, Track-Ir

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

FREEPIE + VJOY une Alternative possible à TARGET

#1

Message par Rcaf_Frenchy »

La première chose à faire est de configurer Throttle et Joystick en directX (ne plus les combiner)
voilà le script à executer une fois, dans le target Script

Code : Tout sélectionner

// include {{{ include "../include/target.tmh" int main() { Exclude(&HCougar); Exclude(&LMFD); Exclude(&RMFD); Exclude(&T16000); Configure(&Joystick, MODE_EXCLUDED); Configure(&Throttle, MODE_EXCLUDED); if(Init(&EventHandle)) return 1; } int EventHandle(int type, alias o, int x) { DefaultMapping(&o, x); }
La seconde chose est de se familiariser avec Freepie: http://andersmalmgren.github.io/FreePIE/
Donc Installer le....

Ensuite quand on se sera familiarisé avec FreePie on pourra, si on désire utiliser un stick virtuel, installer VJoy (pas obligatoire je répète) : http://vjoystick.sourceforge.net/site/i ... l/download on verra plus tard!!

pour commencer avec FreePie il faut lire un peu le python (google est mon ami)

il faut savoir que le script écrit dans FreePie se relance à intervalle régulier.

Prenons un exemple:

j'utilise une voix francaise pour faire parler... je suis en WIN7 et par défaut c'est une voix anglaise
par contre la reconnaissance vocale est bie nde la langue de l'OS donc Win7 en francais = reconnaissance vocale Francaise
pour WIN8 ou WIN10 je ne sais pas si cela fonctionne comme cela
on peut la télécharger ici: https://www.4shared.com/file/uHpT6ofO/v ... le_tt.html
je crois qu'il faut créér un compte sur Shared4
voilà déjà un premier script
au lancement du script , à la première boucle starting est vrai, puis devient faux
on demande une boucle toute les 30ms environ
puis on sélectionne la voix si on a installé la voix francaise sinon mettre le nom de la voix disponible (executer C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl pour voir l'ensemble des voix (32 bits) installées )

la suite est compréhensible...

Code : Tout sélectionner

if starting: system.setThreadTiming(TimingTypes.HighresSystemTimer) system.threadExecutionInterval = 30 speech.selectVoice("ScanSoft Sebastien_Full_22kHz") if speech.said("test"): speech.say("Test validé") if speech.said("clavier") keyboard.setPressed(Key.C)
voilà déjà un premier aperçu
en sachant que dans FreePie dés que vous tapez la première lettre d'une commande, une liste s'affiche pour vous aider dans la syntaxe
Dernière modification par Rcaf_Frenchy le dim. avr. 23, 2017 10:20 am, modifié 1 fois.

Flyschool
Apprenti-Mécano
Apprenti-Mécano
Messages : 279
Inscription : 13 janvier 2009

Re: FREEPIE + VJOY une Alternative possible à TARGET

#2

Message par Flyschool »

Merci pour ce petit tuto, je pense que ça peut intéresser beaucoup de personnes ! (Dont moi si Teamspeak ou Thrustmaster se bougent pas pour régler le soucis avec Target ...)

Flyschool
Apprenti-Mécano
Apprenti-Mécano
Messages : 279
Inscription : 13 janvier 2009

Re: FREEPIE + VJOY une Alternative possible à TARGET

#3

Message par Flyschool »

Salut Frenchy, j'ai un amis qui galère à créer un profil pour son T-Flight HOTAS X pour Falcon. Serais-tu pret à nous filer un coup de main ?

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#4

Message par Rcaf_Frenchy »

Salut FlySchool check tes messages privés j'ai mis mon num de portable si toi ou ton ami veulent discuter cela sera plus simple!!

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#5

Message par Rcaf_Frenchy »

Bonjour

j'ai eu quelques questions sur le comment gérer une courbe joystick sous FreePie

oui on peut piloter une courbe joystick pour vjoy bien évidement:
pour rappel la fonction en Freepie y=filters.maprange(x, xmin,xmax,ymin,ymax)
convertit une valeur x comprise entre xmin et xmax en une valeur y comprise entre ymin et ymax.

pour creer une courbe spécifique il suffit de définir plusieurs intervalles (linéraires)

par exemple: (pour rappel les valeurs issus des joy physiques sont comprises entre -1000 et 1000 sous freepie

si nous voulons par exemple:
pour une valeur axeX entre -1000 et -950 je veux -1000 (deadzone)
pour une valeur axeX entre -950 et -700 je veux une valeur évoluant entre -1000 et -900
pour une valeur axeX entre -700 et -500 je veux une valeur évoluant entre -900 et -700
pour une valeur axeX entre -500 et -50 je veux une valeur évoluant entre -700 et 0
pour une valeur axeX entre -50 et 50 je veux une valeur à 0 (deadzone)

etc pur la suite pour avoir une symetrie....

voici un exemple de prog sous Freepie faisant cela

Code : Tout sélectionner

if axeX >= -1000 and axeX < -950: Y = -1000 elif axeX >= -950 and axeX < -700: Y = filters.mapRange(AxeX, -950, -700, -1000, -900) elif axeX >= -700 and axeX < -500: Y = filters.mapRange(AxeX, -700, -500, -900, -700) elif axeX >= -500 and axeX < -50: Y = filters.mapRange(AxeX, -500, -50, -700, 0) elif axeX >= -50 and axeX < 50: Y = 0 elif axeX >= 50 and axeX < 500: Y = filters.mapRange(AxeX, 50, 500, 0, 700) elif axeX >= 500 and axeX < 700: Y = filters.mapRange(AxeX, 500, 700, 700, 900) elif axeX >= 700 and axeX < 950: Y = filters.mapRange(AxeX, 700, 950, 900, 1000) else: Y = 1000 #metrre valeur pour vjoy entre -16383 et 16383 on met le resultat dans l'axe x de vjoy par exemple vJoy[0].x = filters.mapRange(Y, -1000, 1000, -16383, 16383)
Pièces jointes
exemple de courbe sous excel
exemple de courbe sous excel

Flyschool
Apprenti-Mécano
Apprenti-Mécano
Messages : 279
Inscription : 13 janvier 2009

Re: FREEPIE + VJOY une Alternative possible à TARGET

#6

Message par Flyschool »

:notworthy

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#7

Message par Rcaf_Frenchy »

En utilisant la puissance du langage Python, on peut réécrire les code ci-dessus par

Code : Tout sélectionner

if starting: xmin = [-1000, -950, -700, -500, -50, 50, 500, 700, 950, 1000] ymin = [-1000,-1000, -900, -700, 0 , 0, 700, 900,1000, 1000] def calculX(): for i in range(1, len(xmin)): if axeX <= xmin[i]: return filters.mapRange(axeX, xmin[i-1], xmin[i], ymin[i-1], ymin[i]) axeX = joystick[0].x vJoy[0].x = filters.mapRange(calculX(), -1000, 1000, -16383, 16383)
Avatar de l’utilisateur

cerealk
Jeune Pilote
Jeune Pilote
Messages : 1265
Inscription : 07 mai 2010

Re: FREEPIE + VJOY une Alternative possible à TARGET

#8

Message par cerealk »

Salut, tu crois qu'il serait possible de programmer une pokey avec freePIE étant donné qu'elle est aussi reconnu comme un joystick virtuel !?

Edit du 03/06:
Je m'auto réponds pour ceux qui chercheraient a savoir dans le futur :)
Bon ben ça marche en effet, après plusieurs heures sur des forums ,a chercher des exemples (mais aucun concernant la pokey), j'ai réussi a faire mon petit programme qui gère tout mon panel, c'est beaucoup plus puissant que ce qu'on pouvait faire avec le logiciel de poblab même si ça n'a pas d’interface graphique , c'est un peu comme faire du script avec target...
A suivre
I5 13600KF , 32Go DDR5 6400 CL32 , MSI Z790 Tomahawk, MSI 4070TI, W11 pro ,track IR 4 , Hotas Warthog, MFDx2, Clavier k95 RGB
Saitek Rudders, Écran: ACER XB281HK, Philips 244E

Mon Panel Desktop

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#9

Message par Rcaf_Frenchy »

oui Freepie le prends en charge si ton joystick est vu dans les peripheriques USB
Avatar de l’utilisateur

cerealk
Jeune Pilote
Jeune Pilote
Messages : 1265
Inscription : 07 mai 2010

Re: FREEPIE + VJOY une Alternative possible à TARGET

#10

Message par cerealk »

Oui merci, par contre je ne suis pas une flèche en programmation, je ne fais que recuperer des morceaux de code pour le remettre a ma sauce, j'ai réussi a comprendre comment exécuter des actions au clavier avec les switchs de mon panel (simple appuie montant donc quand on relâche la commande s 'arrête) par contre ça se complique avec mets boutons toggles , en effet la commande se répète en boucle tant qu'il n'est pas rabaisser , j'aimerais qu'elle ne s’exécute qu'une seule fois, tu as du avoir ce soucis avec le warthog!?
I5 13600KF , 32Go DDR5 6400 CL32 , MSI Z790 Tomahawk, MSI 4070TI, W11 pro ,track IR 4 , Hotas Warthog, MFDx2, Clavier k95 RGB
Saitek Rudders, Écran: ACER XB281HK, Philips 244E

Mon Panel Desktop

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#11

Message par Rcaf_Frenchy »

non je n'ai aucun souci tout est possible en programmation
il faudrait que tu me montres ton code freepie et ou est le probleme..
Avatar de l’utilisateur

cerealk
Jeune Pilote
Jeune Pilote
Messages : 1265
Inscription : 07 mai 2010

Re: FREEPIE + VJOY une Alternative possible à TARGET

#12

Message par cerealk »

Ok merci de prendre le temps de me répondre.
Voila un bout sachant qu'il y a un autre fichier pokeycontrollers.py que j'ai dans le rep pylib de freePIE pour les fonctions. (un fichier initialement prévue pour le warthog par tidzo sur GitHub que j'ai modifié pour ma config)
Je pensais mettre une condition un fois que le bouton etait sur ON mais je ne sais pas comment l’écrire.

Code : Tout sélectionner

if starting: import pokeycontrollers system.setThreadTiming(TimingTypes.HighresSystemTimer) system.threadExecutionInterval = 30 pokeyID=5 #ID de la pokey (voir position dans liste des controleurs de jeu et -1) pokey = pokeycontrollers.PokeyCard(joystick[pokeyID]) #-------------------------------------------------- Les switchs diagnostics.watch(pokey.toggles.mast() ) diagnostics.watch(pokey.toggles.alt() ) diagnostics.watch(pokey.toggles.avionic() ) diagnostics.watch(pokey.toggles.pump() ) diagnostics.watch(pokey.toggles.gear() ) diagnostics.watch(pokey.toggles.arm() ) diagnostics.watch(pokey.toggles.laser() ) diagnostics.watch(pokey.toggles.tv() ) diagnostics.watch(pokey.toggles.nav() ) diagnostics.watch(pokey.toggles.bcn() ) diagnostics.watch(pokey.toggles.land() ) diagnostics.watch(pokey.toggles.taxi() ) diagnostics.watch(pokey.toggles.pan() ) #--------------------------------------------------- axes # axes utilisés diagnostics.watch(pokey.axes.rx() ) diagnostics.watch(pokey.axes.ry() ) diagnostics.watch(pokey.axes.slider() ) #--------------------------------------------------- Les boutons diagnostics.watch(pokey.buttons.canopy() ) diagnostics.watch(pokey.buttons.ecm() ) diagnostics.watch(pokey.buttons.jam() ) diagnostics.watch(pokey.buttons.prg() ) diagnostics.watch(pokey.buttons.caution() ) diagnostics.watch(pokey.buttons.jettison() ) diagnostics.watch(pokey.buttons.trimreset() ) #---------------------------------------------------- Les codeurs (roue) diagnostics.watch(pokey.hats.codeur1() ) #---- renvoie l'etat (OFF,PLUS,MOINS...) diagnostics.watch(pokey.hats.codeur1.getRawValue() ) #---- renvoie la valeur du bouton(16,15...) diagnostics.watch(pokey.hats.codeur2() ) diagnostics.watch(pokey.hats.codeur2.getRawValue() ) #------------------------------------------------------ diagnostics.watch(pokey.buttons.caution.getTimeSinceLastStateChange() ) diagnostics.watch(pokey.buttons.caution.getTimeSinceLastPress() ) diagnostics.watch(pokey.buttons.caution.getTimeSinceLastRelease() ) diagnostics.watch(pokey.buttons.caution.getDurationOfMostRecentPressedState() ) #durée du dernier temps de pression diagnostics.watch(pokey.buttons.caution.getDurationOfMostRecentReleasedState() ) #durée du dernier temps entre 2 pressions (relachement) diagnostics.watch(pokey.buttons.caution.pressedFor(3) ) #rester appuyer au moins t(s) sec , execute l'action apres relachement. diagnostics.watch(pokey.buttons.caution.heldFor(10) ) #rester appuyé plus ou jusque t(s) , execute une action. diagnostics.watch('La programmation') ############################################################### if pokey.buttons.canopy(): #appuie en continue (tant que pressé) keyboard.setPressed(Key.C) if pokey.buttons.ecm.activatedOnce(): #appuie 1 fois (trigger) keyboard.setPressed(Key.E) if pokey.toggles.alt()=='ON': keyboard.setKeyDown(Key.A) else: keyboard.setKeyUp(Key.A)
I5 13600KF , 32Go DDR5 6400 CL32 , MSI Z790 Tomahawk, MSI 4070TI, W11 pro ,track IR 4 , Hotas Warthog, MFDx2, Clavier k95 RGB
Saitek Rudders, Écran: ACER XB281HK, Philips 244E

Mon Panel Desktop

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#13

Message par Rcaf_Frenchy »

Sauf erreur de ma part tu es en train de mélanger 2 choses...

tizdo a développé un truc sur Python spécialement pour donner un mon aux differents boutons d'un stik

FreePie gére automatiquement les joysticks et FreePie utilise aussi le langage python..et comme la pokey est vu comme un stick tu peux attaquer directement le stick de la pokey par freepie

si ton joystick est vu comme id 5

joystick[5].Getpressed[0] viendra tester si le bouton 0 a été pressé (l'equivalant du click) vrai la première fois puis faux (a toi d'affecter a quoi correspond la config du bouton 0 pour DCS)
joystick[5].Getdown[0] viendra tester si le bouton 0 est appuyé


tu peux attaquer directement ton joystick selon le nombre de bouton et d'axes


par rapport à ta programmation en utilsant la librairie de tidzo

la programmation de ton toggle correspond plus a la programmation d'un bouton continuellement appuye (correspond mieux pour le canpy())

if pokey.toggles.alt()=='ON'
keyboard.setPressed(Key.A)

tout simplement
Avatar de l’utilisateur

cerealk
Jeune Pilote
Jeune Pilote
Messages : 1265
Inscription : 07 mai 2010

Re: FREEPIE + VJOY une Alternative possible à TARGET

#14

Message par cerealk »

Oui, surement que je me complique la tache. Concernant le script de tizdo, il a crée des fonctions intéressant pour les temps de pression par exemple qui me seront utiles plus tard, il m'a permis aussi de crée des noms pour mes boutons (plus facile pour la programmation a retenir ).

concernant cette commande:

if pokey.toggles.alt()=='ON'
keyboard.setPressed(Key.A)

Oui j'ai effectivement essayé avant de demandé de l'aide, mais l'appuie sur A se répète en boucle tant que j'ai le switch sur ON , ce qui va devenir vite ennuyeux pour la suite...
il a bien développé une fonction activatedOnce() qui permet de ne faire qu'un "click" mais elle ne fonctionne que pour les boutons. J'ai d’ailleurs montré l'exemple.Je pensais pouvoir trouver la même chose pour les toggles en fait... :ouin: (je te rappelle que mes connaissances en programmation ce limite au Basic :emlaugh: , donc j'ai beaucoup de mal avec ce genre de langage mais je m'accroche :crying: )
Merci en tous cas :notworthy
I5 13600KF , 32Go DDR5 6400 CL32 , MSI Z790 Tomahawk, MSI 4070TI, W11 pro ,track IR 4 , Hotas Warthog, MFDx2, Clavier k95 RGB
Saitek Rudders, Écran: ACER XB281HK, Philips 244E

Mon Panel Desktop

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#15

Message par Rcaf_Frenchy »

Faut utilsier une variable par exemple ici alt

Code : Tout sélectionner

if starting: alt = False .... if pokey == 'ON' and not alt: keyboard.setpressed(Key.A) alt = True
Bine sur quelque part ailleurs tu as la meme chose pour remettre alt à False
Avatar de l’utilisateur

cerealk
Jeune Pilote
Jeune Pilote
Messages : 1265
Inscription : 07 mai 2010

Re: FREEPIE + VJOY une Alternative possible à TARGET

#16

Message par cerealk »

Merci!!!!
Effectivement je n’étais pas loin sauf que j'essayais de le faire avec une 'int' , j 'écrivais par ex bouton = 1 ou bouton = 0 quand relâché mais il me mettait une erreur , car je ne sais pas la déclarer correctement apriori ou erreur de = je sais pas quoi :emlaugh: , enfin bref ça fonctionne mieux avec ta déclaration de variable en bool :notworthy

Code : Tout sélectionner

if pokey.toggles.alt()=='ON' and not balt: keyboard.setPressed(Key.A) balt = True if pokey.toggles.alt()=='OFF' and balt: keyboard.setPressed(Key.B) balt = False
Merci, je vais pouvoir avancer un peu plus maintenant. :yes:
I5 13600KF , 32Go DDR5 6400 CL32 , MSI Z790 Tomahawk, MSI 4070TI, W11 pro ,track IR 4 , Hotas Warthog, MFDx2, Clavier k95 RGB
Saitek Rudders, Écran: ACER XB281HK, Philips 244E

Mon Panel Desktop

Topic author
Rcaf_Frenchy
Mécano au sol
Mécano au sol
Messages : 523
Inscription : 10 septembre 2002

Re: FREEPIE + VJOY une Alternative possible à TARGET

#17

Message par Rcaf_Frenchy »

lire quelques tutos sur le python!!! n'hésite pas si tu as quelques difficulté en programmation..a+
Répondre

Revenir à « salle: Periphériques: Hotas, Joysticks, Track-IR »