DRO Simuler l'appui d'une touche et la maintenir appuyée

  • Auteur de la discussion gaston83
  • Date de début
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #1
Bonsoir,
Je sais simuler une touche du clavier avec une Leonardo. Mais comment la maintenir appuyée dans un switch....case ?
Je voudrais le faire pour un KEY_LEFT_SHIFT;
J'ai essayé Keyboard.write, Keyboard.press... mais non
 
S
speedjf37
Compagnon
15 Oct 2009
2 039
indre et loire
Bonjour,

Pas compris l'usage que tu veux en faire ?

Pour le KEY_LEFT_SHIFT pourquoi ne pas passer temporairement en MAJUSCULE ?

ps) met ton bout de code avec le switch !

JF
 
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #3
Bonjour,

Pas compris l'usage que tu veux en faire ?
C'est vrai, j'ai été un peu radin sur ce coup...

Comme tu dois le savoir, j'essaie de mettre au point une radiocommande déportée sans fil en bluetooth pour Mach3. Manivelle et tout le saint-frusquin qui va avec...
De ce fait il y a des commandes, par exemple, lorsqu'on veut faire des avances en manuel et en continu, il faut appuyer sur un Shift (KEY_LEFT_SHIFT ou KEY_RIGHT_SHIFT) et une des flèches du clavier qui correspondent à KEY_UP_ARROW ou DOWN_ARROW ou LEFT ou RIGHT.

Voilà, c'est ce SHIFT que je voudrais garder appuyer ..
.
Pour le KEY_LEFT_SHIFT pourquoi ne pas passer temporairement en MAJUSCULE ?
C'est une bonne idée... mais quelle est le code KEY quelque chose qui fait ça ?

le bout de code: c'est pour clavier matriciel 5*4.

char key = keypad.getKey();

switch (key) {

case 'U': Keyboard.write(KEY_TAB); break; // affiche les commandes manuelles à droite dans Mach

case '0': {
Keyboard.press(KEY_LEFT_CTRL); // remise à zéro des axes X et Y
delay(100);
Keyboard.press(79); Keyboard.release(79);
Keyboard.releaseAll();
}
break;

case 'L': {
Keyboard.write(KEY_LEFT_SHIFT);
delay(100);
Keyboard.write(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
Keyboard.releaseAll();
}
break;

case 'B': Keyboard.write(KEY_DOWN_ARROW); break; // "Déplacement Bas"
case 'H': Keyboard.write(KEY_UP_ARROW); break; // "Déplacement Haut"
case 'R': Keyboard.write(KEY_RIGHT_ARROW); break; // "Déplacement à Droite"


case '#': { // Manuel / Automatique
Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;

case '*': { // Changement de saut
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;

case 'C': { // Passage Continu / Saut

Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
break;
}
}
 
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #4
Là, je met petit morceau de code qui simule l'appui du Shift Gauche... à priori la commande se fait car la led qui indique le passage en Continu s'allume mais se coupe immédiatement en fonction du delay.

case 'L': {

Keyboard.press(KEY_LEFT_SHIFT);
delay(100);
//Keyboard.write(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
Keyboard.releaseAll();
}
break;
 
Dernière édition:
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #5
Peut-être en faisant une boucle à l'intérieur du case'L' genre " tant que ... la touche est simulée ... on garde le Shift mais là on me perd :???:
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 709
Toulon ( Var )
Bonjour.
Comme tu dois le savoir, j'essaie de mettre au point une radiocommande déportée sans fil en bluetooth pour Mach3. Manivelle et tout le saint-frusquin qui va avec...
J'espère que tu nous en dira un peu plus sur ton montage s'il n'est pas couvert par un secret de fabrication, je suis curieux de savoir comment tu auras réalisé tout ça même si c'est quelque chose que je ne reproduirais pas, c'est juste pour ma culture.
Bon week-end.
Bernard.
 
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #7
Comment faire un while dans un switch-case avec la touche KEY_LEFT_SHIFT pressée ?
 
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #8
J'ai fais ça...

case 'L': Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
{
while (digitalRead(2) == LOW) { // boucle pour garder le shift appuyé
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}

Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
delay(50);
Keyboard.releaseAll();

}
}

break;


A ce moment là, même que je relâche la Keyboard.press(KEY_LEFT_ARROW), l'avance de la table continue toujours... et dès que je relâche le bouton qui correspond à (digitalRead(2), là ça s'arrête. Vous me direz c'est normal je sors de la boucle ... mais ce que je voudrais c'est que ça s'arrête quand je relâche seulement Keyboard.press(KEY_LEFT_ARROW)... :meganne:
 
Dernière édition:
gaston83
gaston83
Compagnon
17 Fev 2016
1 287
FR-71520
  • Auteur de la discussion
  • #9
Bon, tout compte fait, le fait de garder un bouton pressé + le LEFT_ARROW ou RIGHT_ARROW pour activer l'avance rapide me convient... donc on passe à la suite :-D
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 709
Toulon ( Var )
Bonjour.
Comment faire un while dans un switch-case avec la touche KEY_LEFT_SHIFT pressée ?
J'ai fais ça...
case 'L': Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
{
while (digitalRead(2) == LOW) { // boucle pour garder le shift appuyé
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}
Keyboard.press(KEY_LEFT_ARROW); Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
delay(50);
Keyboard.releaseAll();
}
}
break;
A ce moment là, même que je relâche la Keyboard.press(KEY_LEFT_ARROW), l'avance de la table continue toujours... et dès que je relâche le bouton qui correspond à (digitalRead(2), là ça s'arrête. Vous me direz c'est normal je sors de la boucle ... mais ce que je voudrais c'est que ça s'arrête quand je relâche seulement Keyboard.press(KEY_LEFT_ARROW)... :meganne:
Rien que de lire ça j'ai mal au crane !!!!:smt100
Bon dimanche.
Bernard.
 
fauxjetons
fauxjetons
Compagnon
25 Août 2011
1 772
33220 Aquitaine
salut
pour le montage que je voudrais faire fonctionner #12
pour bouger la table de droite a gauche
( faire tourner le diviseur )

a la place d une touche sur le clavier
j ai prévue est j ai installer est brancher un joystick
j ai pas trouver le programe pour le faire fonctionner
a plus
 
S
speedjf37
Compagnon
15 Oct 2009
2 039
indre et loire
salut
pour le montage que je voudrais faire fonctionner #12
pour bouger la table de droite a gauche
( faire tourner le diviseur )

a la place d une touche sur le clavier
j ai prévue est j ai installer est brancher un joystick
j ai pas trouver le programe pour le faire fonctionner
a plus
Bonjour,

Quel joystick ?

En USB il faudrait un matériel USB Host (pas possible).

Si c'est un ancien analogique avec prise DB15 ou un module classique

Le montage consiste à lire la tension délivrée par les 2 potentiomètres du joystick



JF
 
ncx94
ncx94
Nouveau
8 Oct 2012
42
Paris
Bonjour,

Quel joystick ?

En USB il faudrait un matériel USB Host (pas possible).

Si c'est un ancien analogique avec prise DB15 ou un module classique

Le montage consiste à lire la tension délivrée par les 2 potentiomètres du joystick



JF
Tu peux avoir de l'usb host sur certains arduinos, ou sinon avec un shield :)
 
S
speedjf37
Compagnon
15 Oct 2009
2 039
indre et loire
Bonjour,

Pour faire une manette:

Une version de Leonardo originale:

l’écran qui va avec:

un boitier à imprimer

JF
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut