Mauvaises touches avec un digispark

Bonjour a tous
j'ai un petit (gros) problème avec mon digispark que je voudrais utiliser pour effectuer des raccourcis clavier : il fonctionne bien, je peux téléverser dessus, il m'envoie des appuis sur des touches, mais dès que je veux "appuyer" sue "M" je reçois une virgule...
mon code (test pour lancer la console et faire "ipconfig") :

#include "DigiKeyboard.h"
int pinled = 1;

void setup()
{
	pinMode(3, INPUT);
	digitalWrite(3, HIGH);
}


void loop()
{
	DigiKeyboard.sendKeyStroke(0);
	if(digitalRead(3) == LOW)
	{
	    //DigiKeyboard.sendKeyPress(KEY_R, MOD_GUI_LEFT);
		DigiKeyboard.delay(10);
		DigiKeyboard.sendKeyStroke(0, 0);
		DigiKeyboard.sendKeyStroke(KEY_C);
		DigiKeyboard.sendKeyStroke(KEY_M);
		DigiKeyboard.sendKeyStroke(KEY_D);
		DigiKeyboard.sendKeyStroke(KEY_ENTER);
		DigiKeyboard.delay(20);
		DigiKeyboard.sendKeyStroke(KEY_I);
		DigiKeyboard.sendKeyStroke(KEY_P);
		DigiKeyboard.sendKeyStroke(KEY_C);
		DigiKeyboard.sendKeyStroke(KEY_O);
		DigiKeyboard.sendKeyStroke(KEY_N);
		DigiKeyboard.sendKeyStroke(KEY_F);
		DigiKeyboard.sendKeyStroke(KEY_I);
		DigiKeyboard.sendKeyStroke(KEY_G);
		DigiKeyboard.sendKeyStroke(KEY_ENTER);
	}
	
}

dans DigiKeyboard.h la touche M est associée à 10 :

#define KEY_J 0x0d // Keyboard j and J
#define KEY_K 0x0e // Keyboard k and K
#define KEY_L 0x0f // Keyboard l and L
#define KEY_M 0x10 // Keyboard m and M
#define KEY_N 0x11 // Keyboard n and N
#define KEY_O 0x12 // Keyboard o and O

J'ai cherché sur Internet, dans la table de référence de l'USB (https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf)
je vois que 10 est le bon code pour M...
Du coup je sais pas trop quoi faire, si quelqu'un à une solution je suis preneur...
Merci !

hello
juste une idée:
ton histoire d'inversion "m" et "," me fait penser à une inversion clavier "azerty" et "querty"

ah oui peut être mais c'est bizarre parce que j'ai l'impression que toutes les autres touches fonctionnent correctement. Après faudrait que je fasse un code qui essaye tout le clavier mais ça va être très long...
En plus si c'est ça (type de clavier) le problème, ça m’embête un peu de devoir passer tout mon PC en QWERTY...
sinon le code "m" en AZERTY c'est quoi ?

vas voir ICI

Merci mais le problème c'est que dans la table on voit que "m" et "," correspondent à 109 ou 44 alors que dans mon code je reçois "," au lieu de "m" quand je lui demande de faire 10
en tout cas c'est comme ça que la table de DigiKeyboard.h est faite...

Leonito2003:
Merci mais le problème c'est que dans la table on voit que "m" et "," correspondent à 109 ou 44 alors que dans mon code je reçois "," au lieu de "m" quand je lui demande de faire 10
en tout cas c'est comme ça que la table de DigiKeyboard.h est faite...

Bonjour
:smiley:
DigiKeyboard.println("IPCONFIG");

avec ce code :

#include "DigiKeyboard.h"
int pinled = 1;

void setup()
{
	pinMode(3, INPUT);
	digitalWrite(3, HIGH);
}


void loop()
{
	DigiKeyboard.sendKeyStroke(0);
	if(digitalRead(3) == LOW)
	{
	    DigiKeyboard.println("CMD");
	    DigiKeyboard.delay(20);
	    DigiKeyboard.println("IPCONFIG");

	}
	
}

J'obtiens ce texte :
mE.QHmGF/Q§

:confused:

Leonito2003:
avec ce code :

#include "DigiKeyboard.h"

int pinled = 1;

void setup()
{
pinMode(3, INPUT);
digitalWrite(3, HIGH);
}

void loop()
{
DigiKeyboard.sendKeyStroke(0);
if(digitalRead(3) == LOW)
{
   DigiKeyboard.println("CMD");
   DigiKeyboard.delay(20);
   DigiKeyboard.println("IPCONFIG");

}

}




J'obtiens ce texte : 
mE.QHmGF/Q§

:/

j'assume qu tu es sous windows
ouvre notepad
positionne toi dedans et connecte/reset le digispark
tu obtiens quoi ?

ça : mE.QHmGF/Q§
avec toujours
...
DigiKeyboard.println("CMD")
DigiKeyboard.println("IPCONFIG")
...

Example:

j'ai trouvé ceci
il semble que tu doives définir dire à la librairie quel clavier tu utilises
avant d'inclure la librairie.

"
#define kbd_tr_tr
#include "DigiKeyboard.h"

You can use:

kbd_tr_tr
kbd_be_be
kbd_cz_cz
kbd_da_dk
kbd_de_de
kbd_en_us
kbd_es_es
kbd_fi_fi
kbd_fr_fr
kbd_it_it
kbd_pt_pt
"

