VEAF
    • Site VEAF
    • Catégories
    • Récent
    • Populaire
    • Utilisateurs
    • Groupes
    • calendar
    • S'inscrire
    • Se connecter

    Définir des commandes pour des interrupteurs à 2 ou 3 positions

    Outils, tutoriels et documents
    tutoriel
    7
    21
    1.8k
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • ZipZ
      Zip Membre VEAF
      dernière édition par Zip

      C’est un sujet qui a été abordé aujourd’hui par Perka. Je capitalise sur l’explication que je lui ai donné, et je vous transmets ici le résultat de mes recherches.

      Situation

      Sur nos manettes de bourgeois, il y a souvent, en plus de boutons poussoirs simples ou sous forme de “hats” (chapeaux, comme le trim par exemple), des interrupteurs qui peuvent prendre plusieurs positions maintenues.

      dbffae41-eb35-44ac-ba16-6337d74b626c-image.png

      Par exemple, sur la manette des gaz du Warthog, il y a un interrupteur “Flaps” (1) qui peut prendre trois positions, et un interrupteur “EAC” (2) qui peut en prendre 2.

      On constate que, quand souhaite utiliser un de ces interrupteurs pour mapper une commande double de DCS (par exemple, Master Arm ON et OFF), cela ne fonctionne pas comme prévu

      Explication

      La raison est que toutes les positions de ces interrupteurs ne génèrent pas une commande dans DCS.

      Globalement, un joystick complexe comme la manette des gaz du Warthog est vu dans Windows (par la librairie DirectX, qui sert à l’interfaçage direct du matériel pour les jeux) comme un ensemble d’axes et de boutons qui sont soit pressés (ON), soit non (OFF).

      Par exemple, le bouton qui vous sert à larguer des bombes sur votre joystick est un simple poussoir, dont la position pressée déclenche un signal électrique qui va être reconnu par Windows comme le fait que le bouton DirectX est pressé (ON). Quand on le lache physiquement, le signal se coupe, et Windows cesse de voir ce bouton comme ON ; mécaniquement, il est considéré comme OFF (le seul autre état).

      Dans le cas d’un bouton à plusieurs positions (comme l’interrupteur “EAC”), une seule des deux positions déclenchera un signal électrique (la position “vers l’avant” dans le cas de l’EAC. Et donc seule cette position correspond à un bouton DirectX pour Windows. L’autre est simplement neutre.
      Si vous voulez mapper dans DCS la position basse de cet interrupteur, vous constaterez que c’est impossible.

      Pour un interrupteur à trois positions (comme l’interrupteur “FLAPS”) c’est pareil : seules 2 des 3 positions possibles seront actives, la troisième correspondra simplement à une absence de signal.

      Solution

      Il est possible de créer des commandes dans DCS, en éditant les fichiers .lua qui sont dans les répertoires Input des modules comme par exemple le fichier Mods\aircraft\FA-18C\Input\FA-18C\joystick\default.lua

      On peut créer un contrôle qui exécute une action spécifique quand un bouton DirectX est enfoncé, et une autre quand il ne l’est plus.
      Par exemple, on peut créer un contrôle qui déclenche le Master Arm (ON) quand le bouton DirectX correspondant à l’interrupteur “EAC” en position haute est enfoncé (et maintenu, donc) et qui déclenche le Master Arm (OFF) quand il n’est plus enfoncé (donc, quand on déplace l’interrupteur dans l’autre position).
      Voici le contrôle correspondant :

      {down = SMS_commands.MasterArmSw, up = SMS_commands.MasterArmSw, cockpit_device_id = devices.SMS, value_down = 1.0, value_up = 0.0, name = _('Master Arm Switch 2-Pos ARM/SAFE'), category = {_('Toggle Switches'), _('Master Arm Panel')}},

      Je vous l’explique rapidement.

      • down= correspond à la commande qui est actionnée quand le bouton est enfoncé (en l’occurence, SMS_commands.MasterArmSw)
      • up= correspond à la commande qui est actionnée quand le bouton cesse d’être enfoncé (en l’occurence, SMS_commands.MasterArmSw ; oui, vous avez bien lu, c’est la même que pour down ! C’est la valeur qui va être différente - voir plus bas)
      • value_down= est la valeur (le paramètre) envoyé à la commande décrite dans down= quand le bouton est enfoncé (ici, 1.0 qui correspond à la montée de l’interrupteur Master Arm dans le cockpit)
      • value_up= est la valeur (le paramètre) envoyé à la commande décrite dans up= quand le bouton est enfoncé (ici, 0.0 qui correspond à la descente de l’interrupteur Master Arm dans le cockpit)
      • cockpit_device_id= va de paire avec up= et down= pour définir l’instrument qui reçoit la commande.
      • category= est la liste des catégories dans lesquelles le contrôle sera rangé (qu’on voit dans la liste déroulante catégories dans le dialogue Controls Options)
      • name= est le nom que le contrôle aura dans le dialogue Controls Options

      En pratique, ici on crée un contrôle (unique) qu’on pourra assigner à la position active d’un interrupteur (comme EAC par exemple), et qui appellera la commande SMS_commands.MasterArmSw dans l’instrument devices.SMS avec la valeur 1.0 quand l’interrupteur est dans cette position, et la valeur 0.0 quand il n’y est plus.

      Concrètement, cela permet de mettre le Master Arm sur ON quand l’interrupteur physique est dans une position, et sur OFF quand il est dans une autre.

      Aller plus loin

      C’est un domaine bien compliqué, heureusement bien décrit et documenté par l’excellent LeCuvier sur le forum d’Eagle Dynamics (en anglais).

      Vous pouvez voir ce que j’ai choisi de mettre dans mes mods “Config - Keys - XXXX” qui sont à votre disposition sur mon Google Drive (compatibles OvGME, voir mon tutoriel sur OvGME)

      [Edit du 14.05.2020]
      Depuis, on a mis en place les bibliothèques OvGME de la VEAF que vous pouvez découvrir dans un tutoriel que je vous propose.
      Si vous vous demandez ce qu’est OvGME, lisez cet autre tutoriel qui vous l’explique en détail.

      N’hésitez pas à me demander si vous avez des questions !

      Zip

      KervinouK 1 réponse Dernière réponse Répondre Citer 2
      • skywalkerS
        skywalker
        dernière édition par

        Bien joué … et surtout bien expliqué 👍

        À la guerre il est important de savoir reconnaître l’ennemi. Car, sans ennemi, la guerre est ridicule.

        1 réponse Dernière réponse Répondre Citer 0
        • DarriusD
          Darrius
          dernière édition par

          Merci ZIP vais étudier ça avec une tablette de Doliprane à coté et un cerveau de rechange lol 🙂

          Voler n'est pas dangereux c'est s'écraser qui l'est

          CorsairC 1 réponse Dernière réponse Répondre Citer 0
          • phebusP
            phebus Membre du bureau
            dernière édition par phebus

            Je crois que j’ai compris le principe
            Je regarde un inter 2 positions pour commencer et ensuite je me met sur un trois comme les volets. Je crois avoir une info sur les codes commandes dcs avec le tuto de Stream deck
            Affaire à suivre, merci pour le tuyau @Zip

            "Si tu crois que la violence ne résout rien, c'est que t'as pas frappé assez fort"…
            Pilote A10

            1 réponse Dernière réponse Répondre Citer 0
            • ZipZ
              Zip Membre VEAF
              dernière édition par

              J’ai mis à jour mon post en modifiant les références à mes mods qui sont désormais dans la bibliothèque OvGME DCS game files de la VEAF.
              Je t’invite à y jeter un coup d’oeil.

              Zip

              1 réponse Dernière réponse Répondre Citer 0
              • griffinG
                griffin
                dernière édition par

                Excellent! Merci @Zip!
                Je vais essayer ça au plus vite.
                Ca passe l’integrity check?

                ZipZ 1 réponse Dernière réponse Répondre Citer 0
                • ZipZ
                  Zip Membre VEAF @griffin
                  dernière édition par

                  @griffin non malheureusement.
                  Globalement, les mods user files passent l’IC, les game files non. Il y a des exceptions.

                  Zip

                  1 réponse Dernière réponse Répondre Citer 0
                  • griffinG
                    griffin
                    dernière édition par

                    Pour tous, voici le code pour faire le 3 Way Switch avec les Flaps du F18

                    {down = ctrl_commands.FlapSw, up = ctrl_commands.FlapSw, cockpit_device_id = devices.CONTROL_INTERFACE,	value_down =  1.0, value_up = 0.0, name = _('FLAP 3 way Switch - Up'),	category = {_('Toggle Switches'),_('Left Vertical Panel')}},
                    {down = ctrl_commands.FlapSw, up = ctrl_commands.FlapSw, cockpit_device_id = devices.CONTROL_INTERFACE,	value_down =  -1.0, value_up = 0.0, name = _('FLAP 3 way Switch - Down'),	category = {_('Toggle Switches'),_('Left Vertical Panel')}},
                    

                    Merci professeur @ZIp !

                    phebusP ZipZ 2 réponses Dernière réponse Répondre Citer 0
                    • phebusP
                      phebus Membre du bureau @griffin
                      dernière édition par

                      merci @griffin

                      "Si tu crois que la violence ne résout rien, c'est que t'as pas frappé assez fort"…
                      Pilote A10

                      1 réponse Dernière réponse Répondre Citer 0
                      • ZipZ
                        Zip Membre VEAF @griffin
                        dernière édition par

                        @griffin pour info c’est déjà dans le mod Config - Keys - FA-18C Keybinds du repository VEAF 😉

                        Zip

                        griffinG 1 réponse Dernière réponse Répondre Citer 0
                        • griffinG
                          griffin @Zip
                          dernière édition par

                          @Zip oui, c’était pour donner un exemple de switch avec 3 pos.

                          1 réponse Dernière réponse Répondre Citer 0
                          • phebusP
                            phebus Membre du bureau
                            dernière édition par

                            @Zip le fichier mod FA-18C ne peut être télécharger

                            "Si tu crois que la violence ne résout rien, c'est que t'as pas frappé assez fort"…
                            Pilote A10

                            1 réponse Dernière réponse Répondre Citer 0
                            • ZipZ
                              Zip Membre VEAF
                              dernière édition par

                              @phebus mais si, je viens de tester.
                              Tu utilises bien OvGME ? Tu as lu le tutoriel ?

                              Zip

                              1 réponse Dernière réponse Répondre Citer 0
                              • phebusP
                                phebus Membre du bureau
                                dernière édition par

                                Système stream deck fonctionne en bi-directionnel avec DCS
                                Les retours d’infos du jeu remonte sur le stream deck comme, train rentré ou sorti avec un vrai retour d’information de dcs, les rotatifs peuvent être utilisés avec la souris ou sur le stream deck le retour d’information est le même partout.
                                Exemple affichage en temps réel des canaux radio comm1 et comm2, affichage du canal et de la fréquence dans l’ufc.
                                Retour visuel des 5 boutons pour les fonctions AP IFF TCN D/T…chaque bouton est fonctionnel et un retour d’information visuel sur l’état est instantané sur le jeu et sur le clavier, le rafraichissement est fait toute les 0.05 seconde.
                                Je continue à creuser…

                                "Si tu crois que la violence ne résout rien, c'est que t'as pas frappé assez fort"…
                                Pilote A10

                                1 réponse Dernière réponse Répondre Citer 0
                                • CorsairC
                                  Corsair @Darrius
                                  dernière édition par

                                  Merci Zip !

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • KervinouK
                                    Kervinou @Zip
                                    dernière édition par

                                    info

                                    @zip Lien HS : “découvrir le tutoriel” en bas du premier message

                                    529310d0-c5e3-48bf-998d-26d2df0fbdc3-image.png

                                    Kilo Echo Romeo Victor

                                    ZipZ 1 réponse Dernière réponse Répondre Citer 0
                                    • ZipZ
                                      Zip Membre VEAF @Kervinou
                                      dernière édition par

                                      @kervinou merci !

                                      Zip

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • KervinouK
                                        Kervinou
                                        dernière édition par Kervinou

                                        Bien vu @Zip , je viens de retrouver le sujet !

                                        Et j’en ai profité pour me créer une commande deux positions pour le OFF/ARM du Laser sur le F-16C

                                        Je partage 😉

                                                -- LASER ARM Switch
                                        		{down = sms_commands.LaserSw, up = sms_commands.LaserSw, cockpit_device_id = devices.SMS, value_down = 1.0, value_up = 0.0, name = _('LASER ARM Switch - OFF else ARM'), category = {_('Instrument Panel'), _('Quaggles Custom')}},
                                        
                                        

                                        Et je viens aussi de me faire le switch 3 positions pour les lumières de la roulette de nez du Mirage F1

                                                -- Landing light control ARRET-LAND-ROUL
                                                {down = devCmds.Cmd310, up = devCmds.Cmd310, cockpit_device_id = devices.MAIN, value_down = 0.0, value_up = 0.5, name = _('Landing light control - OFF else LAND'), category = {_('Left wall'), _('Exterior lighting'), _('Quaggles Custom')}},
                                                {down = devCmds.Cmd310, up = devCmds.Cmd310, cockpit_device_id = devices.MAIN, value_down = 1.0, value_up = 0.5, name = _('Landing light control - LAND else TAXI'), category = {_('Left wall'), _('Exterior lighting'), _('Quaggles Custom')}},
                                        
                                        

                                        Kilo Echo Romeo Victor

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • KervinouK
                                          Kervinou
                                          dernière édition par

                                          MAJ nécessaire suite dernière version de DCS OB
                                          https://github.com/Quaggles/dcs-input-command-injector/releases

                                          Kilo Echo Romeo Victor

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • ZipZ
                                            Zip Membre VEAF
                                            dernière édition par

                                            Merci, bon à savoir.
                                            Je mets à jour le mod sur OvGME dès que possible

                                            Zip

                                            ZipZ 1 réponse Dernière réponse Répondre Citer 0
                                            • Premier message
                                              Dernier message