Browse Source

[Keyboard] Add Mithril (#26212)

Javier San Félix 1 week ago
parent
commit
a53ce75641

+ 6 - 0
keyboards/mithril/config.h

@@ -0,0 +1,6 @@
+// Copyright 2024 sanfeps (@sanfeps)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define EE_HANDS

+ 82 - 0
keyboards/mithril/info.json

@@ -0,0 +1,82 @@
+{
+    "manufacturer": "sanfeps",
+    "maintainer": "sanfeps",
+    "build": {
+        "lto": true
+    },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgb_matrix": true
+    },
+    "rgb_matrix": {
+        "driver": "ws2812",
+        "max_brightness": 120
+    },
+    "url": "https://github.com/sanfeps/mithril_kb",
+    "usb": {
+        "vid": "0x8371"
+    },
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0},
+                {"matrix": [0, 1], "x": 1, "y": 0},
+                {"matrix": [0, 2], "x": 2, "y": 0},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0},
+                {"matrix": [0, 5], "x": 5, "y": 0},
+                {"matrix": [5, 5], "x": 9, "y": 0},
+                {"matrix": [5, 4], "x": 10, "y": 0},
+                {"matrix": [5, 3], "x": 11, "y": 0},
+                {"matrix": [5, 2], "x": 12, "y": 0},
+                {"matrix": [5, 1], "x": 13, "y": 0},
+                {"matrix": [5, 0], "x": 14, "y": 0},
+                {"matrix": [1, 0], "x": 0, "y": 1},
+                {"matrix": [1, 1], "x": 1, "y": 1},
+                {"matrix": [1, 2], "x": 2, "y": 1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1},
+                {"matrix": [1, 5], "x": 5, "y": 1},
+                {"matrix": [6, 5], "x": 9, "y": 1},
+                {"matrix": [6, 4], "x": 10, "y": 1},
+                {"matrix": [6, 3], "x": 11, "y": 1},
+                {"matrix": [6, 2], "x": 12, "y": 1},
+                {"matrix": [6, 1], "x": 13, "y": 1},
+                {"matrix": [6, 0], "x": 14, "y": 1},
+                {"matrix": [2, 0], "x": 0, "y": 2},
+                {"matrix": [2, 1], "x": 1, "y": 2},
+                {"matrix": [2, 2], "x": 2, "y": 2},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2},
+                {"matrix": [2, 5], "x": 5, "y": 2},
+                {"matrix": [7, 5], "x": 9, "y": 2},
+                {"matrix": [7, 4], "x": 10, "y": 2},
+                {"matrix": [7, 3], "x": 11, "y": 2},
+                {"matrix": [7, 2], "x": 12, "y": 2},
+                {"matrix": [7, 1], "x": 13, "y": 2},
+                {"matrix": [7, 0], "x": 14, "y": 2},
+                {"matrix": [3, 0], "x": 0, "y": 3},
+                {"matrix": [3, 1], "x": 1, "y": 3},
+                {"matrix": [3, 2], "x": 2, "y": 3},
+                {"matrix": [3, 3], "x": 3, "y": 3},
+                {"matrix": [3, 4], "x": 4, "y": 3},
+                {"matrix": [3, 5], "x": 5, "y": 3},
+                {"matrix": [8, 5], "x": 9, "y": 3},
+                {"matrix": [8, 4], "x": 10, "y": 3},
+                {"matrix": [8, 3], "x": 11, "y": 3},
+                {"matrix": [8, 2], "x": 12, "y": 3},
+                {"matrix": [8, 1], "x": 13, "y": 3},
+                {"matrix": [8, 0], "x": 14, "y": 3},
+                {"matrix": [4, 4], "x": 3, "y": 4},
+                {"matrix": [4, 5], "x": 4, "y": 4},
+                {"matrix": [4, 6], "x": 5, "y": 4},
+                {"matrix": [9, 6], "x": 9, "y": 4},
+                {"matrix": [9, 5], "x": 10, "y": 4},
+                {"matrix": [9, 4], "x": 11, "y": 4}
+            ]
+        }
+    }
+}

