#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"); } } }