Omnikey Blackheart refactor (#3280)
authornoroadsleft <18669334+noroadsleft@users.noreply.github.com>
Sun, 1 Jul 2018 18:08:29 +0000 (11:08 -0700)
committerDrashna Jaelre <drashna@live.com>
Sun, 1 Jul 2018 18:08:29 +0000 (11:08 -0700)
keyboards/omnikey_blackheart/info.json [new file with mode: 0644]
keyboards/omnikey_blackheart/keymaps/default/keymap.c
keyboards/omnikey_blackheart/omnikey_blackheart.h
keyboards/omnikey_blackheart/readme.md

diff --git a/keyboards/omnikey_blackheart/info.json b/keyboards/omnikey_blackheart/info.json
new file mode 100644 (file)
index 0000000..138c954
--- /dev/null
@@ -0,0 +1,13 @@
+{
+  "keyboard_name": "Omnikey Blackheart PCB",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 25.5,
+  "height": 6.5,
+  "layouts": {
+    "LAYOUT": {
+      "key_count": 123,
+      "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2.5, "y":0}, {"label":"K003", "x":4.5, "y":0}, {"label":"K004", "x":5.5, "y":0}, {"label":"K005", "x":6.5, "y":0}, {"label":"K006", "x":7.5, "y":0}, {"label":"K007", "x":9, "y":0}, {"label":"K008", "x":10, "y":0}, {"label":"K009", "x":11, "y":0}, {"label":"K010", "x":12, "y":0}, {"label":"K011", "x":13.5, "y":0}, {"label":"K012", "x":14.5, "y":0}, {"label":"K013", "x":15.5, "y":0}, {"label":"K014", "x":16.5, "y":0}, {"label":"K015", "x":18, "y":0}, {"label":"K016", "x":19, "y":0}, {"label":"K017", "x":20, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2.5, "y":1.5}, {"label":"K103", "x":3.5, "y":1.5}, {"label":"K104", "x":4.5, "y":1.5}, {"label":"K105", "x":5.5, "y":1.5}, {"label":"K106", "x":6.5, "y":1.5}, {"label":"K107", "x":7.5, "y":1.5}, {"label":"K108", "x":8.5, "y":1.5}, {"label":"K109", "x":9.5, "y":1.5}, {"label":"K110", "x":10.5, "y":1.5}, {"label":"K111", "x":11.5, "y":1.5}, {"label":"K112", "x":12.5, "y":1.5}, {"label":"K113", "x":13.5, "y":1.5}, {"label":"K114", "x":14.5, "y":1.5}, {"label":"K115", "x":15.5, "y":1.5, "w":2}, {"label":"K116", "x":18, "y":1.5}, {"label":"K117", "x":19, "y":1.5}, {"label":"K118", "x":20, "y":1.5}, {"label":"K119", "x":21.5, "y":1.5}, {"label":"K120", "x":22.5, "y":1.5}, {"label":"K121", "x":23.5, "y":1.5}, {"label":"K122", "x":24.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5}, {"label":"K201", "x":1, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5, "w":1.5}, {"label":"K203", "x":4, "y":2.5}, {"label":"K204", "x":5, "y":2.5}, {"label":"K205", "x":6, "y":2.5}, {"label":"K206", "x":7, "y":2.5}, {"label":"K207", "x":8, "y":2.5}, {"label":"K208", "x":9, "y":2.5}, {"label":"K209", "x":10, "y":2.5}, {"label":"K210", "x":11, "y":2.5}, {"label":"K211", "x":12, "y":2.5}, {"label":"K212", "x":13, "y":2.5}, {"label":"K213", "x":14, "y":2.5}, {"label":"K214", "x":15, "y":2.5}, {"label":"K215", "x":16, "y":2.5, "w":1.5}, {"label":"K216", "x":18, "y":2.5}, {"label":"K217", "x":19, "y":2.5}, {"label":"K218", "x":20, "y":2.5}, {"label":"K219", "x":21.5, "y":2.5}, {"label":"K220", "x":22.5, "y":2.5}, {"label":"K221", "x":23.5, "y":2.5}, {"label":"K222", "x":24.5, "y":2.5}, {"label":"K300", "x":0, "y":3.5}, {"label":"K301", "x":1, "y":3.5}, {"label":"K302", "x":2.5, "y":3.5, "w":1.75}, {"label":"K303", "x":4.25, "y":3.5}, {"label":"K304", "x":5.25, "y":3.5}, {"label":"K305", "x":6.25, "y":3.5}, {"label":"K306", "x":7.25, "y":3.5}, {"label":"K307", "x":8.25, "y":3.5}, {"label":"K308", "x":9.25, "y":3.5}, {"label":"K309", "x":10.25, "y":3.5}, {"label":"K310", "x":11.25, "y":3.5}, {"label":"K311", "x":12.25, "y":3.5}, {"label":"K312", "x":13.25, "y":3.5}, {"label":"K313", "x":14.25, "y":3.5}, {"label":"K314", "x":15.25, "y":3.5, "w":2.25}, {"label":"K315", "x":18, "y":3.5}, {"label":"K316", "x":19, "y":3.5}, {"label":"K317", "x":20, "y":3.5}, {"label":"K318", "x":21.5, "y":3.5}, {"label":"K319", "x":22.5, "y":3.5}, {"label":"K320", "x":23.5, "y":3.5}, {"label":"K321", "x":24.5, "y":3.5}, {"label":"K400", "x":0, "y":4.5}, {"label":"K401", "x":1, "y":4.5}, {"label":"K402", "x":2.5, "y":4.5, "w":2.25}, {"label":"K403", "x":4.75, "y":4.5}, {"label":"K404", "x":5.75, "y":4.5}, {"label":"K405", "x":6.75, "y":4.5}, {"label":"K406", "x":7.75, "y":4.5}, {"label":"K407", "x":8.75, "y":4.5}, {"label":"K408", "x":9.75, "y":4.5}, {"label":"K409", "x":10.75, "y":4.5}, {"label":"K410", "x":11.75, "y":4.5}, {"label":"K411", "x":12.75, "y":4.5}, {"label":"K412", "x":13.75, "y":4.5}, {"label":"K413", "x":14.75, "y":4.5, "w":1.75}, {"label":"K414", "x":16.5, "y":4.5}, {"label":"K415", "x":18, "y":4.5}, {"label":"K416", "x":19, "y":4.5}, {"label":"K417", "x":20, "y":4.5}, {"label":"K418", "x":21.5, "y":4.5}, {"label":"K419", "x":22.5, "y":4.5}, {"label":"K420", "x":23.5, "y":4.5}, {"label":"K421", "x":24.5, "y":4.5, "h":2}, {"label":"K500", "x":0, "y":5.5}, {"label":"K501", "x":1, "y":5.5}, {"label":"K502", "x":2.5, "y":5.5, "w":1.5}, {"label":"K503", "x":4, "y":5.5}, {"label":"K504", "x":5, "y":5.5, "w":1.5}, {"label":"K507", "x":6.5, "y":5.5, "w":7}, {"label":"K512", "x":13.5, "y":5.5}, {"label":"K513", "x":14.5, "y":5.5}, {"label":"K514", "x":15.5, "y":5.5}, {"label":"K515", "x":16.5, "y":5.5}, {"label":"K516", "x":18, "y":5.5}, {"label":"K517", "x":19, "y":5.5}, {"label":"K518", "x":20, "y":5.5}, {"label":"K519", "x":21.5, "y":5.5, "w":2}, {"label":"K520", "x":23.5, "y":5.5}]
+    }
+  }
+}
dissimilarity index 95%
index 9dff862..3316218 100644 (file)
@@ -1,48 +1,49 @@
-#include "omnikey_blackheart.h"
-
-// Fillers to make layering more clear
-#define ______ KC_TRNS
-#define XXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    [0] = KEYMAP(\
-       KC_F11  ,       KC_F12 ,        KC_ESC  ,       KC_F1   ,       KC_F2   ,       KC_F3   ,       KC_F4   ,       KC_F5   ,       KC_F6   ,       KC_F7   ,       KC_F8   ,       KC_F9   ,       KC_F10  ,       KC_F11  ,       KC_F12  ,                               KC_PSCR ,       KC_SLCK ,       KC_PAUS , 
-       KC_F1   ,       KC_F2  ,        KC_GRV  ,       KC_1    ,       KC_2    ,       KC_3    ,       KC_4    ,       KC_5    ,       KC_6    ,       KC_7    ,       KC_8    ,       KC_9    ,       KC_0    ,       KC_MINS ,       KC_EQL  ,       KC_BSPC ,       KC_INS  ,       KC_HOME ,       KC_PGUP ,       KC_NLCK , KC_PSLS, KC_PAST, KC_PMNS, 
-       KC_F3   ,       KC_F4  ,        KC_TAB  ,       KC_Q    ,       KC_W    ,       KC_E    ,       KC_R    ,       KC_T    ,       KC_Y    ,       KC_U    ,       KC_I    ,       KC_O    ,       KC_P    ,       KC_LBRC ,       KC_RBRC ,       KC_BSLS ,       KC_DEL  ,       KC_END  ,       KC_PGDN ,       KC_P7   , KC_P8  , KC_P9  , KC_PPLS, 
-       KC_F5   ,       KC_F6  ,        KC_CAPS ,       KC_A    ,       KC_S    ,       KC_D    ,       KC_F    ,       KC_G    ,       KC_H    ,       KC_J    ,       KC_K    ,       KC_L    ,       KC_SCLN ,       KC_QUOT ,                               KC_ENT  ,       XXXXXX  ,       XXXXXX  ,       XXXXXX  ,       KC_P4   , KC_P5  , KC_P6  ,     KC_EQL, 
-       KC_F7   ,       KC_F8  ,        KC_LSFT ,       KC_Z    ,       KC_X    ,       KC_C    ,       KC_V    ,       KC_B    ,       KC_N    ,       KC_M    ,       KC_COMM ,       KC_DOT  ,       KC_SLSH ,       KC_RSFT ,                               MO(1)   ,       XXXXXX  ,       KC_UP   ,       XXXXXX  ,       KC_P1   , KC_P2  , KC_P3  ,     KC_PENT, 
-       KC_F9   ,       KC_F10 ,        KC_LCTL ,   KC_LGUI     ,       KC_LALT ,       XXXXXX  ,                               KC_SPC  ,                                                                               KC_RALT ,       KC_RGUI ,       KC_RCTL ,                               XXXXXX  ,       KC_LEFT ,       KC_DOWN ,       KC_RIGHT,                 KC_P0          , KC_PDOT
-       ),
-       
-       [1] = KEYMAP(\
-       KC_F11  ,       KC_F12 ,        KC_ESC  ,       KC_F1   ,       KC_F2   ,       KC_F3   ,       KC_F4   ,       KC_F5   ,       KC_F6   ,       KC_F7   ,       KC_F8   ,       KC_F9   ,       KC_F10  ,       KC_F11  ,       KC_F12  ,                               KC_PSCR ,       KC_SLCK ,       KC_PAUS , 
-       KC_F1   ,       KC_F2  ,        RESET   ,       KC_1    ,       KC_2    ,       KC_3    ,       KC_4    ,       KC_5    ,       KC_6    ,       KC_7    ,       KC_8    ,       KC_9    ,       KC_0    ,       KC_MINS ,       KC_EQL  ,       KC_BSPC ,       KC_INS  ,       KC_HOME ,       KC_PGUP ,       KC_NLCK , KC_PSLS, KC_PAST, KC_PMNS, 
-       KC_F3   ,       KC_F4  ,        KC_TAB  ,       KC_Q    ,       KC_W    ,       KC_E    ,       KC_R    ,       KC_T    ,       KC_Y    ,       KC_U    ,       KC_I    ,       KC_O    ,       KC_P    ,       KC_LBRC ,       KC_RBRC ,       KC_BSLS ,       KC_DEL  ,       KC_END  ,       KC_PGDN ,       KC_P7   , KC_P8  , KC_P9  , KC_PPLS, 
-       KC_F5   ,       KC_F6  ,        KC_CAPS ,       KC_A    ,       KC_S    ,       KC_D    ,       KC_F    ,       KC_G    ,       KC_H    ,       KC_J    ,       KC_K    ,       KC_L    ,       KC_SCLN ,       KC_QUOT ,                               KC_ENT  ,       XXXXXX  ,       XXXXXX  ,       XXXXXX  ,       KC_P4   , KC_P5  , KC_P6  ,     KC_EQL, 
-       KC_F7   ,       KC_F8  ,        KC_LSFT ,       KC_Z    ,       KC_X    ,       KC_C    ,       KC_V    ,       KC_B    ,       KC_N    ,       KC_M    ,       KC_COMM ,       KC_DOT  ,       KC_SLSH ,       KC_RSFT ,                               ______  ,       XXXXXX  ,       KC_UP   ,       XXXXXX  ,       KC_P1   , KC_P2  , KC_P3  ,     KC_PENT, 
-       KC_F9   ,       KC_F10 ,        KC_LCTL ,   KC_LGUI     ,       KC_LALT ,       XXXXXX  ,                               KC_SPC  ,                                                                               KC_RALT ,       KC_RGUI ,       KC_RCTL ,                               XXXXXX  ,       KC_LEFT ,       KC_DOWN ,       KC_RIGHT,       KC_P0   , KC_PDOT
-       ),
-};
-
-void led_set_kb(uint8_t usb_led) {
-       DDRB |= (1 << 4) | (1 << 5) | (1 << 6);
-
-       if (usb_led & (1 << USB_LED_NUM_LOCK)) {
-               PORTB |= (1 << 4);
-       } else {
-               PORTB &= ~(1 << 4);
-       }
-
-       if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
-               PORTB |= (1 << 5);
-       } else {
-               PORTB &= ~(1 << 5);
-       }
-
-       if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
-               PORTB |= (1 << 6);
-       } else {
-               PORTB &= ~(1 << 6);
-       }
-}
\ No newline at end of file
+#include QMK_KEYBOARD_H
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [0] = LAYOUT(\
+    KC_F11,  KC_F12,      KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,               KC_PSCR, KC_SLCK, KC_PAUS,
+    KC_F1,   KC_F2,       KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,     KC_INS,  KC_HOME, KC_PGUP,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+    KC_F3,   KC_F4,       KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,     KC_DEL,  KC_END,  KC_PGDN,     KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+    KC_F5,   KC_F6,       KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,               XXXXXXX, XXXXXXX, XXXXXXX,     KC_P4,   KC_P5,   KC_P6,   KC_EQL,
+    KC_F7,   KC_F8,       KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(1),                XXXXXXX, KC_UP,   XXXXXXX,     KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+    KC_F9,   KC_F10,      KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT, KC_RGUI, KC_RCTL, XXXXXXX,     KC_LEFT, KC_DOWN, KC_RGHT,     KC_P0,            KC_PDOT
+  ),
+
+  [1] = LAYOUT(\
+    _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,              _______, _______, _______,
+    _______, _______,     RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
+    _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,     _______, _______, _______,     _______, _______, _______, _______,
+    _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,              XXXXXXX, XXXXXXX, XXXXXXX,     _______, _______, _______, _______,
+    _______, _______,     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,              XXXXXXX, _______, XXXXXXX,     _______, _______, _______, _______,
+    _______, _______,     _______, _______, _______,                   _______,                                     _______, _______, _______, XXXXXXX,     _______, _______, _______,     _______,          _______
+
+  ),
+};
+
+void led_set_kb(uint8_t usb_led) {
+  DDRB |= (1 << 4) | (1 << 5) | (1 << 6);
+
+  if (usb_led & (1 << USB_LED_NUM_LOCK)) {
+    PORTB |= (1 << 4);
+  } else {
+    PORTB &= ~(1 << 4);
+  }
+
+  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+    PORTB |= (1 << 5);
+  } else {
+    PORTB &= ~(1 << 5);
+  }
+
+  if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+    PORTB |= (1 << 6);
+  } else {
+    PORTB &= ~(1 << 6);
+  }
+}
\ No newline at end of file
dissimilarity index 95%
index e0baa7f..5d2d948 100644 (file)
@@ -1,22 +1,22 @@
-#ifndef omnikey_blackheart
-#define omnikey_blackheart
-
-#include "quantum.h"
-
-#define KEYMAP( \
-       K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017,                               \
-       K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121, K122, \
-       K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, K220, K221, K222, \
-       K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319, K320, K321,       \
-       K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, K420, K421,       \
-       K500, K501, K502, K503, K504, K505,       K507,                         K512, K513, K514, K515, K516, K517, K518, K519, K520  \
-) { \
-       { K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  K014,  K015,  K016,  K017,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
-       { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114,  K115,  K116,  K117,  K118,  K119,  K120,  K121,  K122 }, \
-       { K200,  K201,  K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215,  K216,  K217,  K218,  K219,  K220,  K221,  K222 }, \
-       { K300,  K301,  K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  K315,  K316,  K317,  K318,  K319,  K320,  K321,  KC_NO }, \
-       { K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  K412,  K413,  K414,  K415,  K416,  K417,  K418,  K419,  K420,  K421,  KC_NO }, \
-       { K500,  K501,  K502,  K503,  K504,  K505,  KC_NO, K507,  KC_NO, KC_NO, KC_NO, KC_NO, K512,  K513,  K514,  K515,  K516,  K517,  K518,  K519,  K520,  KC_NO, KC_NO }  \
-}
-
-#endif
\ No newline at end of file
+#ifndef omnikey_blackheart
+#define omnikey_blackheart
+
+#include "quantum.h"
+
+#define LAYOUT( \
+  K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017,                               \
+  K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121, K122, \
+  K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, K220, K221, K222, \
+  K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319, K320, K321,       \
+  K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, K420, K421,       \
+  K500, K501, K502, K503, K504,             K507,                         K512, K513, K514, K515, K516, K517, K518, K519, K520  \
+) { \
+  { K000,  K001,  K002,  K003,  K004,  K005,   K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  K014,  K015,  K016,  K017,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+  { K100,  K101,  K102,  K103,  K104,  K105,   K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114,  K115,  K116,  K117,  K118,  K119,  K120,  K121,  K122 }, \
+  { K200,  K201,  K202,  K203,  K204,  K205,   K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  K214,  K215,  K216,  K217,  K218,  K219,  K220,  K221,  K222 }, \
+  { K300,  K301,  K302,  K303,  K304,  K305,   K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  K315,  K316,  K317,  K318,  K319,  K320,  K321,  KC_NO }, \
+  { K400,  K401,  K402,  K403,  K404,  K405,   K406,  K407,  K408,  K409,  K410,  K411,  K412,  K413,  K414,  K415,  K416,  K417,  K418,  K419,  K420,  K421,  KC_NO }, \
+  { K500,  K501,  K502,  K503,  K504,  KC_NO,  KC_NO, K507,  KC_NO, KC_NO, KC_NO, KC_NO, K512,  K513,  K514,  K515,  K516,  K517,  K518,  K519,  K520,  KC_NO, KC_NO }  \
+}
+
+#endif
\ No newline at end of file
index b318f3e..e375d53 100644 (file)
@@ -3,8 +3,8 @@ Omnikey Blackheart PCB
 
 A replacement PCB for Omnikey keyboards. Supports 101, 102, Plus, Ultra T, Ultra, Prime and Stellar, as well as customs.
 
-Keyboard Maintainer: QMK Community and blindassassin111
-Hardware Supported: Omnikey blackheart PCB
+Keyboard Maintainer: QMK Community and blindassassin111  
+Hardware Supported: Omnikey blackheart PCB  
 Hardware Availability: https://deskthority.net/group-buys-f50/omnikey-replacement-pcb-t18276.html
 
 Make example for this keyboard (after setting up your build environment):