+ 30 - 0
keyboards/mithril/keymaps/default/keymap.c

@@ -0,0 +1,30 @@
+// Copyright 2024 sanfeps (@sanfeps)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT(
+        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                KC_6,    KC_7,    KC_8,    KC_9,     KC_0,    KC_MINS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                                KC_Y,    KC_U,    KC_I,    KC_O,     KC_P,    KC_BSLS,
+        KC_LSFT, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                                KC_H,    KC_J,    KC_K,    KC_L,     KC_SCLN, KC_QUOT,
+        KC_LCTL, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                                KC_N,    KC_M,    KC_COMM, KC_DOT,   KC_SLSH, KC_EQL,
+                                            KC_LALT, KC_BSPC, MO(1),              KC_ENT, KC_SPC,  KC_RGUI
+    ),
+
+    [1] = LAYOUT(
+        KC_F12,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                               KC_F6,   KC_F7,   KC_F8,   KC_F9,    KC_F10,  KC_F11,
+        KC_TAB,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, KC_LBRC, KC_RBRC, KC_PLUS,  XXXXXXX, KC_GRV,
+        _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, XXXXXXX, XXXXXXX,
+        _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, KC_DEL,
+                                            XXXXXXX, XXXXXXX, _______,            MO(2),  KC_ENT,  XXXXXXX
+    ),
+
+    [2] = LAYOUT(
+        RM_TOGG, RM_PREV, RM_NEXT, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,
+        XXXXXXX, RM_SPDD, RM_SPDU, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             RM_HUED, RM_VALD, RM_VALU, RM_HUEU,  XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, RM_SATD, RM_SATU, XXXXXXX,  XXXXXXX, QK_BOOT,
+                                            XXXXXXX, XXXXXXX, XXXXXXX,            _______, XXXXXXX, XXXXXXX
+    ),
+};

+ 93 - 0
keyboards/mithril/keymaps/sanfeps/keymap.c

