June 5, 2026
Description
A 3x5 macropad on a Pro Micro board with the QMK system. The board is attached with hot glue. The keys are connected via a 1N 4148 diode. A microswitch is located on the board for easy software modification. The housing is assembled with 8mm M3 screws. The housing features heated M3 inserts. I used Black Linear keys. The keycap is MX Relegendable Keycap Shell Protection.
On my keyboard, one of the buttons is a direct link to the Supla program. The link is dotted. Creating multiple button layers is easy on the keyboard. To change the code, use Google Gemini.
I'm attaching my QMK codes:
file keymap.c
#include QMK_KEYBOARD_H
enum custom_keycodes {
M2P_ENTER = SAFE_RANGE,
SUPLA_CURL
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
// Wiersz 1
LCTL(KC_C), LCTL(KC_V), LCTL(LSFT(KC_L)), SUPLA_CURL, KC_CALC,
// Wiersz 2
LCTL(LSFT(KC_C)), LCTL(LSFT(KC_W)), LCTL(LSFT(KC_Q)), LCTL(KC_P), KC_0,
// Wiersz 3
LCTL(KC_Z), M2P_ENTER, KC_ESC, KC_ENT, KC_E
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case M2P_ENTER:
if (record->event.pressed) {
SEND_STRING("m2p");
register_code(KC_ENT);
unregister_code(KC_ENT);
}
return false;
case SUPLA_CURL:
if (record->event.pressed) {
// Odpowiednik: Keyboard.press(KEY_LEFT_GUI); Keyboard.press('r'); Keyboard.releaseAll();
register_code(KC_LGUI);
register_code(KC_R);
unregister_code(KC_R);
unregister_code(KC_LGUI);
// Odpowiednik: delay(100);
wait_ms(100);
// Odpowiednik: Keyboard.print("...");
// Używamy czystego SEND_STRING bez emulacji schowka (Ctrl+V)
SEND_STRING("C:\\Windows\\System32\\curl.exe https://...........link............");
// Odpowiednik: delay(100);
wait_ms(100);
// Odpowiednik: Keyboard.write(KEY_RETURN);
register_code(KC_ENT);
unregister_code(KC_ENT);
// Odpowiednik: delay(300);
wait_ms(300);
}
return false;
default:
return true;
}
}
file keybord.json
{
"keyboard_name": "Seba Macropad 15",
"url": "",
"maintainer": "qmk",
"width": 5,
"height": 3,
"processor": "atmega32u4",
"bootloader": "caterina",
"diode_direction": "COL2ROW",
"manufacturer": "DIY",
"usb": {
"vid": "0xFEED",
"pid": "0x0003",
"device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["C6", "D7", "E6", "B4", "B5"],
"rows": ["D1", "D0", "D4"]
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, {"matrix": [0, 2], "x": 2, "y": 0}, {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}
]
}
}
}
MCU = atmega32u4
BOOTLOADER = caterina
BOOTMAGIC_ENABLE = yes
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
NKRO_ENABLE = yesLicense:
Creative Commons — Attribution — Noncommercial — Share Alike