diff --git a/Makropad-Firmware.ino b/Makropad-Firmware.ino new file mode 100644 index 0000000..a6bac42 --- /dev/null +++ b/Makropad-Firmware.ino @@ -0,0 +1,527 @@ +#include +#include +#include +// 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"); + } + } +}