Voilà le code...
/*---------------------------------------------------------------------------------------
'* jpbbricole 2019 03 13
'* modifié gaston 83 (ajout du bouton sur pin 5)
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
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 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_LEFT_SHIFT); // Entrée
delay(100);
Keyboard.press (KEY_RETURN); Keyboard.release (KEY_RETURN);
Keyboard.releaseAll();
}
break;
case'1':
{
while (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':
{
while (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':
Keyboard.press (228);
Keyboard.release (228);
break;
case '5':
Keyboard.press (229);
Keyboard.release (229);
break;
case '6':
Keyboard.press (230);
Keyboard.release (230);
break;
case '7':
Keyboard.press (231);
Keyboard.release (231);
break;
case '8':
Keyboard.press (232);
Keyboard.release (232);
break;
case '9':
Keyboard.press (233);
Keyboard.release (233);
break;
case 'I': // Tab horizontal
Keyboard.write(KEY_TAB);
break;
case 'U': // Départ cycle
{
Keyboard.press (KEY_LEFT_ALT);
delay(100);
Keyboard.press (114); Keyboard.release (114);
Keyboard.releaseAll();
}
break;
case '0':
{
while (digitalRead(2) == LOW) // boucle pour garder le Ctrl appuyé
{
Keyboard.press(KEY_LEFT_CTRL); // remise à zéro des axes X et Y
delay(100);
Keyboard.press(79); Keyboard.release(79);
Keyboard.releaseAll();
}
}
{
Keyboard.press (234);
Keyboard.release (234);
}
break;
case 'L': Keyboard.write(KEY_LEFT_ARROW); //Keyboard.release(KEY_LEFT_ARROW);
{
while (digitalRead(2) == LOW) // boucle pour garder le shift appuyé
{
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}
Keyboard.write(KEY_LEFT_ARROW); //Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
}
}
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); // "Déplacement à Droite"
{
while (digitalRead(2) == LOW)// boucle pour garder le shift appuyé
{
{
Keyboard.press(KEY_LEFT_SHIFT);
delay (50);
Keyboard.releaseAll();
}
Keyboard.write(KEY_RIGHT_ARROW); //Keyboard.release(KEY_LEFT_ARROW); // "Déplacemnt à Gauche"
}
}
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 '*':
{
while (digitalRead(2) == LOW)
{
Keyboard.press (8); // étoile du clavier matriciel pour le Backspace
Keyboard.release (8);
}
{
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.press('j');
delay(100);
Keyboard.releaseAll();
}
}
break;
/* { // 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;
}
// 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