Bonjour, je suis actuellement en train de fabriquer une sorte de stream deck avec un keypad et un Arduino Pro Micro. J'ai pu définir mes raccourcis sur tous les boutons, sauf les 3 premiers. Les trois premiers doivent me permettre de controller trois relais sous mon bureau pour allumer/éteindre mes écrans et le bandeau LED derrière.
Mais voilà le problème: Il est facile de programmer ces trois premiers boutons en tant que push button (on appuie, ça s'allume, on lâche, ça s'éteint), mais je n'arrive pas à les programmer comme switch ON OFF (on appuie, ça s'allume jusqu'à ce que l'on réappuie dessus). Les tutos sur internet montrent comment réaliser ce genre d'action basique mais uniquement dans le cas d'un bouton poussoir. Je dois implémenter cette fonctionnalité dans un "switch; case:" comme ci dessous:
switch (key) {
case '1':
break;
case '2':
break;
case '3':
break;
}
Et voici mon code:
#include <Keypad.h>
#include <Keyboard.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', 'Z', 'D'},
};
/* Screen1 Screen2 LEDs Discord
* NewTab Youtube Twitter Gmail
* Paypal RTE ElecMap Whatsapp
* Banggood Aliexpress Ebay Amazon
*/
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9 };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int e1R = 10;
int e2R = 16;
int lR = 14;
void setup() {
Serial.begin(9600);
Keyboard.begin();
pinMode(e1R, OUTPUT);
pinMode(e2R, OUTPUT);
pinMode(lR, OUTPUT);
}
void sendMacroCommand(uint8_t key) {
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(key);
}
void loop() {
char key = keypad.getKey();
if (key) {
//Serial.println(key);
switch (key) {
case '1':
break;
case '2':
break;
case '3':
break;
case 'A':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F5);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '4':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F1);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '5':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F2);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '6':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F3);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case 'B':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F4);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '7':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F6);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '8':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F7);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '9':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F8);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case 'C':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F9);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '*':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F10);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case '0':
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.write(KEY_F11);
Keyboard.release(KEY_LEFT_SHIFT);
break;
case 'Z':
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.write(KEY_F1);
Keyboard.release(KEY_LEFT_CTRL);
break;
case 'D':
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.write(KEY_F2);
Keyboard.release(KEY_LEFT_CTRL);
break;
}
delay(100);
Keyboard.releaseAll();
}
}