├── readme └── main /readme: -------------------------------------------------------------------------------- 1 | This is a modifcation of this code https://github.com/DisasterofPuppets/25ButtonMacroKeyboard 2 | Disaster wrote button matrix code with the FastLED matrix and it has a lot of awesome animations! Please check his code out, or 3 | his stream https://www.twitch.tv/disasterofpuppets 4 | 5 | My button matrix doesn't have LEDs so I simplified the code a bit for my 25 button matrix. 6 | You can 3d print the button matrix here: https://cults3d.com/en/3d-model/various/noycemidi-a-mini-25-button-midi-player 7 | 8 | 9 | -------------------------------------------------------------------------------- /main: -------------------------------------------------------------------------------- 1 | //the following is modified code from https://github.com/DisasterofPuppets/25ButtonMacroKeyboard 2 | #include 3 | #include 4 | 5 | int keypress = 100; 6 | const byte ROWS = 5; 7 | const byte COLS = 5; 8 | char hexaKeys[ROWS][COLS] = 9 | { 10 | 11 | {'0', '1', '2', '3', '4'}, 12 | {'5', '6', '7', '8', '9'}, 13 | {'A', 'B', 'C', 'D', 'E'}, 14 | {'F', 'G', 'H', 'I', 'J'}, 15 | {'K', 'L', 'M', 'N', 'O'}, 16 | 17 | }; 18 | byte rowPins[ROWS] = {10, 16, 14, 15, 18}; 19 | byte colPins[COLS] = {9, 8, 7, 6, 5}; 20 | 21 | 22 | Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 23 | 24 | void setup() { 25 | 26 | Serial.begin(9600); 27 | Keyboard.begin(); 28 | } 29 | 30 | void loop() { 31 | 32 | char customKey = customKeypad.getKey(); 33 | 34 | if (customKey) 35 | { 36 | switch (customKey) 37 | { 38 | case '0': 39 | 40 | Keyboard.press(KEY_F13); 41 | delay(keypress); 42 | Keyboard.release(KEY_F13); 43 | break; 44 | 45 | case '1': 46 | 47 | Keyboard.press(KEY_F14); 48 | delay(keypress); 49 | Keyboard.release(KEY_F14); 50 | break; 51 | 52 | case '2': 53 | 54 | Keyboard.press(KEY_F15); 55 | delay(keypress); 56 | Keyboard.release(KEY_F15); 57 | break; 58 | 59 | case '3': 60 | 61 | Keyboard.press(KEY_F16); 62 | delay(keypress); 63 | Keyboard.release(KEY_F16); 64 | break; 65 | 66 | case '4': 67 | 68 | Keyboard.press(KEY_F17); 69 | delay(keypress); 70 | Keyboard.release(KEY_F17); 71 | break; 72 | 73 | case '5': 74 | 75 | Keyboard.press(KEY_F18); 76 | delay(keypress); 77 | Keyboard.release(KEY_F18); 78 | break; 79 | 80 | case '6': 81 | 82 | Keyboard.press(KEY_F19); 83 | delay(keypress); 84 | Keyboard.release(KEY_F19); 85 | break; 86 | 87 | case '7': 88 | 89 | Keyboard.press(KEY_F20); 90 | delay(keypress); 91 | Keyboard.release(KEY_F20); 92 | break; 93 | 94 | case '8': 95 | 96 | Keyboard.press(KEY_F21); 97 | delay(keypress); 98 | Keyboard.release(KEY_F21); 99 | break; 100 | 101 | case '9': 102 | 103 | Keyboard.press(KEY_F22); 104 | delay(keypress); 105 | Keyboard.release(KEY_F22); 106 | break; 107 | 108 | case 'A': 109 | 110 | Keyboard.press(KEY_F23); 111 | delay(keypress); 112 | Keyboard.release(KEY_F23); 113 | break; 114 | 115 | case 'B': 116 | 117 | Keyboard.press(KEY_F24); 118 | delay(keypress); 119 | Keyboard.release(KEY_F24); 120 | break; 121 | 122 | case 'C': 123 | 124 | Keyboard.press(KEY_RIGHT_SHIFT); 125 | Keyboard.press(KEY_F13); 126 | delay(keypress); 127 | Keyboard.releaseAll(); 128 | break; 129 | 130 | case 'D': 131 | 132 | Keyboard.press(KEY_RIGHT_SHIFT); 133 | Keyboard.press(KEY_F14); 134 | delay(keypress); 135 | Keyboard.releaseAll(); 136 | break; 137 | 138 | case 'E': 139 | 140 | Keyboard.press(KEY_RIGHT_SHIFT); 141 | Keyboard.press(KEY_F15); 142 | delay(keypress); 143 | Keyboard.releaseAll(); 144 | break; 145 | 146 | case 'F': 147 | 148 | Keyboard.press(KEY_RIGHT_SHIFT); 149 | Keyboard.press(KEY_F16); 150 | delay(keypress); 151 | Keyboard.releaseAll(); 152 | break; 153 | 154 | case 'G': 155 | 156 | Keyboard.press(KEY_RIGHT_SHIFT); 157 | Keyboard.press(KEY_F17); 158 | delay(keypress); 159 | Keyboard.releaseAll(); 160 | break; 161 | 162 | case 'H': 163 | 164 | Keyboard.press(KEY_RIGHT_SHIFT); 165 | Keyboard.press(KEY_F18); 166 | delay(keypress); 167 | Keyboard.releaseAll(); 168 | break; 169 | 170 | case 'I': 171 | 172 | Keyboard.press(KEY_RIGHT_SHIFT); 173 | Keyboard.press(KEY_F19); 174 | delay(keypress); 175 | Keyboard.releaseAll(); 176 | 177 | break; 178 | 179 | case 'J': 180 | 181 | Keyboard.press(KEY_RIGHT_SHIFT); 182 | Keyboard.press(KEY_F20); 183 | delay(keypress); 184 | Keyboard.releaseAll(); 185 | break; 186 | 187 | case 'K': 188 | 189 | Keyboard.press(KEY_RIGHT_SHIFT); 190 | Keyboard.press(KEY_F21); 191 | delay(keypress); 192 | Keyboard.releaseAll(); 193 | break; 194 | 195 | case 'L': 196 | 197 | Keyboard.press(KEY_RIGHT_SHIFT); 198 | Keyboard.press(KEY_F22); 199 | delay(keypress); 200 | Keyboard.releaseAll(); 201 | break; 202 | 203 | case 'M': 204 | 205 | Keyboard.press(KEY_RIGHT_SHIFT); 206 | Keyboard.press(KEY_F23); 207 | delay(keypress); 208 | Keyboard.releaseAll(); 209 | break; 210 | 211 | case 'N': 212 | 213 | Keyboard.press(KEY_RIGHT_SHIFT); 214 | Keyboard.press(KEY_F24); 215 | delay(keypress); 216 | Keyboard.releaseAll(); 217 | break; 218 | 219 | case 'O': 220 | 221 | Keyboard.press(KEY_RIGHT_ALT); 222 | Keyboard.press(KEY_F24); 223 | delay(keypress); 224 | Keyboard.releaseAll(); 225 | break; 226 | } 227 | } 228 | } 229 | --------------------------------------------------------------------------------