@@ -0,0 +1,93 @@
+// Copyright 2024 sanfeps (@sanfeps)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_spanish.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /*
+     * Layer 0 — Base (Spanish)
+     * ┌─────┬─────┬─────┬─────┬─────┬─────┐         ┌─────┬─────┬─────┬─────┬─────┬─────┐
+     * │ ESC │  1  │  2  │  3  │  4  │  5  │         │  6  │  7  │  8  │  9  │  0  │ ?/¿ │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │ TAB │  Q  │  W  │  E  │  R  │  T  │         │  Y  │  U  │  I  │  O  │  P  │ !/¡ │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │LSFT │  A  │  S  │  D  │  F  │  G  │         │  H  │  J  │  K  │  L  │  Ñ  │ @/| │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │LALT │  Z  │  X  │  C  │  V  │  B  │         │  N  │  M  │  ,  │  .  │ -/_ │ #/~ │
+     * └─────┴─────┴─────┴─────┴─────┴─────┘         └─────┴─────┴─────┴─────┴─────┴─────┘
+     *                   │LGUI │BSPC │MO(1)│         │ ENT │ SPC │RCTL │
+     *                   └─────┴─────┴─────┘         └─────┴─────┴─────┘
+     */
+    [0] = LAYOUT(
+        KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                KC_6,    KC_7,    KC_8,    KC_9,     KC_0,    ES_QUES,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                                KC_Y,    KC_U,    KC_I,    KC_O,     KC_P,    ES_EXLM,
+        KC_LSFT, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                                KC_H,    KC_J,    KC_K,    KC_L,     ES_NTIL, ES_AT,
+        KC_LALT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                                KC_N,    KC_M,    KC_COMM, KC_DOT,   ES_MINS, ES_HASH,
+                                            KC_LGUI, KC_BSPC, MO(1),              KC_ENT, KC_SPC,  KC_RCTL
+    ),
+
+    /*
+     * Layer 1 — Symbols / Function / Nav
+     * ┌─────┬─────┬─────┬─────┬─────┬─────┐         ┌─────┬─────┬─────┬─────┬─────┬─────┐
+     * │ F12 │ F1  │ F2  │ F3  │ F4  │ F5  │         │ F6  │ F7  │ F8  │ F9  │ F10 │ F11 │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │ TAB │     │     │     │     │     │         │     │ {/[ │ }/] │ + * │     │  `  │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │ ___ │     │     │     │     │     │         │  ←  │  ↓  │  ↑  │  →  │     │  ´  │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │ ___ │     │     │     │     │     │         │     │  '  │  <  │     │     │ DEL │
+     * └─────┴─────┴─────┴─────┴─────┴─────┘         └─────┴─────┴─────┴─────┴─────┴─────┘
+     *                   │     │     │ ___ │         │MO(2)│ ENT │     │
+     *                   └─────┴─────┴─────┘         └─────┴─────┴─────┘
+     */
+    [1] = LAYOUT(
+        KC_F12,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                               KC_F6,   KC_F7,   KC_F8,   KC_F9,    KC_F10,  KC_F11,
+        KC_TAB,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, ES_LCBR, ES_RCBR, ES_PLUS,  XXXXXXX, ES_GRV,
+        _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, XXXXXXX, ES_ACUT,
+        _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, ES_QUOT, ES_LABK, XXXXXXX,  XXXXXXX, KC_DEL,
+                                            XXXXXXX, XXXXXXX, _______,            MO(2),  KC_ENT,  XXXXXXX
+    ),
+
+    /*
+     * Layer 2 — RGB control
+     * ┌─────┬─────┬─────┬─────┬─────┬─────┐         ┌─────┬─────┬─────┬─────┬─────┬─────┐
+     * │TOGG │PREV │NEXT │     │     │     │         │     │     │     │     │     │     │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │     │SPD↓ │SPD↑ │     │     │     │         │     │     │     │     │     │     │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │     │     │     │     │     │     │         │HUE↓ │VAL↓ │VAL↑ │HUE↑ │     │     │
+     * ├─────┼─────┼─────┼─────┼─────┼─────┤         ├─────┼─────┼─────┼─────┼─────┼─────┤
+     * │     │     │     │     │     │     │         │     │SAT↓ │SAT↑ │     │     │BOOT │
+     * └─────┴─────┴─────┴─────┴─────┴─────┘         └─────┴─────┴─────┴─────┴─────┴─────┘
+     *                   │     │     │     │         │ ___ │     │     │
+     *                   └─────┴─────┴─────┘         └─────┴─────┴─────┘
+     */
+    [2] = LAYOUT(
+        RM_TOGG, RM_PREV, RM_NEXT, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,
+        XXXXXXX, RM_SPDD, RM_SPDU, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             RM_HUED, RM_VALD, RM_VALU, RM_HUEU,  XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, RM_SATD, RM_SATU, XXXXXXX,  XXXXXXX, QK_BOOT,
+                                            XXXXXXX, XXXXXXX, XXXXXXX,            _______, XXXXXXX, XXXXXXX
+    ),
+};
+
+// Shifted-key overrides for the Spanish layout.
+// Pressing the key gives the first symbol; holding Shift gives the second.
+const key_override_t ques_to_ique = ko_make_basic(MOD_MASK_SHIFT, ES_QUES, ES_IQUE);   // ? → ¿
+const key_override_t exlm_to_iexl = ko_make_basic(MOD_MASK_SHIFT, ES_EXLM, ES_IEXL);   // ! → ¡
+const key_override_t lcbr_to_lbrc = ko_make_basic(MOD_MASK_SHIFT, ES_LCBR, ES_LBRC);   // { → [
+const key_override_t rcbr_to_rbrc = ko_make_basic(MOD_MASK_SHIFT, ES_RCBR, ES_RBRC);   // } → ]
+const key_override_t plus_to_astr = ko_make_basic(MOD_MASK_SHIFT, ES_PLUS, ES_ASTR);   // + → *
+const key_override_t at_to_pipe   = ko_make_basic(MOD_MASK_SHIFT, ES_AT,   ES_PIPE);   // @ → |
+const key_override_t hash_to_tild = ko_make_basic(MOD_MASK_SHIFT, ES_HASH, ES_TILD);   // # → ~
+
+const key_override_t *key_overrides[] = {
+    &ques_to_ique,
+    &exlm_to_iexl,
+    &lcbr_to_lbrc,
+    &rcbr_to_rbrc,
+    &plus_to_astr,
+    &at_to_pipe,
+    &hash_to_tild,
+};

