et le code actuel...
/*---------------------------------------------------------------------------------------
'* jpbbricole 2019 03 13
'* modifié gaston 83 (ajout du bouton sur pin 2)
et l'aide de speedf37
*/
#include <Encoder.h> // Gestion bouton rotatif
#include <Key.h>
#include <Keypad.h>
#include <Keyboard.h>
#include <HID.h>
//------------------------------------- Codeur rotatif
#define codRotApin 3 // Pin du port A
#define codRotBpin 4 // Pin du port B
Encoder codRot(codRotApin, codRotBpin);
int codRotIncrement = 0; // Direction de l'encodeur +1 ou -1
int compteur = 0;
void setup() {
pinMode (2, INPUT_PULLUP); // CTRL bouton pour la manivelle
//pinMode (A5, INPUT_PULLUP); // ALT Left boutnon (ALT-1, 2, 3)
pinMode (3, INPUT_PULLUP); // avance X gauche clavier déporté
pinMode (4, INPUT_PULLUP); // avance X droite clavier déporté
Keyboard.begin();
}
const byte ROWS = 5; //cinq lignes
const byte COLS = 4; //quatre colennes
char ctrlKey = ('-');
char keys[ROWS][COLS] = {
{'I', 'U', '#', '*'},
{'1', '2', '3', 'H'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'L', '0', 'R', 'E'}
};
byte rowPins[ROWS] = {9, 8, 7, 6, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {13, 12, 11, 10}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void loop() {
char key = keypad.getKey();
switch (key) {
case'E':
{
Keyboard.press (KEY_RETURN); // Entrée
Keyboard.release (KEY_RETURN);
Keyboard.releaseAll();
}
break;
case'1':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press (KEY_LEFT_ALT); // Automatique ALT-1
delay(100);
Keyboard.press (49); Keyboard.release (49);
Keyboard.releaseAll();
}
{
Keyboard.press (225);
Keyboard.release (225);
break;
}
case'2':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press (KEY_LEFT_ALT); // Manuel ALT-2
delay(100);
Keyboard.press (50); Keyboard.release (50);
Keyboard.releaseAll();
}
{
Keyboard.press (226); // 2 du clavier
Keyboard.release (226);
break;
}
case '3':
Keyboard.press (227);
Keyboard.release (227);
break;
case '4':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.write ('X');
Keyboard.release ('X');
delay (400);
}
else
{
Keyboard.press (228);
Keyboard.release (228);
}
break;
case '5':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.write ('Y');
Keyboard.release ('Y');
delay (400);
}
else
{
Keyboard.press (229);
Keyboard.release (229);
}
break;
case '6':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
{
Keyboard.write ('W'); // en fait c'est le Z qui est écrit
Keyboard.release ('W');
delay (400);
}
}
else
{
Keyboard.press (230); // chiffre 6
Keyboard.release (230);
}
break;
case '7':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
delay(50);
Keyboard.press(54); //signe "-"
delay(50);
Keyboard.release (54);
delay (400);
}
else
{
Keyboard.press (231); // chiffre 7
Keyboard.release (231);
}
break;
case '8':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
delay(50);
Keyboard.press(43); //signe "+"
delay(50);
Keyboard.release (43);
delay (1000);
}
else
{
Keyboard.press (232); // chiffre 8
Keyboard.release (232);
}
break;
case '9':
if (digitalRead(2) == LOW)
{
Keyboard.press (KEY_LEFT_CTRL);
Keyboard.press(165); // touche W
delay(100);
Keyboard.releaseAll();
Keyboard.press (KEY_LEFT_CTRL);
Keyboard.press(165); // je répète deux fois la fonction
delay(100); // pour qu'elle soit prise en compte
Keyboard.releaseAll(); // Pourquoi ???????
}
else
{
Keyboard.press (233); // chiffre 9
Keyboard.release (233);
}
break;
case 'I': // Tab Affichage panneau de droite
Keyboard.write(KEY_TAB);
break;
case 'U': // Touche F2 // Arret cycle en Automatique
if (digitalRead(2) == LOW)
{
Keyboard.press (KEY_LEFT_ALT);
delay(100);
Keyboard.press (158); Keyboard.release (158); // touche S avec ALT
delay(1000);
}
else // Départ cycle en Automatique
{
Keyboard.press (KEY_LEFT_ALT);
delay(100);
Keyboard.press (157); Keyboard.release (157); // touche R avec ALT
Keyboard.releaseAll();
}
break;
//break;
case '0':
if (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press(KEY_LEFT_CTRL); // Ctrl O = remise à zéro des axes X et Y
delay(100);
Keyboard.press(79); Keyboard.release(79);
Keyboard.releaseAll();
}
else
{
Keyboard.press (234); // chiffre 0
Keyboard.release (234);
}
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 'L': Keyboard.write(KEY_LEFT_ARROW); break; // "Déplacement à Droite"
//break;
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 '*':
if (digitalRead(2) == LOW)
{
Keyboard.press (8); // étoile du clavier matriciel pour le Backspace
Keyboard.release (8);
delay(100);
}
else
{
Keyboard.press(KEY_LEFT_ALT); // Réglage du saut 1.00, 0.10, 0.01
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;
}
// initialisation codeur
codRotIncrement = codRot.read() / 4; // Divisé par 4 parcequ chaque impulsion ressentie en tournant le bouton
// Génère 4 impulsions (
https://wiki.logre.eu/index.php/Codeur_rotatif_incrémental)
if (codRotIncrement != 0) // Changement de MS affiché
{
if (codRotIncrement < 0)
{
Keyboard.begin();
if (digitalRead(2) == LOW) {
{
Keyboard.press(KEY_LEFT_CTRL);
delay(50);
Keyboard.write(KEY_LEFT_ARROW);
delay(50);
Keyboard.releaseAll();
}
}
}
if (codRotIncrement > 0)
{
Keyboard.begin();
if (digitalRead(2) == LOW) {
{
Keyboard.press(KEY_LEFT_CTRL);
delay(50);
Keyboard.write(KEY_RIGHT_ARROW);
delay(50);
Keyboard.releaseAll();
}
}
}
codRotIncrement = 0; // Remise à Zéro du codeur
codRot.write(0);
}
}
// fin du prog