tu dois donc avoir en tête de ton prg

#define kbd_fr_fr
#include "DigiKeyboard.h"

Leonito2003:
ça : mE.QHmGF/Q§
avec toujours
...
DigiKeyboard.println("CMD")
DigiKeyboard.println("IPCONFIG")
...

Augmente le digikeyboard delay (passe à 500)
Je n'ai pas là de digispark sous la main pour faire un essai

tu dois donc avoir en tête de ton prg

#define kbd_fr_fr
#include "DigiKeyboard.h"

avec ça j'obtiens ;EÀH;GF7A? sur mon éditeur de texte...
Je pense qu'il n'y a que 10 caractères contre 11 dans mE.QHmGF/Q§ sans la ligne en début de code car il doit prendre le "D" pour un appui sur shift et le "C" pour un "à", ensemble qu'il transforme en un seul truc, le "À"...

Augmente le digikeyboard delay (passe à 500)

avec le délais, c'est pareil, j'obtiens juste les trois premier carctères puis 500ms après les 8 suivants...

Leonito2003:
avec ça j'obtiens ;EÀH;GF7A? sur mon éditeur de texte...
Je pense qu'il n'y a que 10 caractères contre 11 dans mE.QHmGF/Q§ sans la ligne en début de code car il doit prendre le "D" pour un appui sur shift et le "C" pour un "à", ensemble qu'il transforme en un seul truc, le "À"...
avec le délais, c'est pareil, j'obtiens juste les trois premier carctères puis 500ms après les 8 suivants...

Essaye çà
compile OK
mais comme déjà dis , j n'ai pas de quoi testé plus avant aujourd'hui

#include "DigiKeyboard.h"

void setup() {
  // don't need to set anything up to use DigiKeyboard
}


void loop() {
  // this is generally not necessary but with some older systems it seems to
  // prevent missing the first character after a delay:
  DigiKeyboard.sendKeyStroke(0);

  // Type out this string letter by letter on the computer (assumes US-style
  // keyboard)
  
  // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  // if doing keyboard stuff because it keeps talking to the computer to make
  // sure the computer knows the keyboard is alive and connected
  


//
DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT  ); // press the windows key
DigiKeyboard.delay(2000); // wait 
DigiKeyboard.println("cmd");
DigiKeyboard.delay(2000); // wait

DigiKeyboard.println("IPCONFIG");

delay(5000); 
}

j'ai :
menu windows
(Dans la barre de recherche) ê*
QHmGF/Q§
et ça recommence
chaque ligne est après un délais de 2 sec
pas top donc...

Je suis désolé d’insister peut-être un peu, mais la j’ai vraiment besoin d’aide !
Je ne comprends pas du tout pourquoi j’obtiens un truc aussi anarchique, et je trouve rien qui marche sur internet : source de DigiKeyboard.h, référence USB, table ASCII...
Merci à ceux qui sont déjà passés et à ceux qui passeront pour aider !

Leonito2003:
Je suis désolé d’insister peut-être un peu, mais la j’ai vraiment besoin d’aide !
Je ne comprends pas du tout pourquoi j’obtiens un truc aussi anarchique, et je trouve rien qui marche sur internet : source de DigiKeyboard.h, référence USB, table ASCII...
Merci à ceux qui sont déjà passés et à ceux qui passeront pour aider !

Bonjour
Rapidement testé çà
j'ai mis des délais "alakon" 8)

çà fonctionne sous windows10

#include "DigiKeyboard.h"

void setup() {
  // don't need to set anything up to use DigiKeyboard
  DigiKeyboard.sendKeyStroke(0);
}


void loop() {
  // this is generally not necessary but with some older systems it seems to
  // prevent missing the first character after a delay:
  //DigiKeyboard.sendKeyStroke(0);

  // Type out this string letter by letter on the computer (assumes US-style
  // keyboard)

  // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  // if doing keyboard stuff because it keeps talking to the computer to make
  // sure the computer knows the keyboard is alive and connected



  //
  DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT  ); // press the windows key
  delay(2000);
  DigiKeyboard.print("c");
  DigiKeyboard.print(";");
  DigiKeyboard.println("d");
  delay(10000);

  DigiKeyboard.println("IPCONFIG");

  delay(10000);
}

Alors, après test, ton code ne marche pas, j'obtiens ^"* puis QHmGF/Q§ après un délais, le tout dans le menu démarrer...
Peut être que nos bibliothèques sont différentes, pourtant je viens de réinstaller DigiKeyboard.h vu que j'avais modifié 2-3 #define UNE_TOUCHE xxx avec des tables de l'internet mondial, mais avant et après réinstallation j'ai ce texte écrit par la carte.

Apparemment ce serait un mappage US-only dans scancode-ascii-table.h qui échange les caractères et il faudrait tout changer aux bonnes valeurs, en plus je trouve des bibliothèques modifiées pour les claviers allemands, mais pas français... :disappointed_relieved:

Leonito2003:
Apparemment ce serait un mappage US-only dans scancode-ascii-table.h qui échange les caractères et il faudrait tout changer aux bonnes valeurs, en plus je trouve des bibliothèques modifiées pour les claviers allemands, mais pas français... :disappointed_relieved:

Tout ce que je peux faire à cet instant est de te joindre la lib digikeyboard utilisée pour la compile de mon programme
https://www.cjoint.com/doc/19_05/IEur2s6EoJf_digikeyboard.zip

ok merci j'essaye ça