12 Button Macro Keyboard with printable Keycaps
Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.
Zapisane na tym urządzeniu.
Informacje o modelu
- Źródło
- Printables
- Kategoria
- Computers
- Licencja
- Creative Commons — Attribution — Noncommercial — Share Alike
Macro Keyboard powered by Arduino Pro Micro with printable relegendable keycaps.
Buttons are a remix, I adjusted them to better fit my MX switches.
Requirements:
- 4x M3 x 16mm Screws (M3 x 18mm also works)
- 12x MX Switches
- 1x Arduino Pro Micro (5V)
- 1x Micro-USB Cable
Instructions:
- Insert the 12 switches into the top
- Solder a cable through all buttons and solder it to one of the GND pins on the Pro Micro
- Solder each button to a digital pin of the Pro Micro
- Flash the program onto the Pro Micro
- Insert USB Cable into the bottom of the case and in the Pro Micro
- Put the case together, screw in the screws, they will hold without any nuts
Print Settings:
- Top Case: 0.2mm, no support, 15% infill
- Bottom Case: 0.2mm, no support, 15% infill
- Top Keycap: 0.15mm, 0.2mm first layer, no support, 15% infill (I used
Prusament PLA Vanilla White, it's nearly transparent with only 1 bottom layer)
- Bottom Keycap: 0.15mm, 0.2mm first layer, no support, 15% infill
Labels:
- Size: 15.75mm x 15.75mm or 16mm x 16mm with rounded corners
Source Code:
#include "Keyboard.h"#define buttonCount 12
const byte KEYPAD_0 = 234;
const byte KEYPAD_1 = 225;
const byte KEYPAD_2 = 226;
const byte KEYPAD_3 = 227;
const byte KEYPAD_4 = 228;
const byte KEYPAD_5 = 229;
const byte KEYPAD_6 = 230;
const byte KEYPAD_7 = 231;
const byte KEYPAD_8 = 232;
const byte KEYPAD_9 = 233;
const byte KEYPAD_ASTERIX = 221;
const byte KEYPAD_ENTER = 224;
const byte KEYPAD_MINUS = 222;
const byte KEYPAD_PERIOD = 235;
const byte KEYPAD_PLUS = 223;
const byte KEYPAD_SLASH = 220;
int keyPin[buttonCount] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16};
//int keyCode[buttonCount] = {KEY_F14, KEY_F17, KEY_F20, KEY_F23, KEY_F13, KEY_F16, KEY_F19, KEY_F22, KEY_F24, KEY_F18, KEY_F15, KEY_F21};
int keyCode[buttonCount] = {KEYPAD_ASTERIX, KEYPAD_8, KEYPAD_5, KEYPAD_2, KEYPAD_SLASH, KEYPAD_7, KEYPAD_4, KEYPAD_1, KEYPAD_3, KEYPAD_9, KEYPAD_MINUS, KEYPAD_6};
bool keyState[buttonCount] = {false, false, false, false, false, false, false, false, false, false, false, false};
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
Keyboard.begin();
Serial.begin(115200);
}
void toggleKey(int index) {
if (digitalRead(keyPin[index]) == HIGH && keyState[index]) {
keyState[index] = false;
Keyboard.release(keyCode[index]);
Serial.print("Release Button Index - ");
Serial.println(index);
}
else if (digitalRead(keyPin[index]) == LOW && !keyState[index]) {
keyState[index] = true;
Keyboard.press(keyCode[index]);
Serial.print("Press Button Index - ");
Serial.println(index);
}
}
void loop() {
for (int i = 0; i < buttonCount; i++) {
toggleKey(i);
}
}
With the default code you will map the numpad onto the keys. You can also use F13 - F24, but not all software/games supports these keys. (e.g. GTA 5 only F1 through F15, CSGO only F1 through F12)
Counter-Strike Global Offensive Config:
bind "KP_SLASH" "buy m4a1; buy ak47;";
bind "KP_MULTIPLY" "buy vest; buy vesthelm; buy defuser;";
bind "KP_MINUS" "buy flashbang;";
bind "KP_HOME" "buy molotov; buy incgrenade;";
bind "KP_UPARROW" "buy smokegrenade;";
bind "KP_PGUP" "buy hegrenade;";
bind "KP_LEFTARROW" "buy p90;";
bind "KP_5" "buy sg556; buy aug;";
bind "KP_RIGHTARROW" "buy awp;";
bind "KP_END" "buy fiveseven; buy tec9;";
bind "KP_DOWNARROW" "buy elite;";
bind "KP_PGDN" "buy mp7;";
Credits:
Original Keycaps - Mc_gee - https://www.thingiverse.com/thing:3791028