diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson
index 86850af7a4..87f93798a8 100644
--- a/data/mappings/keyboard_aliases.hjson
+++ b/data/mappings/keyboard_aliases.hjson
@@ -407,6 +407,9 @@
"lfkeyboards/smk65": {
"target": "lfkeyboards/smk65/revb"
},
+ "ll3macorn/bongopad": {
+ "target": "ll3ma/bongopad"
+ },
"m3v3van": {
"target": "matthewdias/m3n3van"
},
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/config.h b/keyboards/dmqdesign/spin/keymaps/vial/config.h
new file mode 100644
index 0000000000..f27b251413
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2019-2020 DMQ Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB5, 0xA8, 0x3A, 0x61, 0x86, 0x45, 0x95, 0xDF}
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 3 }
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/keymap.c b/keyboards/dmqdesign/spin/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..9b9de7816d
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2019-2020 DMQ Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_MUTE,
+ KC_4, KC_5, KC_6, KC_MUTE,
+ KC_1, KC_2, KC_3, KC_MUTE,
+ KC_0, UG_TOGG, KC_ENTER
+ ),
+ [1] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_MUTE,
+ KC_4, KC_5, KC_6, KC_MUTE,
+ KC_1, KC_2, KC_3, KC_MUTE,
+ KC_0, UG_TOGG, KC_ENTER
+ ),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ // Encoder 1 Encoder 2 Encoder 3
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/rules.mk b/keyboards/dmqdesign/spin/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..eadfac430f
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+TAP_DANCE_ENABLE = no
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/vial.json b/keyboards/dmqdesign/spin/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4a9ad69472
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/vial.json
@@ -0,0 +1,58 @@
+{
+ "name": "SPIN Macropad",
+ "vendorId": "0xA455",
+ "productId": "0x0001",
+ "matrix": {
+ "rows": 3,
+ "cols": 5
+ },
+ "lighting": "qmk_rgblight",
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ "1,0",
+ "2,0",
+ {
+ "x": 0.25
+ },
+ "2,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ "0,1",
+ "1,1",
+ "2,1"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3.25
+ },
+ "1,4",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,2",
+ "1,2",
+ "2,2"
+ ],
+ [
+ "0,3",
+ "1,3",
+ "2,3",
+ {
+ "x": 0.25
+ },
+ "0,4",
+ "2,0\n\n\n\n\n\n\n\n\ne",
+ "2,1\n\n\n\n\n\n\n\n\ne"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/doio/kb03/keymaps/vial/config.h b/keyboards/doio/kb03/keymaps/vial/config.h
new file mode 100644
index 0000000000..b07dc742ce
--- /dev/null
+++ b/keyboards/doio/kb03/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF5, 0x92, 0xBC, 0x63, 0x72, 0x84, 0xCA, 0x4E}
+#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
+#define VIAL_UNLOCK_COMBO_COLS {0, 2}
diff --git a/keyboards/doio/kb03/keymaps/vial/keymap.c b/keyboards/doio/kb03/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..79365003e3
--- /dev/null
+++ b/keyboards/doio/kb03/keymaps/vial/keymap.c
@@ -0,0 +1,44 @@
+// Copyright 2025 DOIO
+// Copyright 2025 ClownFish (@clownfish-og)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum my_layers {
+ _BASE,
+ _MOUSE,
+ _MEDIA,
+ _LIGHTS
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ TO(_MOUSE),
+ KC_ENT, C(KC_C), C(KC_V),
+ C(KC_Z)
+ ),
+ [_MOUSE] = LAYOUT(
+ TO(_MEDIA),
+ MS_BTN1, MS_BTN3, MS_BTN2,
+ KC_LCTL
+ ),
+ [_MEDIA] = LAYOUT(
+ TO(_LIGHTS),
+ KC_MRWD, KC_MPLY, KC_MFFD,
+ KC_MUTE
+ ),
+ [_LIGHTS] = LAYOUT(
+ TO(_BASE),
+ RM_VALD, RM_NEXT, RM_VALU,
+ RM_TOGG
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [_BASE] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(MS_WHLL, MS_WHLR) },
+ [_MOUSE] = { ENCODER_CCW_CW(MS_LEFT, MS_RGHT), ENCODER_CCW_CW(MS_UP, MS_DOWN) },
+ [_MEDIA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [_LIGHTS] = { ENCODER_CCW_CW(RM_SATD, RM_SATU), ENCODER_CCW_CW(RM_HUED, RM_HUEU) }
+};
+#endif
diff --git a/keyboards/doio/kb03/keymaps/vial/rules.mk b/keyboards/doio/kb03/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..51d8828105
--- /dev/null
+++ b/keyboards/doio/kb03/keymaps/vial/rules.mk
@@ -0,0 +1,4 @@
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/doio/kb03/keymaps/vial/vial.json b/keyboards/doio/kb03/keymaps/vial/vial.json
new file mode 100644
index 0000000000..130fe8a295
--- /dev/null
+++ b/keyboards/doio/kb03/keymaps/vial/vial.json
@@ -0,0 +1,49 @@
+{
+ "lighting": "vialrgb",
+ "matrix": {"rows": 1, "cols": 5},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 0.5,
+ "y": 0.25,
+ "h": 0.5
+ },
+ "0,3"
+ ],
+ [
+ "0,0",
+ "0,1",
+ "0,2"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 0.5
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 1
+ },
+ "0,4"
+ ],
+ [
+ {
+ "x": 0.25,
+ "y": 0.25,
+ "w": 1.25,
+ "h": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ {
+ "w": 1.25,
+ "h": 1.25
+ },
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/era/comm/Riley/config.h b/keyboards/era/comm/Riley/config.h
new file mode 100644
index 0000000000..f1b3a4b4a9
--- /dev/null
+++ b/keyboards/era/comm/Riley/config.h
@@ -0,0 +1,8 @@
+// Copyright 2025 Hyojin Bak (@eerraa)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keyboard.json b/keyboards/era/comm/Riley/keyboard.json
new file mode 100644
index 0000000000..697d325a65
--- /dev/null
+++ b/keyboards/era/comm/Riley/keyboard.json
@@ -0,0 +1,114 @@
+{
+ "manufacturer": "eerraa",
+ "keyboard_name": "Riley",
+ "maintainer": "eerraa",
+ "bootloader": "rp2040",
+ "build": {
+ "debounce_type": "sym_defer_pk"
+ },
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "indicators": {
+ "caps_lock": "GP25"
+ },
+ "matrix_pins": {
+ "cols": ["GP29", "GP20", "GP19", "GP18", "GP15", "GP14", "GP13", "GP12", "GP11", "GP24", "GP23", "GP22", "GP9", "GP10"],
+ "rows": ["GP5", "GP8", "GP28", "GP26", "GP27"]
+ },
+ "processor": "RP2040",
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "layout": [
+ {"x": 208, "y": 64, "flags": 8},
+ {"x": 216, "y": 64, "flags": 8},
+ {"x": 224, "y": 64, "flags": 8}
+ ],
+ "sleep": true
+ },
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0024",
+ "vid": "0x4552"
+ },
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP4"
+ },
+ "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": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 14, "y": 0},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 12], "x": 12.75, "y": 2},
+ {"matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"matrix": [4, 4], "x": 4, "y": 4, "w": 3},
+ {"matrix": [4, 6], "x": 7, "y": 4},
+ {"matrix": [4, 8], "x": 8, "y": 4, "w": 3},
+ {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
+ {"matrix": [4, 12], "x": 12.5, "y": 4},
+ {"matrix": [4, 13], "x": 14.25, "y": 3}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keymaps/default/keymap.c b/keyboards/era/comm/Riley/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2f3b2491d6
--- /dev/null
+++ b/keyboards/era/comm/Riley/keymaps/default/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2025 Hyojin Bak (@eerraa)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ QK_GESC, 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_BSLS,
+ 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_BSPC,
+ 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_NUHS, KC_BSLS,
+ KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_ENT,
+ KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1)
+ ),
+ [1] = LAYOUT(
+ KC_GRV, 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_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS , KC_HOME, KC_PGUP, KC_PSCR, KC_SCRL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL , KC_END , KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keymaps/vial/config.h b/keyboards/era/comm/Riley/keymaps/vial/config.h
new file mode 100644
index 0000000000..2c22a5cbba
--- /dev/null
+++ b/keyboards/era/comm/Riley/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x08, 0x57, 0xF6, 0x88, 0xF6, 0x14, 0xCD, 0x5F}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keymaps/vial/keymap.c b/keyboards/era/comm/Riley/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..2f3b2491d6
--- /dev/null
+++ b/keyboards/era/comm/Riley/keymaps/vial/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2025 Hyojin Bak (@eerraa)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ QK_GESC, 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_BSLS,
+ 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_BSPC,
+ 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_NUHS, KC_BSLS,
+ KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_ENT,
+ KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1)
+ ),
+ [1] = LAYOUT(
+ KC_GRV, 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_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS , KC_HOME, KC_PGUP, KC_PSCR, KC_SCRL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL , KC_END , KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keymaps/vial/rules.mk b/keyboards/era/comm/Riley/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6bc7063adc
--- /dev/null
+++ b/keyboards/era/comm/Riley/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/keymaps/vial/vial.json b/keyboards/era/comm/Riley/keymaps/vial/vial.json
new file mode 100644
index 0000000000..c2fa2b4a11
--- /dev/null
+++ b/keyboards/era/comm/Riley/keymaps/vial/vial.json
@@ -0,0 +1,222 @@
+{
+ "name": "RILEY",
+ "vendorId": "0x4552",
+ "productId": "0x0024",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Backspace",
+ "Unified",
+ "Split"
+ ],
+ [
+ "Enter",
+ "ANSI",
+ "ISO"
+ ],
+ [
+ "Left Shift",
+ "ANSI",
+ "ISO"
+ ],
+ [
+ "Right Shift",
+ "Unified",
+ "Split"
+ ],
+ [
+ "Bottom Row",
+ "7U",
+ "Split"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.75,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13\n\n\n0,0",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "0,13\n\n\n0,1",
+ "1,13\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "2,13\n\n\n1,0",
+ {
+ "x": 2,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13\n\n\n1,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "3,0\n\n\n2,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,1\n\n\n2,1",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "3,12\n\n\n3,0",
+ {
+ "x": 0.5,
+ "w": 1.75
+ },
+ "3,12\n\n\n3,1",
+ {
+ "c": "#cccccc"
+ },
+ "4,13\n\n\n3,1"
+ ],
+ [
+ {
+ "x": 4.25,
+ "c": "#aaaaaa"
+ },
+ "4,1",
+ {
+ "w": 1.5
+ },
+ "4,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n4,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,11",
+ "4,12"
+ ],
+ [
+ {
+ "x": 6.75,
+ "c": "#cccccc",
+ "w": 3
+ },
+ "4,4\n\n\n4,1",
+ "4,6\n\n\n4,1",
+ {
+ "w": 3
+ },
+ "4,8\n\n\n4,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/era/comm/Riley/readme.md b/keyboards/era/comm/Riley/readme.md
new file mode 100644
index 0000000000..50445a206d
--- /dev/null
+++ b/keyboards/era/comm/Riley/readme.md
@@ -0,0 +1,23 @@
+# Riley
+
+* Keyboard Maintainer: [ERA](https://github.com/eerraa)
+* Hardware supported: Gok x Lily
+* Hardware availability: The Group Buy for this hardware has concluded. The hardware may be available on aftermarket channels.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make era/comm/riley:default
+
+Flashing example for this keyboard:
+
+ make era/comm/riley:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/readme.txt b/keyboards/era/comm/Riley/readme.txt
new file mode 100644
index 0000000000..77ab447bbd
--- /dev/null
+++ b/keyboards/era/comm/Riley/readme.txt
@@ -0,0 +1,53 @@
+##################################################
+# 펌웨어 업데이트 방법 (Firmware Update Guide)
+##################################################
+
+[한글 설명]
+
+■ 펌웨어 업데이트 절차
+
+1. 아래 3가지 방법 중 하나를 선택하여 키보드를 '부트로더(Bootloader)' 모드로 진입시킵니다.
+2. 부트로더 모드에 정상적으로 진입하면, 컴퓨터에 'RPI-RP2'와 같은 이름의 새로운 이동식 디스크가 나타납니다.
+3. 이 디스크에 준비된 펌웨어(.uf2) 파일을 복사하여 붙여넣으면 잠시 후 자동으로 업데이트가 완료됩니다.
+
+
+■ 부트로더 모드 진입 방법 (3가지)
+
+1. 부트매직(Bootmagic) 사용
+ - 키보드의 좌측 상단 키(일반적으로 Esc 키)를 누른 상태로 USB 케이블을 연결합니다.
+
+2. 물리적 리셋(Physical Reset) 사용
+ - 기판(PCB)의 리셋 버튼을 빠르게 두 번 누릅니다. (버튼이 있는 경우)
+ - 또는, 기판의 'RST' 핀과 'GND' 핀을 핀셋 등으로 짧게 두 번 접촉(쇼트)시킵니다.
+ - 또는, 'BOOT' 헤더 핀 두 개를 쇼트시킨 상태로 USB 케이블을 연결합니다.
+
+3. 리셋 키코드(Reset Keycode) 사용
+ - 키맵에 'QK_BOOT' 또는 'RESET'으로 미리 설정해 둔 키를 누릅니다.
+ - (이 방법은 키맵에 해당 기능 키를 미리 할당한 경우에만 사용할 수 있습니다.)
+
+
+======================================================================
+
+
+[English Description]
+
+■ How to Flash Firmware
+
+1. Enter the keyboard's "Bootloader" mode using one of the three methods described below.
+2. Once the keyboard is in bootloader mode, a new removable disk (e.g., "RPI-RP2") will appear on your computer.
+3. Copy-paste or drag-and-drop your prepared firmware file (e.g., firmware.uf2) onto this disk. The update will complete automatically.
+
+
+■ Three Ways to Enter Bootloader Mode
+
+1. Using Bootmagic
+ - Hold down the top-left key of the keyboard (usually the Esc key) while plugging in the USB cable.
+
+2. Using Physical Reset
+ - Quickly double-press the reset button on the PCB, if one exists.
+ - Alternatively, use tweezers to briefly short the 'RST' and 'GND' pins on the PCB twice.
+ - Alternatively, short the two 'BOOT' header pins while plugging in the USB cable.
+
+3. Using a Reset Keycode
+ - Press the key that you have assigned to 'QK_BOOT' or 'RESET' in your keymap.
+ - (This method only works if you have already configured such a key in your layout.)
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/riley.c b/keyboards/era/comm/Riley/riley.c
new file mode 100644
index 0000000000..9f3fa0aed1
--- /dev/null
+++ b/keyboards/era/comm/Riley/riley.c
@@ -0,0 +1,39 @@
+// Copyright 2025 Hyojin Bak (@eerraa)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include "rgb_matrix.h"
+#include "riley.h"
+
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user()) {
+ return false;
+ }
+
+ led_t led_state = host_keyboard_led_state();
+
+ if (led_state.caps_lock) {
+ RGB rgb = hsv_to_rgb((HSV){0, 255, 255}); // Red
+ rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b);
+ }
+
+ if (led_state.scroll_lock) {
+ RGB rgb = hsv_to_rgb((HSV){170, 255, 255}); // Blue
+ rgb_matrix_set_color(1, rgb.r, rgb.g, rgb.b);
+ }
+
+ if (led_state.num_lock) {
+ RGB rgb = hsv_to_rgb((HSV){85, 255, 255}); // Green
+ rgb_matrix_set_color(2, rgb.r, rgb.g, rgb.b);
+ }
+
+ return true;
+}
+
+void keyboard_post_init_kb(void) {
+ rgb_matrix_enable_noeeprom();
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(0, 0, 0);
+
+ keyboard_post_init_user();
+}
\ No newline at end of file
diff --git a/keyboards/era/comm/Riley/riley.h b/keyboards/era/comm/Riley/riley.h
new file mode 100644
index 0000000000..98570ccccb
--- /dev/null
+++ b/keyboards/era/comm/Riley/riley.h
@@ -0,0 +1,6 @@
+// Copyright 2025 Hyojin Bak (@eerraa)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
\ No newline at end of file
diff --git a/keyboards/geigeigeist/totem/config.h b/keyboards/geigeigeist/totem/config.h
new file mode 100644
index 0000000000..1c47337510
--- /dev/null
+++ b/keyboards/geigeigeist/totem/config.h
@@ -0,0 +1,18 @@
+// Copyright 2022 GEIST @geigeigeist
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+// Matrix size
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// Split communication (vendor serial on RP2040, using GP0/GP1)
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+#define SERIAL_USART_TX_PIN GP0 // USART TX pin
+#define SERIAL_USART_RX_PIN GP1 // USART RX pin
+#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
+#define EE_HANDS // Split handedness via eeprom
+
+// RP2040 bootloader double-tap
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
diff --git a/keyboards/geigeigeist/totem/keyboard.json b/keyboards/geigeigeist/totem/keyboard.json
new file mode 100644
index 0000000000..4982c15fb9
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keyboard.json
@@ -0,0 +1,72 @@
+{
+ "keyboard_name": "TOTEM",
+ "manufacturer": "GEIST",
+ "url": "https://github.com/GEIGEIGEIST/TOTEM",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x3A3C",
+ "pid": "0x0002",
+ "device_version": "0.3.0"
+ },
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "matrix_pins": {
+ "rows": ["GP26", "GP27", "GP28", "GP29"],
+ "cols": ["GP6", "GP7", "GP3", "GP4", "GP2"]
+ },
+ "diode_direction": "COL2ROW",
+ "debounce": 5,
+ "features": {
+ "swap_hands": true
+ },
+ "split": {
+ "enabled": true,
+ "serial": {
+ "driver": "vendor"
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "L00", "matrix": [0, 0], "x": 1, "y": 1.4 },
+ { "label": "L01", "matrix": [0, 1], "x": 2, "y": 0.6 },
+ { "label": "L02", "matrix": [0, 2], "x": 3, "y": 0 },
+ { "label": "L03", "matrix": [0, 3], "x": 4, "y": 0.5 },
+ { "label": "L04", "matrix": [0, 4], "x": 5, "y": 0.65 },
+ { "label": "R00", "matrix": [4, 4], "x": 9, "y": 0.65 },
+ { "label": "R01", "matrix": [4, 3], "x": 10, "y": 0.5 },
+ { "label": "R02", "matrix": [4, 2], "x": 11, "y": 0 },
+ { "label": "R03", "matrix": [4, 1], "x": 12, "y": 0.6 },
+ { "label": "R04", "matrix": [4, 0], "x": 13, "y": 1.4 },
+ { "label": "L10", "matrix": [1, 0], "x": 1, "y": 2.4 },
+ { "label": "L11", "matrix": [1, 1], "x": 2, "y": 1.6 },
+ { "label": "L12", "matrix": [1, 2], "x": 3, "y": 1 },
+ { "label": "L13", "matrix": [1, 3], "x": 4, "y": 1.5 },
+ { "label": "L14", "matrix": [1, 4], "x": 5, "y": 1.65 },
+ { "label": "R10", "matrix": [5, 4], "x": 9, "y": 1.65 },
+ { "label": "R11", "matrix": [5, 3], "x": 10, "y": 1.5 },
+ { "label": "R12", "matrix": [5, 2], "x": 11, "y": 1 },
+ { "label": "R13", "matrix": [5, 1], "x": 12, "y": 1.6 },
+ { "label": "R14", "matrix": [5, 0], "x": 13, "y": 2.4 },
+ { "label": "L30", "matrix": [3, 0], "x": 0, "y": 2.9 },
+ { "label": "L20", "matrix": [2, 0], "x": 1, "y": 3.4 },
+ { "label": "L21", "matrix": [2, 1], "x": 2, "y": 2.6 },
+ { "label": "L22", "matrix": [2, 2], "x": 3, "y": 2 },
+ { "label": "L23", "matrix": [2, 3], "x": 4, "y": 2.5 },
+ { "label": "L24", "matrix": [2, 4], "x": 5, "y": 2.65 },
+ { "label": "R20", "matrix": [6, 4], "x": 9, "y": 2.65 },
+ { "label": "R21", "matrix": [6, 3], "x": 10, "y": 2.5 },
+ { "label": "R22", "matrix": [6, 2], "x": 11, "y": 2 },
+ { "label": "R23", "matrix": [6, 1], "x": 12, "y": 2.6 },
+ { "label": "R24", "matrix": [6, 0], "x": 13, "y": 3.4 },
+ { "label": "R34", "matrix": [7, 0], "x": 14, "y": 2.9 },
+ { "label": "L32", "matrix": [3, 2], "x": 3.6, "y": 3.5 },
+ { "label": "L33", "matrix": [3, 3], "x": 4.8, "y": 3.65 },
+ { "label": "L34", "matrix": [3, 4], "x": 6, "y": 3.85 },
+ { "label": "R30", "matrix": [7, 4], "x": 8, "y": 3.85 },
+ { "label": "R31", "matrix": [7, 3], "x": 9.2, "y": 3.65 },
+ { "label": "R32", "matrix": [7, 2], "x": 10.4, "y": 3.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/geigeigeist/totem/keymaps/default/keymap.c b/keyboards/geigeigeist/totem/keymaps/default/keymap.c
new file mode 100644
index 0000000000..409dade783
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keymaps/default/keymap.c
@@ -0,0 +1,248 @@
+/*
+ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀
+ ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄
+ █ █ █ █ █ █ █ █ █ █ █
+ ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀
+ █ ▄▄▄█▄▄▄ █ █
+ ▀ █ █ █ █▄█
+ ▀▀▀▀▀ █ █ █ ▀
+ ▀ ▀ ▀ D E F A U L T
+
+▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+*/
+
+#include QMK_KEYBOARD_H
+
+// ┌─────────────────────────────────────────────────┐
+// │ d e f i n e l a y e r s │
+// └─────────────────────────────────────────────────┘
+
+enum totem_layers {
+ _QWERTY,
+ _COLEMAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+// ┌─────────────────────────────────────────────────┐
+/* │ d e f i n e k e y c o d e s │
+// └─────────────────────────────────────────────────┘ */
+
+enum custom_keycodes {
+ COLEMAK = SAFE_RANGE,
+ QWERTY,
+ LOWER,
+ RAISE,
+ ADJUST,
+ MAKE_H,
+ SNAP
+};
+
+// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// │ K E Y M A P S │
+// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ ┌─────────────────────────────────────────────────┐
+ │ q w e r t y │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ Q │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ P │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
+
+ [_QWERTY] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LCTL, KC_D), MT(MOD_LSFT, KC_F), KC_G, KC_H, MT(MOD_RSFT, KC_J), MT(MOD_LCTL, KC_K), MT(MOD_LALT, KC_L), MT(MOD_LGUI, KC_SCLN),
+ KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P,
+ KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
+ ),
+
+ /*
+
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ c o l e m a k │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ ; │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
+
+ [_COLEMAK] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_R), MT(MOD_LCTL, KC_S), MT(MOD_LSFT, KC_T), KC_D, KC_H, MT(MOD_RSFT, KC_N), MT(MOD_LCTL, KC_E), MT(MOD_LALT, KC_I), MT(MOD_LGUI, KC_O),
+ KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN,
+ KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
+ ),
+
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ l o w e r │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_LOWER] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS,
+ SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______,
+ _______, _______, _______, _______, MO(4), KC_P0
+ ),
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ r a i s e │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_RAISE] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U), RALT(KC_3), KC_BSLS,
+ RALT(KC_A), RALT(KC_F), RALT(KC_S), RALT(KC_G), XXXXXXX, XXXXXXX, LSFT(RALT(KC_4)), RALT(KC_5), RALT(KC_4), RALT(KC_O),
+ XXXXXXX, LSFT(KC_GRV), KC_TILD, RALT(KC_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1,
+ _______, MO(4), _______, _______, _______, _______
+ ),
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ a d j u s t │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_ADJUST] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12,
+ DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11,
+ MAKE_H, CG_TOGG, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13,
+ _______, _______, _______, _______, _______, _______
+ )
+};
+
+// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// │ M A C R O S │
+// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case CG_TOGG:
+ if (record->event.pressed) {
+ if (!keymap_config.swap_lctl_lgui) {
+ keymap_config.swap_lctl_lgui = true; // ─── MAC
+ } else {
+ keymap_config.swap_lctl_lgui = false; // ─── WIN
+ }
+ eeconfig_update_keymap(&keymap_config);
+ clear_keyboard(); // ──── clear to prevent stuck keys
+ return false;
+ }
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ l a y e r │
+ // └─────────────────────────────────────────────────┘
+
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ q m k │
+ // └─────────────────────────────────────────────────┘
+
+ case MAKE_H:
+ if (record->event.pressed) {
+ SEND_STRING("qmk compile -kb geigeigeist/totem -km default");
+ tap_code(KC_ENTER);
+ }
+ break;
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ p r o d u c t i v i t y │
+ // └─────────────────────────────────────────────────┘
+
+ case SNAP:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); // MAC
+ } else {
+ SEND_STRING(SS_LSFT(SS_LWIN("S"))); // WIN
+ }
+ }
+ break;
+ }
+ return true;
+}
+/*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+
+ ██████
+ ██ ▄▄▄▄
+ ██ ██▀▀██
+ ▀▀ ██▄▄██
+ ██████ ▀▀▀▀
+ ██ ▄▄▄▄▄▄
+ ██ ██▀▀▀▀
+ ██ ██████
+ ██▄▄▄▄
+ ▀▀▀▀▀▀
+ ████████
+ ██ ██ ██
+ ██ ██ ██
+ ▀▀ ▀▀ ▀▀
+ ████████
+
+*/
diff --git a/keyboards/geigeigeist/totem/keymaps/vial/config.h b/keyboards/geigeigeist/totem/keymaps/vial/config.h
new file mode 100644
index 0000000000..b106bf0630
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keymaps/vial/config.h
@@ -0,0 +1,22 @@
+// Copyright 2022 GEIST @geigeigeist
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define VIAL_KEYBOARD_UID \
+ { 0xCB, 0x37, 0x36, 0xFE, 0xEE, 0xED, 0xEE, 0x77 }
+#define VIAL_UNLOCK_COMBO_ROWS \
+ { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS \
+ { 0, 0 }
+
+// #define TAPPING_TERM 170
+#define TAPPING_TERM 170
+
+// Auto Shift
+#define NO_AUTO_SHIFT_ALPHA
+#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/geigeigeist/totem/keymaps/vial/keymap.c b/keyboards/geigeigeist/totem/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..16de5f5904
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keymaps/vial/keymap.c
@@ -0,0 +1,285 @@
+/*
+ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀
+ ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄
+ █ █ █ █ █ █ █ █ █ █ █
+ ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀
+ █ ▄▄▄█▄▄▄ █ █
+ ▀ █ █ █ █▄█
+ ▀▀▀▀▀ █ █ █ ▀
+ ▀ ▀ ▀ D E F A U L T
+
+▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
+*/
+
+#include QMK_KEYBOARD_H
+
+// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// │ D E F I N I T I O N S │
+// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+// ┌─────────────────────────────────────────────────┐
+// │ d e f i n e l a y e r s │
+// └─────────────────────────────────────────────────┘
+
+enum totem_layers {
+ _QWERTY,
+ _COLEMAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+// ┌─────────────────────────────────────────────────┐
+// │ d e f i n e k e y c o d e s │
+// └─────────────────────────────────────────────────┘
+
+enum custom_keycodes { COLEMAK = SAFE_RANGE, QWERTY, LOWER, RAISE, ADJUST, OS_SWAP, MAKE_H, SNAP };
+
+// ┌─────────────────────────────────────────────────┐
+// │ d e f i n e m a c r o n a m e s │
+// └─────────────────────────────────────────────────┘
+
+// LEFT HAND HOME ROW MODS QWERTY ├──────────────────┐
+
+#define GUI_A MT(MOD_LGUI, KC_A)
+#define ALT_S MT(MOD_LALT, KC_S)
+#define CTL_D MT(MOD_LCTL, KC_D)
+#define SHT_F MT(MOD_LSFT, KC_F)
+
+// RIGHT HAND HOME ROW MODS QWERTY ├─────────────────┐
+
+#define SHT_J MT(MOD_RSFT, KC_J)
+#define CTL_K MT(MOD_LCTL, KC_K)
+#define ALT_L MT(MOD_LALT, KC_L)
+#define GUI_S MT(MOD_LGUI, KC_SCLN)
+
+// LEFT HAND HOME ROW MODS COLEMAK ├─────────────────┐
+
+#define GUI_A MT(MOD_LGUI, KC_A)
+#define ALT_R MT(MOD_LALT, KC_R)
+#define CTL_S MT(MOD_LCTL, KC_S)
+#define SHT_T MT(MOD_LSFT, KC_T)
+
+// RIGHT HAND HOME ROW MODS COLEMAK ├────────────────┐
+
+#define SHT_N MT(MOD_RSFT, KC_N)
+#define CTL_E MT(MOD_LCTL, KC_E)
+#define ALT_I MT(MOD_LALT, KC_I)
+#define GUI_O MT(MOD_LGUI, KC_O)
+
+#define LOWER LT(_LOWER, KC_TAB)
+#define RAISE LT(_RAISE, KC_ESC)
+#define ADJUST MO(_ADJUST)
+
+// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+/* │ K E Y M A P S │
+// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ */
+// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ ┌─────────────────────────────────────────────────┐
+ │ q w e r t y │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ Q │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ P │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
+
+ [_QWERTY] = LAYOUT(
+ // ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, GUI_A, ALT_S, CTL_D, SHT_F, KC_G, KC_H, SHT_J, CTL_K, ALT_L, GUI_S, KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P, KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC),
+
+ /*
+
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ c o l e m a k │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ ; │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/
+
+ [_COLEMAK] = LAYOUT(
+ // ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC),
+
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ l o w e r │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_LOWER] = LAYOUT(
+ // ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, _______, _______, _______, _______, ADJUST, KC_P0),
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ r a i s e │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_RAISE] = LAYOUT(
+ // ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U), RALT(KC_3), KC_BSLS, RALT(KC_A), RALT(KC_F), RALT(KC_S), RALT(KC_G), XXXXXXX, XXXXXXX, LSFT(RALT(KC_4)), RALT(KC_5), RALT(KC_4), RALT(KC_O), XXXXXXX, LSFT(KC_GRV), KC_TILD, RALT(KC_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, _______, ADJUST, _______, _______, _______, _______),
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ a d j u s t │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */
+
+ [_ADJUST] = LAYOUT(
+ // ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, _______, _______, _______, _______, _______, _______)
+ /*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+ ┌─────────────────────────────────────────────────┐
+ │ t e m p l a t e │ ╭╮╭╮╭╮╭╮
+ └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│
+ ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐
+ ╌┄┈┈───═╡ │ │ │ │ ││ │ │ │ │ │
+ ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤
+ │ │ │ │ │ ││ │ │ │ │ │
+ ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐
+ │ │ │ │ │ │ ││ │ │ │ │ │ │
+ └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘
+ │ │ │ ││ │ │ │
+ └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘
+
+ [_TEMPLATE] = LAYOUT(
+ //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ ),
+ */
+};
+
+// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
+// │ M A C R O S │
+// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case OS_SWAP:
+ if (record->event.pressed) {
+ if (!keymap_config.swap_lctl_lgui) {
+ keymap_config.swap_lctl_lgui = true; // ─── MAC
+ } else {
+ keymap_config.swap_lctl_lgui = false; // ─── WIN
+ }
+ eeconfig_update_keymap(&keymap_config);
+ clear_keyboard(); // ──── clear to prevent stuck keys
+ return false;
+ }
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ l a y e r │
+ // └─────────────────────────────────────────────────┘
+
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ q m k │
+ // └─────────────────────────────────────────────────┘
+
+ case MAKE_H:
+ if (record->event.pressed) {
+ SEND_STRING("qmk compile -kb geigeigeist/totem -km default");
+ tap_code(KC_ENTER);
+ }
+ break;
+
+ // ┌─────────────────────────────────────────────────┐
+ // │ p r o d u c t i v i t y │
+ // └─────────────────────────────────────────────────┘
+
+ case SNAP:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); // MAC
+ } else {
+ SEND_STRING(SS_LSFT(SS_LWIN("S"))); // WIN
+ }
+ }
+ break;
+ }
+ return true;
+}
+/*
+ ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
+
+
+ ██████
+ ██ ▄▄▄▄
+ ██ ██▀▀██
+ ▀▀ ██▄▄██
+ ██████ ▀▀▀▀
+ ██ ▄▄▄▄▄▄
+ ██ ██▀▀▀▀
+ ██ ██████
+ ██▄▄▄▄
+ ▀▀▀▀▀▀
+ ████████
+ ██ ██ ██
+ ██ ██ ██
+ ▀▀ ▀▀ ▀▀
+ ████████
+
+*/
diff --git a/keyboards/geigeigeist/totem/keymaps/vial/rules.mk b/keyboards/geigeigeist/totem/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/geigeigeist/totem/keymaps/vial/vial.json b/keyboards/geigeigeist/totem/keymaps/vial/vial.json
new file mode 100644
index 0000000000..e53703a4f6
--- /dev/null
+++ b/keyboards/geigeigeist/totem/keymaps/vial/vial.json
@@ -0,0 +1,148 @@
+{
+ "name": "TOTEM",
+ "lighting": "none",
+ "vendorId": "0x3A3C",
+ "productId": "0x0002",
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ [
+ { "y": 0.25, "x": 3 },
+ "4,2",
+ { "x": 9 },
+ "0,2"
+ ],
+ [
+ { "y": -0.5, "x": 4 },
+ "4,3",
+ { "x": 7 },
+ "0,3"
+ ],
+ [
+ { "y": -0.75, "x": 5 },
+ "4,4",
+ { "x": 5 },
+ "0,4"
+ ],
+ [
+ { "y": -0.75, "x": 3 },
+ "5,2",
+ { "x": 9 },
+ "1,2"
+ ],
+ [
+ { "y": -0.5, "x": 4 },
+ "5,3",
+ { "x": 7 },
+ "1,3"
+ ],
+ [
+ { "y": -0.75, "x": 5 },
+ "5,4",
+ { "x": 5 },
+ "1,4"
+ ],
+ [
+ { "y": -0.75, "x": 3 },
+ "6,2",
+ { "x": 9 },
+ "2,2"
+ ],
+ [
+ { "y": -0.5, "x": 4 },
+ "6,3",
+ { "x": 7 },
+ "2,3"
+ ],
+ [
+ { "y": -0.75, "x": 5 },
+ "6,4",
+ { "x": 5 },
+ "2,4"
+ ],
+ [
+ { "rx": 4, "ry": 8.6, "y": -4.6, "x": -0.3999999999999999 },
+ "7,2"
+ ],
+ [
+ { "rx": 13, "y": -4.6, "x": -0.5999999999999996 },
+ "3,2"
+ ],
+ [
+ { "r": 4, "rx": 14.5, "ry": 3.75, "y": -3, "x": -0.5 },
+ "0,1"
+ ],
+ [
+ { "x": -0.5 },
+ "1,1"
+ ],
+ [
+ { "x": -0.5 },
+ "2,1"
+ ],
+ [
+ { "r": 10, "rx": 15.25, "y": -2.35, "x": -0.25 },
+ "0,0"
+ ],
+ [
+ { "x": -0.25 },
+ "1,0"
+ ],
+ [
+ { "y": -0.3999999999999999, "x": 0.75 },
+ "3,0"
+ ],
+ [
+ { "y": -0.6000000000000001, "x": -0.25 },
+ "2,0"
+ ],
+ [
+ { "r": 15, "rx": 4, "ry": 8.6, "y": -4.6, "x": -0.3999999999999999 },
+ "7,3"
+ ],
+ [
+ { "r": 30, "y": -1, "x": -0.3999999999999999 },
+ "7,4"
+ ],
+ [
+ { "r": -30, "rx": 13, "y": -4.6, "x": -0.5999999999999996 },
+ "3,4"
+ ],
+ [
+ { "r": -15, "y": -1, "x": -0.5999999999999996 },
+ "3,3"
+ ],
+ [
+ { "r": -10, "rx": 2, "ry": 3.75, "y": -2.35, "x": -1 },
+ "4,0"
+ ],
+ [
+ { "x": -1 },
+ "5,0"
+ ],
+ [
+ { "y": -0.3999999999999999, "x": -2 },
+ "7,0"
+ ],
+ [
+ { "y": -0.6000000000000001, "x": -1 },
+ "6,0"
+ ],
+ [
+ { "r": -4, "rx": 2.75, "y": -3, "x": -0.75 },
+ "4,1"
+ ],
+ [
+ { "x": -0.75 },
+ "5,1"
+ ],
+ [
+ { "x": -0.75 },
+ "6,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/geigeigeist/totem/readme.md b/keyboards/geigeigeist/totem/readme.md
new file mode 100644
index 0000000000..a8914900da
--- /dev/null
+++ b/keyboards/geigeigeist/totem/readme.md
@@ -0,0 +1,23 @@
+# TOTEM
+
+TOTEM is a 38-key column-staggered split keyboard by GEIGEIGEIST designed for Seeed XIAO RP2040 or XIAO nRF52840 BLE. This port targets the wired RP2040 variant.
+
+- Repository: https://github.com/GEIGEIGEIST/TOTEM
+- Controller: Seeed Studio XIAO RP2040
+- Split transport: vendor serial (RP2040) on GP0/GP1
+- Matrix: 8 rows x 5 columns
+- Diodes: COL2ROW
+
+Build
+
+- Default keymap:
+ qmk compile -kb geigeigeist/totem -km default
+
+- Vial keymap:
+ qmk compile -kb geigeigeist/totem -km vial
+
+Notes
+
+- The JSON-driven keyboard definition is in keyboard.json (QMK data-driven format).
+- For Vial, the UID and unlock combo are defined in keymaps/vial/config.h, with VIAL_ENABLE in keymaps/vial/rules.mk.
+- If using XIAO RP2040 bootloader, double-tap reset is enabled (500ms timeout).
diff --git a/keyboards/geigeigeist/totem/rules.mk b/keyboards/geigeigeist/totem/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/geigeigeist/totem/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/geigeigeist/totem/totem.c b/keyboards/geigeigeist/totem/totem.c
new file mode 100644
index 0000000000..b1c0acec82
--- /dev/null
+++ b/keyboards/geigeigeist/totem/totem.c
@@ -0,0 +1,40 @@
+/* Copyright 2022
+ * GEIST @geigeigeist
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "quantum.h"
+
+#ifdef SWAP_HANDS_ENABLE
+
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] =
+ // The LAYOUT macro could work for this, but it was harder to figure out the
+ // identity using it.
+
+ // This is the mirror, q <-> p, w <-> o, etc...
+{
+ { {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4} },
+ { {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5} },
+ { {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6} },
+ { {4, 7}, {2, 7}, {1, 7}, {0, 7} },
+
+ { {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0} },
+ { {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1} },
+ { {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2} },
+ { {4, 3}, {3, 3}, {2, 3}, {0, 3} },
+};
+
+#endif // SWAP_HANDS_ENABLE
diff --git a/keyboards/hlb/cantor/config.h b/keyboards/hlb/cantor/config.h
new file mode 100644
index 0000000000..cf52d85ad7
--- /dev/null
+++ b/keyboards/hlb/cantor/config.h
@@ -0,0 +1,14 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+#define SERIAL_USART_TX_PIN B6 // USART TX pin
+#define SERIAL_USART_RX_PIN B7 // USART RX pin
+
+#define BOOTMAGIC_ROW 3
+#define BOOTMAGIC_COLUMN 0
+
+#define BOOTMAGIC_ROW_RIGHT 7
+#define BOOTMAGIC_COLUMN_RIGHT 2
diff --git a/keyboards/hlb/cantor/halconf.h b/keyboards/hlb/cantor/halconf.h
new file mode 100644
index 0000000000..8214c4bc6d
--- /dev/null
+++ b/keyboards/hlb/cantor/halconf.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#include_next
diff --git a/keyboards/hlb/cantor/keyboard.json b/keyboards/hlb/cantor/keyboard.json
new file mode 100644
index 0000000000..7cfdbbbf9b
--- /dev/null
+++ b/keyboards/hlb/cantor/keyboard.json
@@ -0,0 +1,92 @@
+{
+ "manufacturer": "HLB",
+ "keyboard_name": "CantorMX F411",
+ "maintainer": "H3lli0n",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "processor": "STM32F411",
+ "bootloader": "stm32-dfu",
+ "url": "https://github.com/H3lli0n/CantorMx-3DP-case",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "matrix_pins": {
+ "direct": [
+ ["B1", "B10", "A8", "B15", "B14", "B13"],
+ ["B9", "B8", "B5", "B4", "B3", "A15"],
+ ["A3", "A4", "A5", "A6", "A7", "B0"],
+ ["A2", "A1", "A0", null, null, null]
+ ]
+ },
+ "split": {
+ "enabled": true,
+ "matrix_pins": {
+ "right": {
+ "direct": [
+ ["B13", "B14", "B15", "A8", "B10", "B1"],
+ ["A15", "B3", "B4", "B5", "B8", "B9"],
+ ["B0", "A7", "A6", "A5", "A4", "A3"],
+ ["A0", "A1", "A2", null, null, null]
+ ]
+ }
+ },
+ "serial": {
+ "driver": "usart"
+ }
+ },
+ "community_layouts": ["split_3x6_3"],
+ "layouts": {
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.125},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0.125},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [4, 0], "x": 8, "y": 0.25},
+ {"matrix": [4, 1], "x": 9, "y": 0.125},
+ {"matrix": [4, 2], "x": 10, "y": 0},
+ {"matrix": [4, 3], "x": 11, "y": 0.125},
+ {"matrix": [4, 4], "x": 12, "y": 0.25},
+ {"matrix": [4, 5], "x": 13, "y": 0.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.125},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1.125},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [5, 0], "x": 8, "y": 1.25},
+ {"matrix": [5, 1], "x": 9, "y": 1.125},
+ {"matrix": [5, 2], "x": 10, "y": 1},
+ {"matrix": [5, 3], "x": 11, "y": 1.125},
+ {"matrix": [5, 4], "x": 12, "y": 1.25},
+ {"matrix": [5, 5], "x": 13, "y": 1.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25},
+ {"matrix": [2, 1], "x": 1, "y": 2.25},
+ {"matrix": [2, 2], "x": 2, "y": 2.125},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2.125},
+ {"matrix": [2, 5], "x": 5, "y": 2.25},
+ {"matrix": [6, 0], "x": 8, "y": 2.25},
+ {"matrix": [6, 1], "x": 9, "y": 2.125},
+ {"matrix": [6, 2], "x": 10, "y": 2},
+ {"matrix": [6, 3], "x": 11, "y": 2.125},
+ {"matrix": [6, 4], "x": 12, "y": 2.25},
+ {"matrix": [6, 5], "x": 13, "y": 2.25},
+ {"matrix": [3, 0], "x": 3.5, "y": 3.25},
+ {"matrix": [3, 1], "x": 4.5, "y": 3.5},
+ {"matrix": [3, 2], "x": 5.5, "y": 3.75},
+ {"matrix": [7, 0], "x": 7.5, "y": 3.75},
+ {"matrix": [7, 1], "x": 8.5, "y": 3.5},
+ {"matrix": [7, 2], "x": 9.5, "y": 3.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/hlb/cantor/keymaps/default/keymap.c b/keyboards/hlb/cantor/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d4e03aa615
--- /dev/null
+++ b/keyboards/hlb/cantor/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
+ * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│
+ * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │GUI├───┐ ┌───┤Alt│
+ * └───┤ ├───┐ ┌───┤ ├───┘
+ * └───┤Bsp│ │Ent├───┘
+ * └───┘ └───┘
+ */
+ [0] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, KC_RALT
+ )
+};
+
diff --git a/keyboards/hlb/cantor/keymaps/vial/config.h b/keyboards/hlb/cantor/keymaps/vial/config.h
new file mode 100644
index 0000000000..fc583cd668
--- /dev/null
+++ b/keyboards/hlb/cantor/keymaps/vial/config.h
@@ -0,0 +1,16 @@
+#pragma once
+
+/* keyboard uid */
+#define VIAL_KEYBOARD_UID {0x0C, 0xA9, 0xA3, 0x03, 0xE0, 0x06, 0x52, 0x7E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 3, 7 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
+
+/* default layer count */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
+#define VIAL_TAP_DANCE_ENTRIES 20
+
+/* Select hand configuration */
+#define EE_HANDS
+#define SPLIT_WATCHDOG_ENABLE
+#define SPLIT_WATCHDOG_TIMEOUT 20000
diff --git a/keyboards/hlb/cantor/keymaps/vial/keymap.c b/keyboards/hlb/cantor/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..74c0057137
--- /dev/null
+++ b/keyboards/hlb/cantor/keymaps/vial/keymap.c
@@ -0,0 +1,97 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _DVORAK,
+ _COLEMAK_DH,
+ _NAV,
+ _SYM,
+ _MODS,
+};
+
+// Aliases for readability
+#define QWERTY DF(_QWERTY)
+#define COLEMAK DF(_COLEMAK_DH)
+#define DVORAK DF(_DVORAK)
+
+#define SYM MO(_SYM)
+#define NAV MO(_NAV)
+#define MODS MO(_MODS)
+
+#define CTL_ESC MT(MOD_LCTL, KC_ESC)
+#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
+#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
+#define ALT_ENT MT(MOD_LALT, KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * Base Layer: QWERTY
+ * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
+ * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│
+ * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │GUI├───┐ ┌───┤Alt│
+ * └───┤ ├───┐ ┌───┤ ├───┘
+ * └───┤Bsp│ │Ent├───┘
+ * └───┘ └───┘
+ */
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
+ ),
+ /*
+ * Base Layer: Dvorak
+ */
+ [_DVORAK] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_QUOTE, KC_COMM, KC_DOT, KC_P , KC_Y, KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC,
+ CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G, KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT,
+ KC_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
+ ),
+ /*
+ * Base Layer: Colemak DH
+ */
+ [_COLEMAK_DH] = LAYOUT_split_3x6_3(
+ KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B, KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC,
+ CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G, KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_D , KC_V, KC_K, KC_H ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
+ KC_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
+ ),
+ /*
+ * Nav Layer: Fn, navigation
+ */
+ [_NAV] = LAYOUT_split_3x6_3(
+ KC_TRNS, KC_F9 , KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
+ KC_TRNS, KC_F5 , KC_F6 , KC_F7 , KC_F8, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
+ KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4, KC_TRNS, KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS
+ ),
+ /*
+ * Symboles
+ */
+ [_SYM] = LAYOUT_split_3x6_3(
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL,
+ KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
+ KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
+ KC_CAPS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ /*
+ * Layer for mods
+ */
+ [_MODS] = LAYOUT_split_3x6_3(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QWERTY,
+ KC_TRNS, KC_LGUI, KC_LCTL, KC_LALT, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DVORAK,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, COLEMAK,
+ KC_QUOTE, KC_CIRC, KC_SCLN, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/hlb/cantor/keymaps/vial/rules.mk b/keyboards/hlb/cantor/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..06783389f9
--- /dev/null
+++ b/keyboards/hlb/cantor/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes # Enable VIA
+VIAL_ENABLE = yes # Enable VIAL
+
+#We need to specify bootloader and MCU for F411 8Mhz version of BlackPillS
+MCU = STM32F411
+
+#We are in split keyboard mode
+SPLIT_KEYBOARD = yes
+SERIAL_DRIVER = usart
diff --git a/keyboards/hlb/cantor/keymaps/vial/vial.json b/keyboards/hlb/cantor/keymaps/vial/vial.json
new file mode 100644
index 0000000000..257639300b
--- /dev/null
+++ b/keyboards/hlb/cantor/keymaps/vial/vial.json
@@ -0,0 +1,259 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ {
+ "x": 7.5
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "0,2",
+ {
+ "x": 1
+ },
+ "0,4",
+ {
+ "x": 5.5
+ },
+ "4,1",
+ {
+ "x": 1
+ },
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.9,
+ "x": 5
+ },
+ "0,5",
+ {
+ "x": 3.5
+ },
+ "4,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 1
+ },
+ "1,3",
+ {
+ "x": 7.5
+ },
+ "5,2",
+ {
+ "x": 1
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 1
+ },
+ "1,4",
+ {
+ "x": 5.5
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 5
+ },
+ "1,5",
+ {
+ "x": 3.5
+ },
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 1
+ },
+ "2,3",
+ {
+ "x": 7.5
+ },
+ "6,2",
+ {
+ "x": 1
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "2,2",
+ {
+ "x": 1
+ },
+ "2,4",
+ {
+ "x": 5.5
+ },
+ "6,1",
+ {
+ "x": 1
+ },
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 5
+ },
+ "2,5",
+ {
+ "x": 3.5
+ },
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 11.5
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": 5,
+ "rx": 5,
+ "ry": 3.5,
+ "x": 0.09999999999999964
+ },
+ "3,1"
+ ],
+ [
+ {
+ "rx": 10.75
+ },
+ "7,2"
+ ],
+ [
+ {
+ "r": 15,
+ "rx": 6.5,
+ "y": 0.20000000000000018,
+ "x": -0.04999999999999982
+ },
+ "3,2"
+ ],
+ [
+ {
+ "r": -15,
+ "rx": 8.25,
+ "y": 0.3900000000000001,
+ "x": -0.15000000000000036
+ },
+ "7,0"
+ ],
+ [
+ {
+ "r": -5,
+ "rx": 3.6,
+ "y": 0.10000000000000009,
+ "x": 0.20000000000000018
+ },
+ "3,0"
+ ],
+ [
+ {
+ "rx": 9.5,
+ "y": 0.10000000000000009,
+ "x": -0.05000000000000071
+ },
+ "7,1"
+ ]
+ ],
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0.25 },
+ { "matrix": [0, 1], "x": 1, "y": 0.25 },
+ { "matrix": [0, 2], "x": 2, "y": 0.125 },
+ { "matrix": [0, 3], "x": 3, "y": 0 },
+ { "matrix": [0, 4], "x": 4, "y": 0.125 },
+ { "matrix": [0, 5], "x": 5, "y": 0.25 },
+ { "matrix": [4, 0], "x": 8, "y": 0.25 },
+ { "matrix": [4, 1], "x": 9, "y": 0.125 },
+ { "matrix": [4, 2], "x": 10, "y": 0 },
+ { "matrix": [4, 3], "x": 11, "y": 0.125 },
+ { "matrix": [4, 4], "x": 12, "y": 0.25 },
+ { "matrix": [4, 5], "x": 13, "y": 0.25 },
+ { "matrix": [1, 0], "x": 0, "y": 1.25 },
+ { "matrix": [1, 1], "x": 1, "y": 1.25 },
+ { "matrix": [1, 2], "x": 2, "y": 1.125 },
+ { "matrix": [1, 3], "x": 3, "y": 1 },
+ { "matrix": [1, 4], "x": 4, "y": 1.125 },
+ { "matrix": [1, 5], "x": 5, "y": 1.25 },
+ { "matrix": [5, 0], "x": 8, "y": 1.25 },
+ { "matrix": [5, 1], "x": 9, "y": 1.125 },
+ { "matrix": [5, 2], "x": 10, "y": 1 },
+ { "matrix": [5, 3], "x": 11, "y": 1.125 },
+ { "matrix": [5, 4], "x": 12, "y": 1.25 },
+ { "matrix": [5, 5], "x": 13, "y": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2.25 },
+ { "matrix": [2, 1], "x": 1, "y": 2.25 },
+ { "matrix": [2, 2], "x": 2, "y": 2.125 },
+ { "matrix": [2, 3], "x": 3, "y": 2 },
+ { "matrix": [2, 4], "x": 4, "y": 2.125 },
+ { "matrix": [2, 5], "x": 5, "y": 2.25 },
+ { "matrix": [6, 0], "x": 8, "y": 2.25 },
+ { "matrix": [6, 1], "x": 9, "y": 2.125 },
+ { "matrix": [6, 2], "x": 10, "y": 2 },
+ { "matrix": [6, 3], "x": 11, "y": 2.125 },
+ { "matrix": [6, 4], "x": 12, "y": 2.25 },
+ { "matrix": [6, 5], "x": 13, "y": 2.25 },
+ { "matrix": [3, 0], "x": 3.5, "y": 3.25 },
+ { "matrix": [3, 1], "x": 4.5, "y": 3.5 },
+ { "matrix": [3, 2], "x": 5.5, "y": 3.75 },
+ { "matrix": [7, 0], "x": 7.5, "y": 3.75 },
+ { "matrix": [7, 1], "x": 8.5, "y": 3.5 },
+ { "matrix": [7, 2], "x": 9.5, "y": 3.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/hlb/cantor/mcuconf.h b/keyboards/hlb/cantor/mcuconf.h
new file mode 100644
index 0000000000..9274e1b9ca
--- /dev/null
+++ b/keyboards/hlb/cantor/mcuconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/hlb/cantor/readme.md b/keyboards/hlb/cantor/readme.md
new file mode 100644
index 0000000000..1827345ec5
--- /dev/null
+++ b/keyboards/hlb/cantor/readme.md
@@ -0,0 +1,28 @@
+# HLB CantorMX F411
+
+Project based on original Cantor keyboard (42 key diodeless split keyboard), designed with simplicity in mind. It is inspired on the popular [corne](https://github.com/foostan/crkbd), [ferris](https://github.com/pierrechevalier83/ferris) and [sweep](https://github.com/davidphilipbarr/Sweep) keyboards, aiming to provide a more ergonomic (stronger column stagger) corne-like layout with a simple, easy to assemble and cheap design.
+We upgraded blackpill version to STM32F411 8Mhz therefore original firmware maintained by [Diego Palacios](https://github.com/diepala) must be adapted to this hardware.
+A case design has beed made to get a full 3DP Cantor project (see below)
+
+* Keyboard Maintainer: [HLB H3lli0n](https://github.com/H3lli0n)
+* Hardware Supported: Blackpill STM32F411 8Mhz only
+* Hardware Availability: https://github.com/H3lli0n/CantorMx-3DP-case
+
+This firmware is made for EE_HANDS split, to build and flash your firmwares (left and right) please follow the examples below with hand in DFU mode:
+
+Make+flash example for this split (after setting up your build environment):
+ make hlb/cantor:vial::dfu-util-split-left
+ make hlb/cantor:vial::dfu-util-split-right
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the thumb key on the left and plug in the keyboard. For the right side, hold the thumb key on the right and plug the keyboard.
+* **Physical reset button**:
+ * Press and hold the BOOT0 button.
+ * Press and release the NRST button.
+ * Release the BOOT0 button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keyboard.json b/keyboards/hlb/hyperbolas/hyp_s/keyboard.json
new file mode 100644
index 0000000000..db39798f88
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keyboard.json
@@ -0,0 +1,492 @@
+{
+ "manufacturer": "HLB",
+ "keyboard_name": "hyperbolas",
+ "maintainer": "H3lli0n",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": [
+ "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23", "GP24",
+ "GP12", "GP6", "GP5", "GP4", "GP3", "GP25", "GP2", "GP1", "GP0"
+ ],
+ "rows": ["GP11", "GP10", "GP9", "GP8", "GP7", "GP15"]
+ },
+ "processor": "RP2040",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0007",
+ "vid": "0x3025"
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix": [0,0], "label":"Esc", "x":0, "y":0},
+ {"matrix": [0,2], "label":"F1", "x":2, "y":0},
+ {"matrix": [0,3], "label":"F2", "x":3, "y":0},
+ {"matrix": [0,4], "label":"F3", "x":4, "y":0},
+ {"matrix": [0,5], "label":"F4", "x":5, "y":0},
+ {"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
+ {"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
+ {"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
+ {"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
+ {"matrix": [0,10], "label":"F9", "x":11, "y":0},
+ {"matrix": [0,11], "label":"F10", "x":12, "y":0},
+ {"matrix": [0,12], "label":"F11", "x":13, "y":0},
+ {"matrix": [0,13], "label":"F12", "x":14, "y":0},
+ {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
+ {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
+ {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
+ {"matrix": [1,0], "label":"~", "x":0, "y":1.25},
+ {"matrix": [1,1], "label":"!", "x":1, "y":1.25},
+ {"matrix": [1,2], "label":"@", "x":2, "y":1.25},
+ {"matrix": [1,3], "label":"#", "x":3, "y":1.25},
+ {"matrix": [1,4], "label":"$", "x":4, "y":1.25},
+ {"matrix": [1,5], "label":"%", "x":5, "y":1.25},
+ {"matrix": [1,6], "label":"^", "x":6, "y":1.25},
+ {"matrix": [1,7], "label":"&", "x":7, "y":1.25},
+ {"matrix": [1,8], "label":"*", "x":8, "y":1.25},
+ {"matrix": [1,9], "label":"(", "x":9, "y":1.25},
+ {"matrix": [1,10], "label":")", "x":10, "y":1.25},
+ {"matrix": [1,11], "label":"_", "x":11, "y":1.25},
+ {"matrix": [1,12], "label":"+", "x":12, "y":1.25},
+ {"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
+ {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
+ {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
+ {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
+ {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
+ {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
+ {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
+ {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
+ {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
+ {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
+ {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
+ {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
+ {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
+ {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
+ {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
+ {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
+ {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
+ {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
+ {"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
+ {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
+ {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
+ {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
+ {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
+ {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
+ {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
+ {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
+ {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
+ {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
+ {"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
+ {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
+ {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
+ {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
+ {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
+ {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
+ {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
+ {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
+ {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
+ {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
+ {"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
+ {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
+ {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
+ {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
+ {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
+ {"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
+ {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
+ {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_ansi_tsangan": {
+ "layout": [
+ {"matrix": [0,0], "label":"Esc", "x":0, "y":0},
+ {"matrix": [0,2], "label":"F1", "x":2, "y":0},
+ {"matrix": [0,3], "label":"F2", "x":3, "y":0},
+ {"matrix": [0,4], "label":"F3", "x":4, "y":0},
+ {"matrix": [0,5], "label":"F4", "x":5, "y":0},
+ {"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
+ {"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
+ {"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
+ {"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
+ {"matrix": [0,10], "label":"F9", "x":11, "y":0},
+ {"matrix": [0,11], "label":"F10", "x":12, "y":0},
+ {"matrix": [0,12], "label":"F11", "x":13, "y":0},
+ {"matrix": [0,13], "label":"F12", "x":14, "y":0},
+ {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
+ {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
+ {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
+ {"matrix": [1,0], "label":"~", "x":0, "y":1.25},
+ {"matrix": [1,1], "label":"!", "x":1, "y":1.25},
+ {"matrix": [1,2], "label":"@", "x":2, "y":1.25},
+ {"matrix": [1,3], "label":"#", "x":3, "y":1.25},
+ {"matrix": [1,4], "label":"$", "x":4, "y":1.25},
+ {"matrix": [1,5], "label":"%", "x":5, "y":1.25},
+ {"matrix": [1,6], "label":"^", "x":6, "y":1.25},
+ {"matrix": [1,7], "label":"&", "x":7, "y":1.25},
+ {"matrix": [1,8], "label":"*", "x":8, "y":1.25},
+ {"matrix": [1,9], "label":"(", "x":9, "y":1.25},
+ {"matrix": [1,10], "label":")", "x":10, "y":1.25},
+ {"matrix": [1,11], "label":"_", "x":11, "y":1.25},
+ {"matrix": [1,12], "label":"+", "x":12, "y":1.25},
+ {"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
+ {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
+ {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
+ {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
+ {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
+ {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
+ {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
+ {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
+ {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
+ {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
+ {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
+ {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
+ {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
+ {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
+ {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
+ {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
+ {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
+ {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
+ {"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
+ {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
+ {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
+ {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
+ {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
+ {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
+ {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
+ {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
+ {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
+ {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
+ {"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
+ {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
+ {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
+ {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
+ {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
+ {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
+ {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
+ {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
+ {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
+ {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
+ {"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
+ {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
+ {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
+ {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"matrix": [5,1], "label":"Win", "x":1.5, "y":5.25, "w":1.5},
+ {"matrix": [5,2], "label":"Alt", "x":3, "y":5.25, "w":1.5},
+ {"matrix": [5,6], "label":"Space", "x":4.5, "y":5.25, "w":7},
+ {"matrix": [5,11], "label":"Alt", "x":11.5, "y":5.25, "w":1.5},
+ {"matrix": [5,12], "label":"Win", "x":13, "y":5.25, "w":1.5},
+ {"matrix": [5,13], "label":"Ctrl", "x":14.5, "y":5.25, "w":1.5},
+ {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
+ {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
+ {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_iso": {
+ "layout": [
+ {"matrix": [0,0], "label":"Esc", "x":0, "y":0},
+ {"matrix": [0,2], "label":"F1", "x":2, "y":0},
+ {"matrix": [0,3], "label":"F2", "x":3, "y":0},
+ {"matrix": [0,4], "label":"F3", "x":4, "y":0},
+ {"matrix": [0,5], "label":"F4", "x":5, "y":0},
+ {"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
+ {"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
+ {"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
+ {"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
+ {"matrix": [0,10], "label":"F9", "x":11, "y":0},
+ {"matrix": [0,11], "label":"F10", "x":12, "y":0},
+ {"matrix": [0,12], "label":"F11", "x":13, "y":0},
+ {"matrix": [0,13], "label":"F12", "x":14, "y":0},
+ {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
+ {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
+ {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
+ {"matrix": [1,0], "label":"~", "x":0, "y":1.25},
+ {"matrix": [1,1], "label":"!", "x":1, "y":1.25},
+ {"matrix": [1,2], "label":"@", "x":2, "y":1.25},
+ {"matrix": [1,3], "label":"#", "x":3, "y":1.25},
+ {"matrix": [1,4], "label":"$", "x":4, "y":1.25},
+ {"matrix": [1,5], "label":"%", "x":5, "y":1.25},
+ {"matrix": [1,6], "label":"^", "x":6, "y":1.25},
+ {"matrix": [1,7], "label":"&", "x":7, "y":1.25},
+ {"matrix": [1,8], "label":"*", "x":8, "y":1.25},
+ {"matrix": [1,9], "label":"(", "x":9, "y":1.25},
+ {"matrix": [1,10], "label":")", "x":10, "y":1.25},
+ {"matrix": [1,11], "label":"_", "x":11, "y":1.25},
+ {"matrix": [1,12], "label":"+", "x":12, "y":1.25},
+ {"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
+ {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
+ {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
+ {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
+ {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
+ {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
+ {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
+ {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
+ {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
+ {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
+ {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
+ {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
+ {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
+ {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
+ {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
+ {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
+ {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
+ {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
+ {"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
+ {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
+ {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
+ {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
+ {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
+ {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
+ {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
+ {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
+ {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
+ {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
+ {"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
+ {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
+ {"matrix": [3,12], "label":"|", "x":12.75, "y":3.25},
+ {"matrix": [3,13], "label":"Enter", "x":13.75, "y":3.25, "w": 1.25, "h": 2},
+ {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
+ {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
+ {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
+ {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
+ {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
+ {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
+ {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
+ {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
+ {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
+ {"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
+ {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
+ {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
+ {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
+ {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
+ {"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
+ {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
+ {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_iso_tsangan": {
+ "layout": [
+ {"matrix": [0,0], "label":"Esc", "x":0, "y":0},
+ {"matrix": [0,2], "label":"F1", "x":2, "y":0},
+ {"matrix": [0,3], "label":"F2", "x":3, "y":0},
+ {"matrix": [0,4], "label":"F3", "x":4, "y":0},
+ {"matrix": [0,5], "label":"F4", "x":5, "y":0},
+ {"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
+ {"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
+ {"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
+ {"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
+ {"matrix": [0,10], "label":"F9", "x":11, "y":0},
+ {"matrix": [0,11], "label":"F10", "x":12, "y":0},
+ {"matrix": [0,12], "label":"F11", "x":13, "y":0},
+ {"matrix": [0,13], "label":"F12", "x":14, "y":0},
+ {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
+ {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
+ {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
+ {"matrix": [1,0], "label":"~", "x":0, "y":1.25},
+ {"matrix": [1,1], "label":"!", "x":1, "y":1.25},
+ {"matrix": [1,2], "label":"@", "x":2, "y":1.25},
+ {"matrix": [1,3], "label":"#", "x":3, "y":1.25},
+ {"matrix": [1,4], "label":"$", "x":4, "y":1.25},
+ {"matrix": [1,5], "label":"%", "x":5, "y":1.25},
+ {"matrix": [1,6], "label":"^", "x":6, "y":1.25},
+ {"matrix": [1,7], "label":"&", "x":7, "y":1.25},
+ {"matrix": [1,8], "label":"*", "x":8, "y":1.25},
+ {"matrix": [1,9], "label":"(", "x":9, "y":1.25},
+ {"matrix": [1,10], "label":")", "x":10, "y":1.25},
+ {"matrix": [1,11], "label":"_", "x":11, "y":1.25},
+ {"matrix": [1,12], "label":"+", "x":12, "y":1.25},
+ {"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
+ {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
+ {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
+ {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
+ {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
+ {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
+ {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
+ {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
+ {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
+ {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
+ {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
+ {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
+ {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
+ {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
+ {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
+ {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
+ {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
+ {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
+ {"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
+ {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
+ {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
+ {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
+ {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
+ {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
+ {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
+ {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
+ {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
+ {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
+ {"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
+ {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
+ {"matrix": [3,12], "label":"|", "x":12.75, "y":3.25},
+ {"matrix": [3,13], "label":"Enter", "x":13.75, "y":3.25, "w": 1.25, "h": 2},
+ {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
+ {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
+ {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
+ {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
+ {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
+ {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
+ {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
+ {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
+ {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
+ {"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
+ {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
+ {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
+ {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"matrix": [5,1], "label":"Win", "x":1.5, "y":5.25, "w":1.5},
+ {"matrix": [5,2], "label":"Alt", "x":3, "y":5.25, "w":1.5},
+ {"matrix": [5,6], "label":"Space", "x":4.5, "y":5.25, "w":7},
+ {"matrix": [5,11], "label":"Alt", "x":11.5, "y":5.25, "w":1.5},
+ {"matrix": [5,12], "label":"Win", "x":13, "y":5.25, "w":1.5},
+ {"matrix": [5,13], "label":"Ctrl", "x":14.5, "y":5.25, "w":1.5},
+ {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
+ {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
+ {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"matrix": [0,0], "label":"Esc", "x":0, "y":0},
+ {"matrix": [0,2], "label":"F1", "x":2, "y":0},
+ {"matrix": [0,3], "label":"F2", "x":3, "y":0},
+ {"matrix": [0,4], "label":"F3", "x":4, "y":0},
+ {"matrix": [0,5], "label":"F4", "x":5, "y":0},
+ {"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
+ {"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
+ {"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
+ {"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
+ {"matrix": [0,10], "label":"F9", "x":11, "y":0},
+ {"matrix": [0,11], "label":"F10", "x":12, "y":0},
+ {"matrix": [0,12], "label":"F11", "x":13, "y":0},
+ {"matrix": [0,13], "label":"F12", "x":14, "y":0},
+ {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
+ {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
+ {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
+ {"matrix": [1,0], "label":"~", "x":0, "y":1.25},
+ {"matrix": [1,1], "label":"!", "x":1, "y":1.25},
+ {"matrix": [1,2], "label":"@", "x":2, "y":1.25},
+ {"matrix": [1,3], "label":"#", "x":3, "y":1.25},
+ {"matrix": [1,4], "label":"$", "x":4, "y":1.25},
+ {"matrix": [1,5], "label":"%", "x":5, "y":1.25},
+ {"matrix": [1,6], "label":"^", "x":6, "y":1.25},
+ {"matrix": [1,7], "label":"&", "x":7, "y":1.25},
+ {"matrix": [1,8], "label":"*", "x":8, "y":1.25},
+ {"matrix": [1,9], "label":"(", "x":9, "y":1.25},
+ {"matrix": [1,10], "label":")", "x":10, "y":1.25},
+ {"matrix": [1,11], "label":"_", "x":11, "y":1.25},
+ {"matrix": [1,12], "label":"+", "x":12, "y":1.25},
+ {"matrix": [1,13], "label":"1U Split Bksp", "x":13, "y":1.25},
+ {"matrix": [1,14], "label":"Backspace", "x":14, "y":1.25},
+ {"matrix": [1,15], "label":"/", "x":15.25, "y":1.25},
+ {"matrix": [1,16], "label":"*", "x":16.25, "y":1.25},
+ {"matrix": [1,17], "label":"-", "x":17.25, "y":1.25},
+ {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
+ {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
+ {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
+ {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
+ {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
+ {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
+ {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
+ {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
+ {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
+ {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
+ {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
+ {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
+ {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"matrix": [2,15], "label":"7", "x":15.25, "y":2.25},
+ {"matrix": [2,16], "label":"8", "x":16.25, "y":2.25},
+ {"matrix": [2,17], "label":"9", "x":17.25, "y":2.25},
+ {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
+ {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
+ {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
+ {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
+ {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
+ {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
+ {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
+ {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
+ {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
+ {"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
+ {"matrix": [3,11], "label":"\"", "x":12.75, "y":3.25},
+ {"matrix": [3,12], "label":"|", "x":13.75, "y":3.25},
+ {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [3,15], "label":"4", "x":15.25, "y":3.25},
+ {"matrix": [3,16], "label":"5", "x":16.25, "y":3.25},
+ {"matrix": [3,17], "label":"6", "x":17.25, "y":3.25},
+ {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
+ {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
+ {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
+ {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
+ {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
+ {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
+ {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
+ {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
+ {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
+ {"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
+ {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
+ {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"matrix": [4,13], "label":"Fn", "x":14, "y":4.25},
+ {"matrix": [4,15], "label":"1", "x":15.25, "y":4.25},
+ {"matrix": [4,16], "label":"2", "x":16.25, "y":4.25},
+ {"matrix": [4,17], "label":"3", "x":17.25, "y":4.25},
+ {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
+ {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
+ {"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"matrix": [5,15], "label":"0", "x":15.25, "y":5.25},
+ {"matrix": [5,16], "label":"0", "x":16.25, "y":5.25},
+ {"matrix": [5,17], "label":".", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keymaps/default/keymap.c b/keyboards/hlb/hyperbolas/hyp_s/keymaps/default/keymap.c
new file mode 100644
index 0000000000..eb206858c5
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │/ │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │ 7 │ 8 │ 9 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ├───┼───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ | 1 │ 2 │ 3 |
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ├───┼───┼───┤
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ 0 │ 0 │ . │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_all(
+ 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_SCRL, KC_PAUS,
+
+ 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_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_P0, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/config.h b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/config.h
new file mode 100644
index 0000000000..b61818ae31
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/config.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBE, 0xF5, 0xDB, 0xD4, 0xA3, 0x2A, 0xAC, 0xDE}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 2, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#define VIAL_TAP_DANCE_ENTRIES 10
+#define VIAL_COMBO_ENTRIES 15
+#define VIAL_KEY_OVERRIDE_ENTRIES 10
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/keymap.c b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..eb206858c5
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │/ │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │ 7 │ 8 │ 9 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ├───┼───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ | 1 │ 2 │ 3 |
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ├───┼───┼───┤
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ 0 │ 0 │ . │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_all(
+ 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_SCRL, KC_PAUS,
+
+ 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_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_P0, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/rules.mk b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/vial.json b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/vial.json
new file mode 100644
index 0000000000..1814386b9b
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/keymaps/vial/vial.json
@@ -0,0 +1,296 @@
+{
+ "matrix": {
+ "rows": 6,
+ "cols": 18
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "Split Right Shift",
+ "Numpad 00",
+ ["Bottom Row", "7U", "6.25U", "WKL"]
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.5
+ },
+ "0,0",
+ {
+ "x": 1
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ {
+ "x": 0.5
+ },
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "x": 0.25
+ },
+ "0,15",
+ "0,16",
+ "0,17"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 2
+ },
+ "1,14\n\n\n0,0",
+ {
+ "x": 0.25
+ },
+ "1,15",
+ "1,16",
+ "1,17",
+ {
+ "x": 0.25
+ },
+ "1,13\n\n\n0,1",
+ "1,14\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "w": 1.5
+ },
+ "2,13\n\n\n1,0",
+ {
+ "x": 0.25
+ },
+ "2,15",
+ "2,16",
+ "2,17",
+ {
+ "x": 1.75,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.75
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "w": 2.25
+ },
+ "3,13\n\n\n1,0",
+ {
+ "x": 0.25
+ },
+ "3,15",
+ "3,16",
+ "3,17",
+ {
+ "x": 0.75
+ },
+ "3,12\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "4,0\n\n\n2,1",
+ "4,1\n\n\n2,1",
+ {
+ "x": 0.25,
+ "w": 2.25
+ },
+ "4,0\n\n\n2,0",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "w": 2.75
+ },
+ "4,12\n\n\n3,0",
+ {
+ "x": 0.25
+ },
+ "4,15",
+ "4,16",
+ "4,17",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "4,12\n\n\n3,1",
+ "4,13\n\n\n3,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5
+ },
+ "5,0\n\n\n5,0",
+ "5,1\n\n\n5,0",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n5,0",
+ {
+ "w": 7
+ },
+ "5,6\n\n\n5,0",
+ {
+ "w": 1.5
+ },
+ "5,11\n\n\n5,0",
+ "5,12\n\n\n5,0",
+ {
+ "w": 1.5
+ },
+ "5,13\n\n\n5,0",
+ {
+ "x": 0.25
+ },
+ "5,15\n\n\n4,0",
+ "5,16\n\n\n4,0",
+ "5,17",
+ {
+ "x": 0.25,
+ "w": 2
+ },
+ "5,15\n\n\n4,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5,
+ "w": 1.25
+ },
+ "5,0\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n5,1",
+ {
+ "w": 6.25
+ },
+ "5,6\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,10\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,11\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,12\n\n\n5,1",
+ {
+ "w": 1.25
+ },
+ "5,13\n\n\n5,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5
+ },
+ "5,0\n\n\n5,2",
+ {
+ "d": true
+ },
+ "5,1\n\n\n5,2",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n5,2",
+ {
+ "w": 7
+ },
+ "5,6\n\n\n5,2",
+ {
+ "w": 1.5
+ },
+ "5,11\n\n\n5,2",
+ {
+ "d": true
+ },
+ "5,12\n\n\n5,2",
+ {
+ "w": 1.5
+ },
+ "5,13\n\n\n5,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/hlb/hyperbolas/hyp_s/readme.md b/keyboards/hlb/hyperbolas/hyp_s/readme.md
new file mode 100644
index 0000000000..ce1fa78577
--- /dev/null
+++ b/keyboards/hlb/hyperbolas/hyp_s/readme.md
@@ -0,0 +1,26 @@
+# Hyperbolas
+
+
+
+TKL project from HLB with 8K pcb layout compatibility.
+
+* Keyboard Maintainer: [H3lli0n](https://github.com/H3lli0n)
+* Hardware Supported: HLB Hyperbolas
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hlb/hyperbolas/hyp-s:default
+
+Flashing example for this keyboard:
+
+ make hlb/hyperbolas/hyp-s:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard.
+* **Physical reset button**: Press 2 times the physical reset button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/hlb/poorkoi/config.h b/keyboards/hlb/poorkoi/config.h
new file mode 100644
index 0000000000..67a47ab07e
--- /dev/null
+++ b/keyboards/hlb/poorkoi/config.h
@@ -0,0 +1,21 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#define WS2812_EXTERNAL_PULLUP
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYER_BLINK
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
\ No newline at end of file
diff --git a/keyboards/hlb/poorkoi/keyboard.json b/keyboards/hlb/poorkoi/keyboard.json
new file mode 100644
index 0000000000..ee728c7496
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keyboard.json
@@ -0,0 +1,320 @@
+{
+ "manufacturer": "HLB",
+ "keyboard_name": "PoorKoi",
+ "maintainer": "H3lli0n",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A2", "pin_b": "A1", "resolution": 2}
+ ]
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "key_lock": true,
+ "mousekey": true,
+ "encoder": false,
+ "nkro": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["B2", "A5", "A4", "A3", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
+ "rows": ["B14", "A9", "B6", "B5", "B4"]
+ },
+ "processor": "STM32F072",
+ "rgblight": {
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ },
+ "led_count": 17,
+ "driver": "ws2812"
+ },
+ "usb": {
+ "device_version": "0.0.5",
+ "pid": "0x0014",
+ "vid": "0x4444"
+ },
+ "ws2812": {
+ "pin": "A8"
+ },
+ "layout_aliases": {
+ "LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
+ },
+ "layouts": {
+ "LAYOUT_60_hhkb": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
+ {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Backspace", "matrix": [2, 13], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 4], "x": 4, "y": 4, "w": 3},
+ {"label": "Space", "matrix": [4, 6], "x": 7, "y": 4},
+ {"label": "Space", "matrix": [4, 8], "x": 8, "y": 4, "w": 3},
+ {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/hlb/poorkoi/keymaps/default/keymap.c b/keyboards/hlb/poorkoi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..18de982f4d
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/*
+Copyright 2024 HLB
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include QMK_KEYBOARD_H
+#include "poorkoi.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// main layer
+[_BASE] = LAYOUT_all(
+ KC_ESC, 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_BSLS, KC_BSPC,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+// basic function layer
+[_FN] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_VOLD, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS),
+
+// rgb/media layer
+[_MEDIA] = LAYOUT_all(
+ KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// gaming layer
+[_GAME] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// mac
+[_MAC] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS)
+};
+
diff --git a/keyboards/hlb/poorkoi/keymaps/vial/config.h b/keyboards/hlb/poorkoi/keymaps/vial/config.h
new file mode 100644
index 0000000000..c278d7903a
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keymaps/vial/config.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE8, 0x87, 0xFD, 0x48, 0x56, 0xCB, 0xA9, 0x09}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#define VIAL_TAP_DANCE_ENTRIES 10
+#define VIAL_COMBO_ENTRIES 15
+#define VIAL_KEY_OVERRIDE_ENTRIES 10
diff --git a/keyboards/hlb/poorkoi/keymaps/vial/keymap.c b/keyboards/hlb/poorkoi/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..87bb046271
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keymaps/vial/keymap.c
@@ -0,0 +1,60 @@
+/*
+Copyright 2024 HLB
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include QMK_KEYBOARD_H
+#include "poorkoi.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// main layer
+[_BASE] = LAYOUT_all(
+ KC_ESC, 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_BSLS, KC_BSPC,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+// basic function layer
+[_FN] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_VOLD, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS),
+
+// rgb/media layer
+[_MEDIA] = LAYOUT_all(
+ KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// gaming layer
+[_GAME] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+// mac
+[_MAC] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS)
+};
\ No newline at end of file
diff --git a/keyboards/hlb/poorkoi/keymaps/vial/rules.mk b/keyboards/hlb/poorkoi/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/hlb/poorkoi/keymaps/vial/vial.json b/keyboards/hlb/poorkoi/keymaps/vial/vial.json
new file mode 100644
index 0000000000..e0952b04ea
--- /dev/null
+++ b/keyboards/hlb/poorkoi/keymaps/vial/vial.json
@@ -0,0 +1,282 @@
+{
+ "lighting": "qmk_rgblight",
+ "customKeycodes": [
+ {"name": "LAY_INDIC_RGB",
+ "title": "Layer indicator on capslock LED",
+ "shortName": "L_INDIC"
+ }
+ ],
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels":[
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "Split Spacebar",
+ [
+ "Bottom Row",
+ "WK",
+ "WKL",
+ "HHKB"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "x": 15.5
+ },
+ "0,13\n\n\n0,1",
+ "2,13\n\n\n0,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "fa": [
+ 0,
+ 0,
+ 0,
+ 1
+ ],
+ "w": 2
+ },
+ "2,13\n\n\n0,0"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "1,13\n\n\n1,0",
+ {
+ "x": 1.25,
+ "f": 3,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.75
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "f": 3,
+ "w": 2.25
+ },
+ "3,13\n\n\n1,0",
+ {
+ "x": 0.25,
+ "f": 3
+ },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ {
+ "f": 3,
+ "w": 1.25
+ },
+ "3,0\n\n\n2,1",
+ {
+ "f": 3
+ },
+ "3,1\n\n\n2,1",
+ {
+ "x": 0.25,
+ "f": 3,
+ "w": 2.25
+ },
+ "3,0\n\n\n2,0",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "w": 1.75
+ },
+ "3,12",
+ "4,13"
+ ],
+ [
+ {
+ "x": 2.5,
+ "f": 3,
+ "w": 1.5
+ },
+ "4,0\n\n\n4,0",
+ {
+ "f": 3
+ },
+ "4,1\n\n\n4,0",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,2\n\n\n4,0",
+ {
+ "f": 3,
+ "w": 7
+ },
+ "4,6\n\n\n3,0",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,10\n\n\n4,0",
+ {
+ "f": 3
+ },
+ "4,11\n\n\n4,0",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,12\n\n\n4,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5,
+ "f": 3,
+ "w": 1.5
+ },
+ "4,0\n\n\n4,1",
+ {
+ "f": 3,
+ "d": true
+ },
+ "4,1\n\n\n4,1",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,2\n\n\n4,1",
+ {
+ "x": 7,
+ "f": 3,
+ "w": 1.5
+ },
+ "4,10\n\n\n4,1",
+ {
+ "f": 3,
+ "d": true
+ },
+ "4,11\n\n\n4,1",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,12\n\n\n4,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "f": 3,
+ "w": 1.5,
+ "d": true
+ },
+ "4,0\n\n\n4,2",
+ {
+ "f": 3
+ },
+ "4,1\n\n\n4,2",
+ {
+ "f": 3,
+ "w": 1.5
+ },
+ "4,2\n\n\n4,2",
+ {
+ "x": 7,
+ "f": 3,
+ "w": 1.5
+ },
+ "4,10\n\n\n4,2",
+ {
+ "f": 3
+ },
+ "4,11\n\n\n4,2",
+ {
+ "f": 3,
+ "w": 1.5,
+ "d": true
+ },
+ "4,12\n\n\n4,2"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 6.5,
+ "f": 3,
+ "w": 3
+ },
+ "4,4\n\n\n3,1",
+ {
+ "f": 3
+ },
+ "4,6\n\n\n3,1",
+ {
+ "f": 3,
+ "w": 3
+ },
+ "4,8\n\n\n3,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/hlb/poorkoi/matrix_diagram.md b/keyboards/hlb/poorkoi/matrix_diagram.md
new file mode 100644
index 0000000000..b4a012b482
--- /dev/null
+++ b/keyboards/hlb/poorkoi/matrix_diagram.md
@@ -0,0 +1,28 @@
+# Matrix Diagram for PoorKoi based on 4pplet Waffling60 Rev E Solder
+
+```
+ ┌───────┐
+ 2u Backspace │2D │
+ └───────┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐
+│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐3D │
+│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │3D │ │2C │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘
+│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │4D │ ISO Enter
+├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤
+│40 │41 │42 │44 │46 │48 │49 │4A │4B │4C │
+└────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘
+┌────────┐
+│30 │ 2.25u LShift
+└────────┘
+┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+│40 │41 │42 │46 │4A │4B │4C │ Tsangan/WKL
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+┌─────┬───┬─────┬──────────┬──────┬─────────┬─────┬───┬─────┐
+│40 │41 │42 │44 │46 │48 │4A │4B │4C │ 3U split space
+└─────┴───┴─────┴──────────┴──────┴─────────┴─────┴───┴─────┘
+
+```
diff --git a/keyboards/hlb/poorkoi/poorkoi.c b/keyboards/hlb/poorkoi/poorkoi.c
new file mode 100644
index 0000000000..af3071cb73
--- /dev/null
+++ b/keyboards/hlb/poorkoi/poorkoi.c
@@ -0,0 +1,140 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include "poorkoi.h"
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_layer_change :1;
+ };
+} user_config_t;
+
+/* User preference */
+user_config_t user_config;
+
+/* Feature toggle blink duration */
+const uint16_t rgbBlinkDuration = 300;
+
+/* RGB Layers definition*/
+const rgblight_segment_t PROGMEM my_base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_FN_COLOR}
+);
+const rgblight_segment_t PROGMEM my_media_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_MEDIA_COLOR}
+);
+const rgblight_segment_t PROGMEM my_gaming_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_GAMING_COLOR}
+);
+const rgblight_segment_t PROGMEM my_mac_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_MAC_COLOR}
+);
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, CAPS_LOCK_COLOR}
+);
+const rgblight_segment_t PROGMEM my_indicator_on_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_INDIC_COLOR},
+ {9, 5, LAYER_INDIC_COLOR}
+);
+const rgblight_segment_t PROGMEM my_indicator_off_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {16, 1, LAYER_INDIC_COLOR},
+ {2, 5, LAYER_INDIC_COLOR}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_base_layer,
+ my_fn_layer,
+ my_media_layer,
+ my_gaming_layer,
+ my_mac_layer,
+ my_capslock_layer,
+ my_indicator_on_layer,
+ my_indicator_off_layer
+);
+
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ user_config.raw = 0;
+ user_config.rgb_layer_change = false; // We want this enabled by default
+ eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
+
+ // use the non noeeprom versions, to write these values to EEPROM too
+ rgblight_enable(); // Enable RGB by default
+ rgblight_sethsv(HSV_PURPLE); // Set it to PURPLE by default
+ rgblight_mode(1); // set to solid by default
+}
+
+void keyboard_pre_init_kb(void) {
+ rgblight_set_effect_range(0, RGBLIGHT_LED_COUNT - 1);
+ keyboard_pre_init_user();
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+
+ // Read the user config from EEPROM
+ user_config.raw = eeconfig_read_user();
+}
+
+/* Updating LED located under capslock */
+bool led_update_kb(led_t led_state) {
+ rgblight_set_layer_state(5, host_keyboard_led_state().caps_lock);
+ return true;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
+ return state;
+}
+
+/* Use capslock led for layer indicator */
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
+
+ if(user_config.rgb_layer_change){
+ rgblight_set_layer_state(_FN, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(_MEDIA, layer_state_cmp(state, _MEDIA));
+ rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME));
+ rgblight_set_layer_state(_MAC, layer_state_cmp(state, _MAC));
+ }
+
+ return state;
+}
+
+/* Update user preference on layer indicator*/
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LAY_INDIC_RGB:
+ if (record->event.pressed) {
+ user_config.rgb_layer_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+
+ if (user_config.rgb_layer_change) { // if layer state indication is enabled,
+ rgblight_blink_layer(6, rgbBlinkDuration);
+ }else{
+ rgblight_blink_layer(7, rgbBlinkDuration);
+ }
+
+ layer_state_set(layer_state); // then immediately update the layer color
+ }
+ return false; // Skip all further processing of this key
+
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/hlb/poorkoi/poorkoi.h b/keyboards/hlb/poorkoi/poorkoi.h
new file mode 100644
index 0000000000..71d6268440
--- /dev/null
+++ b/keyboards/hlb/poorkoi/poorkoi.h
@@ -0,0 +1,38 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define CAPS_LOCK_ENABLE true
+#define CAPS_LOCK_COLOR HSV_GREEN
+
+#define LAYER_FN_COLOR HSV_PURPLE
+#define LAYER_MEDIA_COLOR HSV_ORANGE
+#define LAYER_GAMING_COLOR HSV_CYAN
+#define LAYER_MAC_COLOR HSV_RED
+#define LAYER_INDIC_COLOR HSV_WHITE
+
+enum layers {
+ _BASE = 0,
+ _FN,
+ _MEDIA,
+ _GAME,
+ _MAC,
+};
+
+enum hlbKeycodes {
+ LAY_INDIC_RGB = QK_KB_0,
+};
diff --git a/keyboards/hlb/poorkoi/readme.md b/keyboards/hlb/poorkoi/readme.md
new file mode 100644
index 0000000000..f2ee797301
--- /dev/null
+++ b/keyboards/hlb/poorkoi/readme.md
@@ -0,0 +1,25 @@
+# HLB PoorKoi
+
+60% HLB PoorKoi's pcb is based on 4pplet/waffling60/rev_e (https://github.com/4pplet/waffling60).
+* PCB features tsangan layout with ansi/iso layouts as well as split spacebar, split left/right shift, stepped capslock.
+* PCB feature dedicated graphic art and flex cut were removed.
+
+Regarding source code we added extra features with dedicated custom keycode **L_INDIC**:
+
+* LED indicator and capslock indicator are managed through lightning layers
+* Layer indicator is shown even if rgb underglow is off
+* Added a led indicator when custom keycode L_INDIC is on/off
+ * Blink on top when off
+ * Blink on bottom when on
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hlb/poorkoi:vial
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+How to enter bootloader (DFU):
+* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard.
+
+Alternative option if the firmware is already pre-flashed:
+* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
diff --git a/keyboards/hlb/poorkoi/rules.mk b/keyboards/hlb/poorkoi/rules.mk
new file mode 100644
index 0000000000..04fe1eba2a
--- /dev/null
+++ b/keyboards/hlb/poorkoi/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -p FFFF -v FFFF
diff --git a/keyboards/keebio/iris_lm/keymaps/vial/config.h b/keyboards/keebio/iris_lm/keymaps/vial/config.h
new file mode 100644
index 0000000000..0228b65aa8
--- /dev/null
+++ b/keyboards/keebio/iris_lm/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x97, 0xF0, 0xDF, 0xEC, 0x29, 0x72, 0x1E, 0x31}
+#define VIAL_UNLOCK_COMBO_ROWS {0,9}
+#define VIAL_UNLOCK_COMBO_COLS {0,5}
diff --git a/keyboards/keebio/iris_lm/keymaps/vial/keymap.c b/keyboards/keebio/iris_lm/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..6c06313f00
--- /dev/null
+++ b/keyboards/keebio/iris_lm/keymaps/vial/keymap.c
@@ -0,0 +1,70 @@
+// Copyright 2025 Keebio (@keebio)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layer {
+ _MAIN,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_MAIN] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_LGUI, TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RALT
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PGUP,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_GRV, _______, KC_UP, _______, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PGDN,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_MOD, _______, _______, _______, _______, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, KC_DEL, KC_DEL, _______, KC_P0
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, QK_BOOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, _______, _______, _______, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, _______, _______, _______, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/keebio/iris_lm/keymaps/vial/rules.mk b/keyboards/keebio/iris_lm/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..d013bc62da
--- /dev/null
+++ b/keyboards/keebio/iris_lm/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/keebio/iris_lm/keymaps/vial/vial.json b/keyboards/keebio/iris_lm/keymaps/vial/vial.json
new file mode 100644
index 0000000000..1d686af65e
--- /dev/null
+++ b/keyboards/keebio/iris_lm/keymaps/vial/vial.json
@@ -0,0 +1,66 @@
+{
+ "lighting": "vialrgb",
+ "matrix": {"rows": 10, "cols": 6},
+ "layouts": {
+ "keymap": [
+ [ {"x": 3}, "0,3", {"x": 8}, "5,3" ],
+ [
+ {"y": -0.875, "x": 2},
+ "0,2",
+ {"x": 1},
+ "0,4",
+ {"x": 6},
+ "5,4",
+ {"x": 1},
+ "5,2"
+ ],
+ [ {"y": -0.875, "x": 5}, "0,5", {"x": 4}, "5,5" ],
+ [ {"y": -0.875}, "0,0", "0,1", {"x": 12}, "5,1", "5,0" ],
+ [ {"y": -0.385, "x": 3}, "1,3", {"x": 8}, "6,3" ],
+ [
+ {"y": -0.875, "x": 2},
+ "1,2",
+ {"x": 1},
+ "1,4",
+ {"x": 6},
+ "6,4",
+ {"x": 1},
+ "6,2"
+ ],
+ [ {"y": -0.875, "x": 5}, "1,5", {"x": 4}, "6,5" ],
+ [ {"y": -0.875}, "1,0", "1,1", {"x": 12}, "6,1", "6,0" ],
+ [ {"y": -0.385, "x": 3}, "2,3", {"x": 8}, "7,3" ],
+ [
+ {"y": -0.875, "x": 2},
+ "2,2",
+ {"x": 1},
+ "2,4",
+ {"x": 6},
+ "7,4",
+ {"x": 1},
+ "7,2"
+ ],
+ [ {"y": -0.875, "x": 5}, "2,5", {"x": 4}, "7,5" ],
+ [ {"y": -0.875}, "2,0", "2,1", {"x": 12}, "7,1", "7,0" ],
+ [ {"y": -0.385, "x": 3}, "3,3", {"x": 8}, "8,3" ],
+ [
+ {"y": -0.875, "x": 2},
+ "3,2",
+ {"x": 1},
+ "3,4",
+ {"x": 6},
+ "8,4",
+ {"x": 1},
+ "8,2"
+ ],
+ [ {"y": -0.875, "x": 5}, "3,5", {"x": 4}, "8,5" ],
+ [ {"y": -0.875}, "3,0", "3,1", {"x": 12}, "8,1", "8,0" ],
+ [ {"y": -0.125, "x": 3.5}, "4,2", {"x": 7}, "9,2" ],
+ [ {"y": -0.875, "x": 4.5}, "4,3", {"x": 5}, "9,3" ],
+ [ {"r": 30, "rx": 8, "y": 4.13, "x": 0.6}, "4,5" ],
+ [ {"x": 0.6}, "4,4" ],
+ [ {"r": -30, "y": -2, "x": -1.6}, "9,5" ],
+ [ {"x": -1.6}, "9,4" ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/config.h b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/config.h
new file mode 100644
index 0000000000..0d151f52a2
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x74, 0x8F, 0x33, 0x91, 0x5F, 0x20, 0x08, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..00d9c375c2
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/keymap.c
@@ -0,0 +1,164 @@
+/* Based on Keychron Q9 Vial by Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ MAC_FN1,
+ WIN_FN1,
+ FN2,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define MO_MAC MO(MAC_FN1)
+#define MO_WIN MO(WIN_FN1)
+#define MO_FN2 MO(FN2)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
+ // | | | | | | | | | | | | | | | * *
+ // | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
+ // | | | | | | | | | | | | | | | * *
+ // +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
+ // | | | | | | | | | | | | | |
+ // | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
+ // | | | | | | | | | | | | | | | |
+ // +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
+ // | | | | | | | | | | | | | | | |
+ // | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
+ // | | | | | | | | | | | | | |
+ // +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
+ // | | | | | | | | | | | | |
+ // | CNTL | OPT | CMD | MAC_FN | SPC | SPC | CMD | MAC_FN | FN2 | LEFT | DOWN | RGHT |
+ // | | | | | | | | | | | | |
+ // +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
+ [MAC_BASE] = LAYOUT_54_ansi(
+ 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_MUTE,
+ 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 , KC_HOME,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL , KC_LOPT , KC_LCMD, MO_MAC , KC_SPC , KC_SPC , KC_RCMD, MO_MAC , MO_FN2 , KC_LEFT, KC_DOWN ,KC_RGHT
+ ),
+
+ // +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
+ // | | | | | | | | | | | | | | | * *
+ // | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
+ // | | | | | | | | | | | | | | | * *
+ // +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
+ // | | | | | | | | | | | | | |
+ // | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
+ // | | | | | | | | | | | | | | | |
+ // +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
+ // | | | | | | | | | | | | | | | |
+ // | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
+ // | | | | | | | | | | | | | |
+ // +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
+ // | | | | | | | | | | | | |
+ // | CNTL | WIN | ALT | WIN_FN | SPC | SPC | ALT | WIN_FN | FN2 | LEFT | DOWN | RGHT |
+ // | | | | | | | | | | | | |
+ // +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
+ [WIN_BASE] = LAYOUT_54_ansi(
+ 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_MUTE,
+ 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 , KC_HOME,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL , KC_LWIN , KC_LALT, MO_WIN , KC_SPC , KC_SPC , KC_RALT, MO_WIN , MO_FN2 , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ // +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
+ // | | | | | | | | | | | | | | | * *
+ // | ` | SCR- | SCR+ | MCTL | LPAD | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
+ // | | | | | | | | | | | | | | | * *
+ // +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
+ // | | | | | | | | | | | | | |
+ // | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
+ // | | | | | | | | | | | | | | | |
+ // +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
+ // | | | | | | | | | | | | | | | |
+ // | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
+ // | | | | | | | | | | | | | |
+ // +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
+ [MAC_FN1] = LAYOUT_54_ansi(
+ KC_GRV , KC_BRID , KC_BRIU, KC_MCTL, KC_LPAD, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
+ RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU ,RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
+ _______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
+ ),
+
+ // +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
+ // | | | | | | | | | | | | | | | * *
+ // | ` | SCR- | SCR+ | TASK | FILE | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
+ // | | | | | | | | | | | | | | | * *
+ // +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
+ // | | | | | | | | | | | | | |
+ // | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
+ // | | | | | | | | | | | | | | | |
+ // +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
+ // | | | | | | | | | | | | | | | |
+ // | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
+ // | | | | | | | | | | | | | |
+ // +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
+ [WIN_FN1] = LAYOUT_54_ansi(
+ KC_GRV , KC_BRID , KC_BRIU, KC_TASK, KC_FLXP, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
+ RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
+ _______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
+ ),
+
+ // +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
+ // | | | | | | | | | | | | | | | * *
+ // | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | BACK | * *
+ // | | | | | | | | | | | | | | | * *
+ // +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
+ // | | | | | | | | | | | | | |
+ // | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | +--------+
+ // | | | | | | | | | | | | | | | |
+ // +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
+ // | | | | | | | | | | | | | | | |
+ // | | | | | | | | | | | | | | +--------+
+ // | | | | | | | | | | | | | |
+ // +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // | | | | | | | | | | | | |
+ // +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
+ [FN2] = LAYOUT_54_ansi(
+ KC_TILD , 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_BSPC , _______,
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, _______ , _______,
+ _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
+ [FN2] = {ENCODER_CCW_CW(RM_HUED, RM_HUEU)}
+};
+#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/rules.mk
new file mode 100755
index 0000000000..9a67a1220b
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/vial.json b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6ab2c84148
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/vial.json
@@ -0,0 +1,185 @@
+{
+ "name": "Keychron Q9 Plus",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 4,
+ "cols": 15
+ },
+ "customKeycodes": [
+ {
+ "name": "Mission Control",
+ "title": "Mission Control in macOS",
+ "shortName": "Mission Control"
+ },
+ {
+ "name": "Launch Pad",
+ "title": "Launch Pad in macOS",
+ "shortName": "Launch Pad"
+ },
+ {
+ "name": "Left Option",
+ "title": "Left Option in macOS",
+ "shortName": "Left Option"
+ },
+ {
+ "name": "Right Option",
+ "title": "Right Option in macOS",
+ "shortName": "Right Option"
+ },
+ {
+ "name": "Left Cmd",
+ "title": "Left Command in macOS",
+ "shortName": "Left Command"
+ },
+ {
+ "name": "Right Cmd",
+ "title": "Right Command in macOS",
+ "shortName": "Right Command"
+ },
+ {
+ "name": "Task View",
+ "title": "Task View in windows",
+ "shortName": "Task View"
+ },
+ {
+ "name": "File Explorer",
+ "title": "File Explorer in windows",
+ "shortName": "File Explorer"
+ }
+ ],
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 15.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "0, 0",
+ "0, 1",
+ "0, 2",
+ "0, 3",
+ "0, 4",
+ "0, 5",
+ "0, 6",
+ "0, 7",
+ "0, 8",
+ "0, 9",
+ "0, 10",
+ "0, 11",
+ "0, 12",
+ {
+ "w": 1.5
+ },
+ "0, 13",
+ {
+ "x": 0.25,
+ "c": "#000000",
+ "t": "#cccccc"
+ },
+ "0, 14"
+ ],
+ [
+ {
+ "c": "#cccccc",
+ "t": "#000000",
+ "w": 1.75
+ },
+ "1, 0",
+ "1, 1",
+ "1, 2",
+ "1, 3",
+ "1, 4",
+ "1, 5",
+ "1, 6",
+ "1, 7",
+ "1, 8",
+ "1, 9",
+ "1, 10",
+ "1, 11",
+ {
+ "w": 2.25
+ },
+ "1, 13"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 15.25
+ },
+ "1, 14"
+ ],
+ [
+ {
+ "y": -0.25,
+ "w": 2.25
+ },
+ "2, 0",
+ "2, 2",
+ "2, 3",
+ "2, 4",
+ "2, 5",
+ "2, 6",
+ "2, 7",
+ "2, 8",
+ "2, 9",
+ "2, 10",
+ "2, 11",
+ {
+ "w": 1.75
+ },
+ "2, 13",
+ {
+ "c": "#bbbbbb"
+ },
+ "2, 14"
+ ],
+ [
+ {
+ "c": "#cccccc",
+ "w": 1.25
+ },
+ "3, 0",
+ {
+ "w": 1.25
+ },
+ "3, 1",
+ {
+ "w": 1.25
+ },
+ "3, 2",
+ {
+ "w": 1.25
+ },
+ "3, 3",
+ {
+ "w": 2.25
+ },
+ "3, 6",
+ {
+ "w": 2.75
+ },
+ "3, 9",
+ "3, 10",
+ "3, 11",
+ "3, 12",
+ {
+ "c": "#bbbbbb"
+ },
+ "3, 13",
+ "3, 14",
+ "1, 12"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/keyten/aperture/keymaps/vial/config.h b/keyboards/keyten/aperture/keymaps/vial/config.h
new file mode 100644
index 0000000000..a813994831
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x88, 0x8E, 0xA1, 0xC2, 0xC8, 0x7E, 0xAC, 0xEC}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
+#define VIAL_UNLOCK_COMBO_COLS {0, 14}
diff --git a/keyboards/keyten/aperture/keymaps/vial/keymap.c b/keyboards/keyten/aperture/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..174372aa94
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/vial/keymap.c
@@ -0,0 +1,37 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_65_ansi_blocker_tsangan_split_bs(
+ KC_ESC, 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_BSLS, KC_DEL, KC_HOME,
+ 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_BSPC, KC_PGUP,
+ 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, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker_tsangan_split_bs(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/keyten/aperture/keymaps/vial/rules.mk b/keyboards/keyten/aperture/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ab122a158b
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/vial/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+COMBO_ENABLE = no
+MAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/keyten/aperture/keymaps/vial/vial.json b/keyboards/keyten/aperture/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6b89f9fe7d
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/vial/vial.json
@@ -0,0 +1,125 @@
+{
+ "name": "Aperture",
+ "vendorId": "0xEB69",
+ "productId": "0x6501",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 15
+ },
+ "layouts": {
+ "labels": [],
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ "2,13",
+ "0,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "1,13",
+ "1,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "w": 2.25
+ },
+ "2,12",
+ "2,14"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ {
+ "w": 1.75
+ },
+ "3,12",
+ "3,13",
+ "3,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0",
+ "4,1",
+ {
+ "w": 1.5
+ },
+ "4,2",
+ {
+ "w": 7
+ },
+ "4,6",
+ {
+ "w": 1.5
+ },
+ "4,10",
+ {
+ "x": 0.5
+ },
+ "4,12",
+ "4,13",
+ "4,14"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keyten/diablo/keymaps/vial/config.h b/keyboards/keyten/diablo/keymaps/vial/config.h
new file mode 100644
index 0000000000..31aecf9483
--- /dev/null
+++ b/keyboards/keyten/diablo/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x1A, 0xF0, 0x59, 0xB1, 0xD9, 0x5B, 0x75, 0x30}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
+#define VIAL_UNLOCK_COMBO_COLS {0, 13}
diff --git a/keyboards/keyten/diablo/keymaps/vial/keymap.c b/keyboards/keyten/diablo/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..3ea6baf7f7
--- /dev/null
+++ b/keyboards/keyten/diablo/keymaps/vial/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ KC_ESC, 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_GRV, KC_BSPC,
+ 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_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,
+ 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),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/keyten/diablo/keymaps/vial/rules.mk b/keyboards/keyten/diablo/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ab122a158b
--- /dev/null
+++ b/keyboards/keyten/diablo/keymaps/vial/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+COMBO_ENABLE = no
+MAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/keyten/diablo/keymaps/vial/vial.json b/keyboards/keyten/diablo/keymaps/vial/vial.json
new file mode 100644
index 0000000000..16668fbdb2
--- /dev/null
+++ b/keyboards/keyten/diablo/keymaps/vial/vial.json
@@ -0,0 +1,198 @@
+{
+ "name": "Diablo",
+ "vendorId": "0xEB69",
+ "productId": "0x6003",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "Split Right Shift",
+ [
+ "Bottom Row",
+ "Tsangan",
+ "WKL",
+ "HHKB"
+ ]
+ ],
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "w": 2
+ },
+ "0,13\n\n\n0,0",
+ {
+ "x": 1
+ },
+ "0,13\n\n\n0,1",
+ "2,13\n\n\n0,1"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "w": 2.25
+ },
+ "2,12"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ {
+ "w": 2.75
+ },
+ "4,12\n\n\n1,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "4,12\n\n\n1,1",
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0\n\n\n2,0",
+ "4,1\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n2,0",
+ {
+ "w": 7
+ },
+ "4,6\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "4,10\n\n\n2,0",
+ "4,11\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n2,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "w": 1.5
+ },
+ "4,0\n\n\n2,1",
+ {
+ "d": true
+ },
+ "4,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n2,1",
+ {
+ "w": 7
+ },
+ "4,6\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,10\n\n\n2,1",
+ {
+ "d": true
+ },
+ "4,11\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n2,1"
+ ],
+ [
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,0\n\n\n2,2",
+ "4,1\n\n\n2,2",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n2,2",
+ {
+ "w": 7
+ },
+ "4,6\n\n\n2,2",
+ {
+ "w": 1.5
+ },
+ "4,10\n\n\n2,2",
+ "4,11\n\n\n2,2",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,13\n\n\n2,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keyten/kt60hs_t/keymaps/vial/config.h b/keyboards/keyten/kt60hs_t/keymaps/vial/config.h
new file mode 100644
index 0000000000..54474ea002
--- /dev/null
+++ b/keyboards/keyten/kt60hs_t/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE0, 0x4E, 0xB0, 0x23, 0x7D, 0x60, 0x4B, 0x5E}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
+#define VIAL_UNLOCK_COMBO_COLS {0, 13}
diff --git a/keyboards/keyten/kt60hs_t/keymaps/vial/keymap.c b/keyboards/keyten/kt60hs_t/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..38938bf162
--- /dev/null
+++ b/keyboards/keyten/kt60hs_t/keymaps/vial/keymap.c
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ KC_ESC, 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_GRV, KC_BSPC,
+ 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_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,
+ 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),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/keyten/kt60hs_t/keymaps/vial/rules.mk b/keyboards/keyten/kt60hs_t/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/keyten/kt60hs_t/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/keyten/kt60hs_t/keymaps/vial/vial.json b/keyboards/keyten/kt60hs_t/keymaps/vial/vial.json
new file mode 100644
index 0000000000..5c8593ad89
--- /dev/null
+++ b/keyboards/keyten/kt60hs_t/keymaps/vial/vial.json
@@ -0,0 +1,251 @@
+{
+ "name": "kt60HS-T",
+ "vendorId": "0xEB69",
+ "productId": "0x6007",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ [
+ "Bottom Row",
+ "Tsangan",
+ "WKL",
+ "HHKB",
+ "10U"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "2,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,13\n\n\n0,1",
+ "2,13\n\n\n0,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,12"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,12",
+ "3,13"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0\n\n\n1,0",
+ "4,1\n\n\n1,0",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n1,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n1,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n1,0",
+ "4,11\n\n\n1,0",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n1,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "w": 1.5
+ },
+ "4,0\n\n\n1,1",
+ {
+ "d": true
+ },
+ "4,1\n\n\n1,1",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n1,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n1,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n1,1",
+ {
+ "d": true
+ },
+ "4,11\n\n\n1,1",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,0\n\n\n1,2",
+ "4,1\n\n\n1,2",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n1,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n1,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n1,2",
+ "4,11\n\n\n1,2",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,13\n\n\n1,2"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0\n\n\n1,3",
+ "4,1\n\n\n1,3",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,2\n\n\n1,3",
+ {
+ "x": -1.5,
+ "c": "#cccccc",
+ "w": 10
+ },
+ "4,6\n\n\n1,3",
+ {
+ "x": -1.5,
+ "c": "#aaaaaa",
+ "w": 1.5,
+ "d": true
+ },
+ "4,10\n\n\n1,3",
+ "4,11\n\n\n1,3",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n1,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keyten/ortho_slayer/keymaps/vial/config.h b/keyboards/keyten/ortho_slayer/keymaps/vial/config.h
new file mode 100644
index 0000000000..d4ac8b21c4
--- /dev/null
+++ b/keyboards/keyten/ortho_slayer/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF4, 0x18, 0x3E, 0x20, 0xB3, 0xC9, 0xA2, 0xCA}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 9}
+#define VIAL_UNLOCK_COMBO_COLS {0, 10}
diff --git a/keyboards/keyten/ortho_slayer/keymaps/vial/keymap.c b/keyboards/keyten/ortho_slayer/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..ea471d31ef
--- /dev/null
+++ b/keyboards/keyten/ortho_slayer/keymaps/vial/keymap.c
@@ -0,0 +1,24 @@
+// Copyright 2025 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ MO(1), 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_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_ESC, 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_BSPC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_KP_9, KC_PPLS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/keyten/ortho_slayer/keymaps/vial/rules.mk b/keyboards/keyten/ortho_slayer/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/keyten/ortho_slayer/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/keyten/ortho_slayer/keymaps/vial/vial.json b/keyboards/keyten/ortho_slayer/keymaps/vial/vial.json
new file mode 100644
index 0000000000..5363381bda
--- /dev/null
+++ b/keyboards/keyten/ortho_slayer/keymaps/vial/vial.json
@@ -0,0 +1,167 @@
+{
+ "name": "Ortho Slayer",
+ "vendorId": "0xEB69",
+ "productId": "0x9001",
+ "lighting": "none",
+ "matrix": {
+ "rows": 10,
+ "cols": 11
+ },
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ "1,0",
+ "0,1",
+ "1,1",
+ "0,2",
+ "1,2",
+ "0,3",
+ "1,3",
+ "0,4",
+ "1,4",
+ "0,5",
+ "1,5",
+ "0,6",
+ "1,6",
+ {
+ "x": 0.25
+ },
+ "0,7",
+ "1,7",
+ "0,8",
+ {
+ "x": 0.25
+ },
+ "1,8",
+ "0,9",
+ "1,9",
+ "0,10"
+ ],
+ [
+ "2,0",
+ "3,0",
+ "2,1",
+ "3,1",
+ "2,2",
+ "3,2",
+ "2,3",
+ "3,3",
+ "2,4",
+ "3,4",
+ "2,5",
+ "3,5",
+ "2,6",
+ "3,6",
+ {
+ "x": 0.25
+ },
+ "2,7",
+ "3,7",
+ "2,8",
+ {
+ "x": 0.25
+ },
+ "3,8",
+ "2,9",
+ "3,9",
+ {
+ "h": 2
+ },
+ "5,10"
+ ],
+ [
+ "4,0",
+ "5,0",
+ "4,1",
+ "5,1",
+ "4,2",
+ "5,2",
+ "4,3",
+ "5,3",
+ "4,4",
+ "5,4",
+ "4,5",
+ "5,5",
+ "4,6",
+ "5,6",
+ {
+ "x": 3.5
+ },
+ "5,9",
+ "4,9",
+ "4,10"
+ ],
+ [
+ {
+ "w": 2
+ },
+ "6,0",
+ "7,0",
+ "6,2",
+ "7,2",
+ "6,3",
+ "7,3",
+ "6,4",
+ "7,4",
+ "6,5",
+ "7,5",
+ "7,6",
+ {
+ "w": 2
+ },
+ "6,6",
+ {
+ "x": 1.25
+ },
+ "6,8",
+ {
+ "x": 1.25
+ },
+ "7,8",
+ "6,9",
+ "7,9",
+ {
+ "h": 2
+ },
+ "9,10"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "8,0",
+ "9,0",
+ {
+ "w": 1.25
+ },
+ "8,1",
+ {
+ "w": 7
+ },
+ "8,4",
+ {
+ "w": 1.25
+ },
+ "9,4",
+ "8,6",
+ {
+ "w": 1.25
+ },
+ "9,6",
+ {
+ "x": 0.25
+ },
+ "8,7",
+ "9,7",
+ "8,8",
+ {
+ "x": 0.25,
+ "w": 2
+ },
+ "9,8",
+ "8,10"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/lazydesigners/littlewing/info.json b/keyboards/lazydesigners/littlewing/info.json
new file mode 100644
index 0000000000..b5ea995b7a
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/info.json
@@ -0,0 +1,65 @@
+{
+ "keyboard_name": "Little Wing",
+ "manufacturer": "lazydesigners",
+ "url": "http://lazydesigners.cn",
+ "maintainer": "lazydesigners",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0035",
+ "device_version": "0.0.1"
+ },
+ "processor": "STM32F072",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": [ "B11", "B10", "B2", "B1", "B0", "B5", "B4", "B3", "A15", "A14" ],
+ "rows": [ "B13", "A2", "F0", "C15"]
+ },
+ "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": [0, 5], "x": 7, "y": 0},
+ {"matrix": [0, 6], "x": 8, "y": 0},
+ {"matrix": [0, 7], "x": 9, "y": 0},
+ {"matrix": [0, 8], "x": 10, "y": 0},
+ {"matrix": [0, 9], "x": 11, "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": [1, 5], "x": 7, "y": 1},
+ {"matrix": [1, 6], "x": 8, "y": 1},
+ {"matrix": [1, 7], "x": 9, "y": 1},
+ {"matrix": [1, 8], "x": 10, "y": 1},
+ {"matrix": [1, 9], "x": 11, "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},
+ {"matrix": [2, 5], "x": 7, "y": 2},
+ {"matrix": [2, 6], "x": 8, "y": 2},
+ {"matrix": [2, 7], "x": 9, "y": 2},
+ {"matrix": [2, 8], "x": 10, "y": 2},
+ {"matrix": [2, 9], "x": 11, "y": 2},
+
+ {"matrix": [3, 1], "x": 0.25, "y": 3},
+ {"matrix": [3, 2], "x": 1.25, "y": 3},
+ {"matrix": [3, 3], "x": 2.25, "y": 3},
+ {"matrix": [3, 4], "x": 3.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 5], "x": 7 , "y": 3, "w": 1.75},
+ {"matrix": [3, 6], "x": 8.75, "y": 3},
+ {"matrix": [3, 7], "x": 9.25, "y": 3},
+ {"matrix": [3, 8], "x": 10.75, "y": 3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lazydesigners/littlewing/keymaps/default/keymap.c b/keyboards/lazydesigners/littlewing/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8fdce79d02
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2025 LAZDESIGNERS
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define LT1_SPC LT(1, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_UP, KC_COMM,
+ KC_LCTL, KC_LALT, KC_LGUI, LT1_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+
diff --git a/keyboards/lazydesigners/littlewing/keymaps/vial/config.h b/keyboards/lazydesigners/littlewing/keymaps/vial/config.h
new file mode 100644
index 0000000000..ed03a162f8
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x8B, 0x2A, 0xBE, 0x80, 0x8B, 0xDF, 0x00, 0x50}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 9 }
+
+#define VIAL_COMBO_ENTRIES 32
+#define VIAL_TAP_DANCE_ENTRIES 32
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
diff --git a/keyboards/lazydesigners/littlewing/keymaps/vial/keymap.c b/keyboards/lazydesigners/littlewing/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..8fdce79d02
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/keymaps/vial/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2025 LAZDESIGNERS
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define LT1_SPC LT(1, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_UP, KC_COMM,
+ KC_LCTL, KC_LALT, KC_LGUI, LT1_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+
diff --git a/keyboards/lazydesigners/littlewing/keymaps/vial/rules.mk b/keyboards/lazydesigners/littlewing/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/lazydesigners/littlewing/keymaps/vial/vial.json b/keyboards/lazydesigners/littlewing/keymaps/vial/vial.json
new file mode 100644
index 0000000000..94633ea894
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/keymaps/vial/vial.json
@@ -0,0 +1,23 @@
+{
+ "matrix": {"rows": 4, "cols": 10},
+ "layouts": {
+ "labels": [
+ ["Bottom Row", "Regular", "HHKB"]
+ ],
+ "keymap": [
+ [
+ "0,0","0,1","0,2","0,3","0,4",{"x":2},"0,5","0,6","0,7","0,8","0,9"
+ ],
+ [
+ "1,0","1,1","1,2","1,3","1,4",{"x":2},"1,5","1,6","1,7","1,8","1,9"
+ ],
+ [
+ "2,0","2,1","2,2","2,3","2,4",{"x":2},"2,5","2,6","2,7","2,8","2,9"
+ ],
+ [
+ {"w":0.25,"d": true},"\n\n\n0,0","3,1\n\n\n0,0","3,2\n\n\n0,0","3,3\n\n\n0,0",{"w":1.75},"3,4\n\n\n0,0",{"x":2,"w":1.75},"3,5\n\n\n0,0","3,6\n\n\n0,0","3,7\n\n\n0,0","3,8\n\n\n0,0",
+ {"w":1.25,"d": true},"\n\n\n0,1","3,2\n\n\n0,1","3,3\n\n\n0,1",{"w":1.75},"3,4\n\n\n0,1",{"x":2,"w":1.75},"3,5\n\n\n0,1","3,6\n\n\n0,1","3,7\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/lazydesigners/littlewing/readme.md b/keyboards/lazydesigners/littlewing/readme.md
new file mode 100644
index 0000000000..f7994e95cf
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/readme.md
@@ -0,0 +1,18 @@
+# Little Wing
+
+A qaz alice keyboard designed by LAZYDESIGNERS in 2025 by [LAZYDESIGNERS](http://lazydesigners.cn).
+
+* Keyboard Maintainer: [LAZYDESIGNERS](https://github.com/jackytrabbit)
+* Hardware Supported: Little Wing
+* Hardware Availability: Check [LAZYDESIGNERS's homepage.](http://lazydesigners.cn)
+
+Make example for this keyboard (after setting up your vial build environment):
+
+ make lazydesigners/littlewing:vial
+
+Flashing example for this keyboard:
+
+ make lazydesigners/littlewing:vial:flash
+
+**Reset Key:** To enter the bootloader, press the boot button and short the reset pads together on the PCB.
+
diff --git a/keyboards/lazydesigners/littlewing/rules.mk b/keyboards/lazydesigners/littlewing/rules.mk
new file mode 100644
index 0000000000..2c43a6d05d
--- /dev/null
+++ b/keyboards/lazydesigners/littlewing/rules.mk
@@ -0,0 +1,12 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
\ No newline at end of file
diff --git a/keyboards/ll3macorn/bongopad/bongopad.c b/keyboards/ll3ma/bongopad/bongopad.c
similarity index 99%
rename from keyboards/ll3macorn/bongopad/bongopad.c
rename to keyboards/ll3ma/bongopad/bongopad.c
index f6d03ded6c..910e5a4d70 100644
--- a/keyboards/ll3macorn/bongopad/bongopad.c
+++ b/keyboards/ll3ma/bongopad/bongopad.c
@@ -1,4 +1,4 @@
-// Copyright 2021 Ll3macorn (@ll3macorn)
+// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
diff --git a/keyboards/ll3macorn/bongopad/config.h b/keyboards/ll3ma/bongopad/config.h
similarity index 74%
rename from keyboards/ll3macorn/bongopad/config.h
rename to keyboards/ll3ma/bongopad/config.h
index 4ee4b5a997..c9f7f102de 100644
--- a/keyboards/ll3macorn/bongopad/config.h
+++ b/keyboards/ll3ma/bongopad/config.h
@@ -1,4 +1,4 @@
-// Copyright 2021 Ll3macorn (@ll3macorn)
+// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
diff --git a/keyboards/ll3macorn/bongopad/keyboard.json b/keyboards/ll3ma/bongopad/keyboard.json
similarity index 94%
rename from keyboards/ll3macorn/bongopad/keyboard.json
rename to keyboards/ll3ma/bongopad/keyboard.json
index a47529ed28..c3abc03fc9 100644
--- a/keyboards/ll3macorn/bongopad/keyboard.json
+++ b/keyboards/ll3ma/bongopad/keyboard.json
@@ -1,8 +1,8 @@
{
"keyboard_name": "BongoPad",
- "manufacturer": "Ll3macorn",
- "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3macorn/bongopad",
- "maintainer": "Ll3macorn",
+ "manufacturer": "Ll3ma",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3ma/bongopad",
+ "maintainer": "Ll3ma",
"usb": {
"vid": "0x3728",
"pid": "0x2949",
diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c b/keyboards/ll3ma/bongopad/keymaps/default/keymap.c
similarity index 94%
rename from keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
rename to keyboards/ll3ma/bongopad/keymaps/default/keymap.c
index d91a949dee..1afcc87cfe 100644
--- a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
+++ b/keyboards/ll3ma/bongopad/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-// Copyright 2021 Ll3macorn (@ll3macorn)
+// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk b/keyboards/ll3ma/bongopad/keymaps/default/rules.mk
similarity index 100%
rename from keyboards/ll3macorn/bongopad/keymaps/default/rules.mk
rename to keyboards/ll3ma/bongopad/keymaps/default/rules.mk
diff --git a/keyboards/ll3macorn/bongopad/keymaps/vial/config.h b/keyboards/ll3ma/bongopad/keymaps/vial/config.h
similarity index 87%
rename from keyboards/ll3macorn/bongopad/keymaps/vial/config.h
rename to keyboards/ll3ma/bongopad/keymaps/vial/config.h
index eb1da9fdd2..81b42cd14d 100644
--- a/keyboards/ll3macorn/bongopad/keymaps/vial/config.h
+++ b/keyboards/ll3ma/bongopad/keymaps/vial/config.h
@@ -1,4 +1,4 @@
-// Copyright 2021 Ll3macorn (@ll3macorn)
+// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#define VIAL_KEYBOARD_UID {0x08, 0xDB, 0x6F, 0x28, 0x40, 0xFD, 0x6F, 0x58}
diff --git a/keyboards/ll3macorn/bongopad/keymaps/vial/keymap.c b/keyboards/ll3ma/bongopad/keymaps/vial/keymap.c
similarity index 95%
rename from keyboards/ll3macorn/bongopad/keymaps/vial/keymap.c
rename to keyboards/ll3ma/bongopad/keymaps/vial/keymap.c
index 1d2d8c4b4b..96c01effef 100644
--- a/keyboards/ll3macorn/bongopad/keymaps/vial/keymap.c
+++ b/keyboards/ll3ma/bongopad/keymaps/vial/keymap.c
@@ -1,4 +1,4 @@
-// Copyright 2021 Ll3macorn (@ll3macorn)
+// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include
diff --git a/keyboards/ll3macorn/bongopad/keymaps/vial/rules.mk b/keyboards/ll3ma/bongopad/keymaps/vial/rules.mk
similarity index 100%
rename from keyboards/ll3macorn/bongopad/keymaps/vial/rules.mk
rename to keyboards/ll3ma/bongopad/keymaps/vial/rules.mk
diff --git a/keyboards/ll3macorn/bongopad/keymaps/vial/vial.json b/keyboards/ll3ma/bongopad/keymaps/vial/vial.json
similarity index 100%
rename from keyboards/ll3macorn/bongopad/keymaps/vial/vial.json
rename to keyboards/ll3ma/bongopad/keymaps/vial/vial.json
diff --git a/keyboards/ll3macorn/bongopad/readme.md b/keyboards/ll3ma/bongopad/readme.md
similarity index 79%
rename from keyboards/ll3macorn/bongopad/readme.md
rename to keyboards/ll3ma/bongopad/readme.md
index d2902aae6a..0751ac4fc8 100644
--- a/keyboards/ll3macorn/bongopad/readme.md
+++ b/keyboards/ll3ma/bongopad/readme.md
@@ -1,10 +1,10 @@
# BongoPad
-* Keyboard Maintainer: [Ll3macorn](https://github.com/Ll3macorn)
+* Keyboard Maintainer: [Ll3ma](https://github.com/Ll3ma)
* Hardware Supported: Pro micro
Make example for this keyboard (after setting up your build environment):
- make ll3macorn/bongopad:default
+ make ll3ma/bongopad:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/melonbred/mb44v2/keyboard.json b/keyboards/melonbred/mb44v2/keyboard.json
new file mode 100644
index 0000000000..25810d3767
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keyboard.json
@@ -0,0 +1,184 @@
+{
+ "manufacturer": "melonbred",
+ "keyboard_name": "mb44v2",
+ "maintainer": "melonbred",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B14", "A2"],
+ "rows": ["B9", "C15", "C14", "C13"]
+ },
+ "processor": "STM32F072",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_default": {
+ "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": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.75},
+
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1},
+ {"matrix": [1, 5], "x": 5.25, "y": 1},
+ {"matrix": [1, 6], "x": 6.25, "y": 1},
+ {"matrix": [1, 7], "x": 7.25, "y": 1},
+ {"matrix": [1, 8], "x": 8.25, "y": 1},
+ {"matrix": [1, 9], "x": 9.25, "y": 1},
+ {"matrix": [1, 10], "x": 10.25, "y": 1},
+ {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 5], "x": 3, "y": 3, "w": 6.25},
+
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3}
+ ]
+ },
+ "LAYOUT_2u1u_space": {
+ "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": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.75},
+
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1},
+ {"matrix": [1, 5], "x": 5.25, "y": 1},
+ {"matrix": [1, 6], "x": 6.25, "y": 1},
+ {"matrix": [1, 7], "x": 7.25, "y": 1},
+ {"matrix": [1, 8], "x": 8.25, "y": 1},
+ {"matrix": [1, 9], "x": 9.25, "y": 1},
+ {"matrix": [1, 10], "x": 10.25, "y": 1},
+ {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3, "w": 1.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3, "w": 2.75},
+ {"matrix": [3, 5], "x": 6, "y": 3, "w": 2.25},
+ {"matrix": [3, 6], "x": 8.25, "y": 3},
+
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3}
+ ]
+ },
+ "LAYOUT_3u_space": {
+ "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": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.75},
+
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1},
+ {"matrix": [1, 5], "x": 5.25, "y": 1},
+ {"matrix": [1, 6], "x": 6.25, "y": 1},
+ {"matrix": [1, 7], "x": 7.25, "y": 1},
+ {"matrix": [1, 8], "x": 8.25, "y": 1},
+ {"matrix": [1, 9], "x": 9.25, "y": 1},
+ {"matrix": [1, 10], "x": 10.25, "y": 1},
+ {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3, "w": 1.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3, "w": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3, "w": 3},
+
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/melonbred/mb44v2/keymaps/default/keymap.c b/keyboards/melonbred/mb44v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5407baf67a
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2020 melonbred
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LAYER1,
+ _LAYER2
+
+};
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
+ MO(_LAYER2), KC_LGUI, KC_LALT, LT(_LAYER1, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_default(
+ KC_GRV, KC_QUOT, _______, KC_UP, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_DEL,
+ KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_PSLS, KC_PMNS, KC_4, KC_5, KC_6, KC_ENT,
+ KC_LSFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_PAST, KC_PPLS, KC_1, KC_2, KC_3, KC_RSFT,
+ _______, KC_LGUI, KC_LALT, _______, KC_0, KC_PDOT, XXXXXXX
+ ),
+
+ [_LAYER2] = LAYOUT_default(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_RALT, KC_RCTL
+ ),
+};
\ No newline at end of file
diff --git a/keyboards/melonbred/mb44v2/keymaps/vial/config.h b/keyboards/melonbred/mb44v2/keymaps/vial/config.h
new file mode 100644
index 0000000000..e26f7ab175
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x0A, 0x90, 0x86, 0x4B, 0x13, 0x9F, 0x88, 0xCC}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
diff --git a/keyboards/melonbred/mb44v2/keymaps/vial/keymap.c b/keyboards/melonbred/mb44v2/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..cee991ad44
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2024 melonbred
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LAYER1,
+ _LAYER2
+};
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
+ MO(_LAYER2), KC_LGUI, KC_LALT, LT(_LAYER1, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_default(
+ KC_GRV, KC_QUOT, _______, KC_UP, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_DEL,
+ KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_PSLS, KC_PMNS, KC_4, KC_5, KC_6, KC_ENT,
+ KC_LSFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_PAST, KC_PPLS, KC_1, KC_2, KC_3, KC_RSFT,
+ _______, KC_LGUI, KC_LALT, _______, KC_0, KC_PDOT, XXXXXXX
+ ),
+
+ [_LAYER2] = LAYOUT_default(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_RALT, KC_RCTL
+ ),
+};
+
diff --git a/keyboards/melonbred/mb44v2/keymaps/vial/rules.mk b/keyboards/melonbred/mb44v2/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/melonbred/mb44v2/keymaps/vial/vial.json b/keyboards/melonbred/mb44v2/keymaps/vial/vial.json
new file mode 100644
index 0000000000..8400f2f563
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/keymaps/vial/vial.json
@@ -0,0 +1,129 @@
+{
+ "name": "mb44v2",
+ "vendorId": "0x6d62",
+ "productId": "0x001",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+},
+"layouts": {
+ "labels": [
+ [
+ "Spacebar",
+ "625 Spacebar",
+ "2u Split",
+ "3u Split"
+ ]
+ ],
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ {
+ "w": 1.75
+ },
+ "0,11"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ {
+ "w": 1.5
+ },
+ "1,11"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11"
+ ],
+ [
+ "3,0",
+ "3,1\n\n\n0,0",
+ "3,2\n\n\n0,0",
+ {
+ "w": 6.25
+ },
+ "3,5\n\n\n0,0",
+ {
+ "a": 7,
+ "w": 0.5,
+ "d": true
+ },
+ "",
+ {
+ "a": 4
+ },
+ "3,9",
+ "3,10",
+ "3,11"
+ ],
+ [
+ {
+ "x": 1,
+ "w": 1.25
+ },
+ "3,1\n\n\n0,1",
+ "3,2\n\n\n0,1",
+ {
+ "w": 2.75
+ },
+ "3,3\n\n\n0,1",
+ {
+ "w": 2.25
+ },
+ "3,6\n\n\n0,1",
+ "3,7\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 1,
+ "w": 1.25
+ },
+ "3,1\n\n\n0,2",
+ "3,2\n\n\n0,2",
+ {
+ "w": 3
+ },
+ "3,3\n\n\n0,2",
+ {
+ "w": 3
+ },
+ "3,6\n\n\n0,2"
+ ]
+]
+}
+}
\ No newline at end of file
diff --git a/keyboards/melonbred/mb44v2/readme.md b/keyboards/melonbred/mb44v2/readme.md
new file mode 100644
index 0000000000..d686352eac
--- /dev/null
+++ b/keyboards/melonbred/mb44v2/readme.md
@@ -0,0 +1,27 @@
+# mb44v2
+
+
+
+_A short description of the keyboard/project_
+
+- Keyboard Maintainer: [melonbred](https://github.com/melonbred)
+- Hardware Supported: _The PCBs, controllers supported_
+- Hardware Availability: _Links to where you can find this hardware_
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mb44v2:default
+
+Flashing example for this keyboard:
+
+ make mb44v2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+- **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mzmkb/slimdash/rev1/keymaps/vial/config.h b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/config.h
new file mode 100644
index 0000000000..76cf704637
--- /dev/null
+++ b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2025 mizma (@mizma)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF8, 0x33, 0xE5, 0xA6, 0x5B, 0x24, 0x72, 0x00}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 9}
+#define VIAL_UNLOCK_COMBO_COLS {0, 5}
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/mzmkb/slimdash/rev1/keymaps/vial/keymap.c b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..a496950ad8
--- /dev/null
+++ b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/keymap.c
@@ -0,0 +1,126 @@
+/* Copyright 2025 mizma (@mizma)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QWERTY,
+ _GAMEMODE,
+ _LOWER,
+ _RAISE
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define GAMEM TG(_GAMEMODE)
+
+#define EISU LALT(KC_GRV)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ,------------------------------------------------. .------------------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | LCTL | A | S | D | F | G | Del | | Ins | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
+ * | LSFT | Z | X | C | V | B | | N | M | , | . | / | RSFT |
+ * |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
+ * | RM_DN| RM_UP| GAMEM| GUI | | | LALT | | RALT | | | HOME | END |PageUp|PageDn|
+ * .---------------------------. .------| Space|------| |------| Enter|------. .---------------------------.
+ * | Lower| | LSFT | | RCTL | | Raise|
+ * .--------------------. .--------------------.
+ */
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_INS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ RGB_VAD, RGB_VAI, GAMEM, KC_LGUI, LOWER, KC_SPC, KC_LSFT, KC_RCTL, KC_ENT, RAISE, KC_HOME, KC_END, KC_PGUP, KC_PGDN
+ ),
+
+ /* Game Mode Toggle: sample toggle layer. turn off GUI key and add arrows
+ * ,------------------------------------------------. .------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
+ * | | | | NOOP | | | | | | | | ← | ↓ | ↑ | → |
+ * .---------------------------. .------| |------| |------| |------. .---------------------------.
+ * | | | | | | | |
+ * .--------------------. .--------------------.
+ */
+ [_GAMEMODE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_NO, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Lower: NUMPAD, App/Media keys and RGM Matrix
+ * ,------------------------------------------------. .------------------------------------------------.
+ * | ` | | | | | Mute | Vol- | | Vol+ | | NumL | / | * | - | |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | | | | |RGBTGL| | BrDn | | BrUp | | 7 | 8 | 9 | + | |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | CAPS | | |RM_HUD|RM_HUU| |RM_PRV| |RM_NXT| | 4 | 5 | 6 | , | |
+ * |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
+ * | | | |RM_SPD|RM_SPU| | | | 1 | 2 | 3 | = | |
+ * |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
+ * | | | | | | | | | | | | 0 | . | | |
+ * .---------------------------. .------| |------| |------| PENT |------. .---------------------------.
+ * | | | | | | | |
+ * .--------------------. .--------------------.
+ */
+ [_LOWER] = LAYOUT(
+ KC_GRV, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, _______,
+ _______, _______, _______, _______, RGB_TOG, _______, KC_BRID, KC_BRIU, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
+ KC_CAPS, _______, _______, RGB_HUD, RGB_HUI, _______, RGB_RMOD, RGB_MOD, _______, KC_P4, KC_P5, KC_P6, KC_PCMM, _______,
+ _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PEQL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PENT, _______, KC_P0, KC_PDOT, _______, _______
+ ),
+
+ /* Raise: Functions and Mouse
+ * ,------------------------------------------------. .------------------------------------------------.
+ * | ` | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | | | |WheelL|WheelR| | | | | | | Pause|ScrolL| PrnSc| F12 |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | CAPS | |Mouse3|Mouse2|Mouse1|WheelU| | | | ← | ↓ | ↑ | → | | |
+ * |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
+ * | |Accel0|Accel1|Accel2| |WheelD| |MouseL|MouseD|MouseU|MouseR| | |
+ * |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * .---------------------------. .------| |------| |------| |------. .---------------------------.
+ * | | | | | | | |
+ * .--------------------. .--------------------.
+ */
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, _______, _______, MS_WHLL, MS_WHLR, _______, _______, _______, _______, _______, KC_PAUS, KC_SCRL, KC_PSCR, KC_F12,
+ KC_CAPS, _______, MS_BTN3, MS_BTN2, MS_BTN1, MS_WHLU, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, MS_ACL0, MS_ACL1, MS_ACL2, _______, MS_WHLD, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/mzmkb/slimdash/rev1/keymaps/vial/rules.mk b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..e2e5ae028c
--- /dev/null
+++ b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+OLED_ENABLE = no
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+VIALRGB_ENABLE = yes
diff --git a/keyboards/mzmkb/slimdash/rev1/keymaps/vial/vial.json b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/vial.json
new file mode 100644
index 0000000000..aaa855da67
--- /dev/null
+++ b/keyboards/mzmkb/slimdash/rev1/keymaps/vial/vial.json
@@ -0,0 +1,41 @@
+{
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 10,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "slimDash"
+ },
+ [ { "x": 3 }, "0,3", { "x": 10.5 }, "5,3" ],
+ [ { "y": -0.875, "x": 2 }, "0,2", { "x": 1 }, "0,4", { "x": 8.5 }, "5,4", { "x": 1 }, "5,2" ],
+ [ { "y": -0.875, "x": 5 }, "0,5", { "x": 6.5 }, "5,5" ],
+ [ { "y": -0.875 }, "0,0", "0,1", { "x": 14.5 }, "5,1", "5,0" ],
+ [ { "y": -0.625, "x": 6 }, "0,6", { "x": 4.5 }, "5,6" ],
+ [ { "y": -0.75, "x": 3 }, "1,3", { "x": 10.5 }, "6,3" ],
+ [ { "y": -0.875, "x": 2 }, "1,2", { "x": 1 }, "1,4", { "x": 8.5 }, "6,4", { "x": 1 }, "6,2" ],
+ [ { "y": -0.875, "x": 5 }, "1,5", { "x": 6.5 }, "6,5" ],
+ [ { "y": -0.875 }, "1,0", "1,1", { "x": 14.5 }, "6,1", "6,0" ],
+ [ { "y": -0.625, "x": 6 }, "1,6", { "x": 4.5 }, "6,6" ],
+ [ { "y": -0.75, "x": 3 }, "2,3", { "x": 10.5 }, "7,3" ],
+ [ { "y": -0.875, "x": 2 }, "2,2", { "x": 1, "n": true }, "2,4", { "x": 8.5, "n": true }, "7,4", { "x": 1 }, "7,2" ],
+ [ { "y": -0.875, "x": 5 }, "2,5", { "x": 6.5 }, "7,5" ],
+ [ { "y": -0.875 }, "2,0", "2,1", { "x": 14.5 }, "7,1", "7,0" ],
+ [ { "y": -0.625, "x": 6 }, "2,6", { "x": 4.5 }, "7,6" ],
+ [ { "y": -0.75, "x": 3 }, "3,3", { "x": 10.5 }, "8,3" ],
+ [ { "y": -0.875, "x": 2 }, "3,2", { "x": 1 }, "3,4", { "x": 8.5 }, "8,4", { "x": 1 }, "8,2" ],
+ [ { "y": -0.875, "x": 5 }, "3,5", { "x": 6.5 }, "8,5" ],
+ [ { "y": -0.875 }, "3,0", "3,1", { "x": 14.5 }, "8,1", "8,0" ],
+ [ { "y": -0.375, "x": 3 }, "4,3", { "x": 10.5 }, "9,3" ],
+ [ { "y": -0.875, "x": 2 }, "4,2", { "x": 12.5 }, "9,2" ],
+ [ { "y": -0.75 }, "4,0", "4,1", { "x": 14.5 }, "9,1", "9,0" ],
+ [ { "ry": 4.25, "y": -0.25, "x": 11.25, "h": 2 }, "9,5" ],
+ [ { "rx": 6.5, "y": -0.25, "x": -0.25, "h": 2 }, "4,5", "3,6" ],
+ [ { "x": -1.25 }, "4,4", { "x": 1 }, "4,6" ],
+ [ { "rx": 13, "y": -0.25, "x": -2.75 }, "8,6" ],
+ [ { "x": -2.75 }, "9,6", { "x": 1 }, "9,4" ]
+ ]
+ }
+}
diff --git a/keyboards/ploopyco/trackball/keymaps/vial/config.h b/keyboards/ploopyco/trackball/keymaps/vial/config.h
new file mode 100644
index 0000000000..7bb0d74638
--- /dev/null
+++ b/keyboards/ploopyco/trackball/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xEE, 0x5B, 0x21, 0xB3, 0x55, 0xDF, 0x2B, 0xA6}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 3, 5 }
diff --git a/keyboards/ploopyco/trackball/keymaps/vial/keymap.c b/keyboards/ploopyco/trackball/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..83a4a16847
--- /dev/null
+++ b/keyboards/ploopyco/trackball/keymaps/vial/keymap.c
@@ -0,0 +1,25 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ * Copyright 2019 Sunjun Kim
+ * Copyright 2020 Ploopy Corporation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( /* Base */
+ KC_BTN1, KC_BTN3, KC_BTN2,
+ KC_BTN4, KC_BTN5
+ ),
+};
diff --git a/keyboards/ploopyco/trackball/keymaps/vial/rules.mk b/keyboards/ploopyco/trackball/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..0494672ff9
--- /dev/null
+++ b/keyboards/ploopyco/trackball/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+
+CAPS_WORD_ENABLE = no
+LAYER_LOCK_ENABLE = no
+REPEAT_KEY_ENABLE = no
diff --git a/keyboards/ploopyco/trackball/keymaps/vial/vial.json b/keyboards/ploopyco/trackball/keymaps/vial/vial.json
new file mode 100644
index 0000000000..847e7e6c7b
--- /dev/null
+++ b/keyboards/ploopyco/trackball/keymaps/vial/vial.json
@@ -0,0 +1,54 @@
+{
+ "name": "PloopyCo Trackball",
+ "vendorId": "0x5043",
+ "productId": "0x5442",
+ "matrix": {
+ "rows": 1,
+ "cols": 6
+ },
+ "customKeycodes": [
+ {
+ "name": "DPI Config",
+ "title": "DPI Config",
+ "shortName": "DPI"
+ },
+ {
+ "name": "Drag Scroll",
+ "title": "Drag Scroll",
+ "shortName": "DragScl"
+ }
+ ],
+ "lighting": "none",
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "h": 2
+ },
+ "0,0",
+ {
+ "x": 1,
+ "h": 2
+ },
+ "0,2",
+ {
+ "x": 0.5,
+ "h": 2
+ },
+ "0,3",
+ {
+ "h": 2
+ },
+ "0,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1,
+ "h": 1.5
+ },
+ "0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/vial/config.h b/keyboards/smithrune/magnus/m75h/keymaps/vial/config.h
new file mode 100644
index 0000000000..380cbef9a9
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x76, 0x50, 0x4D, 0xA1, 0xB0, 0xAF, 0xDE, 0x6C}
+
+// Esc + Enter
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 8 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
\ No newline at end of file
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/vial/keymap.c b/keyboards/smithrune/magnus/m75h/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..3dc786a62c
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/vial/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2023 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* Base */
+ 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_F13 ,
+ 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_BSPC, KC_INS,
+ 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_PGUP,
+ 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 , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+),
+[1] = LAYOUT( /* Base */
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/vial/rules.mk b/keyboards/smithrune/magnus/m75h/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b739220324
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/vial/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/vial/vial.json b/keyboards/smithrune/magnus/m75h/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4c7e9b0c57
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/vial/vial.json
@@ -0,0 +1,227 @@
+{
+ "name": "SnR Magnus M75H",
+ "vendorId": "0x8384",
+ "productId": "0x1676",
+ "matrix": {
+ "rows": 11,
+ "cols": 15
+ },
+ "keycodes": [
+ "qmk_lighting"
+ ],
+ "menus": [
+ "qmk_rgblight"
+ ],
+ "layouts": {
+ "labels": [
+ "Split backspace"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.5,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.25
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.25
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25
+ },
+ "0,13"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 2.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "6,7",
+ "6,8",
+ "6,9",
+ "6,10",
+ "6,11",
+ "6,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "6,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "7,14",
+ {
+ "x": 3.25
+ },
+ "6,13\n\n\n0,1",
+ "6,14\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "7,6",
+ "7,7",
+ "7,8",
+ "7,9",
+ "7,10",
+ "7,11",
+ "7,12",
+ {
+ "w": 1.5
+ },
+ "7,13",
+ {
+ "x": 0.25
+ },
+ "8,14"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "8,5",
+ "8,6",
+ "8,7",
+ "8,8",
+ "8,9",
+ "8,10",
+ "8,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "8,13",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "9,13"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "9,5",
+ "9,6",
+ "9,7",
+ "9,8",
+ "9,9",
+ "9,10",
+ "9,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "9,12"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 16.75,
+ "c": "#cccccc"
+ },
+ "9,14"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "10,0",
+ {
+ "w": 1.25
+ },
+ "10,1",
+ {
+ "w": 1.25
+ },
+ "10,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 15.75,
+ "c": "#cccccc"
+ },
+ "5,12",
+ "5,13",
+ "5,14"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/vial/config.h b/keyboards/smithrune/magnus/m75s/keymaps/vial/config.h
new file mode 100644
index 0000000000..51b69991fd
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x4E, 0xB9, 0x99, 0xB9, 0x3D, 0x73, 0x42, 0x0C}
+
+// Esc + Enter
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 8 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
\ No newline at end of file
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/vial/keymap.c b/keyboards/smithrune/magnus/m75s/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..b53b524916
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/vial/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2023 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* Base */
+ 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_F13 ,
+ 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_BSPC, KC_INS,
+ 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_PGUP,
+ 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_NUHS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+),
+[1] = LAYOUT( /* Base */
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/vial/rules.mk b/keyboards/smithrune/magnus/m75s/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b739220324
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/vial/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/vial/vial.json b/keyboards/smithrune/magnus/m75s/keymaps/vial/vial.json
new file mode 100644
index 0000000000..c7ea044b0f
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/vial/vial.json
@@ -0,0 +1,267 @@
+{
+ "name": "Smith and Rune Magnus",
+ "vendorId": "0x8384",
+ "productId": "0x1675",
+ "matrix": {
+ "rows": 11,
+ "cols": 15
+ },
+ "keycodes": [
+ "qmk_lighting"
+ ],
+ "menus": [
+ "qmk_backlight_rgblight"
+ ],
+ "layouts": {
+ "labels": [
+ "Split backspace",
+ "ISO Enter",
+ "Split left shift",
+ "7U bottom row"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.5,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.25
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.25
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25
+ },
+ "0,13"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 2.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "6,7",
+ "6,8",
+ "6,9",
+ "6,10",
+ "6,11",
+ "6,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "6,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "7,14",
+ {
+ "x": 3.25
+ },
+ "6,13\n\n\n0,1",
+ "6,14\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "7,6",
+ "7,7",
+ "7,8",
+ "7,9",
+ "7,10",
+ "7,11",
+ "7,12",
+ {
+ "w": 1.5
+ },
+ "7,13\n\n\n1,0",
+ {
+ "x": 0.25
+ },
+ "8,14",
+ {
+ "x": 4,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "8,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "8,5",
+ "8,6",
+ "8,7",
+ "8,8",
+ "8,9",
+ "8,10",
+ "8,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "8,13\n\n\n1,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "9,13",
+ {
+ "x": 3
+ },
+ "8,12\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,0\n\n\n2,1",
+ "4,1\n\n\n2,1",
+ {
+ "x": 0.25,
+ "w": 2.25
+ },
+ "4,0\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "9,5",
+ "9,6",
+ "9,7",
+ "9,8",
+ "9,9",
+ "9,10",
+ "9,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "9,12"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 16.75,
+ "c": "#cccccc"
+ },
+ "9,14"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "10,0\n\n\n3,0",
+ {
+ "w": 1.25
+ },
+ "10,1\n\n\n3,0",
+ {
+ "w": 1.25
+ },
+ "10,2\n\n\n3,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6\n\n\n3,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 15.75,
+ "c": "#cccccc"
+ },
+ "5,12",
+ "5,13",
+ "5,14"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "10,0\n\n\n3,1",
+ {
+ "w": 1.5
+ },
+ "10,1\n\n\n3,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "5,6\n\n\n3,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/splitkb/elora/keymaps/vial/rules.mk b/keyboards/splitkb/elora/keymaps/vial/rules.mk
index 236f77f192..62cdf018e7 100644
--- a/keyboards/splitkb/elora/keymaps/vial/rules.mk
+++ b/keyboards/splitkb/elora/keymaps/vial/rules.mk
@@ -1,8 +1,6 @@
# Copyright 2024 splitkb.com (support@splitkb.com)
# SPDX-License-Identifier: GPL-2.0-or-later
-LTO_ENABLE = no
-
## Vial-specific settings
VIA_ENABLE = yes
diff --git a/keyboards/viktus/sp_mini/keymaps/vial/config.h b/keyboards/viktus/sp_mini/keymaps/vial/config.h
new file mode 100644
index 0000000000..91b53c61d0
--- /dev/null
+++ b/keyboards/viktus/sp_mini/keymaps/vial/config.h
@@ -0,0 +1,31 @@
+#define VIAL_KEYBOARD_UID {0xE5, 0x2B, 0x48, 0x0A, 0x60, 0xE2, 0x5D, 0x31}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 1, 7 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+#define LAYER_STATE_8BIT
+// #define VIAL_COMBO_ENTRIES 8
+// #define VIAL_TAP_DANCE_ENTRIES 8
+
+/*
+#undef RGBLIGHT_ANIMATIONS
+// #define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_TWINKLE
+*/
+
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+#define RGBLIGHT_BREATHE_TABLE_SIZE 128 // 256(default) or 128 or 64
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+#define NO_ACTION_ONESHOT
+#define NO_MUSIC_MODE
\ No newline at end of file
diff --git a/keyboards/viktus/sp_mini/keymaps/vial/keymap.c b/keyboards/viktus/sp_mini/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..774cac7cda
--- /dev/null
+++ b/keyboards/viktus/sp_mini/keymaps/vial/keymap.c
@@ -0,0 +1,135 @@
+ /* Copyright 2021 jrfhoutx
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+
+enum custom_layers {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+#define KC_FN1 MO(_FN1)
+#define KC_FN2 MO(_FN2)
+#define SPFN1 LT(_FN1, KC_SPACE)
+#define BSFN2 LT(_FN2, KC_BSPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ MO(1), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, _______,
+ MO(2), KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, _______,
+ _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, KC_FN1, SPFN1, BSFN2, KC_RALT, KC_FN2, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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, _______,
+ _______, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, KC_VOLU, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_SCLN, _______, _______,
+ _______, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, KC_VOLD, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, _______, KC_UP,
+ _______, _______, _______, _______, _______, _______, KC_DEL, KC_0, _______, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, _______,
+ _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______, _______, _______, _______, KC_COLN, _______, _______,
+ _______, _______, _______, _______, KC_DEL, KC_PGDN, KC_END, _______, _______, _______, _______, _______, KC_UP,
+ _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
+
+void keyboard_pre_init_user(void) {
+ gpio_set_pin_output(F5); // initialize F5 for LED
+ gpio_set_pin_output(F6); // initialize F6 for LED
+ gpio_set_pin_output(F7); // initialize F7 for LED
+
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _FN1:
+ gpio_write_pin_high(F5);
+ gpio_write_pin_low(F6);
+ gpio_write_pin_low(F7);
+ break;
+ case _FN2:
+ gpio_write_pin_high(F6);
+ gpio_write_pin_low(F5);
+ gpio_write_pin_low(F7);
+ break;
+ case _FN3: // replace 'XXXX' with the layer or function name
+ gpio_write_pin_high(F7);
+ gpio_write_pin_low(F5);
+ gpio_write_pin_low(F6);
+ break;
+ case KC_F24:
+ gpio_write_pin_high(F7);
+ gpio_write_pin_high(F5);
+ gpio_write_pin_high(F6);
+ break;
+ default:
+ gpio_write_pin_low(F5);
+ gpio_write_pin_low(F6);
+ gpio_write_pin_low(F7);
+ break;
+ }
+ return state;
+}
+
+
+bool spongebob_mode = false;
+bool spongebob_case = false;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (spongebob_mode) {
+ switch(keycode) {
+ case KC_A...KC_Z:
+ if (record->event.pressed) {
+ (spongebob_case ^= 1) == 0 ? tap_code16(S(keycode)) : tap_code(keycode);
+ return false; break;
+ }
+ }
+ }
+ switch(keycode) {
+ case QK_KB_0:
+ if (record->event.pressed) {
+ spongebob_mode ^= 1;
+ }
+ return false; break;
+ }
+ return true;
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [1] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [2] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ // Encoder 1 Encoder 2
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/viktus/sp_mini/keymaps/vial/rules.mk b/keyboards/viktus/sp_mini/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..18b6cd1adc
--- /dev/null
+++ b/keyboards/viktus/sp_mini/keymaps/vial/rules.mk
@@ -0,0 +1,20 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+TAP_DANCE_ENABLE = no
+
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = no
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+MUSIC_ENABLE = no
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/viktus/sp_mini/keymaps/vial/vial.json b/keyboards/viktus/sp_mini/keymaps/vial/vial.json
new file mode 100644
index 0000000000..46ee7667eb
--- /dev/null
+++ b/keyboards/viktus/sp_mini/keymaps/vial/vial.json
@@ -0,0 +1,285 @@
+{
+ "name": "SP_Mini",
+ "vendorId": "0x5644",
+ "productId": "0x534D",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 10,
+ "cols": 8
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ [
+ "Bottom Row Left",
+ "2.75u",
+ "3u",
+ "2.25u",
+ "2u"
+ ],
+ [
+ "Bottom Row Right",
+ "2.25u",
+ "3u",
+ "2.75u"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 13
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 0.75
+ },
+ "0,0",
+ {
+ "x": 0.25
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 0.5
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ "5,6",
+ {
+ "x": 0.25
+ },
+ "5,7"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 0.75
+ },
+ "1,0",
+ {
+ "x": 0.25
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 0.5
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5\n\n\n0,0",
+ "6,6\n\n\n0,0",
+ {
+ "x": 0.25
+ },
+ "6,7",
+ {
+ "x": 0.25,
+ "w": 2
+ },
+ "6,6\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 0.75
+ },
+ "2,0",
+ {
+ "x": 0.25,
+ "w": 1.25
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ {
+ "w": 1.75
+ },
+ "7,6",
+ {
+ "x": 0.25
+ },
+ "7,7"
+ ],
+ [
+ {
+ "x": 0.75
+ },
+ "3,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 0.5
+ },
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ {
+ "w": 1.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 14.75
+ },
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 0.75
+ },
+ "4,0",
+ {
+ "x": 0.25,
+ "w": 1.25
+ },
+ "4,1\n\n\n1,0",
+ {
+ "w": 1.25
+ },
+ "4,2\n\n\n1,0",
+ {
+ "w": 1.25
+ },
+ "4,3\n\n\n1,0",
+ {
+ "w": 2.75
+ },
+ "4,5\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 2.25
+ },
+ "9,2\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "9,3\n\n\n2,0",
+ "9,4\n\n\n2,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.75
+ },
+ "9,5",
+ "9,6",
+ "9,7"
+ ],
+ [
+ {
+ "x": 2,
+ "w": 1.25
+ },
+ "4,1\n\n\n1,1",
+ "4,2\n\n\n1,1",
+ {
+ "w": 1.25
+ },
+ "4,3\n\n\n1,1",
+ {
+ "w": 3
+ },
+ "4,5\n\n\n1,1",
+ {
+ "x": 0.5,
+ "w": 3
+ },
+ "9,2\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "9,4\n\n\n2,1"
+ ],
+ [
+ {
+ "x": 2,
+ "w": 1.5
+ },
+ "4,1\n\n\n1,2",
+ {
+ "w": 1.25
+ },
+ "4,2\n\n\n1,2",
+ {
+ "w": 1.5
+ },
+ "4,3\n\n\n1,2",
+ {
+ "w": 2.25
+ },
+ "4,5\n\n\n1,2",
+ {
+ "x": 0.5,
+ "w": 2.75
+ },
+ "9,2\n\n\n2,2",
+ {
+ "w": 1.75
+ },
+ "9,4\n\n\n2,2"
+ ],
+ [
+ {
+ "x": 2,
+ "w": 1.25
+ },
+ "4,1\n\n\n1,3",
+ "4,2\n\n\n1,3",
+ "4,3\n\n\n1,3",
+ {
+ "w": 1.25
+ },
+ "4,4\n\n\n1,3",
+ {
+ "w": 2
+ },
+ "4,5\n\n\n1,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/wiredin/protagonist/pro_h/keymaps/vial/config.h b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/config.h
new file mode 100644
index 0000000000..bb4022efee
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x1E, 0xE4, 0x47, 0x11, 0xD0, 0xB6, 0xE2, 0x7E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#define VIAL_TAP_DANCE_ENTRIES 10
+#define VIAL_COMBO_ENTRIES 15
+#define VIAL_KEY_OVERRIDE_ENTRIES 10
diff --git a/keyboards/wiredin/protagonist/pro_h/keymaps/vial/keymap.c b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..4c437d8da9
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ QK_GESC, 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_BSPC,
+ 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_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_COLN, KC_QUOT, KC_ENT ,
+ 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) ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RCTL
+),
+[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/wiredin/protagonist/pro_h/keymaps/vial/rules.mk b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6bc7063adc
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/wiredin/protagonist/pro_h/keymaps/vial/vial.json b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/vial.json
new file mode 100644
index 0000000000..254c450a62
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_h/keymaps/vial/vial.json
@@ -0,0 +1,227 @@
+ {
+ "matrix": {
+ "rows": 6,
+ "cols": 14
+ },
+ "lighting": "qmk_rgblight",
+ "layouts": {
+ "labels":[
+ "Split Backspace",
+ "Split Right Shift",
+ [
+ "Bottom Row",
+ "WK",
+ "WKL",
+ "HHKB"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "c": "#777777",
+ "w": 2
+ },
+ "0,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,13\n\n\n0,1",
+ "4,13\n\n\n0,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "3,12\n\n\n1,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "3,12\n\n\n1,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,0\n\n\n2,0",
+ "5,1\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,0",
+ "4,11\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "4,12\n\n\n2,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "w": 1.5
+ },
+ "5,0\n\n\n2,1",
+ {
+ "d": true
+ },
+ "5,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,1",
+ {
+ "d": true
+ },
+ "4,11\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,12\n\n\n2,1"
+ ],
+ [
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "5,0\n\n\n2,2",
+ "5,1\n\n\n2,2",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,2",
+ "4,11\n\n\n2,2",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,12\n\n\n2,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/wiredin/protagonist/pro_s/keymaps/vial/config.h b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/config.h
new file mode 100644
index 0000000000..1f0c01c683
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAC, 0xE2, 0x20, 0xEF, 0x1D, 0x04, 0x18, 0x8C}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#define VIAL_TAP_DANCE_ENTRIES 10
+#define VIAL_COMBO_ENTRIES 15
+#define VIAL_KEY_OVERRIDE_ENTRIES 10
diff --git a/keyboards/wiredin/protagonist/pro_s/keymaps/vial/keymap.c b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..68bc778caa
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(/* Base */
+ QK_GESC, 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_BSPC,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/wiredin/protagonist/pro_s/keymaps/vial/rules.mk b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/wiredin/protagonist/pro_s/keymaps/vial/vial.json b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/vial.json
new file mode 100644
index 0000000000..23740636c6
--- /dev/null
+++ b/keyboards/wiredin/protagonist/pro_s/keymaps/vial/vial.json
@@ -0,0 +1,255 @@
+{
+ "matrix": {
+ "rows": 7,
+ "cols": 14
+ },
+ "lighting": "qmk_rgblight",
+ "layouts": {
+ "labels":[
+ "Split Backspace",
+ "Split Right Shift",
+ [
+ "Bottom Row",
+ "WK",
+ "WKL",
+ "HHKB"
+ ],
+ "Split Left Shift",
+ "ISO Enter"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.5,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "c": "#777777",
+ "w": 2
+ },
+ "0,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,13\n\n\n0,1",
+ "4,13\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "w": 1.5
+ },
+ "1,13\n\n\n4,0",
+ {
+ "x": 1.25,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,13\n\n\n4,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,13\n\n\n4,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,12\n\n\n4,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "6,0\n\n\n3,1",
+ "6,1\n\n\n3,1",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "6,0\n\n\n3,0",
+ {
+ "c": "#cccccc"
+ },
+ "6,2",
+ "6,3",
+ "6,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "3,12\n\n\n1,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "3,12\n\n\n1,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,0\n\n\n2,0",
+ "5,1\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,0",
+ "4,11\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "4,12\n\n\n2,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5,
+ "w": 1.5
+ },
+ "5,0\n\n\n2,1",
+ {
+ "d": true
+ },
+ "5,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,1",
+ {
+ "d": true
+ },
+ "4,11\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,12\n\n\n2,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5,
+ "d": true
+ },
+ "5,0\n\n\n2,2",
+ "5,1\n\n\n2,2",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n2,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,2",
+ "4,11\n\n\n2,2",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,12\n\n\n2,2"
+ ]
+ ]
+ }
+}
diff --git a/quantum/vial_ensure_keycode.h b/quantum/vial_ensure_keycode.h
index 9edd478748..320db887b1 100644
--- a/quantum/vial_ensure_keycode.h
+++ b/quantum/vial_ensure_keycode.h
@@ -525,6 +525,7 @@ _Static_assert(MAGIC_UNSWAP_ALT_GUI == 0x7015, "");
_Static_assert(MAGIC_TOGGLE_ALT_GUI == 0x7016, "");
_Static_assert(MAGIC_NO_GUI == 0x700A, "");
_Static_assert(MAGIC_UNNO_GUI == 0x7009, "");
+_Static_assert(MAGIC_TOGGLE_GUI == 0x700B, "");
_Static_assert(MAGIC_SWAP_GRAVE_ESC == 0x700C, "");
_Static_assert(MAGIC_UNSWAP_GRAVE_ESC == 0x700D, "");
_Static_assert(MAGIC_SWAP_BACKSLASH_BACKSPACE == 0x700E, "");