diff --git a/keyboards/1upkeyboards/pi60/keymaps/vial/config.h b/keyboards/1upkeyboards/pi60/keymaps/vial/config.h
new file mode 100644
index 0000000000..dccfcb67bf
--- /dev/null
+++ b/keyboards/1upkeyboards/pi60/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x09, 0xB9, 0xBD, 0xB8, 0xB8, 0x6A, 0x2A, 0xA7}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
diff --git a/keyboards/1upkeyboards/pi60/keymaps/vial/keymap.c b/keyboards/1upkeyboards/pi60/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..8a83e83b52
--- /dev/null
+++ b/keyboards/1upkeyboards/pi60/keymaps/vial/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2022 ziptyze
+ *
+ * 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_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_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_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_TRNS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_TRNS, KC_APP, KC_RCTL
+ ),
+
+ [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_TRNS,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, 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_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGB_M_SN,RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, 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
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/1upkeyboards/pi60/keymaps/vial/readme.md b/keyboards/1upkeyboards/pi60/keymaps/vial/readme.md
new file mode 100644
index 0000000000..fe0ff412f4
--- /dev/null
+++ b/keyboards/1upkeyboards/pi60/keymaps/vial/readme.md
@@ -0,0 +1,9 @@
+# pi60:vial
+
+Shows all keymaps like in via, except for 2U Shift ones. No functionality sacrificed.
+
+Rotary Encoder is disabled, because it's not tested.
+
+---
+
+Ported to Vial by [theNizo](https://github.com/theNizo/).
diff --git a/keyboards/1upkeyboards/pi60/keymaps/vial/rules.mk b/keyboards/1upkeyboards/pi60/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..42f60d5573
--- /dev/null
+++ b/keyboards/1upkeyboards/pi60/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = no
+VIALRGB_ENABLE = yes
diff --git a/keyboards/1upkeyboards/pi60/keymaps/vial/vial.json b/keyboards/1upkeyboards/pi60/keymaps/vial/vial.json
new file mode 100644
index 0000000000..90cf1ecd69
--- /dev/null
+++ b/keyboards/1upkeyboards/pi60/keymaps/vial/vial.json
@@ -0,0 +1,97 @@
+{
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 5,
+ "cols": 16
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Backspace",
+ "2U",
+ "1/1",
+ "1/enc"
+ ],
+ "Split Left Shift",
+ [
+ "Enter",
+ "ANSI - 1/1.25",
+ "ANSI - 1.25/1",
+ "ANSI",
+ "ISO"
+ ],
+ [
+ "Right Shift",
+ "1.75/1/1",
+ "1/1.75/1",
+ "1/1/1",
+ "1/2.75",
+ "1.75/1/enc",
+ "1/1.75/enc",
+ "1/1/enc"
+ ],
+ [
+ "Spacebar",
+ "6.25U - 2.75/1.25/2.25",
+ "6.25U - 2.25/1.25/2.75",
+ "6.25U",
+ "6U",
+ "7U",
+ "7U - 2.75/1.5/2.75",
+ "7U - 3/1/3",
+ "7U - 3/enc/3",
+ "10U"
+
+ ],
+ [
+ "Left Cluster",
+ "6.25U - 1.25/1.25/1.25",
+ "6.25U - 1.5/1/1.25",
+ "6U/7U - 1.25/1.25/1.5",
+ "6U/7U - 1.5/1/1.5",
+ "10U - 1.25/1.25",
+ "10U - 1.5/1"
+ ],
+ [
+ "Right Cluster",
+ "6.25U/6U - 1/1/1/1/1",
+ "6.25U/6U - 1.25/1.25/1.25/1.25",
+ "6.25U/6U - 1.25/1.25/1/1.5",
+ "6.25U/6U - 1/1.5/1.25/1.25",
+ "6.25U/6U - 1/1.5/1/1.5",
+ "7U - 1/1/1/1",
+ "7U - 1.5/1.25/1.25",
+ "7U - 1.5/1/1.5",
+ "10U - 1.25/1.25",
+ "10U - 1/1.5"
+ ]
+ ],
+ "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":0.25},"0,13\n\n\n0,1","0,14\n\n\n0,1",{"x":0.25},"0,13\n\n\n0,2","0,14\n\n\n0,2\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\n2,0",{"x":1,"w":1.5},"1,13\n\n\n2,1",{"x":1,"w":1.5},"1,13\n\n\n2,2",{"x":1.25,"w":1.25,"h":2,"w2":1.5,"h2":1,"x2":-0.25},"2,13\n\n\n2,3"],[{"x":2.5,"w":1.75},"2,15","2,1","2,2","2,3","2,4","2,5","2,6","2,7","2,8","2,9","2,10","2,11","2,12\n\n\n2,0",{"w":1.25},"2,13\n\n\n2,0",{"x":0.25,"w":1.25},"2,12\n\n\n2,1","2,13\n\n\n2,1",{"x":0.25,"w":2.25},"2,13\n\n\n2,2",{"x":0.25},"2,12\n\n\n2,3"],
+ [{"w":1.25},"3,15\n\n\n1,1","3,1\n\n\n1,1",{"x":0.25,"w":2.25},"3,15\n\n\n1,0","3,2","3,3","3,4","3,5","3,6","3,7","3,8","3,9","3,10",{"w":1.75},"3,11\n\n\n3,0","3,12\n\n\n3,0","3,14\n\n\n3,0",{"x":0.25},"3,11\n\n\n3,1",{"w":1.75},"3,12\n\n\n3,1","3,14\n\n\n3,1"],
+ [{"w":6.25,"d":true},"\n\n\n4,0",{"x":-6.25,"w":12.5,"d":true},"\n\n\n6,0",{"x":-10,"w":1.25},"4,15\n\n\n5,0",{"w":1.25},"4,1\n\n\n5,0",{"w":1.25},"4,2\n\n\n5,0",{"w":2.75},"4,4\n\n\n4,0",{"w":1.25},"4,6\n\n\n4,0",{"w":2.25},"4,8\n\n\n4,0","4,10\n\n\n6,0","4,11\n\n\n6,0","4,12\n\n\n6,0","4,13\n\n\n6,0","4,14\n\n\n6,0",{"x":0.25},"3,11\n\n\n3,2",{"x":0.75},"3,12\n\n\n3,2","3,14\n\n\n3,2"],
+ [{"x":2.5,"w":1.5},"4,15\n\n\n5,1","4,1\n\n\n5,1",{"w":1.25},"4,2\n\n\n5,1",{"x":11.5},"3,11\n\n\n3,3",{"w":2.754},"3,12\n\n\n3,3"],
+ [{"x":2.5,"w":1.25},"4,15\n\n\n5,2",{"w":1.25},"4,1\n\n\n5,2",{"w":1.5},"4,2\n\n\n5,2",{"x":11.25,"w":1.75},"3,11\n\n\n3,4","3,12\n\n\n3,4","3,14\n\n\n3,4\n\n\n\n\n\ne"],
+ [{"x":2.5,"w":1.5},"4,15\n\n\n5,3","4,1\n\n\n5,3",{"w":1.5},"4,2\n\n\n5,3",{"x":11.25},"3,11\n\n\n3,5",{"w":1.75},"3,12\n\n\n3,5","3,14\n\n\n3,5\n\n\n\n\n\ne"],
+ [{"x":2.5,"w":1.25},"4,15\n\n\n5,4",{"w":1.25},"4,1\n\n\n5,4",{"x":12.75},"3,11\n\n\n3,6",{"x":0.75},"3,12\n\n\n3,6","3,14\n\n\n3,6\n\n\n\n\n\ne"],
+ [{"x":2.5,"w":1.5},"4,15\n\n\n5,5","4,1\n\n\n5,5"],
+ [{"w":6.25,"d":true},"\n\n\n4,1",{"w":2.25},"4,4\n\n\n4,1",{"w":1.25},"4,6\n\n\n4,1",{"w":2.75},"4,8\n\n\n4,1"],
+ [{"w":6.25,"d":true},"\n\n\n4,2",{"w":6.25},"4,6\n\n\n4,2"],
+ [{"w":6.5,"d":true},"\n\n\n4,3",{"w":6},"4,6\n\n\n4,3"],
+ [{"w":6.5,"d":true},"\n\n\n4,4",{"w":7},"4,6\n\n\n4,4"],
+ [{"w":6.5,"d":true},"\n\n\n4,5",{"w":2.75},"4,4\n\n\n4,5",{"w":1.5},"4,6\n\n\n4,5",{"w":2.75},"4,8\n\n\n4,5"],
+ [{"w":6.5,"d":true},"\n\n\n4,6",{"w":3},"4,4\n\n\n4,6","4,6\n\n\n4,6",{"w":3},"4,8\n\n\n4,6"],
+ [{"w":6.5,"d":true},"\n\n\n4,7",{"w":3},"4,4\n\n\n4,7","4,6\n\n\n4,7\n\n\n\n\n\ne",{"w":3},"4,8\n\n\n4,7"],
+ [{"w":5,"d":true},"\n\n\n4,8",{"w":10},"4,6\n\n\n4,8"],
+ [{"y":0.25,"w":12.5,"d":true},"\n\n\n6,1",{"w":1.25},"4,10\n\n\n6,1",{"w":1.25},"4,11\n\n\n6,1",{"w":1.25},"4,13\n\n\n6,1",{"w":1.25},"4,14\n\n\n6,1"],
+ [{"w":12.5,"d":true},"\n\n\n6,2",{"w":1.25},"4,10\n\n\n6,2",{"w":1.25},"4,11\n\n\n6,2","4,13\n\n\n6,2",{"w":1.5},"4,14\n\n\n6,2"],
+ [{"w":12.5,"d":true},"\n\n\n6,3","4,10\n\n\n6,3",{"w":1.5},"4,11\n\n\n6,3",{"w":1.25},"4,13\n\n\n6,3",{"w":1.25},"4,14\n\n\n6,3"],
+ [{"w":12.5,"d":true},"\n\n\n6,4","4,10\n\n\n6,4",{"w":1.5},"4,11\n\n\n6,4","4,13\n\n\n6,4",{"w":1.5},"4,14\n\n\n6,4"],
+ [{"w":13.5,"d":true},"\n\n\n6,5","4,11\n\n\n6,5","4,12\n\n\n6,5","4,13\n\n\n6,5","4,14\n\n\n6,5"],
+ [{"w":13.5,"d":true},"\n\n\n6,6",{"w":1.5},"4,11\n\n\n6,6",{"w":1.25},"4,13\n\n\n6,6",{"w":1.25},"4,14\n\n\n6,6"],
+ [{"w":13.5,"d":true},"\n\n\n6,7",{"w":1.5},"4,11\n\n\n6,7","4,13\n\n\n6,7",{"w":1.5},"4,14\n\n\n6,7"],
+ [{"w":15,"d":true},"\n\n\n6,8",{"w":1.25},"4,13\n\n\n6,8",{"w":1.25},"4,14\n\n\n6,8"],
+ [{"w":15,"d":true},"\n\n\n6,9","4,13\n\n\n6,9",{"w":1.5},"4,14\n\n\n6,9"]
+ ]
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_wkl/keymaps/vial/config.h b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/config.h
new file mode 100644
index 0000000000..4c4f6573c3
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF4, 0x4F, 0x41, 0x95, 0x3A, 0xD9, 0xD4, 0xAA}
+
+// Esc + Enter
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
\ No newline at end of file
diff --git a/keyboards/dztech/dz60rgb_wkl/keymaps/vial/keymap.c b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..a1bbe830e3
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/keymap.c
@@ -0,0 +1,25 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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,
+ CTL_T(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(2),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ 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_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SCRL, KC_PAUS, QK_BOOT,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_MNXT, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
+ _______, 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_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/dztech/dz60rgb_wkl/keymaps/vial/rules.mk b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6ed5cfcfa4
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+# Disable features for space
+COMBO_ENABLE = no # No combos
+KEY_OVERRIDE_ENABLE = no # No key overrides
+RGB_MATRIX_ENABLE = no # No RGB
+LTO_ENABLE = yes # Link-time optimization
\ No newline at end of file
diff --git a/keyboards/dztech/dz60rgb_wkl/keymaps/vial/vial.json b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/vial.json
new file mode 100644
index 0000000000..9d81532f09
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/keymaps/vial/vial.json
@@ -0,0 +1,141 @@
+{
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "lighting": {
+ "extends": "none",
+ "keycodes": "qmk"
+ },
+ "layouts": {
+ "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,12"
+ ],
+ [
+ {
+ "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": "#aaaaaa",
+ "w": 2.25
+ },
+ "2,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,11",
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,0",
+ "4,1",
+ {
+ "w": 1.5
+ },
+ "4,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "4,5",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "4,10",
+ "4,11",
+ {
+ "w": 1.5
+ },
+ "4,13"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/README.md b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/README.md
new file mode 100644
index 0000000000..7ddc9fe65f
--- /dev/null
+++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/README.md
@@ -0,0 +1,18 @@
+# The Classic_TKL Vial default layout
+
+To change the color of the Caps Lock indicator:
+
+1. Uncomment line 11 in `config.h` and change the RGB values:
+
+```c
+// Uncomment to customize the color of the caps lock indicator
+// #define CAPS_LOCK_COLORS {0, 255, 0}
+```
+
+2. rebuild the firmware using
+
+```
+make novelkeys/nk_classic_tkl:vial
+```
+
+3. reflash the firmware according to [README.md](../../readme.md#flash)
diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/config.h b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/config.h
new file mode 100644
index 0000000000..24d7b401f9
--- /dev/null
+++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/config.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x14, 0xE0, 0xDA, 0x55, 0xA2, 0xB4, 0xD4, 0xF7}
+// Escape + Enter to unlock
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
+
+// Uncomment to customize the color of the caps lock indicator
+// #define CAPS_LOCK_COLORS {0, 255, 0}
diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/keymap.c b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..9f5d03d23a
--- /dev/null
+++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/keymap.c
@@ -0,0 +1,75 @@
+/* Copyright 2024 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 my_keycodes {
+ RETRO_RGB = QK_KB_0
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_tkl_ansi_tsangan( /* 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_tkl_ansi_tsangan( /* FN */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, _______, _______,
+ _______, _______, _______, RETRO_RGB, _______, _______, _______, _______, _______, _______),
+
+};
+
+#ifdef CAPS_LOCK_COLORS
+static uint8_t caps_lock_colors[] = CAPS_LOCK_COLORS;
+#else
+static uint8_t caps_lock_colors[] = {255, 86, 0};
+#endif
+
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 50; i <= 55; i++) {
+ rgb_matrix_set_color(i, caps_lock_colors[0], caps_lock_colors[1], caps_lock_colors[2]);
+ }
+ }
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RETRO_RGB:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_INDICATOR);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ }
+ break;
+ }
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/rules.mk b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..d6d7b9f7e3
--- /dev/null
+++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/rules.mk
@@ -0,0 +1,17 @@
+# Wildcard to allow APM32 MCU (taken from source rules.mk)
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+# Enable VIA
+VIA_ENABLE = yes
+# Enable VIAL
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+# Enable RGB
+VIALRGB_ENABLE = yes
+# Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes
+# Mouse keys
+MOUSEKEY_ENABLE = yes
+# Audio control and System control
+EXTRAKEY_ENABLE = yes
+# Enable N-Key Rollover
+NKRO_ENABLE = yes
diff --git a/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/vial.json b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/vial.json
new file mode 100644
index 0000000000..936ba50e54
--- /dev/null
+++ b/keyboards/novelkeys/nk_classic_tkl/keymaps/vial/vial.json
@@ -0,0 +1,205 @@
+{
+ "name": "NK_ Classic TKL",
+ "vendorId": "0x8968",
+ "productId": "0x4E54",
+ "matrix": {
+ "rows": 6,
+ "cols": 17
+ },
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {
+ "name": "NK_ Retro RGB",
+ "title": "NK_ Retro RGB",
+ "shortName": "RETRO_RGB"
+ }
+ ],
+ "layouts": {
+ "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,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25,
+ "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"
+ ],
+ [
+ {
+ "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
+ },
+ "3,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "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": "#aaaaaa",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "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": 2.75
+ },
+ "4,12",
+ {
+ "x": 1.25
+ },
+ "4,15"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "5,0",
+ "5,1",
+ {
+ "w": 1.5
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 7
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,11",
+ "5,12",
+ {
+ "w": 1.5
+ },
+ "5,13",
+ {
+ "x": 0.25
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+ }
diff --git a/keyboards/ploopyco/mouse/keymaps/vial/config.h b/keyboards/ploopyco/mouse/keymaps/vial/config.h
new file mode 100644
index 0000000000..5f3daa6a01
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/vial/config.h
@@ -0,0 +1,50 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ * Copyright 2019 Sunjun Kim
+ * Copyright 2020 Ploopy Corporation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+// These pins are not broken out, and cannot be used normally.
+// They are set as output and pulled high, by default
+#define UNUSABLE_PINS \
+ { B4, D6, F1, F5, F6, F7 }
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+// #define DEBUG_LED_PIN F7
+
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B0
+
+#define ENCODER_BUTTON_COL 1
+#define ENCODER_BUTTON_ROW 0
+/* Custom encoder needs to specify just how many encoders we have */
+#define NUM_ENCODERS 1
+
+#define ENCODER_A_PINS { F0 }
+#define ENCODER_B_PINS { F4 }
+
+#define PLOOPY_DPI_OPTIONS { 800, 1200, 1600, 2400 }
+#define PLOOPY_DPI_DEFAULT 0
+
+#define VIAL_KEYBOARD_UID {0x84, 0x1C, 0x34, 0x08, 0xC9, 0xC5, 0xB4, 0x37}
+
+#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
+#define VIAL_UNLOCK_COMBO_COLS {4, 5}
diff --git a/keyboards/ploopyco/mouse/keymaps/vial/keymap.c b/keyboards/ploopyco/mouse/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..29d81b8061
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/vial/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ * Copyright 2019 Sunjun Kim
+ * Copyright 2020 Ploopy Corporation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(/* Base */
+ C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, C(KC_V), KC_BTN4, KC_BTN5, DPI_CONFIG)
+};
diff --git a/keyboards/ploopyco/mouse/keymaps/vial/rules.mk b/keyboards/ploopyco/mouse/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..b9509645d8
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/vial/rules.mk
@@ -0,0 +1,16 @@
+# Processor frequency
+F_CPU = 8000000
+
+POINTING_DEVICE_DRIVER = pmw3360
+
+# add vial config
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+TAP_DANCE_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+
+
+LTO_ENABLE = yes
+
+# VIAL_INSECURE = yes
diff --git a/keyboards/ploopyco/mouse/keymaps/vial/vial.json b/keyboards/ploopyco/mouse/keymaps/vial/vial.json
new file mode 100644
index 0000000000..3d58fee81e
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/vial/vial.json
@@ -0,0 +1,67 @@
+{
+ "name": "PloopyCo Mouse",
+ "vendorId": "0x5043",
+ "productId": "0x4D6F",
+ "matrix": {
+ "rows": 1,
+ "cols": 8
+ },
+ "customKeycodes": [
+ {
+ "name": "DPI Config",
+ "title": "DPI Config: Cycles through the DPI settings",
+ "shortName": "DPI"
+ },
+ {
+ "name": "Drag Scroll",
+ "title": "Drag Scroll: Enables you to scroll instead of moving the cursor",
+ "shortName": "DragScl"
+ }
+ ],
+ "lighting": "none",
+ "layouts": {
+ "keymap": [
+ [
+ "0,4",
+ {
+ "h": 2
+ },
+ "0,6",
+ {
+ "h": 2
+ },
+ "0,0",
+ {
+ "x": 1,
+ "h": 2
+ },
+ "0,2",
+ {
+ "h": 2
+ },
+ "0,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3,
+ "h": 1.25
+ },
+ "0,1"
+ ],
+ [
+ {
+ "y": -0.25
+ },
+ "0,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "0,7"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/pteron36/keymaps/vial/vial.json b/keyboards/pteron36/keymaps/vial/vial.json
index 02a192447c..6b2e7948dd 100644
--- a/keyboards/pteron36/keymaps/vial/vial.json
+++ b/keyboards/pteron36/keymaps/vial/vial.json
@@ -1,295 +1,46 @@
{
- "name": "Pteron36",
- "vendorId": "0x4847",
- "productId": "0x5054",
- "lighting": "qmk_rgblight",
- "matrix": {
- "rows": 8,
- "cols": 5
- },
- "layouts": {
- "labels":["No Outer Thumbs","No Inner Thumbs"],
- "keymap":[
- [
- {
- "x": 2
- },
- "0,2",
- {
- "x": 9.5
- },
- "4,2"
- ],
- [
- {
- "y": -0.75,
- "x": 1
- },
- "0,1",
- {
- "x": 11.5
- },
- "4,1"
- ],
- [
- {
- "y": -0.95,
- "x": 3
- },
- "0,3",
- {
- "x": 7.5
- },
- "4,3"
- ],
- [
- {
- "y": -0.9,
- "x": 4
- },
- "0,4",
- {
- "x": 5.5
- },
- "4,4"
- ],
- [
- {
- "y": -0.65
- },
- "0,0",
- {
- "x": 13.5
- },
- "4,0"
- ],
- [
- {
- "y": -0.75,
- "x": 2
- },
- "1,2",
- {
- "x": 9.5
- },
- "5,2"
- ],
- [
- {
- "y": -0.75,
- "x": 1
- },
- "1,1",
- {
- "x": 3
- },
- "0,0\n\n\n\n\n\n\n\n\ne",
- "0,1\n\n\n\n\n\n\n\n\ne",
- {
- "x": 1.5
- },
- "1,0\n\n\n\n\n\n\n\n\ne",
- "1,1\n\n\n\n\n\n\n\n\ne",
- {
- "x": 3
- },
- "5,1"
- ],
- [
- {
- "y": -0.95,
- "x": 3,
- "n": true
- },
- "1,3",
- {
- "x": 7.5,
- "n": true
- },
- "5,3"
- ],
- [
- {
- "y": -0.8999999999999999,
- "x": 4
- },
- "1,4",
- {
- "x": 5.5
- },
- "5,4"
- ],
- [
- {
- "y": -0.6499999999999999
- },
- "1,0",
- {
- "x": 13.5
- },
- "5,0"
- ],
- [
- {
- "y": -0.75,
- "x": 2
- },
- "2,2",
- {
- "x": 9.5
- },
- "6,2"
- ],
- [
- {
- "y": -0.75,
- "x": 1
- },
- "2,1",
- {
- "x": 3
- },
- "3,4",
- {
- "x": 3.5
- },
- "7,4",
- {
- "x": 3
- },
- "6,1"
- ],
- [
- {
- "y": -0.9500000000000002,
- "x": 3
- },
- "2,3",
- {
- "x": 7.5
- },
- "6,3"
- ],
- [
- {
- "y": -0.8999999999999999,
- "x": 4
- },
- "2,4",
- {
- "x": 5.5
- },
- "6,4"
- ],
- [
- {
- "y": -0.6499999999999999
- },
- "2,0",
- {
- "x": 13.5
- },
- "6,0"
- ],
- [
- {
- "y": -0.25,
- "x": 2.75,
- "c": "#bababa",
- "d": true
- },
- "3,3\n\n\n0,0\n36 keys",
- {
- "x": -1
- },
- "3,3\n\n\n0,1\n38 keys",
- {
- "x": 8,
- "d": true
- },
- "7,3\n\n\n0,0\n36 keys",
- {
- "x": -1
- },
- "7,3\n\n\n0,1\n38 keys"
- ],
- [
- {
- "r": 15,
- "rx": 3.75,
- "ry": 4.75,
- "y": -1.25,
- "c": "#888888"
- },
- "3,0"
- ],
- [
- {
- "r": 30,
- "rx": 4.25,
- "ry": 4.8,
- "y": -1.2999999999999998,
- "x": 0.5,
- "c": "#bababa"
- },
- "3,1"
- ],
- [
- {
- "r": 45,
- "rx": 4.75,
- "ry": 4.9,
- "y": -1.4000000000000004,
- "x": 1
- },
- "3,2\n\n\n1,1"
- ],
- [
- {
- "y": -0.9999999999999996,
- "x": 1,
- "d": true
- },
- "3,2\n\n\n1,0"
- ],
- [
- {
- "r": -45,
- "rx": 10.75,
- "y": -1.4000000000000004,
- "x": -2
- },
- "7,2\n\n\n1,1"
- ],
- [
- {
- "y": -0.9999999999999996,
- "x": -2,
- "d": true
- },
- "7,2\n\n\n1,0"
- ],
- [
- {
- "r": -30,
- "rx": 11.25,
- "ry": 4.8,
- "y": -1.2999999999999998,
- "x": -1.5
- },
- "7,1"
- ],
- [
- {
- "r": -15,
- "rx": 11.75,
- "ry": 4.75,
- "y": -1.25,
- "x": -1,
- "c": "#888888"
- },
- "7,0"
- ]
- ]
- }
+ "name": "Pteron36",
+ "vendorId": "0x4847",
+ "productId": "0x5054",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "labels": [
+ "No outer thumbkeys",
+ "No inner thumbkeys",
+ "No left encoder",
+ "No right encoder"
+ ],
+ "keymap": [
+ [{"x":2},"0,2",{"x":9.5},"4,2"],
+ [{"y":-0.75,"x":1},"0,1",{"x":11.5},"4,1"],
+ [{"y":-0.95,"x":3},"0,3",{"x":7.5},"4,3"],
+ [{"y":-0.9,"x":4},"0,4",{"x":5.5},"4,4"],
+ [{"y":-0.65},"0,0",{"x":13.5},"4,0"],
+ [{"y":-1,"x":5.75,"d":true},"3,4\n\n\n2,1\nno enc0",{"x":2,"d":true},"7,4\n\n\n3,1\nno enc1"],
+ [{"y":-0.75,"x":2},"1,2",{"x":9.5},"5,2"],
+ [{"y":-0.75,"x":1},"1,1",{"x":11.5},"5,1"],
+ [{"y":-0.95,"x":3,"n":true},"1,3",{"x":7.5,"n":true},"5,3"],
+ [{"y":-0.9,"x":4},"1,4",{"x":5.5},"5,4"],
+ [{"y":-0.65},"1,0",{"x":4.25},"0,0\n\n\n2,0\ne0 CC\n\n\n\n\ne","0,1\n\n\n2,0\ne0 CCW\n\n\n\n\ne",{"x":1},"1,1\n\n\n3,0\ne1 CCW\n\n\n\n\ne","1,0\n\n\n3,0\ne1 CW\n\n\n\n\ne",{"x":4.25},"5,0"],
+ [{"y":-0.75,"x":2},"2,2",{"x":9.5},"6,2"],
+ [{"y":-0.75,"x":1},"2,1",{"x":11.5},"6,1"],
+ [{"y":-0.95,"x":3},"2,3",{"x":7.5},"6,3"],
+ [{"y":-0.9,"x":4},"2,4",{"x":5.5},"6,4"],
+ [{"y":-0.65},"2,0",{"x":4.75},"3,4\n\n\n2,0\nhas enc0",{"x":2},"7,4\n\n\n3,0\nhas enc1",{"x":4.75},"6,0"],
+ [{"y":-0.25,"x":2.75,"c":"#aaaaaa"},"3,3\n\n\n0,0\nhas outer",{"x":8},"7,3\n\n\n0,0\nhas outer"],
+ [{"x":2.75,"c":"#cccccc","d":true},"3,3\n\n\n0,1\nno outer",{"x":8,"d":true},"7,3\n\n\n0,1\nno outer"],
+ [{"r":15,"rx":3.75,"ry":4.75,"y":-1.25,"c":"#777777","n":true},"3,0"],
+ [{"r":30,"rx":4.25,"ry":4.8,"y":-1.3,"x":0.5,"c":"#aaaaaa"},"3,1"],
+ [{"r":45,"rx":4.75,"ry":4.9,"y":-2.4,"x":1,"c":"#cccccc","a":0,"d":true},"3,2\n\n\n1,1\n\nno inner"],
+ [{"x":1,"c":"#aaaaaa"},"3,2\n\n\n1,0\n\nhas inner"],
+ [{"r":-45,"rx":10.75,"y":-2.4,"x":-2,"c":"#cccccc","d":true},"7,2\n\n\n1,1\n\nno inner"],
+ [{"x":-2,"c":"#aaaaaa"},"7,2\n\n\n1,0\n\nhas inner"],
+ [{"r":-30,"rx":11.25,"ry":4.8,"y":-1.3,"x":-1.5,"a":4},"7,1"],
+ [{"r":-15,"rx":11.75,"ry":4.75,"y":-1.25,"x":-1,"c":"#777777","n":true},"7,0"]
+ ]
+ }
}
diff --git a/keyboards/redox_w/keymaps/vial/vial.json b/keyboards/redox_w/keymaps/vial/vial.json
index 94c0d1ee44..21956261cc 100644
--- a/keyboards/redox_w/keymaps/vial/vial.json
+++ b/keyboards/redox_w/keymaps/vial/vial.json
@@ -1,377 +1,51 @@
{
- "name": "Redox-W",
- "matrix": {"rows": 5, "cols": 14},
- "layouts": {
- "keymap":[
- [
- {
- "x": 3.5
- },
- "0,3",
- {
- "x": 10.5
- },
- "0,10"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "0,2",
- {
- "x": 1
- },
- "0,4",
- {
- "x": 8.5
- },
- "0,9",
- {
- "x": 1
- },
- "0,11"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "0,5",
- {
- "x": 6.5
- },
- "0,8"
- ],
- [
- {
- "y": -0.875,
- "c": "#777777",
- "w": 1.5
- },
- "0,0",
- {
- "c": "#cccccc"
- },
- "0,1",
- {
- "x": 14.5
- },
- "0,12",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
- "0,13"
- ],
- [
- {
- "y": -0.625,
- "x": 6.5,
- "c": "#cccccc"
- },
- "0,6",
- {
- "x": 4.5
- },
- "0,7"
- ],
- [
- {
- "y": -0.75,
- "x": 3.5
- },
- "1,3",
- {
- "x": 10.5
- },
- "1,10"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "1,2",
- {
- "x": 1
- },
- "1,4",
- {
- "x": 8.5
- },
- "1,9",
- {
- "x": 1
- },
- "1,11"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "1,5",
- {
- "x": 6.5
- },
- "1,8"
- ],
- [
- {
- "y": -0.875,
- "c": "#aaaaaa",
- "w": 1.5
- },
- "1,0",
- {
- "c": "#cccccc"
- },
- "1,1",
- {
- "x": 14.5
- },
- "1,12",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
- "1,13"
- ],
- [
- {
- "y": -0.625,
- "x": 6.5,
- "c": "#cccccc",
- "h": 1.5
- },
- "1,6",
- {
- "x": 4.5,
- "h": 1.5
- },
- "1,7"
- ],
- [
- {
- "y": -0.75,
- "x": 3.5
- },
- "2,3",
- {
- "x": 10.5
- },
- "2,10"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "2,2",
- {
- "x": 1
- },
- "2,4",
- {
- "x": 8.5
- },
- "2,9",
- {
- "x": 1
- },
- "2,11"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "2,5",
- {
- "x": 6.5
- },
- "2,8"
- ],
- [
- {
- "y": -0.875,
- "c": "#aaaaaa",
- "w": 1.5
- },
- "2,0",
- {
- "c": "#cccccc"
- },
- "2,1",
- {
- "x": 14.5
- },
- "2,12",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
- "2,13"
- ],
- [
- {
- "y": -0.375,
- "x": 3.5,
- "c": "#cccccc"
- },
- "3,3",
- {
- "x": 10.5
- },
- "3,10"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "3,2",
- {
- "x": 1
- },
- "3,4",
- {
- "x": 8.5
- },
- "3,9",
- {
- "x": 1
- },
- "3,11"
- ],
- [
- {
- "y": -0.875,
- "x": 5.5
- },
- "3,5",
- {
- "x": 6.5
- },
- "3,8"
- ],
- [
- {
- "y": -0.875,
- "c": "#aaaaaa",
- "w": 1.5
- },
- "3,0",
- {
- "c": "#cccccc"
- },
- "3,1",
- {
- "x": 14.5
- },
- "3,12",
- {
- "c": "#aaaaaa",
- "w": 1.5
- },
- "3,13"
- ],
- [
- {
- "y": -0.375,
- "x": 3.5
- },
- "4,3",
- {
- "x": 10.5
- },
- "4,10"
- ],
- [
- {
- "y": -0.875,
- "x": 2.5
- },
- "4,2",
- {
- "x": 12.5
- },
- "4,11"
- ],
- [
- {
- "y": -0.75,
- "x": 0.5
- },
- "4,0",
- "4,1",
- {
- "x": 14.5
- },
- "4,12",
- "4,13"
- ],
- [
- {
- "y": -0.7450000000000001,
- "x": 13.5
- },
- "4,9"
- ],
- [
- {
- "y": -0.75,
- "x": 5.25
- },
- "4,4"
- ],
- [
- {
- "r": 30,
- "rx": 6.5,
- "ry": 4.25,
- "y": -1,
- "x": 1
- },
- "2,6",
- "3,6"
- ],
- [
- {
- "x": 1,
- "c": "#777777",
- "h": 2
- },
- "4,5",
- {
- "c": "#aaaaaa",
- "h": 2
- },
- "4,6"
- ],
- [
- {
- "r": -30,
- "rx": 13,
- "y": -1,
- "x": -3
- },
- "3,7",
- "2,7"
- ],
- [
- {
- "x": -3,
- "h": 2
- },
- "4,7",
- {
- "c": "#777777",
- "h": 2
- },
- "4,8"
- ]
- ]
- }
+ "name": "Redox-W",
+ "vendorId": "0x4D44",
+ "productId": "0x5257",
+ "matrix": {
+ "rows": 5,
+ "cols": 14
+ },
+ "layouts": {
+ "labels": [
+ [
+ "Thumb cluster keycap sizes",
+ "1.25u",
+ "1u + 1.5u"
+ ]
+ ],
+ "keymap": [
+ [{"x":3.25},"0,3",{"x":9.5},"0,10"],
+ [{"y":-0.87,"x":2.25},"0,2",{"x":1},"0,4",{"x":7.5},"0,9",{"x":1},"0,11"],
+ [{"y":-0.88,"x":5.25},"0,5",{"x":5.5},"0,8"],
+ [{"y":-0.87,"c":"#aaaaaa","w":1.25},"0,0",{"c":"#cccccc"},"0,1",{"x":13.5},"0,12",{"c":"#aaaaaa","w":1.25},"0,13"],
+ [{"y":-0.705,"x":6.25,"c":"#cccccc","h":1.25},"0,6",{"x":3.5,"h":1.25},"0,7"],
+ [{"y":-0.675,"x":3.25},"1,3",{"x":9.5},"1,10"],
+ [{"y":-0.87,"x":2.25},"1,2",{"x":1},"1,4",{"x":7.5},"1,9",{"x":1},"1,11"],
+ [{"y":-0.88,"x":5.25},"1,5",{"x":5.5},"1,8"],
+ [{"y":-0.87,"c":"#aaaaaa","w":1.25},"1,0",{"c":"#cccccc"},"1,1",{"x":13.5},"1,12",{"c":"#aaaaaa","w":1.25},"1,13"],
+ [{"y":-0.455,"x":6.25,"c":"#cccccc","h":1.25},"1,6",{"x":3.5,"h":1.25},"1,7"],
+ [{"y":-0.925,"x":3.25},"2,3",{"x":9.5},"2,10"],
+ [{"y":-0.87,"x":2.25},"2,2",{"x":1,"n":true},"2,4",{"x":7.5,"n":true},"2,9",{"x":1},"2,11"],
+ [{"y":-0.88,"x":5.25},"2,5",{"x":5.5},"2,8"],
+ [{"y":-0.87,"c":"#aaaaaa","w":1.25},"2,0",{"c":"#cccccc"},"2,1",{"x":13.5},"2,12",{"c":"#aaaaaa","w":1.25},"2,13"],
+ [{"y":-0.38,"x":3.25,"c":"#cccccc"},"3,3",{"x":9.5},"3,10"],
+ [{"y":-0.87,"x":2.25},"3,2",{"x":1},"3,4",{"x":7.5},"3,9",{"x":1},"3,11"],
+ [{"y":-0.88,"x":5.25},"3,5",{"x":5.5},"3,8"],
+ [{"y":-0.87,"c":"#aaaaaa","w":1.25},"3,0",{"c":"#cccccc"},"3,1",{"x":13.5},"3,12",{"c":"#aaaaaa","w":1.25},"3,13"],
+ [{"y":-0.38,"x":3.25},"4,3",{"x":9.5},"4,10"],
+ [{"y":-0.87,"x":2.25},"4,2",{"x":11.5},"4,11"],
+ [{"y":-0.75,"x":0.25},"4,0","4,1",{"x":13.5},"4,12","4,13"],
+ [{"r":15,"rx":5.75,"ry":4.5,"x":-1.25,"w":1.25},"4,4"],
+ [{"r":30,"rx":6.25,"ry":4.4,"y":-1.15,"a":0},"2,6\n\n\n0,1\n\n1+1.5u","3,6\n\n\n0,1\n\n1+1.5u"],
+ [{"y":-1,"h":1.25},"2,6\n\n\n0,0\n\n1,25u",{"h":1.25},"3,6\n\n\n0,0\n\n1,25u"],
+ [{"c":"#777777","h":1.5,"n":true},"4,5\n\n\n0,1\n\n1+1.5u",{"c":"#aaaaaa","h":1.5},"4,6\n\n\n0,1\n\n1+1.5u"],
+ [{"y":-0.75,"c":"#777777","h":1.25,"n":true},"4,5\n\n\n0,0\n\n1,25u",{"c":"#aaaaaa","h":1.25},"4,6\n\n\n0,0\n\n1,25u"],
+ [{"r":-30,"rx":11.75,"y":-1.15,"x":-2},"3,7\n\n\n0,1\n\n1+1.5u","2,7\n\n\n0,1\n\n1+1.5u"],
+ [{"y":-1,"x":-2,"h":1.25},"3,7\n\n\n0,0\n\n1,25u",{"h":1.25},"2,7\n\n\n0,0\n\n1,25u"],
+ [{"x":-2,"h":1.5},"4,7\n\n\n0,1\n\n1+1.5u",{"c":"#777777","h":1.5,"n":true},"4,8\n\n\n0,1\n\n1+1.5u"],
+ [{"y":-0.75,"x":-2,"c":"#aaaaaa","h":1.25},"4,7\n\n\n0,0\n\n1,25u",{"c":"#777777","h":1.25,"n":true},"4,8\n\n\n0,0\n\n1,25u"],
+ [{"r":-15,"rx":12.25,"ry":4.5,"c":"#aaaaaa","a":4,"w":1.25},"4,9"]
+ ]
+ }
}
diff --git a/keyboards/silakka54/config.h b/keyboards/silakka54/config.h
new file mode 100644
index 0000000000..16f98fc7b4
--- /dev/null
+++ b/keyboards/silakka54/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2024 Juho T. (@Squalius-cephalus)
+ *
+ * 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 SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
diff --git a/keyboards/silakka54/keyboard.json b/keyboards/silakka54/keyboard.json
new file mode 100644
index 0000000000..2d4871bce5
--- /dev/null
+++ b/keyboards/silakka54/keyboard.json
@@ -0,0 +1,104 @@
+{
+ "manufacturer": "Squalius-cephalus",
+ "keyboard_name": "silakka54",
+ "maintainer": "Squalius-cephalus",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "split": {
+ "enabled": true,
+ "serial": {
+ "driver": "vendor"
+ }
+ },
+ "matrix_pins": {
+ "cols": ["GP7", "GP8", "GP9", "GP10", "GP11", "GP12"],
+ "rows": ["GP2", "GP3", "GP4", "GP5","GP6"]
+ },
+ "processor": "RP2040",
+ "url": "https://github.com/Squalius-cephalus/silakka54",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x1212",
+ "vid": "0xFEED"
+ },
+ "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": [5, 5], "x": 0, "y": 5},
+ {"matrix": [5, 4], "x": 1, "y": 5},
+ {"matrix": [5, 3], "x": 2, "y": 5},
+ {"matrix": [5, 2], "x": 3, "y": 5},
+ {"matrix": [5, 1], "x": 4, "y": 5},
+ {"matrix": [5, 0], "x": 5, "y": 5},
+
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+
+ {"matrix": [6, 5], "x": 0, "y": 6},
+ {"matrix": [6, 4], "x": 1, "y": 6},
+ {"matrix": [6, 3], "x": 2, "y": 6},
+ {"matrix": [6, 2], "x": 3, "y": 6},
+ {"matrix": [6, 1], "x": 4, "y": 6},
+ {"matrix": [6, 0], "x": 5, "y": 6},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2},
+ {"matrix": [2, 5], "x": 5, "y": 2},
+
+ {"matrix": [7, 5], "x": 0, "y": 7},
+ {"matrix": [7, 4], "x": 1, "y": 7},
+ {"matrix": [7, 3], "x": 2, "y": 7},
+ {"matrix": [7, 2], "x": 3, "y": 7},
+ {"matrix": [7, 1], "x": 4, "y": 7},
+ {"matrix": [7, 0], "x": 5, "y": 7},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3},
+ {"matrix": [3, 5], "x": 5, "y": 3},
+
+ {"matrix": [8, 5], "x": 0, "y": 9},
+ {"matrix": [8, 4], "x": 1, "y": 9},
+ {"matrix": [8, 3], "x": 2, "y": 9},
+ {"matrix": [8, 2], "x": 3, "y": 9},
+ {"matrix": [8, 1], "x": 4, "y": 9},
+ {"matrix": [8, 0], "x": 5, "y": 9},
+
+ {"matrix": [4, 3], "x": 3, "y": 4},
+ {"matrix": [4, 4], "x": 4, "y": 4},
+ {"matrix": [4, 5], "x": 5, "y": 4},
+
+ {"matrix": [9, 5], "x": 3, "y": 9},
+ {"matrix": [9, 4], "x": 4, "y": 9},
+ {"matrix": [9, 3], "x": 5, "y": 9}
+
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/silakka54/keymaps/default/keymap.c b/keyboards/silakka54/keymaps/default/keymap.c
new file mode 100644
index 0000000000..aa5e64efa3
--- /dev/null
+++ b/keyboards/silakka54/keymaps/default/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, MO(1), KC_SPC, KC_ENT, KC_RCTL, KC_RALT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_DEL, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LBRC, KC_RBRC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/silakka54/keymaps/vial/config.h b/keyboards/silakka54/keymaps/vial/config.h
new file mode 100644
index 0000000000..d1d12eae4d
--- /dev/null
+++ b/keyboards/silakka54/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x97, 0xD0, 0xA5, 0x97, 0x57, 0x48, 0xD0, 0x4F}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
diff --git a/keyboards/silakka54/keymaps/vial/keymap.c b/keyboards/silakka54/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..aa5e64efa3
--- /dev/null
+++ b/keyboards/silakka54/keymaps/vial/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, MO(1), KC_SPC, KC_ENT, KC_RCTL, KC_RALT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_DEL, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LBRC, KC_RBRC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/silakka54/keymaps/vial/rules.mk b/keyboards/silakka54/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4f7618e9b2
--- /dev/null
+++ b/keyboards/silakka54/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
diff --git a/keyboards/silakka54/keymaps/vial/vial.json b/keyboards/silakka54/keymaps/vial/vial.json
new file mode 100644
index 0000000000..c3f9375999
--- /dev/null
+++ b/keyboards/silakka54/keymaps/vial/vial.json
@@ -0,0 +1,78 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ [{ "x": 2 }, "0,2", "0,3", { "x": 5.25 }, "5,3", "5,2"],
+ [
+ { "y": -0.75 },
+ "0,0",
+ "0,1",
+ { "x": 2 },
+ "0,4",
+ { "x": 3.25 },
+ "5,4",
+ { "x": 2 },
+ "5,1",
+ "5,0"
+ ],
+ [{ "y": -0.75, "x": 5 }, "0,5", { "x": 1.25 }, "5,5"],
+ [{ "y": -0.5, "x": 2 }, "1,2", "1,3", { "x": 5.25 }, "6,3", "6,2"],
+ [
+ { "y": -0.75 },
+ "1,0",
+ "1,1",
+ { "x": 2 },
+ "1,4",
+ { "x": 3.25 },
+ "6,4",
+ { "x": 2 },
+ "6,1",
+ "6,0"
+ ],
+ [{ "y": -0.75, "x": 5 }, "1,5", { "x": 1.25 }, "6,5"],
+ [{ "y": -0.5, "x": 2 }, "2,2", "2,3", { "x": 5.25 }, "7,3", "7,2"],
+ [
+ { "y": -0.75 },
+ "2,0",
+ "2,1",
+ { "x": 2 },
+ "2,4",
+ { "x": 3.25 },
+ "7,4",
+ { "x": 2 },
+ "7,1",
+ "7,0"
+ ],
+ [{ "y": -0.75, "x": 5 }, "2,5", { "x": 1.25 }, "7,5"],
+ [{ "y": -0.5, "x": 2 }, "3,2", "3,3", { "x": 5.25 }, "8,3", "8,2"],
+ [
+ { "y": -0.75 },
+ "3,0",
+ "3,1",
+ { "x": 2 },
+ "3,4",
+ { "x": 3.25 },
+ "8,4",
+ { "x": 2 },
+ "8,1",
+ "8,0"
+ ],
+ [{ "y": -0.75, "x": 5 }, "3,5", { "x": 1.25 }, "8,5"],
+ [
+ { "y": 0.25, "x": 2.75 },
+ "4,3",
+ "4,4",
+ { "x": 0.25 },
+ "4,5",
+ { "x": 1.25 },
+ "9,5",
+ { "x": 0.25 },
+ "9,4",
+ "9,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/silakka54/readme.md b/keyboards/silakka54/readme.md
new file mode 100644
index 0000000000..d0b66348b8
--- /dev/null
+++ b/keyboards/silakka54/readme.md
@@ -0,0 +1,24 @@
+# Silakka54
+
+
+
+Silakka54 is a RP2040 Zero based 54-key column staggered split keyboard. PCB uses hotswap sockets. Design is inspired from REVIUNG41 and Corne keyboards.
+
+* Keyboard Maintainer: [Squalius-cephalus](https://github.com/Squalius-cephalus)
+* Hardware Supported: Silakka54 PCB
+* Hardware Availability: https://github.com/Squalius-cephalus/silakka54
+
+Make example for this keyboard (after setting up your vial build environment):
+
+ make silakka54:vial
+
+Flashing example for this keyboard:
+
+ make silakka54:vial:flash
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical boot button**: Hold BOOT button down and connect MCU to the PC
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available