+ 1 - 0
keyboards/mithril/keymaps/sanfeps/rules.mk

@@ -0,0 +1 @@
+KEY_OVERRIDE_ENABLE = yes

+ 29 - 0
keyboards/mithril/readme.md

@@ -0,0 +1,29 @@
+# mithril
+
+![mithril](https://i.imgur.com/F0h5OY6.jpg)
+
+*A custom split ortholinear keyboard (4x6 + 3 thumb keys per half) with per-key RGB.*
+
+* Keyboard Maintainer: [Javier San Félix Guajardo](https://github.com/sanfeps)
+* Hardware Supported: Mithril rev1 PCB, ATmega32U4 (Caterina bootloader), split halves with serial sync
+* Hardware Availability: PCB design, plate files and case at [github.com/sanfeps/mithril_kb](https://github.com/sanfeps/mithril_kb)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make mithril/rev1:default
+
+Flashing example for this keyboard:
+
+    make mithril/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**:
+    * **Left half**: hold down `Esc` (matrix position `0,0` — top-outer key) and plug in the keyboard.
+    * **Right half**: hold down the top-outer key (`?` on the base layer, matrix position `5,0`) and plug in the keyboard.
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (mapped to the bottom-right key on layer 2 of the default keymap)

+ 118 - 0
keyboards/mithril/rev1/keyboard.json

@@ -0,0 +1,118 @@
+{
+    "keyboard_name": "mithril",
+    "bootloader": "caterina",
+    "diode_direction": "COL2ROW",
+    "matrix_pins": {
+        "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "D7"],
+        "rows": ["C7", "C6", "B6", "B5", "B4"]
+    },
+    "processor": "atmega32u4",
+    "rgb_matrix": {
+        "animations": {
+            "breathing": true,
+            "gradient_up_down": true,
+            "pixel_flow": true,
+            "rainbow_beacon": true,
+            "rainbow_moving_chevron": true,
+            "solid_reactive": true,
+            "solid_reactive_simple": true,
+            "splash": true,
+            "typing_heatmap": true
+        },
+        "default": {
+            "animation": "typing_heatmap",
+            "hue": 128
+        },
+        "sat_steps": 8,
+        "sleep": true,
+        "speed_steps": 10,
+        "val_steps": 8,
+        "layout": [
+            {"matrix": [0, 5], "x": 84, "y": 5, "flags": 4},
+            {"matrix": [0, 4], "x": 67, "y": 2, "flags": 4},
+            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 2, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 4, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 4, "flags": 1},
+            {"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
+            {"matrix": [1, 1], "x": 16, "y": 15, "flags": 4},
+            {"matrix": [1, 2], "x": 33, "y": 13, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 10, "flags": 4},
+            {"matrix": [1, 4], "x": 67, "y": 14, "flags": 4},
+            {"matrix": [1, 5], "x": 84, "y": 16, "flags": 4},
+            {"matrix": [2, 5], "x": 84, "y": 27, "flags": 4},
+            {"matrix": [2, 4], "x": 67, "y": 25, "flags": 4},
+            {"matrix": [2, 3], "x": 50, "y": 21, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 24, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 26, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 26, "flags": 1},
+            {"matrix": [3, 0], "x": 0, "y": 37, "flags": 1},
+            {"matrix": [3, 1], "x": 16, "y": 37, "flags": 4},
+            {"matrix": [3, 2], "x": 33, "y": 35, "flags": 4},
+            {"matrix": [3, 3], "x": 50, "y": 32, "flags": 4},
+            {"matrix": [3, 4], "x": 67, "y": 36, "flags": 4},
+            {"matrix": [3, 5], "x": 84, "y": 36, "flags": 4},
+            {"matrix": [4, 4], "x": 67, "y": 47, "flags": 1},
+            {"matrix": [4, 5], "x": 87, "y": 53, "flags": 1},
+            {"matrix": [4, 6], "x": 98, "y": 63, "flags": 1},
+            {"matrix": [5, 5], "x": 138, "y": 5, "flags": 4},
+            {"matrix": [5, 4], "x": 155, "y": 2, "flags": 4},
+            {"matrix": [5, 3], "x": 172, "y": 0, "flags": 4},
+            {"matrix": [5, 2], "x": 189, "y": 2, "flags": 4},
+            {"matrix": [5, 1], "x": 206, "y": 4, "flags": 4},
+            {"matrix": [5, 0], "x": 223, "y": 4, "flags": 1},
+            {"matrix": [6, 0], "x": 223, "y": 15, "flags": 1},
+            {"matrix": [6, 1], "x": 206, "y": 15, "flags": 4},
+            {"matrix": [6, 2], "x": 189, "y": 13, "flags": 4},
+            {"matrix": [6, 3], "x": 172, "y": 10, "flags": 4},
+            {"matrix": [6, 4], "x": 155, "y": 14, "flags": 4},
+            {"matrix": [6, 5], "x": 138, "y": 16, "flags": 4},
+            {"matrix": [7, 5], "x": 138, "y": 27, "flags": 4},
+            {"matrix": [7, 4], "x": 155, "y": 25, "flags": 4},
+            {"matrix": [7, 3], "x": 172, "y": 21, "flags": 4},
+            {"matrix": [7, 2], "x": 189, "y": 24, "flags": 4},
+            {"matrix": [7, 1], "x": 206, "y": 26, "flags": 4},
+            {"matrix": [7, 0], "x": 223, "y": 26, "flags": 1},
+            {"matrix": [8, 0], "x": 223, "y": 37, "flags": 1},
+            {"matrix": [8, 1], "x": 206, "y": 37, "flags": 4},
+            {"matrix": [8, 2], "x": 189, "y": 35, "flags": 4},
+            {"matrix": [8, 3], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [8, 4], "x": 155, "y": 36, "flags": 4},
+            {"matrix": [8, 5], "x": 138, "y": 38, "flags": 4},
+            {"matrix": [9, 4], "x": 155, "y": 47, "flags": 1},
+            {"matrix": [9, 5], "x": 135, "y": 53, "flags": 1},
+            {"matrix": [9, 6], "x": 124, "y": 63, "flags": 1}
+        ],
+        "split_count": [27, 27]
+    },
+    "split": {
+        "enabled": true,
+        "bootmagic": {
+            "matrix": [5, 0]
+        },
+        "matrix_pins": {
+            "right": {
+                "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7"],
+                "rows": ["D7", "B4", "B5", "B6", "C6"]
+            }
+        },
+        "serial": {
+            "pin": "D0"
+        },
+        "transport": {
+            "sync": {
+                "matrix_state": true
+            }
+        },
+        "usb_detect": {
+            "enabled": true
+        }
+    },
+    "usb": {
+        "device_version": "1.0.0",
+        "pid": "0x4D52"
+    },
+    "ws2812": {
+        "pin": "D2"
+    }
+}