Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment simuler un clavier? Stream deck arduino

    31 mars 2021 à 20:36:09

    Bonjour à tous, j’ai un projet en électronique qui consiste à créer des « macros » avec des boutons poussoir et simuler l’appui de plusieurs touches (par exemple presser simultanément CTRL+ C) pour faire une sorte de Stream Deck si vous connaissez.

    Mais je ne sais pas quoi utiliser pour simuler le clavier. J’ai déjà utilisé en Arduino la librairie Keyboard.h mais j’ai eu des problèmes et j’ai deux fois de suite casser la carte Arduino… je vous appel donc a l’aide pour avoir quelques renseignements concernant les alternatives que je peux utiliser.


    Merci d’avance

    Robin 

    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2021 à 16:26:53

      Le problème de l'Arduino UNO, c'est qu'il ne bénéficie pas de port USB natif pouvant émuler un clavier.

      Il y a bien un second microprocesseur qui fait la liaison entre le processeur principal (celui qui exécute ton code) et le port USB, mais celui-ci se limite à l'émulation d'un port Serie qui sert à la reprogrammation et au dialog de debug avec la classe Serial.

      Il est possible de reprogrammer ce processeur secondaire pour lui faire émuler un clavier mais en faisant cela, on perd l'émulation du Serial, ce qui veut dire qu'il n'est plus possible de reprogrammer la carte (car la reprogrammation se base sur le Serial), ni de debugger sont programme en affichant des messages avec Serial.print.

      Bref, ce n'est pas pratique du tout...

      Je te conseille vivement d'utiliser des cartes qui ont un port USB natif que l'on peut utiliser librement sans casser la liaison Serial qui sert à la reprogrammation.

      Tu as par exemple la carte Arduino DUE ou certaines cartes Teensy qui font ça très bien.

      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2021 à 14:42:48

        Salut,

        Tu trouveras surement des pistes ici : https://www.obdev.at/products/vusb/index.html

        Quand j'étais à l'école, j'avais du réaliser un projet avec un ATmega8 sur un port USB (un vrai, pas une émulation série).
        C'est un peu grand papa de l'atmega328 de ton arduino uno ^^ et ça utilisait la librairie de ce projet.

        • Partager sur Facebook
        • Partager sur Twitter
          3 avril 2021 à 12:19:30

          Salut,

          Merci a tous pour vos réponse et je vais me renseigner de suite !  :D  au passage, concernant la librairie a utiliser par contre, la dernière fois elle était en qwerty… 

          Comment je pourrais la passer en azerty svp

          (je précise que c'etait keyboard.h)

          Merci d'avance et encore merci pour vos réponses 

          • Partager sur Facebook
          • Partager sur Twitter
            3 avril 2021 à 16:23:37

            Le clavier n'envoie pas des caractères, mais des positions de touches (scancode), c'est l'OS qui détermine la traduction de cette position en code ascii ou autres. 

            Comme la bibliothèque Keyboard de l'arduino prend du texte en entrée, dans Keyboard.cpp, il y a une table qui va permettre de traduire le texte en une liste de scancodes. Cette table est prévue pour un clavier anglais (probablement US), et quand l'OS va recevoir le scancode, elle va le retraduire en texte en supposant que le clavier est français.

            Pour avoir le bon code, il faut soit changer la table dans Keyboard.cpp, soit configurer le périphérique en tant que clavier anglais. Tu peux trouver des versions de Keyboard.cpp pour différentes dispositions de clavier avec google, par exemple: https://github.com/Necr0tizing/ArduinoKeyboardLayouts 

            • Partager sur Facebook
            • Partager sur Twitter
              14 avril 2021 à 13:47:58

              Salut, merci beaucoup Alexis je vais faire ainsi. 

              J'avais une autre question aussi, quel carte me conseillerez vous pour ce projet ? 

              • Partager sur Facebook
              • Partager sur Twitter
                16 avril 2021 à 16:24:08

                La carte la plus intéressante en ce moment est le Raspberry Pi Pico. Son support officiel vient juste d'être ajouté à l'IDE Arduino (moins d'une semaine). L'API pour le clavier n'est pas la même que les autres cartes Arduino, puisqu'elle passe par l'API Mbed, mais ce n'est pas plus compliqué (https://os.mbed.com/handbook/USBKeyboard). La conversion caractère -> scancode est gérée par un tableau dans un des fichiers la bibliothèque, comme pour l'API Arduino: https://github.com/arduino/ArduinoCore-mbed/blob/master/libraries/USBHID/USBKeyboard.cpp 

                Elle est probablement surdimensionnée pour ton projet en termes de broches, mémoire RAM/Flash ou puissance, mais elle fait partie des cartes les moins chères avec USB natif (en micro USB), et comme elle est produite par la fondation Raspberry Pi, elle devrait avoir une communauté d'utilisateurs importante (donc plus d'exemples de réalisations l'utilisant). Tu as aussi le choix de l'utiliser avec les langages Micropython ou Circuitpython plutôt que le C++.

                Comme alternatives, dans les mêmes gammes de prix (en USB Type C), tu as également la Seeeduino Xiao et les "Blackpills" F401 et F411, qui sont également supportées dans l'IDE Arduino après installation des liens des fabricants dans l'IDE et fonctionnent accessoirement également sous Micropython et CircuitPython.

                Toutes ces cartes ont leur bootloader USB en ROM, donc tu ne peux pas les "casser"/"bricker" en uploadant un mauvais firmware.

                • Partager sur Facebook
                • Partager sur Twitter

                Comment simuler un clavier? Stream deck arduino

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown