diff --git a/keyboards/aeternus/omnibus/config.h b/keyboards/aeternus/omnibus/config.h
new file mode 100644
index 0000000000..0a7d501827
--- /dev/null
+++ b/keyboards/aeternus/omnibus/config.h
@@ -0,0 +1,23 @@
+/*
+Copyright 2021 KnoblesseOblige
+
+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 RGBLED_NUM 22
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/aeternus/omnibus/info.json b/keyboards/aeternus/omnibus/info.json
new file mode 100644
index 0000000000..5fa0b4f152
--- /dev/null
+++ b/keyboards/aeternus/omnibus/info.json
@@ -0,0 +1,148 @@
+{
+ "manufacturer": "Aeternus",
+ "keyboard_name": "Omnibus",
+ "maintainer": "KnoblesseOblige",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "B2", "pin_b": "B3"}
+ ]
+ },
+ "features": {
+ "bootmagic": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": false,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0", "D7"],
+ "rows": ["B1", "B0", "D6", "D4"]
+ },
+ "processor": "atmega32u4",
+ "rgblight": {
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ },
+ "pin": "B7"
+ },
+ "url": "",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x4F42",
+ "vid": "0xAE7E"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "1u", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
+ { "label": "1u", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
+ { "label": "1u", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
+ { "label": "1u", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
+ { "label": "1u", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
+ { "label": "1u", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
+ { "label": "1u", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
+ { "label": "1u", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
+ { "label": "1u", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
+ { "label": "1u", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
+ { "label": "1u", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
+ { "label": "nono", "matrix": [0, 11], "w": 1, "x": 11, "y": 0 },
+ { "label": "enc", "matrix": [3, 7], "w": 0.75, "x": 12, "y": 0 },
+ { "label": "1.25u", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 },
+ { "label": "1u", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 },
+ { "label": "1.5u", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 },
+ { "label": "1.75u", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "1u", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 },
+ { "label": "1u", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 },
+ { "label": "1u", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 },
+ { "label": "1u", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 },
+ { "label": "1u", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 },
+ { "label": "2.25u", "matrix": [3, 4], "w": 2.25, "x": 4, "y": 3 },
+ { "label": "2u", "matrix": [3, 6], "w": 2, "x": 6.25, "y": 3 },
+ { "label": "1.5u", "matrix": [3, 8], "w": 1.5, "x": 8.25, "y": 3 },
+ { "label": "1u", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3 },
+ { "label": "1u", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3 },
+ { "label": "1u", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3 }
+ ]
+ },
+ "LAYOUT_southpaw": {
+ "layout": [
+ { "label": "1u", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
+ { "label": "1u", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
+ { "label": "1u", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
+ { "label": "1u", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
+ { "label": "1u", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
+ { "label": "1u", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
+ { "label": "1u", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
+ { "label": "1u", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
+ { "label": "1u", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
+ { "label": "1u", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
+ { "label": "1u", "matrix": [0, 10], "w": 1, "x": 10, "y": 0 },
+ { "label": "nono", "matrix": [0, 11], "w": 1.75, "x": 11, "y": 0 },
+ { "label": "1.25u", "matrix": [1, 0], "w": 1.25, "x": 0, "y": 1 },
+ { "label": "1u", "matrix": [1, 1], "w": 1, "x": 1.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 2], "w": 1, "x": 2.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 3], "w": 1, "x": 3.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 4], "w": 1, "x": 4.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 5], "w": 1, "x": 5.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 6], "w": 1, "x": 6.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 7], "w": 1, "x": 7.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 8], "w": 1, "x": 8.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 9], "w": 1, "x": 9.25, "y": 1 },
+ { "label": "1u", "matrix": [1, 10], "w": 1, "x": 10.25, "y": 1 },
+ { "label": "1.5u", "matrix": [1, 11], "w": 1.5, "x": 11.25, "y": 1 },
+ { "label": "1.75u", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "1u", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 8], "w": 1, "x": 8.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 9], "w": 1, "x": 9.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 10], "w": 1, "x": 10.75, "y": 2 },
+ { "label": "1u", "matrix": [2, 11], "w": 1, "x": 11.75, "y": 2 },
+ { "label": "1u", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 },
+ { "label": "1u", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 },
+ { "label": "1u", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 },
+ { "label": "1u", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 },
+ { "label": "2.25u", "matrix": [3, 4], "w": 2.25, "x": 4, "y": 3 },
+ { "label": "2u", "matrix": [3, 6], "w": 2, "x": 6.25, "y": 3 },
+ { "label": "1.5u", "matrix": [3, 8], "w": 1.5, "x": 8.25, "y": 3 },
+ { "label": "1u", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3 },
+ { "label": "1u", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3 },
+ { "label": "1u", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/aeternus/omnibus/keymaps/default/keymap.c b/keyboards/aeternus/omnibus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..15c9c378b3
--- /dev/null
+++ b/keyboards/aeternus/omnibus/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2021 KnoblesseOblige
+ *
+ * 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] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL,
+ LCTL_T(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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ MO(1), KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(3), MO(1), TT(2), MO(2)
+ ),
+ [1] = LAYOUT_all(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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_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_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/aeternus/omnibus/keymaps/vial/config.h b/keyboards/aeternus/omnibus/keymaps/vial/config.h
new file mode 100644
index 0000000000..cb66b49ee5
--- /dev/null
+++ b/keyboards/aeternus/omnibus/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x61, 0x6F, 0x6D, 0x6E, 0x69, 0x62, 0x75, 0x73}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 11 }
diff --git a/keyboards/aeternus/omnibus/keymaps/vial/keymap.c b/keyboards/aeternus/omnibus/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..bca595dde1
--- /dev/null
+++ b/keyboards/aeternus/omnibus/keymaps/vial/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 KnoblesseOblige
+ *
+ * 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
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL,
+ LCTL_T(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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ MO(1), KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(3), MO(1), TT(2), MO(2)
+ ),
+ [1] = LAYOUT_all(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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_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_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/aeternus/omnibus/keymaps/vial/rules.mk b/keyboards/aeternus/omnibus/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..3e91f08bde
--- /dev/null
+++ b/keyboards/aeternus/omnibus/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = no
diff --git a/keyboards/aeternus/omnibus/keymaps/vial/vial.json b/keyboards/aeternus/omnibus/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d6e99b1bad
--- /dev/null
+++ b/keyboards/aeternus/omnibus/keymaps/vial/vial.json
@@ -0,0 +1,401 @@
+{
+ "name": "Omnibus",
+ "vendorId": "AE7E",
+ "productId": "4F42",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Bottom Row",
+ "Standard / Standard",
+ "Southpaw / Arrows",
+ "3u/3u (m3n3van)",
+ "2.75u/2.25u (Minisub)",
+ "1.5u/1.5u S-Class",
+ "2.25u/2u (0.75u HHKB)",
+ "4.25u",
+ "6u (m3n3van)",
+ "Jetvan",
+ "6.25u HHKB/WKL",
+ "Offset 7u",
+ "Offset 9u",
+ "Big Boi",
+ "9.75u (0.25u WKL)",
+ "Behemoth",
+ "Centered 9u",
+ "Nixdorf",
+ "6.25u (0.75u HHKB)",
+ "7u (1.25u/2u HHKB)",
+ "7u (1u/1.75u HHKB)",
+ "10u HHKB (1u/1.75u HHKB)",
+ "6.25u (MB44)",
+ "2.25/1/2.75 (MB44)",
+ "2.75u/2.25u/1u (MB44)",
+ "6.25u (0.75u WKL) (Pegasus)"
+ ],
+ "Split Backspace",
+ "JIS Enter"
+ ],
+ "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\n\n\n1,0",
+ {
+ "x": 0.25
+ },
+ "0,11\n\n\n1,1",
+ {
+ "w": 0.75
+ },
+ "3,7\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n1,1\n\n\n\n\n\ne",
+ "0,1\n\n\n1,1\n\n\n\n\n\ne"
+ ],
+ [
+ { "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\n\n\n2,0",
+ { "x": 1, "h": 2, "w2": 1.5, "h2": 1, "x2": -0.5 },
+ "1,11\n\n\n2,1"
+ ],
+ [
+ { "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\n\n\n2,0"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,0",
+ { "w": 1.5 },
+ "3,1\n\n\n0,0",
+ { "w": 1.25 },
+ "3,3\n\n\n0,0",
+ { "w": 2.25 },
+ "3,4\n\n\n0,0",
+ { "w": 2 },
+ "3,6\n\n\n0,0",
+ { "w": 1.25 },
+ "3,8\n\n\n0,0",
+ { "w": 1.5 },
+ "3,9\n\n\n0,0",
+ { "w": 1.75 },
+ "3,11\n\n\n0,0"
+ ],
+ [
+ { "y": 1 },
+ "3,0\n\n\n0,1",
+ "3,1\n\n\n0,1",
+ "3,2\n\n\n0,1",
+ "3,3\n\n\n0,1",
+ { "w": 2.25 },
+ "3,4\n\n\n0,1",
+ { "w": 2 },
+ "3,6\n\n\n0,1",
+ { "w": 1.5 },
+ "3,8\n\n\n0,1",
+ "3,9\n\n\n0,1",
+ "3,10\n\n\n0,1",
+ "3,11\n\n\n0,1"
+ ],
+ [
+ "3,0\n\n\n0,2",
+ { "w": 1.25 },
+ "3,1\n\n\n0,2",
+ "3,2\n\n\n0,2",
+ { "w": 3 },
+ "3,4\n\n\n0,2",
+ { "w": 3 },
+ "3,6\n\n\n0,2",
+ { "w": 1.25 },
+ "3,9\n\n\n0,2",
+ "3,10\n\n\n0,2",
+ { "w": 1.25 },
+ "3,11\n\n\n0,2"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,3",
+ "3,1\n\n\n0,3",
+ { "w": 1.25 },
+ "3,2\n\n\n0,3",
+ { "w": 2.75 },
+ "3,4\n\n\n0,3",
+ { "w": 2.25 },
+ "3,6\n\n\n0,3",
+ { "w": 1.25 },
+ "3,8\n\n\n0,3",
+ "3,9\n\n\n0,3",
+ "3,10\n\n\n0,3",
+ "3,11\n\n\n0,3"
+ ],
+ [
+ { "w": 1.5 },
+ "3,0\n\n\n0,4",
+ { "w": 1.5 },
+ "3,1\n\n\n0,4",
+ { "x": 1, "w": 2.25 },
+ "3,4\n\n\n0,4",
+ { "w": 2 },
+ "3,6\n\n\n0,4",
+ { "w": 1.5 },
+ "3,8\n\n\n0,4",
+ "3,9\n\n\n0,4",
+ "3,10\n\n\n0,4",
+ "3,11\n\n\n0,4"
+ ],
+ [
+ { "y": 1, "w": 0.75, "d": true },
+ "\n\n\n0,5",
+ { "w": 1.25 },
+ "3,1\n\n\n0,5",
+ "3,2\n\n\n0,5",
+ "3,3\n\n\n0,5",
+ { "w": 2.25 },
+ "3,4\n\n\n0,5",
+ { "w": 2 },
+ "3,6\n\n\n0,5",
+ { "w": 1.25 },
+ "3,8\n\n\n0,5",
+ { "w": 1.25 },
+ "3,9\n\n\n0,5",
+ { "w": 1.25 },
+ "3,10\n\n\n0,5",
+ { "w": 0.75, "d": true },
+ "\n\n\n0,5"
+ ],
+ [
+ { "y": 1 },
+ "3,0\n\n\n0,6",
+ "3,1\n\n\n0,6",
+ "3,2\n\n\n0,6",
+ "3,3\n\n\n0,6",
+ { "w": 4.25 },
+ "3,4\n\n\n0,6",
+ { "w": 1.5 },
+ "3,8\n\n\n0,6",
+ "3,9\n\n\n0,6",
+ "3,10\n\n\n0,6",
+ "3,11\n\n\n0,6"
+ ],
+ [
+ "3,0\n\n\n0,7",
+ { "w": 1.25 },
+ "3,1\n\n\n0,7",
+ "3,2\n\n\n0,7",
+ { "w": 6 },
+ "3,4\n\n\n0,7",
+ { "w": 1.25 },
+ "3,9\n\n\n0,7",
+ "3,10\n\n\n0,7",
+ { "w": 1.25 },
+ "3,11\n\n\n0,7"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,8",
+ "3,1\n\n\n0,8",
+ { "w": 1.25 },
+ "3,2\n\n\n0,8",
+ { "w": 6.25 },
+ "3,4\n\n\n0,8",
+ "3,9\n\n\n0,8",
+ "3,10\n\n\n0,8",
+ "3,11\n\n\n0,8"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,9",
+ "3,1\n\n\n0,9",
+ "3,2\n\n\n0,9",
+ { "w": 6.25 },
+ "3,4\n\n\n0,9",
+ "3,9\n\n\n0,9",
+ "3,10\n\n\n0,9",
+ { "w": 1.25 },
+ "3,11\n\n\n0,9"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,10",
+ { "w": 1.5 },
+ "3,1\n\n\n0,10",
+ "3,3\n\n\n0,10",
+ { "w": 7 },
+ "3,6\n\n\n0,10",
+ "3,10\n\n\n0,10",
+ "3,11\n\n\n0,10"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,11",
+ { "w": 1.5 },
+ "3,1\n\n\n0,11",
+ { "w": 9 },
+ "3,6\n\n\n0,11",
+ "3,11\n\n\n0,11"
+ ],
+ [
+ "3,0\n\n\n0,12",
+ "3,1\n\n\n0,12",
+ { "w": 9.75 },
+ "3,6\n\n\n0,12",
+ "3,11\n\n\n0,12"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,13",
+ { "x": 0.25, "w": 9.75 },
+ "3,4\n\n\n0,13",
+ { "x": 0.25, "w": 1.25 },
+ "3,11\n\n\n0,13"
+ ],
+ [
+ { "w": 12.75 },
+ "3,4\n\n\n0,14"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n0,15",
+ { "w": 1.25 },
+ "3,1\n\n\n0,15",
+ { "w": 9 },
+ "3,4\n\n\n0,15",
+ { "w": 1.25 },
+ "3,11\n\n\n0,15"
+ ],
+ [
+ "3,0\n\n\n0,16",
+ "3,1\n\n\n0,16",
+ "3,2\n\n\n0,16",
+ { "w": 8 },
+ "3,4\n\n\n0,16",
+ { "w": 1.75 },
+ "3,11\n\n\n0,16"
+ ],
+ [
+ { "y": 1, "x": 0.75, "w": 1.25 },
+ "3,1\n\n\n0,17",
+ { "w": 1.25 },
+ "3,2\n\n\n0,17",
+ { "w": 6.25 },
+ "3,4\n\n\n0,17",
+ { "w": 1.25 },
+ "3,9\n\n\n0,17",
+ { "w": 1.25 },
+ "3,10\n\n\n0,17"
+ ],
+ [
+ { "x": 1.25, "w": 1.25 },
+ "3,1\n\n\n0,18",
+ { "w": 7 },
+ "3,4\n\n\n0,18",
+ { "w": 1.25 },
+ "3,9\n\n\n0,18"
+ ],
+ [
+ { "x": 1, "w": 1.5 },
+ "3,1\n\n\n0,19",
+ { "w": 7 },
+ "3,4\n\n\n0,19",
+ { "w": 1.5 },
+ "3,9\n\n\n0,19"
+ ],
+ [{ "x": 1, "w": 10 }, "3,4\n\n\n0,20"],
+ [
+ { "y": 1 },
+ "3,0\n\n\n0,21",
+ "3,1\n\n\n0,21",
+ "3,2\n\n\n0,21",
+ { "w": 6.25 },
+ "3,4\n\n\n0,21",
+ { "x": 0.5 },
+ "3,9\n\n\n0,21",
+ "3,10\n\n\n0,21",
+ "3,11\n\n\n0,21"
+ ],
+ [
+ "3,0\n\n\n0,22",
+ { "w": 1.25 },
+ "3,1\n\n\n0,22",
+ "3,2\n\n\n0,22",
+ { "w": 2.25 },
+ "3,3\n\n\n0,22",
+ "3,4\n\n\n0,22",
+ { "w": 2.75 },
+ "3,6\n\n\n0,22",
+ { "x": 0.5 },
+ "3,9\n\n\n0,22",
+ "3,10\n\n\n0,22",
+ "3,11\n\n\n0,22"
+ ],
+ [
+ "3,0\n\n\n0,23",
+ { "w": 1.25 },
+ "3,1\n\n\n0,23",
+ "3,2\n\n\n0,23",
+ { "w": 2.75 },
+ "3,4\n\n\n0,23",
+ { "w": 2.25 },
+ "3,6\n\n\n0,23",
+ "3,8\n\n\n0,23",
+ { "x": 0.5 },
+ "3,9\n\n\n0,23",
+ "3,10\n\n\n0,23",
+ "3,11\n\n\n0,23"
+ ],
+ [
+ { "y": 1, "w": 1.25 },
+ "3,0\n\n\n0,24",
+ { "x": 0.75, "w": 1.25 },
+ "3,2\n\n\n0,24",
+ { "w": 6.25 },
+ "3,4\n\n\n0,24",
+ { "w": 1.25 },
+ "3,9\n\n\n0,24",
+ { "x": 0.75, "w": 1.25 },
+ "3,11\n\n\n0,24"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/aeternus/omnibus/readme.md b/keyboards/aeternus/omnibus/readme.md
new file mode 100644
index 0000000000..afbbb3edd2
--- /dev/null
+++ b/keyboards/aeternus/omnibus/readme.md
@@ -0,0 +1,27 @@
+# Omnibus
+
+![Omnibus](https://cdn.shopify.com/s/files/1/0501/5080/1588/products/IMG_9986_1024x1024@2x.jpg?v=1629070461)
+
+A drop-in replacement PCB for most Minivan cases. Also supports every known bottom row layout.
+
+* Keyboard Maintainer: [Aeternus](https://github.com/AeternusCo)
+* Hardware Supported: Most Minivan cases
+* Hardware Availability: https://store.aeternus.co/products/omnibus-pcb
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aeternus/omnibus:default
+
+Flashing example for this keyboard:
+
+ make aeternus/omnibus: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 Escape key and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
\ No newline at end of file
diff --git a/keyboards/aeternus/omnibus/rules.mk b/keyboards/aeternus/omnibus/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/aeternus/omnibus/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/akb/ogr/keymaps/vial/config.h b/keyboards/akb/ogr/keymaps/vial/config.h
new file mode 100644
index 0000000000..3b431b5265
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC9, 0x7A, 0x7F, 0x35, 0xB7, 0x59, 0x23, 0xDE}
+#define VIAL_UNLOCK_COMBO_ROWS { 1, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 16 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/akb/ogr/keymaps/vial/keymap.c b/keyboards/akb/ogr/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..69d32bff75
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/vial/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2023 Gabriel Levrel
+ *
+ * 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] = {
+
+ /*
+ * ┌───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ F1│ F2│ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * | F3| F4| │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * | F5| F6| │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * | F7| F8| │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * | F9|F10| │Ctrl│GUI │Alt │ │Alt│Ctl│ │ ← │ ↓ │ → │
+ * └───┴───┘ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_all(
+
+ KC_F1, KC_F2, 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_BSPC, KC_DEL, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, 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_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+
+ [1] = LAYOUT_all(
+ _______, _______, 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/akb/ogr/keymaps/vial/rules.mk b/keyboards/akb/ogr/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..46f9f1360f
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/akb/ogr/keymaps/vial/vial.json b/keyboards/akb/ogr/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4c36527664
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/vial/vial.json
@@ -0,0 +1,141 @@
+{
+ "lighting": "none",
+ "matrix": {"rows": 5, "cols": 18},
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "WK Bottom Row"
+ ],
+ "keymap": [
+ [
+ {"x": 2.75},
+ "0,0",
+ "0,1",
+ {"x": 0.5},
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ "0,14",
+ {"w": 2},
+ "0,15\n\n\n0,0",
+ "0,17",
+ {"x": 0.75},
+ "0,15\n\n\n0,1",
+ "0,16\n\n\n0,1"
+ ],
+ [
+ {"x": 2.75},
+ "1,0",
+ "1,1",
+ {"x": 0.5, "w": 1.5},
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ "1,13",
+ "1,14",
+ {"w": 1.5},
+ "1,15\n\n\n1,0",
+ "1,16",
+ {"x": 1.5, "w": 1.25, "h": 2, "w2": 1.5, "h2": 1, "x2": -0.25},
+ "2,15\n\n\n1,1"
+ ],
+ [
+ {"x": 2.75},
+ "2,0",
+ "2,1",
+ {"x": 0.5, "w": 1.75},
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ "2,13",
+ {"w": 2.25},
+ "2,15\n\n\n1,0",
+ "2,16",
+ {"x": 0.5},
+ "2,14\n\n\n1,1"
+ ],
+ [
+ {"w": 1.25},
+ "3,2\n\n\n2,1",
+ "3,3\n\n\n2,1",
+ {"x": 0.5},
+ "3,0",
+ "3,1",
+ {"x": 0.5, "w": 2.25},
+ "3,2\n\n\n2,0",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ "3,13",
+ {"w": 1.75},
+ "3,14",
+ "3,15",
+ "3,16"
+ ],
+ [
+ {"x": 2.75},
+ "4,0",
+ "4,1",
+ {"x": 0.5, "w": 1.5},
+ "4,2\n\n\n3,0",
+ {"x": 0.75, "w": 1.5},
+ "4,4\n\n\n3,0",
+ {"w": 7},
+ "4,9\n\n\n3,0",
+ {"w": 1.5},
+ "4,13\n\n\n3,0",
+ {"x": 0.75},
+ "4,14",
+ "4,15",
+ "4,16"
+ ],
+ [
+ {"x": 5.25, "w": 1.25},
+ "4,2\n\n\n3,1",
+ {"w": 1.25},
+ "4,3\n\n\n3,1",
+ {"w": 1.25},
+ "4,4\n\n\n3,1",
+ {"w": 6.25},
+ "4,9\n\n\n3,1",
+ {"w": 1.25},
+ "4,12\n\n\n3,1",
+ {"w": 1.25},
+ "4,13\n\n\n3,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/akb/vero/keymaps/vial/keymap.c b/keyboards/akb/vero/keymaps/vial/keymap.c
index d73d4085a7..d5ae16ef9c 100644
--- a/keyboards/akb/vero/keymaps/vial/keymap.c
+++ b/keyboards/akb/vero/keymaps/vial/keymap.c
@@ -8,18 +8,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ Bspc│
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤
+ * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│MO1│
- * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘
- * │Alt│ GUI │ │ GUI │Alt│
- * └───┴─────┴───────────────────────────┴─────┴───┘
+ * └─────┬──┴┬──┴──┬┴───┴───┴──┬┴───┴───┴──┬┴───┴┬──┴┬─────┴───┘
+ * │Alt│ GUI │Space │Space │ GUI │Alt│
+ * └───┴─────┴───────────┴───────────┴─────┴───┘
*/
[0] = 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_GRV,
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_LCTL, 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_LCTL, 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_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT
),
@@ -27,21 +27,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │Pwr│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Ins│Del│
- * ├───┴─┬─┴───┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┘
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │Caps │ Q │ W │ E │ R │ T │ Y │ U │PSc│Scr│Pse│ ↑ │ ] │ Bspc│
- * └─────┘┌───┬───┬───┐──┴┬──┴┌───┬──┴┬──┴┬──┴┬──┴┬──┴┬────────┐
- * │ Ctrl │Vl-│Vl+│Mut│ F │ G │ * │ / │Hom│PgU│ ← │ → │ Enter │
- * ├──────└───┴───┴───┘─┬─┴─┬─└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┘
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤
+ * │ Ctrl │Vl-│Vl+│Mut│ F │ G │ * │ / │Hom│PgU│ ← │ → │ # │Ent │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
* │ Shift │ Z │ X │ C │ V │ B │ + │ - │End│PgD│ ↓ │ Shift│MO1│
- * └─────┬──┴┬──┴──┬┴───┴───┴───└───┴───┴───┴───┴───┘┬───┬─┴───┘
- * │Alt│ GUI │ │ GUI │Alt│
- * └───┴─────┴───────────────────────────┴─────┴───┘
+ * └─────┬──┴┬──┴──┬┴───┴───┴──┬┴───┴───┴──┬┴───┴┬──┴┬─────┴───┘
+ * │Alt│ GUI │Space │Space │ GUI │Alt│
+ * └───┴─────┴───────────┴───────────┴─────┴───┘
*/
[1] = LAYOUT_all(
KC_PWR, 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_INS, KC_DEL,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______,
- _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
- _______, _______,_______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT,
+ _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/akb/vero/keymaps/vial/vial.json b/keyboards/akb/vero/keymaps/vial/vial.json
index 3994ac8c39..5b68b30072 100644
--- a/keyboards/akb/vero/keymaps/vial/vial.json
+++ b/keyboards/akb/vero/keymaps/vial/vial.json
@@ -1,170 +1,170 @@
{
- "name": "akb/vero",
- "vendorId": "0x4150",
- "productId": "0x5645",
- "lighting": "none",
- "matrix": {
- "rows": 5,
- "cols": 15
- },
- "layouts": {
- "labels": [
- "Long Backspace",
- "ISO",
- "Long Right Shift",
- "Split Left Shift",
- "Split Spacebar"
+ "name": "akb/vero",
+ "vendorId": "0x4150",
+ "productId": "0x5645",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 15
+ },
+ "layouts": {
+ "labels": [
+ "Long Backspace",
+ "ISO",
+ "Long Right Shift",
+ "Split Left Shift",
+ "Split Spacebar"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 15.5,
+ "w": 2
+ },
+ "0,13\n\n\n0,1"
],
- "keymap": [
- [
- {
- "x": 15.5,
- "w": 2
- },
- "0,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",
- "0,13\n\n\n0,0",
- "0,14\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",
- {
- "w": 1.5
- },
- "1,13\n\n\n1,0",
- {
- "x": 1.25,
- "w": 1.25,
- "h": 2,
- "w2": 1.5,
- "h2": 1,
- "x2": -0.25
- },
- "2,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",
- {
- "w": 2.25
- },
- "2,13\n\n\n1,0",
- {
- "x": 0.25
- },
- "2,12\n\n\n1,1"
- ],
- [
- {
- "w": 1.25
- },
- "3,0\n\n\n3,1",
- "3,1\n\n\n3,1",
- {
- "x": 0.25,
- "w": 2.25
- },
- "3,0\n\n\n3,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\n\n\n2,0",
- "3,13\n\n\n2,0",
- {
- "x": 0.25,
- "w": 2.75
- },
- "3,12\n\n\n2,1"
- ],
- [
- {
- "x": 4
- },
- "4,1",
- {
- "w": 1.5
- },
- "4,2",
- {
- "w": 6
- },
- "4,7\n\n\n4,0",
- {
- "w": 1.5
- },
- "4,10",
- "4,11"
- ],
- [
- {
- "y": 0.25,
- "x": 6.5,
- "w": 3
- },
- "4,5\n\n\n4,1",
- {
- "w": 3
- },
- "4,7\n\n\n4,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",
+ "0,13\n\n\n0,0",
+ "0,14\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",
+ {
+ "w": 1.5
+ },
+ "1,13\n\n\n1,0",
+ {
+ "x": 1.25,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,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",
+ {
+ "w": 2.25
+ },
+ "2,13\n\n\n1,0",
+ {
+ "x": 0.25
+ },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "3,0\n\n\n3,1",
+ "3,1\n\n\n3,1",
+ {
+ "x": 0.25,
+ "w": 2.25
+ },
+ "3,0\n\n\n3,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\n\n\n2,0",
+ "3,13\n\n\n2,0",
+ {
+ "x": 0.25,
+ "w": 2.75
+ },
+ "3,12\n\n\n2,1"
+ ],
+ [
+ {
+ "x": 4
+ },
+ "4,1",
+ {
+ "w": 1.5
+ },
+ "4,2",
+ {
+ "w": 6
+ },
+ "4,7\n\n\n4,0",
+ {
+ "w": 1.5
+ },
+ "4,10",
+ "4,11"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.5,
+ "w": 3
+ },
+ "4,5\n\n\n4,1",
+ {
+ "w": 3
+ },
+ "4,7\n\n\n4,1"
]
- }
- }
\ No newline at end of file
+ ]
+ }
+}
diff --git a/keyboards/alps64/keymaps/vial/config.h b/keyboards/alps64/keymaps/vial/config.h
new file mode 100644
index 0000000000..8f2f00c0f7
--- /dev/null
+++ b/keyboards/alps64/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBD, 0x15, 0x93, 0x37, 0x7A, 0x35, 0x29, 0x02}
+#define VIAL_UNLOCK_COMBO_ROWS { 3, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 6, 3 }
+
diff --git a/keyboards/alps64/keymaps/vial/keymap.c b/keyboards/alps64/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..aef6995a10
--- /dev/null
+++ b/keyboards/alps64/keymaps/vial/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: qwerty */
+ [0] = LAYOUT_all(
+ 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_NUHS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_ESC,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_APP, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = 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_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/alps64/keymaps/vial/rules.mk b/keyboards/alps64/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..c96b352451
--- /dev/null
+++ b/keyboards/alps64/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+TAP_DANCE_ENABLE = no
+MIDI_ENABLE = no
+
diff --git a/keyboards/alps64/keymaps/vial/vial.json b/keyboards/alps64/keymaps/vial/vial.json
new file mode 100644
index 0000000000..a0efe975fb
--- /dev/null
+++ b/keyboards/alps64/keymaps/vial/vial.json
@@ -0,0 +1,216 @@
+{
+ "name": "Hasu Alps64",
+ "lighting" : "none",
+ "matrix": {"rows": 8, "cols": 8},
+ "layouts": {
+ "labels": [
+ ["Enter Key", "ANSI", "ISO", "BAE"],
+ "Split Left Shift",
+ "Split Right Shift",
+ "Split Backspace",
+ ["Bottom row", "104", "101/103", "101/103 WKL", "Infinity", "AEK", "HHKB"]
+ ],
+ "keymap": [
+ [
+ {"x": 2.75},
+ "3,6",
+ "3,7",
+ "4,6",
+ "4,7",
+ "5,6",
+ "5,7",
+ "6,6",
+ "6,7",
+ "7,6",
+ "7,7",
+ "0,6",
+ "0,7",
+ "1,7",
+ {"c": "#aaaaaa", "w": 2},
+ "2,7\n\n\n3,0",
+ {"x": 0.5, "c": "#cccccc"},
+ "2,6\n\n\n3,1",
+ {"c": "#aaaaaa"},
+ "2,7\n\n\n3,1"
+ ],
+ [
+ {"x": 2.75, "w": 1.5},
+ "3,4",
+ {"c": "#cccccc"},
+ "3,5",
+ "4,4",
+ "4,5",
+ "5,4",
+ "5,5",
+ "6,4",
+ "6,5",
+ "7,5",
+ "0,5",
+ "1,5",
+ "1,6",
+ "2,5",
+ {"w": 1.5},
+ "2,4\n\n\n0,0",
+ {
+ "x": 1.5,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,3\n\n\n0,1",
+ {
+ "x": 0.75,
+ "w": 1.5,
+ "h": 2,
+ "w2": 2.25,
+ "h2": 1,
+ "x2": -0.75,
+ "y2": 1
+ },
+ "2,3\n\n\n0,2"
+ ],
+ [
+ {"x": 2.75, "c": "#aaaaaa", "w": 1.75},
+ "3,2",
+ {"c": "#cccccc"},
+ "3,3",
+ "4,3",
+ "5,2",
+ "5,3",
+ "6,3",
+ "7,3",
+ "7,4",
+ "0,3",
+ "0,4",
+ "1,3",
+ "1,4",
+ {"c": "#777777", "w": 2.25},
+ "2,3\n\n\n0,0",
+ {"x": 0.5, "c": "#cccccc"},
+ "2,4\n\n\n0,1"
+ ],
+ [
+ {"c": "#aaaaaa", "w": 1.25},
+ "3,1\n\n\n1,1",
+ {"c": "#cccccc"},
+ "4,1\n\n\n1,1",
+ {"x": 0.5, "c": "#aaaaaa", "w": 2.25},
+ "3,1\n\n\n1,0",
+ {"c": "#cccccc"},
+ "4,2",
+ "5,1",
+ "6,1",
+ "6,2",
+ "7,1",
+ "7,2",
+ "0,1",
+ "0,2",
+ "1,1",
+ "1,2",
+ {"c": "#aaaaaa", "w": 2.75},
+ "2,1\n\n\n2,0",
+ {"x": 0.5, "w": 1.75},
+ "2,1\n\n\n2,1",
+ "2,2\n\n\n2,1"
+ ],
+ [
+ {"x": 2.75, "w": 1.25},
+ "3,0\n\n\n4,0",
+ {"w": 1.25},
+ "4,0\n\n\n4,0",
+ {"w": 1.25},
+ "5,0\n\n\n4,0",
+ {"c": "#cccccc", "w": 6.25},
+ "6,0\n\n\n4,0",
+ {"c": "#aaaaaa", "w": 1.25},
+ "7,0\n\n\n4,0",
+ {"w": 1.25},
+ "0,0\n\n\n4,0",
+ {"w": 1.25},
+ "1,0\n\n\n4,0",
+ {"w": 1.25},
+ "2,0\n\n\n4,0"
+ ],
+ [
+ {"y": 0.25, "x": 2.75, "w": 1.5},
+ "3,0\n\n\n4,1",
+ "4,0\n\n\n4,1",
+ {"w": 1.5},
+ "5,0\n\n\n4,1",
+ {"c": "#cccccc", "w": 7},
+ "6,0\n\n\n4,1",
+ {"c": "#aaaaaa", "w": 1.5},
+ "0,0\n\n\n4,1",
+ "1,0\n\n\n4,1",
+ {"w": 1.5},
+ "2,0\n\n\n4,1"
+ ],
+ [
+ {"x": 2.75, "w": 1.5},
+ "3,0\n\n\n4,2",
+ {"d": true},
+ "\n\n\n4,2",
+ {"w": 1.5},
+ "5,0\n\n\n4,2",
+ {"c": "#cccccc", "w": 7},
+ "6,0\n\n\n4,2",
+ {"c": "#aaaaaa", "w": 1.5},
+ "0,0\n\n\n4,2",
+ {"d": true},
+ "\n\n\n4,2",
+ {"w": 1.5},
+ "2,0\n\n\n4,2"
+ ],
+ [
+ {"x": 2.75, "w": 1.5},
+ "3,0\n\n\n4,3",
+ "4,0\n\n\n4,3",
+ {"w": 1.5},
+ "5,0\n\n\n4,3",
+ {"c": "#cccccc", "w": 6},
+ "6,0\n\n\n4,3",
+ {"c": "#aaaaaa", "w": 1.5},
+ "7,0\n\n\n4,3",
+ "0,0\n\n\n4,3",
+ "1,0\n\n\n4,3",
+ {"w": 1.5},
+ "2,0\n\n\n4,3"
+ ],
+ [
+ {"x": 2.75, "w": 1.5},
+ "3,0\n\n\n4,4",
+ {"w": 1.25},
+ "4,0\n\n\n4,4",
+ {"w": 1.5},
+ "5,0\n\n\n4,4",
+ {"c": "#cccccc", "w": 6.5},
+ "6,0\n\n\n4,4",
+ {"c": "#aaaaaa", "w": 1.5},
+ "0,0\n\n\n4,4",
+ {"w": 1.25},
+ "1,0\n\n\n4,4",
+ {"w": 1.5},
+ "2,0\n\n\n4,4"
+ ],
+ [
+ {"x": 2.75, "w": 1.5, "d": true},
+ "\n\n\n4,5",
+ "4,0\n\n\n4,5",
+ {"w": 1.5},
+ "5,0\n\n\n4,5",
+ {"c": "#cccccc", "w": 6},
+ "6,0\n\n\n4,5",
+ {"c": "#aaaaaa", "w": 1.5},
+ "7,0\n\n\n4,5",
+ "0,0\n\n\n4,5",
+ "1,0\n\n\n4,5",
+ {"w": 1.5, "d": true},
+ "\n\n\n4,5"
+ ]
+ ]
+ }
+}
+
diff --git a/keyboards/amjkeyboard/amj40/keymaps/vial/config.h b/keyboards/amjkeyboard/amj40/keymaps/vial/config.h
new file mode 100644
index 0000000000..bd0321e6e9
--- /dev/null
+++ b/keyboards/amjkeyboard/amj40/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x78, 0x0D, 0x83, 0xE1, 0xB1, 0x93, 0x37, 0x62}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 11 }
diff --git a/keyboards/amjkeyboard/amj40/keymaps/vial/keymap.c b/keyboards/amjkeyboard/amj40/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..8cc9b1bece
--- /dev/null
+++ b/keyboards/amjkeyboard/amj40/keymaps/vial/keymap.c
@@ -0,0 +1,143 @@
+/* Copyright 2017 Fabian Topfstedt
+ *
+ * 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,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+};
+
+#define LT1_SPC LT(_LOWER,KC_SPC)
+#define LT2_SPC LT(_RAISE,KC_SPC)
+#define LT3_LGU LT(_ADJUST,KC_LGUI)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default Layer
+ * ,-----------------------------------------------.
+ * |Esc| Q | W | E | R | T | Y | U | I | O | P |BS |
+ * |-----------------------------------------------|
+ * |Tab | A | S | D | F | G | H | J | K | L |Enter |
+ * |-----------------------------------------------|
+ * | LSft | Z | X | C | V | B | N | M | , | . |/? |
+ * |-----------------------------------------------|
+ * |LCtl|GUI|LAlt|Spc/Fn0 | Spc/Fn1 |Fn2 |Alt|RCtl|
+ * `-----------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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_LCTL, KC_LGUI, KC_LALT, LT1_SPC, LT2_SPC, LT3_LGU, KC_RALT, KC_RCTL
+ ),
+
+ /* Function Layer 1 HHKB style
+ * ,-----------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) |BS |
+ * |-----------------------------------------------|
+ * | F1 |F2 |F3 |F4 |F5 |F6 | _ | + | { | } | Pipe |
+ * |-----------------------------------------------|
+ * | F7 |F8 |F9 |F10|F11|F12| : | " |BL±|BL+ |BL-|
+ * |-----------------------------------------------|
+ * | | | | | Left |Down|Up |Rght|
+ * `-----------------------------------------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_COLN, KC_DQT, BL_TOGG, BL_INC, BL_DEC,
+ _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Function Layer 1 HHKB style
+ * ,-----------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |BS |
+ * |-----------------------------------------------|
+ * | F1 |F2 |F3 |F4 |F5 |F6 | - | = | [ | ] | \ |
+ * |-----------------------------------------------|
+ * | F7 |F8 |F9 |F10|F11|F12| ; | ' | | |Del|
+ * |-----------------------------------------------|
+ * | | | | | | | |RGB±|
+ * `-----------------------------------------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCLN, KC_QUOT, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, RGB_TOG
+ ),
+
+ /* Function Layer 1 HHKB style
+ * ,-----------------------------------------------.
+ * | |RST| | | | | | | | | |Del|
+ * |-----------------------------------------------|
+ * | | | |Au1|Au0|AGN|AGS| | | | |
+ * |-----------------------------------------------|
+ * | | | |RTg|RMd|RH+|RH-|RS+|RS-|RV+ |RV-|
+ * |-----------------------------------------------|
+ * |SLP | | | | | | |RTg |
+ * `-----------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______,
+ _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD,
+ KC_SLEP, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/amjkeyboard/amj40/keymaps/vial/readme.md b/keyboards/amjkeyboard/amj40/keymaps/vial/readme.md
new file mode 100644
index 0000000000..2659292ae5
--- /dev/null
+++ b/keyboards/amjkeyboard/amj40/keymaps/vial/readme.md
@@ -0,0 +1,11 @@
+AMJ40 Default Layout
+=====================
+
+##Quantum MK Firmware
+For the full Quantum feature list, see the parent readme.md.
+
+# Features
+* Based on a combination of the original AMJ40 keymap from the TMK firmware as well as the Planck Ortholinear keyboard's "Lower," "Raise," and "Adjust" layers.
+* View the keymap.c file to understand they layout of the keymap.
+* Has keys to toggle both the switch LEDs and underglow LEDs.
+
diff --git a/keyboards/amjkeyboard/amj40/keymaps/vial/rules.mk b/keyboards/amjkeyboard/amj40/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..e3c7b6e47b
--- /dev/null
+++ b/keyboards/amjkeyboard/amj40/keymaps/vial/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+# disable unused QMK features to reduce firmware size
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = no
+# disable unused Vial features to reduce firmware size
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
diff --git a/keyboards/amjkeyboard/amj40/keymaps/vial/vial.json b/keyboards/amjkeyboard/amj40/keymaps/vial/vial.json
new file mode 100644
index 0000000000..9388901d5d
--- /dev/null
+++ b/keyboards/amjkeyboard/amj40/keymaps/vial/vial.json
@@ -0,0 +1,34 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Layout",
+ "Staggered",
+ "Ortholinear"
+ ],
+ [
+ "Bottom Row",
+ "Layout 1",
+ "Layout 2",
+ "Layout 3",
+ "Layout 4",
+ "Ortholinear 2.75u Spacebar",
+ "Ortholinear 6u Spacebar"
+ ]
+ ],
+ "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"],
+ [{"w":1.25},"1,0\n\n\n0,0","1,1\n\n\n0,0","1,2\n\n\n0,0","1,3\n\n\n0,0","1,4\n\n\n0,0","1,5\n\n\n0,0","1,6\n\n\n0,0","1,7\n\n\n0,0","1,8\n\n\n0,0","1,9\n\n\n0,0",{"w":1.75},"1,11\n\n\n0,0",{"x":0.25},"1,0\n\n\n0,1","1,1\n\n\n0,1","1,2\n\n\n0,1","1,3\n\n\n0,1","1,4\n\n\n0,1","1,5\n\n\n0,1","1,6\n\n\n0,1","1,7\n\n\n0,1","1,8\n\n\n0,1","1,9\n\n\n0,1","1,10\n\n\n0,1","1,11\n\n\n0,1"],
+ [{"w":1.75},"2,0\n\n\n0,0","2,2\n\n\n0,0","2,3\n\n\n0,0","2,4\n\n\n0,0","2,5\n\n\n0,0","2,6\n\n\n0,0","2,7\n\n\n0,0","2,8\n\n\n0,0","2,9\n\n\n0,0",{"w":1.25},"2,10\n\n\n0,0","2,11\n\n\n0,0",{"x":0.25},"2,0\n\n\n0,1","2,1\n\n\n0,1","2,2\n\n\n0,1","2,3\n\n\n0,1","2,4\n\n\n0,1","2,5\n\n\n0,1","2,6\n\n\n0,1","2,7\n\n\n0,1","2,8\n\n\n0,1","2,9\n\n\n0,1","2,10\n\n\n0,1","2,11\n\n\n0,1"],
+ [{"w":1.25},"3,0\n\n\n1,0","3,1\n\n\n1,0",{"w":1.25},"3,2\n\n\n1,0",{"w":2.25},"3,4\n\n\n1,0",{"w":2.75},"3,5\n\n\n1,0",{"w":1.25},"3,9\n\n\n1,0","3,10\n\n\n1,0",{"w":1.25},"3,11\n\n\n1,0"],
+ [{"y":0.25,"w":1.25},"3,0\n\n\n1,1","3,1\n\n\n1,1","3,2\n\n\n1,1",{"w":6.25},"3,5\n\n\n1,1",{"w":1.25},"3,10\n\n\n1,1",{"w":1.25},"3,11\n\n\n1,1",{"x":0.25},"3,0\n\n\n1,4","3,1\n\n\n1,4","3,2\n\n\n1,4","3,3\n\n\n1,4","3,4\n\n\n1,4",{"w":2.75},"3,5\n\n\n1,4",{"w":1.25},"3,8\n\n\n1,4","3,9\n\n\n1,4","3,10\n\n\n1,4","3,11\n\n\n1,4"],
+ [{"y":0.25,"w":1.5},"3,0\n\n\n1,2","3,1\n\n\n1,2",{"w":1.5},"3,2\n\n\n1,2",{"w":2.25},"3,5\n\n\n1,2",{"w":2.75},"3,5\n\n\n1,2","3,9\n\n\n1,2","3,10\n\n\n1,2","3,11\n\n\n1,2",{"x":0.25},"3,0\n\n\n1,5","3,1\n\n\n1,5","3,2\n\n\n1,5",{"w":6},"3,5\n\n\n1,5","3,9\n\n\n1,5","3,10\n\n\n1,5","3,11\n\n\n1,5"],
+ [{"y":0.25,"w":1.25},"3,0\n\n\n1,3","3,1\n\n\n1,3",{"w":1.25},"3,2\n\n\n1,3",{"w":6.25},"3,5\n\n\n1,3","3,10\n\n\n1,3",{"w":1.25},"3,11\n\n\n1,3"]
+ ]
+ }
+}
diff --git a/keyboards/ashpil/modelm_usbc/keymaps/vial/config.h b/keyboards/ashpil/modelm_usbc/keymaps/vial/config.h
new file mode 100644
index 0000000000..6ce9be782c
--- /dev/null
+++ b/keyboards/ashpil/modelm_usbc/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x0A, 0x52, 0x03, 0xC4, 0xD6, 0x2F, 0xA3, 0x5D}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 6 }
diff --git a/keyboards/ashpil/modelm_usbc/keymaps/vial/keymap.c b/keyboards/ashpil/modelm_usbc/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..10402ed070
--- /dev/null
+++ b/keyboards/ashpil/modelm_usbc/keymaps/vial/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2019 ashpil
+ *
+ * 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_fullsize_iso_wkl(
+ 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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_BSLS, 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, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_fullsize_iso_wkl(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_fullsize_iso_wkl(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_fullsize_iso_wkl(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ashpil/modelm_usbc/keymaps/vial/rules.mk b/keyboards/ashpil/modelm_usbc/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/ashpil/modelm_usbc/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/ashpil/modelm_usbc/keymaps/vial/vial.json b/keyboards/ashpil/modelm_usbc/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d6a2049554
--- /dev/null
+++ b/keyboards/ashpil/modelm_usbc/keymaps/vial/vial.json
@@ -0,0 +1,239 @@
+{
+ "name": "IBM Model M 101 ANSI/102 ISO",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "matrix": {
+ "rows": 8,
+ "cols": 16
+ },
+ "layouts": {
+ "labels": ["ISO"],
+ "keymap": [
+ [
+ "0,2",
+ {
+ "x": 1
+ },
+ "2,3",
+ "2,4",
+ "1,4",
+ "0,4",
+ {
+ "x": 0.5
+ },
+ "0,6",
+ "0,8",
+ "1,9",
+ "2,9",
+ {
+ "x": 0.5
+ },
+ "2,6",
+ "3,6",
+ "3,11",
+ "3,12",
+ {
+ "x": 0.5
+ },
+ "3,15",
+ "4,15",
+ "6,14"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "2,2",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "2,5",
+ "2,7",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "2,10",
+ "2,8",
+ {
+ "w": 2
+ },
+ "1,6",
+ {
+ "x": 0.5
+ },
+ "2,12",
+ "2,14",
+ "2,13",
+ {
+ "x": 0.5
+ },
+ "6,11",
+ "6,12",
+ "6,13",
+ "7,13"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,2",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "1,5",
+ "1,7",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "1,10",
+ "1,8",
+ {
+ "w": 1.5
+ },
+ "6,10\n\n\n0,0",
+ {
+ "x": 0.5
+ },
+ "2,11",
+ "3,14",
+ "3,13",
+ {
+ "x": 0.5
+ },
+ "4,11",
+ "4,12",
+ "4,13",
+ {
+ "h": 2
+ },
+ "4,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "1,3",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ "0,5",
+ "0,7",
+ "5,7",
+ "5,8",
+ "5,9",
+ "5,10",
+ "0,10",
+ {
+ "w": 2.25
+ },
+ "6,6\n\n\n0,0",
+ {
+ "x": 4
+ },
+ "1,11",
+ "1,12",
+ "1,13"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "1,1\n\n\n0,0",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ "7,5",
+ "7,7",
+ "6,7",
+ "6,8",
+ "6,9",
+ "7,10",
+ {
+ "w": 2.75
+ },
+ "6,1",
+ {
+ "x": 1.5
+ },
+ "0,14",
+ {
+ "x": 1.5
+ },
+ "5,11",
+ "5,12",
+ "5,13",
+ {
+ "h": 2
+ },
+ "5,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "0,15",
+ {
+ "w": 7
+ },
+ "7,6",
+ {
+ "w": 1.5
+ },
+ "7,15",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "6,0",
+ {
+ "x": 0.5
+ },
+ "7,14",
+ "7,11",
+ "7,12",
+ {
+ "x": 0.5,
+ "w": 2
+ },
+ "0,12",
+ "0,13"
+ ],
+ [
+ {
+ "y": 0.75,
+ "x": 13.75,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "6,6\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 12.75
+ },
+ "6,10\n\n\n0,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "1,1\n\n\n0,1",
+ "0,3\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/boardsource/lulu/keymaps/vial/config.h b/keyboards/boardsource/lulu/keymaps/vial/config.h
new file mode 100644
index 0000000000..3ce29e5a53
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAB, 0x22, 0x68, 0x8B, 0x59, 0xD0, 0x81, 0x11}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
+
+#if defined(__AVR_ATmega32U4__)
+ #undef ENABLE_RGB_MATRIX_BAND_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_VAL
+#endif
diff --git a/keyboards/boardsource/lulu/keymaps/vial/keymap.c b/keyboards/boardsource/lulu/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..4a969d4963
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/vial/keymap.c
@@ -0,0 +1,104 @@
+// Copyright 2022 Cole Smith
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _RAISE,
+ _LOWER,
+ _ADJUST
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI
+),
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | _ | + | { | } | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_LOWER] = 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,
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * |MOD | MODR | S+ | S- | B+ | B- | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|RGB_TOG| | ] |------+------+------+------+------+------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+[_RAISE] = LAYOUT(
+ RGB_MOD, RGB_RMOD,RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_GRV, 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, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/boardsource/lulu/keymaps/vial/rules.mk b/keyboards/boardsource/lulu/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..51fa8e5556
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/vial/rules.mk
@@ -0,0 +1,15 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+VIALRGB_ENABLE = yes
+
+ifeq ($(strip $(MCU)), atmega32u4)
+ QMK_SETTINGS = no
+ COMBO_ENABLE = no
+ MOUSEKEY_ENABLE = no
+ TAP_DANCE_ENABLE = no
+ SPACE_CADET_ENABLE = no
+ GRAVE_ESC_ENABLE = no
+ KEY_OVERRIDE_ENABLE = no
+ MAGIC_ENABLE = no
+endif
diff --git a/keyboards/boardsource/lulu/keymaps/vial/vial.json b/keyboards/boardsource/lulu/keymaps/vial/vial.json
new file mode 100644
index 0000000000..1a6f114d24
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/vial/vial.json
@@ -0,0 +1,354 @@
+{
+ "name": "Boardsource Lulu",
+ "vendorId": "0x4273",
+ "productId": "0x7685",
+ "firmwareVersion": 0,
+ "keycodes": [
+ "via/keycodes",
+ "via/qmk_lighting"
+ ],
+ "lighting": "vialrgb",
+ "menus": [
+ "via/keymap",
+ "via/layouts",
+ "via/macros",
+ "via/save_load",
+ "core/qmk_rgblight"
+ ],
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "labels": ["encoders"],
+ "keymap": [
+ {
+ "name": "lulu-via-vial"
+ },
+ [
+ {
+ "x": 6
+ },
+ "4,5\n\n\n0,1",
+ "0,0\n\n\n0,1\n\n\n\n\n\ne",
+ "1,0\n\n\n0,1\n\n\n\n\n\ne",
+ "9,5\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 7
+ },
+ "0,1\n\n\n0,1\n\n\n\n\n\ne",
+ "1,1\n\n\n0,1\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 3
+ },
+ "0,3",
+ {
+ "x": 8
+ },
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "0,2",
+ {
+ "x": 1
+ },
+ "0,4",
+ {
+ "x": 6
+ },
+ "5,4",
+ {
+ "x": 1
+ },
+ "5,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "0,5",
+ {
+ "x": 4
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 1
+ },
+ "0,1",
+ {
+ "x": 12
+ },
+ "5,1"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 14,
+ "c": "#cccccc"
+ },
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ {
+ "x": 8
+ },
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 1
+ },
+ "1,4",
+ {
+ "x": 6
+ },
+ "6,4",
+ {
+ "x": 1
+ },
+ "6,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "1,5",
+ {
+ "x": 4
+ },
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 1
+ },
+ "1,1",
+ {
+ "x": 12
+ },
+ "6,1"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "c": "#aaaaaa"
+ },
+ "1,0",
+ {
+ "x": 14,
+ "c": "#cccccc"
+ },
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "x": 8
+ },
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "2,2",
+ {
+ "x": 1
+ },
+ "2,4",
+ {
+ "x": 6
+ },
+ "7,4",
+ {
+ "x": 1
+ },
+ "7,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "2,5",
+ {
+ "x": 4
+ },
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 1
+ },
+ "2,1",
+ {
+ "x": 12
+ },
+ "7,1"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "c": "#aaaaaa"
+ },
+ "2,0",
+ {
+ "x": 14,
+ "c": "#cccccc"
+ },
+ "7,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6
+ },
+ "4,5\n\n\n0,0",
+ {
+ "x": 2
+ },
+ "9,5\n\n\n0,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "3,3",
+ {
+ "x": 8
+ },
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "3,2",
+ {
+ "x": 1
+ },
+ "3,4",
+ {
+ "x": 6
+ },
+ "8,4",
+ {
+ "x": 1
+ },
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "3,5",
+ {
+ "x": 4
+ },
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 1
+ },
+ "3,1",
+ {
+ "x": 12
+ },
+ "8,1"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "c": "#aaaaaa"
+ },
+ "3,0",
+ {
+ "x": 14
+ },
+ "8,0"
+ ],
+ [
+ {
+ "y": -0.3700000000000001,
+ "x": 2.5
+ },
+ "4,1"
+ ],
+ [
+ {
+ "y": -0.9799999999999995,
+ "x": 3.5
+ },
+ "4,2",
+ {
+ "x": 7
+ },
+ "9,2",
+ "9,1"
+ ],
+ [
+ {
+ "y": -0.9000000000000004,
+ "x": 4.5
+ },
+ "4,3",
+ {
+ "x": 0.5,
+ "c": "#777777",
+ "h": 1.5
+ },
+ "4,4",
+ {
+ "x": 2,
+ "h": 1.5
+ },
+ "9,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "9,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/dm9records/plaid/keymaps/vial/config.h b/keyboards/dm9records/plaid/keymaps/vial/config.h
new file mode 100644
index 0000000000..a45879476d
--- /dev/null
+++ b/keyboards/dm9records/plaid/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x19, 0x4E, 0xD1, 0x59, 0x72, 0x00, 0x2E, 0x42}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 11 }
diff --git a/keyboards/dm9records/plaid/keymaps/vial/keymap.c b/keyboards/dm9records/plaid/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..c0aff7dc89
--- /dev/null
+++ b/keyboards/dm9records/plaid/keymaps/vial/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2019 Takuya Urakawa (dm9records.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 plaid_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER FN_MO13
+#define RAISE FN_MO23
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | RAlt | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_plaid_grid(
+ 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_ESC, 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_ENT ,
+ KC_LCTL, KC_RALT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_plaid_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_plaid_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |Reset | | | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | |MusCyc|Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | |Mus on|Musoff| | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_plaid_grid(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, _______, _______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+bool led_update_user(led_t led_state) {
+ writePin(LED_RED, led_state.caps_lock);
+ writePin(LED_GREEN, led_state.scroll_lock);
+ return false;
+}
diff --git a/keyboards/dm9records/plaid/keymaps/vial/readme.md b/keyboards/dm9records/plaid/keymaps/vial/readme.md
new file mode 100644
index 0000000000..80a89a715d
--- /dev/null
+++ b/keyboards/dm9records/plaid/keymaps/vial/readme.md
@@ -0,0 +1,7 @@
+# Vial keymap for Plaid
+
+This layout is based on the default layout, and includes an adjust layer (4),
+accessible by holding the lower and raise modifiers together.
+
+RED LED : Caps Lock
+GREEN LED : Scroll Lock
diff --git a/keyboards/dm9records/plaid/keymaps/vial/rules.mk b/keyboards/dm9records/plaid/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..46f9f1360f
--- /dev/null
+++ b/keyboards/dm9records/plaid/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/dm9records/plaid/keymaps/vial/vial.json b/keyboards/dm9records/plaid/keymaps/vial/vial.json
new file mode 100644
index 0000000000..e33ee4de72
--- /dev/null
+++ b/keyboards/dm9records/plaid/keymaps/vial/vial.json
@@ -0,0 +1,71 @@
+{
+ "name": "Plaid",
+ "vendorId": "0x16C0",
+ "productId": "0x27DB",
+ "lighting": "none",
+ "matrix": { "rows": 4, "cols": 12 },
+ "layouts": {
+ "labels": [["Bottom Row", "Grid", "MIT"]],
+ "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"
+ ],
+ [
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11"
+ ],
+ [
+ "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",
+ "3,2",
+ "3,3",
+ "3,4",
+ { "c": "#777777" },
+ "3,5\n\n\n0,0",
+ "3,6\n\n\n0,0",
+ { "c": "#cccccc" },
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11"
+ ],
+ [{ "x": 5, "c": "#777777", "w": 2 }, "3,5\n\n\n0,1"]
+ ]
+ }
+}
diff --git a/keyboards/donutcables/budget96/keymaps/vial/config.h b/keyboards/donutcables/budget96/keymaps/vial/config.h
new file mode 100644
index 0000000000..4f99c69ff4
--- /dev/null
+++ b/keyboards/donutcables/budget96/keymaps/vial/config.h
@@ -0,0 +1,14 @@
+/* SPDX-Licanse-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x2F, 0xE9, 0x9C, 0x35, 0xA0, 0x07, 0xEA, 0x2B}
+#define VIAL_UNLOCK_COMBO_ROWS { 0,3 }
+#define VIAL_UNLOCK_COMBO_COLS { 6,2 }
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+#define NO_ACTION_ONESHOT
+#define LAYER_STATE_8BIT
+
+
diff --git a/keyboards/donutcables/budget96/keymaps/vial/keymap.c b/keyboards/donutcables/budget96/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..e9d28a8bc8
--- /dev/null
+++ b/keyboards/donutcables/budget96/keymaps/vial/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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_96_ansi(
+ 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_NUM, KC_INS, KC_HOME, KC_PGUP, KC_PSLS,
+ 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_END, KC_PGDN, KC_PSLS, KC_PAST,
+ 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_PMNS,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_96_ansi(
+ QK_BOOT, EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_96_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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/donutcables/budget96/keymaps/vial/readme.md b/keyboards/donutcables/budget96/keymaps/vial/readme.md
new file mode 100644
index 0000000000..78e8e89b1c
--- /dev/null
+++ b/keyboards/donutcables/budget96/keymaps/vial/readme.md
@@ -0,0 +1 @@
+# Vial-enabled default keymap for budget96
diff --git a/keyboards/donutcables/budget96/keymaps/vial/rules.mk b/keyboards/donutcables/budget96/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6b19afe8a8
--- /dev/null
+++ b/keyboards/donutcables/budget96/keymaps/vial/rules.mk
@@ -0,0 +1,18 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+
+MAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+COMBO_ENABLE = no
+NKRO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+VIRTSER_ENABLE = no
+
+TAP_DANCE_ENABLE = no
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+BACKLIGHT_ENABLE = no
diff --git a/keyboards/donutcables/budget96/keymaps/vial/vial.json b/keyboards/donutcables/budget96/keymaps/vial/vial.json
new file mode 100644
index 0000000000..5c9ec5817b
--- /dev/null
+++ b/keyboards/donutcables/budget96/keymaps/vial/vial.json
@@ -0,0 +1,317 @@
+{
+ "lighting": "none",
+ "matrix":{
+ "rows":8,
+ "cols":15
+ },
+ "layouts":{
+ "labels":[
+ "Split Backspace",
+ "ISO Enter",
+ "Split LShift",
+ "Split RShift",
+ [
+ "Bottom Row",
+ "Default",
+ "All"
+ ],
+ "Split Numpad +",
+ "Split Numpad Enter",
+ "Split Numpad 0"
+ ],
+ "keymap":[
+
+ [
+ {
+ "x": 2.5
+ },
+ "5,0",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ "6,0",
+ "6,10",
+ "7,10",
+ "7,0",
+ "5,11",
+ "5,12",
+ "5,13",
+ "5,14",
+ "1,13",
+ "2,14",
+ "0,13",
+ "7,6",
+ "7,8",
+ "7,9"
+ ],
+ [
+ {
+ "x": 2.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "6,1",
+ "6,11",
+ "7,11",
+ "7,1",
+ "4,10",
+ "4,11",
+ "4,12",
+ {
+ "c": "#00773a",
+ "w": 2
+ },
+ "4,13\n\n\n0,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ {
+ "x": 2.25,
+ "c": "#00773a"
+ },
+ "4,13\n\n\n0,1",
+ "4,14\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#cccccc",
+ "w": 1.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "6,2",
+ "6,12",
+ "7,12",
+ "7,2",
+ "3,10",
+ "3,11",
+ "3,12",
+ {
+ "c": "#5d437e",
+ "w": 1.5
+ },
+ "3,13\n\n\n1,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,6",
+ "3,7",
+ "3,8",
+ {
+ "c": "#00589f",
+ "h": 2
+ },
+ "3,9\n\n\n5,0",
+ {
+ "x": 0.25
+ },
+ "3,9\n\n\n5,1",
+ {
+ "x": 1.75,
+ "c": "#5d437e",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#67635b",
+ "w": 1.25,
+ "w2": 1.75,
+ "l": true
+ },
+ "2,0",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "6,3",
+ "6,13",
+ "7,13",
+ "7,3",
+ "2,10",
+ "2,11",
+ {
+ "c": "#5d437e",
+ "w": 2.25
+ },
+ "2,12\n\n\n1,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,6",
+ "2,7",
+ "2,8",
+ {
+ "x": 1.25,
+ "c": "#00589f"
+ },
+ "2,9\n\n\n5,1",
+ {
+ "x": 0.75,
+ "c": "#5d437e"
+ },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#cb3d6e",
+ "w": 1.25
+ },
+ "1,0\n\n\n2,1",
+ "0,3\n\n\n2,1",
+ {
+ "x": 0.25,
+ "w": 2.25
+ },
+ "1,0\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "6,4",
+ "6,14",
+ "7,14",
+ "7,4",
+ "1,10",
+ {
+ "c": "#8d242f",
+ "w": 1.75
+ },
+ "1,11\n\n\n3,0",
+ "6,8\n\n\n3,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,6",
+ "1,7",
+ "1,8",
+ {
+ "c": "#00589f",
+ "h": 2
+ },
+ "1,9\n\n\n6,0",
+ {
+ "x": 0.25
+ },
+ "1,9\n\n\n6,1",
+ {
+ "x": 0.25,
+ "c": "#8d242f",
+ "w": 2.75
+ },
+ "1,11\n\n\n3,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#ee6d00",
+ "w": 1.25
+ },
+ "0,0\n\n\n4,0",
+ {
+ "w": 1.25
+ },
+ "0,1\n\n\n4,0",
+ {
+ "w": 1.25
+ },
+ "0,2\n\n\n4,0",
+ {
+ "c": "#dd1126",
+ "w": 6.25
+ },
+ "6,5\n\n\n4,0",
+ {
+ "c": "#f8c200",
+ "w": 1.5
+ },
+ "7,5\n\n\n4,0",
+ {
+ "w": 1.5
+ },
+ "0,11\n\n\n4,0",
+ "6,6\n\n\n4,0",
+ "6,7\n\n\n4,0",
+ {
+ "c": "#00589f"
+ },
+ "6,9\n\n\n7,0",
+ "0,6\n\n\n7,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,8",
+ {
+ "x": 1.25,
+ "c": "#00589f"
+ },
+ "0,9\n\n\n6,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.5,
+ "c": "#ee6d00",
+ "w": 1.25
+ },
+ "0,0\n\n\n4,1",
+ {
+ "w": 1.25
+ },
+ "0,1\n\n\n4,1",
+ {
+ "w": 1.25
+ },
+ "0,2\n\n\n4,1",
+ {
+ "c": "#dd1126",
+ "w": 6.25
+ },
+ "6,5\n\n\n4,1",
+ {
+ "c": "#f8c200"
+ },
+ "7,5\n\n\n4,1",
+ "0,10\n\n\n4,1",
+ "0,11\n\n\n4,1",
+ "6,6\n\n\n4,1",
+ "6,7\n\n\n4,1",
+ {
+ "c": "#00589f",
+ "w": 2
+ },
+ "0,6\n\n\n7,1"
+ ]
+]
+
+ }
+}
\ No newline at end of file
diff --git a/keyboards/fc660c/keymaps/vial/config.h b/keyboards/fc660c/keymaps/vial/config.h
index 00131ba0e2..f997e418ee 100644
--- a/keyboards/fc660c/keymaps/vial/config.h
+++ b/keyboards/fc660c/keymaps/vial/config.h
@@ -4,4 +4,5 @@
#define VIAL_KEYBOARD_UID {0x86, 0xDA, 0x85, 0x0E, 0x54, 0x70, 0xA0, 0xA2}
#define VIAL_UNLOCK_COMBO_ROWS { 1, 4 }
-#define VIAL_UNLOCK_COMBO_COLS { 3, 14 }
\ No newline at end of file
+#define VIAL_UNLOCK_COMBO_COLS { 3, 14 }
+#define VIAL_TAP_DANCE_ENTRIES 4
diff --git a/keyboards/fc660c/keymaps/vial/rules.mk b/keyboards/fc660c/keymaps/vial/rules.mk
index 79f95e7425..11b616c0c5 100644
--- a/keyboards/fc660c/keymaps/vial/rules.mk
+++ b/keyboards/fc660c/keymaps/vial/rules.mk
@@ -1,5 +1,7 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes
-QMK_SETTINGS = no
-TAP_DANCE_ENABLE = no
\ No newline at end of file
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+CONSOLE_ENABLE = no
+EXTRALDFLAGS = -Wl,--relax
diff --git a/keyboards/fc980c/keymaps/vial/config.h b/keyboards/fc980c/keymaps/vial/config.h
new file mode 100644
index 0000000000..048729e65f
--- /dev/null
+++ b/keyboards/fc980c/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x3F, 0x7E, 0x77, 0x9B, 0x2F, 0x52, 0x81, 0xF9}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 13, 3 }
\ No newline at end of file
diff --git a/keyboards/fc980c/keymaps/vial/keymap.c b/keyboards/fc980c/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..88762c7a86
--- /dev/null
+++ b/keyboards/fc980c/keymaps/vial/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2017 Balz Guenat
+
+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_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_DEL, KC_INS, KC_PGUP, KC_PGDN,
+ 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_NUM, 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_PPLS,
+ 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_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_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_APP, _______, KC_HOME, KC_PGDN, KC_END, _______, _______),
+};
+
+bool matrix_is_on(uint8_t row, uint8_t col)
+{
+ return (matrix_get_row(row) & (1<.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | GUI | Alt |Lower | Backspace | Space |Raise | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_gk6_2x2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
+ 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_ESC, 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_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |RGB_TG|RGB_M |RGB_HU|RGB_SI|RGB_VI|RGB_SP| | | | | | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Debug | | | | | | | | |R Alt |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_gk6_2x2u(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_PIPE, KC_BSLS,
+ DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | PSCR | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | End | Ins | Play | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | << | >> | Mute | Vol- | Vol+ | | | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | PgDn | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_gk6_2x2u(
+ 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_CAPS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_HOME, KC_END, KC_INS, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
+),
+
+};
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void)
+{
+ rgb_matrix_set_color(24, 0, 0, 0);
+ rgb_matrix_set_color(30, 0, 0, 0);
+ rgb_matrix_set_color(35, 0, 0, 0);
+ rgb_matrix_set_color(36, 0, 0, 0);
+ rgb_matrix_set_color(41, 0, 0, 0);
+}
+#endif
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/vial/rules.mk b/keyboards/gizmo_engineering/gk6/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..a4ef3930cb
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/vial/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+# reduce size
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
+
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/vial/vial.json b/keyboards/gizmo_engineering/gk6/keymaps/vial/vial.json
new file mode 100644
index 0000000000..f274cd4ced
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/vial/vial.json
@@ -0,0 +1,177 @@
+{
+ "name": "Gizmo Engineering GK6",
+ "vendorId": "0x6532",
+ "productId": "0x0001",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [["Bottom Row", "Default", "1x2U", "5x12 1U"]],
+ "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"
+ ],
+ [
+ {
+ "c": "#777777"
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ {
+ "c": "#777777"
+ },
+ "1,11"
+ ],
+ [
+ {
+ "c": "#aaaaaa"
+ },
+ "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": "#aaaaaa"
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ {
+ "c": "#777777"
+ },
+ "3,10",
+ "3,11"
+ ],
+ [
+ "4,0\n\n\n0,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,1\n\n\n0,0",
+ "4,2\n\n\n0,0",
+ "4,3\n\n\n0,0",
+ {
+ "c": "#777777",
+ "w": 2
+ },
+ "4,4\n\n\n0,0",
+ {
+ "w": 2
+ },
+ "4,7\n\n\n0,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,8\n\n\n0,0",
+ {
+ "c": "#777777"
+ },
+ "4,9\n\n\n0,0",
+ "4,10\n\n\n0,0",
+ "4,11\n\n\n0,0"
+ ],
+ [
+ "4,0\n\n\n0,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,1\n\n\n0,1",
+ "4,2\n\n\n0,1",
+ "4,3\n\n\n0,1",
+ {
+ "c": "#777777"
+ },
+ "4,4\n\n\n0,1",
+ {
+ "w": 2
+ },
+ "4,5\n\n\n0,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,7\n\n\n0,1",
+ "4,8\n\n\n0,1",
+ {
+ "c": "#777777"
+ },
+ "4,9\n\n\n0,1",
+ "4,10\n\n\n0,1",
+ "4,11\n\n\n0,1"
+ ],
+ [
+ "4,0\n\n\n0,2",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,1\n\n\n0,2",
+ "4,2\n\n\n0,2",
+ "4,3\n\n\n0,2",
+ {
+ "c": "#777777"
+ },
+ "4,4\n\n\n0,2",
+ "4,5\n\n\n0,2",
+ "4,6\n\n\n0,2",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,7\n\n\n0,2",
+ "4,8\n\n\n0,2",
+ {
+ "c": "#777777"
+ },
+ "4,9\n\n\n0,2",
+ "4,10\n\n\n0,2",
+ "4,11\n\n\n0,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/handwired/prkl30/keymaps/vial/config.h b/keyboards/handwired/prkl30/keymaps/vial/config.h
index 506c1725be..d484c59291 100644
--- a/keyboards/handwired/prkl30/keymaps/vial/config.h
+++ b/keyboards/handwired/prkl30/keymaps/vial/config.h
@@ -6,4 +6,4 @@
#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
-#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
\ No newline at end of file
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
diff --git a/keyboards/handwired/prkl30/keymaps/vial/rules.mk b/keyboards/handwired/prkl30/keymaps/vial/rules.mk
index 4e13a6c067..c852abf313 100644
--- a/keyboards/handwired/prkl30/keymaps/vial/rules.mk
+++ b/keyboards/handwired/prkl30/keymaps/vial/rules.mk
@@ -4,4 +4,10 @@ LTO_ENABLE = yes
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes
EXTRAKEY_ENABLE = yes
-QMK_SETTINGS = no
\ No newline at end of file
+
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+
+ifeq ($(strip $(MCU)), atmega32u4)
+ QMK_SETTINGS = no
+endif
diff --git a/keyboards/handwired/prkl30/keymaps/vial/vial.json b/keyboards/handwired/prkl30/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d3e7048f47
--- /dev/null
+++ b/keyboards/handwired/prkl30/keymaps/vial/vial.json
@@ -0,0 +1,20 @@
+{
+ "name": "PRKL30",
+ "vendorId": "0xE0E0",
+ "productId": "0x0030",
+ "lighting": "qmk_rgblight",
+ "matrix": {"rows": 4, "cols": 10},
+ "layouts": {
+ "labels": [
+ "Encoder",
+ "Split space"
+ ],
+ "keymap": [
+ ["0,0\n\n\n0,1\n\n\n\n\n\ne","0,1\n\n\n0,1\n\n\n\n\n\ne",{"d":true},"\n\n\n0,0\n\n\n\n\n\n",{"d":true},"\n\n\n0,0\n\n\n\n\n\n"],
+ [{"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","3,0","3,1",{"w":1.5},"3,2"],
+ [{"x":2.5},"1,0","1,1","1,2","1,3","1,4","1,5","1,6","1,7","1,8","1,9","3,3","3,4",{"x":0.25,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"3,5"],
+ [{"x":2.5},"2,0","2,1","2,2","2,3","2,4",{"w":2},"2,5\n\n\n1,0","2,7","2,8","2,9","3,6",{"w":1.25},"3,7"],
+ [{"y":0.25,"x":7.5},"2,5\n\n\n1,1","2,6\n\n\n1,1"]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/steamvan/keymaps/vial/config.h b/keyboards/handwired/steamvan/keymaps/vial/config.h
new file mode 100644
index 0000000000..2ae2574576
--- /dev/null
+++ b/keyboards/handwired/steamvan/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x7B, 0x61, 0xAC, 0x64, 0xC9, 0x02, 0x6D, 0x1A}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 11 }
diff --git a/keyboards/handwired/steamvan/keymaps/vial/keymap.c b/keyboards/handwired/steamvan/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..e612a7a6f5
--- /dev/null
+++ b/keyboards/handwired/steamvan/keymaps/vial/keymap.c
@@ -0,0 +1,60 @@
+/* Copyright 2019 John M Daly
+ *
+ * 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
+
+// This file is based on the default keymap of the MiniVan.
+
+enum layer_names {
+ _QW,
+ _L1,
+ _L2,
+ _L3,
+};
+
+// Curly braces have their own keys. These are defined to make them not mess up
+// the grid in layer 2.
+#define L_CURBR LSFT(KC_LBRC)
+#define R_CURBR LSFT(KC_RBRC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = LAYOUT_standard( /* QWERTY */
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MO(_L1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(_L2),
+ KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, KC_SPC, KC_RALT, KC_ESC, TG(_L3)
+ ),
+
+ [_L1] = LAYOUT_standard( /* LAYER 1 */
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______,
+ _______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT,
+ _______, KC_LGUI, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_L2] = LAYOUT_standard( /* LAYER 2 */
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_ESC, KC_PIPE, KC_DQUO, KC_UNDS, KC_PLUS, L_CURBR, R_CURBR, KC_4, KC_5, KC_6, KC_VOLU, KC_ENT,
+ _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_L3] = LAYOUT_standard( /* LAYER 3 */
+ _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______,
+ KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______,
+ KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/steamvan/keymaps/vial/readme.md b/keyboards/handwired/steamvan/keymaps/vial/readme.md
new file mode 100644
index 0000000000..9bb3f35c29
--- /dev/null
+++ b/keyboards/handwired/steamvan/keymaps/vial/readme.md
@@ -0,0 +1,2 @@
+# SteamVan rev1 Vial
+Based on the default SteamVan layout
diff --git a/keyboards/handwired/steamvan/keymaps/vial/rules.mk b/keyboards/handwired/steamvan/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/handwired/steamvan/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/handwired/steamvan/keymaps/vial/vial.json b/keyboards/handwired/steamvan/keymaps/vial/vial.json
new file mode 100644
index 0000000000..87eee470d7
--- /dev/null
+++ b/keyboards/handwired/steamvan/keymaps/vial/vial.json
@@ -0,0 +1,153 @@
+{
+ "name": "SteamVan",
+ "vendorId": "0xFEED",
+ "productId": "0x0001",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ "Arrows",
+ "Command"
+ ],
+ "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",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "0,11"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,11"
+ ],
+ [
+ {
+ "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\n\n\n0,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "2,11"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "3,0\n\n\n1,0",
+ {
+ "w": 1.5
+ },
+ "3,1\n\n\n1,0",
+ {
+ "w": 1.25
+ },
+ "3,3\n\n\n1,0",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,4",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "3,6",
+ {
+ "w": 1.25
+ },
+ "3,8\n\n\n0,0",
+ {
+ "w": 1.5
+ },
+ "3,9\n\n\n0,0",
+ {
+ "w": 1.75
+ },
+ "3,11\n\n\n0,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75,
+ "c": "#777777"
+ },
+ "2,10\n\n\n0,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa"
+ },
+ "3,0\n\n\n1,1",
+ "3,1\n\n\n1,1",
+ "3,2\n\n\n1,1",
+ "3,3\n\n\n1,1",
+ {
+ "x": 4.25,
+ "w": 1.5
+ },
+ "3,8\n\n\n0,1",
+ {
+ "c": "#777777"
+ },
+ "3,9\n\n\n0,1",
+ "3,10\n\n\n0,1",
+ "3,11\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/horizon/keymaps/vial/config.h b/keyboards/horizon/keymaps/vial/config.h
new file mode 100644
index 0000000000..3cbf8c719e
--- /dev/null
+++ b/keyboards/horizon/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x56, 0x0E, 0x81, 0x4F, 0x0A, 0x75, 0xE8, 0xDD}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/horizon/keymaps/vial/keymap.c b/keyboards/horizon/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..bdb03bd081
--- /dev/null
+++ b/keyboards/horizon/keymaps/vial/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2021 Steven Karrmann
+ *
+ * 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 {
+ _BASE,
+ _SYMBOL,
+ _FUNCTION
+};
+
+#define MO_SYMB MO(_SYMBOL)
+#define MO_FUNC MO(_FUNCTION)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
+ KC_EQL , 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_ESC , KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_APP , KC_DEL , KC_TAB , MO_SYMB, MO_FUNC, KC_SPC , KC_BSPC, KC_APP , KC_RGUI, KC_RALT, KC_RCTL
+ ),
+ [_SYMBOL] = LAYOUT(
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_UNDS,
+ KC_PLUS, KC_EXLM, KC_LPRN, KC_RPRN, KC_DLR , KC_AMPR, KC_PIPE, KC_HASH, KC_LCBR, KC_RCBR, KC_COLN, KC_DQUO,
+ _______, KC_AT , KC_LBRC, KC_RBRC, KC_BSLS, KC_PERC, _______, _______, KC_CIRC, KC_ASTR, KC_LABK, KC_RABK, KC_QUES, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FUNCTION] = LAYOUT(
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_PSCR, KC_SCRL, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______,
+ _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_INS , KC_CAPS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______,
+ _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
\ No newline at end of file
diff --git a/keyboards/horizon/keymaps/vial/rules.mk b/keyboards/horizon/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..2da603f8f6
--- /dev/null
+++ b/keyboards/horizon/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+NKRO_ENABLE = yes
+CONSOLE_ENABLE = no
diff --git a/keyboards/horizon/keymaps/vial/vial.json b/keyboards/horizon/keymaps/vial/vial.json
new file mode 100644
index 0000000000..f456cc90ba
--- /dev/null
+++ b/keyboards/horizon/keymaps/vial/vial.json
@@ -0,0 +1,15 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 4,
+ "cols": 14
+ },
+ "layouts": {
+ "keymap": [
+ ["0,0","0,1","0,2","0,3","0,4","0,5",{"x":2},"0,8","0,9","0,10","0,11","0,12","0,13"],
+ ["1,0","1,1","1,2","1,3","1,4","1,5",{"x":2},"1,8","1,9","1,10","1,11","1,12","1,13"],
+ ["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","2,13"],
+ ["3,0","3,1","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9","3,10","3,11","3,12","3,13"]
+ ]
+ }
+}
diff --git a/keyboards/ibm/modelh/chconf.h b/keyboards/ibm/modelh/chconf.h
new file mode 100644
index 0000000000..413fb8d69c
--- /dev/null
+++ b/keyboards/ibm/modelh/chconf.h
@@ -0,0 +1,31 @@
+/* Copyright 2020 QMK
+ *
+ * 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 CH_CFG_ST_TIMEDELTA 0
+#define CH_CFG_USE_TM TRUE
+#define CH_CFG_USE_REGISTRY TRUE
+#define CH_CFG_USE_WAITEXIT TRUE
+#define CH_CFG_USE_CONDVARS TRUE
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+#define CH_CFG_USE_MESSAGES TRUE
+#define CH_CFG_USE_MAILBOXES TRUE
+#define CH_CFG_USE_HEAP TRUE
+#define CH_CFG_USE_OBJ_CACHES TRUE
+#define CH_CFG_USE_DELEGATES TRUE
+
+#include_next
diff --git a/keyboards/ibm/modelh/config.h b/keyboards/ibm/modelh/config.h
new file mode 100644
index 0000000000..ac95ccfe66
--- /dev/null
+++ b/keyboards/ibm/modelh/config.h
@@ -0,0 +1,45 @@
+/*
+Copyright 2020 John Hawthorn
+
+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
+
+
+/* Model H customizations */
+
+#define MODELH_STATUS_LED C13
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
diff --git a/keyboards/keychron/q0/q0.h b/keyboards/ibm/modelh/halconf.h
similarity index 81%
rename from keyboards/keychron/q0/q0.h
rename to keyboards/ibm/modelh/halconf.h
index 6eaa41e87c..8e3ad48ffc 100644
--- a/keyboards/keychron/q0/q0.h
+++ b/keyboards/ibm/modelh/halconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2020 QMK
*
* 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
@@ -16,8 +16,8 @@
#pragma once
-#include "quantum.h"
-#if defined(KEYBOARD_keychron_q0_rev_0130)
-# include "rev_0130.h"
-#endif
+#define HAL_USE_PWM TRUE
+#define SERIAL_BUFFERS_SIZE 16
+
+#include_next
diff --git a/keyboards/ibm/modelh/info.json b/keyboards/ibm/modelh/info.json
new file mode 100644
index 0000000000..cceb12a31c
--- /dev/null
+++ b/keyboards/ibm/modelh/info.json
@@ -0,0 +1,283 @@
+{
+ "manufacturer": "IBM",
+ "keyboard_name": "Model M",
+ "maintainer": "jhawthorn",
+ "bootloader": "stm32duino",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": false,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": false,
+ "sleep_led": false
+ },
+ "indicators": {
+ "caps_lock": "B8",
+ "num_lock": "B7",
+ "scroll_lock": "B9",
+ "on_state": 0
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B1", "B0", "A7", "A6", "A5", "A4", "A3"],
+ "rows": ["B6", "B5", "B4", "A15", "B3", "A0", "A2", "A1"]
+ },
+ "processor": "STM32F103",
+ "url": "modelh.club",
+ "usb": {
+ "device_version": "1.0.0",
+ "max_power": 100,
+ "pid": "0xB155",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_fullsize_ansi_wkl": {
+ "layout": [
+ {"matrix": [0, 2], "x": 0, "y": 0},
+
+ {"matrix": [2, 3], "x": 2, "y": 0},
+ {"matrix": [2, 4], "x": 3, "y": 0},
+ {"matrix": [1, 4], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+
+ {"matrix": [0, 6], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [1, 9], "x": 8.5, "y": 0},
+ {"matrix": [2, 9], "x": 9.5, "y": 0},
+
+ {"matrix": [2, 6], "x": 11, "y": 0},
+ {"matrix": [3, 6], "x": 12, "y": 0},
+ {"matrix": [3, 11], "x": 13, "y": 0},
+ {"matrix": [3, 12], "x": 14, "y": 0},
+
+ {"matrix": [3, 15], "x": 15.25, "y": 0},
+ {"matrix": [4, 15], "x": 16.25, "y": 0},
+ {"matrix": [6, 14], "x": 17.25, "y": 0},
+
+ {"matrix": [2, 2], "x": 0, "y": 1.5},
+ {"matrix": [3, 2], "x": 1, "y": 1.5},
+ {"matrix": [3, 3], "x": 2, "y": 1.5},
+ {"matrix": [3, 4], "x": 3, "y": 1.5},
+ {"matrix": [3, 5], "x": 4, "y": 1.5},
+ {"matrix": [2, 5], "x": 5, "y": 1.5},
+ {"matrix": [2, 7], "x": 6, "y": 1.5},
+ {"matrix": [3, 7], "x": 7, "y": 1.5},
+ {"matrix": [3, 8], "x": 8, "y": 1.5},
+ {"matrix": [3, 9], "x": 9, "y": 1.5},
+ {"matrix": [3, 10], "x": 10, "y": 1.5},
+ {"matrix": [2, 10], "x": 11, "y": 1.5},
+ {"matrix": [2, 8], "x": 12, "y": 1.5},
+ {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2},
+
+ {"matrix": [2, 12], "x": 15.25, "y": 1.5},
+ {"matrix": [2, 14], "x": 16.25, "y": 1.5},
+ {"matrix": [2, 13], "x": 17.25, "y": 1.5},
+
+ {"matrix": [6, 11], "x": 18.5, "y": 1.5},
+ {"matrix": [6, 12], "x": 19.5, "y": 1.5},
+ {"matrix": [6, 13], "x": 20.5, "y": 1.5},
+ {"matrix": [7, 13], "x": 21.5, "y": 1.5},
+
+ {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [4, 2], "x": 1.5, "y": 2.5},
+ {"matrix": [4, 3], "x": 2.5, "y": 2.5},
+ {"matrix": [4, 4], "x": 3.5, "y": 2.5},
+ {"matrix": [4, 5], "x": 4.5, "y": 2.5},
+ {"matrix": [1, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [1, 7], "x": 6.5, "y": 2.5},
+ {"matrix": [4, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [4, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [4, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [4, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [1, 10], "x": 11.5, "y": 2.5},
+ {"matrix": [1, 8], "x": 12.5, "y": 2.5},
+ {"matrix": [5, 6], "x": 13.5, "y": 2.5, "w": 1.5},
+
+ {"matrix": [2, 11], "x": 15.25, "y": 2.5},
+ {"matrix": [3, 14], "x": 16.25, "y": 2.5},
+ {"matrix": [3, 13], "x": 17.25, "y": 2.5},
+
+ {"matrix": [4, 11], "x": 18.5, "y": 2.5},
+ {"matrix": [4, 12], "x": 19.5, "y": 2.5},
+ {"matrix": [4, 13], "x": 20.5, "y": 2.5},
+ {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2},
+
+ {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5},
+ {"matrix": [5, 2], "x": 1.75, "y": 3.5},
+ {"matrix": [5, 3], "x": 2.75, "y": 3.5},
+ {"matrix": [5, 4], "x": 3.75, "y": 3.5},
+ {"matrix": [5, 5], "x": 4.75, "y": 3.5},
+ {"matrix": [0, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [0, 7], "x": 6.75, "y": 3.5},
+ {"matrix": [5, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [5, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [5, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [5, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [0, 10], "x": 11.75, "y": 3.5},
+ {"matrix": [6, 6], "x": 12.75, "y": 3.5, "w": 2.25},
+
+ {"matrix": [1, 11], "x": 18.5, "y": 3.5},
+ {"matrix": [1, 12], "x": 19.5, "y": 3.5},
+ {"matrix": [1, 13], "x": 20.5, "y": 3.5},
+
+ {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 2.25},
+ {"matrix": [6, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [6, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [6, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [6, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [7, 5], "x": 6.25, "y": 4.5},
+ {"matrix": [7, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [6, 7], "x": 8.25, "y": 4.5},
+ {"matrix": [6, 8], "x": 9.25, "y": 4.5},
+ {"matrix": [6, 9], "x": 10.25, "y": 4.5},
+ {"matrix": [7, 10], "x": 11.25, "y": 4.5},
+ {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"matrix": [0, 14], "x": 16.25, "y": 4.5},
+
+ {"matrix": [5, 11], "x": 18.5, "y": 4.5},
+ {"matrix": [5, 12], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 13], "x": 20.5, "y": 4.5},
+ {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2},
+
+ {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7},
+ {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5},
+ {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5},
+
+ {"matrix": [7, 14], "x": 15.25, "y": 5.5},
+ {"matrix": [7, 11], "x": 16.25, "y": 5.5},
+ {"matrix": [7, 12], "x": 17.25, "y": 5.5},
+
+ {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2},
+ {"matrix": [0, 13], "x": 20.5, "y": 5.5}
+ ]
+ },
+ "LAYOUT_fullsize_iso_wkl": {
+ "layout": [
+ {"matrix": [0, 2], "x": 0, "y": 0},
+
+ {"matrix": [2, 3], "x": 2, "y": 0},
+ {"matrix": [2, 4], "x": 3, "y": 0},
+ {"matrix": [1, 4], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+
+ {"matrix": [0, 6], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [1, 9], "x": 8.5, "y": 0},
+ {"matrix": [2, 9], "x": 9.5, "y": 0},
+
+ {"matrix": [2, 6], "x": 11, "y": 0},
+ {"matrix": [3, 6], "x": 12, "y": 0},
+ {"matrix": [3, 11], "x": 13, "y": 0},
+ {"matrix": [3, 12], "x": 14, "y": 0},
+
+ {"matrix": [3, 15], "x": 15.25, "y": 0},
+ {"matrix": [4, 15], "x": 16.25, "y": 0},
+ {"matrix": [6, 14], "x": 17.25, "y": 0},
+
+ {"matrix": [2, 2], "x": 0, "y": 1.5},
+ {"matrix": [3, 2], "x": 1, "y": 1.5},
+ {"matrix": [3, 3], "x": 2, "y": 1.5},
+ {"matrix": [3, 4], "x": 3, "y": 1.5},
+ {"matrix": [3, 5], "x": 4, "y": 1.5},
+ {"matrix": [2, 5], "x": 5, "y": 1.5},
+ {"matrix": [2, 7], "x": 6, "y": 1.5},
+ {"matrix": [3, 7], "x": 7, "y": 1.5},
+ {"matrix": [3, 8], "x": 8, "y": 1.5},
+ {"matrix": [3, 9], "x": 9, "y": 1.5},
+ {"matrix": [3, 10], "x": 10, "y": 1.5},
+ {"matrix": [2, 10], "x": 11, "y": 1.5},
+ {"matrix": [2, 8], "x": 12, "y": 1.5},
+ {"matrix": [1, 6], "x": 13, "y": 1.5, "w": 2},
+
+ {"matrix": [2, 12], "x": 15.25, "y": 1.5},
+ {"matrix": [2, 14], "x": 16.25, "y": 1.5},
+ {"matrix": [2, 13], "x": 17.25, "y": 1.5},
+
+ {"matrix": [6, 11], "x": 18.5, "y": 1.5},
+ {"matrix": [6, 12], "x": 19.5, "y": 1.5},
+ {"matrix": [6, 13], "x": 20.5, "y": 1.5},
+ {"matrix": [7, 13], "x": 21.5, "y": 1.5},
+
+ {"matrix": [1, 2], "x": 0, "y": 2.5, "w": 1.5},
+ {"matrix": [4, 2], "x": 1.5, "y": 2.5},
+ {"matrix": [4, 3], "x": 2.5, "y": 2.5},
+ {"matrix": [4, 4], "x": 3.5, "y": 2.5},
+ {"matrix": [4, 5], "x": 4.5, "y": 2.5},
+ {"matrix": [1, 5], "x": 5.5, "y": 2.5},
+ {"matrix": [1, 7], "x": 6.5, "y": 2.5},
+ {"matrix": [4, 7], "x": 7.5, "y": 2.5},
+ {"matrix": [4, 8], "x": 8.5, "y": 2.5},
+ {"matrix": [4, 9], "x": 9.5, "y": 2.5},
+ {"matrix": [4, 10], "x": 10.5, "y": 2.5},
+ {"matrix": [1, 10], "x": 11.5, "y": 2.5},
+ {"matrix": [1, 8], "x": 12.5, "y": 2.5},
+
+ {"matrix": [2, 11], "x": 15.25, "y": 2.5},
+ {"matrix": [3, 14], "x": 16.25, "y": 2.5},
+ {"matrix": [3, 13], "x": 17.25, "y": 2.5},
+
+ {"matrix": [4, 11], "x": 18.5, "y": 2.5},
+ {"matrix": [4, 12], "x": 19.5, "y": 2.5},
+ {"matrix": [4, 13], "x": 20.5, "y": 2.5},
+ {"matrix": [4, 14], "x": 21.5, "y": 2.5, "h": 2},
+
+ {"matrix": [1, 3], "x": 0, "y": 3.5, "w": 1.5},
+ {"matrix": [5, 2], "x": 1.75, "y": 3.5},
+ {"matrix": [5, 3], "x": 2.75, "y": 3.5},
+ {"matrix": [5, 4], "x": 3.75, "y": 3.5},
+ {"matrix": [5, 5], "x": 4.75, "y": 3.5},
+ {"matrix": [0, 5], "x": 5.75, "y": 3.5},
+ {"matrix": [0, 7], "x": 6.75, "y": 3.5},
+ {"matrix": [5, 7], "x": 7.75, "y": 3.5},
+ {"matrix": [5, 8], "x": 8.75, "y": 3.5},
+ {"matrix": [5, 9], "x": 9.75, "y": 3.5},
+ {"matrix": [5, 10], "x": 10.75, "y": 3.5},
+ {"matrix": [0, 10], "x": 11.75, "y": 3.5},
+ {"matrix": [6, 10], "x": 12.75, "y": 3.5},
+ {"matrix": [6, 6], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
+
+ {"matrix": [1, 11], "x": 18.5, "y": 3.5},
+ {"matrix": [1, 12], "x": 19.5, "y": 3.5},
+ {"matrix": [1, 13], "x": 20.5, "y": 3.5},
+
+ {"matrix": [1, 1], "x": 0, "y": 4.5, "w": 1.25},
+ {"matrix": [0, 3], "x": 1.25, "y": 4.5},
+ {"matrix": [6, 2], "x": 2.25, "y": 4.5},
+ {"matrix": [6, 3], "x": 3.25, "y": 4.5},
+ {"matrix": [6, 4], "x": 4.25, "y": 4.5},
+ {"matrix": [6, 5], "x": 5.25, "y": 4.5},
+ {"matrix": [7, 5], "x": 6.25, "y": 4.5},
+ {"matrix": [7, 7], "x": 7.25, "y": 4.5},
+ {"matrix": [6, 7], "x": 8.25, "y": 4.5},
+ {"matrix": [6, 8], "x": 9.25, "y": 4.5},
+ {"matrix": [6, 9], "x": 10.25, "y": 4.5},
+ {"matrix": [7, 10], "x": 11.25, "y": 4.5},
+ {"matrix": [6, 1], "x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"matrix": [0, 14], "x": 16.25, "y": 4.5},
+
+ {"matrix": [5, 11], "x": 18.5, "y": 4.5},
+ {"matrix": [5, 12], "x": 19.5, "y": 4.5},
+ {"matrix": [5, 13], "x": 20.5, "y": 4.5},
+ {"matrix": [5, 14], "x": 21.5, "y": 4.5, "h": 2},
+
+ {"matrix": [2, 0], "x": 0, "y": 5.5, "w": 1.5},
+ {"matrix": [0, 15], "x": 2.5, "y": 5.5, "w": 1.5},
+ {"matrix": [7, 6], "x": 4, "y": 5.5, "w": 7},
+ {"matrix": [7, 15], "x": 11, "y": 5.5, "w": 1.5},
+ {"matrix": [6, 0], "x": 13.5, "y": 5.5, "w": 1.5},
+
+ {"matrix": [7, 14], "x": 15.25, "y": 5.5},
+ {"matrix": [7, 11], "x": 16.25, "y": 5.5},
+ {"matrix": [7, 12], "x": 17.25, "y": 5.5},
+
+ {"matrix": [0, 12], "x": 18.5, "y": 5.5, "w": 2},
+ {"matrix": [0, 13], "x": 20.5, "y": 5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ibm/modelh/keymaps/default/keymap.c b/keyboards/ibm/modelh/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9098b869b3
--- /dev/null
+++ b/keyboards/ibm/modelh/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2020 John Hawthorn
+ *
+ * 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_fullsize_ansi_wkl( /* Base layer */
+ 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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+};
diff --git a/keyboards/ibm/modelh/keymaps/vial/config.h b/keyboards/ibm/modelh/keymaps/vial/config.h
new file mode 100644
index 0000000000..6497949e94
--- /dev/null
+++ b/keyboards/ibm/modelh/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBC, 0x8E, 0x44, 0xF1, 0x5C, 0x16, 0xD6, 0x38}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6, 7 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 6, 15 }
diff --git a/keyboards/ibm/modelh/keymaps/vial/keymap.c b/keyboards/ibm/modelh/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..9098b869b3
--- /dev/null
+++ b/keyboards/ibm/modelh/keymaps/vial/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2020 John Hawthorn
+ *
+ * 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_fullsize_ansi_wkl( /* Base layer */
+ 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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+};
diff --git a/keyboards/ibm/modelh/keymaps/vial/rules.mk b/keyboards/ibm/modelh/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/ibm/modelh/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/ibm/modelh/keymaps/vial/vial.json b/keyboards/ibm/modelh/keymaps/vial/vial.json
new file mode 100644
index 0000000000..5f744bd59c
--- /dev/null
+++ b/keyboards/ibm/modelh/keymaps/vial/vial.json
@@ -0,0 +1,212 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 8,
+ "cols": 16
+ },
+ "layouts": {
+ "labels": "iso",
+ "keymap": [
+ [
+ "0,2",
+ {
+ "x": 1
+ },
+ "2,3",
+ "2,4",
+ "1,4",
+ "0,4",
+ {
+ "x": 0.5
+ },
+ "0,6",
+ "0,8",
+ "1,9",
+ "2,9",
+ {
+ "x": 0.5
+ },
+ "2,6",
+ "3,6",
+ "3,11",
+ "3,12",
+ {
+ "x": 0.25
+ },
+ "3,15",
+ "4,15",
+ "6,14"
+ ],
+ [
+ {
+ "y": 0.5
+ },
+ "2,2",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "2,5",
+ "2,7",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "2,10",
+ "2,8",
+ {
+ "w": 2
+ },
+ "1,6",
+ {
+ "x": 0.25
+ },
+ "2,12",
+ "2,14",
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "6,11",
+ "6,12",
+ "6,13",
+ "7,13"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,2",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "1,5",
+ "1,7",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "1,10",
+ "1,8",
+ {
+ "w": 1.5
+ },
+ "5,6",
+ {
+ "x": 0.25
+ },
+ "2,11",
+ "3,14",
+ "3,13",
+ {
+ "x": 0.25
+ },
+ "4,11",
+ "4,12",
+ "4,13",
+ {
+ "h": 2
+ },
+ "4,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "1,3",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ "0,5",
+ "0,7",
+ "5,7",
+ "5,8",
+ "5,9",
+ "5,10",
+ "0,10",
+ {
+ "w": 2.25
+ },
+ "6,6",
+ {
+ "x": 3.5
+ },
+ "1,11",
+ "1,12",
+ "1,13"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "1,1",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ "7,5",
+ "7,7",
+ "6,7",
+ "6,8",
+ "6,9",
+ "7,10",
+ {
+ "w": 2.75
+ },
+ "6,1",
+ {
+ "x": 1.25
+ },
+ "0,14",
+ {
+ "x": 1.25
+ },
+ "5,11",
+ "5,12",
+ "5,13",
+ {
+ "h": 2
+ },
+ "5,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "0,15",
+ {
+ "w": 7
+ },
+ "7,6",
+ {
+ "w": 1.5
+ },
+ "7,15",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "6,0",
+ {
+ "x": 0.25
+ },
+ "7,14",
+ "7,11",
+ "7,12",
+ {
+ "x": 0.25,
+ "w": 2
+ },
+ "0,12",
+ "0,13"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/ibm/modelh/mcuconf.h b/keyboards/ibm/modelh/mcuconf.h
new file mode 100644
index 0000000000..7d3d6e143a
--- /dev/null
+++ b/keyboards/ibm/modelh/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * 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_next
+
+#undef STM32_PWM_USE_TIM2
+#undef STM32_SPI_USE_SPI2
+
+#define STM32_PWM_USE_TIM2 TRUE
+#define STM32_SPI_USE_SPI2 FALSE
diff --git a/keyboards/keychron/q0/rev_0130/rev_0130.h b/keyboards/ibm/modelh/modelh.c
similarity index 58%
rename from keyboards/keychron/q0/rev_0130/rev_0130.h
rename to keyboards/ibm/modelh/modelh.c
index d66c880aa9..5384b37338 100644
--- a/keyboards/keychron/q0/rev_0130/rev_0130.h
+++ b/keyboards/ibm/modelh/modelh.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2020 John Hawthorn
*
* 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
@@ -14,25 +14,12 @@
* along with this program. If not, see .
*/
-#pragma once
-
#include "quantum.h"
-#define XXX KC_NO
-#define LAYOUT_numpad_6x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, \
- K30, K31, K32, K23, \
- K40, K41, K42, \
- K50, K52, K43 \
-) \
-{ \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, XXX }, \
- { K40, K41, K42, K43 }, \
- { K50, XXX, K52, XXX }, \
+void keyboard_pre_init_kb(void) {
+ setPinOutput(MODELH_STATUS_LED);
+ writePin(MODELH_STATUS_LED, 0);
+
+ keyboard_pre_init_user();
}
diff --git a/keyboards/ibm/modelh/readme.md b/keyboards/ibm/modelh/readme.md
new file mode 100644
index 0000000000..0bbed03d1f
--- /dev/null
+++ b/keyboards/ibm/modelh/readme.md
@@ -0,0 +1,20 @@
+# Model H - A USB capable PCB for the IBM Model M keyboard
+
+![modelh](https://modelh.club/modelh_assembled.jpg)
+
+This conversion kit allows you to replace your IBM Model M's original internal controller board with a modern USB board. This aims to match the footprint of the original controller and plugs into the original keyboard matrix, but exposes a USB port through the original SDL connector.
+
+* Keyboard Maintainer: [John Hawthorn](https://github.com/jhawthorn)
+* Hardware Supported: IBM Model M, Generations 1-3
+* Hardware Availability: [www.modelh.club](www.modelh.club)
+* How to [build your own controller](https://github.com/jberclaz/modelh)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ibm/modelh:vial
+
+Flashing example for this keyboard:
+
+ make ibm/modelh:vial: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).
diff --git a/keyboards/ibm/modelh/rules.mk b/keyboards/ibm/modelh/rules.mk
new file mode 100644
index 0000000000..a92b099328
--- /dev/null
+++ b/keyboards/ibm/modelh/rules.mk
@@ -0,0 +1,2 @@
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/kbdcraft/adam64/keymaps/vial/config.h b/keyboards/kbdcraft/adam64/keymaps/vial/config.h
new file mode 100644
index 0000000000..a098acc7af
--- /dev/null
+++ b/keyboards/kbdcraft/adam64/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x68, 0x15, 0xE0, 0x6E, 0xF2, 0x8C, 0x40, 0x6A}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
diff --git a/keyboards/kbdcraft/adam64/keymaps/vial/keymap.c b/keyboards/kbdcraft/adam64/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..4ff28d4978
--- /dev/null
+++ b/keyboards/kbdcraft/adam64/keymaps/vial/keymap.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 KBDCraft
+ * Copyright 2023 Adophoxia
+ *
+ * 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_64_ansi(
+ 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_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, KC_UP, KC_DEL,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_64_ansi(
+ 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,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SCRL, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, EE_CLR,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_INS, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, KC_VOLD, RGB_TOG
+ )
+};
diff --git a/keyboards/kbdcraft/adam64/keymaps/vial/rules.mk b/keyboards/kbdcraft/adam64/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..31bb6d699f
--- /dev/null
+++ b/keyboards/kbdcraft/adam64/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/kbdcraft/adam64/keymaps/vial/vial.json b/keyboards/kbdcraft/adam64/keymaps/vial/vial.json
new file mode 100644
index 0000000000..48862c7443
--- /dev/null
+++ b/keyboards/kbdcraft/adam64/keymaps/vial/vial.json
@@ -0,0 +1,115 @@
+{
+ "name": "Adam64",
+ "vendorId": "0x586A",
+ "productId": "0xB001",
+ "lighting": "vialrgb",
+ "matrix": { "rows": 5, "cols": 14 },
+ "layouts": {
+ "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"
+ ],
+ [
+ {
+ "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,13"
+ ],
+ [
+ {
+ "w": 2
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ "3,13"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "4,0",
+ {
+ "w": 1.25
+ },
+ "4,1",
+ {
+ "w": 1.25
+ },
+ "4,2",
+ {
+ "w": 6.25
+ },
+ "4,5",
+ "4,9",
+ "4,10",
+ "4,11",
+ "4,12",
+ "4,13"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/kbdfans/d45/keymaps/vial/config.h b/keyboards/kbdfans/d45/keymaps/vial/config.h
new file mode 100644
index 0000000000..07c7e30159
--- /dev/null
+++ b/keyboards/kbdfans/d45/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC0, 0x17, 0xF0, 0x89, 0xD6, 0x68, 0xC4, 0xEA}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
diff --git a/keyboards/kbdfans/d45/keymaps/vial/keymap.c b/keyboards/kbdfans/d45/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..9ca23d5fa8
--- /dev/null
+++ b/keyboards/kbdfans/d45/keymaps/vial/keymap.c
@@ -0,0 +1,62 @@
+/* Copyright 2022 dztech kbdfans
+ *
+ * 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 {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+#define SF_SS RSFT_T(KC_SLSH)
+#define SP_LO LT(LOWER, KC_SPC)
+#define SP_RA LT(RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT( /* Base */
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_F2, 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_F3, 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_END,
+ KC_F4, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_LOWER] = LAYOUT( /* FN */
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_F2, 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_F3, 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_END,
+ KC_F4, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_RAISE] = LAYOUT( /* FN */
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_F2, 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_F3, 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_END,
+ KC_F4, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_ADJUST] = LAYOUT( /* FN */
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_F2, 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_F3, 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_END,
+ KC_F4, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ };
+
+ layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/kbdfans/d45/keymaps/vial/rules.mk b/keyboards/kbdfans/d45/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..46f9f1360f
--- /dev/null
+++ b/keyboards/kbdfans/d45/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/d45/keymaps/vial/vial.json b/keyboards/kbdfans/d45/keymaps/vial/vial.json
new file mode 100644
index 0000000000..2e515eea12
--- /dev/null
+++ b/keyboards/kbdfans/d45/keymaps/vial/vial.json
@@ -0,0 +1,138 @@
+{
+ "name": "D45",
+ "vendorId": "0x4B42",
+ "productId": "0x0010",
+ "lighting": "qmk_backlight",
+ "matrix": {
+ "rows": 4,
+ "cols": 16
+ },
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ {
+ "x": 0.25,
+ "w": 1.5
+ },
+ "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",
+ {
+ "w": 1.5
+ },
+ "0,14",
+ {
+ "x": 0.5
+ },
+ "0,15"
+ ],
+ [
+ "1,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "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.25
+ },
+ "1,14",
+ {
+ "x": 0.5
+ },
+ "1,15"
+ ],
+ [
+ "2,0",
+ {
+ "x": 0.25,
+ "w": 2.25
+ },
+ "2,1",
+ "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",
+ {
+ "x": 1.5
+ },
+ "2,15"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 15.5
+ },
+ "2,14"
+ ],
+ [
+ {
+ "y": -0.25
+ },
+ "3,0",
+ {
+ "x": 1.75
+ },
+ "3,2",
+ {
+ "w": 1.5
+ },
+ "3,3",
+ {
+ "w": 2.75
+ },
+ "3,5",
+ {
+ "w": 2.25
+ },
+ "3,7",
+ {
+ "w": 1.5
+ },
+ "3,9",
+ "3,10"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 14.5
+ },
+ "3,13",
+ "3,14",
+ "3,15"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/kbdfans/d45/v1/config.h b/keyboards/kbdfans/d45/v1/config.h
new file mode 100755
index 0000000000..fa9a83d08e
--- /dev/null
+++ b/keyboards/kbdfans/d45/v1/config.h
@@ -0,0 +1,6 @@
+#pragma once
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/kbdfans/d45/v1/info.json b/keyboards/kbdfans/d45/v1/info.json
new file mode 100644
index 0000000000..bf2dab87d9
--- /dev/null
+++ b/keyboards/kbdfans/d45/v1/info.json
@@ -0,0 +1,151 @@
+{
+ "manufacturer": "kbdfans",
+ "keyboard_name": "D45",
+ "maintainer": "moyi4681",
+ "bootloader": "atmel-dfu",
+ "build": {
+ "lto": true
+ },
+ "config_h_features": {
+ "audio": false,
+ "backlight": false,
+ "bluetooth": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "lto": true,
+ "mousekey": true,
+ "nkro": false,
+ "rgb_matrix": false,
+ "rgblight": false,
+ "sleep_led": false
+ },
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "features": {
+ "audio": false,
+ "backlight": false,
+ "bluetooth": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "lto": true,
+ "mousekey": true,
+ "nkro": false,
+ "rgb_matrix": false,
+ "rgblight": false,
+ "sleep_led": false
+ },
+ "keyboard_folder": "kbdfans/d45/v1",
+ "keymaps": {},
+ "matrix_pins": {
+ "cols": ["D7", "F7", "F6", "F5", "F4", "F1", "F0", "E6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5"],
+ "rows": ["B5", "B4", "D6", "D4"]
+ },
+ "matrix_size": {
+ "cols": 16,
+ "rows": 4
+ },
+ "mouse_key": {
+ "enabled": true
+ },
+ "parse_errors": [],
+ "parse_warnings": [],
+ "platform": "unknown",
+ "processor": "atmega32u4",
+ "processor_type": "avr",
+ "protocol": "LUFA",
+ "rgb_matrix": {
+ "driver": "WS2812"
+ },
+ "rgblight": {
+ "animations": {
+ "breathing": false,
+ "christmas": false,
+ "knight": false,
+ "rainbow_mood": false,
+ "rainbow_swirl": false,
+ "rgb_test": false,
+ "snake": false,
+ "static_gradient": false
+ },
+ "brightness_steps": 16,
+ "hue_steps": 16,
+ "led_count": 72,
+ "max_brightness": 255,
+ "pin": "B6",
+ "saturation_steps": 16,
+ "sleep": false
+ },
+ "usb": {
+ "device_ver": "0x0100",
+ "device_version": "1.0.0",
+ "pid": "0x0006",
+ "vid": "0x4B42"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "c_macro": false,
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "w": 1.5, "x": 1.25, "y": 0 },
+ { "matrix": [0, 2], "x": 2.75, "y": 0 },
+ { "matrix": [0, 3], "x": 3.75, "y": 0 },
+ { "matrix": [0, 4], "x": 4.75, "y": 0 },
+ { "matrix": [0, 5], "x": 5.75, "y": 0 },
+ { "matrix": [0, 6], "x": 6.75, "y": 0 },
+ { "matrix": [0, 7], "x": 7.75, "y": 0 },
+ { "matrix": [0, 8], "x": 8.75, "y": 0 },
+ { "matrix": [0, 9], "x": 9.75, "y": 0 },
+ { "matrix": [0, 10], "x": 10.75, "y": 0 },
+ { "matrix": [0, 11], "x": 11.75, "y": 0 },
+ { "matrix": [0, 12], "x": 12.75, "y": 0 },
+ { "matrix": [0, 13], "x": 13.75, "y": 0 },
+ { "matrix": [3, 13], "w": 1.5, "x": 14.75, "y": 0 },
+ { "matrix": [0, 14], "x": 16.75, "y": 0 },
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "w": 1.75, "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "x": 3, "y": 1 },
+ { "matrix": [1, 3], "x": 4, "y": 1 },
+ { "matrix": [1, 4], "x": 5, "y": 1 },
+ { "matrix": [1, 5], "x": 6, "y": 1 },
+ { "matrix": [1, 6], "x": 7, "y": 1 },
+ { "matrix": [1, 7], "x": 8, "y": 1 },
+ { "matrix": [1, 8], "x": 9, "y": 1 },
+ { "matrix": [1, 9], "x": 10, "y": 1 },
+ { "matrix": [1, 10], "x": 11, "y": 1 },
+ { "matrix": [1, 11], "x": 12, "y": 1 },
+ { "matrix": [1, 12], "x": 13, "y": 1 },
+ { "matrix": [1, 13], "w": 2.25, "x": 14, "y": 1 },
+ { "matrix": [1, 14], "x": 16.75, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "w": 2.25, "x": 1.25, "y": 2 },
+ { "matrix": [2, 2], "x": 3.5, "y": 2 },
+ { "matrix": [2, 3], "x": 4.5, "y": 2 },
+ { "matrix": [2, 4], "x": 5.5, "y": 2 },
+ { "matrix": [2, 5], "x": 6.5, "y": 2 },
+ { "matrix": [2, 6], "x": 7.5, "y": 2 },
+ { "matrix": [2, 7], "x": 8.5, "y": 2 },
+ { "matrix": [2, 8], "x": 9.5, "y": 2 },
+ { "matrix": [2, 9], "x": 10.5, "y": 2 },
+ { "matrix": [2, 10], "x": 11.5, "y": 2 },
+ { "matrix": [2, 11], "x": 12.5, "y": 2 },
+ { "matrix": [2, 12], "w": 1.75, "x": 13.5, "y": 2 },
+ { "matrix": [2, 13], "x": 15.5, "y": 2.25 },
+ { "matrix": [2, 14], "x": 16.75, "y": 2 },
+ { "matrix": [3, 0], "x": 0, "y": 3 },
+ { "matrix": [3, 1], "x": 2.75, "y": 3 },
+ { "matrix": [3, 2], "w": 1.5, "x": 3.75, "y": 3 },
+ { "matrix": [3, 5], "w": 2.75, "x": 5.25, "y": 3 },
+ { "matrix": [3, 8], "w": 2.25, "x": 8, "y": 3 },
+ { "matrix": [3, 9], "w": 1.5, "x": 10.25, "y": 3 },
+ { "matrix": [3, 10], "x": 11.75, "y": 3 },
+ { "matrix": [3, 11], "x": 14.5, "y": 3.25 },
+ { "matrix": [3, 12], "x": 15.5, "y": 3.25 },
+ { "matrix": [3, 14], "x": 16.5, "y": 3.25 }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/kbdfans/d45/v1/readme.md b/keyboards/kbdfans/d45/v1/readme.md
new file mode 100644
index 0000000000..768decc17a
--- /dev/null
+++ b/keyboards/kbdfans/d45/v1/readme.md
@@ -0,0 +1,20 @@
+# d45
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBDFANS
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/d45: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).
+
+## 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**: Double tap the reset button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/kbdfans/d45/v1/rules.mk b/keyboards/kbdfans/d45/v1/rules.mk
new file mode 100644
index 0000000000..7ff128fa69
--- /dev/null
+++ b/keyboards/kbdfans/d45/v1/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
\ No newline at end of file
diff --git a/keyboards/keebio/bfo9000/keymaps/vial/config.h b/keyboards/keebio/bfo9000/keymaps/vial/config.h
new file mode 100644
index 0000000000..c461f0e599
--- /dev/null
+++ b/keyboards/keebio/bfo9000/keymaps/vial/config.h
@@ -0,0 +1,32 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+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 {0xCA, 0x43, 0x6E, 0xF3, 0x4D, 0x91, 0x78, 0x1F}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
+
+
+//#define USE_I2C
+
+/* Select hand configuration */
+// #define MASTER_RIGHT
+// #define EE_HANDS
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/keebio/bfo9000/keymaps/vial/keymap.c b/keyboards/keebio/bfo9000/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..f37ea79c40
--- /dev/null
+++ b/keyboards/keebio/bfo9000/keymaps/vial/keymap.c
@@ -0,0 +1,15 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT(
+ KC_ESC, KC_VOLU, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, KC_VOLD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_END, KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGUP, KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT,
+ KC_PGDN, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, XXXXXXX,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_ENT, KC_BSPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+)
+};
diff --git a/keyboards/keebio/bfo9000/keymaps/vial/rules.mk b/keyboards/keebio/bfo9000/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6c6095dc89
--- /dev/null
+++ b/keyboards/keebio/bfo9000/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+COMMAND_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/keebio/bfo9000/keymaps/vial/vial.json b/keyboards/keebio/bfo9000/keymaps/vial/vial.json
new file mode 100644
index 0000000000..dd1cb17f81
--- /dev/null
+++ b/keyboards/keebio/bfo9000/keymaps/vial/vial.json
@@ -0,0 +1,152 @@
+{
+ "name": "Keeb.io BFO-9000",
+ "vendorId": "0xCB10",
+ "productId": "0x1169",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 12,
+ "cols": 9
+ },
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 5
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ "6,6",
+ "6,7",
+ "6,8"
+ ],
+ [
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ {
+ "x": 5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ "7,5",
+ "7,6",
+ "7,7",
+ "7,8"
+ ],
+ [
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ {
+ "x": 5
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6",
+ "8,7",
+ "8,8"
+ ],
+ [
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ {
+ "x": 5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6",
+ "9,7",
+ "9,8"
+ ],
+ [
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ {
+ "x": 5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6",
+ "10,7",
+ "10,8"
+ ],
+ [
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ "5,6",
+ "5,7",
+ "5,8",
+ {
+ "x": 5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6",
+ "11,7",
+ "11,8"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/keebio/dsp40/keymaps/vial/config.h b/keyboards/keebio/dsp40/keymaps/vial/config.h
new file mode 100644
index 0000000000..bc0a528a19
--- /dev/null
+++ b/keyboards/keebio/dsp40/keymaps/vial/config.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xCE, 0xD3, 0x93, 0xC2, 0x74, 0x75, 0xEA, 0xE7}
+#define VIAL_UNLOCK_COMBO_ROWS { 0 , 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0 , 11 }
diff --git a/keyboards/keebio/dsp40/keymaps/vial/keymap.c b/keyboards/keebio/dsp40/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..2812bf2330
--- /dev/null
+++ b/keyboards/keebio/dsp40/keymaps/vial/keymap.c
@@ -0,0 +1,75 @@
+/* Copyright 2021 Danny Nguyen
+
+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 via_layers {
+ _MAIN,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Default Layer
+ * ,-----------------------------------------------------------.
+ * | Esc| Q | W | E | R | T | Y | U | I | O | P | BS |
+ * |-----------------------------------------------------------|
+ * | Tab | A | S | D | F | G | H | J | K | L | Ent |
+ * |-----------------------------------------------------------|
+ * | LSft | Z | X | C | V | B | N | M | , | . | /? |
+ * |-----------------------------------------------------------|
+ * | LCtl | LGui| LAlt| spc fn1 | spc fn2 |fn3|RAlt|RCtl |
+ * `-----------------------------------------------------------'
+ */
+ [_MAIN] = LAYOUT_ortho_4x12(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(_FN1, KC_SPC), KC_SPC, KC_SPC, LT(_FN2, KC_SPC), MO(_FN3), LT(_FN3, KC_LGUI), KC_RALT, KC_RCTL
+ ),
+
+ [_FN1] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),BL_TOGG,BL_INC, BL_DEC,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [_FN2] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_ortho_4x12(
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/keebio/dsp40/keymaps/vial/rules.mk b/keyboards/keebio/dsp40/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ab00f5cb34
--- /dev/null
+++ b/keyboards/keebio/dsp40/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+COMMAND_ENABLE = no
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebio/dsp40/keymaps/vial/vial.json b/keyboards/keebio/dsp40/keymaps/vial/vial.json
new file mode 100644
index 0000000000..5c334ba592
--- /dev/null
+++ b/keyboards/keebio/dsp40/keymaps/vial/vial.json
@@ -0,0 +1,255 @@
+{
+ "name": "DSP40 Rev. 1",
+ "vendorId": "0xCB10",
+ "productId": "0x144C",
+ "lighting": "qmk_backlight",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Row 2",
+ "Staggered",
+ "Ortho"
+ ],
+ [
+ "Row 3",
+ "Staggered 1.25-1",
+ "Staggered 1-1.25",
+ "Ortho"
+ ],
+ [
+ "Row 4",
+ "Staggered 1.25 Mods",
+ "Staggered 1.5 Mods",
+ "Ortho"
+ ]
+ ],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {"x":0.5},"0,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,11"
+ ],
+ [
+ {"x":2.5},
+ {
+ "w": 1.25
+ },
+ "1,0\n\n\n0,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1\n\n\n0,0",
+ "1,2\n\n\n0,0",
+ "1,3\n\n\n0,0",
+ "1,4\n\n\n0,0",
+ "1,5\n\n\n0,0",
+ "1,6\n\n\n0,0",
+ "1,7\n\n\n0,0",
+ "1,8\n\n\n0,0",
+ "1,9\n\n\n0,0",
+ {
+ "c": "#777777",
+ "w": 1.75
+ },
+ "1,11\n\n\n0,0",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "1,0\n\n\n0,1",
+ {
+ "c": "#cccccc"
+ },
+ "1,1\n\n\n0,1",
+ "1,2\n\n\n0,1",
+ "1,3\n\n\n0,1",
+ "1,4\n\n\n0,1",
+ "1,5\n\n\n0,1",
+ "1,6\n\n\n0,1",
+ "1,7\n\n\n0,1",
+ "1,8\n\n\n0,1",
+ "1,9\n\n\n0,1",
+ "1,10\n\n\n0,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "1,11\n\n\n0,1"
+ ],
+ [
+ {"x":2.5},
+ {
+ "w": 1.75
+ },
+ "2,1\n\n\n1,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,2\n\n\n1,0",
+ "2,3\n\n\n1,0",
+ "2,4\n\n\n1,0",
+ "2,5\n\n\n1,0",
+ "2,6\n\n\n1,0",
+ "2,7\n\n\n1,0",
+ "2,8\n.\n\n1,0",
+ "2,9\n\n\n1,0",
+ {
+ "w": 1.25
+ },
+ "2,10\n\n\n1,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "2,11\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 1.75
+ },
+ "2,1\n\n\n1,1",
+ {
+ "c": "#cccccc"
+ },
+ "2,2\n\n\n1,1",
+ "2,3\n\n\n1,1",
+ "2,4\n\n\n1,1",
+ "2,5\n\n\n1,1",
+ "2,6\n\n\n1,1",
+ "2,7\n\n\n1,1",
+ "2,8\n.\n\n1,1",
+ "2,9\n\n\n1,1",
+ "2,10\n\n\n1,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "2,11\n\n\n1,1"
+ ],
+ [
+ {"x":2.5},
+ {
+ "w": 1.25
+ },
+ "3,0\n\n\n2,0",
+ "3,1\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "3,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 2.25
+ },
+ "3,4\n\n\n2,0",
+ {
+ "w": 2.75
+ },
+ "3,7\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "3,9\n\n\n2,0",
+ "3,10\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "3,11\n\n\n2,0",
+ {
+ "x": 0.5
+ },
+ "2,0\n\n\n1,2",
+ {
+ "c": "#cccccc"
+ },
+ "2,1\n\n\n1,2",
+ "2,2\n\n\n1,2",
+ "2,3\n\n\n1,2",
+ "2,4\n\n\n1,2",
+ "2,5\n\n\n1,2",
+ "2,6\n\n\n1,2",
+ "2,7\n\n\n1,2",
+ "2,8\n\n\n1,2",
+ "2,9\n\n\n1,2",
+ "2,10\n\n\n1,2",
+ {
+ "c": "#777777"
+ },
+ "2,11\n\n\n1,2"
+ ],
+ [
+ {
+ "y": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "3,0\n\n\n2,1",
+ "3,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "3,2\n\n\n2,1",
+ {
+ "c": "#cccccc",
+ "w": 2.25
+ },
+ "3,4\n\n\n2,1",
+ {
+ "w": 2.75
+ },
+ "3,7\n\n\n2,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "3,9\n\n\n2,1",
+ "3,10\n\n\n2,1",
+ "3,11\n\n\n2,1"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "3,0\n\n\n2,2",
+ "3,1\n\n\n2,2",
+ "3,2\n\n\n2,2",
+ "3,3\n\n\n2,2",
+ "3,4\n\n\n2,2",
+ {
+ "c": "#cccccc"
+ },
+ "3,5\n\n\n2,2",
+ "3,6\n\n\n2,2",
+ {
+ "c": "#aaaaaa"
+ },
+ "3,7\n\n\n2,2",
+ "3,8\n\n\n2,2",
+ "3,9\n\n\n2,2",
+ "3,10\n\n\n2,2",
+ "3,11\n\n\n2,2"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/keychron/q0/config.h b/keyboards/keychron/q0/config.h
index c0366b1ed8..9913191de7 100644
--- a/keyboards/keychron/q0/config.h
+++ b/keyboards/keychron/q0/config.h
@@ -26,4 +26,4 @@
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
\ No newline at end of file
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/q0/readme.md b/keyboards/keychron/q0/readme.md
index d0180d386e..cab643be3b 100644
--- a/keyboards/keychron/q0/readme.md
+++ b/keyboards/keychron/q0/readme.md
@@ -7,12 +7,12 @@ A customizable number keypad.
* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
-
- make keychron/q0/rev_0130:default
+
+ make keychron/q0/rev_0131:vial (Keychron Q0 Plus)
Flashing example for this keyboard:
-
- make keychron/q0/rev_0130:default:flash
+
+ make keychron/q0/rev_0131:vial:flash (Keychron Q0 Plus)
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/vial/config.h b/keyboards/keychron/q0/rev_0130/keymaps/vial/config.h
index 5065e78b68..7dab45c639 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/vial/config.h
+++ b/keyboards/keychron/q0/rev_0130/keymaps/vial/config.h
@@ -2,7 +2,7 @@
#pragma once
-#define VIAL_KEYBOARD_UID {0xCD, 0xB9, 0xD4, 0xC9, 0x53, 0x9A, 0x68, 0xC3}
+#define VIAL_KEYBOARD_UID {0xCB, 0x44, 0x98, 0x8F, 0x71, 0xAE, 0x25, 0x99}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/vial/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/vial/keymap.c
index 82e5cf4bbb..bf0d25d6e7 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/vial/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/vial/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2023 @ 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
@@ -15,6 +15,7 @@
*/
#include QMK_KEYBOARD_H
+#include "keychron_common.h"
enum layers { _BASE, _FN1, _RESERVED1, _RESERVED2 };
@@ -51,3 +52,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______,
_______, _______, _______)
};
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/vial/rules.mk b/keyboards/keychron/q0/rev_0130/keymaps/vial/rules.mk
index 31bb6d699f..c4077f69ff 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/vial/rules.mk
+++ b/keyboards/keychron/q0/rev_0130/keymaps/vial/rules.mk
@@ -1,3 +1,6 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
-VIALRGB_ENABLE = yes
\ No newline at end of file
+VIALRGB_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/vial/vial.json b/keyboards/keychron/q0/rev_0130/keymaps/vial/vial.json
index 4e75265ffa..65216a9750 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/vial/vial.json
+++ b/keyboards/keychron/q0/rev_0130/keymaps/vial/vial.json
@@ -1,14 +1,14 @@
{
- "name": "Keychron Q0",
- "vendorId": "0x3434",
- "productId": "0x0130",
- "lighting": "vialrgb",
- "matrix": {
- "rows": 6,
- "cols": 4
- },
- "layouts": {
- "keymap":[
+ "name": "Keychron Q0",
+ "vendorId": "0x3434",
+ "productId": "0x0130",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 6,
+ "cols": 4
+ },
+ "layouts": {
+ "keymap":[
[
"0,0",
"0,1",
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/vial/config.h b/keyboards/keychron/q0/rev_0131/keymaps/vial/config.h
new file mode 100644
index 0000000000..15f11cf4df
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0131/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xD2, 0xD3, 0x91, 0xAE, 0xA4, 0x06, 0x6C, 0x30}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 1, 4 }
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/vial/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..52e1ee2eb2
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0131/keymaps/vial/keymap.c
@@ -0,0 +1,83 @@
+/* Copyright 2023 @ 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
+#include "keychron_common.h"
+
+// clang-format off
+
+enum layers {
+ BASE,
+ FUNC,
+ L2,
+ L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_numpad_6x5(
+ KC_MUTE, MO(FUNC), KC_ESC, KC_BSPC, KC_TAB,
+ MACRO01, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ MACRO02, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ MACRO03, KC_P4, KC_P5, KC_P6,
+ MACRO04, KC_P1, KC_P2, KC_P3, KC_PENT,
+ MACRO05, KC_P0, KC_PDOT),
+
+ [FUNC] = LAYOUT_numpad_6x5(
+ RGB_TOG, _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ MACRO01, RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ MACRO02, RGB_RMOD, RGB_VAD, RGB_HUD, _______,
+ MACRO03, RGB_SAI, RGB_SPI, KC_MPRV,
+ MACRO04, RGB_SAD, RGB_SPD, KC_MPLY, _______,
+ MACRO05, RGB_TOG, KC_MNXT),
+
+ [L2] = LAYOUT_numpad_6x5(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______),
+
+ [L3] = LAYOUT_numpad_6x5(
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [FUNC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [L2] = { ENCODER_CCW_CW(_______, _______) },
+ [L3] = { ENCODER_CCW_CW(_______, _______) }
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/vial/rules.mk b/keyboards/keychron/q0/rev_0131/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..c4ca639d6c
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0131/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/vial/vial.json b/keyboards/keychron/q0/rev_0131/keymaps/vial/vial.json
new file mode 100644
index 0000000000..06922df10d
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0131/keymaps/vial/vial.json
@@ -0,0 +1,157 @@
+{
+ "name": "Keychron Q0 Plus",
+ "vendorId": "0x3434",
+ "productId": "0x0131",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {
+ "name": "Mission Control",
+ "title": "Mission Control in macOS",
+ "shortName": "MCtrl"
+ },
+ {
+ "name": "Launch Pad",
+ "title": "Launch Pad in macOS",
+ "shortName": "LPad"
+ },
+ {
+ "name": "Left Option",
+ "title": "Left Option in macOS",
+ "shortName": "LOpt"
+ },
+ {
+ "name": "Right Option",
+ "title": "Right Option in macOS",
+ "shortName": "ROpt"
+ },
+ {
+ "name": "Left Cmd",
+ "title": "Left Command in macOS",
+ "shortName": "LCmd"
+ },
+ {
+ "name": "Right Cmd",
+ "title": "Right Command in macOS",
+ "shortName": "RCmd"
+ },
+ {
+ "name": "Siri",
+ "title": "Siri in macOS",
+ "shortName": "Siri"
+ },
+ {
+ "name": "Task View",
+ "title": "Task View in windows",
+ "shortName": "Task"
+ },
+ {
+ "name": "File Explorer",
+ "title": "File Explorer in windows",
+ "shortName": "File"
+ },
+ {
+ "name": "Screen Shot",
+ "title": "Screenshot in macOS",
+ "shortName": "SShot"
+ },
+ {
+ "name": "Cortana",
+ "title": "Cortana in windows",
+ "shortName": "Cortana"
+ }
+ ],
+ "matrix": {"rows": 6, "cols": 5},
+ "layouts": {
+ "keymap": [
+ [
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 0.5
+ },
+ "0,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "1,0",
+ {
+ "x": 0.25
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4"
+ ],
+ [
+ {
+ "x": 0.5
+ },
+ "2,0",
+ {
+ "x": 0.25
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "h": 2
+ },
+ "2,4"
+ ],
+ [
+ {
+ "x": 0.5
+ },
+ "3,0",
+ {
+ "x": 0.25
+ },
+ "3,1",
+ "3,2",
+ "3,3"
+ ],
+ [
+ {
+ "x": 0.5
+ },
+ "4,0",
+ {
+ "x": 0.25
+ },
+ "4,1",
+ "4,2",
+ "4,3",
+ {
+ "h": 2
+ },
+ "4,4"
+ ],
+ [
+ {
+ "x": 0.5
+ },
+ "5,0",
+ {
+ "x": 0.25,
+ "w": 2
+ },
+ "5,1",
+ "5,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/q11/ansi_encoder/info.json b/keyboards/keychron/q11/ansi_encoder/info.json
index da10fe5166..01a81619ba 100755
--- a/keyboards/keychron/q11/ansi_encoder/info.json
+++ b/keyboards/keychron/q11/ansi_encoder/info.json
@@ -1,166 +1,105 @@
{
- "keyboard_name": "Keychron Q11",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "bootloader": "stm32-dfu",
- "bootmagic": {
- "matrix": [0, 1]
- },
- "features": {
- "audio": false,
- "backlight": false,
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "rgblight": false
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "B0", "pin_b": "B1"}
- ]
- },
- "matrix_pins": {
- "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
- "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
- },
- "processor": "STM32L432",
- "rgb_matrix": {
- "driver": "CKLED2001",
- "split_count": [42, 47]
- },
- "split": {
- "enabled": true,
- "encoder": {
- "right": {
- "rotary": [
- {"pin_a": "C14", "pin_b": "C15"}
- ]
- }
- },
- "matrix_pins": {
- "right": {
- "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- }
- },
- "transport": {
- "protocol": "serial_usart",
- "sync_matrix_state": false
- }
- },
"usb": {
- "vid": "0x3434",
"pid": "0x01E0",
"device_version": "1.0.0"
},
- "layouts": {
- "LAYOUT_ansi_91": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.25, "y": 0},
- {"matrix": [0, 2], "x": 2.25, "y": 0},
- {"matrix": [0, 3], "x": 3.25, "y": 0},
- {"matrix": [0, 4], "x": 4.25, "y": 0},
- {"matrix": [0, 5], "x": 5.25, "y": 0},
- {"matrix": [0, 6], "x": 6.25, "y": 0},
- {"matrix": [0, 7], "x": 7.25, "y": 0},
- {"matrix": [6, 0], "x": 8.25, "y": 0},
- {"matrix": [6, 1], "x": 9.25, "y": 0},
- {"matrix": [6, 2], "x": 10.25, "y": 0},
- {"matrix": [6, 3], "x": 11.25, "y": 0},
- {"matrix": [6, 4], "x": 12.25, "y": 0},
- {"matrix": [6, 5], "x": 13.25, "y": 0},
- {"matrix": [6, 6], "x": 14.25, "y": 0},
- {"matrix": [6, 7], "x": 15.25, "y": 0},
- {"matrix": [6, 8], "x": 16.5, "y": 0},
+ "rgb_matrix": {
+ "split_count": [42, 47],
+ "layout": [
+ {"matrix":[0, 1], "flags":1, "x":17, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":45, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":86, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":100, "y":0},
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":1, "x":17, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":45, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":86, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":100, "y":15},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1.25, "y": 1.25},
- {"matrix": [1, 2], "x": 2.25, "y": 1.25},
- {"matrix": [1, 3], "x": 3.25, "y": 1.25},
- {"matrix": [1, 4], "x": 4.25, "y": 1.25},
- {"matrix": [1, 5], "x": 5.25, "y": 1.25},
- {"matrix": [1, 6], "x": 6.25, "y": 1.25},
- {"matrix": [1, 7], "x": 7.25, "y": 1.25},
- {"matrix": [7, 0], "x": 8.25, "y": 1.25},
- {"matrix": [7, 1], "x": 9.25, "y": 1.25},
- {"matrix": [7, 2], "x": 10.25, "y": 1.25},
- {"matrix": [7, 3], "x": 11.25, "y": 1.25},
- {"matrix": [7, 4], "x": 12.25, "y": 1.25},
- {"matrix": [7, 5], "x": 13.25, "y": 1.25},
- {"matrix": [7, 6], "x": 14.25, "y": 1.25, "w": 2},
- {"matrix": [7, 8], "x": 16.5, "y": 1.25},
+ {"matrix":[2, 0], "flags":1, "x":0, "y":27},
+ {"matrix":[2, 1], "flags":1, "x":21, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":38, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":52, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":79, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":93, "y":27},
+ {"matrix":[3, 0], "flags":1, "x":0, "y":40},
+ {"matrix":[3, 1], "flags":8, "x":22, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":41, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":69, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":83, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":97, "y":40},
- {"matrix": [2, 0], "x": 0, "y": 2.25},
- {"matrix": [2, 1], "x": 1.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 6], "x": 5.75, "y": 2.25},
- {"matrix": [2, 7], "x": 6.75, "y": 2.25},
- {"matrix": [8, 0], "x": 7.75, "y": 2.25},
- {"matrix": [8, 1], "x": 8.75, "y": 2.25},
- {"matrix": [8, 2], "x": 9.75, "y": 2.25},
- {"matrix": [8, 3], "x": 10.75, "y": 2.25},
- {"matrix": [8, 4], "x": 11.75, "y": 2.25},
- {"matrix": [8, 5], "x": 12.75, "y": 2.25},
- {"matrix": [8, 6], "x": 13.75, "y": 2.25},
- {"matrix": [8, 7], "x": 14.75, "y": 2.25, "w": 1.5},
- {"matrix": [8, 8], "x": 16.5, "y": 2.25},
+ {"matrix":[4, 0], "flags":1, "x":0, "y":52},
+ {"matrix":[4, 2], "flags":1, "x":34, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":61, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":90, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":102, "y":52},
+ {"matrix":[5, 0], "flags":1, "x":0, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":19, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":36, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":53, "y":64},
+ {"matrix":[5, 4], "flags":1, "x":70, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":64},
- {"matrix": [3, 0], "x": 0, "y": 3.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3, "y": 3.25},
- {"matrix": [3, 3], "x": 4, "y": 3.25},
- {"matrix": [3, 4], "x": 5, "y": 3.25},
- {"matrix": [3, 5], "x": 6, "y": 3.25},
- {"matrix": [3, 6], "x": 7, "y": 3.25},
- {"matrix": [9, 0], "x": 8, "y": 3.25},
- {"matrix": [9, 1], "x": 9, "y": 3.25},
- {"matrix": [9, 2], "x": 10, "y": 3.25},
- {"matrix": [9, 3], "x": 11, "y": 3.25},
- {"matrix": [9, 4], "x": 12, "y": 3.25},
- {"matrix": [9, 5], "x": 13, "y": 3.25},
- {"matrix": [9, 7], "x": 14, "y": 3.25, "w": 2.25},
- {"matrix": [9, 8], "x": 16.5, "y": 3.25},
+ {"matrix":[6, 0], "flags":1, "x":110, "y":0},
+ {"matrix":[6, 1], "flags":1, "x":124, "y":0},
+ {"matrix":[6, 2], "flags":1, "x":138, "y":0},
+ {"matrix":[6, 3], "flags":1, "x":152, "y":0},
+ {"matrix":[6, 4], "flags":1, "x":165, "y":0},
+ {"matrix":[6, 5], "flags":1, "x":179, "y":0},
+ {"matrix":[6, 6], "flags":1, "x":193, "y":0},
+ {"matrix":[6, 7], "flags":1, "x":207, "y":0},
+ {"matrix":[7, 0], "flags":4, "x":110, "y":15},
+ {"matrix":[7, 1], "flags":4, "x":124, "y":15},
+ {"matrix":[7, 2], "flags":4, "x":138, "y":15},
+ {"matrix":[7, 3], "flags":4, "x":152, "y":15},
+ {"matrix":[7, 4], "flags":4, "x":165, "y":15},
+ {"matrix":[7, 5], "flags":4, "x":179, "y":15},
+ {"matrix":[7, 6], "flags":1, "x":200, "y":15},
+ {"matrix":[7, 8], "flags":1, "x":224, "y":15},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 2], "x": 1.25, "y": 4.25, "w": 2.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.5, "y": 4.25},
- {"matrix": [4, 5], "x": 5.5, "y": 4.25},
- {"matrix": [4, 6], "x": 6.5, "y": 4.25},
- {"matrix": [4, 7], "x": 7.5, "y": 4.25},
- {"matrix": [10, 0], "x": 8.5, "y": 4.25},
- {"matrix": [10, 1], "x": 9.5, "y": 4.25},
- {"matrix": [10, 2], "x": 10.5, "y": 4.25},
- {"matrix": [10, 3], "x": 11.5, "y": 4.25},
- {"matrix": [10, 4], "x": 12.5, "y": 4.25},
- {"matrix": [10, 5], "x": 13.5, "y": 4.25, "w": 1.75},
- {"matrix": [10, 7], "x": 15.5, "y": 4.25},
+ {"matrix":[8, 0], "flags":4, "x":104, "y":27},
+ {"matrix":[8, 1], "flags":4, "x":117, "y":27},
+ {"matrix":[8, 2], "flags":4, "x":131, "y":27},
+ {"matrix":[8, 3], "flags":4, "x":145, "y":27},
+ {"matrix":[8, 4], "flags":4, "x":158, "y":27},
+ {"matrix":[8, 5], "flags":4, "x":172, "y":27},
+ {"matrix":[8, 6], "flags":4, "x":186, "y":27},
+ {"matrix":[8, 7], "flags":4, "x":203, "y":27},
+ {"matrix":[8, 8], "flags":1, "x":224, "y":27},
+ {"matrix":[9, 0], "flags":4, "x":107, "y":40},
+ {"matrix":[9, 1], "flags":4, "x":121, "y":40},
+ {"matrix":[9, 2], "flags":4, "x":134, "y":40},
+ {"matrix":[9, 3], "flags":4, "x":148, "y":40},
+ {"matrix":[9, 4], "flags":4, "x":162, "y":40},
+ {"matrix":[9, 5], "flags":4, "x":176, "y":40},
+ {"matrix":[9, 7], "flags":1, "x":198, "y":40},
+ {"matrix":[9, 8], "flags":1, "x":224, "y":40},
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 6.25, "y": 5.25, "w": 2.25},
- {"matrix": [11, 1], "x": 8.5, "y": 5.25, "w": 2.75},
- {"matrix": [11, 2], "x": 11.25, "y": 5.25},
- {"matrix": [11, 3], "x": 12.25, "y": 5.25},
- {"matrix": [11, 4], "x": 13.25, "y": 5.25},
- {"matrix": [11, 6], "x": 14.5, "y": 5.25},
- {"matrix": [11, 7], "x": 15.5, "y": 5.25},
- {"matrix": [11, 8], "x": 16.5, "y": 5.25}
- ]
- }
+ {"matrix":[10, 0], "flags":4, "x":114, "y":52},
+ {"matrix":[10, 1], "flags":4, "x":127, "y":52},
+ {"matrix":[10, 2], "flags":4, "x":141, "y":52},
+ {"matrix":[10, 3], "flags":4, "x":155, "y":52},
+ {"matrix":[10, 4], "flags":4, "x":169, "y":52},
+ {"matrix":[10, 5], "flags":1, "x":188, "y":52},
+ {"matrix":[10, 7], "flags":1, "x":210, "y":52},
+ {"matrix":[11, 1], "flags":4, "x":126, "y":64},
+ {"matrix":[11, 2], "flags":1, "x":152, "y":64},
+ {"matrix":[11, 3], "flags":1, "x":166, "y":64},
+ {"matrix":[11, 4], "flags":1, "x":180, "y":64},
+ {"matrix":[11, 6], "flags":1, "x":196, "y":64},
+ {"matrix":[11, 7], "flags":1, "x":210, "y":64},
+ {"matrix":[11, 8], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/config.h b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/config.h
new file mode 100644
index 0000000000..17d97b7433
--- /dev/null
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x63, 0x39, 0x38, 0xEA, 0x3A, 0x46, 0x3E, 0x9F}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 9 }
+#define VIAL_UNLOCK_COMBO_COLS { 1, 7 }
\ No newline at end of file
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..02883cd89a
--- /dev/null
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/keymap.c
@@ -0,0 +1,84 @@
+/* Copyright 2023 @ 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
+#include "keychron_common.h"
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_91(
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
+ MACRO01, 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_PGUP,
+ MACRO02, 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_PGDN,
+ MACRO03, 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,
+ MACRO04, 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,
+ MACRO05, KC_LCTL, KC_LOPTN, KC_LCMMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_91(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_ansi_91(
+ KC_MUTE, 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_INS, KC_DEL, KC_MUTE,
+ MACRO01, 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_PGUP,
+ MACRO02, 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_PGDN,
+ MACRO03, 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,
+ MACRO04, 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,
+ MACRO05, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_91(
+ RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/rules.mk
new file mode 100755
index 0000000000..c4ca639d6c
--- /dev/null
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6897d36068
--- /dev/null
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/vial/vial.json
@@ -0,0 +1,268 @@
+{
+ "name": "Keychron Q11",
+ "vendorId": "0x3434",
+ "productId": "0x01E0",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 12, "cols": 9},
+ "layouts": {
+ "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": 14.5
+ },
+ "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,
+ "c": "#777777"
+ },
+ "0,1\nESC",
+ {
+ "c": "#cccccc"
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,6",
+ "0,7",
+ "6,0",
+ "6,1",
+ {
+ "c": "#cccccc"
+ },
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ {
+ "c": "#aaaaaa"
+ },
+ "6,6",
+ "6,7",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "6,8"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 0.75
+ },
+ "1,0",
+ {
+ "x": 0.25
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ "7,5",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "7,6",
+ {
+ "x": 0.25
+ },
+ "7,8"
+ ],
+ [
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "2,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,1",
+ {
+ "c": "#cccccc"
+ },
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,6",
+ "2,7",
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6",
+ {
+ "w": 1.5
+ },
+ "8,7",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "8,8"
+ ],
+ [
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "3,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "9,7",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "9,8"
+ ],
+ [
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "4,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,2",
+ {
+ "c": "#cccccc"
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "10,5",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "10,7"
+ ],
+ [
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "5,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "w": 1.25
+ },
+ "5,3",
+ {
+ "w": 1.25
+ },
+ "5,4",
+ {
+ "c": "#cccccc",
+ "w": 2.25
+ },
+ "5,6",
+ {
+ "w": 2.75
+ },
+ "11,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "11,2",
+ "11,3",
+ "11,4",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "11,6",
+ "11,7",
+ "11,8"
+ ]
+ ]
+ }
+}
+
\ No newline at end of file
diff --git a/keyboards/keychron/v2/v2.c b/keyboards/keychron/v2/v2.c
index 7703c280df..8d337e2dac 100644
--- a/keyboards/keychron/v2/v2.c
+++ b/keyboards/keychron/v2/v2.c
@@ -40,7 +40,6 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) { return false; }
switch (keycode) {
-#ifdef RGB_MATRIX_ENABLE
case RGB_TOG:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
@@ -58,7 +57,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
rgb_matrix_enable();
}
return false;
-#endif
}
return true;
}
diff --git a/keyboards/keyhive/absinthe/keymaps/vial/config.h b/keyboards/keyhive/absinthe/keymaps/vial/config.h
new file mode 100644
index 0000000000..83abb2d92f
--- /dev/null
+++ b/keyboards/keyhive/absinthe/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x7C, 0x37, 0x95, 0x7D, 0x34, 0xB0, 0x89, 0x8B}
+#define VIAL_UNLOCK_COMBO_ROWS { 0 , 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0 , 6 }
+#define VIAL_TAP_DANCE_ENTRIES 4
diff --git a/keyboards/keyhive/absinthe/keymaps/vial/keymap.c b/keyboards/keyhive/absinthe/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..c22e351663
--- /dev/null
+++ b/keyboards/keyhive/absinthe/keymaps/vial/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2021 alittlepeace
+ *
+ * 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_default(
+ 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_GRV, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [1] = LAYOUT_default(
+ _______, 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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) },
+ [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [2] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) },
+ [3] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }
+};
+#endif
diff --git a/keyboards/keyhive/absinthe/keymaps/vial/rules.mk b/keyboards/keyhive/absinthe/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ec1a82f4eb
--- /dev/null
+++ b/keyboards/keyhive/absinthe/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keyhive/absinthe/keymaps/vial/vial.json b/keyboards/keyhive/absinthe/keymaps/vial/vial.json
new file mode 100644
index 0000000000..1cba64c32f
--- /dev/null
+++ b/keyboards/keyhive/absinthe/keymaps/vial/vial.json
@@ -0,0 +1,219 @@
+{
+ "name": "Absinthe",
+ "vendorId": "0xB00B",
+ "productId": "0xFEED",
+ "lighting": "qmk_backlight",
+ "matrix": {
+ "rows": 9,
+ "cols": 9
+ },
+ "layouts": {
+ "labels": [
+ "Full Backspace",
+ "Full Right Shift",
+ "ANSI"
+ ],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#cccccc"
+ },
+ "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\n\n\n0,0",
+ "0,7\n\n\n0,0",
+ {
+ "x": 0.5
+ },
+ "1,7",
+ "0,8",
+ "1,8",
+ {
+ "x": 0.75,
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,6\n\n\n0,1"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "3,1",
+ "2,2",
+ "3,2",
+ "2,3",
+ "3,3",
+ "2,4",
+ "3,4",
+ "2,5",
+ "3,5",
+ "2,6",
+ "3,6",
+ {
+ "w": 1.5
+ },
+ "2,7",
+ {
+ "x": 0.5
+ },
+ "3,7",
+ "2,8",
+ "3,8"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,1",
+ "5,1",
+ "4,2",
+ "5,2",
+ "4,3",
+ "5,3",
+ "4,4",
+ "5,4",
+ "4,5",
+ "5,5",
+ "4,6",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "5,6"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "6,0",
+ {
+ "c": "#cccccc"
+ },
+ "6,1",
+ "7,1",
+ "6,2",
+ "7,2",
+ "6,3",
+ "7,3",
+ "6,4",
+ "7,4",
+ "6,5",
+ "7,5",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "6,6\n\n\n1,0",
+ "6,7\n\n\n1,0",
+ {
+ "x": 1.5,
+ "c": "#777777"
+ },
+ "6,8",
+ {
+ "x": 1.5,
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "6,6\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "8,0\n\n\n2,0",
+ "8,1\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "8,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "8,3\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "7,6\n\n\n2,0",
+ "8,6\n\n\n2,0",
+ {
+ "w": 1.5
+ },
+ "8,7\n\n\n2,0",
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "7,7",
+ "8,8",
+ "7,8"
+ ],
+ [
+ {
+ "y": 0.5,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "8,0\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "8,1\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "8,2\n\n\n2,1",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "8,3\n\n\n2,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "8,5\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "7,6\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "8,6\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "8,7\n\n\n2,1"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/keyten/imi60/info.json b/keyboards/keyten/imi60/info.json
new file mode 100644
index 0000000000..f2885bb9db
--- /dev/null
+++ b/keyboards/keyten/imi60/info.json
@@ -0,0 +1,94 @@
+{
+ "manufacturer": "keyten",
+ "keyboard_name": "imi60",
+ "maintainer": "key10iq",
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "usb": {
+ "vid": "0xEB69",
+ "pid": "0x6002",
+ "device_version": "0.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "rows": ["D1", "D0", "D3", "D2", "D5"],
+ "cols": ["B7", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"]
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [0, 3], "x": 3, "y": 0 },
+ { "matrix": [0, 4], "x": 4, "y": 0 },
+ { "matrix": [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": [2, 13], "x": 14, "y": 0 },
+ { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "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], "w": 1.5, "x": 13.5, "y": 1 },
+ { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "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], "w": 2.25, "x": 12.75, "y": 2 },
+ { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "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], "w": 1.75, "x": 12.25, "y": 3 },
+ { "matrix": [3, 13], "x": 14, "y": 3 },
+ { "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
+ { "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 },
+ { "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
+ { "matrix": [4, 12], "x": 12.5, "y": 4 },
+ { "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keyten/imi60/keymaps/default/keymap.c b/keyboards/keyten/imi60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dd11389cef
--- /dev/null
+++ b/keyboards/keyten/imi60/keymaps/default/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(
+ 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_GRV,
+ 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_LCTL, 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_TRNS, 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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT(
+ 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_UP, KC_INS, KC_DEL,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/keyten/imi60/keymaps/vial/config.h b/keyboards/keyten/imi60/keymaps/vial/config.h
new file mode 100644
index 0000000000..0984cab61c
--- /dev/null
+++ b/keyboards/keyten/imi60/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x49, 0x3C, 0xCA, 0xFB, 0xB6, 0xD2, 0xF6, 0xD8}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/keyten/imi60/keymaps/vial/keymap.c b/keyboards/keyten/imi60/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..dd11389cef
--- /dev/null
+++ b/keyboards/keyten/imi60/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(
+ 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_GRV,
+ 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_LCTL, 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_TRNS, 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_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT(
+ 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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_UP, KC_INS, KC_DEL,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_END, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/keyten/imi60/keymaps/vial/rules.mk b/keyboards/keyten/imi60/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..96d058b29d
--- /dev/null
+++ b/keyboards/keyten/imi60/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+TAP_DANCE_ENABLE = no
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
diff --git a/keyboards/keyten/imi60/keymaps/vial/vial.json b/keyboards/keyten/imi60/keymaps/vial/vial.json
new file mode 100644
index 0000000000..9f0a714388
--- /dev/null
+++ b/keyboards/keyten/imi60/keymaps/vial/vial.json
@@ -0,0 +1,162 @@
+{
+ "name": "imi60",
+ "vendorId": "0xEB69",
+ "productId": "0x6002",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "Split Right Shift"
+ ],
+ "keymap": [
+ [
+ {
+ "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",
+ {
+ "w": 2
+ },
+ "0,13\n\n\n0,0",
+ {
+ "x": 1
+ },
+ "0,13\n\n\n0,1",
+ "2,13\n\n\n0,1"
+ ],
+ [
+ {
+ "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",
+ {
+ "w": 1.5
+ },
+ "1,13\n\n\n1,0",
+ {
+ "x": 1.75,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "1,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",
+ {
+ "w": 2.25
+ },
+ "2,12\n\n\n1,0",
+ {
+ "x": 0.75
+ },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "3,0\n\n\n2,1",
+ "3,1\n\n\n2,1",
+ {
+ "x": 0.25,
+ "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": 2.75
+ },
+ "3,12\n\n\n3,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "3,12\n\n\n3,1",
+ "3,13\n\n\n3,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "w": 1.5
+ },
+ "4,0",
+ "4,1",
+ {
+ "w": 1.5
+ },
+ "4,3",
+ {
+ "w": 7
+ },
+ "4,7",
+ {
+ "w": 1.5
+ },
+ "4,11",
+ "4,12",
+ {
+ "w": 1.5
+ },
+ "4,13"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keyten/imi60/rules.mk b/keyboards/keyten/imi60/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/keyten/imi60/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/koolertron/amag09/info.json b/keyboards/koolertron/amag09/info.json
new file mode 100644
index 0000000000..68d62403b9
--- /dev/null
+++ b/keyboards/koolertron/amag09/info.json
@@ -0,0 +1,48 @@
+{
+ "keyboard_name": "AMAG09",
+ "manufacturer": "Koolertron",
+ "url": "http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-874.html",
+ "maintainer": "al177",
+ "usb": {
+ "vid": "0x4B54",
+ "pid": "0x2323",
+ "device_version": "0.0.1"
+ },
+ "bootloader": "bootloadhid",
+ "processor": "atmega32a",
+ "features": {
+ "backlight": true,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true
+ },
+ "diode_direction": "ROW2COL",
+ "matrix_size": {
+ "cols": 3,
+ "rows": 3
+ },
+ "matrix_pins": {
+ "cols": ["B0", "B1", "B2"],
+ "rows": ["A0", "A1", "A2"]
+ },
+ "backlight": {
+ "pin": "D4"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00", "matrix": [0, 0], "x":0, "y":0},
+ {"label":"K01", "matrix": [0, 1], "x":1, "y":0},
+ {"label":"K02", "matrix": [0, 2], "x":2, "y":0},
+ {"label":"K10", "matrix": [1, 0], "x":0, "y":1},
+ {"label":"K11", "matrix": [1, 1], "x":1, "y":1},
+ {"label":"K12", "matrix": [1, 2], "x":2, "y":1},
+ {"label":"K20", "matrix": [2, 0], "x":0, "y":2},
+ {"label":"K21", "matrix": [2, 1], "x":1, "y":2},
+ {"label":"K22", "matrix": [2, 2], "x":2, "y":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/koolertron/amag09/keymaps/default/keymap.c b/keyboards/koolertron/amag09/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4dcdf5cf8a
--- /dev/null
+++ b/keyboards/koolertron/amag09/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2023
+ *
+ * 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,
+ FN1,
+ FN2,
+ FN3
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_KP_1, KC_KP_2, KC_KP_3
+ ),
+ [FN1] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [FN2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [FN3] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+};
+// clang-format on
diff --git a/keyboards/koolertron/amag09/keymaps/vial/config.h b/keyboards/koolertron/amag09/keymaps/vial/config.h
new file mode 100644
index 0000000000..cdd63d48e4
--- /dev/null
+++ b/keyboards/koolertron/amag09/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* Vial configuration */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x1C, 0xA6, 0x8B, 0xCD, 0xCB, 0x42, 0x5C, 0x6F}
+
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 0 }
diff --git a/keyboards/koolertron/amag09/keymaps/vial/keymap.c b/keyboards/koolertron/amag09/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..e96512ae23
--- /dev/null
+++ b/keyboards/koolertron/amag09/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2023
+ *
+ * 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,
+ FN1,
+ FN2,
+ FN3
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_KP_4, KC_KP_5, KC_KP_6,
+ MO(FN1), KC_KP_2, KC_KP_3
+ ),
+ [FN1] = LAYOUT(
+ BL_TOGG, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [FN2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [FN3] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+};
+// clang-format on
diff --git a/keyboards/koolertron/amag09/keymaps/vial/rules.mk b/keyboards/koolertron/amag09/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..46f9f1360f
--- /dev/null
+++ b/keyboards/koolertron/amag09/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/koolertron/amag09/keymaps/vial/vial.json b/keyboards/koolertron/amag09/keymaps/vial/vial.json
new file mode 100644
index 0000000000..31f380ce89
--- /dev/null
+++ b/keyboards/koolertron/amag09/keymaps/vial/vial.json
@@ -0,0 +1,29 @@
+{
+ "name": "Koolertron AMAG09",
+ "vendorId": "0x4B54",
+ "productId": "0x2323",
+ "lighting": "qmk_backlight",
+ "matrix" : {
+ "rows": 3,
+ "cols": 3
+ },
+ "layouts" : {
+ "keymap" : [
+ [
+ "0,0",
+ "0,1",
+ "0,2"
+ ],
+ [
+ "1,0",
+ "1,1",
+ "1,2"
+ ],
+ [
+ "2,0",
+ "2,1",
+ "2,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/koolertron/amag09/readme.md b/keyboards/koolertron/amag09/readme.md
new file mode 100644
index 0000000000..07782c496c
--- /dev/null
+++ b/keyboards/koolertron/amag09/readme.md
@@ -0,0 +1,29 @@
+# AMAG09 (Koolertron)
+
+![Koolertron AMAG09](https://i.imgur.com/mepvkTe.jpg)
+
+One Handed Macro Mechanical Keyboard, 9 Key with optional RGB backlighting.
+
+- Keyboard Maintainer: [al177](https://github.com/al177)
+- Hardware Supported: AMAG09 (ATmega32A)
+- Hardware Availability:
+ - [Amazon](https://www.amazon.com/Koolertron-Mechanical-Keyboard-One-Handed-Programmable/dp/B0998QM9L2)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make koolertron/amag09:default
+
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+
+ make amag09:default:flash
+ make amag09:vial:flash
+
+**Reset Key**: Hold down the *upper left* key while plugging in the keyboard.
+
+**Tips**:
+- The keyboard comes with bootloadHID installed from factory.
+- The configuration here is for the single color LED keyboard. RGB versions are presumed to be i2c like the amag23
+
+Based on keyboards/amag23 by ianmclinden
+
+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/koolertron/amag09/rules.mk b/keyboards/koolertron/amag09/rules.mk
new file mode 100644
index 0000000000..ad892c12c4
--- /dev/null
+++ b/keyboards/koolertron/amag09/rules.mk
@@ -0,0 +1 @@
+# Placeholder so this board is recognized as a target
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/config.h
new file mode 100644
index 0000000000..19115cf3bf
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x79, 0x23, 0xBB, 0xEF, 0xD1, 0xA9, 0x46, 0x7B}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
\ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/keymap.c b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..fffd6d3b17
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/keymap.c
@@ -0,0 +1,110 @@
+/* Copyright 2020 Team Mechlovin
+ *
+ * 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 my_keycodes {
+ BL_TOG = USER00,
+ BL_EFFECT,
+ BL_ISPD,
+ BL_DSPD,
+ BL_IHUE,
+ BL_DHUE,
+ BL_ISAT,
+ BL_DSAT,
+ BL_IVAL,
+ BL_DVAL
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_SPC, 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_BSPC, KC_DEL,
+ KC_SPC, 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_SLSH,
+ KC_SPC, 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_BSLS, MO(1), KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
+ [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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+ [2] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, BL_TOG, BL_EFFECT, BL_ISPD, BL_DSPD, BL_IHUE, BL_DHUE, BL_ISAT, BL_DSAT, BL_IVAL, BL_DVAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
+ // Encoder 1
+};
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+#ifdef RGB_MATRIX_ENABLE
+ case BL_TOG: // toggle rgb matrix
+ rgb_matrix_toggle();
+ return false;
+ case BL_EFFECT:
+ rgb_matrix_step();
+ return false;
+ case BL_ISPD:
+ rgb_matrix_increase_speed();
+ return false;
+ case BL_DSPD:
+ rgb_matrix_decrease_speed();
+ return false;
+ case BL_IHUE:
+ rgb_matrix_increase_hue();
+ return false;
+ case BL_DHUE:
+ rgb_matrix_decrease_hue();
+ return false;
+ case BL_ISAT:
+ rgb_matrix_increase_sat();
+ return false;
+ case BL_DSAT:
+ rgb_matrix_decrease_sat();
+ return false;
+ case BL_IVAL:
+ rgb_matrix_increase_val();
+ return false;
+ case BL_DVAL:
+ rgb_matrix_decrease_val();
+ return false;
+#endif
+ default:
+ break;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/readme.md b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/readme.md
new file mode 100644
index 0000000000..2fb9a5a6b5
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/readme.md
@@ -0,0 +1,5 @@
+# The Vial keymap for Adelais en Ciel Rev. 3
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/adelais/rgb_led/rev3:vial
\ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/rules.mk b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..de611a34ff
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+LTO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
+COMBO_ENABLE = no
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/vial.json b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d163d58253
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/keymaps/vial/vial.json
@@ -0,0 +1,323 @@
+{
+ "name": "Adelais En Ciel Rev.3 DEV",
+ "vendorId": "0x4D4C",
+ "productId": "0xAEC4",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "Backlight Toggle", "title": "Backlight Toggle", "shortName": "BL_TOG"},
+ {"name": "Backlight Effect", "title": "Backlight Effect", "shortName": "BL_EFFECT"},
+ {"name": "Backlight Increase Speed", "title": "Backlight Increase Speed", "shortName": "BL_ISPD"},
+ {"name": "Backlight Decrease Speed", "title": "Backlight Decrease Speed", "shortName": "BL_DSPD"},
+ {"name": "Backlight Increase Hue", "title": "Backlight Increase Hue", "shortName": "BL_IHUE"},
+ {"name": "Backlight Decrease Hue", "title": "Backlight Decrease Hue", "shortName": "BL_DHUE"},
+ {"name": "Backlight Increase Saturation", "title": "Backlight Increase Saturation", "shortName": "BL_ISAT"},
+ {"name": "Backlight Decrease Saturation", "title": "Backlight Decrease Saturation", "shortName": "BL_DSAT"},
+ {"name": "Backlight Increase Value", "title": "Backlight Increase Value", "shortName": "BL_IVAL"},
+ {"name": "Backlight Decrease Value", "title": "Backlight Decrease Value", "shortName": "BL_DVAL"}
+ ],
+ "matrix": {"rows": 5, "cols": 15},
+ "layouts": {
+ "labels": [
+ "Back Space 2U",
+ "Right Shift 2.75U",
+ "Split Space",
+ "Encoder"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "3,0\n\n\n\n\n\n\n\n\ne",
+ "3,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.85,
+ "x": 15.15,
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "0,13\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 0.55,
+ "c": "#777777"
+ },
+ "3,1"
+ ],
+ [
+ {
+ "y": -0.95,
+ "x": 3.7,
+ "c": "#cccccc"
+ },
+ "0,2",
+ {
+ "x": 8.45
+ },
+ "0,11"
+ ],
+ [
+ {
+ "y": -0.95,
+ "x": 1.7
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 10.45
+ },
+ "0,12",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,13\n\n\n0,0",
+ "0,14\n\n\n0,0"
+ ],
+ [
+ {
+ "y": -0.10000000000000009,
+ "x": 0.35
+ },
+ "4,1"
+ ],
+ [
+ {
+ "y": -0.9499999999999997,
+ "x": 13,
+ "c": "#cccccc"
+ },
+ "1,10"
+ ],
+ [
+ {
+ "y": -0.9500000000000002,
+ "x": 1.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ {
+ "x": 10
+ },
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "y": -0.10000000000000009,
+ "x": 0.15
+ },
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.9000000000000004,
+ "x": 13.4,
+ "c": "#cccccc"
+ },
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,13"
+ ],
+ [
+ {
+ "y": -0.9999999999999996,
+ "x": 1.3,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1"
+ ],
+ [
+ {
+ "x": 1.05,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ {
+ "x": 8.8
+ },
+ "3,11",
+ "3,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,13\n\n\n1,0",
+ "3,14\n\n\n1,0",
+ {
+ "x": 0.3000000000000007,
+ "w": 2.75
+ },
+ "3,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 1.05,
+ "w": 1.5
+ },
+ "4,0",
+ {
+ "x": 13.45,
+ "w": 1.5
+ },
+ "4,14"
+ ],
+ [
+ {
+ "r": 12,
+ "y": -6,
+ "x": 5.05,
+ "c": "#cccccc"
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6"
+ ],
+ [
+ {
+ "x": 4.6
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5"
+ ],
+ [
+ {
+ "x": 4.85
+ },
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5"
+ ],
+ [
+ {
+ "x": 5.3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6"
+ ],
+ [
+ {
+ "x": 6.6,
+ "c": "#777777",
+ "w": 2
+ },
+ "4,4\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,6\n\n\n2,0"
+ ],
+ [
+ {
+ "y": -0.9500000000000002,
+ "x": 5.05,
+ "w": 1.5
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.5,
+ "c": "#777777",
+ "w": 2.25
+ },
+ "4,4\n\n\n2,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,6\n\n\n2,1"
+ ],
+ [
+ {
+ "r": -12,
+ "y": -2.7,
+ "x": 8.45,
+ "c": "#cccccc"
+ },
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10"
+ ],
+ [
+ {
+ "x": 8.05
+ },
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9"
+ ],
+ [
+ {
+ "x": 8.2
+ },
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10"
+ ],
+ [
+ {
+ "x": 7.75,
+ "c": "#777777",
+ "w": 2.75
+ },
+ "4,8"
+ ],
+ [
+ {
+ "y": -0.9500000000000002,
+ "x": 10.55,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/config.h
new file mode 100644
index 0000000000..fc7d8b8d43
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x68, 0x75, 0xF6, 0x35, 0xEF, 0xAB, 0xEF, 0xEA}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/keymap.c b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..f4cf26ab4e
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/keymap.c
@@ -0,0 +1,119 @@
+/* Copyright 2020 Team Mechlovin
+ *
+ * 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 my_keycodes {
+ BL_TOG = USER00,
+ BL_EFFECT,
+ BL_ISPD,
+ BL_DSPD,
+ BL_IHUE,
+ BL_DHUE,
+ BL_ISAT,
+ BL_DSAT,
+ BL_IVAL,
+ BL_DVAL
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_SPC, 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_BSPC, KC_DEL,
+ KC_SPC, 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_SLSH,
+ KC_SPC, 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_BSLS, MO(1), KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
+ [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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+ [2] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, BL_TOG, BL_EFFECT, BL_ISPD, BL_DSPD, BL_IHUE, BL_DHUE, BL_ISAT, BL_DSAT, BL_IVAL, BL_DVAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
+};
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_LEFT);
+ } else {
+ tap_code(KC_RGHT);
+ }
+ } else if (index == 2) {
+ if (clockwise) {
+ tap_code(KC_UP);
+ } else {
+ tap_code(KC_DOWN);
+ }
+ }
+ return true;
+}
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+#ifdef RGB_MATRIX_ENABLE
+ case BL_TOG: // toggle rgb matrix
+ rgb_matrix_toggle();
+ return false;
+ case BL_EFFECT:
+ rgb_matrix_step();
+ return false;
+ case BL_ISPD:
+ rgb_matrix_increase_speed();
+ return false;
+ case BL_DSPD:
+ rgb_matrix_decrease_speed();
+ return false;
+ case BL_IHUE:
+ rgb_matrix_increase_hue();
+ return false;
+ case BL_DHUE:
+ rgb_matrix_decrease_hue();
+ return false;
+ case BL_ISAT:
+ rgb_matrix_increase_sat();
+ return false;
+ case BL_DSAT:
+ rgb_matrix_decrease_sat();
+ return false;
+ case BL_IVAL:
+ rgb_matrix_increase_val();
+ return false;
+ case BL_DVAL:
+ rgb_matrix_decrease_val();
+ return false;
+#endif
+ default:
+ break;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/readme.md b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/readme.md
new file mode 100644
index 0000000000..f26e9b45e6
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/readme.md
@@ -0,0 +1,5 @@
+# The Vial keymap for Adelais Rev. 4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/adelais/standard_led/arm/rev4:vial
\ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/rules.mk b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/vial.json b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/vial.json
new file mode 100644
index 0000000000..ea6c36558e
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/keymaps/vial/vial.json
@@ -0,0 +1,327 @@
+{
+ "name": "Adelais Rev. 4",
+ "vendorId": "0x4D4C",
+ "productId": "0xAD03",
+ "lighting": "qmk_rgblight",
+ "matrix": {"rows": 5, "cols": 15},
+ "layouts": {
+ "labels": [
+ "Split Back Space",
+ "Split Right Shift",
+ "2.25u Left Space"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 15.2,
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "0,13\n\n\n0,1"
+ ],
+ [
+ {
+ "y": -0.10999999999999999,
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "1,14",
+ {
+ "x": 2.25,
+ "c": "#cccccc"
+ },
+ "0,2"
+ ],
+ [
+ {
+ "y": -0.8900000000000001,
+ "x": 1.75
+ },
+ "0,0",
+ "0,1"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 13.2
+ },
+ "0,11"
+ ],
+ [
+ {
+ "y": -0.8500000000000001,
+ "x": 14.2
+ },
+ "0,12",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,13\n\n\n0,0",
+ "0,14\n\n\n0,0"
+ ],
+ [
+ {
+ "y": -0.3600000000000001,
+ "x": 0.25
+ },
+ "2,14"
+ ],
+ [
+ {
+ "y": -0.8899999999999997,
+ "x": 1.5,
+ "w": 1.5
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 12.95
+ },
+ "1,10"
+ ],
+ [
+ {
+ "y": -0.8500000000000001,
+ "x": 13.95
+ },
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "y": -0.3599999999999999
+ },
+ "3,14"
+ ],
+ [
+ {
+ "y": -0.8900000000000001,
+ "x": 1.25,
+ "w": 1.75
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.4
+ },
+ "2,10",
+ "2,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,13"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 1,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.25
+ },
+ "3,11",
+ "4,13",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,12\n\n\n1,0"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 1,
+ "w": 1.5
+ },
+ "4,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 16,
+ "w": 1.5
+ },
+ "4,14"
+ ],
+ [
+ {
+ "rx": 0.75,
+ "y": 6.75,
+ "x": 14.5,
+ "w": 2.75
+ },
+ "3,12\n\n\n1,1"
+ ],
+ [
+ {
+ "rx": 2.25,
+ "ry": 0.75,
+ "y": 3.5,
+ "x": 14.75
+ },
+ "3,13\n\n\n1,0"
+ ],
+ [
+ {
+ "r": 12,
+ "rx": 0,
+ "ry": 0,
+ "x": 5.1,
+ "c": "#cccccc"
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6"
+ ],
+ [
+ {
+ "x": 4.55
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5"
+ ],
+ [
+ {
+ "x": 4.75
+ },
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5"
+ ],
+ [
+ {
+ "x": 5.22
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 1.7763568394002505e-15
+ },
+ "3,6"
+ ],
+ [
+ {
+ "x": 6.5,
+ "c": "#777777",
+ "w": 2
+ },
+ "4,4\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,6\n\n\n2,0"
+ ],
+ [
+ {
+ "y": -0.9000000000000004,
+ "x": 5,
+ "w": 1.5
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.5,
+ "c": "#777777",
+ "w": 2.25
+ },
+ "4,4\n\n\n2,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,6\n\n\n2,1"
+ ],
+ [
+ {
+ "r": -12,
+ "y": -2.5999999999999996,
+ "x": 8.5,
+ "c": "#cccccc"
+ },
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10"
+ ],
+ [
+ {
+ "x": 8
+ },
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9"
+ ],
+ [
+ {
+ "x": 8.25
+ },
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10"
+ ],
+ [
+ {
+ "x": 7.75,
+ "c": "#777777",
+ "w": 2.75
+ },
+ "4,8"
+ ],
+ [
+ {
+ "y": -0.8499999999999996,
+ "x": 10.5,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/mechlovin/infinity87/keymaps/vial/config.h b/keyboards/mechlovin/infinity87/keymaps/vial/config.h
new file mode 100644
index 0000000000..9752c87fae
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x8D, 0xEE, 0x7B, 0x90, 0x7B, 0x12, 0x87, 0x19}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 16 }
diff --git a/keyboards/mechlovin/infinity87/keymaps/vial/keymap.c b/keyboards/mechlovin/infinity87/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..bd15bd1fd9
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/keymaps/vial/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2023 Gabriel Levrel
+ *
+ * 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(
+ 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_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/infinity87/keymaps/vial/rules.mk b/keyboards/mechlovin/infinity87/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..7d28ec17d3
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+COMMAND_ENABLE = no
+CONSOLE_ENABLE = no
diff --git a/keyboards/mechlovin/infinity87/keymaps/vial/vial.json b/keyboards/mechlovin/infinity87/keymaps/vial/vial.json
new file mode 100644
index 0000000000..c88526b9b3
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/keymaps/vial/vial.json
@@ -0,0 +1,203 @@
+{
+ "lighting": "qmk_backlight_rgblight",
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ ["Enter", "ANSI Enter", "ISO Enter", "1.25u Enter"],
+ "ISO Left Shift",
+ ["Right Shift", "ANSI Right Shift", "1u - 1.75u", "1.75u - 1u"],
+ ["Bottom Row", "6.25u", "7u", "6u"]
+ ],
+ "keymap": [
+ [
+ {"x": 2.5},
+ "0,0",
+ {"x": 1},
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {"x": 0.5},
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {"x": 0.5},
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {"x": 0.25},
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {"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,13\n\n\n0,0",
+ {"x": 0.25},
+ "1,14",
+ "1,15",
+ "1,16",
+ {"x": 1},
+ "1,13\n\n\n0,1",
+ "0,13\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,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 1.75,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "3,13\n\n\n1,1",
+ {"x": 1.5, "w": 1.5},
+ "2,13\n\n\n1,2"
+ ],
+ [
+ {"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": 4},
+ "3,12\n\n\n1,1",
+ {"x": 2},
+ "3,12\n\n\n1,2",
+ {"w": 1.25},
+ "3,13\n\n\n1,2"
+ ],
+ [
+ {"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,13\n\n\n3,0",
+ {"x": 1.25},
+ "4,15",
+ {"x": 1.25},
+ "4,12\n\n\n3,1",
+ {"w": 1.75},
+ "4,13\n\n\n3,1",
+ {"x": 0.25, "w": 1.75},
+ "4,12\n\n\n3,2",
+ "4,13\n\n\n3,2"
+ ],
+ [
+ {"x": 2.5, "w": 1.25},
+ "5,0\n\n\n4,0",
+ {"w": 1.25},
+ "5,1\n\n\n4,0",
+ {"w": 1.25},
+ "5,2\n\n\n4,0",
+ {"w": 6.25},
+ "5,6\n\n\n4,0",
+ {"w": 1.25},
+ "5,10\n\n\n4,0",
+ {"w": 1.25},
+ "5,11\n\n\n4,0",
+ {"w": 1.25},
+ "5,12\n\n\n4,0",
+ {"w": 1.25},
+ "5,13\n\n\n4,0",
+ {"x": 0.25},
+ "5,14",
+ "5,15",
+ "5,16"
+ ],
+ [
+ {"y": 0.25, "x": 2.5, "w": 1.5},
+ "5,0\n\n\n4,1",
+ "5,1\n\n\n4,1",
+ {"w": 1.5},
+ "5,2\n\n\n4,1",
+ {"w": 7},
+ "5,6\n\n\n4,1",
+ {"w": 1.5},
+ "5,11\n\n\n4,1",
+ "5,12\n\n\n4,1",
+ {"w": 1.5},
+ "5,13\n\n\n4,1"
+ ],
+ [
+ {"x": 2.5, "w": 1.25},
+ "5,0\n\n\n4,2",
+ {"w": 0.75, "d": true},
+ "\n\n\n4,2",
+ {"w": 1.25},
+ "5,1\n\n\n4,2",
+ {"w": 1.25},
+ "5,2\n\n\n4,2",
+ {"w": 6},
+ "5,6\n\n\n4,2",
+ {"w": 1.25},
+ "5,10\n\n\n4,2",
+ {"w": 1.25},
+ "5,11\n\n\n4,2",
+ {"w": 0.75, "d": true},
+ "\n\n\n4,2",
+ {"w": 1.25},
+ "5,13\n\n\n4,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/mechlovin/jay60/keymaps/vial/config.h b/keyboards/mechlovin/jay60/keymaps/vial/config.h
new file mode 100644
index 0000000000..a9982c34d5
--- /dev/null
+++ b/keyboards/mechlovin/jay60/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xED, 0x27, 0xA0, 0x71, 0x36, 0x44, 0x16, 0x13}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
diff --git a/keyboards/mechlovin/jay60/keymaps/vial/keymap.c b/keyboards/mechlovin/jay60/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..ed73cc5267
--- /dev/null
+++ b/keyboards/mechlovin/jay60/keymaps/vial/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = 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_GRV,
+ 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_LCTL, 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_LALT, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_all(
+ 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_PSCR,
+ 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_BSPC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_DOWN, KC_END, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/mechlovin/jay60/keymaps/vial/rules.mk b/keyboards/mechlovin/jay60/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..d2df3b4b86
--- /dev/null
+++ b/keyboards/mechlovin/jay60/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = no
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/mechlovin/jay60/keymaps/vial/vial.json b/keyboards/mechlovin/jay60/keymaps/vial/vial.json
new file mode 100644
index 0000000000..33a9c64e1c
--- /dev/null
+++ b/keyboards/mechlovin/jay60/keymaps/vial/vial.json
@@ -0,0 +1,127 @@
+{
+ "name": "Jay60 Rev.1",
+ "vendorId": "0x4D4C",
+ "productId": "0x0600",
+ "lighting": "none",
+ "matrix": {"rows": 5, "cols": 14},
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "2.75U Right Shift",
+ ["Bottom Row", "6.25U", "7U"]
+ ],
+ "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},
+ "0,13\n\n\n0,0",
+ {"x": 0.25},
+ "0,13\n\n\n0,1",
+ "2,12\n\n\n0,1"
+ ],
+ [
+ {"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",
+ {"c": "#aaaaaa", "w": 1.5},
+ "1,13"
+ ],
+ [
+ {"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": 1.75},
+ "3,12\n\n\n1,0",
+ "3,13\n\n\n1,0",
+ {"x": 0.25, "w": 2.75},
+ "3,12\n\n\n1,1"
+ ],
+ [
+ {"w": 1.25},
+ "4,0\n\n\n2,0",
+ {"w": 1.25},
+ "4,1\n\n\n2,0",
+ {"w": 1.25},
+ "4,2\n\n\n2,0",
+ {"c": "#cccccc", "w": 6.25},
+ "4,6\n\n\n2,0",
+ {"c": "#aaaaaa", "w": 1.25},
+ "4,10\n\n\n2,0",
+ {"w": 1.25},
+ "4,11\n\n\n2,0",
+ {"w": 1.25},
+ "4,12\n\n\n2,0",
+ {"w": 1.25},
+ "4,13\n\n\n2,0"
+ ],
+ [
+ {"y": 0.5, "w": 1.5},
+ "4,0\n\n\n2,1",
+ "4,1\n\n\n2,1",
+ {"w": 1.5},
+ "4,2\n\n\n2,1",
+ {"c": "#cccccc", "w": 7},
+ "4,6\n\n\n2,1",
+ {"c": "#aaaaaa", "w": 1.5},
+ "4,11\n\n\n2,1",
+ "4,12\n\n\n2,1",
+ {"w": 1.5},
+ "4,13\n\n\n2,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/vial/config.h b/keyboards/meletrix/zoom65_lite/keymaps/vial/config.h
new file mode 100644
index 0000000000..74bcea52f9
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBB, 0x38, 0x62, 0xAC, 0x5F, 0x1D, 0x0B, 0x91}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/vial/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..cfd34fe622
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 meletrix
+ *
+ * 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
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = 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_BSPC, KC_BSPC, KC_VOLU, KC_MUTE, KC_VOLD,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_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_PGUP,
+ KC_LSFT, 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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ 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_MNXT, KC_MPLY, KC_MPRV,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/vial/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/vial/readme.md
new file mode 100644
index 0000000000..a5eb91374e
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/vial/readme.md
@@ -0,0 +1,13 @@
+# The Vial keymap for Zoom65 Lite
+
+This is the Vial keymap for the Zoom65 Lite.
+
+Several (arbitrary) QMK features have been modified / disabled to reduce the size of the final firmware binary and make it fit in the (otherwise kind of limited) memory of the `atmega32u4` microcontroller.
+
+These arbitrary configurations are:
+
+- reduce the number predefined keyboard layouts to 3
+- disable *key override* feature
+- disable *combo* feature
+
+If you any of the above configuration decisions conflicts with your needs, feel free to adjust the configuration as long as the final binary still fits in the microcontroller memory.
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/vial/rules.mk b/keyboards/meletrix/zoom65_lite/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..90a8b087d0
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/vial/vial.json b/keyboards/meletrix/zoom65_lite/keymaps/vial/vial.json
new file mode 100644
index 0000000000..e248c37944
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/vial/vial.json
@@ -0,0 +1,139 @@
+{
+ "name": "Zoom65 Lite",
+ "vendorId": "0x806C",
+ "productId": "0x0005",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 15
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "Split Spacebar"
+ ],
+ "keymap": [
+ [{ "x": 15.5 }, "1,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",
+ { "w": 2 },
+ "0,13\n\n\n0,0",
+ { "x": 1.25 },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ { "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",
+ { "w": 1.5 },
+ "1,13\n\n\n1,0",
+ "1,14",
+ { "x": 0.75 },
+ "0,14",
+ {
+ "x": 1.75,
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "1,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",
+ { "w": 2.25 },
+ "2,12\n\n\n1,0",
+ "2,14",
+ { "x": 2.5 },
+ "2,12\n\n\n1,1"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0\n\n\n2,1",
+ "3,1\n\n\n2,1",
+ { "x": 0.25, "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",
+ "3,13",
+ "3,14"
+ ],
+ [
+ { "x": 2.5, "w": 1.25 },
+ "4,0",
+ { "w": 1.25 },
+ "4,1",
+ { "w": 1.25 },
+ "4,2",
+ { "w": 6.25 },
+ "4,6\n\n\n3,0",
+ { "w": 1.25 },
+ "4,10",
+ { "w": 1.25 },
+ "4,11",
+ { "x": 0.5 },
+ "4,12",
+ "4,13",
+ "4,14"
+ ],
+ [
+ { "y": 0.25, "x": 6.25, "w": 2.25 },
+ "4,4\n\n\n3,1",
+ { "w": 1.25 },
+ "4,6\n\n\n3,1",
+ { "w": 2.75 },
+ "4,8\n\n\n3,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/mini49/info.json b/keyboards/mini49/info.json
new file mode 100644
index 0000000000..156722ec10
--- /dev/null
+++ b/keyboards/mini49/info.json
@@ -0,0 +1,81 @@
+{
+ "manufacturer": "HSS",
+ "keyboard_name": "mini49",
+ "maintainer": "pcs3rd",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"],
+ "rows": ["GP10", "GP11", "GP12", "GP13", "GP14"]
+ },
+ "processor": "RP2040",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xBEEF"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
+ { "label": "K01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 },
+ { "label": "K02", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
+ { "label": "K03", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
+ { "label": "K04", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
+ { "label": "K05", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
+ { "label": "K06", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 },
+ { "label": "K07", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 },
+ { "label": "K08", "matrix": [0, 8], "w": 1, "x": 8, "y": 0 },
+ { "label": "K09", "matrix": [0, 9], "w": 1, "x": 9, "y": 0 },
+ { "label": "K10", "matrix": [1, 0], "w": 1, "x": 0, "y": 1 },
+ { "label": "K11", "matrix": [1, 1], "w": 1, "x": 1, "y": 1 },
+ { "label": "K12", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 },
+ { "label": "K13", "matrix": [1, 3], "w": 1, "x": 3, "y": 1 },
+ { "label": "K14", "matrix": [1, 4], "w": 1, "x": 4, "y": 1 },
+ { "label": "K15", "matrix": [1, 5], "w": 1, "x": 5, "y": 1 },
+ { "label": "K16", "matrix": [1, 6], "w": 1, "x": 6, "y": 1 },
+ { "label": "K17", "matrix": [1, 7], "w": 1, "x": 7, "y": 1 },
+ { "label": "K18", "matrix": [1, 8], "w": 1, "x": 8, "y": 1 },
+ { "label": "K19", "matrix": [1, 9], "w": 1, "x": 9, "y": 1 },
+ { "label": "K20", "matrix": [2, 0], "w": 1, "x": 0, "y": 2 },
+ { "label": "K21", "matrix": [2, 1], "w": 1, "x": 1, "y": 2 },
+ { "label": "K22", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 },
+ { "label": "K23", "matrix": [2, 3], "w": 1, "x": 3, "y": 2 },
+ { "label": "K24", "matrix": [2, 4], "w": 1, "x": 4, "y": 2 },
+ { "label": "K25", "matrix": [2, 5], "w": 1, "x": 5, "y": 2 },
+ { "label": "K26", "matrix": [2, 6], "w": 1, "x": 6, "y": 2 },
+ { "label": "K27", "matrix": [2, 7], "w": 1, "x": 7, "y": 2 },
+ { "label": "K28", "matrix": [2, 8], "w": 1, "x": 8, "y": 2 },
+ { "label": "K29", "matrix": [2, 9], "w": 1, "x": 9, "y": 2 },
+ { "label": "K30", "matrix": [3, 0], "w": 1, "x": 0, "y": 3 },
+ { "label": "K31", "matrix": [3, 1], "w": 1, "x": 1, "y": 3 },
+ { "label": "K32", "matrix": [3, 2], "w": 1, "x": 2, "y": 3 },
+ { "label": "K33", "matrix": [3, 3], "w": 1, "x": 3, "y": 3 },
+ { "label": "K34", "matrix": [3, 4], "w": 1, "x": 4, "y": 3 },
+ { "label": "K35", "matrix": [3, 5], "w": 1, "x": 5, "y": 3 },
+ { "label": "K36", "matrix": [3, 6], "w": 1, "x": 6, "y": 3 },
+ { "label": "K37", "matrix": [3, 7], "w": 1, "x": 7, "y": 3 },
+ { "label": "K38", "matrix": [3, 8], "w": 1, "x": 8, "y": 3 },
+ { "label": "K39", "matrix": [3, 9], "w": 1, "x": 9, "y": 3 },
+ { "label": "K40", "matrix": [4, 0], "w": 1, "x": 0, "y": 4 },
+ { "label": "K41", "matrix": [4, 1], "w": 1, "x": 1, "y": 4 },
+ { "label": "K42", "matrix": [4, 2], "w": 1, "x": 2, "y": 4 },
+ { "label": "K43", "matrix": [4, 3], "w": 1, "x": 3, "y": 4 },
+ { "label": "K45", "matrix": [4, 5], "w": 1, "x": 4, "y": 4 },
+ { "label": "K46", "matrix": [4, 6], "w": 1, "x": 5, "y": 4 },
+ { "label": "K47", "matrix": [4, 7], "w": 1, "x": 6, "y": 4 },
+ { "label": "K48", "matrix": [4, 8], "w": 1, "x": 7, "y": 4 },
+ { "label": "K49", "matrix": [4, 9], "w": 1, "x": 8, "y": 4 }
+ ]
+ }
+ }
+
+}
diff --git a/keyboards/mini49/keymaps/default/keymap.c b/keyboards/mini49/keymaps/default/keymap.c
new file mode 100644
index 0000000000..69a9e21a35
--- /dev/null
+++ b/keyboards/mini49/keymaps/default/keymap.c
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC,
+ 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_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/mini49/keymaps/default/rules.mk b/keyboards/mini49/keymaps/default/rules.mk
new file mode 100644
index 0000000000..7e4fd5d349
--- /dev/null
+++ b/keyboards/mini49/keymaps/default/rules.mk
@@ -0,0 +1 @@
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/mini49/keymaps/vial/config.h b/keyboards/mini49/keymaps/vial/config.h
new file mode 100644
index 0000000000..2ccfe974e6
--- /dev/null
+++ b/keyboards/mini49/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5C, 0x8A, 0x21, 0xB3, 0x82, 0x40, 0xF6, 0x11}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
+#define VIAL_UNLOCK_COMBO_COLS {0, 9}
+
+#define DYNAMIC_KEYMAP_MACRO_COUNT 32
+#define DYNAMIC_KEYMAP_LAYER_COUNT 12
+
diff --git a/keyboards/mini49/keymaps/vial/keymap.c b/keyboards/mini49/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..a412eeb784
--- /dev/null
+++ b/keyboards/mini49/keymaps/vial/keymap.c
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC,
+ 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_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LSFT, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
diff --git a/keyboards/mini49/keymaps/vial/rules.mk b/keyboards/mini49/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..7e2cda2ab0
--- /dev/null
+++ b/keyboards/mini49/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+MIDI_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/mini49/keymaps/vial/vial.json b/keyboards/mini49/keymaps/vial/vial.json
new file mode 100644
index 0000000000..40cffe2c13
--- /dev/null
+++ b/keyboards/mini49/keymaps/vial/vial.json
@@ -0,0 +1,19 @@
+{
+ "name": "mini49",
+ "vendorId": "0xBEEF",
+ "productId": "0x0000",
+ "lighting": "none",
+ "matrix": {"rows": 5, "cols": 10},
+ "layouts": {
+ "keymap": [
+ ["0,0","0,1","0,2","0,3","0,4","0,5","0,6","0,7","0,8","0,9"],
+ ["1,0","1,1","1,2","1,3","1,4","1,5","1,6","1,7","1,8","1,9"],
+ ["2,0","2,1","2,2","2,3","2,4","2,5","2,6","2,7","2,8","2,9"],
+ ["3,0","3,1","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9"],
+ ["4,0","4,1","4,2","4,3",{"w": 2 }, "4,5","4,6","4,7","4,8", "4,9"]
+ ]
+ },
+ "vial": {
+ "midi": "advanced"
+ }
+}
\ No newline at end of file
diff --git a/keyboards/mini49/readme.md b/keyboards/mini49/readme.md
new file mode 100644
index 0000000000..a68a5ee0fe
--- /dev/null
+++ b/keyboards/mini49/readme.md
@@ -0,0 +1,29 @@
+# mini49
+
+
+![mini49](https://cloud.stickpile.net/apps/files_sharing/publicpreview/YkYfcoeLRmHpfy2?file=/&fileId=225288&x=1080&y=1920&a=true)
+
+A sub-60% ortholinear keyboard powered by vial-qmk.
+
+* Keyboard Maintainer: [Raymond Dean][def]
+* Hardware Supported: *RP2040*
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mini49:vial
+
+Flashing example for this keyboard:
+
+ make mini49:vial: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. Bootmagic is not enabled in the vial layout.
+- Physical reset: Hold the BOOT button down while pressing the RESET button.
+- Keycode in layout: Press the key mapped to QK_BOOT if it is available
+
+[def]: https://github.com/pcs3rd
diff --git a/keyboards/mini49/rules.mk b/keyboards/mini49/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mini49/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/mode/m75h/keymaps/vial/config.h b/keyboards/mode/m75h/keymaps/vial/config.h
new file mode 100644
index 0000000000..853449a33a
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF0, 0x43, 0xB4, 0x31, 0xB5, 0x0C, 0x27, 0x6F}
+
+/* Unlock with esc / del */
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 15 }
diff --git a/keyboards/mode/m75h/keymaps/vial/keymap.c b/keyboards/mode/m75h/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..67acb022d4
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/vial/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato
+
+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(
+ 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_DEL ,
+ 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_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_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_END ,
+ KC_LCTL , KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [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_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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/mode/m75h/keymaps/vial/rules.mk b/keyboards/mode/m75h/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/mode/m75h/keymaps/vial/vial.json b/keyboards/mode/m75h/keymaps/vial/vial.json
new file mode 100644
index 0000000000..cc181bbee3
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/vial/vial.json
@@ -0,0 +1,224 @@
+{
+ "name": "Mode SeventyFive H",
+ "vendorId": "0x00DE",
+ "productId": "0x7572",
+ "lighting": "none",
+ "matrix": {"rows": 7, "cols": 16},
+ "layouts": {
+ "labels": ["7U Spacebar"],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5
+ },
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ {
+ "x": 0.5
+ },
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "x": 0.5
+ },
+ "0,15"
+ ],
+ [
+ {
+ "y": 0.5,
+ "c": "#cccccc"
+ },
+ "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",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "c": "#cccccc"
+ },
+ "1,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "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",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,14",
+ {
+ "c": "#cccccc"
+ },
+ "2,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,14",
+ {
+ "c": "#cccccc"
+ },
+ "3,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,12",
+ {
+ "c": "#777777"
+ },
+ "4,14",
+ {
+ "c": "#cccccc"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n0,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "6,6\n\n\n0,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "6,10\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "6,11\n\n\n0,0",
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "6,13",
+ "6,14",
+ "6,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,0\n\n\n0,1",
+ "5,1\n\n\n0,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n0,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "6,6\n\n\n0,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "6,11\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/mode/m75s/keymaps/vial/config.h b/keyboards/mode/m75s/keymaps/vial/config.h
new file mode 100644
index 0000000000..c0bc8a51b7
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x3D, 0x6C, 0x63, 0x19, 0xA7, 0x1F, 0x0E, 0x59}
+
+/* Unlock with esc / del */
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 15 }
diff --git a/keyboards/mode/m75s/keymaps/vial/keymap.c b/keyboards/mode/m75s/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..fafdb6c136
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/vial/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato
+
+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(
+ 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_DEL ,
+ 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_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_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_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, 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_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [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_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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/mode/m75s/keymaps/vial/rules.mk b/keyboards/mode/m75s/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/mode/m75s/keymaps/vial/vial.json b/keyboards/mode/m75s/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d34f7c79f4
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/vial/vial.json
@@ -0,0 +1,267 @@
+{
+ "name": "Mode SeventyFive S",
+ "vendorId": "0x00DE",
+ "productId": "0x7583",
+ "lighting": "none",
+ "matrix": {"rows": 7, "cols": 16},
+ "layouts": {
+ "labels": [
+ "7U Spacebar",
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 15.75
+ },
+ "1,13\n\n\n1,1",
+ "1,14\n\n\n1,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.75,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5
+ },
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ {
+ "x": 0.5
+ },
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "x": 0.5
+ },
+ "0,15"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 2.75,
+ "c": "#cccccc"
+ },
+ "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",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13\n\n\n1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,15"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "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",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,14\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,15",
+ {
+ "x": 1.5,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "3,14\n\n\n2,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,14\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,15",
+ {
+ "x": 0.5
+ },
+ "3,13\n\n\n2,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,0\n\n\n3,1",
+ {
+ "c": "#cccccc"
+ },
+ "4,1\n\n\n3,1",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0\n\n\n3,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,12",
+ {
+ "c": "#777777"
+ },
+ "4,14",
+ {
+ "c": "#cccccc"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n0,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "6,6\n\n\n0,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "6,10\n\n\n0,0",
+ {
+ "w": 1.25
+ },
+ "6,11\n\n\n0,0",
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "6,13",
+ "6,14",
+ "6,15"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,0\n\n\n0,1",
+ "5,1\n\n\n0,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n0,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "6,6\n\n\n0,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "6,11\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/mode/m80v1/m80s/keymaps/vial/config.h b/keyboards/mode/m80v1/m80s/keymaps/vial/config.h
new file mode 100644
index 0000000000..f3a0d8c320
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB5, 0x6B, 0xC8, 0x13, 0xD3, 0xF2, 0x3E, 0x53}
+/* enter key as unlock */
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 12 }
diff --git a/keyboards/mode/m80v1/m80s/keymaps/vial/keymap.c b/keyboards/mode/m80v1/m80s/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..6712f9e1c6
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/keymaps/vial/keymap.c
@@ -0,0 +1,42 @@
+ /*
+Copyright 2012,2013 Jun Wako
+
+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 {
+ _BASE,
+ _FN1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_eighty_m80s(
+ 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_BSPC, KC_MUTE, KC_VOLD, KC_VOLU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_eighty_m80s(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+};
diff --git a/keyboards/mode/m80v1/m80s/keymaps/vial/rules.mk b/keyboards/mode/m80v1/m80s/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b60410dc1a
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/mode/m80v1/m80s/keymaps/vial/vial.json b/keyboards/mode/m80v1/m80s/keymaps/vial/vial.json
new file mode 100644
index 0000000000..d2442e9cc8
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/keymaps/vial/vial.json
@@ -0,0 +1,257 @@
+{
+ "name": "Mode Eighty M80S",
+ "vendorId": "0x00DE",
+ "productId": "0x0080",
+ "lighting": "none",
+ "matrix": {
+ "rows": 6,
+ "cols": 16
+ },
+ "layouts": {
+ "labels": ["Split backspace", "Split Right Shift", "7U bottom row"],
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25
+ },
+ "0,13",
+ "0,14",
+ "0,15"
+ ],
+ [
+ {
+ "y": 0.5,
+ "c": "#777777"
+ },
+ "1,0\n`",
+ {
+ "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",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "3,13\n\n\n0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,13",
+ "1,14",
+ "1,15",
+ {
+ "x": 1.25
+ },
+ "3,13\n\n\n0,1",
+ "3,14\n\n\n0,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "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",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,13",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,13",
+ "2,14",
+ "2,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,12"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,1",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,11\n\n\n1,0",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,14",
+ {
+ "x": 2.25,
+ "c": "#cccccc",
+ "w": 1.75
+ },
+ "4,11\n\n\n1,1",
+ "4,12\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,9\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "5,10\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "5,11\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "5,12\n\n\n2,0",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,13",
+ "5,14",
+ "5,15"
+ ],
+ [
+ {
+ "y": 0.25,
+ "c": "#cccccc",
+ "w": 1.5
+ },
+ "5,0\n\n\n2,1",
+ "5,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n2,1",
+ {
+ "w": 7
+ },
+ "5,6\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "5,10\n\n\n2,1",
+ "5,11\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "5,12\n\n\n2,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/moondrop/dash75/keymaps/vial/config.h b/keyboards/moondrop/dash75/keymaps/vial/config.h
new file mode 100644
index 0000000000..38194d0836
--- /dev/null
+++ b/keyboards/moondrop/dash75/keymaps/vial/config.h
@@ -0,0 +1,10 @@
+// Copyright 2023 moondroplab (@moondroplab)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+#define VIAL_KEYBOARD_UID {0xF5, 0xD5, 0x49, 0x62, 0xFE, 0x77, 0x30, 0x64}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/moondrop/dash75/keymaps/vial/keymap.c b/keyboards/moondrop/dash75/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..76ad4c55aa
--- /dev/null
+++ b/keyboards/moondrop/dash75/keymaps/vial/keymap.c
@@ -0,0 +1,24 @@
+// Copyright 2023 moondroplab (@moondroplab)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_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_PGUP,
+ 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_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/moondrop/dash75/keymaps/vial/rules.mk b/keyboards/moondrop/dash75/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..f24b31f0a7
--- /dev/null
+++ b/keyboards/moondrop/dash75/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+# Vial options
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/moondrop/dash75/keymaps/vial/vial.json b/keyboards/moondrop/dash75/keymaps/vial/vial.json
new file mode 100644
index 0000000000..b609ec4c18
--- /dev/null
+++ b/keyboards/moondrop/dash75/keymaps/vial/vial.json
@@ -0,0 +1,13 @@
+{
+ "matrix": {"rows": 6, "cols": 15},
+ "layouts": {
+ "keymap":[
+ [{"c":"#777777"},"0,0",{"x":0.5,"c":"#cccccc"},"0,1","0,2","0,3","0,4",{"x":0.5},"0,6","0,7","0,8","0,9",{"x":0.5},"0,10","0,11","0,12","0,13",{"x":0.5},"0,14"],
+ [{"y":0.25},"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,13","1,14"],
+ [{"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","2,14"],
+ [{"c":"#aaaaaa","w":1.75},"3,0",{"c":"#cccccc"},"3,1","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9","3,10","3,11",{"c":"#777777","w":2.25},"3,13",{"c":"#cccccc"},"3,14"],
+ [{"c":"#aaaaaa","w":2.25},"4,0",{"c":"#cccccc"},"4,1","4,2","4,3","4,4","4,5","4,6","4,7","4,8","4,9","4,10",{"c":"#aaaaaa","w":1.75},"4,12",{"c":"#777777"},"4,13",{"c":"#cccccc"},"4,14"],
+ [{"c":"#aaaaaa","w":1.25},"5,0",{"w":1.25},"5,1",{"w":1.25},"5,2",{"c":"#cccccc","w":6.25},"5,5",{"c":"#aaaaaa","w":1.25},"5,9",{"w":1.25},"5,10",{"x":0.5,"c":"#777777"},"5,12","5,13","5,14"]
+ ]
+ }
+}
diff --git a/keyboards/moondrop/dash75/r1/config.h b/keyboards/moondrop/dash75/r1/config.h
index 16b6125a2d..1fc7844cab 100644
--- a/keyboards/moondrop/dash75/r1/config.h
+++ b/keyboards/moondrop/dash75/r1/config.h
@@ -3,7 +3,9 @@
#pragma once
-#define SERIAL_NUMBER "Dash 75"
+#ifndef SERIAL_NUMBER
+# define SERIAL_NUMBER "Dash 75"
+#endif
#define USB_SUSPEND_WAKEUP_DELAY 5000 // wait for USB hub to start
diff --git a/keyboards/moondrop/dash75/r1/info.json b/keyboards/moondrop/dash75/r1/info.json
index b562070dc9..d908748c6c 100644
--- a/keyboards/moondrop/dash75/r1/info.json
+++ b/keyboards/moondrop/dash75/r1/info.json
@@ -1,6 +1,6 @@
{
"usb": {
"pid": "0x7501",
- "device_version": "1.5.0"
+ "device_version": "1.6.0"
}
}
diff --git a/keyboards/mt/ncr80/hotswap/keymaps/vial/config.h b/keyboards/mt/ncr80/hotswap/keymaps/vial/config.h
new file mode 100644
index 0000000000..5d5d6511da
--- /dev/null
+++ b/keyboards/mt/ncr80/hotswap/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF4, 0x0E, 0x00, 0x77, 0xA2, 0x55, 0x5A, 0x3E}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/mt/ncr80/hotswap/keymaps/vial/keymap.c b/keyboards/mt/ncr80/hotswap/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..fb95978a30
--- /dev/null
+++ b/keyboards/mt/ncr80/hotswap/keymaps/vial/keymap.c
@@ -0,0 +1,33 @@
+/*
+ * 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_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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_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, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/mt/ncr80/hotswap/keymaps/vial/rules.mk b/keyboards/mt/ncr80/hotswap/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..46f9f1360f
--- /dev/null
+++ b/keyboards/mt/ncr80/hotswap/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mt/ncr80/hotswap/keymaps/vial/vial.json b/keyboards/mt/ncr80/hotswap/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6cc7dbfd70
--- /dev/null
+++ b/keyboards/mt/ncr80/hotswap/keymaps/vial/vial.json
@@ -0,0 +1,127 @@
+{
+ "name": "NCR-80 Hotswap",
+ "vendorId": "0x4D54",
+ "productId": "0x2002",
+ "lighting": "none",
+ "matrix": {
+ "rows": 11,
+ "cols": 9
+ },
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ { "x": 1 },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ { "x": 0.5 },
+ "0,6",
+ "0,7",
+ "0,8",
+ "6,8",
+ { "x": 0.5 },
+ "6,7",
+ "6,5",
+ "6,4",
+ "6,3"
+ ],
+ [
+ { "y": 0.5 },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "7,8",
+ "7,0",
+ "7,7",
+ "7,5",
+ { "w": 2 },
+ "7,3",
+ { "x": 0.25 },
+ "7,6",
+ "7,2",
+ "7,1"
+ ],
+ [
+ { "w": 1.5 },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "8,8",
+ "8,7",
+ "8,5",
+ "8,4",
+ { "w": 1.5 },
+ "8,3",
+ { "x": 0.25 },
+ "8,6",
+ "8,2",
+ "8,1"
+ ],
+ [
+ { "w": 1.75 },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "9,8",
+ "9,7",
+ "9,5",
+ { "w": 2.25 },
+ "9,3"
+ ],
+ [
+ { "w": 2.25 },
+ "4,0",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "10,8",
+ "10,7",
+ "10,5",
+ { "w": 2.75 },
+ "10,4",
+ { "x": 1.25 },
+ "9,2"
+ ],
+ [
+ { "w": 1.5 },
+ "5,0",
+ { "x": 1, "w": 1.5 },
+ "5,2",
+ { "w": 7 },
+ "5,6",
+ { "w": 1.5 },
+ "5,7",
+ { "x": 1, "w": 1.5 },
+ "5,3",
+ { "x": 0.25 },
+ "10,6",
+ "10,2",
+ "10,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/nack/keymaps/vial/config.h b/keyboards/nack/keymaps/vial/config.h
new file mode 100644
index 0000000000..00112646cc
--- /dev/null
+++ b/keyboards/nack/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+#define VIAL_KEYBOARD_UID {0x92, 0x63, 0xA4, 0xD0, 0x7B, 0xD6, 0xE9, 0x86}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 12 }
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/nack/keymaps/vial/keymap.c b/keyboards/nack/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..896ddbb755
--- /dev/null
+++ b/keyboards/nack/keymaps/vial/keymap.c
@@ -0,0 +1,65 @@
+/* Copyright 2020 farfalleflickan
+ *
+ * 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,
+ NUM,
+ FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+/* __________________________________________________________________________________________________________________________________________________________________________
+ | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */
+// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---|
+ 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,
+// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----|
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_BSPC,
+// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENETER---|-LEFT-------|---DOWN-----|--RIGHT-----|
+ KC_LCTL, KC_LALT, KC_LGUI, MO(NUM), KC_SPC, KC_NO, MO(FN), KC_RALT, KC_NUBS, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT
+// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|
+ ),
+ [NUM] = LAYOUT(
+/* __________________________________________________________________________________________________________________________________________________________________________
+ | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */
+// | |---TAB------|---( 1! )---|--( 2"@ )---|--( 3#£ )---|---( 4¤$ )--|--( 5%€ )---|---( 6& )---|--( 7/{ )---|--( 8([ )---|--( 9)] )---|--( 0=} )---|---( +?\ )--|---( ´` )---|
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+// | |----ESC-----|-----F1-----|-----F2-----|----F3------|----F4------|----F5------|-----F6-----|-----F7------|----F8-----|-----F9-----|-----F10----|----F11-----|----F12-----|
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+// | |---SHIFT----|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+// | |---CTRL-----|---ALT------|---META-----|---FN_1-----|------------|------------|----FN_2----|--AltGr-----|---( §½ )---|------------|------------|------------|------------|
+ _______, _______, _______, KC_TRNS, KC_NO, KC_NO, TO(BASE), _______, KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO
+// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|
+ ),
+ [FN] = LAYOUT(
+/* __________________________________________________________________________________________________________________________________________________________________________
+ | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */
+// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-QK_BOOT KBD--|
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
+ MU_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|-RGB LIGHT +|------------|
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI, KC_NO,
+// | |------------|------------|------------|---FN_1-----|------------|------------|----FN_2----|------------|------------|------------|------------|-RGB LIGHT -|------------|
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, KC_NO
+// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|
+ )
+};
diff --git a/keyboards/nack/keymaps/vial/rules.mk b/keyboards/nack/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..d013bc62da
--- /dev/null
+++ b/keyboards/nack/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/nack/keymaps/vial/vial.json b/keyboards/nack/keymaps/vial/vial.json
new file mode 100644
index 0000000000..05fe087a17
--- /dev/null
+++ b/keyboards/nack/keymaps/vial/vial.json
@@ -0,0 +1,72 @@
+{
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 4,
+ "cols": 13
+ },
+ "layouts": {
+ "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"
+ ],
+ [
+ "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"
+ ],
+ [
+ "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"
+ ],
+ [
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12"
+ ]
+]
+ }
+}
+
diff --git a/keyboards/pearlboards/pandora/keymaps/vial/config.h b/keyboards/pearlboards/pandora/keymaps/vial/config.h
new file mode 100644
index 0000000000..f3c405bcb2
--- /dev/null
+++ b/keyboards/pearlboards/pandora/keymaps/vial/config.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x96, 0xA0, 0x33, 0x0C, 0x28, 0x21, 0x96, 0x63}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+#undef ENCODER_RESOLUTION
+#define ENCODER_RESOLUTION 4
+
+// space saving measures
+#define VIAL_COMBO_ENTRIES 2
diff --git a/keyboards/pearlboards/pandora/keymaps/vial/keymap.c b/keyboards/pearlboards/pandora/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..13a002341a
--- /dev/null
+++ b/keyboards/pearlboards/pandora/keymaps/vial/keymap.c
@@ -0,0 +1,82 @@
+/*
+Copyright 2021 Koobaczech
+
+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 custom_keycodes {
+ RGBWINGS = SAFE_RANGE,
+};
+
+/* Function to only light up winglets RGB. Must be done in static RGB mode */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGBWINGS:
+ if (record->event.pressed) {
+ /* Blackout these RGB components */
+ tap_code16(RGB_MODE_PLAIN);
+ rgblight_setrgb_at(0, 0, 0, 0);
+ rgblight_setrgb_at(0, 0, 0, 1);
+ rgblight_setrgb_at(0, 0, 0, 4);
+ rgblight_setrgb_at(0, 0, 0, 5);
+ rgblight_setrgb_at(0, 0, 0, 6);
+ rgblight_setrgb_at(0, 0, 0, 7);
+ rgblight_setrgb_at(0, 0, 0, 10);
+ rgblight_setrgb_at(0, 0, 0, 11);
+ }
+ break;
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ 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_DEL, 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_RALT, KC_RGUI, KC_APP, KC_RCTL),
+
+ [1] = LAYOUT_all(
+ QK_BOOT, 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_DEL,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_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, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [2] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/pearlboards/pandora/keymaps/vial/rules.mk b/keyboards/pearlboards/pandora/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..acd7bd5f3f
--- /dev/null
+++ b/keyboards/pearlboards/pandora/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+# space saving measures
+LTO_ENABLE = yes
+TAP_DANCE_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+QMK_SETTINGS = no
diff --git a/keyboards/pearlboards/pandora/keymaps/vial/vial.json b/keyboards/pearlboards/pandora/keymaps/vial/vial.json
new file mode 100644
index 0000000000..3811c4bc7a
--- /dev/null
+++ b/keyboards/pearlboards/pandora/keymaps/vial/vial.json
@@ -0,0 +1,137 @@
+{
+ "name": "Pandora - By Koobaczech",
+ "vendorId": "0x6963",
+ "productId": "0x6963",
+ "lighting": "qmk_rgblight",
+ "matrix": {"rows": 5, "cols": 15},
+ "layouts": {
+ "labels": [
+ ["Backspace", "Split", "Full"],
+ ["Enter", "ISO", "ANSI"],
+ ["Left Shift", "Split", "Full"],
+ ["Right Shift", "Split", "Full"],
+ ["Bottom Row", "ANSI", "Tsangan"]
+ ],
+ "keymap": [
+ [ {"x":8.75}, "0,1\n\n\n\n\n\n\n\n\ne", {"x": 1}, "0,0\n\n\n\n\n\n\n\n\ne" ],
+ [
+ { "c": "#777777", "x": 2.75 },
+ "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",
+ "0,13\n\n\n0,0",
+ { "c": "#aaaaaa" },
+ "0,14\n\n\n0,0",
+ { "x": 1.25, "w": 2 },
+ "0,14\n\n\n0,1"
+ ],
+ [
+ { "w": 1.5, "x": 2.75 },
+ "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",
+ { "c": "#aaaaaa", "w": 1.5, "x": 3.25 },
+ "1,13\n\n\n1,1"
+ ],
+ [
+ { "c": "#aaaaaa", "w": 1.75, "x": 2.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": "#cccccc" },
+ "2,12\n\n\n1,0",
+ { "c": "#777777", "y": -1, "w": 1.25, "h": 2, "w2": 1.5, "h2": 1, "x2": -0.25 },
+ "2,13\n\n\n1,0",
+ { "c": "#777777", "w": 2.25, "x": 1, "y": 1 },
+ "2,13\n\n\n1,1"
+ ],
+ [
+ { "c": "#aaaaaa", "w": 2.25 },
+ "3,0\n\n\n2,1",
+ { "c": "#aaaaaa", "w": 1.25, "x": 0.5 },
+ "3,0\n\n\n2,0",
+ { "c": "#cccccc" },
+ "3,1\n\n\n2,0",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ { "c": "#aaaaaa", "w": 1.75 },
+ "3,12\n\n\n3,0",
+ "3,13\n\n\n3,0",
+ { "c": "#aaaaaa", "w": 2.75, "x": 0.5 },
+ "3,12\n\n\n3,1"
+ ],
+ [
+ { "w": 1.25, "x": 2.75 },
+ "4,0\n\n\n4,0",
+ { "w": 1.25 },
+ "4,1\n\n\n4,0",
+ { "w": 1.25 },
+ "4,2\n\n\n4,0",
+ { "c": "#cccccc", "w": 6.25 },
+ "4,6\n\n\n4,0",
+ { "c": "#aaaaaa", "w": 1.25 },
+ "4,10\n\n\n4,0",
+ { "w": 1.25 },
+ "4,11\n\n\n4,0",
+ { "w": 1.25 },
+ "4,12\n\n\n4,0",
+ { "w": 1.25 },
+ "4,13\n\n\n4,0"
+ ],
+ [
+ { "w": 1.5, "x": 2.75, "y": 0.5 },
+ "4,0\n\n\n4,1",
+ "4,1\n\n\n4,1",
+ { "w": 1.5 },
+ "4,2\n\n\n4,1",
+ { "c": "#cccccc", "w": 7 },
+ "4,6\n\n\n4,1",
+ { "w": 1.5 },
+ "4,11\n\n\n4,1",
+ "4,12\n\n\n4,1",
+ { "w": 1.5 },
+ "4,13\n\n\n4,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/planck/rev6_drop/keymaps/vial/rules.mk b/keyboards/planck/rev6_drop/keymaps/vial/rules.mk
index 9dbbcc4c49..1ab38db929 100644
--- a/keyboards/planck/rev6_drop/keymaps/vial/rules.mk
+++ b/keyboards/planck/rev6_drop/keymaps/vial/rules.mk
@@ -1,5 +1,6 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
VIALRGB_ENABLE = yes
LTO_ENABLE = yes
diff --git a/keyboards/planck/rev6_drop/keymaps/vial/vial.json b/keyboards/planck/rev6_drop/keymaps/vial/vial.json
index edf741abc7..5a0f5f9de2 100644
--- a/keyboards/planck/rev6_drop/keymaps/vial/vial.json
+++ b/keyboards/planck/rev6_drop/keymaps/vial/vial.json
@@ -2,17 +2,8 @@
"name": "OLKB PLANCK REV6.1",
"vendorId": "0x03A8",
"productId": "0xA4F9",
- "firmwareVersion": 0,
- "keycodes": ["via/keycodes", "via/qmk_lighting"],
- "lighting": "vialrgb",
- "menus": [
- "via/keymap",
- "via/layouts",
- "via/macros",
- "via/save_load",
- "core/qmk_rgblight"
- ],
"matrix": {"rows": 8, "cols": 6},
+ "lighting": "vialrgb",
"layouts": {
"labels": [["Layout", "MIT (1x2u)", "Grid (2x1u)", "2x2u", "3x3u"]],
"keymap": [
@@ -113,4 +104,4 @@
]
]
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/rainkeebs/twoyo/config.h b/keyboards/rainkeebs/twoyo/config.h
new file mode 100644
index 0000000000..a14020674f
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Regan Palmer
+ *
+ * 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
+
+/* usb handedness? */
+#define SPLIT_USB_DETECT
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/rainkeebs/twoyo/info.json b/keyboards/rainkeebs/twoyo/info.json
new file mode 100644
index 0000000000..2c8fcd1a4a
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/info.json
@@ -0,0 +1,97 @@
+{
+ "manufacturer": "rainkeebs",
+ "keyboard_name": "Twoyo",
+ "maintainer": "rainkeebs",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "F4", "pin_b": "F5"}
+ ]
+ },
+ "features": {
+ "bootmagic": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["D1", "B6", "B2", "B3", "B1", "F7"],
+ "rows": ["F6", "C6", "D4", "D0"]
+ },
+ "split": {
+ "enabled": true,
+ "encoder": {
+ "right": {
+ "rotary": [
+ {"pin_a": "D1", "pin_b": "D0"}
+ ]
+ }
+ },
+ "matrix_pins": {
+ "right": {
+ "cols": ["D4", "C6", "D7", "E6", "B4", "B5"],
+ "rows": ["F4", "F7", "F6", "B6"]
+ }
+ },
+ "soft_serial_pin": "D3",
+ "transport": {
+ "protocol": "serial"
+ }
+ },
+ "url": "https://www.rainkeebs.mx/product/twoyo-keyboard-kit",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x616B",
+ "vid": "0x726B"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0, "w": 1},
+ {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0, "w": 1},
+ {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0, "w": 1},
+ {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0, "w": 1},
+ {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0, "w": 1},
+ {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0, "w": 1},
+ {"label": "0,6", "matrix": [4, 0], "x": 8, "y": 0, "w": 1},
+ {"label": "0,7", "matrix": [4, 1], "x": 9, "y": 0, "w": 1},
+ {"label": "0,8", "matrix": [4, 2], "x": 10, "y": 0, "w": 1},
+ {"label": "0,9", "matrix": [4, 3], "x": 11, "y": 0, "w": 1},
+ {"label": "0,10", "matrix": [4, 4], "x": 12, "y": 0, "w": 1},
+ {"label": "0,11", "matrix": [4, 5], "x": 13, "y": 0, "w": 1},
+ {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"label": "1,1", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1},
+ {"label": "1,2", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1},
+ {"label": "1,3", "matrix": [1, 3], "x": 3.25, "y": 1, "w": 1},
+ {"label": "1,4", "matrix": [1, 4], "x": 4.25, "y": 1, "w": 1},
+ {"label": "1,5", "matrix": [1, 5], "x": 5.25, "y": 1, "w": 1},
+ {"label": "1,7", "matrix": [5, 1], "x": 8.25, "y": 1, "w": 1},
+ {"label": "1,8", "matrix": [5, 2], "x": 9.25, "y": 1, "w": 1},
+ {"label": "1,9", "matrix": [5, 3], "x": 10.25, "y": 1, "w": 1},
+ {"label": "1,10", "matrix": [5, 4], "x": 11.25, "y": 1, "w": 1},
+ {"label": "1,11", "matrix": [5, 5], "x": 12.25, "y": 1, "w": 1.75},
+ {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2, "w": 1},
+ {"label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2, "w": 1},
+ {"label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2, "w": 1},
+ {"label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2, "w": 1},
+ {"label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2, "w": 1},
+ {"label": "2,7", "matrix": [6, 1], "x": 8.75, "y": 2, "w": 1},
+ {"label": "2,8", "matrix": [6, 2], "x": 9.75, "y": 2, "w": 1},
+ {"label": "2,9", "matrix": [6, 3], "x": 10.75, "y": 2, "w": 1},
+ {"label": "2,10", "matrix": [6, 4], "x": 11.75, "y": 2, "w": 1},
+ {"label": "2,11", "matrix": [6, 5], "x": 12.75, "y": 2, "w": 1.25},
+ {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1},
+ {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
+ {"label": "3,4", "matrix": [3, 4], "x": 3.5, "y": 3, "w": 2.75},
+ {"label": "3,7", "matrix": [7, 1], "x": 8.25, "y": 3, "w": 2.25},
+ {"label": "3,9", "matrix": [7, 3], "x": 10.5, "y": 3, "w": 1.25},
+ {"label": "3,10", "matrix": [7, 4], "x": 11.75, "y": 3, "w": 1},
+ {"label": "3,11", "matrix": [7, 5], "x": 12.75, "y": 3, "w": 1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/rainkeebs/twoyo/keymaps/default/keymap.c b/keyboards/rainkeebs/twoyo/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e14849704
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Regan Palmer
+ *
+ * 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
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
+ // Encoder 1 Encoder 2
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ LAYOUT(
+ KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_LCBR, KC_RCBR, KC_DQT, KC_COLON, KC_TRNS,
+ KC_TRNS, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_PLUS, KC_PIPE, KC_QUES, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_MINS, KC_LBRC, KC_RBRC, KC_QUOTE, KC_SCLN, KC_TRNS,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_EQL, KC_BSLS, KC_SLASH, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/rainkeebs/twoyo/keymaps/default/rules.mk b/keyboards/rainkeebs/twoyo/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/rainkeebs/twoyo/keymaps/vial/config.h b/keyboards/rainkeebs/twoyo/keymaps/vial/config.h
new file mode 100644
index 0000000000..46c64c244c
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE1, 0x46, 0x48, 0x68, 0xFC, 0x48, 0xF5, 0x48}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
+#define VIAL_TAP_DANCE_ENTRIES 4
diff --git a/keyboards/rainkeebs/twoyo/keymaps/vial/keymap.c b/keyboards/rainkeebs/twoyo/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..5e14849704
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/vial/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Regan Palmer
+ *
+ * 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
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
+ // Encoder 1 Encoder 2
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ LAYOUT(
+ KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_LCBR, KC_RCBR, KC_DQT, KC_COLON, KC_TRNS,
+ KC_TRNS, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_PLUS, KC_PIPE, KC_QUES, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_MINS, KC_LBRC, KC_RBRC, KC_QUOTE, KC_SCLN, KC_TRNS,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_EQL, KC_BSLS, KC_SLASH, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/rainkeebs/twoyo/keymaps/vial/rules.mk b/keyboards/rainkeebs/twoyo/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..45ad307be7
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/vial/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = no
diff --git a/keyboards/rainkeebs/twoyo/keymaps/vial/vial.json b/keyboards/rainkeebs/twoyo/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6cd5effb19
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/keymaps/vial/vial.json
@@ -0,0 +1,87 @@
+{
+ "name": "Twoyo",
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "labels": [
+ "1u Right Shift"
+ ],
+ "keymap": [
+ [
+ { "y": 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": 9 },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"],
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ { "x": 1 },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ { "w": 1.25 },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ { "x": 1 },
+ "5,1",
+ "5,2",
+ "5,3",
+ "5,4",
+ { "w": 1.75 },
+ "5,5"
+ ],
+ [
+ { "w": 1.75 },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ { "x": 1 },
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4\n0,0",
+ { "w": 1.25 },
+ "6,5\n0,0",
+ { "x": 0.25, "w": 1.25 },
+ "6,4\n\n\n0,1",
+ "6,5\n\n\n0,1"
+ ],
+ [
+ { "w": 1.25 },
+ "3,0",
+ "3,1",
+ { "w": 1.25 },
+ "3,2",
+ { "w": 2.75 },
+ "3,4",
+ { "x": 1, "w": 2.25 },
+ "7,1",
+ { "w": 1.25 },
+ "7,3",
+ "7,4",
+ { "w": 1.25 },
+ "7,5"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/rainkeebs/twoyo/readme.md b/keyboards/rainkeebs/twoyo/readme.md
new file mode 100644
index 0000000000..75f45db063
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/readme.md
@@ -0,0 +1,22 @@
+# Twoyo
+
+![Twoyo](https://i.imgur.com/j48Gq0g.png)
+
+A 12u split staggered 40% kit.
+
+* Keyboard Maintainer: Rain
+* Hardware Supported: Yasui PCB v2
+* Hardware Availability: [rainkeebs](https://www.rainkeebs.mx/product/twoyo-keyboard-kit)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb twoyo -kb default
+
+To reset the keyboard, hold the top left key while plugging in, or hit the reset button near the USB port
+
+Install example for this keyboard:
+
+ qmk flash -kb twoyo -km 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).
\ No newline at end of file
diff --git a/keyboards/rainkeebs/twoyo/rules.mk b/keyboards/rainkeebs/twoyo/rules.mk
new file mode 100644
index 0000000000..fc89e3b54c
--- /dev/null
+++ b/keyboards/rainkeebs/twoyo/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+BOOTLOADER = caterina
diff --git a/keyboards/reviung/reviung53/keymaps/vial/config.h b/keyboards/reviung/reviung53/keymaps/vial/config.h
new file mode 100644
index 0000000000..75e568566e
--- /dev/null
+++ b/keyboards/reviung/reviung53/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE9, 0xF8, 0x22, 0xB0, 0x41, 0x10, 0x91, 0xC4}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 3 }
diff --git a/keyboards/reviung/reviung53/keymaps/vial/keymap.c b/keyboards/reviung/reviung53/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..4764cbd274
--- /dev/null
+++ b/keyboards/reviung/reviung53/keymaps/vial/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+#define SF_SS RSFT_T(KC_SLSH)
+#define SP_LO LT(LOWER, KC_SPC)
+#define SP_RA LT(RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_reviung53(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_DEL,
+ 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_CAPS, 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, SF_SS,
+ KC_LCTL, KC_LGUI, KC_LALT, SP_LO, SP_RA, KC_LALT, KC_RGUI, KC_RCTL
+ ),
+ [_LOWER] = LAYOUT_reviung53(
+ QK_GESC, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_PAUS, KC_SCRL, KC_PSCR, _______,
+ _______, 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_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_QUOT,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_SLSH,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_reviung53(
+ KC_TILD, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY, _______,
+ _______, 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_LBRC, KC_RBRC, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DQUO,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_QUES,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT_reviung53(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
+ RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/reviung/reviung53/keymaps/vial/rules.mk b/keyboards/reviung/reviung53/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..043b69911e
--- /dev/null
+++ b/keyboards/reviung/reviung53/keymaps/vial/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
diff --git a/keyboards/reviung/reviung53/keymaps/vial/vial.json b/keyboards/reviung/reviung53/keymaps/vial/vial.json
new file mode 100644
index 0000000000..2de141256b
--- /dev/null
+++ b/keyboards/reviung/reviung53/keymaps/vial/vial.json
@@ -0,0 +1,137 @@
+{
+ "keyboard_name": "reviung53",
+ "manufacturer": "gtips",
+ "url": "",
+ "maintainer": "gtips",
+ "usb": {
+ "vid": "0x4E94",
+ "pid": "0x4E09",
+ "device_version": "0.0.1"
+ },
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 7,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 2.25
+ },
+ "0,2",
+ {
+ "x": 0.25
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 0.25
+ },
+ "0,7",
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 0.25
+ },
+ "4,3"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "w": 1.5
+ },
+ "4,7"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "w": 1.25
+ },
+ "5,3"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "5,4",
+ "5,5",
+ {
+ "w": 1.75
+ },
+ "5,6"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "6,0",
+ {
+ "w": 1.25
+ },
+ "6,1",
+ {
+ "w": 1.25
+ },
+ "6,2",
+ {
+ "w": 2.75
+ },
+ "6,3",
+ {
+ "w": 2.25
+ },
+ "6,4",
+ {
+ "w": 1.25
+ },
+ "6,5",
+ {
+ "w": 1.25
+ },
+ "6,6",
+ {
+ "w": 1.5
+ },
+ "6,7"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/sneakbox/aliceclonergb/keymaps/vial/keymap.c b/keyboards/sneakbox/aliceclonergb/keymaps/vial/keymap.c
index bdd6deb5f8..a55b58780e 100644
--- a/keyboards/sneakbox/aliceclonergb/keymaps/vial/keymap.c
+++ b/keyboards/sneakbox/aliceclonergb/keymaps/vial/keymap.c
@@ -20,9 +20,7 @@ along with this program. If not, see .
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
- _FN,
- _L3,
- _L4
+ _FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -38,17 +36,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_MOD, RGB_TOG,
QK_BOOT, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_HUI,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_L3] = LAYOUT_alice_split_bs(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_L4] = LAYOUT_alice_split_bs(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, 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/sneakbox/aliceclonergb/keymaps/vial/vial.json b/keyboards/sneakbox/aliceclonergb/keymaps/vial/vial.json
index 56e3028a68..903904f4f5 100644
--- a/keyboards/sneakbox/aliceclonergb/keymaps/vial/vial.json
+++ b/keyboards/sneakbox/aliceclonergb/keymaps/vial/vial.json
@@ -7,6 +7,10 @@
"matrix": { "rows": 10, "cols": 8 },
"lighting": "qmk_rgblight",
"layouts": {
+ "labels": [
+ "Split Backspace",
+ "Split Right Shift"
+ ],
"keymap":
[
[
@@ -33,8 +37,17 @@
"x": 15.08,
"c": "#cccccc"
},
- "1,6",
- "1,7"
+ "1,6\n\n\n0,1",
+ "1,7\n\n\n0,1"
+ ],
+ [
+ {
+ "y": -0.8885,
+ "x": 15.08,
+ "w": 2,
+ "c": "#cccccc"
+ },
+ "1,6\n\n\n0,0"
],
[
{
@@ -178,25 +191,33 @@
"c": "#cccccc"
},
"7,5",
+ {
+ "x": -0.0024999999999995026,
+ "w": 2.75,
+ "c": "#cccccc"
+ },
+ "7,6\n\n\n1,0"
+ ],
+ [
{
"x": -0.0024999999999995026,
"w": 1.75,
"c": "#cccccc"
},
- "7,6",
+ "7,6\n\n\n1,1",
{
"x": -0.002600000000001046,
"c": "#cccccc"
},
- "7,7"
+ "7,7\n\n\n1,1"
],
[
{
- "y": -0.9996,
+ "y": -1.9996,
"x": 0.9996,
"w": 2.25,
"c": "#aaaaaa"
- },
+ },
"6,1"
],
[
diff --git a/keyboards/splitkb/kyria/rev2/keymaps/vial/config.h b/keyboards/splitkb/kyria/rev2/keymaps/vial/config.h
new file mode 100644
index 0000000000..7008340c06
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/keymaps/vial/config.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x20, 0x43, 0x8B, 0x3D, 0x4E, 0x21, 0xFD, 0x07}
+
+/* #define DYNAMIC_KEYMAP_LAYER_COUNT 3 */
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+#define NO_ACTION_ONESHOT
+#define NO_MUSIC_MODE
+#define LAYER_STATE_8BIT
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/splitkb/kyria/rev2/keymaps/vial/keymap.c b/keyboards/splitkb/kyria/rev2/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..3eb18d330b
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/keymaps/vial/keymap.c
@@ -0,0 +1,24 @@
+// Copyright 2021 Your Name (@nosarthur)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_Q, KC_BSPC, KC_LGUI, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_TAB, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_BSLS, TT(2), KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_GRV, KC_LCTL, KC_LALT, KC_SPC, KC_LSPO, TT(1), TT(1), KC_RSPC, KC_ENT, KC_MINS, KC_EQL),
+ [1] = LAYOUT(KC_TRNS, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_NO, KC_NO, KC_UP, KC_PGUP, KC_PSLS, KC_TRNS, KC_TRNS, KC_0, KC_4, KC_5, KC_6, KC_PDOT, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PAST, KC_PPLS, KC_TRNS, KC_NO, KC_1, KC_2, KC_3, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_HOME, KC_END, KC_PGDN, KC_EXLM, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [2] = LAYOUT(KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MPLY, KC_VOLU, KC_BRIU, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_MSTP, KC_VOLD, KC_BRID, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO),
+ [3] = LAYOUT(KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MPLY, KC_VOLU, KC_BRIU, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_MSTP, KC_VOLD, KC_BRID, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_BRIU, KC_BRID), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+ [3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
+ // Encoder 1 Encoder 2
+};
+#endif
+
diff --git a/keyboards/splitkb/kyria/rev2/keymaps/vial/rules.mk b/keyboards/splitkb/kyria/rev2/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6c76f3d286
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/keymaps/vial/rules.mk
@@ -0,0 +1,22 @@
+# Bootloader selection
+# BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+ENCODER_MAP_ENABLE = yes
+OLED_ENABLE = no
+
+AUTO_SHIFT_ENABLE = yes
+COMBO_ENABLE = yes
+TAP_DANCE_ENABLE = no
+
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+QMK_SETTINGS = yes
+KEY_OVERRIDE_ENABLE = no
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+AVR_USE_MINIMAL_PRINTF = yes
diff --git a/keyboards/splitkb/kyria/rev2/keymaps/vial/vial.json b/keyboards/splitkb/kyria/rev2/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6a1faaf2ce
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/keymaps/vial/vial.json
@@ -0,0 +1,341 @@
+{
+ "name": "Kyria rev2.1",
+ "matrix": {"rows": 8, "cols": 8},
+ "layouts": {
+ "labels": [
+ "Far Left 2U",
+ "Mid Left 2U",
+ "Mid Right 2U",
+ "Far Right 2U"
+ ],
+ "keymap":
+[
+ [
+ {
+ "y": 0.25,
+ "x": 3
+ },
+ "0,4",
+ {
+ "x": 9
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "0,5",
+ {
+ "x": 1
+ },
+ "0,3",
+ {
+ "x": 7
+ },
+ "4,3",
+ {
+ "x": 1
+ },
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "0,2",
+ {
+ "x": 5
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": -0.625,
+ "c": "#aaaaaa"
+ },
+ "0,7",
+ {
+ "c": "#cccccc"
+ },
+ "0,6",
+ {
+ "x": 13
+ },
+ "4,6",
+ {
+ "c": "#aaaaaa"
+ },
+ "4,7"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3,
+ "c": "#cccccc"
+ },
+ "1,4",
+ {
+ "x": 9
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "1,5",
+ {
+ "x": 1
+ },
+ "1,3",
+ {
+ "x": 7
+ },
+ "5,3",
+ {
+ "x": 1
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "1,2",
+ {
+ "x": 5
+ },
+ "5,2"
+ ],
+ [
+ {
+ "y": -0.625,
+ "c": "#aaaaaa"
+ },
+ "1,7",
+ {
+ "c": "#cccccc"
+ },
+ "1,6",
+ {
+ "x": 13
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa"
+ },
+ "5,7"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3,
+ "c": "#cccccc"
+ },
+ "2,4",
+ {
+ "x": 9
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "2,5",
+ {
+ "x": 1
+ },
+ "2,3",
+ {
+ "x": 7
+ },
+ "6,3",
+ {
+ "x": 1
+ },
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "2,2",
+ {
+ "x": 5
+ },
+ "6,2"
+ ],
+ [
+ {
+ "y": -0.625,
+ "c": "#aaaaaa"
+ },
+ "2,7",
+ {
+ "c": "#cccccc"
+ },
+ "2,6",
+ {
+ "x": 13
+ },
+ "6,6",
+ {
+ "c": "#aaaaaa"
+ },
+ "6,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2.5
+ },
+ "3,5",
+ {
+ "x": 10
+ },
+ "7,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 9
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "rx": 4,
+ "ry": 8.175,
+ "y": -4.675,
+ "x": -0.5
+ },
+ "3,3"
+ ],
+ [
+ {
+ "rx": 13,
+ "y": -4.675,
+ "x": -0.5
+ },
+ "7,3"
+ ],
+ [
+ {
+ "r": 15,
+ "rx": 4,
+ "y": -4.675,
+ "x": -0.5
+ },
+ "3,2"
+ ],
+ [
+ {
+ "r": 30,
+ "y": -2,
+ "x": -0.5
+ },
+ "2,1\n\n\n0,0"
+ ],
+ [
+ {
+ "x": -0.5
+ },
+ "3,1\n\n\n0,0"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": -1,
+ "h": 2
+ },
+ "3,1\n\n\n0,1"
+ ],
+ [
+ {
+ "r": 45,
+ "y": -3.5,
+ "x": -0.5
+ },
+ "2,0\n\n\n1,0"
+ ],
+ [
+ {
+ "x": -0.5
+ },
+ "3,0\n\n\n1,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "h": 2
+ },
+ "3,0\n\n\n1,1"
+ ],
+ [
+ {
+ "r": -45,
+ "rx": 13,
+ "y": -5.675,
+ "x": -0.5
+ },
+ "6,0\n\n\n2,0"
+ ],
+ [
+ {
+ "x": -0.5
+ },
+ "7,0\n\n\n2,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": -1,
+ "h": 2
+ },
+ "7,0\n\n\n2,1"
+ ],
+ [
+ {
+ "r": -30,
+ "y": -3.25,
+ "x": -0.5
+ },
+ "6,1\n\n\n3,0"
+ ],
+ [
+ {
+ "x": -0.5
+ },
+ "7,1\n\n\n3,0"
+ ],
+ [
+ {
+ "y": 0.5,
+ "h": 2
+ },
+ "7,1\n\n\n3,1"
+ ],
+ [
+ {
+ "r": -15,
+ "y": -2.5,
+ "x": -0.5
+ },
+ "7,2"
+ ]
+]
+}
+}
diff --git a/keyboards/viktus/minne/keymaps/via/minne.json b/keyboards/viktus/minne/keymaps/via/minne.json
new file mode 100644
index 0000000000..e715a8a452
--- /dev/null
+++ b/keyboards/viktus/minne/keymaps/via/minne.json
@@ -0,0 +1,208 @@
+{
+ "name": "Minne",
+ "vendorId": "0x5644",
+ "productId": "0x4D49",
+ "keycodes": [ "qmk_lighting" ],
+ "menus": [ "qmk_rgblight" ],
+ "matrix": {
+ "rows": 8,
+ "cols": 7
+ },
+ "layouts": {
+ "labels": [
+ ["Bottom Row", "Dual 1.75U", "2.75U 2.25U", "Dual 3U", "6U", "7U", "10U"]
+ ],
+ "keymap": [
+ [
+ {
+ "c":"#777777"
+ },
+ "1,0",
+ {
+ "c":"#aaaaaa"
+ },
+ "1,1",
+ {
+ "c":"#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "1,2",
+ "1,3",
+ "0,3",
+ "0,4",
+ "1,4",
+ "1,5",
+ "0,5",
+ {
+ "c":"#aaaaaa",
+ "w":1.75
+ },
+ "0,6"
+ ],
+ [
+ {
+ "w":1.25
+ },
+ "3,0",
+ {
+ "c":"#cccccc"
+ },
+ "3,1",
+ "2,1",
+ "2,2",
+ "3,2",
+ "3,3",
+ "2,3",
+ "2,4",
+ "3,4",
+ "3,5",
+ "2,5",
+ {
+ "c":"#777777",
+ "w":1.5
+ },
+ "2,6"
+ ],
+ [
+ {
+ "c":"#aaaaaa",
+ "w":1.75
+ },
+ "5,0",
+ {
+ "c":"#cccccc"
+ },
+ "5,1",
+ "4,1",
+ "4,2",
+ "5,2",
+ "5,3",
+ "4,3",
+ "4,4",
+ "5,4",
+ "5,5",
+ "4,5",
+ {
+ "c":"#aaaaaa"
+ },
+ "4,6"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,0",
+ "6,1\n\n\n0,0",
+ {
+ "w":1.25
+ },
+ "6,2\n\n\n0,0",
+ {
+ "c":"#cccccc",
+ "w":1.75
+ },
+ "7,2\n\n\n0,0",
+ {
+ "w":1.75
+ },
+ "6,3\n\n\n0,0",
+ {
+ "c":"#aaaaaa",
+ "w":1.25
+ },
+ "6,4\n\n\n0,0",
+ "7,4\n\n\n0,0",
+ "7,5\n\n\n0,0"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,1",
+ {
+ "w":1.5
+ },
+ "6,1\n\n\n0,1",
+ {
+ "c":"#cccccc",
+ "w":2.75
+ },
+ "7,2\n\n\n0,1",
+ {
+ "w":2.25
+ },
+ "6,3\n\n\n0,1",
+ {
+ "c":"#aaaaaa",
+ "w":1.5
+ },
+ "7,4\n\n\n0,1",
+ "7,5\n\n\n0,1"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,2",
+ "6,1\n\n\n0,2",
+ {
+ "c":"#cccccc",
+ "w":3
+ },
+ "7,2\n\n\n0,2",
+ {
+ "w":3
+ },
+ "6,3\n\n\n0,2",
+ {
+ "c":"#aaaaaa"
+ },
+ "7,4\n\n\n0,2",
+ "7,5\n\n\n0,2"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,3",
+ "6,1\n\n\n0,3",
+ {
+ "c":"#cccccc",
+ "w":6
+ },
+ "7,3\n\n\n0,3",
+ {
+ "c":"#aaaaaa"
+ },
+ "7,4\n\n\n0,3",
+ "7,5\n\n\n0,3"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":1.5
+ },
+ "7,1\n\n\n0,4",
+ {
+ "c":"#cccccc",
+ "w":7
+ },
+ "7,3\n\n\n0,4",
+ {
+ "c":"#aaaaaa",
+ "w":1.5
+ },
+ "7,5\n\n\n0,4"
+ ],
+ [
+ {
+ "x":1.38,
+ "c":"#cccccc",
+ "w":10
+ },
+ "7,3\n\n\n0,5"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/viktus/minne/keymaps/vial/config.h b/keyboards/viktus/minne/keymaps/vial/config.h
new file mode 100644
index 0000000000..0529deffd8
--- /dev/null
+++ b/keyboards/viktus/minne/keymaps/vial/config.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x38, 0x17, 0xCA, 0xBC, 0x62, 0x69, 0x28, 0x45}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 1, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
diff --git a/keyboards/viktus/minne/keymaps/vial/keymap.c b/keyboards/viktus/minne/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..bf34ed993e
--- /dev/null
+++ b/keyboards/viktus/minne/keymaps/vial/keymap.c
@@ -0,0 +1,26 @@
+/* Copyright 2023 Viktus Design LLC
+ *
+ * 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(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ 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_RSFT, MO(1),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL
+ )
+};
diff --git a/keyboards/viktus/minne/keymaps/vial/rules.mk b/keyboards/viktus/minne/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b993c43f1c
--- /dev/null
+++ b/keyboards/viktus/minne/keymaps/vial/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
+EXTRAKEY_ENABLE = no
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/viktus/minne/keymaps/vial/vial.json b/keyboards/viktus/minne/keymaps/vial/vial.json
new file mode 100644
index 0000000000..975484bf50
--- /dev/null
+++ b/keyboards/viktus/minne/keymaps/vial/vial.json
@@ -0,0 +1,180 @@
+{
+ "name": "Minne",
+ "vendorId": "0x5644",
+ "productId": "0x4D49",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 8,
+ "cols": 7
+ },
+ "layouts": {
+ "labels": [
+ ["Bottom Row", "Dual 1.75U", "2.75U 2.25U", "Dual 3U", "6U", "7U", "10U"]
+ ],
+ "keymap": [
+ [
+ "1,0",
+ "1,1",
+ "0,1",
+ "0,2",
+ "1,2",
+ "1,3",
+ "0,3",
+ "0,4",
+ "1,4",
+ "1,5",
+ "0,5",
+ {
+ "w":1.75
+ },
+ "0,6"
+ ],
+ [
+ {
+ "w":1.25
+ },
+ "3,0",
+ "3,1",
+ "2,1",
+ "2,2",
+ "3,2",
+ "3,3",
+ "2,3",
+ "2,4",
+ "3,4",
+ "3,5",
+ "2,5",
+ {
+ "w":1.5
+ },
+ "2,6"
+ ],
+ [
+ {
+ "w":1.75
+ },
+ "5,0",
+ "5,1",
+ "4,1",
+ "4,2",
+ "5,2",
+ "5,3",
+ "4,3",
+ "4,4",
+ "5,4",
+ "5,5",
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,0",
+ "6,1\n\n\n0,0",
+ {
+ "w":1.25
+ },
+ "6,2\n\n\n0,0",
+ {
+ "w":1.75
+ },
+ "7,2\n\n\n0,0",
+ {
+ "w":1.75
+ },
+ "6,3\n\n\n0,0",
+ {
+ "x":0,
+ "w":1.25
+ },
+ "6,4\n\n\n0,0",
+ "7,4\n\n\n0,0",
+ "7,5\n\n\n0,0"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,1",
+ {
+ "w":1.5
+ },
+ "6,1\n\n\n0,1",
+ {
+ "w":2.75
+ },
+ "7,2\n\n\n0,1",
+ {
+ "w":2.25
+ },
+ "6,3\n\n\n0,1",
+ {
+ "x":0,
+ "w":1.5
+ },
+ "7,4\n\n\n0,1",
+ "7,5\n\n\n0,1"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,2",
+ "6,1\n\n\n0,2",
+ {
+ "w":3
+ },
+ "7,2\n\n\n0,2",
+ {
+ "w":3
+ },
+ "6,3\n\n\n0,2",
+ {
+ "x":0
+ },
+ "7,4\n\n\n0,2",
+ "7,5\n\n\n0,2"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "7,1\n\n\n0,3",
+ "6,1\n\n\n0,3",
+ {
+ "w":6
+ },
+ "7,3\n\n\n0,3",
+ {
+ "x":0
+ },
+ "7,4\n\n\n0,3",
+ "7,5\n\n\n0,3"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":1.5
+ },
+ "7,1\n\n\n0,4",
+ {
+ "w":7
+ },
+ "7,3\n\n\n0,4",
+ {
+ "x":0,
+ "w":1.5
+ },
+ "7,5\n\n\n0,4"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":10
+ },
+ "7,3\n\n\n0,5"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/viktus/minne_topre/keymaps/via/minne_topre.json b/keyboards/viktus/minne_topre/keymaps/via/minne_topre.json
new file mode 100644
index 0000000000..5f18c16b90
--- /dev/null
+++ b/keyboards/viktus/minne_topre/keymaps/via/minne_topre.json
@@ -0,0 +1,151 @@
+{
+ "name": "Minne - Topre",
+ "vendorId": "0x5644",
+ "productId": "0x4D54",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ ["Bottom Row", "Dual 3U", "6U", "7U", "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",
+ {
+ "c":"#aaaaaa",
+ "w":1.75
+ },
+ "0,11"
+ ],
+ [
+ {
+ "w":1.25
+ },
+ "1,0",
+ {
+ "c":"#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ {
+ "c":"#777777",
+ "w":1.5
+ },
+ "1,11"
+ ],
+ [
+ {
+ "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",
+ {
+ "c":"#aaaaaa"
+ },
+ "2,11"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "3,1\n\n\n0,0",
+ "3,2\n\n\n0,0",
+ {
+ "c":"#cccccc",
+ "w":3
+ },
+ "3,4\n\n\n0,0",
+ {
+ "w":3
+ },
+ "3,7\n\n\n0,0",
+ {
+ "c":"#aaaaaa"
+ },
+ "3,9\n\n\n0,0",
+ "3,10\n\n\n0,0"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "3,1\n\n\n0,1",
+ "3,2\n\n\n0,1",
+ {
+ "c":"#cccccc",
+ "w":6
+ },
+ "3,5\n\n\n0,1",
+ {
+ "c":"#aaaaaa"
+ },
+ "3,9\n\n\n0,1",
+ "3,10\n\n\n0,1"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":1.5
+ },
+ "3,1\n\n\n0,2",
+ {
+ "c":"#cccccc",
+ "w":7
+ },
+ "3,5\n\n\n0,2",
+ {
+ "c":"#aaaaaa",
+ "w":1.5
+ },
+ "3,10\n\n\n0,2"
+ ],
+ [
+ {
+ "x":1.38,
+ "c":"#cccccc",
+ "w":10
+ },
+ "3,5\n\n\n0,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/viktus/minne_topre/keymaps/vial/config.h b/keyboards/viktus/minne_topre/keymaps/vial/config.h
new file mode 100644
index 0000000000..0b72656397
--- /dev/null
+++ b/keyboards/viktus/minne_topre/keymaps/vial/config.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE9, 0xAD, 0xFD, 0x66, 0x8E, 0x62, 0x1D, 0xA7}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 0 }
diff --git a/keyboards/viktus/minne_topre/keymaps/vial/keymap.c b/keyboards/viktus/minne_topre/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..5ad476a25d
--- /dev/null
+++ b/keyboards/viktus/minne_topre/keymaps/vial/keymap.c
@@ -0,0 +1,26 @@
+/* Copyright 2023 Viktus Design LLC
+ *
+ * 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(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ 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_RSFT, MO(1),
+ KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL
+ )
+};
diff --git a/keyboards/viktus/minne_topre/keymaps/vial/rules.mk b/keyboards/viktus/minne_topre/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b993c43f1c
--- /dev/null
+++ b/keyboards/viktus/minne_topre/keymaps/vial/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
+EXTRAKEY_ENABLE = no
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/viktus/minne_topre/keymaps/vial/vial.json b/keyboards/viktus/minne_topre/keymaps/vial/vial.json
new file mode 100644
index 0000000000..38eaaaca17
--- /dev/null
+++ b/keyboards/viktus/minne_topre/keymaps/vial/vial.json
@@ -0,0 +1,127 @@
+{
+ "name": "Minne - Topre",
+ "vendorId": "0x5644",
+ "productId": "0x4D54",
+ "lighting": "none",
+ "matrix": {
+ "rows": 4,
+ "cols": 12
+ },
+ "layouts": {
+ "labels": [
+ ["Bottom Row", "Dual 3U", "6U", "7U", "10U"]
+ ],
+ "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"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "3,1\n\n\n0,0",
+ "3,2\n\n\n0,0",
+ {
+ "w":3
+ },
+ "3,4\n\n\n0,0",
+ {
+ "w":3
+ },
+ "3,7\n\n\n0,0",
+ "3,9\n\n\n0,0",
+ "3,10\n\n\n0,0"
+ ],
+ [
+ {
+ "x":1.38
+ },
+ "3,1\n\n\n0,1",
+ "3,2\n\n\n0,1",
+ {
+ "w":6
+ },
+ "3,5\n\n\n0,1",
+ {
+ "x":0
+ },
+ "3,9\n\n\n0,1",
+ "3,10\n\n\n0,1"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":1.5
+ },
+ "3,1\n\n\n0,2",
+ {
+ "w":7
+ },
+ "3,5\n\n\n0,2",
+ {
+ "x":0,
+ "w":1.5
+ },
+ "3,10\n\n\n0,2"
+ ],
+ [
+ {
+ "x":1.38,
+ "w":10
+ },
+ "3,5\n\n\n0,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/w1_at/keymaps/vial/config.h b/keyboards/w1_at/keymaps/vial/config.h
new file mode 100644
index 0000000000..0328f9ae8b
--- /dev/null
+++ b/keyboards/w1_at/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xEF, 0xFC, 0xF5, 0xFF, 0xBC, 0x05, 0x3E, 0xA3}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/w1_at/keymaps/vial/keymap.c b/keyboards/w1_at/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..bd6e2274d2
--- /dev/null
+++ b/keyboards/w1_at/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * 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 custom_keycodes {
+ KC_P00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, 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_DEL, KC_NUM, KC_PMNS, KC_PSLS, KC_PAST,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PMNS,
+ KC_F7, KC_F8, 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_PMNS,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, 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)
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ case KC_P00:
+ tap_code(KC_P0);
+ tap_code(KC_P0);
+ return false;
+ }
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/w1_at/keymaps/vial/readme.md b/keyboards/w1_at/keymaps/vial/readme.md
new file mode 100644
index 0000000000..af0497e720
--- /dev/null
+++ b/keyboards/w1_at/keymaps/vial/readme.md
@@ -0,0 +1,9 @@
+# The default keymap for W1-AT.
+
+Layer 0
+
+![Layer 0](https://i.imgur.com/pLdgxlJ.png)
+
+Layer 1
+
+![Layer 1](https://i.imgur.com/v24h9EO.png)
diff --git a/keyboards/w1_at/keymaps/vial/rules.mk b/keyboards/w1_at/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/w1_at/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/w1_at/keymaps/vial/vial.json b/keyboards/w1_at/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4f0cb8638f
--- /dev/null
+++ b/keyboards/w1_at/keymaps/vial/vial.json
@@ -0,0 +1,288 @@
+{
+ "name": "W1-AT",
+ "vendorId": "0x8968",
+ "productId": "0x5754",
+ "lighting": "none",
+ "customKeycodes": [{"name": "00", "title": "00", "shortName": "KC_P00"}],
+ "matrix": {"rows": 5, "cols": 20},
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ "Split Right Shift",
+ "Single Num +",
+ "Split Num Enter",
+ "Split Num 0",
+ "10U Spacebar"
+ ],
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "0,2",
+ {
+ "c": "#cccccc"
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ "0,14",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "0,15\n\n\n0,0",
+ {
+ "x": 0.25
+ },
+ "0,16",
+ "0,17",
+ "0,18",
+ "0,19",
+ {
+ "x": 0.75
+ },
+ "0,15\n\n\n0,1",
+ "2,14\n\n\n0,1"
+ ],
+ [
+ {
+ "c": "#cccccc"
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,2",
+ {
+ "c": "#cccccc"
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ "1,13",
+ "1,14",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,15\n\n\n1,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,16",
+ "1,17",
+ "1,18",
+ {
+ "c": "#aaaaaa"
+ },
+ "1,19\n\n\n4,0",
+ {
+ "x": 1.5,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,15\n\n\n1,1",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa",
+ "h": 2
+ },
+ "1,19\n\n\n4,1"
+ ],
+ [
+ {
+ "c": "#cccccc"
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "2,2",
+ {
+ "c": "#cccccc"
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ "2,13",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "2,15\n\n\n1,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,16",
+ "2,17",
+ "2,18",
+ {
+ "c": "#aaaaaa"
+ },
+ "2,19\n\n\n4,0",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "1,15\n\n\n1,1"
+ ],
+ [
+ "3,0",
+ "3,1",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,2\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ "3,13",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "3,14\n\n\n3,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "3,16",
+ "3,17",
+ "3,18",
+ {
+ "c": "#aaaaaa",
+ "h": 2
+ },
+ "4,19\n\n\n5,0",
+ {
+ "x": 3.25
+ },
+ "3,19\n\n\n5,1"
+ ],
+ [
+ {
+ "c": "#cccccc"
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,2",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "4,4\n\n\n7,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,8\n\n\n7,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,13\n\n\n7,0",
+ {
+ "x": 1,
+ "w": 1.5
+ },
+ "4,15",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "4,16\n\n\n6,0",
+ "4,18",
+ {
+ "x": 4.25,
+ "c": "#aaaaaa"
+ },
+ "4,19\n\n\n5,1"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 2.25,
+ "w": 1.25
+ },
+ "3,2\n\n\n2,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,3\n\n\n2,1",
+ {
+ "w": 10
+ },
+ "4,8\n\n\n7,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,14\n\n\n3,1",
+ "3,15\n\n\n3,1",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "4,16\n\n\n6,1",
+ "4,17\n\n\n6,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/waterfowl/keymaps/vial/config.h b/keyboards/waterfowl/keymaps/vial/config.h
new file mode 100644
index 0000000000..0c550f1f5a
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x95, 0x71, 0x9F, 0x29, 0xA6, 0x0B, 0x39, 0x57}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 2, 4, 6}
+#define VIAL_UNLOCK_COMBO_COLS {0, 0, 0, 0}
diff --git a/keyboards/waterfowl/keymaps/vial/keymap.c b/keyboards/waterfowl/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..4fe117cd50
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/vial/keymap.c
@@ -0,0 +1,117 @@
+/* Copyright 2022 CyanDuck
+*
+* 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 3 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 {
+ _QWERTY,
+ _NAVNUM,
+ _SYM,
+ _FUNC,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | S | D | F | G | | H | J | K | L | ; |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Z | X | C | V | B | |CAPS | |NUMLK| | N | M | , | . | / |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_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_LSFT, KC_J), MT(MOD_LCTL, KC_K), MT(MOD_LALT, KC_L), MT(MOD_LGUI, KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_CAPS, KC_NUM, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* NAVNUM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | | PgUp | UP | PgDn | | | / | 7 | 8 | 9 | - |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Home | Left | Down | Right| End | | = | 4 | 5 | 6 | + |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | | | INS | | | |CAPS | |NUMLK| | 0 | 1 | 2 | 3 | * |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | MO(3)| | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_NAVNUM] = LAYOUT(
+ KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS,
+ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS,
+ KC_NO, KC_NO, KC_INS, KC_NO, KC_NO, KC_0, KC_1, KC_2, KC_3, KC_ASTR,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_CAPS, KC_NUM, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* SYM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | % | @ | [ | ] | \ | | ¦ | ¬ | ^ | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | # | ! | ( | ) | | | | _ | ' | " | ~ | ` |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | $ | £ | { | } | & | |CAPS | |NUMLK| | | | | | |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_SYM] = LAYOUT(
+ KC_PERC, KC_AT, KC_LBRC, KC_RBRC, KC_BSLS, KC_NO, KC_NO, KC_CIRC, KC_NO, KC_NO,
+ KC_HASH, KC_EXLM, KC_LPRN, KC_RPRN, KC_PIPE, KC_UNDS, KC_QUOT, KC_DQT, KC_TILD, KC_GRV,
+ KC_DLR, KC_NO, KC_LCBR, KC_RCBR, KC_AMPR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_CAPS, KC_NUM, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* FUNC
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | | | | | | | | F7 | F8 | F9 | F11 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | F4 | F5 | F6 | F12 |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Reset| | | | | |CAPS | |NUMLK| | F10 | F1 | F2 | F3 | F13 |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_FUNC] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F11,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_F12,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_F10, KC_F1, KC_F2, KC_F3, KC_F13,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_CAPS, KC_NUM, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_TAB, S(KC_TAB)), ENCODER_CCW_CW(KC_MS_WH_LEFT, KC_MS_WH_RIGHT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [_NAVNUM] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_TAB, S(KC_TAB)), ENCODER_CCW_CW(KC_MS_WH_LEFT, KC_MS_WH_RIGHT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [_SYM] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_TAB, S(KC_TAB)), ENCODER_CCW_CW(KC_MS_WH_LEFT, KC_MS_WH_RIGHT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [_FUNC] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_TAB, S(KC_TAB)), ENCODER_CCW_CW(KC_MS_WH_LEFT, KC_MS_WH_RIGHT), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+};
+#endif
diff --git a/keyboards/waterfowl/keymaps/vial/rules.mk b/keyboards/waterfowl/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..db6cb50ede
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+KEY_OVERRIDE_ENABLE = no
+TAP_DANCE_ENABLE = no
+COMBO_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/waterfowl/keymaps/vial/vial.json b/keyboards/waterfowl/keymaps/vial/vial.json
new file mode 100644
index 0000000000..2e2f3118a7
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/vial/vial.json
@@ -0,0 +1,263 @@
+{
+ "name": "Waterfowl",
+ "vendorId": "0xFEED",
+ "productId": "0x9CE3",
+ "lighting": "none",
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap":
+ [
+ [
+ {
+ "y": 0.25,
+ "x": 3
+ },
+ "0,2",
+ {
+ "x": 9
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "0,1",
+ {
+ "x": 1
+ },
+ "0,3",
+ {
+ "x": 7
+ },
+ "4,3",
+ {
+ "x": 1
+ },
+ "4,1"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "0,4",
+ {
+ "x": 5
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.625,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13
+ },
+ "4,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "1,2",
+ {
+ "x": 9
+ },
+ "5,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "1,1",
+ {
+ "x": 1
+ },
+ "1,3",
+ {
+ "x": 1
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1
+ },
+ "3,0\n\n\n\n\n\n\n\n\ne",
+ "3,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1
+ },
+ "5,3",
+ {
+ "x": 1
+ },
+ "5,1"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "1,4",
+ {
+ "x": 5
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.625,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13
+ },
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "2,2",
+ {
+ "x": 9
+ },
+ "6,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "2,1",
+ {
+ "x": 1
+ },
+ "2,3",
+ {
+ "x": 1.5
+ },
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,4",
+ {
+ "x": 1.5
+ },
+ "6,3",
+ {
+ "x": 1
+ },
+ "6,1"
+ ],
+ [
+ {
+ "y": -0.875,
+ "x": 5
+ },
+ "2,4",
+ {
+ "x": 5
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.625,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13
+ },
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,0",
+ {
+ "x": 9
+ },
+ "7,0"
+ ],
+ [
+ {
+ "x": 2.5
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 8
+ },
+ "2,0\n\n\n\n\n\n\n\n\ne",
+ "2,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "r": 15,
+ "rx": 4,
+ "ry": 8.175,
+ "y": -4.675,
+ "x": -0.5
+ },
+ "3,1"
+ ],
+ [
+ {
+ "r": 30,
+ "y": -1,
+ "x": -0.5
+ },
+ "3,2"
+ ],
+ [
+ {
+ "r": 45,
+ "y": -1,
+ "x": -0.5
+ },
+ "3,3"
+ ],
+ [
+ {
+ "r": -45,
+ "rx": 13,
+ "y": -4.675,
+ "x": -0.5
+ },
+ "7,3"
+ ],
+ [
+ {
+ "r": -30,
+ "y": -1,
+ "x": -0.5
+ },
+ "7,2"
+ ],
+ [
+ {
+ "r": -15,
+ "y": -1,
+ "x": -0.5
+ },
+ "7,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/vial/config.h b/keyboards/wilba_tech/wt60_h1/keymaps/vial/config.h
new file mode 100644
index 0000000000..d7e773fd73
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_h1/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+/* Vial configuration */
+#define VIAL_KEYBOARD_UID {0x4D, 0x1A, 0x49, 0x5D, 0x98, 0xAF, 0x2A, 0x0F}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 12 }
diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/vial/keymap.c b/keyboards/wilba_tech/wt60_h1/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..1f9d213f05
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_h1/keymaps/vial/keymap.c
@@ -0,0 +1 @@
+#include "../default/keymap.c"
\ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/vial/rules.mk b/keyboards/wilba_tech/wt60_h1/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..3ed0d216fb
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_h1/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+QMK_SETTINGS = no
diff --git a/keyboards/wilba_tech/wt60_h1/keymaps/vial/vial.json b/keyboards/wilba_tech/wt60_h1/keymaps/vial/vial.json
new file mode 100644
index 0000000000..cfe2865425
--- /dev/null
+++ b/keyboards/wilba_tech/wt60_h1/keymaps/vial/vial.json
@@ -0,0 +1,200 @@
+{
+ "name": "wilba.tech WT60-H1",
+ "vendorId": "0x6582",
+ "productId": "0x0024",
+ "lighting": "none",
+ "matrix": {"rows": 5, "cols": 14},
+ "layouts": {
+ "labels": [["Bottom Row", "7U", "HHKB", "WKL"]],
+ "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",
+ "0,13",
+ "2,13"
+ ],
+ [
+ {
+ "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",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "1,13"
+ ],
+ [
+ {
+ "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,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,12",
+ "3,13"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0\n\n\n0,0",
+ "4,1\n\n\n0,0",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n0,0",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n0,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,11\n\n\n0,0",
+ "4,12\n\n\n0,0",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n0,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "w": 1.5,
+ "d": true
+ },
+ "4,0\n\n\n0,1",
+ "4,1\n\n\n0,1",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n0,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n0,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,11\n\n\n0,1",
+ "4,12\n\n\n0,1",
+ {
+ "w": 1.5,
+ "d": true
+ },
+ "4,13\n\n\n0,1"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "4,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "4,1\n\n\n0,2",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n0,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,6\n\n\n0,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,11\n\n\n0,2",
+ {
+ "d": true
+ },
+ "4,12\n\n\n0,2",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n0,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/wuque/tata80/wk/keymaps/vial/config.h b/keyboards/wuque/tata80/wk/keymaps/vial/config.h
new file mode 100644
index 0000000000..b6c42aef33
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x6F, 0x39, 0x42, 0x3A, 0x41, 0x83, 0xFD, 0x60}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+#define VIAL_TAP_DANCE_ENTRIES 4
+#define VIAL_COMBO_ENTRIES 4
+#define VIAL_KEY_OVERRIDE_ENTRIES 4
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
diff --git a/keyboards/wuque/tata80/wk/keymaps/vial/keymap.c b/keyboards/wuque/tata80/wk/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..ea4680a0fc
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/keymaps/vial/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * 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_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_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_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_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, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/wuque/tata80/wk/keymaps/vial/rules.mk b/keyboards/wuque/tata80/wk/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..8ff1f2319b
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/wuque/tata80/wk/keymaps/vial/vial.json b/keyboards/wuque/tata80/wk/keymaps/vial/vial.json
new file mode 100644
index 0000000000..9c10ce9110
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/keymaps/vial/vial.json
@@ -0,0 +1,186 @@
+{
+ "name": "Tata80",
+ "vendorId": "0x2365",
+ "productId": "0x0168",
+ "lighting": "none",
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ {
+ "x": 0.25
+ },
+ "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",
+ {
+ "x": 0.25
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "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,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "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",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.72
+ },
+ "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"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "4,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,13",
+ {
+ "x": 1.25
+ },
+ "4,15"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "w": 1.25
+ },
+ "5,9",
+ {
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/wuque/tata80/wk/wk.c b/keyboards/wuque/tata80/wk/wk.c
new file mode 100644
index 0000000000..1846559718
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/wk.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 wuque
+ *
+ * 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 "wk.h"
diff --git a/keyboards/wuque/tata80/wk/wk.h b/keyboards/wuque/tata80/wk/wk.h
new file mode 100644
index 0000000000..d166d4312c
--- /dev/null
+++ b/keyboards/wuque/tata80/wk/wk.h
@@ -0,0 +1,44 @@
+/* Copyright 2022 wuque
+ *
+ * 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"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, \
+ k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k413, k415, \
+ k500, k501, k502, k506, k509, k510, k511, k513, k514, k515, k516 \
+) \
+{ \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, KC_NO, k313, KC_NO, KC_NO, KC_NO }, \
+ { k400, KC_NO, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, KC_NO, k413, KC_NO, k415, KC_NO }, \
+ { k500, k501, k502, KC_NO, KC_NO, KC_NO, k506, KC_NO, KC_NO, k509, k510, k511, KC_NO, k513, k514, k515, k516 } \
+}
diff --git a/keyboards/xelus/rs60/keymaps/vial/config.h b/keyboards/xelus/rs60/keymaps/vial/config.h
new file mode 100644
index 0000000000..991bc24039
--- /dev/null
+++ b/keyboards/xelus/rs60/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB5, 0xCF, 0x0C, 0xD3, 0x06, 0xBA, 0xDB, 0x39}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/xelus/rs60/keymaps/vial/keymap.c b/keyboards/xelus/rs60/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..2900081385
--- /dev/null
+++ b/keyboards/xelus/rs60/keymaps/vial/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * 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_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_BSLS, KC_DEL,
+ 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_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_APP, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ 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_PSCR,
+ KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, QK_BOOT,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/xelus/rs60/keymaps/vial/rules.mk b/keyboards/xelus/rs60/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..a1c84ce8f9
--- /dev/null
+++ b/keyboards/xelus/rs60/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+
+CONSOLE_ENABLE = no
diff --git a/keyboards/xelus/rs60/keymaps/vial/vial.json b/keyboards/xelus/rs60/keymaps/vial/vial.json
new file mode 100644
index 0000000000..356ea697ed
--- /dev/null
+++ b/keyboards/xelus/rs60/keymaps/vial/vial.json
@@ -0,0 +1,195 @@
+{
+ "name": "RS60",
+ "vendorId": "0x5845",
+ "productId": "0x5253",
+ "lighting": "none",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "Split Right Shift",
+ ["Bottom Row", "6.25U", "7U"]
+ ],
+ "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
+ },
+ "0,13\n\n\n0,0",
+ {
+ "x": 0.5
+ },
+ "0,13\n\n\n0,1",
+ "2,13\n\n\n0,1"
+ ],
+ [
+ {
+ "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,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,12\n\n\n1,0",
+ "3,13\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 2.75
+ },
+ "3,12\n\n\n1,1"
+ ],
+ [
+ {
+ "w": 1.25
+ },
+ "4,0\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "4,1\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "4,2\n\n\n2,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "4,5\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,9\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "4,10\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "4,12\n\n\n2,0",
+ {
+ "w": 1.25
+ },
+ "4,13\n\n\n2,0"
+ ],
+ [
+ {
+ "y": 0.5,
+ "w": 1.5
+ },
+ "4,0\n\n\n2,1",
+ "4,1\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,2\n\n\n2,1",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,5\n\n\n2,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10\n\n\n2,1",
+ "4,12\n\n\n2,1",
+ {
+ "w": 1.5
+ },
+ "4,13\n\n\n2,1"
+ ]
+ ]
+ }
+}
diff --git a/quantum/qmk_settings.c b/quantum/qmk_settings.c
index 7293f416c8..1549d7b5fc 100644
--- a/quantum/qmk_settings.c
+++ b/quantum/qmk_settings.c
@@ -26,7 +26,7 @@ static void auto_shift_timeout_apply(void) {
set_autoshift_timeout(QS.auto_shift_timeout);
}
-#ifdef MOUSEKEY_ENABLE
+#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
static void mousekey_apply(void) {
mk_delay = QS.mousekey_delay / 10;
mk_interval = QS.mousekey_interval;
@@ -48,7 +48,7 @@ static const qmk_settings_proto_t protos[] PROGMEM = {
DECLARE_STATIC_SETTING(6, osk_timeout),
DECLARE_STATIC_SETTING(7, tapping_term),
DECLARE_STATIC_SETTING(8, tapping),
-#ifdef MOUSEKEY_ENABLE
+#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
DECLARE_STATIC_SETTING_NOTIFY(9, mousekey_delay, mousekey_apply),
DECLARE_STATIC_SETTING_NOTIFY(10, mousekey_interval, mousekey_apply),
DECLARE_STATIC_SETTING_NOTIFY(11, mousekey_move_delta, mousekey_apply),
@@ -166,7 +166,7 @@ void qmk_settings_reset(void) {
QS.osk_tap_toggle = ONESHOT_TAP_TOGGLE;
QS.osk_timeout = ONESHOT_TIMEOUT;
-#ifdef MOUSEKEY_ENABLE
+#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
QS.mousekey_delay = MOUSEKEY_DELAY;
QS.mousekey_interval = MOUSEKEY_INTERVAL;
QS.mousekey_move_delta = MOUSEKEY_MOVE_DELTA;
diff --git a/util/ci_vial_verify_uid.py b/util/ci_vial_verify_uid.py
index a07cb24de5..5f98be7c2d 100755
--- a/util/ci_vial_verify_uid.py
+++ b/util/ci_vial_verify_uid.py
@@ -1,33 +1,33 @@
#!/usr/bin/env python3
from glob import glob
-import os
+from pathlib import Path
import re
import sys
import struct
from collections import defaultdict
-
def main():
+
+ VIAL_UID_REGEX = re.compile(r"#\s*define\s+VIAL_KEYBOARD_UID\s+(?:\\(?:\n|\r)\s*)*{\s*((?:0(?:x|X)(?:[0-9a-fA-F]){2}\s*,\s*){7}(?:0(?:x|X)(?:[0-9a-fA-F]){2}))\s*}")
+
error = 0
uid_to_keyboards = defaultdict(set)
for filename in glob("keyboards/**/vial.json", recursive=True):
keyboard = filename[10:-10].split("/keymaps/")[0]
- path = os.path.dirname(filename)
+ dirname = Path(filename).parents[0]
uid = None
+
while True:
- config_h = os.path.join(path, "config.h")
- if os.path.exists(config_h):
- with open(config_h, "r") as inf:
- for line in inf:
- uid = re.findall(r"#define.*VIAL_KEYBOARD_UID.*{(.*)}", line)
- if uid:
- break
+ config_h = dirname.joinpath("config.h")
+ if config_h.exists() and config_h.stat().st_size < 100000:
+ content = config_h.read_text()
+ uid = VIAL_UID_REGEX.search(content)
if uid:
break
- path = os.path.dirname(path)
- if path.endswith("keyboards"):
+ dirname = dirname.parents[0]
+ if dirname.match("keyboards"):
break
if not uid:
@@ -35,7 +35,8 @@ def main():
error = 1
continue
- uid = uid[0].split(",")
+ uid = uid[1].split(",")
+ uid.reverse()
uid = [int(x, 16) for x in uid]
uid = struct.pack("BBBBBBBB", *uid).hex()
uid_to_keyboards[uid].add(keyboard)