diff --git a/keyboards/gh60/revc/keymaps/vial/vial.json b/keyboards/gh60/revc/keymaps/vial/vial.json
index 39ab675f87d..ea1f909bb70 100644
--- a/keyboards/gh60/revc/keymaps/vial/vial.json
+++ b/keyboards/gh60/revc/keymaps/vial/vial.json
@@ -12,7 +12,12 @@
"Split Backspace",
"ISO Enter",
"Split Left Shift",
- ["Split Right Shift", "2.75U Right Shift", "1.75U + 1U", "1U + 1.75U"],
+ [
+ "Split Right Shift",
+ "2.75U Right Shift",
+ "1.75U + 1U",
+ "1U + 1.75U"
+ ],
["Bottom Row", "6.25U", "7U", "WKL", "HHKB"]
],
"keymap": [
@@ -21,14 +26,9 @@
"author": "maxmalkav"
},
[
- {
- "x": 2.5,
- "c": "#777777"
- },
+ { "x": 2.5, "c": "#777777" },
"0,0",
- {
- "c": "#cccccc"
- },
+ { "c": "#cccccc" },
"0,1",
"0,2",
"0,3",
@@ -41,30 +41,17 @@
"0,10",
"0,11",
"0,12",
- {
- "c": "#aaaaaa",
- "w": 2
- },
+ { "c": "#aaaaaa", "w": 2 },
"0,13\n\n\n0,0",
- {
- "x": 1.25,
- "c": "#cccccc"
- },
- "0,12\n\n\n0,1",
- {
- "c": "#aaaaaa"
- },
+ { "x": 1.25, "c": "#cccccc" },
+ "0,13\n\n\n0,1",
+ { "c": "#aaaaaa" },
"4,9\n\n\n0,1"
],
[
- {
- "x": 2.5,
- "w": 1.5
- },
+ { "x": 2.5, "w": 1.5 },
"1,0",
- {
- "c": "#cccccc"
- },
+ { "c": "#cccccc" },
"1,1",
"1,2",
"1,3",
@@ -77,10 +64,7 @@
"1,10",
"1,11",
"1,12",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
+ { "c": "#aaaaaa", "w": 1.5 },
"1,13\n\n\n1,0",
{
"x": 2,
@@ -94,15 +78,9 @@
"2,13\n\n\n1,1"
],
[
- {
- "x": 2.5,
- "c": "#aaaaaa",
- "w": 1.75
- },
+ { "x": 2.5, "c": "#aaaaaa", "w": 1.75 },
"2,0",
- {
- "c": "#cccccc"
- },
+ { "c": "#cccccc" },
"2,1",
"2,2",
"2,3",
@@ -114,36 +92,19 @@
"2,9",
"2,10",
"2,11",
- {
- "c": "#777777",
- "w": 2.25
- },
+ { "c": "#777777", "w": 2.25 },
"2,13\n\n\n1,0",
- {
- "x": 1,
- "c": "#cccccc"
- },
+ { "x": 1, "c": "#cccccc" },
"2,12\n\n\n1,1"
],
[
- {
- "c": "#aaaaaa",
- "w": 1.25
- },
+ { "c": "#aaaaaa", "w": 1.25 },
"3,0\n\n\n2,1",
- {
- "c": "#cccccc"
- },
+ { "c": "#cccccc" },
"3,1\n\n\n2,1",
- {
- "x": 0.25,
- "c": "#aaaaaa",
- "w": 2.25
- },
+ { "x": 0.25, "c": "#aaaaaa", "w": 2.25 },
"3,0\n\n\n2,0",
- {
- "c": "#cccccc"
- },
+ { "c": "#cccccc" },
"3,2",
"3,3",
"3,4",
@@ -154,138 +115,68 @@
"3,9",
"3,10",
"3,11",
- {
- "c": "#aaaaaa",
- "w": 2.75
- },
+ { "c": "#aaaaaa", "w": 2.75 },
"3,13\n\n\n3,0",
- {
- "x": 0.5,
- "w": 1.75
- },
+ { "x": 0.5, "w": 1.75 },
"3,12\n\n\n3,1",
"3,13\n\n\n3,1"
],
[
- {
- "x": 2.5,
- "w": 1.25
- },
+ { "x": 2.5, "w": 1.25 },
"4,0\n\n\n4,0",
- {
- "w": 1.25
- },
+ { "w": 1.25 },
"4,1\n\n\n4,0",
- {
- "w": 1.25
- },
+ { "w": 1.25 },
"4,2\n\n\n4,0",
- {
- "c": "#cccccc",
- "w": 6.25
- },
+ { "c": "#cccccc", "w": 6.25 },
"4,5\n\n\n4,0",
- {
- "c": "#aaaaaa",
- "w": 1.25
- },
+ { "c": "#aaaaaa", "w": 1.25 },
"4,10\n\n\n4,0",
- {
- "w": 1.25
- },
+ { "w": 1.25 },
"4,11\n\n\n4,0",
- {
- "w": 1.25
- },
+ { "w": 1.25 },
"4,12\n\n\n4,0",
- {
- "w": 1.25
- },
+ { "w": 1.25 },
"4,13\n\n\n4,0",
- {
- "x": 0.5,
- "c": "#cccccc"
- },
+ { "x": 0.5, "c": "#cccccc" },
"3,12\n\n\n3,2",
- {
- "c": "#aaaaaa",
- "w": 1.75
- },
+ { "c": "#aaaaaa", "w": 1.75 },
"3,13\n\n\n3,2"
],
[
- {
- "y": 0.25,
- "x": 2.5,
- "w": 1.5
- },
+ { "y": 0.25, "x": 2.5, "w": 1.5 },
"4,0\n\n\n4,1",
"4,1\n\n\n4,1",
- {
- "w": 1.5
- },
+ { "w": 1.5 },
"4,2\n\n\n4,1",
- {
- "c": "#cccccc",
- "w": 7
- },
+ { "c": "#cccccc", "w": 7 },
"4,5\n\n\n4,1",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
+ { "c": "#aaaaaa", "w": 1.5 },
"4,11\n\n\n4,1",
"4,12\n\n\n4,1",
- {
- "w": 1.5
- },
+ { "w": 1.5 },
"4,13\n\n\n4,1"
],
[
- {
- "x": 2.5,
- "w": 1.5
- },
+ { "x": 2.5, "w": 1.5 },
"4,0\n\n\n4,2",
- {
- "x": 1,
- "w": 1.5
- },
+ { "x": 1, "w": 1.5 },
"4,2\n\n\n4,2",
- {
- "c": "#cccccc",
- "w": 7
- },
+ { "c": "#cccccc", "w": 7 },
"4,5\n\n\n4,2",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
+ { "c": "#aaaaaa", "w": 1.5 },
"4,11\n\n\n4,2",
- {
- "x": 1,
- "w": 1.5
- },
+ { "x": 1, "w": 1.5 },
"4,13\n\n\n4,2"
],
[
- {
- "x": 4
- },
+ { "x": 4 },
"4,1\n\n\n4,3",
- {
- "w": 1.5
- },
+ { "w": 1.5 },
"4,2\n\n\n4,3",
- {
- "c": "#cccccc",
- "w": 6.25
- },
+ { "c": "#cccccc", "w": 6.25 },
"4,5\n\n\n4,3",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
+ { "c": "#aaaaaa", "w": 1.5 },
"4,10\n\n\n4,3",
"4,11\n\n\n4,3"
]
diff --git a/keyboards/jlw/bruce_the_keyboard/info.json b/keyboards/jlw/bruce_the_keyboard/info.json
new file mode 100644
index 00000000000..6f819bb4255
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/info.json
@@ -0,0 +1,68 @@
+{
+ "keyboard_name": "Bruce the Keyboard",
+ "manufacturer": "whydobearsexplod",
+ "url": "https://github.com/josh-l-wang/bruce-the-keyboard",
+ "maintainer": "jlw",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xA459",
+ "device_version": "0.0.1"
+ },
+ "processor": "STM32F072",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["B1", "B0", "A7", "A4", "A3", "B7", "B6", "B5", "B4", "B3"],
+ "rows": ["B11", "B9", "A5", "A6"]
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0, "h":1.75},
+ {"matrix": [0, 1], "x": 1, "y": 0, "h":1.5},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0, "h":1.25},
+ {"matrix": [0, 4], "x": 4, "y": 0, "h":1.25},
+ {"matrix": [0, 5], "x": 5, "y": 0, "h":1.25},
+ {"matrix": [0, 6], "x": 6, "y": 0, "h":1.25},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0, "h":1.5},
+ {"matrix": [0, 9], "x": 9, "y": 0, "h":1.75},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.75},
+ {"matrix": [1, 1], "x": 1, "y": 1.5},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1.5},
+ {"matrix": [1, 9], "x": 9, "y": 1.75},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.75, "h":1.5},
+ {"matrix": [2, 1], "x": 1, "y": 2.5, "h":1.75},
+ {"matrix": [2, 2], "x": 2, "y": 2, "h":1.25},
+ {"matrix": [2, 3], "x": 3, "y": 2.25},
+ {"matrix": [2, 4], "x": 4, "y": 2.25},
+ {"matrix": [2, 5], "x": 5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6, "y": 2.25},
+ {"matrix": [2, 7], "x": 7, "y": 2, "h":1.25},
+ {"matrix": [2, 8], "x": 8, "y": 2.5, "h":1.75},
+ {"matrix": [2, 9], "x": 9, "y": 2.75, "h":1.5},
+
+ {"matrix": [3, 2], "x": 2, "y": 3.25},
+ {"matrix": [3, 3], "x": 3, "y": 3.25, "w": 2},
+ {"matrix": [3, 5], "x": 5, "y": 3.25, "w": 2},
+ {"matrix": [3, 7], "x": 7, "y": 3.25},
+ ]
+ }
+
+ }
+}
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c
new file mode 100644
index 00000000000..9efecb5115d
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2023 sporkus
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define HM_A LSFT_T(KC_A)
+#define HM_S LALT_T(KC_S)
+#define HM_D LGUI_T(KC_D)
+#define HM_F LCTL_T(KC_F)
+#define HM_J RCTL_T(KC_J)
+#define HM_K RGUI_T(KC_K)
+#define HM_L RALT_T(KC_L)
+#define HM_Z LSFT_T(KC_Z)
+#define HM_SLSH LSFT_T(KC_SLSH)
+#define HM_QUOT RSFT_T(KC_QUOT)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ MO(1), KC_ENT, MO(2), KC_BSPC
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_0,
+ _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______,
+ _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_LEFT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/default/rules.mk b/keyboards/jlw/bruce_the_keyboard/keymaps/default/rules.mk
new file mode 100644
index 00000000000..17ab7c1dccc
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/default/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank.
\ No newline at end of file
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/vial/config.h b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/config.h
new file mode 100644
index 00000000000..fc83f74feba
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5D, 0x03, 0x13, 0x17, 0xBA, 0x20, 0xF5, 0x16}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 9 }
+
+#define VIAL_COMBO_ENTRIES 69
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/vial/keymap.c b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..9efecb5115d
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2023 sporkus
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define HM_A LSFT_T(KC_A)
+#define HM_S LALT_T(KC_S)
+#define HM_D LGUI_T(KC_D)
+#define HM_F LCTL_T(KC_F)
+#define HM_J RCTL_T(KC_J)
+#define HM_K RGUI_T(KC_K)
+#define HM_L RALT_T(KC_L)
+#define HM_Z LSFT_T(KC_Z)
+#define HM_SLSH LSFT_T(KC_SLSH)
+#define HM_QUOT RSFT_T(KC_QUOT)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ MO(1), KC_ENT, MO(2), KC_BSPC
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_0,
+ _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______,
+ _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_LEFT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/vial/rules.mk b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..4f7618e9b21
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/jlw/bruce_the_keyboard/keymaps/vial/vial.json b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e16b011e975
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/keymaps/vial/vial.json
@@ -0,0 +1,152 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 4,
+ "cols": 10
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ {
+ "h": 1.75
+ },
+ "0,0",
+ {
+ "h": 1.5
+ },
+ "0,1",
+ "0,2",
+ {
+ "h": 1.25
+ },
+ "0,3",
+ {
+ "h": 1.25
+ },
+ "0,4",
+ {
+ "h": 1.25
+ },
+ "0,5",
+ {
+ "h": 1.25
+ },
+ "0,6",
+ "0,7",
+ {
+ "h": 1.5
+ },
+ "0,8",
+ {
+ "h": 1.75
+ },
+ "0,9"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 4
+ },
+ "1,7"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "1,1",
+ {
+ "x": 6
+ },
+ "1,8"
+ ],
+ [
+ {
+ "y": -0.75
+ },
+ "1,0",
+ {
+ "x": 8
+ },
+ "1,9"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2,
+ "h": 1.25
+ },
+ "2,2",
+ {
+ "x": 4,
+ "h": 1.25
+ },
+ "2,7"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1,
+ "h": 1.75
+ },
+ "2,1",
+ {
+ "x": 6,
+ "h": 1.75
+ },
+ "2,8"
+ ],
+ [
+ {
+ "y": -0.75,
+ "h": 1.5
+ },
+ "2,0",
+ {
+ "x": 8,
+ "h": 1.5
+ },
+ "2,9"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,2",
+ {
+ "w": 2
+ },
+ "3,3",
+ {
+ "w": 2
+ },
+ "3,5",
+ "3,7"
+ ]
+]
+}}
\ No newline at end of file
diff --git a/keyboards/jlw/bruce_the_keyboard/readme.md b/keyboards/jlw/bruce_the_keyboard/readme.md
new file mode 100644
index 00000000000..5137798f2ab
--- /dev/null
+++ b/keyboards/jlw/bruce_the_keyboard/readme.md
@@ -0,0 +1,5 @@
+# This is the firmware for Bruce the Keyboard
+
+Please note that Bruce is a keyboard, not a human.
+
+Bruce the Keyboard is a column staggered 34-key board created by whydobearsexplod and [jlw](github.com/josh-l-wang) with a single layout.
\ No newline at end of file
diff --git a/keyboards/kradoindustries/krado66/keymaps/vial/config.h b/keyboards/kradoindustries/krado66/keymaps/vial/config.h
new file mode 100644
index 00000000000..f1b94f4d032
--- /dev/null
+++ b/keyboards/kradoindustries/krado66/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB7, 0x72, 0xC9, 0x62, 0x53, 0xF5, 0xBD, 0xDF}
+#define VIAL_UNLOCK_COMBO_ROWS { 1, 9 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 7 }
+
+#define VIALRGB_NO_DIRECT
+
+#define DYNAMIC_KEYMAP_MACRO_COUNT 6
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/kradoindustries/krado66/keymaps/vial/keymap.c b/keyboards/kradoindustries/krado66/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..9aa1dd6295e
--- /dev/null
+++ b/keyboards/kradoindustries/krado66/keymaps/vial/keymap.c
@@ -0,0 +1,139 @@
+/*
+Copyright 2023 Matt F
+
+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
+
+#define FN MO(1)
+#define EXTRA TG(2)
+#define BACKFN LT(1, KC_BSPC)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, 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_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, \
+ BACKFN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC, KC_UP, FN, \
+ KC_LCTL, KC_LGUI, KC_LALT, FN, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+
+/* Default with Cadet shifts and no Caps Lock
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------+
+ * | ESC | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | Backspc| Back |
+ * | | ` | | | | | | | | | | | _ | = | | |
+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | DELETE |
+ * | | | | | | | | | | | | { | } | |
+ * +---------------+--------+--------+--------+--------+------- +--------+--------+--------+--------+--------+--------|--------+-------------+
+ * | BACKSPACE (FN)| A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
+ * | | | | | | | | | | | : | " | |
+ * +-----------------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------+-------+-----------+-----+
+ * | CADET SHIFT ( | Z | X | C | V | B | N | M | < | > | / | CADET SHIFT ) | UP | Fn |
+ * | | | | | | | | | , | . | ? | | | |
+ * |----------+----------+----------+--------------------------------------------------------+--------+--------+--------+--------+--------|--------+
+ * | LCTRL | LGUI | LALT | Fn | SPACE | Space | RALT | GUI | RCTRL | LEFT | DOWN | RIGHT |
+ * | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------+--------+
+*/
+
+
+ [1] = LAYOUT(
+ _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, QK_BOOT, \
+ _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, KC_BSLS, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, RGB_TOG, \
+ _______, RGB_M_R, RGB_M_X, RGB_M_SW,RGB_M_K, RGB_M_B, RGB_M_G, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, KC_CAPS, KC_PGUP, _______, \
+ _______, QK_BOOT, _______, _______, KC_ENT, EXTRA, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ ),
+
+/* Fn
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------+
+ * | | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE | RESET |
+ * | | | | | | | | | | | | | | | | |
+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ * | | HOME | UP | END | PGUP | | | | INS | | Print | | | PIPE \ |
+ * | | | | | | | | | | | Screen | | | |
+ * +---------------+--------+--------+--------+--------+------- +--------+--------+--------+--------+--------+--------|--------+-------------+
+ * | | LEFT | DOWN | RIGHT | PGDN | | | PREV | PLAY | NEXT | | | RGB TOG |
+ * | | | | | | | | | | | | | |
+ * +-----------------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------+-------+------------+----+
+ * | | Rainbow| Xmas | Swirl | Knight |Breathe |GradieNt| MUTE | VOL DN | VOL UP | PIPE \ | CAPS LOCK | PAGEUP | Fn |
+ * | | | | | | | | | | | | | | |
+ * |----------+----------+----------+---------------------------------------------------------+--------+--------+----------------+--------+--------+
+ * | | RESET | | Fn | ENTER | EXTRA | | | | HOME | PAGEDN | END |
+ * | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------+--------+
+ */
+
+ [2] = LAYOUT(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PMNS, KC_PPLS, KC_BSPC, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, KC_DEL, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, _______, _______, \
+ _______, _______, _______, EXTRA, KC_TAB, KC_P0, KC_PDOT, _______, _______, _______, _______, KC_TRNS \
+ ),
+
+/* EXTR
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | | | | - | + | BACKSP | |
+ * | | | | | | | | | | | | | | | | |
+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ * | | | | | | | | | 7 | 8 | 9 | | | DELETE |
+ * | | | | | | | | | | | | | | |
+ * +---------------+--------+--------+--------+--------+------- +--------+--------+--------+--------+--------+--------|--------+-------------+
+ * | | | | | | | | | 4 | 5 | 6 | | ENT |
+ * | | | | | | | | | | | | | |
+ * +-----------------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------+-------+------------+----+
+ * | | | | | | | | | 1 | 2 | 3 | + | | TRNS |
+ * | | | | | | | | | | | | | | |
+ * |----------+----------+----------+---------------------------------------------------------+--------+--------+----------------+--------+--------+
+ * | | | | EXTRA | ENTER | 0 | . | | | | | |
+ * | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------+--------+
+ */
+};
+
+#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_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(C(KC_TAB), C(S(KC_TAB))), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+};
+#endif
+
+
+
+ /* Encoder Positions
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------+
+ * | | | | | | | | | | | | | | | | |
+ * | E1 | | | | | | | | | | | | | | | |
+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ * | | | | | | | | | | | | | | |
+ * | | | | | | | | | | | | | | |
+ * +---------------+--------+--------+--------+--------+------- +--------+--------+--------+--------+--------+--------|--------+-------------+
+ * | | | | | | | | | | | | | |
+ * | | | | | | | | | | | | | |
+ * +-----------------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------+-------+------------+----+
+ * | | | | | | | | | | | | | | |
+ * | | | | | | | | | | | | | | E2 |
+ * |----------+----------+----------+---------------------------------------------------------+--------+--------+----------------+--------+--------+
+ * | | | | | | | | | | | | |
+ * | E3 | | | | E3 | | | | E2 | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------+--------+
+ */
+
+
diff --git a/keyboards/kradoindustries/krado66/keymaps/vial/rules.mk b/keyboards/kradoindustries/krado66/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..aeb59cb59d1
--- /dev/null
+++ b/keyboards/kradoindustries/krado66/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+VIAL_ENABLE = yes
+COMBO_ENABLE = no
+QMK_SETTINGS = yes
+ENCODER_MAP_ENABLE = yes
+KEY_OVERRIDE_ENABLE = no
+TAP_DANCE_ENABLE = no
+MOUSEKEY_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/kradoindustries/krado66/keymaps/vial/vial.json b/keyboards/kradoindustries/krado66/keymaps/vial/vial.json
new file mode 100644
index 00000000000..a74d8bdce3c
--- /dev/null
+++ b/keyboards/kradoindustries/krado66/keymaps/vial/vial.json
@@ -0,0 +1,281 @@
+{
+ "lighting": "qmk_rgblight",
+ "matrix": {"rows": 10, "cols": 8},
+ "layouts": {
+ "labels": [
+ "Unsplit Backspace Left",
+ "Split Backspace Right",
+ "Pipe/Bslash Swap",
+ "Enter Swap",
+ "2.75u Right Shift ",
+ ["Spacebar", "6.25u", "1.25u-2.25u-2.75u", "2.75u-1.25u-2.25u"],
+ ["Right Modifiers", "Three 1u", "Two 1.25u", "1.25u - 1u"]
+ ],
+ "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.25,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "0,1",
+ "1,1",
+ "0,2",
+ "1,2",
+ "0,3",
+ "1,3",
+ "0,4",
+ "1,4",
+ "0,5",
+ "1,5",
+ "0,6\n\n\n0,0",
+ "1,6\n\n\n0,0",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "0,7\n\n\n1,0",
+ {
+ "x": 2.25,
+ "w": 2
+ },
+ "0,6\n\n\n0,1",
+ {
+ "c": "#cccccc"
+ },
+ "0,7\n\n\n1,1",
+ "1,7\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "3,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\n\n\n2,0",
+ "3,6\n\n\n2,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,7\n\n\n2,0",
+ {
+ "x": 2.75,
+ "w": 1.5
+ },
+ "2,6\n\n\n2,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,6\n\n\n2,1",
+ "2,7\n\n\n2,1"
+ ],
+ [
+ {
+ "x": 2.5,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "5,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\n\n\n3,0",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "5,6\n\n\n3,0",
+ {
+ "x": 3,
+ "w": 2.25
+ },
+ "4,6\n\n\n3,1",
+ {
+ "c": "#cccccc"
+ },
+ "5,6\n\n\n3,1"
+ ],
+ [
+ {
+ "x": 2,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "7,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\n4,0",
+ {
+ "c": "#cccccc"
+ },
+ "6,7\n\n\n4,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "7,7",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "6,6\n\n\n4,1"
+ ],
+ [
+ {
+ "x": 2,
+ "w": 1.25
+ },
+ "8,0",
+ {
+ "w": 1.25
+ },
+ "9,0",
+ {
+ "w": 1.25
+ },
+ "8,1",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "8,3\n\n\n5,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "8,5\n\n\n6,0",
+ "9,5\n\n\n6,0",
+ "8,6\n\n\n6,0",
+ {
+ "c": "#cccccc"
+ },
+ "9,6",
+ "8,7",
+ "9,7"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 8
+ },
+ "2,0\n\n\n\n\n\n\n\n\ne",
+ "2,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5.75,
+ "w": 1.25
+ },
+ "9,2\n\n\n5,1",
+ {
+ "w": 2.25
+ },
+ "8,3\n\n\n5,1",
+ {
+ "w": 2.75
+ },
+ "9,4\n\n\n5,1",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "8,5\n\n\n6,1",
+ {
+ "w": 1.25
+ },
+ "9,5\n\n\n6,1",
+ {
+ "c": "#cccccc",
+ "w": 0.5,
+ "d": true
+ },
+ "\n\n\n6,1"
+ ],
+ [
+ {
+ "x": 5.75,
+ "w": 2.75
+ },
+ "9,2\n\n\n5,2",
+ {
+ "w": 1.25
+ },
+ "8,3\n\n\n5,2",
+ {
+ "w": 2.25
+ },
+ "9,4\n\n\n5,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "8,5\n\n\n6,2",
+ {
+ "c": "#cccccc",
+ "w": 0.75,
+ "d": true
+ },
+ "\n\n\n6,2",
+ {
+ "c": "#aaaaaa"
+ },
+ "8,6\n\n\n6,2"
+ ]
+]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/monsgeek/m3/keymaps/vial/README.md b/keyboards/monsgeek/m3/keymaps/vial/README.md
new file mode 100644
index 00000000000..29ecdf197ef
--- /dev/null
+++ b/keyboards/monsgeek/m3/keymaps/vial/README.md
@@ -0,0 +1,30 @@
+# Flashing MonsGeek M3
+
+MonsGeek M3 requires `wb32-dfu-uptader` to flash QMK (Vial)
+
+## Debian instructions
+
+These instructions have been tested on Debian Trixie. The binary
+`wb32-dfu-updater` will be placed in `/usr/local/bin`
+
+```sh
+# you may need some other dependencies
+sudo apt install -y cmake
+git clone https://github.com/WestberryTech/wb32-dfu-updater
+cd wb32-dfu-updater
+# script requires sudo privileges to install binaries in /usr/local/
+sudo ./boostrap.sh install
+# select option 1
+```
+
+## Flashing
+
+Once `wb32-dfu-updater` is installed and available on the default `$PATH`,
+you can put the keyboard in bootlader moder and run:
+
+```sh
+qmk flash -kb monsgeek/m3 -km vial
+```
+
+You can put the MonsGeek M3 in bootloader mode by using Via to associate
+the special keycode `RESET` to a key of your choice.
diff --git a/keyboards/monsgeek/m3/keymaps/vial/config.h b/keyboards/monsgeek/m3/keymaps/vial/config.h
new file mode 100644
index 00000000000..190353adde9
--- /dev/null
+++ b/keyboards/monsgeek/m3/keymaps/vial/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x97, 0xF3, 0x13, 0x41, 0x1B, 0xD7, 0x5E, 0xE7}
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
+
+// ESC + Pause/Break
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 16 }
diff --git a/keyboards/monsgeek/m3/keymaps/vial/keymap.c b/keyboards/monsgeek/m3/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..7a195ffb78e
--- /dev/null
+++ b/keyboards/monsgeek/m3/keymaps/vial/keymap.c
@@ -0,0 +1,79 @@
+/* Copyright (C) 2023 jonylee@hfd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum __layers {
+ WIN_B,
+ WIN_W,
+ WIN_FN,
+ MAC_B,
+ MAC_W,
+ MAC_FN
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [WIN_B] = LAYOUT_tkl_ansi( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_W] = LAYOUT_tkl_ansi( /* Base */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
+ _______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
+
+
+ [WIN_FN] = LAYOUT_tkl_ansi( /* FN */
+ _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
+ _______, _______,TG(WIN_W),_______, QK_BOOT, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
+
+ [MAC_B] = LAYOUT_tkl_ansi( /* Base */
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_W] = LAYOUT_tkl_ansi( /* Base */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
+ _______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
+ [MAC_FN] = LAYOUT_tkl_ansi( /* FN */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
+ _______, _______,TG(MAC_W),_______, QK_BOOT, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
+};
+// clang-format on
diff --git a/keyboards/monsgeek/m3/keymaps/vial/rules.mk b/keyboards/monsgeek/m3/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..4f7618e9b21
--- /dev/null
+++ b/keyboards/monsgeek/m3/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/monsgeek/m3/keymaps/vial/vial.json b/keyboards/monsgeek/m3/keymaps/vial/vial.json
new file mode 100644
index 00000000000..7c0dd299e94
--- /dev/null
+++ b/keyboards/monsgeek/m3/keymaps/vial/vial.json
@@ -0,0 +1,147 @@
+{
+ "name": "MonsGeek M3",
+ "vendorId": "0xFFFE",
+ "productId": "0x0009",
+ "lightning": "qmk_backlight",
+ "matrix": {
+ "rows": 6,
+ "cols": 17
+ },
+ "layouts": {
+ "labels": [],
+ "keymap": [
+ {
+ "name": "MonsGeek M3",
+ "author": "JLFont",
+ "switchMount": "cherry"
+ },
+ [
+ { "x": 2.5, "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, "c": "#aaaaaa" },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ { "y": 0.5, "x": 2.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",
+ { "x": 0.25 },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ { "x": 2.5, "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",
+ { "w": 1.5 },
+ "2,13",
+ { "x": 0.25, "c": "#aaaaaa" },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ { "x": 2.5, "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"
+ ],
+ [
+ { "x": 2.5, "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,13",
+ { "x": 1.25 },
+ "4,15"
+ ],
+ [
+ { "x": 2.5, "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",
+ { "w": 1.25 },
+ "5,11",
+ { "w": 1.25 },
+ "5,13",
+ { "x": 0.25 },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/pinky/4/keymaps/vial/config.h b/keyboards/pinky/4/keymaps/vial/config.h
new file mode 100644
index 00000000000..c07fad5722a
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/vial/config.h
@@ -0,0 +1,45 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * 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 USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+// Vial Support
+#define VIAL_KEYBOARD_UID {0xE6, 0xB5, 0x80, 0x48, 0xB0, 0x2C, 0xBC, 0x11}
+
+// The four corners
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5, 3, 8 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 0, 0, 0 }
+
+// Tap dance slots
+#define VIAL_TAP_DANCE_ENTRIES 10
+
+// Dynamic macro slots
+#define DYNAMIC_KEYMAP_MACRO_COUNT 14
+
+// Dynamic key override slots
+#define VIAL_KEY_OVERRIDE_ENTRIES 8
+
+#define QUICK_TAP_TERM 0
+#define TAPPING_TERM 200
+#define RETRO_TAPPPING
diff --git a/keyboards/pinky/4/keymaps/vial/keymap.c b/keyboards/pinky/4/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..60dc084ed9f
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/vial/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2018 'Masayuki Sunahara'
+ *
+ * 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_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_VOLU, KC_MNXT, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
+ KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_VOLD, KC_MPRV, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC,
+ KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_MPLY, 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_CALC, KC_RGUI, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, MO(2) , KC_SPC , KC_ENT , MO(1) , KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT(
+ KC_GRV , KC_MPRV, KC_MPLY, KC_MNXT, LALT(KC_F4), _______, _______, _______, KC_PSCR, _______, KC_PGUP, _______, KC_SCRL, KC_TRNS,
+ KC_CAPS, _______, _______, KC_PGUP, _______, _______, _______, _______, KC_INS , KC_HOME, KC_UP , KC_END , KC_NUM , _______,
+ KC_TRNS, _______, LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_BTN2, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ KC_TRNS, _______, _______, KC_PGDN, _______, _______, _______, _______, KC_CALC, KC_PGUP, KC_PGDN, KC_PGDN, KC_BRK , KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT(
+ KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , _______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_TRNS,
+ KC_CAPS, LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), _______, _______, LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), KC_F11,
+ KC_TRNS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_F12,
+ KC_TRNS, LSFT(KC_EQUAL), KC_MINUS, KC_EQUAL, KC_COMMA, KC_DOT, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, KC_DOT, KC_SLSH, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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
+ )
+};
diff --git a/keyboards/pinky/4/keymaps/vial/rules.mk b/keyboards/pinky/4/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..dbd4d871184
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/vial/rules.mk
@@ -0,0 +1,12 @@
+# Building options
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+QMK_SETTINGS = no
+TAP_DANCE_ENABLE = yes
+NKRO_ENABLE = yes
diff --git a/keyboards/pinky/4/keymaps/vial/vial.json b/keyboards/pinky/4/keymaps/vial/vial.json
new file mode 100644
index 00000000000..caf4e265c38
--- /dev/null
+++ b/keyboards/pinky/4/keymaps/vial/vial.json
@@ -0,0 +1,336 @@
+{
+ "name": "Pinky4",
+ "vendorId": "0x544E",
+ "productId": "0x7034",
+ "matrix": { "rows": 10, "cols": 7 },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Pinky4",
+ "author": "Masayuki Sunahara"
+ },
+
+ [
+ {
+ "x": 3,
+ "sm": "cherry"
+ },
+ "0,3",
+ {
+ "x": 7.25
+ },
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.87,
+ "x": 2
+ },
+ "0,2",
+ {
+ "x": 1
+ },
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "5,4",
+ {
+ "x": 1
+ },
+ "5,2"
+ ],
+ [
+ {
+ "y": -0.88,
+ "x": 5
+ },
+ "0,5",
+ {
+ "x": 3.25
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.87
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 11.25
+ },
+ "5,1",
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.88,
+ "x": 6
+ },
+ "0,6",
+ {
+ "x": 1.25
+ },
+ "5,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ {
+ "x": 7.25
+ },
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 1
+ },
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "6,4",
+ {
+ "x": 1
+ },
+ "6,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "1,5",
+ {
+ "x": 3.25
+ },
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 11.25
+ },
+ "6,1",
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 6
+ },
+ "1,6",
+ {
+ "x": 1.25
+ },
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "x": 7.25
+ },
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "2,2",
+ {
+ "x": 1
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "7,4",
+ {
+ "x": 1
+ },
+ "7,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "2,5",
+ {
+ "x": 3.25
+ },
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 11.25
+ },
+ "7,1",
+ "7,0"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 6
+ },
+ "2,6",
+ {
+ "x": 1.25
+ },
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ {
+ "x": 7.25
+ },
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.8700000000000001,
+ "x": 2
+ },
+ "3,2",
+ {
+ "x": 1
+ },
+ "3,4",
+ {
+ "x": 5.25
+ },
+ "8,4",
+ {
+ "x": 1
+ },
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.8799999999999999,
+ "x": 5
+ },
+ "3,5",
+ {
+ "x": 3.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.8700000000000001
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 11.25
+ },
+ "8,1",
+ "8,0"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 3
+ },
+ "4,3",
+ {
+ "x": 7.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "r": 5,
+ "rx": 6.5,
+ "ry": 3,
+ "y": 2.0780000000000003,
+ "x": -2.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2.1980000000000004
+ },
+ "3,6"
+ ],
+ [
+ {
+ "y": 0.3700000000000001,
+ "x": -0.7000000000000002
+ },
+ "4,5"
+ ],
+ [
+ {
+ "r": 23,
+ "y": -1.04,
+ "x": 0.7400000000000002
+ },
+ "4,6"
+ ],
+ [
+ {
+ "r": -23,
+ "rx": 9,
+ "y": 2.1100000000000003,
+ "x": -1.9720000000000004
+ },
+ "9,6"
+ ],
+ [
+ {
+ "r": -15,
+ "y": -2.289,
+ "x": -1.25
+ },
+ "8,6"
+ ],
+ [
+ {
+ "y": 0.37400000000000055,
+ "x": -0.5399999999999991
+ },
+ "9,5"
+ ],
+ [
+ {
+ "r": -5,
+ "y": -1.1350000000000007,
+ "x": 1
+ },
+ "9,4"
+ ]
+
+ ]
+ }
+}