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

  • Auteur de la discussion gaston83
  • Date de début
G

gaston83

Compagnon
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
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
 
G

gaston83

Compagnon
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;
}
}
 
G

gaston83

Compagnon
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:
G

gaston83

Compagnon
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 :???:
 
P

pinou29

Compagnon
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.
 
G

gaston83

Compagnon
Comment faire un while dans un switch-case avec la touche KEY_LEFT_SHIFT pressée ?
 
G

gaston83

Compagnon
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:
G

gaston83

Compagnon
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
 
P

pinou29

Compagnon
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.
 
F

fauxjetons

Compagnon
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
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
 
N

ncx94

Ouvrier
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
Bonjour,

Pour faire une manette:

Une version de Leonardo originale:

l’écran qui va avec:

un boitier à imprimer

JF
 

Sujets similaires

L
Réponses
11
Affichages
1 670
lecoyote
L
D
Réponses
6
Affichages
849
Donuts
D
G
Réponses
88
Affichages
11 232
gaston83
G
S
Réponses
11
Affichages
1 003
Contrariness
C
Père-Pendiculaire
Réponses
23
Affichages
607
Père-Pendiculaire
Père-Pendiculaire
S
Réponses
3
Affichages
672
tournele
tournele
S
Réponses
1
Affichages
356
scrollsawpuzzles
S
L
Réponses
10
Affichages
1 119
dh42
françois44
Réponses
173
Affichages
4 586
jacounet
jacounet
F
Réponses
1
Affichages
412
atsju
A
B
Réponses
29
Affichages
13 496
Lou78
L
R
Réponses
0
Affichages
9 833
Rakat
R
Haut