Dateien nach "/" hochladen

Added the Firmware File
This commit is contained in:
2026-01-06 15:06:24 +01:00
parent 23ea4fc239
commit 07f6bed13e

527
Makropad-Firmware.ino Normal file
View File

@@ -0,0 +1,527 @@
#include <Keypad.h>
#include <HID-Project.h>
#include <string.h>
// Config
// Keypads
const byte ROWS = 4;
const byte COLS = 3;
String readString;
int mode = 1; // defines the mode of the buttons
char keys1[ROWS][COLS] = {
{'1','2','3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'!', '"', ']'}
};
char keys2[ROWS][COLS] = {
{'p', 'v', 'n'},
{'<', '|', '>'},
{'%', '&', '='}
};
byte rowPins[2][ROWS] = {
{15, 21, 2, 3}, // Row pins for keypad 1
{6, 5, 4} // Row pins for keypad 2
};
byte colPins1[COLS] = {10, 16, 14}; // Column pins for keypad 1
byte colPins2[COLS] = {7, 8, 9}; // Column pins for keypad 2
// Initialize the keypad objects
Keypad keypad1 = Keypad(makeKeymap(keys1), rowPins[0], colPins1, ROWS, COLS);
Keypad keypad2 = Keypad(makeKeymap(keys2), rowPins[1], colPins2, ROWS, COLS);
// Deej
const int NUM_SLIDERS = 3;
const int analogInputs[NUM_SLIDERS] = {A0, A1, A2};
int analogSliderValues[NUM_SLIDERS];
void setup() {
Serial.begin(9600);
Consumer.begin();
NKROKeyboard.begin();
Keyboard.begin();
pinMode(LED_BUILTIN_TX,INPUT);
pinMode(LED_BUILTIN_RX,INPUT);
}
void loop() {
if (Serial.available() > 0) {
readString = Serial.readStringUntil('\n');
if (readString == "checkhealth") {
Serial.println("OK");
}
//delay(5);
}
updateSliderValues();
sendSliderValues();
// Scan first keypad
char key1 = keypad1.getKey();
if (key1) {
if (key1 == '1') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F13);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F13);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F13);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F13);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F13);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F13);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '2') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F14);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F14);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F14);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F14);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F14);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F14);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '3') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F15);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F15);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F15);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F15);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F15);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F15);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '4') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F16);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F16);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F16);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F16);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F16);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F16);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '5') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F17);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F17);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F17);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F17);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F17);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F17);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '6') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F18);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F18);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F18);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F18);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F18);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F18);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '7') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F19);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F19);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F19);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F19);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F19);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F19);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '8') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F20);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F20);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F20);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F20);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F20);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F20);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '9') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F21);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F21);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F21);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F21);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F21);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F21);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '!') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F22);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F22);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F22);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F22);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F22);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F22);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == '"') {
if (mode == 1) {
Keyboard.write(HID_KEYBOARD_F23);
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F23);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F23);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F23);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F23);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F23);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
} else if (key1 == ']') {
if (mode == 1) {
//Keyboard.write(HID_KEYBOARD_F24);
NKROKeyboard.add(KEY_LEFT_WINDOWS);
NKROKeyboard.add(KEY_R);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
delay(100);
NKROKeyboard.add(HID_KEYBOARD_LEFT_CONTROL);
NKROKeyboard.add(KEY_A);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
Keyboard.print("powershell spicetifz update");
NKROKeyboard.add(KEY_RETURN);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 2) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_F24);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 3) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F24);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 4) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F24);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 5) {
NKROKeyboard.add(HID_KEYBOARD_RIGHT_CONTROL);
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_F24);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
} else if (mode == 6) {
NKROKeyboard.add(HID_KEYBOARD_LEFT_ALT);
NKROKeyboard.add(HID_KEYBOARD_RIGHT_SHIFT);
NKROKeyboard.add(HID_KEYBOARD_F24);
NKROKeyboard.send();
NKROKeyboard.releaseAll();
}
}
Serial.print(key1);
Serial.print(" | ");
Serial.println(mode);
}
// Left keypad
char key2 = keypad2.getKey();
if (key2) {
if (key2 == 'p') {
Consumer.write(MEDIA_PLAY_PAUSE);
} else if (key2 == 'v') {
Consumer.write(MEDIA_PREVIOUS);
} else if (key2 == 'n') {
Consumer.write(MEDIA_NEXT);
}
else if (key2 == '<') {
mode = 1;
} else if (key2 == '|') {
mode = 2;
} else if (key2 == '>') {
mode = 3;
} else if (key2 == '%') {
mode = 4;
} else if (key2 == '&') {
mode = 5;
} else if (key2 == '=') {
mode = 6;
}
Serial.println(key2);
}
delay(10);
}
// Potentiometer for Deej
void updateSliderValues() {
for (int i = 0; i < NUM_SLIDERS; i++) {
analogSliderValues[i] = analogRead(analogInputs[i]);
}
}
void sendSliderValues() {
String builtString = String("");
for (int i = 0; i < NUM_SLIDERS; i++) {
builtString += String((int)analogSliderValues[i]);
if (i < NUM_SLIDERS - 1) {
builtString += String("|");
}
}
Serial.println(builtString);
}
void printSliderValues() {
for (int i = 0; i < NUM_SLIDERS; i++) {
String printedString = String("Slider #") + String(i + 1) + String(": ") + String(analogSliderValues[i]) + String(" mV");
Serial.write(printedString.c_str());
if (i < NUM_SLIDERS - 1) {
Serial.write(" | ");
} else {
Serial.write("\n");
}
}
}