diff --git a/keyboards/handwired/replicazeron/common/leds.c b/keyboards/handwired/replicazeron/common/leds.c
new file mode 100644
index 0000000000..7bcb0cf39c
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/leds.c
@@ -0,0 +1,43 @@
+/* Copyright 2023 9R
+ *
+ * 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 "leds.h"
+#include
+#include "gpio.h"
+
+//////////// Status LEDs //////////////
+void init_leds(void) {
+ // Both LEDs off, they have inverted logic
+ gpio_set_pin_output(STATUS_LED_A_PIN);
+ gpio_set_pin_output(STATUS_LED_B_PIN);
+ gpio_write_pin_high(STATUS_LED_A_PIN);
+ gpio_write_pin_high(STATUS_LED_B_PIN);
+}
+
+void set_leds(uint8_t highest_active_layer) {
+ // any layer other than 0-3, quit and LEDs off
+ if (highest_active_layer > 3) {
+ gpio_write_pin_high(STATUS_LED_A_PIN);
+ gpio_write_pin_high(STATUS_LED_B_PIN);
+ return;
+ }
+
+ // use bitwise operations to display active layer in binary
+ bool bit1 = !(highest_active_layer & 1);
+ bool bit2 = !(highest_active_layer & 2);
+ gpio_write_pin(STATUS_LED_A_PIN, bit1);
+ gpio_write_pin(STATUS_LED_B_PIN, bit2);
+}
diff --git a/keyboards/handwired/replicazeron/common/leds.h b/keyboards/handwired/replicazeron/common/leds.h
new file mode 100644
index 0000000000..e9ccec1bb6
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/leds.h
@@ -0,0 +1,23 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include
+
+void init_leds(void);
+
+void set_leds(uint8_t active_layer);
diff --git a/keyboards/handwired/replicazeron/common/oled.c b/keyboards/handwired/replicazeron/common/oled.c
new file mode 100644
index 0000000000..9d3a3147a3
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/oled.c
@@ -0,0 +1,96 @@
+/* Copyright 2023 9R
+ *
+ * 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 "oled.h"
+#include "oled_driver.h"
+#include "progmem.h"
+#include "util.h"
+
+uint8_t shiftbits =32 ;
+
+//////////// OLED output helpers //////////////
+void draw_mode(controller_state_t controller_state) {
+ //draw oled row showing thumbstick mode
+ oled_write_P(PSTR("Mode: "), false);
+ if (controller_state.wasdShiftMode) {
+ oled_write_ln_P(PSTR("WASD + Shift"), false);
+ } else if (controller_state.wasdMode) {
+ oled_write_ln_P(PSTR("WASD"), false);
+ } else {
+ oled_write_ln_P(PSTR("JoyStick"), false);
+ }
+}
+
+void draw_wasd_key(wasd_state_t wasd_state) {
+ //draw oled row showing active keypresses emulated from thumbstick
+ const char* keys = "wasd";
+ bool keystates [] = { wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d };
+ // iterate over keystates
+ for (uint8_t i = 0 ; i < ARRAY_SIZE(keystates); ++i) {
+ if (keystates[i]) {
+ char k = keys[i] ;
+ //bitshift char to upper case
+ if (wasd_state.shift) {
+ k &= ~shiftbits;
+ }
+ oled_write_char(k, false);
+ } else {
+ oled_write_P(PSTR(" "), false);
+ }
+ }
+}
+
+void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position) {
+ //draw oled row showing thumbstick direction and distance from center
+ oled_write_P(PSTR("Dir:"), false);
+ oled_write(get_u16_str(thumbstick_polar_position.angle, ' '), false);
+ oled_write_P(PSTR(" Dist:"), false);
+ oled_write_ln(get_u16_str(thumbstick_polar_position.distance, ' '), false);
+ //print registered key codes
+ oled_write_P(PSTR("Keycodes: "), false);
+ draw_wasd_key( wasd_state );
+}
+
+//////////// draw OLED output //////////////
+void draw_oled(controller_state_t controller_state) {
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (controller_state.highestActiveLayer) {
+ case _SHOOTER:
+ oled_write_ln_P(PSTR("Shooter"), false);
+ break;
+
+ case _MISC:
+ oled_write_ln_P(PSTR("Misc"), false);
+ break;
+
+ case _SETTINGS:
+ oled_write_ln_P(PSTR("Settings"), false);
+ break;
+
+ default:
+ oled_write_ln_P(PSTR("Default"), false);
+ }
+
+ draw_mode(controller_state);
+ if (controller_state.highestActiveLayer == _SETTINGS ) {
+ draw_thumb_debug(thumbstick_polar_position);
+ }
+ else {
+ oled_write_ln_P(PSTR(" "), false);
+ }
+ oled_write_ln_P(PSTR(" "), false);
+}
diff --git a/keyboards/handwired/replicazeron/common/oled.h b/keyboards/handwired/replicazeron/common/oled.h
new file mode 100644
index 0000000000..977aaa2c8d
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/oled.h
@@ -0,0 +1,34 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "replicazeron.h"
+
+#include
+#include "state.h"
+#include "thumbstick.h"
+
+uint8_t shiftbits;
+
+char stringbuffer[8];
+
+void draw_oled(controller_state_t controller_state);
+
+void draw_mode(controller_state_t controller_state);
+
+void draw_thumb_debug(thumbstick_polar_position_t thumbstick_polar_position);
+
+void draw_wasd_key(wasd_state_t wasd_state);
diff --git a/keyboards/handwired/replicazeron/common/state.c b/keyboards/handwired/replicazeron/common/state.c
new file mode 100644
index 0000000000..b80fcb5c3b
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/state.c
@@ -0,0 +1,28 @@
+/* Copyright 2023 9R
+ *
+ * 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 "state.h"
+
+controller_state_t init_state (void) {
+ controller_state_t controller_state = {
+ .wasdMode = true,
+ .wasdShiftMode = false,
+ .autoRun = false,
+ .highestActiveLayer = 0,
+ };
+
+ return controller_state;
+}
diff --git a/keyboards/handwired/replicazeron/common/state.h b/keyboards/handwired/replicazeron/common/state.h
new file mode 100644
index 0000000000..8ff69181a5
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/state.h
@@ -0,0 +1,28 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include
+#include
+
+typedef struct {
+ bool wasdMode;
+ bool wasdShiftMode;
+ bool autoRun;
+ uint8_t highestActiveLayer;
+} controller_state_t;
+
+controller_state_t init_state(void);
diff --git a/keyboards/handwired/replicazeron/common/thumbstick.c b/keyboards/handwired/replicazeron/common/thumbstick.c
new file mode 100644
index 0000000000..51f27966c4
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/thumbstick.c
@@ -0,0 +1,111 @@
+/* Copyright 2023 9R
+ *
+ * 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 "thumbstick.h"
+#include
+#include "action.h"
+#include "keycode.h"
+#include "debug.h"
+
+void init_wasd_state (void) {
+ wasd_state.w = wasd_state.a = wasd_state.s = wasd_state.d = false;
+ last_wasd_state = wasd_state;
+ wasd_state.shift = false;
+}
+
+thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y) {
+ static thumbstick_polar_position_t position;
+
+#ifdef THUMBSTICK_DEBUG
+ dprintf("xN: %4d yN: %4d\n", x, y);
+#endif
+
+ //transform to carthesian coordinates to polar coordinates
+ //get distance from center as int in range [0-600]
+ position.distance = (double)sqrt((double)x * (double)x + (double)y * (double)y);
+ //get direction as int in range [0 to 359]
+ position.angle = (double)atan2(y, x) * (180 /M_PI) + 180;
+
+ //apply thumbstick rotation const to modify forward direction
+ position.angle = (position.angle + _THUMBSTICK_ROTATION) % 360;
+
+ return position;
+}
+
+bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle) {
+ return (angle_from < angle && angle <= angle_to);
+}
+
+void update_keycode(uint16_t keycode, bool keystate, bool last_keystate) {
+ if (keystate && keystate != last_keystate) {
+ register_code16(keycode);
+ } else if (!keystate) {
+ unregister_code16(keycode);
+ }
+}
+
+void thumbstick(controller_state_t controller_state) {
+ xPos = joystick_state.axes[0];
+ yPos = joystick_state.axes[1];
+
+ thumbstick_polar_position = get_thumbstick_polar_position(xPos, yPos);
+
+#ifdef THUMBSTICK_DEBUG
+ dprintf("distance: %5d angle: %5d\n", thumbstick_polar_position.distance, thumbstick_polar_position.angle);
+#endif
+
+ // Update WASD state depending on thumbstick position
+ // if thumbstick out of of deadzone
+ if (thumbstick_polar_position.distance >= _DEADZONE) {
+ wasd_state.w = update_keystate( 0, 90, thumbstick_polar_position.angle);
+ // A angle: 45 - 180
+ wasd_state.a = update_keystate( 45, 181, thumbstick_polar_position.angle);
+ // S angle: 135 - 270
+ wasd_state.s = update_keystate(135, 270, thumbstick_polar_position.angle);
+ // D angle: 225 - 359
+ wasd_state.d = update_keystate(225, 359, thumbstick_polar_position.angle);
+
+ if (!wasd_state.w ) {
+ wasd_state.w = update_keystate(315, 360, thumbstick_polar_position.angle);
+ }
+ } else {
+ //reset WASD state when in _DEADZONE
+ init_wasd_state();
+ }
+
+#ifdef THUMBSTICK_DEBUG
+ dprintf("w: %2d a: %2d s: %2d d: %2d\n", wasd_state.w, wasd_state.a, wasd_state.s, wasd_state.d);
+#endif
+
+ update_keycode(KC_W, wasd_state.w, last_wasd_state.w);
+ update_keycode(KC_A, wasd_state.a, last_wasd_state.a);
+ update_keycode(KC_S, wasd_state.s, last_wasd_state.s);
+ update_keycode(KC_D, wasd_state.d, last_wasd_state.d);
+
+ last_wasd_state = wasd_state ;
+
+ // handle WASD-Shift mode
+ if (controller_state.wasdShiftMode) {
+ bool Shifted = thumbstick_polar_position.distance > _SHIFTZONE;
+ if (!wasd_state.shift && Shifted) {
+ register_code(KC_LSFT);
+ wasd_state.shift = true;
+ } else if (wasd_state.shift && !Shifted) {
+ unregister_code(KC_LSFT);
+ wasd_state.shift = false;
+ }
+ }
+}
diff --git a/keyboards/handwired/replicazeron/common/thumbstick.h b/keyboards/handwired/replicazeron/common/thumbstick.h
new file mode 100644
index 0000000000..d9b4394a09
--- /dev/null
+++ b/keyboards/handwired/replicazeron/common/thumbstick.h
@@ -0,0 +1,51 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include
+#include "state.h"
+#include "quantum.h"
+
+int16_t xPos;
+int16_t yPos;
+
+typedef struct {
+ uint16_t angle;
+ uint16_t distance;
+} thumbstick_polar_position_t;
+
+typedef struct {
+ bool w;
+ bool a;
+ bool s;
+ bool d;
+ bool shift;
+} wasd_state_t;
+
+thumbstick_polar_position_t thumbstick_polar_position ;
+
+wasd_state_t wasd_state;
+wasd_state_t last_wasd_state;
+
+void init_wasd_state(void);
+
+thumbstick_polar_position_t get_thumbstick_polar_position(int16_t x, int16_t y);
+
+bool update_keystate(uint16_t angle_from, uint16_t angle_to, uint16_t angle);
+
+void update_keycode(uint16_t keycode, bool keystate, bool last_keystate);
+
+void thumbstick(controller_state_t controller_state);
diff --git a/keyboards/handwired/replicazeron/config.h b/keyboards/handwired/replicazeron/config.h
new file mode 100644
index 0000000000..0c20f1d4b9
--- /dev/null
+++ b/keyboards/handwired/replicazeron/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2023 9R
+ *
+ * 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 THUMBSTICK_DEBUG
+
+/* joystick configuration */
+#define JOYSTICK_BUTTON_COUNT 0
+#define JOYSTICK_AXIS_COUNT 2
+#define JOYSTICK_AXIS_RESOLUTION 10
+
+#define _DEADZONE 100 // 0 to _SHIFTZONE-1
+#define _SHIFTZONE 350 // _DEADZONE+1 to 600
+#define _THUMBSTICK_ROTATION 100 //degrees, adjusts forward direction
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/handwired/replicazeron/info.json b/keyboards/handwired/replicazeron/info.json
new file mode 100644
index 0000000000..88f884c0bd
--- /dev/null
+++ b/keyboards/handwired/replicazeron/info.json
@@ -0,0 +1,47 @@
+{
+ "manufacturer": "9R",
+ "keyboard_name": "Replicazeron",
+ "maintainer": "9R",
+ "diode_direction": "COL2ROW",
+ "url": "https://github.com/9R/replicazeron",
+ "usb": {
+ "pid": "0x2305",
+ "vid": "0x4142"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "K04", "matrix": [0, 0], "x": 1.75, "y": 0.25, "w": 1.25},
+ {"label": "K10", "matrix": [0, 1], "x": 3, "y": 0.25, "w": 1.25},
+ {"label": "K16", "matrix": [0, 2], "x": 4.25, "y": 0.25, "w": 1.25},
+ {"label": "K22", "matrix": [0, 3], "x": 5.5, "y": 0.25, "w": 1.25},
+ {"label": "dwn", "matrix": [0, 4], "x": 9.5, "y": 2, "w": 1.25},
+ {"label": "K03", "matrix": [1, 0], "x": 1.75, "y": 1, "w": 1.25, "h": 1.25},
+ {"label": "K09", "matrix": [1, 1], "x": 3, "y": 1, "w": 1.25, "h": 1.25},
+ {"label": "K15", "matrix": [1, 2], "x": 4.25, "y": 1, "w": 1.25, "h": 1.25},
+ {"label": "K21", "matrix": [1, 3], "x": 5.5, "y": 1, "w": 1.25, "h": 1.25},
+ {"label": "lft", "matrix": [1, 4], "x": 8.25, "y": 1, "w": 1.25},
+ {"label": "K02", "matrix": [2, 0], "x": 1.75, "y": 2.5, "w": 1.25, "h": 1.25},
+ {"label": "K08", "matrix": [2, 1], "x": 3, "y": 2.5, "w": 1.25, "h": 1.25},
+ {"label": "K14", "matrix": [2, 2], "x": 4.25, "y": 2.5, "w": 1.25, "h": 1.25},
+ {"label": "K20", "matrix": [2, 3], "x": 5.5, "y": 2.5, "w": 1.25, "h": 1.25},
+ {"label": "ent", "matrix": [2, 4], "x": 9.5, "y": 1, "w": 1.25},
+ {"label": "K01", "matrix": [3, 0], "x": 1.75, "y": 3.75, "w": 1.25},
+ {"label": "K07", "matrix": [3, 1], "x": 3, "y": 3.75, "w": 1.25},
+ {"label": "K13", "matrix": [3, 2], "x": 4.25, "y": 3.75, "w": 1.25},
+ {"label": "K19", "matrix": [3, 3], "x": 5.5, "y": 3.75, "w": 1.25},
+ {"label": "rgt", "matrix": [3, 4], "x": 10.75, "y": 1, "w": 1.25},
+ {"label": "K00", "matrix": [4, 0], "x": 1.75, "y": 4.75, "w": 1.25},
+ {"label": "K06", "matrix": [4, 1], "x": 3, "y": 4.75, "w": 1.25},
+ {"label": "K12", "matrix": [4, 2], "x": 4.25, "y": 4.75, "w": 1.25},
+ {"label": "K18", "matrix": [4, 3], "x": 5.5, "y": 4.75, "w": 1.25},
+ {"label": "up ", "matrix": [4, 4], "x": 9.5, "y": 0, "w": 1.25},
+ {"label": "K05", "matrix": [5, 0], "x": 0, "y": 2.5, "w": 1.75},
+ {"label": "lyr", "matrix": [5, 1], "x": 7.5, "y": 4.25, "w": 1.5},
+ {"label": "K17", "matrix": [5, 2], "x": 10.75, "y": 4, "w": 1.5},
+ {"label": "K23", "matrix": [5, 3], "x": 6.75, "y": 2.5, "w": 1.5},
+ {"label": "spc", "matrix": [5, 4], "x": 10.75, "y": 3, "w": 1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/replicazeron/keymaps/default/keymap.c b/keyboards/handwired/replicazeron/keymaps/default/keymap.c
new file mode 100644
index 0000000000..feb027271d
--- /dev/null
+++ b/keyboards/handwired/replicazeron/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ // little | ring | middle | index | 5way-dpad | -finger
+ KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up
+ KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward
+ KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down
+ KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2
+ KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1
+ KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special
+ // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping
+ ),
+
+ [_SHOOTER] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_UP,
+ KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P
+ ),
+
+ [_MISC] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_UP,
+ KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P
+ ),
+
+ [_SETTINGS] = LAYOUT(
+ RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT,
+ KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT,
+ RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN,
+ EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT,
+ QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP,
+ RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P
+ )
+};
diff --git a/keyboards/handwired/replicazeron/keymaps/vial/config.h b/keyboards/handwired/replicazeron/keymaps/vial/config.h
new file mode 100644
index 0000000000..60cec8eeac
--- /dev/null
+++ b/keyboards/handwired/replicazeron/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x3E, 0x15, 0xC1, 0x32, 0xC3, 0xDE, 0xCD, 0x83}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 4, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/replicazeron/keymaps/vial/keymap.c b/keyboards/handwired/replicazeron/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..feb027271d
--- /dev/null
+++ b/keyboards/handwired/replicazeron/keymaps/vial/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ // little | ring | middle | index | 5way-dpad | -finger
+ KC_GRV, KC_ESC, KC_J, KC_M, KC_RIGHT, // up
+ KC_T, KC_3, KC_4, KC_R, KC_ENT, // forward
+ KC_X, KC_LCTL, KC_LCTL, KC_LALT, KC_DOWN, // down
+ KC_LSFT, KC_SPC, KC_C, KC_F, KC_LEFT, // back 2
+ KC_LSFT, KC_6, KC_Z, KC_V, KC_UP, // back 1
+ KC_TAB, TG(_SHOOTER), KC_I, KC_B, KC_P // special
+ // ^side_l | ^case | ^thumb | ^side_r | ^analog click <= special row mapping
+ ),
+
+ [_SHOOTER] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_UP,
+ KC_NO, TG(_MISC), KC_NO, KC_NO, KC_P
+ ),
+
+ [_MISC] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_RIGHT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_UP,
+ KC_NO, TG(_SETTINGS), KC_NO, KC_NO, KC_P
+ ),
+
+ [_SETTINGS] = LAYOUT(
+ RGB_M_P, RGB_M_B, RGB_M_K, RGB_M_T, KC_RIGHT,
+ KC_NO, RGB_SAI, RGB_VAI, RGB_HUI, KC_ENT,
+ RGB_TOG, KC_NO, KC_NO, KC_NO , KC_DOWN,
+ EE_CLR, RGB_SAD, RGB_VAD, RGB_HUD, KC_LEFT,
+ QK_BOOT, AUTORUN, JOYMODE, KC_V, KC_UP,
+ RGB_MOD, TO(_BASE), KC_NO, RGB_RMOD, KC_P
+ )
+};
diff --git a/keyboards/handwired/replicazeron/keymaps/vial/rules.mk b/keyboards/handwired/replicazeron/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..4afa6d59dd
--- /dev/null
+++ b/keyboards/handwired/replicazeron/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+COMBO_ENABLE = no
+QMK_SETTINGS = no
diff --git a/keyboards/handwired/replicazeron/keymaps/vial/vial.json b/keyboards/handwired/replicazeron/keymaps/vial/vial.json
new file mode 100644
index 0000000000..42d809028c
--- /dev/null
+++ b/keyboards/handwired/replicazeron/keymaps/vial/vial.json
@@ -0,0 +1,133 @@
+{
+ "lighting": "none",
+ "matrix": {
+ "rows": 6,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 1.75
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ {
+ "x": 2.5
+ },
+ "0,4"
+ ],
+ [
+ {
+ "x": 1.75,
+ "h": 1.25
+ },
+ "1,0",
+ {
+ "h": 1.25
+ },
+ "1,1",
+ {
+ "h": 1.25
+ },
+ "1,2",
+ {
+ "h": 1.25
+ },
+ "1,3",
+ {
+ "x": 1.5
+ },
+ "4,4",
+ "1,4",
+ "2,4"
+ ],
+ [
+ {
+ "x": 8.25
+ },
+ "3,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1.75,
+ "h": 1.5
+ },
+ "2,0",
+ {
+ "h": 1.5
+ },
+ "2,1",
+ {
+ "h": 1.5
+ },
+ "2,2",
+ {
+ "h": 1.5
+ },
+ "2,3"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 1.75
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ {
+ "x": 1.5,
+ "h": 1.5,
+ "w": 1.5
+ },
+ "5,4"
+ ],
+ [
+ {
+ "x": 1.75
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3",
+ {
+ "x": 0.25
+ },
+ "5,1"
+ ],
+ [
+ {
+ "r": 15,
+ "rx": 0.5,
+ "ry": 3,
+ "y": -0.75,
+ "x": -0.5,
+ "w": 1.5
+ },
+ "5,0"
+ ],
+ [
+ {
+ "rx": 7,
+ "y": 0.5,
+ "x": 2.75,
+ "w": 1.5
+ },
+ "5,2"
+ ],
+ [
+ {
+ "r": -15,
+ "y": -2.25,
+ "x": -1,
+ "w": 1.5
+ },
+ "5,3"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/handwired/replicazeron/post_rules.mk b/keyboards/handwired/replicazeron/post_rules.mk
new file mode 100644
index 0000000000..101759aa07
--- /dev/null
+++ b/keyboards/handwired/replicazeron/post_rules.mk
@@ -0,0 +1,14 @@
+ifeq ($(strip $(LEDS_ENABLE)), yes)
+ OPT_DEFS += -DLEDS_ENABLE
+ SRC += leds.c
+endif
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += oled.c
+endif
+
+ifeq ($(strip $(THUMBSTICK_ENABLE)), yes)
+ OPT_DEFS += -DTHUMBSTICK_ENABLE
+ SRC += thumbstick.c
+ ANALOG_DRIVER_REQUIRED = yes
+endif
diff --git a/keyboards/handwired/replicazeron/promicro/config.h b/keyboards/handwired/replicazeron/promicro/config.h
new file mode 100644
index 0000000000..55b4d5c2f4
--- /dev/null
+++ b/keyboards/handwired/replicazeron/promicro/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2023 9R
+ *
+ * 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 STATUS_LED_A_PIN D2
+#define STATUS_LED_B_PIN D3
+
+#define ANALOG_AXIS_PIN_X F4
+#define ANALOG_AXIS_PIN_Y F5
diff --git a/keyboards/handwired/replicazeron/promicro/keyboard.json b/keyboards/handwired/replicazeron/promicro/keyboard.json
new file mode 100644
index 0000000000..dbc2e1edf3
--- /dev/null
+++ b/keyboards/handwired/replicazeron/promicro/keyboard.json
@@ -0,0 +1,18 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "D4", "D7", "E6", "F7"],
+ "rows": ["B1", "B3", "B2", "B6", "B5", "B4"]
+ },
+ "development_board": "promicro",
+ "features": {
+ "bootmagic": false,
+ "console": false,
+ "extrakey": false,
+ "mousekey": false,
+ "nkro": false,
+ "rgblight": false,
+ }
+}
diff --git a/keyboards/handwired/replicazeron/readme.md b/keyboards/handwired/replicazeron/readme.md
new file mode 100644
index 0000000000..c933ebc092
--- /dev/null
+++ b/keyboards/handwired/replicazeron/readme.md
@@ -0,0 +1,69 @@
+
+# Replicazeron
+
+This is a config to run a 3dprinted keyboard controller with qmk based on this project:
+
+https://sites.google.com/view/alvaro-rosati/azeron-keypad-diy-tutorial
+
+Some additional and redesigned files (i.e. for the OLED-display) can be found in [this repo](https://github.com/9R/replicazeron).
+
+
+
+[Gallery](https://imgur.com/a/2qlEPVl)
+
+## Features
+
+ * 23 keys
+ * analog stick with WASD emulation
+ * 5way dpad
+ * 2 status LEDS
+ * 6x WS2812 RGB-LED lighting
+
+## Supported MCUs
+
+Currently configs for STM32F103 and atmega32U4 are available, but STM32 is recommended, since the atmega may run out of flash with all features enabled.
+
+With minor adjustments to Pinconfig it should be possible to use other MCUs that are supported by QMK
+
+
+## Wirering
+
+Full schematics can be found in this repo:
+
+https://github.com/9R/replicazeron_schematics
+
+### Rows
+|row| promiro gpios | promicro pin | stm32F103 gpios | color |
+|---|---------------|--------------|-----------------|---------|
+| 0 | B1 | 15 | B15 | red |
+| 1 | B3 | 14 | A8 | blue |
+| 2 | B2 | 16 | A9 | yellow |
+| 3 | B6 | 10 | A10 | brown |
+| 4 | B5 | 9 | A15 | orange |
+| 5 | B4 | 8 | B3 | green |
+
+### Columns
+|col| promiro gpios | promicro pin | stm32F103 gpios | color |
+|---|---------------|--------------|-----------------|---------|
+| 0 | C6 | 5 | A7 | white |
+| 1 | D4 | 4 | A6 | grey |
+| 2 | D7 | 6 | A5 | violet |
+| 3 | E6 | 7 | A4 | grey |
+| 4 | F7 | A0 | B4 | white |
+
+### Analog
+| promicro gpio | stm32F103 gpio | pin | color |
+|---------------|----------------|-----|-------|
+| GND | GND | GND | white |
+| VCC | VCC | VCC | red |
+| F4 | B1 | VRx | brown |
+| F5 | B0 | VRy | yellow|
+| | | SW | blue |
+
+### OLED
+| promicro gpio | stm32F103 gpio | pin | color |
+|---------------|----------------|-----|-------|
+| GND | GND | GND | white |
+| VCC | VCC | VCC | red |
+| D4 | B10 | SDA | green |
+| C6 | B11 | SCL | yellow|
diff --git a/keyboards/handwired/replicazeron/replicazeron.c b/keyboards/handwired/replicazeron/replicazeron.c
new file mode 100644
index 0000000000..5c27916a7b
--- /dev/null
+++ b/keyboards/handwired/replicazeron/replicazeron.c
@@ -0,0 +1,103 @@
+/* Copyright 2023 9R
+ *
+ * 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 "replicazeron.h"
+
+controller_state_t controller_state;
+
+#ifdef JOYSTICK_ENABLE
+joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT] = {
+ JOYSTICK_AXIS_IN(ANALOG_AXIS_PIN_X , 0, 512, 1023),
+ JOYSTICK_AXIS_IN(ANALOG_AXIS_PIN_Y , 0, 512, 1023)
+};
+#endif
+
+#ifdef THUMBSTICK_ENABLE
+void housekeeping_task_kb(void) {
+ if (controller_state.wasdMode) {
+ thumbstick(controller_state);
+ }
+}
+#endif
+
+void keyboard_post_init_kb(void) {
+ // Customise these values to desired behaviour
+ debug_enable = true;
+ debug_matrix = true;
+ // debug_keyboard = true;
+ // debug_mouse = true;
+
+#ifdef LEDS_ENABLE
+ init_leds();
+#endif // LEDS_ENABLE
+
+#ifdef THUMBSTICK_ENABLE
+ init_wasd_state();
+#endif // THUMBSTICK_ENABLE
+
+ controller_state = init_state();
+
+ keyboard_post_init_user();
+}
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ draw_oled(controller_state);
+ return false;
+}
+#endif
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+
+ if (keycode == JOYMODE && record->event.pressed) {
+ if (!controller_state.wasdMode) {
+ controller_state.wasdMode = true;
+ } else if (controller_state.wasdMode && !controller_state.wasdShiftMode) {
+ controller_state.wasdShiftMode = true;
+ } else {
+ controller_state.wasdMode = false;
+ controller_state.wasdShiftMode = false;
+ }
+ } else if (keycode == AUTORUN && record->event.pressed) {
+ if (!controller_state.autoRun) {
+ controller_state.autoRun = true;
+ register_code(KC_W);
+ } else {
+ controller_state.autoRun = false;
+ unregister_code(KC_W);
+ }
+ }
+ return true;
+};
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ controller_state.highestActiveLayer = get_highest_layer(state) ;
+
+#ifdef LEDS_ENABLE
+ set_leds(controller_state.highestActiveLayer) ;
+#endif // LEDS_ENABLE
+
+ return state;
+}
diff --git a/keyboards/handwired/replicazeron/replicazeron.h b/keyboards/handwired/replicazeron/replicazeron.h
new file mode 100644
index 0000000000..dbfc8cca33
--- /dev/null
+++ b/keyboards/handwired/replicazeron/replicazeron.h
@@ -0,0 +1,50 @@
+/* Copyright 2023 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#include "state.h"
+
+#ifdef LEDS_ENABLE
+# include "leds.h"
+#endif
+
+#ifdef OLED_ENABLE
+# include "oled.h"
+#endif
+
+#ifdef THUMBSTICK_ENABLE
+# include "thumbstick.h"
+#endif
+
+enum kb_layers {
+ _BASE,
+ _SHOOTER,
+ _MISC,
+ _SETTINGS,
+};
+
+enum kb_keycodes {
+ JOYMODE = QK_USER,
+ AUTORUN,
+ M_UP,
+ M_DWN,
+ M_L,
+ M_R,
+ M_SEL
+};
diff --git a/keyboards/handwired/replicazeron/rules.mk b/keyboards/handwired/replicazeron/rules.mk
new file mode 100644
index 0000000000..8a812f4fc3
--- /dev/null
+++ b/keyboards/handwired/replicazeron/rules.mk
@@ -0,0 +1,14 @@
+JOYSTICK_ENABLE = yes
+OLED_ENABLE = yes
+
+LEDS_ENABLE = yes
+THUMBSTICK_ENABLE = yes
+
+LTO_ENABLE = yes
+
+SRC += state.c
+
+VPATH += keyboards/handwired/replicazeron/common
+
+# redirect compilation against "handwired/replicazeron" to the stm32 variant
+DEFAULT_FOLDER = handwired/replicazeron/stm32f103
diff --git a/keyboards/handwired/replicazeron/stm32f103/config.h b/keyboards/handwired/replicazeron/stm32f103/config.h
new file mode 100644
index 0000000000..1efc89d080
--- /dev/null
+++ b/keyboards/handwired/replicazeron/stm32f103/config.h
@@ -0,0 +1,29 @@
+/* Copyright 2023 9R
+ *
+ * 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
+
+/* I2C Config */
+#define I2C_DRIVER I2CD2
+#define I2C1_SDA_PIN B11
+#define I2C1_SCL_PIN B10
+
+#define STATUS_LED_A_PIN B13
+#define STATUS_LED_B_PIN B12
+
+#define ANALOG_AXIS_PIN_X B0
+#define ANALOG_AXIS_PIN_Y B1
+
diff --git a/keyboards/handwired/replicazeron/stm32f103/keyboard.json b/keyboards/handwired/replicazeron/stm32f103/keyboard.json
new file mode 100644
index 0000000000..7298da1109
--- /dev/null
+++ b/keyboards/handwired/replicazeron/stm32f103/keyboard.json
@@ -0,0 +1,31 @@
+{
+ "development_board": "bluepill",
+ "features": {
+ "bootmagic": true,
+ "console": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "B4"],
+ "rows": ["B15", "A8", "A9", "A10", "A15", "B3"]
+ },
+ "rgblight": {
+ "led_count": 6
+ "animations": {
+ "breathing": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "twinkle": true
+ }
+ },
+ "usb": {
+ "device_version": "0.0.2"
+ },
+ "ws2812": {
+ "pin": "B14"
+ }
+}
diff --git a/keyboards/handwired/replicazeron/stm32f103/mcuconf.h b/keyboards/handwired/replicazeron/stm32f103/mcuconf.h
new file mode 100644
index 0000000000..26db5392cf
--- /dev/null
+++ b/keyboards/handwired/replicazeron/stm32f103/mcuconf.h
@@ -0,0 +1,31 @@
+/* Copyright 2022 9R
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include_next
+
+//enable i2c for OLED
+#undef STM32_I2C_USE_I2C2
+#define STM32_I2C_USE_I2C2 TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
+//enable ADC for thumbstick
+#undef STM32_ADC_USE_ADC1
+#define STM32_ADC_USE_ADC1 TRUE
+
diff --git a/keyboards/idobao/id75/keymaps/vial/config.h b/keyboards/idobao/id75/keymaps/vial/config.h
new file mode 100644
index 0000000000..cf5fafde37
--- /dev/null
+++ b/keyboards/idobao/id75/keymaps/vial/config.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xDC, 0x0B, 0x71, 0xF9, 0x24, 0xBD, 0x07, 0xB4}
+#define VIAL_UNLOCK_COMBO_ROWS {0, 1}
+#define VIAL_UNLOCK_COMBO_COLS {0, 1}
+
+//#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+//#define DYNAMIC_KEYMAP_MACRO_COUNT 8
+//#define VIAL_COMBO_ENTRIES 8 // number of combos used, each entry take 10 byte in EEPROM
+//#define VIAL_TAP_DANCE_ENTRIES 8 // number of tap dances used, each entry take 10 byte in EEPROM
+//#define VIAL_KEY_OVERRIDE_ENTRIES 8 // number of key override used, each entry take 10 byte in EEPROM
+//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+//#define RGB_MATRIX_KEYPRESSES
+
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+#define NO_ACTION_ONESHOT
+#define NO_ACTION_TAPPING
+
+#define NO_MUSIC_MODE
+
+#define LAYER_STATE_8BIT
+
+#undef RGBLIGHT_EFFECT_BREATHING
+#undef RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_CHRISTMAS
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_RGB_TEST
+#undef RGBLIGHT_EFFECT_ALTERNATING
+#undef RGBLIGHT_EFFECT_TWINKLE
+
+//#define RGB_MATRIX_LED_COUNT 16
+//#define DRIVER_LED_TOTAL 48
\ No newline at end of file
diff --git a/keyboards/idobao/id75/keymaps/vial/keymap.c b/keyboards/idobao/id75/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..410ef5c4ca
--- /dev/null
+++ b/keyboards/idobao/id75/keymaps/vial/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2020 IFo Hancroft
+ *
+ * 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_ortho_5x15(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PSCR,
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_CAPS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, LCA(KC_A), KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, TG(1), KC_RALT, KC_RCTL, LGUI(KC_L), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_ortho_5x15(
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PWR,
+ EE_CLR, KC_BRIU, RGB_SAI, RGB_VAI, RGB_HUI, RGB_SPI, RGB_MOD, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_NO, KC_SLEP, KC_WAKE,
+ DB_TOGG, KC_BRID, RGB_SAD, RGB_VAD, RGB_HUD, RGB_SPD, RGB_RMOD, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, KC_NO, KC_HOME,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLU, KC_END,
+ KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [2] = LAYOUT_ortho_5x15(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, 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_ortho_5x15(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, 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/idobao/id75/keymaps/vial/readme.md b/keyboards/idobao/id75/keymaps/vial/readme.md
new file mode 100644
index 0000000000..1fc0bde5cb
--- /dev/null
+++ b/keyboards/idobao/id75/keymaps/vial/readme.md
@@ -0,0 +1,43 @@
+# Typematrix-like keymap with VIAL support for Idobao/ID75 v1 5x15 ortholinear keyboard
+
+I use it with bépo configured system.
+Compatible with VIA and VIAL. Underglow available.
+
+
+
+Due to limitations of atmega32u4 chip, some features where disabled to get enougth space to enable VIAL based on this documentation: https://docs.qmk.fm/#/squeezing_avr. It maybe possible to reenable some of them depending on what you may need.
+
+```
+ * The firmware size is fine - 26640/28672 (92%, 2032 bytes free)
+```
+## Compatibility
+
+This keymap should work with both v1 and v2 boards as they feature the same chip (Atmega32u4) but v2's RGB matrix is not enabled.
+I only have a v1 board and can't test anything regarding v2.
+
+## List of disabled features
+
+RGB matrix is not disabled explicitly.
+
+In rules.mk
+ - SPACE_CADET_ENABLE = no
+ - GRAVE_ESC_ENABLE = no
+ - MAGIC_ENABLE = no
+ - MUSIC_ENABLE = no
+
+ In config.h
+ - #undef LOCKING_SUPPORT_ENABLE #Disables Cherry MX lock switch
+ - #undef LOCKING_RESYNC_ENABLE #Disables Cherry MX lock switch
+ - #define NO_ACTION_ONESHOT #Disables oneshots
+ - #define NO_ACTION_TAPPING #Disables tapping keys
+ - #define NO_MUSIC_MODE #Disables RGB matrix feature, you won't miss as RGB matrix is disabled too (v1 of the keeb has no RGB matrix anyway)
+ - #define LAYER_STATE_8BIT #Limits number of layers to 8, you may try up to 16 layers with `LAYER_STATE_16BIT`
+ The following ones disable some underglow effects, this is a good way to limit firmware size, choose the ones you like (I kept `RGBLIGHT_EFFECT_RAINBOW_MOOD` and `RGBLIGHT_EFFECT_RAINBOW_SWIRL`)
+ - #undef RGBLIGHT_EFFECT_BREATHING
+ - #undef RGBLIGHT_EFFECT_SNAKE
+ - #undef RGBLIGHT_EFFECT_KNIGHT
+ - #undef RGBLIGHT_EFFECT_CHRISTMAS
+ - #undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+ - #undef RGBLIGHT_EFFECT_RGB_TEST
+ - #undef RGBLIGHT_EFFECT_ALTERNATING
+ - #undef RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/idobao/id75/keymaps/vial/rules.mk b/keyboards/idobao/id75/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..d98a0d055d
--- /dev/null
+++ b/keyboards/idobao/id75/keymaps/vial/rules.mk
@@ -0,0 +1,19 @@
+VIA_ENABLE = yes
+
+VIAL_ENABLE = yes
+LTO_ENABLE = yes # reduce firmware size
+#VIALRGB_ENABLE = yes
+#RGB_MATRIX_ENABLE= yes
+
+#RGB_MATRIX_DRIVER = is31fl3746a
+
+COMBO_ENABLE = no
+
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+
+AVR_USE_MINIMAL_PRINTF = yes
+
+MUSIC_ENABLE = no
+
diff --git a/keyboards/idobao/id75/keymaps/vial/vial.json b/keyboards/idobao/id75/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4302a23d27
--- /dev/null
+++ b/keyboards/idobao/id75/keymaps/vial/vial.json
@@ -0,0 +1,96 @@
+{
+ "name": "Idobao ID75 V1",
+ "vendorId": "0x6964",
+ "productId": "0x0075",
+ "lighting": "qmk_rgblight",
+ "matrix": { "rows": 5, "cols": 15 },
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ "0,14"
+ ],
+ [
+ "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",
+ "1,13",
+ "1,14"
+ ],
+ [
+ "2,0",
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ "2,13",
+ "2,14"
+ ],
+ [
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ "3,12",
+ "3,13",
+ "3,14"
+ ],
+ [
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ "4,12",
+ "4,13",
+ "4,14"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/jlw/vault35_universal/keymaps/vial/vial.json b/keyboards/jlw/vault35_universal/keymaps/vial/vial.json
index 3295d2f1e7..82db6f3e04 100644
--- a/keyboards/jlw/vault35_universal/keymaps/vial/vial.json
+++ b/keyboards/jlw/vault35_universal/keymaps/vial/vial.json
@@ -119,7 +119,7 @@
"2,1\n\n\n0,0",
"2,2\n\n\n0,0",
"2,3\n\n\n0,0",
- "2,4\n\n\n0,0",
+ "2,5\n\n\n0,0",
"2,6\n\n\n0,0",
"2,7\n\n\n0,0",
"2,8\n\n\n0,0",
@@ -585,7 +585,7 @@
"2,1\n\n\n0,5",
"2,2\n\n\n0,5",
"2,3\n\n\n0,5",
- "2,4\n\n\n0,5",
+ "2,5\n\n\n0,5",
"2,6\n\n\n0,5",
"2,7\n\n\n0,5",
"2,8\n\n\n0,5",
diff --git a/keyboards/kaly/kaly42/keymaps/vial/config.h b/keyboards/kaly/kaly42/keymaps/vial/config.h
new file mode 100644
index 0000000000..3e9c1e6a97
--- /dev/null
+++ b/keyboards/kaly/kaly42/keymaps/vial/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+
+/* copied from cantor */
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
+
+#define VIAL_KEYBOARD_UID {0x15, 0x56, 0x94, 0x28, 0x02, 0xBB, 0x66, 0xBE}
\ No newline at end of file
diff --git a/keyboards/kaly/kaly42/keymaps/vial/keymap.c b/keyboards/kaly/kaly42/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..54d46c54db
--- /dev/null
+++ b/keyboards/kaly/kaly42/keymaps/vial/keymap.c
@@ -0,0 +1,27 @@
+// Copyright 2023 Kael Soares Augusto (@Dwctor)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
+ * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│
+ * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │GUI├───┐ ┌───┤Alt│
+ * └───┤Bsp├───┐ ┌───┤Ent├───┘
+ * └───┤ │ │ ├───┘
+ * └───┘ └───┘
+ */
+ [0] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT
+ )
+};
diff --git a/keyboards/kaly/kaly42/keymaps/vial/rules.mk b/keyboards/kaly/kaly42/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6bc7063adc
--- /dev/null
+++ b/keyboards/kaly/kaly42/keymaps/vial/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/kaly/kaly42/keymaps/vial/vial.json b/keyboards/kaly/kaly42/keymaps/vial/vial.json
new file mode 100644
index 0000000000..3df49502f7
--- /dev/null
+++ b/keyboards/kaly/kaly42/keymaps/vial/vial.json
@@ -0,0 +1,269 @@
+{
+ "name": "kaly42",
+ "lighting": "none",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ {
+ "x": 7
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "0,2",
+ {
+ "x": 1
+ },
+ "0,4",
+ {
+ "x": 5
+ },
+ "4,1",
+ {
+ "x": 1
+ },
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.85,
+ "x": 5
+ },
+ "0,5",
+ {
+ "x": 3
+ },
+ "4,0"
+ ],
+ [
+ {
+ "y": -0.4999999999999999
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 11
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 3
+ },
+ "1,3",
+ {
+ "x": 7
+ },
+ "5,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 1
+ },
+ "1,4",
+ {
+ "x": 5
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.8500000000000001,
+ "x": 5
+ },
+ "1,5",
+ {
+ "x": 3
+ },
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 11
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 3
+ },
+ "2,3",
+ {
+ "x": 7
+ },
+ "6,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "2,2",
+ {
+ "x": 1
+ },
+ "2,4",
+ {
+ "x": 5
+ },
+ "6,1",
+ {
+ "x": 1
+ },
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.8500000000000001,
+ "x": 5
+ },
+ "2,5",
+ {
+ "x": 3
+ },
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 11
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -1.9,
+ "x": 5.25
+ },
+ "3,0"
+ ],
+ [
+ {
+ "r": 32,
+ "y": -2.95,
+ "x": 6.85
+ },
+ "3,1"
+ ],
+ [
+ {
+ "r": 46,
+ "rx": 15,
+ "y": 7.9,
+ "x": -1.6099999999999994
+ },
+ "7,0"
+ ],
+ [
+ {
+ "r": -46,
+ "rx": 0,
+ "y": 7.9,
+ "x": 0.61
+ },
+ "3,2"
+ ],
+ [
+ {
+ "r": -32,
+ "rx": 15,
+ "y": 0.05,
+ "x": -7.85
+ },
+ "7,1"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 0.95,
+ "x": -6.25
+ },
+ "7,2"
+ ]
+],
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0.25 },
+ { "matrix": [0, 1], "x": 1, "y": 0.25 },
+ { "matrix": [0, 2], "x": 2, "y": 0.125 },
+ { "matrix": [0, 3], "x": 3, "y": 0 },
+ { "matrix": [0, 4], "x": 4, "y": 0.125 },
+ { "matrix": [0, 5], "x": 5, "y": 0.25 },
+ { "matrix": [4, 0], "x": 8, "y": 0.25 },
+ { "matrix": [4, 1], "x": 9, "y": 0.125 },
+ { "matrix": [4, 2], "x": 10, "y": 0 },
+ { "matrix": [4, 3], "x": 11, "y": 0.125 },
+ { "matrix": [4, 4], "x": 12, "y": 0.25 },
+ { "matrix": [4, 5], "x": 13, "y": 0.25 },
+ { "matrix": [1, 0], "x": 0, "y": 1.25 },
+ { "matrix": [1, 1], "x": 1, "y": 1.25 },
+ { "matrix": [1, 2], "x": 2, "y": 1.125 },
+ { "matrix": [1, 3], "x": 3, "y": 1 },
+ { "matrix": [1, 4], "x": 4, "y": 1.125 },
+ { "matrix": [1, 5], "x": 5, "y": 1.25 },
+ { "matrix": [5, 0], "x": 8, "y": 1.25 },
+ { "matrix": [5, 1], "x": 9, "y": 1.125 },
+ { "matrix": [5, 2], "x": 10, "y": 1 },
+ { "matrix": [5, 3], "x": 11, "y": 1.125 },
+ { "matrix": [5, 4], "x": 12, "y": 1.25 },
+ { "matrix": [5, 5], "x": 13, "y": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2.25 },
+ { "matrix": [2, 1], "x": 1, "y": 2.25 },
+ { "matrix": [2, 2], "x": 2, "y": 2.125 },
+ { "matrix": [2, 3], "x": 3, "y": 2 },
+ { "matrix": [2, 4], "x": 4, "y": 2.125 },
+ { "matrix": [2, 5], "x": 5, "y": 2.25 },
+ { "matrix": [6, 0], "x": 8, "y": 2.25 },
+ { "matrix": [6, 1], "x": 9, "y": 2.125 },
+ { "matrix": [6, 2], "x": 10, "y": 2 },
+ { "matrix": [6, 3], "x": 11, "y": 2.125 },
+ { "matrix": [6, 4], "x": 12, "y": 2.25 },
+ { "matrix": [6, 5], "x": 13, "y": 2.25 },
+ { "matrix": [3, 0], "x": 3.5, "y": 3.25 },
+ { "matrix": [3, 1], "x": 4.5, "y": 3.5 },
+ { "matrix": [3, 2], "x": 5.5, "y": 3.75 },
+ { "matrix": [7, 0], "x": 7.5, "y": 3.75 },
+ { "matrix": [7, 1], "x": 8.5, "y": 3.5 },
+ { "matrix": [7, 2], "x": 9.5, "y": 3.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h b/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h
new file mode 100644
index 0000000000..a2fa24096d
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/config.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBF, 0x59, 0x7D, 0x4C, 0xDF, 0x1C, 0xBC, 0x81}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 7 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 7 }
+
+// Reduce the firmware size!
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+#define LAYER_STATE_8BIT
diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c b/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..859ee21651
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/keymap.c
@@ -0,0 +1,48 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum custom_layer {
+ _BASE,
+ _FN1,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_65_with_macro(
+ KC_F1, KC_F2, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_65_with_macro(
+ _______, _______, QK_GESC, 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_BSPC, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [1] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD), ENCODER_CCW_CW(KC_MNXT, KC_MPRV) }
+};
+#endif
+
+#ifndef MAGIC_ENABLE
+uint16_t keycode_config(uint16_t keycode) {
+ return keycode;
+}
+#endif
diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk b/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ba9b0f3287
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/rules.mk
@@ -0,0 +1,26 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = yes
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+AVR_USE_MINIMAL_PRINTF = yes
+EXTRAKEY_ENABLE = yes
+
+# Reduce the firmware size:
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMBO_ENABLE = no
+COMMAND_ENABLE = no
+CONSOLE_ENABLE = no
+GRAVE_ESC_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+LEADER_ENABLE = no
+MAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
+RGB_MATRIX_ENABLE = no
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = no
+VIALRGB_ENABLE = no
diff --git a/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json b/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json
new file mode 100644
index 0000000000..a897eaa90c
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev3/keymaps/vial/vial.json
@@ -0,0 +1,504 @@
+{
+ "name": "Quefrency Rev. 3",
+ "vendorId": "0xCB10",
+ "productId": "0x3357",
+ "matrix": {
+ "rows": 10,
+ "cols": 9
+ },
+ "lighting": "qmk_backlight_rgblight",
+ "layouts": {
+ "labels": [
+ [
+ "Left Macropad",
+ "Enabled",
+ "W/Encoder",
+ "No Macro"
+ ],
+ "Split Left Shift",
+ [
+ "Left Space",
+ "1.25-2.25u",
+ "2.25-1.25u",
+ "1.25-1-1.25u"
+ ],
+ "Split Backspace",
+ "ISO Enter",
+ [
+ "Right Column",
+ "Enabled",
+ "W/Encoder",
+ "Disabled"
+ ],
+ [
+ "Right Shift",
+ "1.75u Shift-1u",
+ "2.75u",
+ "1.75u /"
+ ],
+ [
+ "Right Mods",
+ "6x1u",
+ "2x1.25u__3x1u",
+ "4x1.25u-1u"
+ ],
+ "Split Right Space"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 1.75
+ },
+ "0,0\n\n\n0,1\n\n\n\n\n\ne",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,1\n\n\n0,1\n\n\n\n\n\ne",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "\n\n\n0,0",
+ {
+ "d": true
+ },
+ "\n\n\n0,0",
+ {
+ "x": 16.5,
+ "c": "#aaaaaa",
+ "d": true
+ },
+ "\n\n\n5,0",
+ {
+ "d": true
+ },
+ "\n\n\n5,0",
+ {
+ "x": 3.75
+ },
+ "1,0\n\n\n5,1\n\n\n\n\n\ne",
+ "1,1\n\n\n5,1\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "c": "#cccccc",
+ "d": true
+ },
+ "0,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "0,1\n\n\n0,2",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,0\n\n\n0,1",
+ "0,1\n\n\n0,1",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n0,0",
+ "0,1\n\n\n0,0",
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "0,2",
+ {
+ "c": "#cccccc"
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "5,7\n\n\n3,0",
+ "5,8\n\n\n5,0",
+ {
+ "x": 0.75
+ },
+ "5,6\n\n\n3,1",
+ "5,7\n\n\n3,1",
+ {
+ "x": 2
+ },
+ "5,8\n\n\n5,1\n\n\n\n\n\ne1",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "5,8\n\n\n5,2"
+ ],
+ [
+ {
+ "d": true
+ },
+ "1,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "1,1\n\n\n0,2",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "1,0\n\n\n0,1",
+ "1,1\n\n\n0,1",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n0,0",
+ "1,1\n\n\n0,0",
+ {
+ "x": 0.5,
+ "w": 1.5
+ },
+ "1,2",
+ {
+ "c": "#cccccc"
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ {
+ "x": 1
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ "6,6",
+ {
+ "w": 1.5
+ },
+ "6,7\n\n\n4,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "6,8\n\n\n5,0",
+ {
+ "x": 2,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "7,7\n\n\n4,1",
+ {
+ "x": 1.5,
+ "c": "#aaaaaa"
+ },
+ "6,8\n\n\n5,1",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "6,8\n\n\n5,2"
+ ],
+ [
+ {
+ "d": true
+ },
+ "2,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "2,1\n\n\n0,2",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "2,0\n\n\n0,1",
+ "2,1\n\n\n0,1",
+ {
+ "x": 0.25
+ },
+ "2,0\n\n\n0,0",
+ "2,1\n\n\n0,0",
+ {
+ "x": 0.5,
+ "w": 1.75
+ },
+ "2,2",
+ {
+ "c": "#cccccc"
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ {
+ "x": 1
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ "7,5",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "7,7\n\n\n4,0",
+ {
+ "c": "#aaaaaa"
+ },
+ "7,8\n\n\n5,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "7,6\n\n\n4,1",
+ {
+ "x": 2.75,
+ "c": "#aaaaaa"
+ },
+ "7,8\n\n\n5,1",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "7,8\n\n\n5,2"
+ ],
+ [
+ {
+ "d": true
+ },
+ "3,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "3,1\n\n\n0,2",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "3,0\n\n\n0,1",
+ "3,1\n\n\n0,1",
+ {
+ "x": 0.25
+ },
+ "3,0\n\n\n0,0",
+ "3,1\n\n\n0,0",
+ {
+ "x": 0.5,
+ "w": 2.25
+ },
+ "3,2\n\n\n1,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ {
+ "x": 1
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4\n\n\n6,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "8,6\n\n\n6,0",
+ "8,7\n\n\n6,0",
+ "8,8\n\n\n5,0",
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "8,4\n\n\n6,1",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "8,6\n\n\n6,1",
+ {
+ "x": 0.25
+ },
+ "8,8\n\n\n5,1",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "8,8\n\n\n5,2"
+ ],
+ [
+ {
+ "d": true
+ },
+ "4,0\n\n\n0,2",
+ {
+ "d": true
+ },
+ "4,1\n\n\n0,2",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "4,0\n\n\n0,1",
+ "4,1\n\n\n0,1",
+ {
+ "x": 0.25
+ },
+ "4,0\n\n\n0,0",
+ "4,1\n\n\n0,0",
+ {
+ "x": 0.5,
+ "w": 1.25
+ },
+ "4,2",
+ {
+ "w": 1.25
+ },
+ "4,3",
+ {
+ "w": 1.25
+ },
+ "4,4",
+ {
+ "w": 1.25
+ },
+ "4,5\n\n\n2,0",
+ {
+ "w": 2.25
+ },
+ "4,7\n\n\n2,0",
+ {
+ "x": 1,
+ "w": 2.75
+ },
+ "9,1\n\n\n8,0",
+ "9,2\n\n\n7,0",
+ "9,3\n\n\n7,0",
+ "9,4\n\n\n7,0",
+ "9,6\n\n\n7,0",
+ "9,7\n\n\n7,0",
+ "9,8\n\n\n5,0",
+ {
+ "x": 0.75,
+ "c": "#cccccc",
+ "w": 1.75
+ },
+ "8,4\n\n\n6,2",
+ {
+ "c": "#aaaaaa"
+ },
+ "8,6\n\n\n6,2",
+ "8,7\n\n\n6,2",
+ {
+ "x": 0.25
+ },
+ "9,8\n\n\n5,1",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "d": true
+ },
+ "9,8\n\n\n5,2"
+ ],
+ [
+ {
+ "x": 7,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "3,2\n\n\n1,1",
+ "3,3\n\n\n1,1",
+ {
+ "x": 1.5,
+ "w": 2.25
+ },
+ "4,5\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "4,7\n\n\n2,1",
+ {
+ "x": 1,
+ "w": 1.25
+ },
+ "9,0\n\n\n8,1",
+ {
+ "w": 1.5
+ },
+ "9,1\n\n\n8,1",
+ {
+ "w": 1.25
+ },
+ "9,2\n\n\n7,1",
+ {
+ "w": 1.25
+ },
+ "9,3\n\n\n7,1",
+ {
+ "x": 0.5
+ },
+ "9,6\n\n\n7,1",
+ "9,7\n\n\n7,1"
+ ],
+ [
+ {
+ "x": 10.75,
+ "w": 1.25
+ },
+ "4,5\n\n\n2,2",
+ "4,6\n\n\n2,2",
+ {
+ "w": 1.25
+ },
+ "4,7\n\n\n2,2",
+ {
+ "x": 3.75,
+ "w": 1.25
+ },
+ "9,2\n\n\n7,2",
+ {
+ "w": 1.25
+ },
+ "9,3\n\n\n7,2",
+ {
+ "w": 1.25
+ },
+ "9,6\n\n\n7,2",
+ {
+ "w": 1.25
+ },
+ "9,7\n\n\n7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h b/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h
new file mode 100644
index 0000000000..8c840039a7
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/config.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x71, 0xE4, 0x34, 0x62, 0x9C, 0x8E, 0x31, 0x68}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 7 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 7 }
+
+// Reduce the firmware size!
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c b/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..551208e87d
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/keymap.c
@@ -0,0 +1,42 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum custom_layer {
+ _BASE,
+ _FN1,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_65_with_macro(
+ KC_F1, KC_F2, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_65_with_macro(
+ _______, _______, QK_GESC, 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_BSPC, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [1] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD), ENCODER_CCW_CW(KC_MNXT, KC_MPRV) }
+};
+#endif
diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk b/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..ba9b0f3287
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/rules.mk
@@ -0,0 +1,26 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = yes
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+AVR_USE_MINIMAL_PRINTF = yes
+EXTRAKEY_ENABLE = yes
+
+# Reduce the firmware size:
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMBO_ENABLE = no
+COMMAND_ENABLE = no
+CONSOLE_ENABLE = no
+GRAVE_ESC_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+LEADER_ENABLE = no
+MAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
+RGB_MATRIX_ENABLE = no
+SPACE_CADET_ENABLE = no
+TAP_DANCE_ENABLE = no
+VIALRGB_ENABLE = no
diff --git a/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json b/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json
new file mode 100644
index 0000000000..a97d0feba4
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/keymaps/vial/vial.json
@@ -0,0 +1,292 @@
+{
+ "name": "Quefrency Rev. 5",
+ "vendorId": "0xCB10",
+ "productId": "0x5357",
+ "matrix": {
+ "rows": 10,
+ "cols": 9
+ },
+ "lighting": "qmk_rgblight",
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ [
+ "Left Macropad",
+ "Enabled",
+ "W/Encoder",
+ "No Macro"
+ ],
+ [
+ "Right Mods",
+ "6x1u",
+ "2x1.25u__3x1u"
+ ],
+ "Right Encoder"
+ ],
+ "keymap": [
+ [
+ {
+ "y": 1,
+ "x": 1.75
+ },
+ "0,0\n\n\n1,1\n\n\n\n\n\ne",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,1\n\n\n1,1\n\n\n\n\n\ne",
+ {
+ "x": 0.25,
+ "d": true
+ },
+ "\n\n\n1,0",
+ {
+ "d": true
+ },
+ "\n\n\n1,0",
+ {
+ "x": 16.5,
+ "c": "#cccccc",
+ "d": true
+ },
+ "\n\n\n3,0",
+ {
+ "d": true
+ },
+ "\n\n\n3,0",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n3,1\n\n\n\n\n\ne",
+ "1,1\n\n\n3,1\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 2.25,
+ "c": "#aaaaaa"
+ },
+ "0,0\n\n\n1,1",
+ "0,1\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n1,0",
+ "0,1\n\n\n1,0",
+ {
+ "x": 0.5,
+ "c": "#777777"
+ },
+ "0,2",
+ {
+ "c": "#cccccc"
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "5,7\n\n\n0,0",
+ "5,8",
+ {
+ "x": 0.5
+ },
+ "5,6\n\n\n0,1",
+ "5,7\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.25
+ },
+ "1,0\n\n\n1,1",
+ "1,1\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n1,0",
+ "1,1\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 1.5
+ },
+ "1,2",
+ {
+ "c": "#cccccc"
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ {
+ "x": 1
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ "6,6",
+ {
+ "w": 1.5
+ },
+ "6,7",
+ {
+ "c": "#aaaaaa"
+ },
+ "6,8"
+ ],
+ [
+ {
+ "x": 2.25
+ },
+ "2,0\n\n\n1,1",
+ "2,1\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "2,0\n\n\n1,0",
+ "2,1\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 1.75
+ },
+ "2,2",
+ {
+ "c": "#cccccc"
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ {
+ "x": 1
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ "7,5",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "7,7",
+ {
+ "c": "#aaaaaa"
+ },
+ "7,8"
+ ],
+ [
+ {
+ "x": 2.25
+ },
+ "3,0\n\n\n1,1",
+ "3,1\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "3,0\n\n\n1,0",
+ "3,1\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 2.25
+ },
+ "3,2",
+ {
+ "c": "#cccccc"
+ },
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ {
+ "x": 1
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "8,6",
+ "8,7",
+ "8,8"
+ ],
+ [
+ {
+ "x": 2.25
+ },
+ "4,0\n\n\n1,1",
+ "4,1\n\n\n1,1",
+ {
+ "x": 0.25
+ },
+ "4,0\n\n\n1,0",
+ "4,1\n\n\n1,0",
+ {
+ "x": 0.5,
+ "w": 1.25
+ },
+ "4,2",
+ {
+ "w": 1.25
+ },
+ "4,3",
+ {
+ "w": 1.25
+ },
+ "4,4",
+ {
+ "w": 1.25
+ },
+ "4,5",
+ {
+ "w": 2.25
+ },
+ "4,7",
+ {
+ "x": 1,
+ "w": 2.75
+ },
+ "9,1",
+ "9,2\n\n\n2,0",
+ "9,3\n\n\n2,0",
+ "9,4\n\n\n2,0",
+ "9,6",
+ "9,7",
+ "9,8"
+ ],
+ [
+ {
+ "x": 18,
+ "w": 1.25
+ },
+ "9,2\n\n\n2,1",
+ {
+ "w": 1.25
+ },
+ "9,3\n\n\n2,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h b/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h
new file mode 100644
index 0000000000..03fd626cc0
--- /dev/null
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xA4, 0x1E, 0xA5, 0x3C, 0xCC, 0x66, 0x08, 0xCD}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 9 }
+#define VIAL_UNLOCK_COMBO_COLS { 1, 7 }
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..2c494c08d5
--- /dev/null
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2023 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_92_iso(
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
+ _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ _______, 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_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_NUHS, KC_ENT, KC_HOME,
+ _______, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ _______, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_92_iso(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_92_iso(
+ KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_MUTE,
+ _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ _______, 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_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_NUHS, KC_ENT, KC_HOME,
+ _______, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ _______, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_92_iso(
+ RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk b/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..c4ca639d6c
--- /dev/null
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json b/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json
new file mode 100644
index 0000000000..0f332519ed
--- /dev/null
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/vial/vial.json
@@ -0,0 +1,312 @@
+{
+ "name": "Keychron Q11 ISO Knob",
+ "vendorId": "0x3434",
+ "productId": "0x01E1",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {
+ "name": "Mission Control",
+ "title": "Mission Control in macOS",
+ "shortName": "MCtrl"
+ },
+ {
+ "name": "Launch Pad",
+ "title": "Launch Pad in macOS",
+ "shortName": "LPad"
+ },
+ {
+ "name": "Left Option",
+ "title": "Left Option in macOS",
+ "shortName": "LOpt"
+ },
+ {
+ "name": "Right Option",
+ "title": "Right Option in macOS",
+ "shortName": "ROpt"
+ },
+ {
+ "name": "Left Cmd",
+ "title": "Left Command in macOS",
+ "shortName": "LCmd"
+ },
+ {
+ "name": "Right Cmd",
+ "title": "Right Command in macOS",
+ "shortName": "RCmd"
+ },
+ {
+ "name": "Siri",
+ "title": "Siri in macOS",
+ "shortName": "Siri"
+ },
+ {
+ "name": "Task View",
+ "title": "Task View in windows",
+ "shortName": "Task"
+ },
+ {
+ "name": "File Explorer",
+ "title": "File Explorer in windows",
+ "shortName": "File"
+ },
+ {
+ "name": "Screen Shot",
+ "title": "Screenshot in macOS",
+ "shortName": "SShot"
+ },
+ {
+ "name": "Cortana",
+ "title": "Cortana in windows",
+ "shortName": "Cortana"
+ }
+ ],
+ "matrix": {"rows": 12, "cols": 9},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 15
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "c": "#aaaaaa"
+ },
+ "0,0",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "0,1\nESC",
+ {
+ "c": "#cccccc"
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,6",
+ "0,7",
+ {
+ "x": 0.75
+ },
+ "6,0",
+ "6,1",
+ {
+ "c": "#cccccc"
+ },
+ "6,2",
+ "6,3",
+ "6,4",
+ "6,5",
+ {
+ "c": "#aaaaaa"
+ },
+ "6,6",
+ "6,7",
+ {
+ "x": 0.25
+ },
+ "6,8"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "x": 0.25
+ },
+ "1,1",
+ {
+ "c": "#cccccc"
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ {
+ "x": 0.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4",
+ "7,5",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "7,6",
+ {
+ "x": 0.25
+ },
+ "7,8"
+ ],
+ [
+ "2,0",
+ {
+ "x": 0.25,
+ "w": 1.5
+ },
+ "2,1",
+ {
+ "c": "#cccccc"
+ },
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,6",
+ "2,7",
+ {
+ "x": 0.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6",
+ {
+ "x": 0.25,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "8,7",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "8,8"
+ ],
+ [
+ "3,0",
+ {
+ "x": 0.25,
+ "w": 1.75
+ },
+ "3,1",
+ {
+ "c": "#cccccc"
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 0.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ {
+ "c": "#aaaaaa"
+ },
+ "9,7",
+ {
+ "x": 1.5
+ },
+ "9,8"
+ ],
+ [
+ "4,0",
+ {
+ "x": 0.25,
+ "w": 1.25
+ },
+ "4,1",
+ "4,2",
+ {
+ "c": "#cccccc"
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ {
+ "x": 0.75
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "10,5",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "10,7"
+ ],
+ [
+ {
+ "c": "#aaaaaa"
+ },
+ "5,0",
+ {
+ "x": 0.25,
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "w": 1.25
+ },
+ "5,3",
+ {
+ "w": 1.25
+ },
+ "5,4",
+ {
+ "w": 2.25
+ },
+ "5,6",
+ {
+ "x": 0.75,
+ "w": 2.75
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "11,6",
+ "11,7",
+ "11,8"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h
new file mode 100755
index 0000000000..883f67b460
--- /dev/null
+++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/config.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x0F, 0x8A, 0x08, 0x8B, 0x22, 0x25, 0xAA, 0xA8}
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// ~ + BACKSPACE = UNLOCK
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 0 }
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+#define RGBLIGHT_SLEEP // enable rgblight_suspend() and rgblight_wakeup() in keymap.c
+#define RGBLIGHT_TIMEOUT 600000 // ms to wait until rgblight time out, 600K ms is 10min.
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c
new file mode 100755
index 0000000000..4dc473b3b9
--- /dev/null
+++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _ADJUST
+};
+
+// Fillers to make layering more clear
+#define EISU LALT(KC_GRV)
+#define ADJUST MO(_ADJUST)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / | Shift| Up | Shift|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | EISU | Space| Space| | Space| Space| Alt |Adjust| Ctrl | Left | Down | Right|
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ 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_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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ADJUST, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, ADJUST, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Adjust
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | TOG | HUI | SAI | VAI | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | MOD | HUD | SAD | VAD | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+static uint32_t key_timer; // timer for last keyboard activity, use 32bit value and function to make longer idle time possible
+static void refresh_rgb(void); // refreshes the activity timer and RGB, invoke whenever any activity happens
+static void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout
+bool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean
+
+void refresh_rgb(void) {
+ key_timer = timer_read32(); // store time of last refresh
+ if (is_rgb_timeout)
+ {
+ is_rgb_timeout = false;
+ rgblight_wakeup();
+ }
+}
+void check_rgb_timeout(void) {
+ if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed
+ {
+ rgblight_suspend();
+ is_rgb_timeout = true;
+ }
+}
+/* Then, call the above functions from QMK's built in post processing functions like so */
+/* Runs at the end of each scan loop, check if RGB timeout has occured or not */
+void housekeeping_task_user(void) {
+#ifdef RGBLIGHT_TIMEOUT
+ check_rgb_timeout();
+#endif
+}
+/* Runs after each key press, check if activity occurred */
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef RGBLIGHT_TIMEOUT
+ if (record->event.pressed)
+ refresh_rgb();
+#endif
+}
+/* Runs after each encoder tick, check if activity occurred */
+void post_encoder_update_user(uint8_t index, bool clockwise) {
+#ifdef RGBLIGHT_TIMEOUT
+ refresh_rgb();
+#endif
+}
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk
new file mode 100755
index 0000000000..c0d44423f3
--- /dev/null
+++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/rules.mk
@@ -0,0 +1,13 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+RGBLIGHT_ENABLE = yes
+
+CONSOLE_ENABLE = yes
+QMK_SETTINGS = yes
+
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+
+CONVERT_TO = promicro_rp2040
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json
new file mode 100755
index 0000000000..f8349f2ba2
--- /dev/null
+++ b/keyboards/omkbd/runner3680/5x6_5x8/keymaps/vial/vial.json
@@ -0,0 +1,20 @@
+{
+ "name": "runner3680 5x6+5x8",
+ "vendorId": "0x3680",
+ "productId": "0x5658",
+ "firmwareVersion": "0.0.5",
+ "lighting": "qmk_rgblight",
+ "matrix": {
+ "rows": 10,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap": [
+ [{"c":"#777777"},"0,2",{"c":"#cccccc"},"0,3","0,4","0,5","0,6","0,7",{"x":0.75},"5,7","5,6","5,5","5,4","5,3",{"c":"#aaaaaa"},"5,2","5,1","5,0"],
+ ["1,2","1,3",{"c":"#cccccc"},"1,4","1,5","1,6","1,7",{"x":0.75},"6,7","6,6","6,5","6,4","6,3",{"c":"#aaaaaa"},"6,2","6,1","6,0"],
+ ["2,2","2,3",{"c":"#cccccc"},"2,4","2,5","2,6","2,7",{"x":0.75},"7,7","7,6","7,5","7,4",{"c":"#aaaaaa"},"7,3","7,2",{"c":"#777777"},"7,1","7,0"],
+ [{"c":"#aaaaaa"},"3,2","3,3",{"c":"#cccccc"},"3,4","3,5","3,6","3,7",{"x":0.75},"8,7","8,6",{"c":"#aaaaaa"},"8,5","8,4","8,3","8,2","8,1","8,0"],
+ ["4,2","4,3","4,4","4,5","4,6","4,7",{"x":0.75},"9,7","9,6","9,5","9,4","9,3","9,2","9,1","9,0"]
+ ]
+ }
+}
diff --git a/keyboards/piantoruv44/config.h b/keyboards/piantoruv44/config.h
new file mode 100644
index 0000000000..e6ba4c0be9
--- /dev/null
+++ b/keyboards/piantoruv44/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 beekeeb
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
diff --git a/keyboards/piantoruv44/keyboard.json b/keyboards/piantoruv44/keyboard.json
new file mode 100644
index 0000000000..e2374dca6d
--- /dev/null
+++ b/keyboards/piantoruv44/keyboard.json
@@ -0,0 +1,98 @@
+{
+ "manufacturer": "azhizhinov",
+ "keyboard_name": "PIANTORUV44",
+ "maintainer": "azhizhinov",
+ "bootloader": "rp2040",
+ "bootmagic": {
+ "matrix": [0, 5]
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["GP5", "GP4", "GP11", "GP15", "GP3", "GP2"],
+ ["GP22", "GP20", "GP10", "GP14", "GP9", "GP8"],
+ ["GP21", "GP19", "GP6", "GP7", "GP13", "GP12"],
+ ["GP17", "GP18", "GP16", "GP26", null, null]
+ ]
+ },
+ "processor": "RP2040",
+ "split": {
+ "enabled": true,
+ "matrix_pins": {
+ "right": {
+ "direct": [
+ ["GP2", "GP3", "GP15", "GP11", "GP4", "GP5"],
+ ["GP8", "GP9", "GP14", "GP10", "GP20", "GP22"],
+ ["GP12", "GP13", "GP7", "GP6", "GP19", "GP21"],
+ ["GP26", "GP16", "GP18", "GP17", null, null]
+ ]
+ }
+ },
+ "serial": {
+ "driver": "vendor"
+ }
+ },
+ "url": "https://github.com/azhizhinov/PIANTORUV44",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0004",
+ "vid": "0x415A"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.125},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0.125},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [4, 0], "x": 8, "y": 0.25},
+ {"matrix": [4, 1], "x": 9, "y": 0.125},
+ {"matrix": [4, 2], "x": 10, "y": 0},
+ {"matrix": [4, 3], "x": 11, "y": 0.125},
+ {"matrix": [4, 4], "x": 12, "y": 0.25},
+ {"matrix": [4, 5], "x": 13, "y": 0.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.125},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1.125},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [5, 0], "x": 8, "y": 1.25},
+ {"matrix": [5, 1], "x": 9, "y": 1.125},
+ {"matrix": [5, 2], "x": 10, "y": 1},
+ {"matrix": [5, 3], "x": 11, "y": 1.125},
+ {"matrix": [5, 4], "x": 12, "y": 1.25},
+ {"matrix": [5, 5], "x": 13, "y": 1.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25},
+ {"matrix": [2, 1], "x": 1, "y": 2.25},
+ {"matrix": [2, 2], "x": 2, "y": 2.125},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2.125},
+ {"matrix": [2, 5], "x": 5, "y": 2.25},
+ {"matrix": [6, 0], "x": 8, "y": 2.25},
+ {"matrix": [6, 1], "x": 9, "y": 2.125},
+ {"matrix": [6, 2], "x": 10, "y": 2},
+ {"matrix": [6, 3], "x": 11, "y": 2.125},
+ {"matrix": [6, 4], "x": 12, "y": 2.25},
+ {"matrix": [6, 5], "x": 13, "y": 2.25},
+ {"matrix": [3, 0], "x": 2.5, "y": 3},
+ {"matrix": [3, 1], "x": 3.5, "y": 3.25},
+ {"matrix": [3, 2], "x": 4.5, "y": 3.5},
+ {"matrix": [3, 3], "x": 5.5, "y": 3.75},
+ {"matrix": [7, 0], "x": 7.5, "y": 3.75},
+ {"matrix": [7, 1], "x": 8.5, "y": 3.5},
+ {"matrix": [7, 2], "x": 9.5, "y": 3.25},
+ {"matrix": [7, 3], "x": 10.5, "y": 3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/piantoruv44/keymaps/default/keymap.c b/keyboards/piantoruv44/keymaps/default/keymap.c
new file mode 100644
index 0000000000..49d5e4d178
--- /dev/null
+++ b/keyboards/piantoruv44/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+// Copyright 2021 azhizhinov (@azhizhinov)
+// SPDX-License-Identifier: GPL-2.0-or-late
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
+ KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC)
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO,
+ KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT,
+ KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC)
+ ),
+ [2] = 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_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT,
+ KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC)
+ ),
+ [3] = LAYOUT(
+ KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT,
+ KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC)
+ )
+};
diff --git a/keyboards/piantoruv44/keymaps/vial/config.h b/keyboards/piantoruv44/keymaps/vial/config.h
new file mode 100644
index 0000000000..b7db2cad07
--- /dev/null
+++ b/keyboards/piantoruv44/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* keyboard uid */
+#define VIAL_KEYBOARD_UID {0x09, 0xA9, 0x7F, 0x52, 0x09, 0x0A, 0xAA, 0x6F}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
+
+/* default layer count */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+
diff --git a/keyboards/piantoruv44/keymaps/vial/keymap.c b/keyboards/piantoruv44/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..49d5e4d178
--- /dev/null
+++ b/keyboards/piantoruv44/keymaps/vial/keymap.c
@@ -0,0 +1,30 @@
+// Copyright 2021 azhizhinov (@azhizhinov)
+// SPDX-License-Identifier: GPL-2.0-or-late
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
+ KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC)
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO,
+ KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT,
+ KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC)
+ ),
+ [2] = 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_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT,
+ KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC)
+ ),
+ [3] = LAYOUT(
+ KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT,
+ KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC)
+ )
+};
diff --git a/keyboards/piantoruv44/keymaps/vial/rules.mk b/keyboards/piantoruv44/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..5655f43ca2
--- /dev/null
+++ b/keyboards/piantoruv44/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
diff --git a/keyboards/piantoruv44/keymaps/vial/vial.json b/keyboards/piantoruv44/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6c52f244a3
--- /dev/null
+++ b/keyboards/piantoruv44/keymaps/vial/vial.json
@@ -0,0 +1,233 @@
+{
+ "name": "piantoruv44",
+ "lighting": "none",
+ "vendorId": "0x415A",
+ "productId": "0x0004",
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ {
+ "x": 8.25
+ },
+ "4,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "0,2",
+ {
+ "x": 1
+ },
+ "0,4",
+ {
+ "x": 6.25
+ },
+ "4,1",
+ {
+ "x": 1
+ },
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.9,
+ "x": 5
+ },
+ "0,5",
+ {
+ "x": 4.25
+ },
+ "4,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 1
+ },
+ "1,3",
+ {
+ "x": 8.25
+ },
+ "5,2",
+ {
+ "x": 1
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "1,2",
+ {
+ "x": 1,
+ "n": true
+ },
+ "1,4",
+ {
+ "x": 6.25,
+ "n": true
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 5
+ },
+ "1,5",
+ {
+ "x": 4.25
+ },
+ "5,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 1
+ },
+ "2,3",
+ {
+ "x": 8.25
+ },
+ "6,2",
+ {
+ "x": 1
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 2
+ },
+ "2,2",
+ {
+ "x": 1
+ },
+ "2,4",
+ {
+ "x": 6.25
+ },
+ "6,1",
+ {
+ "x": 1
+ },
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.8999999999999999,
+ "x": 5
+ },
+ "2,5",
+ {
+ "x": 4.25
+ },
+ "6,0"
+ ],
+ [
+ {
+ "y": -0.3500000000000001
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ {
+ "x": 0.25
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+],
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0,3], "x": 3, "y": 0},
+ {"matrix": [4,2], "x": 12.25, "y": 0},
+ {"matrix": [0,2], "x": 2, "y": 0.25},
+ {"matrix": [0,4], "x": 4, "y": 0.25},
+ {"matrix": [4,1], "x": 11.25, "y": 0.25},
+ {"matrix": [4,3], "x": 13.25, "y": 0.25},
+ {"matrix": [0,5], "x": 5, "y": 0.35},
+ {"matrix": [4,0], "x": 10.25, "y": 0.35},
+ {"matrix": [0,0], "x": 0, "y": 1.0},
+ {"matrix": [0,1], "x": 1, "y": 1.0},
+ {"matrix": [1,3], "x": 3, "y": 1.0},
+ {"matrix": [5,2], "x": 12.25, "y": 1.0},
+ {"matrix": [4,4], "x": 14.25, "y": 1.0},
+ {"matrix": [4,5], "x": 15.25, "y": 1.0},
+ {"matrix": [1,2], "x": 2, "y": 1.25},
+ {"matrix": [1,4], "x": 4, "y": 1.25},
+ {"matrix": [5,1], "x": 11.25, "y": 1.25},
+ {"matrix": [5,3], "x": 13.25, "y": 1.25},
+ {"matrix": [1,5], "x": 5, "y": 1.35},
+ {"matrix": [5,0], "x": 10.25, "y": 1.35},
+ {"matrix": [1,0], "x": 0, "y": 2.0},
+ {"matrix": [1,1], "x": 1, "y": 2.0},
+ {"matrix": [2,3], "x": 3, "y": 2.0},
+ {"matrix": [6,2], "x": 12.25, "y": 2.0},
+ {"matrix": [5,4], "x": 14.25, "y": 2.0},
+ {"matrix": [5,5], "x": 15.25, "y": 2.0},
+ {"matrix": [2,2], "x": 2, "y": 2.25},
+ {"matrix": [2,4], "x": 4, "y": 2.25},
+ {"matrix": [6,1], "x": 11.25, "y": 2.25},
+ {"matrix": [6,3], "x": 13.25, "y": 2.25},
+ {"matrix": [2,5], "x": 5, "y": 2.35},
+ {"matrix": [6,0], "x": 10.25, "y": 2.35},
+ {"matrix": [2,0], "x": 0, "y": 3.0},
+ {"matrix": [2,1], "x": 1, "y": 3.0},
+ {"matrix": [6,4], "x": 14.25, "y": 3.0},
+ {"matrix": [6,5], "x": 15.25, "y": 3.0},
+ {"matrix": [3,0], "x": 4, "y": 3.5},
+ {"matrix": [3,1], "x": 5, "y": 3.5},
+ {"matrix": [3,2], "x": 6, "y": 3.5},
+ {"matrix": [3,3], "x": 7, "y": 3.5},
+ {"matrix": [7,0], "x": 8.25, "y": 3.5},
+ {"matrix": [7,1], "x": 9.25, "y": 3.5},
+ {"matrix": [7,2], "x": 10.25, "y": 3.5},
+ {"matrix": [7,3], "x": 11.25, "y": 3.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/piantoruv44/readme.md b/keyboards/piantoruv44/readme.md
new file mode 100644
index 0000000000..0fe5fe2d0c
--- /dev/null
+++ b/keyboards/piantoruv44/readme.md
@@ -0,0 +1,27 @@
+# Piantor UV 44
+
+
+
+PiantorUV44 is a Piantor/Cantor fork with Raspberry Pi Pico, hybrid hotswap socket and soldered-in switches support and flippable PCB.
+
+* Keyboard Maintainer: [azhizhinov](https://github.com/azhizhinov)
+* Hardware Supported: RP2040
+* Hardware Availability: https://github.com/azhizhinov/PIANTORUV44
+
+Make example for this keyboard (after setting up your build environment):
+
+ make piantoruv44:default
+
+Flashing example for this keyboard:
+
+ make piantoruv44:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Hold the `BOOT` button on the Pico and press the `RST` button on the Pico, release the the `RST` button before the `BOOT` button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
+Once you enter the bootloader, the keyboard will show up as a USB device on your computer, you could drag and drop a firmware file to flash it, but I recommend using the flash commands for the respective side.
diff --git a/keyboards/planck/light/keymaps/vial/config.h b/keyboards/planck/light/keymaps/vial/config.h
new file mode 100644
index 0000000000..b27aa499b7
--- /dev/null
+++ b/keyboards/planck/light/keymaps/vial/config.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+# define STARTUP_SONG SONG(PLANCK_SOUND)
+// #define STARTUP_SONG SONG(NO_SOUND)
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 2
+
+#define VIAL_KEYBOARD_UID {0x7B, 0xA5, 0x7F, 0x5C, 0x13, 0x4C, 0x8D, 0x69}
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
+
+// Unlock combo is set to 'Escape' + 'Space'
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/planck/light/keymaps/vial/keymap.c b/keyboards/planck/light/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..02636b3a4b
--- /dev/null
+++ b/keyboards/planck/light/keymaps/vial/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2015-2017 Jack Humbert
+ * Updated 2020 mixedfeelings
+ *
+ * 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] = {
+
+ /* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_ortho_4x12 (
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_SENT,
+ KC_NO, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | |Adjust| Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_ortho_4x12 (
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+ /* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | |Adjust| | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_ortho_4x12 (
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+
+ /* Utility
+ * ,-----------------------------------------------------------------------------------.
+ * | |Boot | | | | | | | | | |Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [3] = LAYOUT_ortho_4x12 (
+ KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/planck/light/keymaps/vial/rules.mk b/keyboards/planck/light/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..9dbbcc4c49
--- /dev/null
+++ b/keyboards/planck/light/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIALRGB_ENABLE = yes
+LTO_ENABLE = yes
+
+# Not enough USB endpoints
+CONSOLE_ENABLE = no
diff --git a/keyboards/planck/light/keymaps/vial/vial.json b/keyboards/planck/light/keymaps/vial/vial.json
new file mode 100644
index 0000000000..3aec27f989
--- /dev/null
+++ b/keyboards/planck/light/keymaps/vial/vial.json
@@ -0,0 +1,81 @@
+{
+ "name": "OLKB Planck Light",
+ "lighting": "vialrgb",
+ "matrix": {"rows": 4, "cols": 12},
+ "layouts": {
+ "labels": [["Layout", "MIT (1x2u)", "Grid (2x1u)"]],
+ "keymap": [
+ [
+ {"c":"#aaaaaa"},
+ "0,0",
+ {"c":"#cccccc"},
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ "0,10",
+ {"c":"#aaaaaa"},
+ "0,11"
+ ],
+ [
+ "1,0",
+ {"c":"#cccccc"},
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ {"c":"#aaaaaa"},
+ "1,11"
+ ],
+ [
+ "2,0",
+ {"c":"#cccccc"},
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ {"c":"#aaaaaa"},
+ "2,11"
+ ],
+ [
+ "3,0",
+ "3,1",
+ "3,2",
+ "3,3",
+ {"c":"#777777"},
+ "3,4",
+ {"c":"#cccccc","w":2},
+ "3,5\n\n\n0,0",
+ {"c":"#777777"},
+ "3,7",
+ {"c":"#aaaaaa"},
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11"
+ ],
+ [
+ {"y":0.25,"x":5,"c":"#cccccc"},
+ "3,5\n\n\n0,1",
+ "3,6\n\n\n0,1"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/werk_technica/one/keymaps/vial/config.h b/keyboards/werk_technica/one/keymaps/vial/config.h
new file mode 100644
index 0000000000..e3665e6002
--- /dev/null
+++ b/keyboards/werk_technica/one/keymaps/vial/config.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x44, 0xF1, 0x06, 0xC9, 0x51, 0x2B, 0x4F, 0x2F}
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
\ No newline at end of file
diff --git a/keyboards/werk_technica/one/keymaps/vial/keymap.c b/keyboards/werk_technica/one/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..6d172db617
--- /dev/null
+++ b/keyboards/werk_technica/one/keymaps/vial/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2023 Moritz Plattner
+ *
+ * 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( /* keymap for layer 0 */
+ 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, LT(2, KC_MUTE),
+ 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_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_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, LT(1, KC_APP), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all( /* keymap for layer 1 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all( /* keymap for layer 2 */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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) },
+ [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+};
+#endif
diff --git a/keyboards/werk_technica/one/keymaps/vial/rules.mk b/keyboards/werk_technica/one/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..6da3d729f1
--- /dev/null
+++ b/keyboards/werk_technica/one/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+ENCODER_MAP_ENABLE = yes
+
+# VIAL support: https://get.vial.today/docs/porting-to-vial.html
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/werk_technica/one/keymaps/vial/vial.json b/keyboards/werk_technica/one/keymaps/vial/vial.json
new file mode 100644
index 0000000000..f47dce8672
--- /dev/null
+++ b/keyboards/werk_technica/one/keymaps/vial/vial.json
@@ -0,0 +1,359 @@
+{
+ "name": "werk.technica's One",
+ "vendorId": "0x7774",
+ "productId": "0x0001",
+ "matrix": {
+ "rows": 6,
+ "cols": 15
+ },
+ "layouts": {
+ "labels": [
+ "Split Backspace",
+ "ISO Enter",
+ "Split Left Shift",
+ [
+ "Bottom Row",
+ "6.25u Regular",
+ "6u Tsangan",
+ "Split 2.75/1.25/2.25",
+ "Split 2.25/1.25/2.75"
+ ],
+ "Encoder"
+ ],
+ "keymap": [
+ [
+ {
+ "x": 2.75,
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,13",
+ {
+ "x": 0.25,
+ "d": true
+ },
+ "\n\n\n4,0",
+ {
+ "x": 0.75
+ },
+ "3,13\n\n\n4,1\n\n\n\n\n\ne0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.75,
+ "c": "#cccccc"
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "0,14\n\n\n0,0",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ {
+ "x": 0.75,
+ "c": "#cccccc"
+ },
+ "1,13\n\n\n0,1",
+ {
+ "c": "#aaaaaa"
+ },
+ "0,14\n\n\n0,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "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\n\n\n1,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "2,14",
+ {
+ "x": 1.5,
+ "c": "#777777",
+ "w": 1.25,
+ "h": 2,
+ "w2": 1.5,
+ "h2": 1,
+ "x2": -0.25
+ },
+ "2,13\n\n\n1,1"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "n": true
+ },
+ "3,5",
+ "3,6",
+ "3,7",
+ {
+ "n": true
+ },
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,12\n\n\n1,0",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "3,14",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "3,12\n\n\n1,1"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "4,0\n\n\n2,1",
+ {
+ "c": "#cccccc"
+ },
+ "4,1\n\n\n2,1",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0\n\n\n2,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,12"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 17,
+ "c": "#cccccc"
+ },
+ "4,13"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n3,0",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n3,0",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n3,0",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6\n\n\n3,0",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,10",
+ {
+ "w": 1.5
+ },
+ "5,11"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 16,
+ "c": "#cccccc"
+ },
+ "5,12",
+ "5,13",
+ "5,14"
+ ],
+ [
+ {
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "5,0\n\n\n3,1",
+ "5,1\n\n\n3,1",
+ {
+ "w": 1.5
+ },
+ "5,2\n\n\n3,1",
+ {
+ "c": "#cccccc",
+ "w": 6
+ },
+ "5,6\n\n\n3,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n3,2",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n3,2",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n3,2",
+ {
+ "c": "#cccccc",
+ "w": 2.75
+ },
+ "5,4\n\n\n3,2",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,6\n\n\n3,2",
+ {
+ "c": "#cccccc",
+ "w": 2.25
+ },
+ "5,8\n\n\n3,2"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 2.75,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0\n\n\n3,3",
+ {
+ "w": 1.25
+ },
+ "5,1\n\n\n3,3",
+ {
+ "w": 1.25
+ },
+ "5,2\n\n\n3,3",
+ {
+ "c": "#cccccc",
+ "w": 2.25
+ },
+ "5,4\n\n\n3,3",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,6\n\n\n3,3",
+ {
+ "c": "#cccccc",
+ "w": 2.75
+ },
+ "5,8\n\n\n3,3"
+ ]
+ ]
+ }
+ }
\ No newline at end of file