Emuler précisément des appuis de touches de clavier USB sur un jeu

Bonjour,

Je souhaiterais mettre en place un ARDUINO en émulation de clavier USB. Jusque là à priori rien de très complexe :slight_smile:
Un fichier script texte permettra de gérer des séquences d'appuis de touches durant une certaine durée
Par exemple :
de 0 à 400 millisecondes appui sur la touche A
de 126 à 289 millisecondes appui sur la touche B
de 314 à 520 millisecondes appuis sur la touche C
J'aurai besoin de gérer l'appui simultané de 3 ou 4 touches maxi.
Je pense que la précision de la milliseconde est suffisante, à voir si ARDUINO permet d'aller encore plus précisément?
La durée d'une séquence d'appuis de touche devrait pouvoir être de l'ordre de 1 ou 2 minutes.

J'avais émulé un clavier il y a quelques années et de mémoire j'étais parti sur un ATMEGA 32U4 qui possédait son propre USB. Je ne crois plus avoir cet ARDUINO en stock...

A ce jour, sur quel type de puce me conseillez-vous de démarrer? J'ai quelques ESP8266, je n'ai pas pour le moment d'ESP32...

Comment devrais-je penser mon programme de façon à ce que les appuis soient réalisés le plus précisément possible sur l'échelle du temps? Devrais-je utiliser des interruptions, chose que je n'ai jamais faite pour le moment?

Globalement quels sont vos conseils?

Merci par avance :slight_smile:

Bonjour,

Pour émuler un clavier usb, le plus simple est effectivement d'utiliser une carte avec un ATMEGA 32U4.
Ces cartes existent toujours c'est l'arduino leonardo ou l'arduino micro

Tu appuies manuellement sur tes boutons? Si c'est la cas tu es très loin de maitriser la milliseconde (ou alors tu es Flash)

Merci.
C'est justement le script qui va déclencher les appuis de touches :slight_smile:

votre Arduino pourra faire mieux que la ms. Je n'ai jamais mesuré le temps pris pour envoyer une séquence cela dit...

Une programmation dite bloquante sera-t-elle suffisante ou faudra-t-il passer par une programmation dite non bloquante? Il y a une notion de quasi temps réel qui m'interroge...?

Où puis-je trouver la vitesse de réponse du module qui gère l'USB? L'Arduino pourra en effet gérer du temps sur des échelles de l'ordre de quelques microsecondes, mais qu'en est-il du temps de réponse de l'USB?

Merci :slight_smile:

Bonjour
pour faire ce que tu veux relativement facilement avec l'IDE arduino , il y a le 32U4 (leonardo,et dérivé) et le pico2040.

pour regarder ce qui se passe temporellement "à pas cher"

  • un analyseur logique clone saleae
  • wireshark avec une sonde USBcap

pour

Comment te répondre sans en savoir plus sur ton projet?
Je suis quand même interpellé par le fait que l'émulation d'un clavier nécessite une précision de 1ms voire meilleure.

oui les descripteurs de clavier ont un polling interval qui peut être assez élevé et le driver côté hôte va même rajouter sa couche sans doute.. A mon avis 1ms pour traverser les couches USB est arrivé à l'application est pas réaliste

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.