Browse Source

[Keyboard] Corne rev4 (#24084)

* [Keyboard] Corne rev4

* Remove unneeded update interval and moved split pin to dd

* Cleanup config and errors

* Move bootmagic config to dd

* Re-add existing configs

* Additional config fixes

* shove off via keymap
Drashna Jaelre 1 year ago
parent
commit
c9cd92ece3

+ 1 - 0
keyboards/crkbd/crkbd.c

@@ -113,6 +113,7 @@ static void oled_render_keylog(void) {
     oled_write(depad_str(last_keycode_str, ' '), false);
     oled_write_P(PSTR(":"), false);
     oled_write_char(key_name, false);
+    oled_advance_page(true);
 }
 
 // static void render_bootmagic_status(bool status) {

+ 124 - 20
keyboards/crkbd/info.json

@@ -1,34 +1,138 @@
 {
-    "keyboard_name": "Corne",
     "manufacturer": "foostan",
-    "url": "",
+    "url": "https://github.com/foostan/crkbd",
     "maintainer": "qmk",
     "usb": {
-        "vid": "0x4653",
-        "pid": "0x0001",
-        "device_version": "0.0.1"
-    },
-    "rgb_matrix": {
-        "driver": "ws2812"
+        "vid": "0x4653"
     },
     "features": {
         "bootmagic": true,
         "extrakey": true,
-        "mousekey": true,
         "nkro": true,
-        "oled": true
+        "oled": true,
+        "rgblight": false,
+        "rgb_matrix": true
     },
-    "build": {
-        "lto": true
+    "bootmagic": {
+        "matrix": [0, 1]
     },
-    "matrix_pins": {
-        "cols": [ "F4", "F5", "F6", "F7", "B1", "B3" ],
-        "rows": [ "D4", "C6", "D7", "E6" ]
-    },
-    "diode_direction": "COL2ROW",
     "split": {
-        "enabled": true
+        "enabled": true,
+        "bootmagic": {
+            "matrix": [4, 1]
+        }
+    },
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_split_3x6_3"
+    },
+    "community_layouts": [ "split_3x5_3", "split_3x6_3" ],
+    "layouts": {
+        "LAYOUT_split_3x5_3": {
+            "layout": [
+                {"matrix": [0, 1], "x": 0, "y": 0.3},
+                {"matrix": [0, 2], "x": 1, "y": 0.1},
+                {"matrix": [0, 3], "x": 2, "y": 0},
+                {"matrix": [0, 4], "x": 3, "y": 0.1},
+                {"matrix": [0, 5], "x": 4, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 8, "y": 0.2},
+                {"matrix": [4, 4], "x": 9, "y": 0.1},
+                {"matrix": [4, 3], "x": 10, "y": 0},
+                {"matrix": [4, 2], "x": 11, "y": 0.1},
+                {"matrix": [4, 1], "x": 12, "y": 0.3},
+
+                {"matrix": [1, 1], "x": 0, "y": 1.3},
+                {"matrix": [1, 2], "x": 1, "y": 1.1},
+                {"matrix": [1, 3], "x": 2, "y": 1},
+                {"matrix": [1, 4], "x": 3, "y": 1.1},
+                {"matrix": [1, 5], "x": 4, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 8, "y": 1.2},
+                {"matrix": [5, 4], "x": 9, "y": 1.1},
+                {"matrix": [5, 3], "x": 10, "y": 1},
+                {"matrix": [5, 2], "x": 11, "y": 1.1},
+                {"matrix": [5, 1], "x": 12, "y": 1.3},
+
+                {"matrix": [2, 1], "x": 0, "y": 2.3},
+                {"matrix": [2, 2], "x": 1, "y": 2.1},
+                {"matrix": [2, 3], "x": 2, "y": 2},
+                {"matrix": [2, 4], "x": 3, "y": 2.1},
+                {"matrix": [2, 5], "x": 4, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 8, "y": 2.2},
+                {"matrix": [6, 4], "x": 9, "y": 2.1},
+                {"matrix": [6, 3], "x": 10, "y": 2},
+                {"matrix": [6, 2], "x": 11, "y": 2.1},
+                {"matrix": [6, 1], "x": 12, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 3, "y": 3.7},
+                {"matrix": [3, 4], "x": 4, "y": 3.7},
+                {"matrix": [3, 5], "x": 5, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 7, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 8, "y": 3.7},
+                {"matrix": [7, 3], "x": 9, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x6_3": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0.3},
+                {"matrix": [0, 1], "x": 1, "y": 0.3},
+                {"matrix": [0, 2], "x": 2, "y": 0.1},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0.1},
+                {"matrix": [0, 5], "x": 5, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+                {"matrix": [4, 0], "x": 14, "y": 0.3},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.3},
+                {"matrix": [1, 1], "x": 1, "y": 1.3},
+                {"matrix": [1, 2], "x": 2, "y": 1.1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1.1},
+                {"matrix": [1, 5], "x": 5, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+                {"matrix": [5, 0], "x": 14, "y": 1.3},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.3},
+                {"matrix": [2, 1], "x": 1, "y": 2.3},
+                {"matrix": [2, 2], "x": 2, "y": 2.1},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2.1},
+                {"matrix": [2, 5], "x": 5, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+                {"matrix": [6, 0], "x": 14, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        }
+    },
+    "rgb_matrix": {
+        "driver": "ws2812",
+        "max_brightness": 120
     },
-    "processor": "atmega32u4",
-    "community_layouts": [ "split_3x5_3", "split_3x6_3" ]
+    "rgblight": {
+        "max_brightness": 120
+    }
 }

+ 9 - 0
keyboards/crkbd/keymaps/default/keymap.c

@@ -68,3 +68,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                       //`--------------------------'  `--------------------------'
   )
 };
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+  [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_RGHT, KC_LEFT), },
+  [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_RGHT, KC_LEFT), },
+  [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_RGHT, KC_LEFT), },
+  [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_RGHT, KC_LEFT), },
+};
+#endif

+ 2 - 30
keyboards/crkbd/post_config.h

@@ -16,34 +16,6 @@
 
 #pragma once
 
-#ifndef BOOTMAGIC_ROW
-#    define BOOTMAGIC_ROW 0
-#endif
-#ifndef BOOTMAGIC_COLUMN
-#    define BOOTMAGIC_COLUMN 1
-#endif
-
-#ifndef BOOTMAGIC_ROW_RIGHT
-#    define BOOTMAGIC_ROW_RIGHT 4
-#endif
-#ifndef BOOTMAGIC_COLUMN_RIGHT
-#    define BOOTMAGIC_COLUMN_RIGHT 1
-#endif
-
-#ifdef RGBLIGHT_ENABLE
-#    ifndef RGBLIGHT_LIMIT_VAL
-#        define RGBLIGHT_LIMIT_VAL 120
-#    endif
-#endif
-
-#ifdef RGB_MATRIX_ENABLE
-#    ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-#        define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-#    endif
-#endif
-
-#ifdef OLED_ENABLE
-    #ifndef OLED_FONT_H
-        #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
-    #endif
+#ifndef OLED_FONT_H
+#    define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
 #endif

+ 15 - 0
keyboards/crkbd/r2g/keyboard.json

@@ -1,7 +1,21 @@
 {
+    "keyboard_name": "Corne",
+    "usb": {
+        "pid": "0x0001",
+        "device_version": "0.0.1"
+    },
+    "processor": "atmega32u4",
     "features": {
         "rgb_matrix": true
     },
+    "build": {
+        "lto": true
+    },
+    "matrix_pins": {
+        "cols": [ "F4", "F5", "F6", "F7", "B1", "B3" ],
+        "rows": [ "D4", "C6", "D7", "E6" ]
+    },
+    "diode_direction": "COL2ROW",
     "split": {
         "serial": {
             "pin": "D2"
@@ -38,6 +52,7 @@
     "layout_aliases": {
         "LAYOUT": "LAYOUT_split_3x6_3"
     },
+    "community_layouts": [ "split_3x5_3", "split_3x6_3" ],
     "layouts": {
         "LAYOUT_split_3x5_3": {
             "layout": [

+ 11 - 6
keyboards/crkbd/readme.md

@@ -1,28 +1,33 @@
 # Corne Keyboard (CRKBD)
 
-Also known (incorrectly) as the `HeliDox`. 
-
 ![Crkbd](https://user-images.githubusercontent.com/736191/40575636-6fba63a4-6123-11e8-9ca0-3f990f1f9f4c.jpg)
 
 ![Crkbd](https://user-images.githubusercontent.com/736191/40887871-0eead5dc-678a-11e8-9518-e3ad9e5d2bac.png)
 
 A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
+Also, it has the option that use extension keys and rotary encoders.
 
 Keyboard Maintainer: [foostan](https://github.com/foostan/) [@foostan](https://twitter.com/foostan)  
-Hardware Supported: Crkbd PCB, Pro Micro  
+Hardware Supported: Corne PCB
 Hardware Availability: [PCB & Case Data](https://github.com/foostan/crkbd)
 
-Make example for this keyboard (after setting up your build environment):
+Flash example for this keyboard of v1 - v3:
+
+```sh
+qmk flash -kb crkbd/rev1 -km default
+```
+
+Flash example for this keyboard of v4:
 
 ```sh
-make crkbd:default
+qmk flash -kb crkbd/rev4 -km default
 ```
 
 See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
 
 ## Bootloader
 
-The Corne PCBs have a reset button next to the TRRS jack to enter in to the bootloader.
+The Corne PCBs have a reset and boot buttons next to the TRRS jack to enter in to the bootloader.
 
 Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage).  This would normally be the very top corner-most position, but due to the breakaway column, it's left at Q and P for compatibility. 
 

+ 14 - 106
keyboards/crkbd/rev1/keyboard.json

@@ -1,7 +1,20 @@
 {
+    "keyboard_name": "Corne",
+    "usb": {
+        "pid": "0x0001",
+        "device_version": "0.0.1"
+    },
     "features": {
         "rgblight": true
     },
+    "build": {
+        "lto": true
+    },
+    "matrix_pins": {
+        "cols": [ "F4", "F5", "F6", "F7", "B1", "B3" ],
+        "rows": [ "D4", "C6", "D7", "E6" ]
+    },
+    "diode_direction": "COL2ROW",
     "split": {
         "serial": {
             "pin": "D2"
@@ -78,110 +91,5 @@
             {"matrix": [6, 0], "x": 224, "y": 41, "flags": 1}
         ]
     },
-    "development_board": "promicro",
-    "layout_aliases": {
-        "LAYOUT": "LAYOUT_split_3x6_3"
-    },
-    "layouts": {
-        "LAYOUT_split_3x5_3": {
-            "layout": [
-                {"matrix": [0, 1], "x": 0, "y": 0.3},
-                {"matrix": [0, 2], "x": 1, "y": 0.1},
-                {"matrix": [0, 3], "x": 2, "y": 0},
-                {"matrix": [0, 4], "x": 3, "y": 0.1},
-                {"matrix": [0, 5], "x": 4, "y": 0.2},
-
-                {"matrix": [4, 5], "x": 8, "y": 0.2},
-                {"matrix": [4, 4], "x": 9, "y": 0.1},
-                {"matrix": [4, 3], "x": 10, "y": 0},
-                {"matrix": [4, 2], "x": 11, "y": 0.1},
-                {"matrix": [4, 1], "x": 12, "y": 0.3},
-
-                {"matrix": [1, 1], "x": 0, "y": 1.3},
-                {"matrix": [1, 2], "x": 1, "y": 1.1},
-                {"matrix": [1, 3], "x": 2, "y": 1},
-                {"matrix": [1, 4], "x": 3, "y": 1.1},
-                {"matrix": [1, 5], "x": 4, "y": 1.2},
-
-                {"matrix": [5, 5], "x": 8, "y": 1.2},
-                {"matrix": [5, 4], "x": 9, "y": 1.1},
-                {"matrix": [5, 3], "x": 10, "y": 1},
-                {"matrix": [5, 2], "x": 11, "y": 1.1},
-                {"matrix": [5, 1], "x": 12, "y": 1.3},
-
-                {"matrix": [2, 1], "x": 0, "y": 2.3},
-                {"matrix": [2, 2], "x": 1, "y": 2.1},
-                {"matrix": [2, 3], "x": 2, "y": 2},
-                {"matrix": [2, 4], "x": 3, "y": 2.1},
-                {"matrix": [2, 5], "x": 4, "y": 2.2},
-
-                {"matrix": [6, 5], "x": 8, "y": 2.2},
-                {"matrix": [6, 4], "x": 9, "y": 2.1},
-                {"matrix": [6, 3], "x": 10, "y": 2},
-                {"matrix": [6, 2], "x": 11, "y": 2.1},
-                {"matrix": [6, 1], "x": 12, "y": 2.3},
-
-                {"matrix": [3, 3], "x": 3, "y": 3.7},
-                {"matrix": [3, 4], "x": 4, "y": 3.7},
-                {"matrix": [3, 5], "x": 5, "y": 3.2, "h": 1.5},
-
-                {"matrix": [7, 5], "x": 7, "y": 3.2, "h": 1.5},
-                {"matrix": [7, 4], "x": 8, "y": 3.7},
-                {"matrix": [7, 3], "x": 9, "y": 3.7}
-            ]
-        },
-        "LAYOUT_split_3x6_3": {
-            "layout": [
-                {"matrix": [0, 0], "x": 0, "y": 0.3},
-                {"matrix": [0, 1], "x": 1, "y": 0.3},
-                {"matrix": [0, 2], "x": 2, "y": 0.1},
-                {"matrix": [0, 3], "x": 3, "y": 0},
-                {"matrix": [0, 4], "x": 4, "y": 0.1},
-                {"matrix": [0, 5], "x": 5, "y": 0.2},
-
-                {"matrix": [4, 5], "x": 9, "y": 0.2},
-                {"matrix": [4, 4], "x": 10, "y": 0.1},
-                {"matrix": [4, 3], "x": 11, "y": 0},
-                {"matrix": [4, 2], "x": 12, "y": 0.1},
-                {"matrix": [4, 1], "x": 13, "y": 0.3},
-                {"matrix": [4, 0], "x": 14, "y": 0.3},
-
-                {"matrix": [1, 0], "x": 0, "y": 1.3},
-                {"matrix": [1, 1], "x": 1, "y": 1.3},
-                {"matrix": [1, 2], "x": 2, "y": 1.1},
-                {"matrix": [1, 3], "x": 3, "y": 1},
-                {"matrix": [1, 4], "x": 4, "y": 1.1},
-                {"matrix": [1, 5], "x": 5, "y": 1.2},
-
-                {"matrix": [5, 5], "x": 9, "y": 1.2},
-                {"matrix": [5, 4], "x": 10, "y": 1.1},
-                {"matrix": [5, 3], "x": 11, "y": 1},
-                {"matrix": [5, 2], "x": 12, "y": 1.1},
-                {"matrix": [5, 1], "x": 13, "y": 1.3},
-                {"matrix": [5, 0], "x": 14, "y": 1.3},
-
-                {"matrix": [2, 0], "x": 0, "y": 2.3},
-                {"matrix": [2, 1], "x": 1, "y": 2.3},
-                {"matrix": [2, 2], "x": 2, "y": 2.1},
-                {"matrix": [2, 3], "x": 3, "y": 2},
-                {"matrix": [2, 4], "x": 4, "y": 2.1},
-                {"matrix": [2, 5], "x": 5, "y": 2.2},
-
-                {"matrix": [6, 5], "x": 9, "y": 2.2},
-                {"matrix": [6, 4], "x": 10, "y": 2.1},
-                {"matrix": [6, 3], "x": 11, "y": 2},
-                {"matrix": [6, 2], "x": 12, "y": 2.1},
-                {"matrix": [6, 1], "x": 13, "y": 2.3},
-                {"matrix": [6, 0], "x": 14, "y": 2.3},
-
-                {"matrix": [3, 3], "x": 4, "y": 3.7},
-                {"matrix": [3, 4], "x": 5, "y": 3.7},
-                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
-
-                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
-                {"matrix": [7, 4], "x": 9, "y": 3.7},
-                {"matrix": [7, 3], "x": 10, "y": 3.7}
-            ]
-        }
-    }
+    "development_board": "promicro"
 }

+ 17 - 0
keyboards/crkbd/rev4_0/config.h

@@ -0,0 +1,17 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP12
+#define SERIAL_USART_RX_PIN GP13
+
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP6
+#define I2C1_SCL_PIN GP7
+
+/* RP2040- and hardware-specific config */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

+ 367 - 0
keyboards/crkbd/rev4_0/info.json

@@ -0,0 +1,367 @@
+{
+    "maintainer": "foostan",
+    "manufacturer": "foostan",
+    "url": "https://github.com/foostan/crkbd",
+    "usb": {
+        "vid": "0x4653",
+        "suspend_wakeup_delay": 200,
+        "device_version": "4.0.0"
+    },
+    "processor": "RP2040",
+    "bootloader": "rp2040",
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "nkro": true,
+        "oled": true,
+        "rgblight": false,
+        "rgb_matrix": true,
+        "mousekey": true,
+        "encoder": true
+    },
+    "diode_direction": "COL2ROW",
+    "dynamic_keymap": {
+        "layer_count": 6
+    },
+    "matrix_pins": {
+        "direct":[
+            ["GP22", "GP20", "GP23", "GP26", "GP29",  "GP0",  "GP4"],
+            ["GP19", "GP18", "GP24", "GP27",  "GP1",  "GP2",  "GP8"],
+            ["GP17", "GP16", "GP25", "GP28",  "GP3",  "GP9",   null],
+            [  null,   null,   null, "GP14", "GP15", "GP11",   null]
+        ]
+    },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "GP5", "pin_b": "GP7"},
+            {"pin_a": "GP6", "pin_b": "GP7"}
+        ]
+    },
+    "bootmagic": {
+        "enabled": true,
+        "matrix": [ 0, 1 ]
+    },
+    "split": {
+        "enabled": true,
+        "bootmagic": {
+            "matrix": [ 4, 1 ]
+        },
+        "handedness": {
+            "pin": "GP21"
+        },
+        "matrix_pins": {
+            "right": {
+                "direct": [
+                    [ "GP8",  "GP9",  "GP3",  "GP2",  "GP1", "GP27", "GP25"],
+                    ["GP11", "GP14",  "GP4",  "GP0", "GP28", "GP26", "GP23"],
+                    ["GP15", "GP18",  "GP5", "GP29", "GP20", "GP22",   null],
+                    [  null,   null,   null, "GP16", "GP17", "GP19",   null]
+                ]
+            }
+        },
+        "encoder": {
+            "right": {
+                "rotary": [
+                    {"pin_a": "GP24", "pin_b":  "GP7"},
+                    {"pin_a":  "GP6", "pin_b":  "GP7"}
+                ]
+            }
+        },
+        "serial": {
+            "driver": "vendor"
+        },
+        "transport": {
+            "sync": {
+                "matrix_state": true
+            },
+            "watchdog": true
+
+        },
+        "usb_detect": {
+            "timeout": 500
+        }
+    },
+    "community_layouts": [ "split_3x5_3", "split_3x6_3" ],
+    "layouts": {
+        "LAYOUT_split_3x5_3": {
+            "layout": [
+                {"matrix": [0, 1], "x": 0, "y": 0.3},
+                {"matrix": [0, 2], "x": 1, "y": 0.1},
+                {"matrix": [0, 3], "x": 2, "y": 0},
+                {"matrix": [0, 4], "x": 3, "y": 0.1},
+                {"matrix": [0, 5], "x": 4, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 8, "y": 0.2},
+                {"matrix": [4, 4], "x": 9, "y": 0.1},
+                {"matrix": [4, 3], "x": 10, "y": 0},
+                {"matrix": [4, 2], "x": 11, "y": 0.1},
+                {"matrix": [4, 1], "x": 12, "y": 0.3},
+
+                {"matrix": [1, 1], "x": 0, "y": 1.3},
+                {"matrix": [1, 2], "x": 1, "y": 1.1},
+                {"matrix": [1, 3], "x": 2, "y": 1},
+                {"matrix": [1, 4], "x": 3, "y": 1.1},
+                {"matrix": [1, 5], "x": 4, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 8, "y": 1.2},
+                {"matrix": [5, 4], "x": 9, "y": 1.1},
+                {"matrix": [5, 3], "x": 10, "y": 1},
+                {"matrix": [5, 2], "x": 11, "y": 1.1},
+                {"matrix": [5, 1], "x": 12, "y": 1.3},
+
+                {"matrix": [2, 1], "x": 0, "y": 2.3},
+                {"matrix": [2, 2], "x": 1, "y": 2.1},
+                {"matrix": [2, 3], "x": 2, "y": 2},
+                {"matrix": [2, 4], "x": 3, "y": 2.1},
+                {"matrix": [2, 5], "x": 4, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 8, "y": 2.2},
+                {"matrix": [6, 4], "x": 9, "y": 2.1},
+                {"matrix": [6, 3], "x": 10, "y": 2},
+                {"matrix": [6, 2], "x": 11, "y": 2.1},
+                {"matrix": [6, 1], "x": 12, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 3, "y": 3.7},
+                {"matrix": [3, 4], "x": 4, "y": 3.7},
+                {"matrix": [3, 5], "x": 5, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 7, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 8, "y": 3.7},
+                {"matrix": [7, 3], "x": 9, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x6_3": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0.3},
+                {"matrix": [0, 1], "x": 1, "y": 0.3},
+                {"matrix": [0, 2], "x": 2, "y": 0.1},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0.1},
+                {"matrix": [0, 5], "x": 5, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+                {"matrix": [4, 0], "x": 14, "y": 0.3},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.3},
+                {"matrix": [1, 1], "x": 1, "y": 1.3},
+                {"matrix": [1, 2], "x": 2, "y": 1.1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1.1},
+                {"matrix": [1, 5], "x": 5, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+                {"matrix": [5, 0], "x": 14, "y": 1.3},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.3},
+                {"matrix": [2, 1], "x": 1, "y": 2.3},
+                {"matrix": [2, 2], "x": 2, "y": 2.1},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2.1},
+                {"matrix": [2, 5], "x": 5, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+                {"matrix": [6, 0], "x": 14, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x5_3_ex2": {
+            "layout": [
+                {"matrix": [0, 1], "x": 0, "y": 0.3},
+                {"matrix": [0, 2], "x": 1, "y": 0.1},
+                {"matrix": [0, 3], "x": 2, "y": 0},
+                {"matrix": [0, 4], "x": 3, "y": 0.1},
+                {"matrix": [0, 5], "x": 4, "y": 0.2},
+                {"matrix": [0, 6], "x": 5, "y": 0.7},
+
+                {"matrix": [4, 6], "x": 8, "y": 0.7},
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+
+                {"matrix": [1, 1], "x": 0, "y": 1.3},
+                {"matrix": [1, 2], "x": 1, "y": 1.1},
+                {"matrix": [1, 3], "x": 2, "y": 1},
+                {"matrix": [1, 4], "x": 3, "y": 1.1},
+                {"matrix": [1, 5], "x": 4, "y": 1.2},
+                {"matrix": [1, 6], "x": 5, "y": 1.7},
+
+                {"matrix": [5, 6], "x": 8, "y": 1.7},
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+
+                {"matrix": [2, 1], "x": 0, "y": 2.3},
+                {"matrix": [2, 2], "x": 1, "y": 2.1},
+                {"matrix": [2, 3], "x": 2, "y": 2},
+                {"matrix": [2, 4], "x": 3, "y": 2.1},
+                {"matrix": [2, 5], "x": 4, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x6_3_ex2": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0.3},
+                {"matrix": [0, 1], "x": 1, "y": 0.3},
+                {"matrix": [0, 2], "x": 2, "y": 0.1},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0.1},
+                {"matrix": [0, 5], "x": 5, "y": 0.2},
+                {"matrix": [0, 6], "x": 6, "y": 0.7},
+
+                {"matrix": [4, 6], "x": 8, "y": 0.7},
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+                {"matrix": [4, 0], "x": 14, "y": 0.3},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.3},
+                {"matrix": [1, 1], "x": 1, "y": 1.3},
+                {"matrix": [1, 2], "x": 2, "y": 1.1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1.1},
+                {"matrix": [1, 5], "x": 5, "y": 1.2},
+                {"matrix": [1, 6], "x": 6, "y": 1.7},
+
+                {"matrix": [5, 6], "x": 8, "y": 1.7},
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+                {"matrix": [5, 0], "x": 14, "y": 1.3},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.3},
+                {"matrix": [2, 1], "x": 1, "y": 2.3},
+                {"matrix": [2, 2], "x": 2, "y": 2.1},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2.1},
+                {"matrix": [2, 5], "x": 5, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+                {"matrix": [6, 0], "x": 14, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        }
+    },
+    "ws2812": {
+        "driver": "vendor",
+        "pin": "GP10"
+    },
+    "rgblight": {
+        "led_count": 46,
+        "split": true,
+        "split_count": [23, 23],
+        "max_brightness": 50,
+        "animations": {
+            "alternating": true,
+            "breathing": true,
+            "christmas": true,
+            "knight": true,
+            "rainbow_mood": true,
+            "rainbow_swirl": true,
+            "rgb_test": true,
+            "snake": true,
+            "static_gradient": true,
+            "twinkle": true
+        }
+    },
+    "rgb_matrix": {
+        "driver": "ws2812",
+        "max_brightness": 50,
+        "animations": {
+            "alphas_mods": true,
+            "gradient_up_down": true,
+            "gradient_left_right": true,
+            "breathing": true,
+            "band_sat": true,
+            "band_val": true,
+            "band_pinwheel_sat": true,
+            "band_pinwheel_val": true,
+            "band_spiral_sat": true,
+            "band_spiral_val": true,
+            "cycle_all": true,
+            "cycle_left_right": true,
+            "cycle_up_down": true,
+            "rainbow_moving_chevron": true,
+            "cycle_out_in": true,
+            "cycle_out_in_dual": true,
+            "cycle_pinwheel": true,
+            "cycle_spiral": true,
+            "dual_beacon": true,
+            "rainbow_beacon": true,
+            "rainbow_pinwheels": true,
+            "raindrops": true,
+            "jellybean_raindrops": true,
+            "hue_breathing": true,
+            "hue_pendulum": true,
+            "hue_wave": true,
+            "pixel_fractal": true,
+            "pixel_flow": true,
+            "pixel_rain": true,
+            "typing_heatmap": true,
+            "digital_rain": true,
+            "solid_reactive_simple": true,
+            "solid_reactive": true,
+            "solid_reactive_wide": true,
+            "solid_reactive_multiwide": true,
+            "solid_reactive_cross": true,
+            "solid_reactive_multicross": true,
+            "solid_reactive_nexus": true,
+            "solid_reactive_multinexus": true,
+            "splash": true,
+            "multisplash": true,
+            "solid_splash": true,
+            "solid_multisplash": true
+        },
+        "sleep": true
+    }
+}

+ 9 - 0
keyboards/crkbd/rev4_0/mcuconf.h

@@ -0,0 +1,9 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE

+ 52 - 0
keyboards/crkbd/rev4_0/mini/keyboard.json

@@ -0,0 +1,52 @@
+{
+    "keyboard_name": "Corne v4 mini",
+    "usb": {
+        "pid": "0x0104"
+    },
+    "rgb_matrix": {
+        "split_count": [20, 20],
+        "layout": [
+            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 4},
+            {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
+            {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
+            {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
+            {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
+            {"matrix": [3, 4], "x": 80, "y": 58, "flags": 4},
+            {"matrix": [3, 3], "x": 60, "y": 55, "flags": 4},
+            {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
+            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
+            {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
+            {"matrix": [0, 6], "x": 103, "y": 17, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 24, "flags": 4},
+
+            {"matrix": [7, 5], "x": 129, "y": 63, "flags": 4},
+            {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
+            {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
+            {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
+            {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
+            {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
+            {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
+            {"matrix": [7, 4], "x": 144, "y": 58, "flags": 4},
+            {"matrix": [7, 3], "x": 164, "y": 55, "flags": 4},
+            {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
+            {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
+            {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
+            {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
+            {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
+            {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
+            {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
+            {"matrix": [4, 6], "x": 122, "y": 17, "flags": 4},
+            {"matrix": [5, 6], "x": 122, "y": 24, "flags": 4}
+        ]
+    }
+}

+ 11 - 0
keyboards/crkbd/rev4_0/post_config.h

@@ -0,0 +1,11 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef OLED_FONT_H
+#    define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+#endif
+#ifndef OLED_UPDATE_INTERVAL
+#    define OLED_UPDATE_INTERVAL 50
+#endif // OLED_UPDATE_INTERVAL

+ 58 - 0
keyboards/crkbd/rev4_0/standard/keyboard.json

@@ -0,0 +1,58 @@
+{
+    "keyboard_name": "Corne v4",
+    "usb": {
+        "pid": "0x0004"
+    },
+    "rgb_matrix": {
+        "split_count": [23, 23],
+        "layout": [
+            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 4},
+            {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
+            {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
+            {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
+            {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
+            {"matrix": [3, 4], "x": 80, "y": 58, "flags": 4},
+            {"matrix": [3, 3], "x": 60, "y": 55, "flags": 4},
+            {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
+            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
+            {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 7, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 24, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 41, "flags": 4},
+            {"matrix": [0, 6], "x": 103, "y": 17, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 24, "flags": 4},
+
+            {"matrix": [7, 5], "x": 129, "y": 63, "flags": 4},
+            {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
+            {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
+            {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
+            {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
+            {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
+            {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
+            {"matrix": [7, 4], "x": 144, "y": 58, "flags": 4},
+            {"matrix": [7, 3], "x": 164, "y": 55, "flags": 4},
+            {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
+            {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
+            {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
+            {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
+            {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
+            {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
+            {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
+            {"matrix": [4, 0], "x": 224, "y": 7, "flags": 4},
+            {"matrix": [5, 0], "x": 224, "y": 24, "flags": 4},
+            {"matrix": [6, 0], "x": 224, "y": 41, "flags": 4},
+            {"matrix": [4, 6], "x": 122, "y": 17, "flags": 4},
+            {"matrix": [5, 6], "x": 122, "y": 24, "flags": 4}
+        ]
+    }
+}

+ 16 - 0
keyboards/crkbd/rev4_1/config.h

@@ -0,0 +1,16 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SERIAL_USART_TX_PIN GP12
+#define USB_VBUS_PIN GP13
+
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP6
+#define I2C1_SCL_PIN GP7
+
+/* RP2040- and hardware-specific config */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

+ 363 - 0
keyboards/crkbd/rev4_1/info.json

@@ -0,0 +1,363 @@
+{
+    "maintainer": "foostan",
+    "manufacturer": "foostan",
+    "url": "https://github.com/foostan/crkbd",
+    "usb": {
+        "vid": "0x4653",
+        "suspend_wakeup_delay": 200,
+        "device_version": "4.1.0"
+    },
+    "processor": "RP2040",
+    "bootloader": "rp2040",
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "nkro": true,
+        "oled": true,
+        "rgblight": false,
+        "rgb_matrix": true,
+        "mousekey": true,
+        "encoder": true
+    },
+    "diode_direction": "COL2ROW",
+    "dynamic_keymap": {
+        "layer_count": 6
+    },
+    "matrix_pins": {
+        "direct":[
+            ["GP22", "GP20", "GP23", "GP26", "GP29",  "GP0",  "GP4"],
+            ["GP19", "GP18", "GP24", "GP27",  "GP1",  "GP2",  "GP8"],
+            ["GP17", "GP16", "GP25", "GP28",  "GP3",  "GP9",   null],
+            [  null,   null,   null, "GP14", "GP15", "GP11",   null]
+        ]
+    },
+    "encoder": {
+        "rotary": [
+            {"pin_a": "GP5", "pin_b": "GP7"},
+            {"pin_a": "GP6", "pin_b": "GP7"}
+        ]
+    },
+    "bootmagic": {
+        "enabled": true,
+        "matrix": [ 0, 1 ]
+    },
+    "split": {
+        "enabled": true,
+        "bootmagic": {
+            "matrix": [ 4, 1 ]
+        },
+        "handedness": {
+            "pin": "GP21"
+        },
+        "matrix_pins": {
+            "right": {
+                "direct": [
+                    [ "GP8",  "GP9",  "GP3",  "GP2",  "GP1", "GP27", "GP25"],
+                    ["GP11", "GP14",  "GP4",  "GP0", "GP28", "GP26", "GP23"],
+                    ["GP15", "GP18",  "GP5", "GP29", "GP20", "GP22",   null],
+                    [  null,   null,   null, "GP16", "GP17", "GP19",   null]
+                ]
+            }
+        },
+        "encoder": {
+            "right": {
+                "rotary": [
+                    {"pin_a": "GP24", "pin_b":  "GP7"},
+                    {"pin_a":  "GP6", "pin_b":  "GP7"}
+                ]
+            }
+        },
+        "serial": {
+            "driver": "vendor"
+        },
+        "transport": {
+            "sync": {
+                "matrix_state": true
+            },
+            "watchdog": true
+        }
+    },
+    "community_layouts": [ "split_3x5_3", "split_3x6_3" ],
+    "layouts": {
+        "LAYOUT_split_3x5_3": {
+            "layout": [
+                {"matrix": [0, 1], "x": 0, "y": 0.3},
+                {"matrix": [0, 2], "x": 1, "y": 0.1},
+                {"matrix": [0, 3], "x": 2, "y": 0},
+                {"matrix": [0, 4], "x": 3, "y": 0.1},
+                {"matrix": [0, 5], "x": 4, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 8, "y": 0.2},
+                {"matrix": [4, 4], "x": 9, "y": 0.1},
+                {"matrix": [4, 3], "x": 10, "y": 0},
+                {"matrix": [4, 2], "x": 11, "y": 0.1},
+                {"matrix": [4, 1], "x": 12, "y": 0.3},
+
+                {"matrix": [1, 1], "x": 0, "y": 1.3},
+                {"matrix": [1, 2], "x": 1, "y": 1.1},
+                {"matrix": [1, 3], "x": 2, "y": 1},
+                {"matrix": [1, 4], "x": 3, "y": 1.1},
+                {"matrix": [1, 5], "x": 4, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 8, "y": 1.2},
+                {"matrix": [5, 4], "x": 9, "y": 1.1},
+                {"matrix": [5, 3], "x": 10, "y": 1},
+                {"matrix": [5, 2], "x": 11, "y": 1.1},
+                {"matrix": [5, 1], "x": 12, "y": 1.3},
+
+                {"matrix": [2, 1], "x": 0, "y": 2.3},
+                {"matrix": [2, 2], "x": 1, "y": 2.1},
+                {"matrix": [2, 3], "x": 2, "y": 2},
+                {"matrix": [2, 4], "x": 3, "y": 2.1},
+                {"matrix": [2, 5], "x": 4, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 8, "y": 2.2},
+                {"matrix": [6, 4], "x": 9, "y": 2.1},
+                {"matrix": [6, 3], "x": 10, "y": 2},
+                {"matrix": [6, 2], "x": 11, "y": 2.1},
+                {"matrix": [6, 1], "x": 12, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 3, "y": 3.7},
+                {"matrix": [3, 4], "x": 4, "y": 3.7},
+                {"matrix": [3, 5], "x": 5, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 7, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 8, "y": 3.7},
+                {"matrix": [7, 3], "x": 9, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x6_3": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0.3},
+                {"matrix": [0, 1], "x": 1, "y": 0.3},
+                {"matrix": [0, 2], "x": 2, "y": 0.1},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0.1},
+                {"matrix": [0, 5], "x": 5, "y": 0.2},
+
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+                {"matrix": [4, 0], "x": 14, "y": 0.3},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.3},
+                {"matrix": [1, 1], "x": 1, "y": 1.3},
+                {"matrix": [1, 2], "x": 2, "y": 1.1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1.1},
+                {"matrix": [1, 5], "x": 5, "y": 1.2},
+
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+                {"matrix": [5, 0], "x": 14, "y": 1.3},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.3},
+                {"matrix": [2, 1], "x": 1, "y": 2.3},
+                {"matrix": [2, 2], "x": 2, "y": 2.1},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2.1},
+                {"matrix": [2, 5], "x": 5, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+                {"matrix": [6, 0], "x": 14, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x5_3_ex2": {
+            "layout": [
+                {"matrix": [0, 1], "x": 0, "y": 0.3},
+                {"matrix": [0, 2], "x": 1, "y": 0.1},
+                {"matrix": [0, 3], "x": 2, "y": 0},
+                {"matrix": [0, 4], "x": 3, "y": 0.1},
+                {"matrix": [0, 5], "x": 4, "y": 0.2},
+                {"matrix": [0, 6], "x": 5, "y": 0.7},
+
+                {"matrix": [4, 6], "x": 8, "y": 0.7},
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+
+                {"matrix": [1, 1], "x": 0, "y": 1.3},
+                {"matrix": [1, 2], "x": 1, "y": 1.1},
+                {"matrix": [1, 3], "x": 2, "y": 1},
+                {"matrix": [1, 4], "x": 3, "y": 1.1},
+                {"matrix": [1, 5], "x": 4, "y": 1.2},
+                {"matrix": [1, 6], "x": 5, "y": 1.7},
+
+                {"matrix": [5, 6], "x": 8, "y": 1.7},
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+
+                {"matrix": [2, 1], "x": 0, "y": 2.3},
+                {"matrix": [2, 2], "x": 1, "y": 2.1},
+                {"matrix": [2, 3], "x": 2, "y": 2},
+                {"matrix": [2, 4], "x": 3, "y": 2.1},
+                {"matrix": [2, 5], "x": 4, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        },
+        "LAYOUT_split_3x6_3_ex2": {
+            "layout": [
+                {"matrix": [0, 0], "x": 0, "y": 0.3},
+                {"matrix": [0, 1], "x": 1, "y": 0.3},
+                {"matrix": [0, 2], "x": 2, "y": 0.1},
+                {"matrix": [0, 3], "x": 3, "y": 0},
+                {"matrix": [0, 4], "x": 4, "y": 0.1},
+                {"matrix": [0, 5], "x": 5, "y": 0.2},
+                {"matrix": [0, 6], "x": 6, "y": 0.7},
+
+                {"matrix": [4, 6], "x": 8, "y": 0.7},
+                {"matrix": [4, 5], "x": 9, "y": 0.2},
+                {"matrix": [4, 4], "x": 10, "y": 0.1},
+                {"matrix": [4, 3], "x": 11, "y": 0},
+                {"matrix": [4, 2], "x": 12, "y": 0.1},
+                {"matrix": [4, 1], "x": 13, "y": 0.3},
+                {"matrix": [4, 0], "x": 14, "y": 0.3},
+
+                {"matrix": [1, 0], "x": 0, "y": 1.3},
+                {"matrix": [1, 1], "x": 1, "y": 1.3},
+                {"matrix": [1, 2], "x": 2, "y": 1.1},
+                {"matrix": [1, 3], "x": 3, "y": 1},
+                {"matrix": [1, 4], "x": 4, "y": 1.1},
+                {"matrix": [1, 5], "x": 5, "y": 1.2},
+                {"matrix": [1, 6], "x": 6, "y": 1.7},
+
+                {"matrix": [5, 6], "x": 8, "y": 1.7},
+                {"matrix": [5, 5], "x": 9, "y": 1.2},
+                {"matrix": [5, 4], "x": 10, "y": 1.1},
+                {"matrix": [5, 3], "x": 11, "y": 1},
+                {"matrix": [5, 2], "x": 12, "y": 1.1},
+                {"matrix": [5, 1], "x": 13, "y": 1.3},
+                {"matrix": [5, 0], "x": 14, "y": 1.3},
+
+                {"matrix": [2, 0], "x": 0, "y": 2.3},
+                {"matrix": [2, 1], "x": 1, "y": 2.3},
+                {"matrix": [2, 2], "x": 2, "y": 2.1},
+                {"matrix": [2, 3], "x": 3, "y": 2},
+                {"matrix": [2, 4], "x": 4, "y": 2.1},
+                {"matrix": [2, 5], "x": 5, "y": 2.2},
+
+                {"matrix": [6, 5], "x": 9, "y": 2.2},
+                {"matrix": [6, 4], "x": 10, "y": 2.1},
+                {"matrix": [6, 3], "x": 11, "y": 2},
+                {"matrix": [6, 2], "x": 12, "y": 2.1},
+                {"matrix": [6, 1], "x": 13, "y": 2.3},
+                {"matrix": [6, 0], "x": 14, "y": 2.3},
+
+                {"matrix": [3, 3], "x": 4, "y": 3.7},
+                {"matrix": [3, 4], "x": 5, "y": 3.7},
+                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
+
+                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
+                {"matrix": [7, 4], "x": 9, "y": 3.7},
+                {"matrix": [7, 3], "x": 10, "y": 3.7}
+            ]
+        }
+    },
+    "ws2812": {
+        "driver": "vendor",
+        "pin": "GP10"
+    },
+    "rgblight": {
+        "led_count": 46,
+        "split": true,
+        "split_count": [23, 23],
+        "max_brightness": 50,
+        "animations": {
+            "alternating": true,
+            "breathing": true,
+            "christmas": true,
+            "knight": true,
+            "rainbow_mood": true,
+            "rainbow_swirl": true,
+            "rgb_test": true,
+            "snake": true,
+            "static_gradient": true,
+            "twinkle": true
+        }
+    },
+    "rgb_matrix": {
+        "driver": "ws2812",
+        "max_brightness": 50,
+        "animations": {
+            "alphas_mods": true,
+            "gradient_up_down": true,
+            "gradient_left_right": true,
+            "breathing": true,
+            "band_sat": true,
+            "band_val": true,
+            "band_pinwheel_sat": true,
+            "band_pinwheel_val": true,
+            "band_spiral_sat": true,
+            "band_spiral_val": true,
+            "cycle_all": true,
+            "cycle_left_right": true,
+            "cycle_up_down": true,
+            "rainbow_moving_chevron": true,
+            "cycle_out_in": true,
+            "cycle_out_in_dual": true,
+            "cycle_pinwheel": true,
+            "cycle_spiral": true,
+            "dual_beacon": true,
+            "rainbow_beacon": true,
+            "rainbow_pinwheels": true,
+            "raindrops": true,
+            "jellybean_raindrops": true,
+            "hue_breathing": true,
+            "hue_pendulum": true,
+            "hue_wave": true,
+            "pixel_fractal": true,
+            "pixel_flow": true,
+            "pixel_rain": true,
+            "typing_heatmap": true,
+            "digital_rain": true,
+            "solid_reactive_simple": true,
+            "solid_reactive": true,
+            "solid_reactive_wide": true,
+            "solid_reactive_multiwide": true,
+            "solid_reactive_cross": true,
+            "solid_reactive_multicross": true,
+            "solid_reactive_nexus": true,
+            "solid_reactive_multinexus": true,
+            "splash": true,
+            "multisplash": true,
+            "solid_splash": true,
+            "solid_multisplash": true
+        },
+        "sleep": true
+    }
+}

+ 9 - 0
keyboards/crkbd/rev4_1/mcuconf.h

@@ -0,0 +1,9 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE

+ 52 - 0
keyboards/crkbd/rev4_1/mini/keyboard.json

@@ -0,0 +1,52 @@
+{
+    "keyboard_name": "Corne v4 mini",
+    "usb": {
+        "pid": "0x0104"
+    },
+    "rgb_matrix": {
+        "split_count": [20, 20],
+        "layout": [
+            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 4},
+            {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
+            {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
+            {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
+            {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
+            {"matrix": [3, 4], "x": 80, "y": 58, "flags": 4},
+            {"matrix": [3, 3], "x": 60, "y": 55, "flags": 4},
+            {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
+            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
+            {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
+            {"matrix": [0, 6], "x": 103, "y": 17, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 24, "flags": 4},
+
+            {"matrix": [7, 5], "x": 129, "y": 63, "flags": 4},
+            {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
+            {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
+            {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
+            {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
+            {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
+            {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
+            {"matrix": [7, 4], "x": 144, "y": 58, "flags": 4},
+            {"matrix": [7, 3], "x": 164, "y": 55, "flags": 4},
+            {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
+            {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
+            {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
+            {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
+            {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
+            {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
+            {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
+            {"matrix": [4, 6], "x": 122, "y": 17, "flags": 4},
+            {"matrix": [5, 6], "x": 122, "y": 24, "flags": 4}
+        ]
+    }
+}

+ 11 - 0
keyboards/crkbd/rev4_1/post_config.h

@@ -0,0 +1,11 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef OLED_FONT_H
+#  define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+#endif
+#ifndef OLED_UPDATE_INTERVAL
+#    define OLED_UPDATE_INTERVAL 50
+#endif // OLED_UPDATE_INTERVAL

+ 58 - 0
keyboards/crkbd/rev4_1/standard/keyboard.json

@@ -0,0 +1,58 @@
+{
+    "keyboard_name": "Corne v4",
+    "usb": {
+        "pid": "0x0004"
+    },
+    "rgb_matrix": {
+        "split_count": [23, 23],
+        "layout": [
+            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 4},
+            {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
+            {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
+            {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
+            {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
+            {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
+            {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
+            {"matrix": [3, 4], "x": 80, "y": 58, "flags": 4},
+            {"matrix": [3, 3], "x": 60, "y": 55, "flags": 4},
+            {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
+            {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
+            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
+            {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
+            {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
+            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
+            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
+            {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
+            {"matrix": [0, 0], "x": 0, "y": 7, "flags": 4},
+            {"matrix": [1, 0], "x": 0, "y": 24, "flags": 4},
+            {"matrix": [2, 0], "x": 0, "y": 41, "flags": 4},
+            {"matrix": [0, 6], "x": 103, "y": 17, "flags": 4},
+            {"matrix": [1, 6], "x": 103, "y": 24, "flags": 4},
+
+            {"matrix": [7, 5], "x": 129, "y": 63, "flags": 4},
+            {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
+            {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
+            {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
+            {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
+            {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
+            {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
+            {"matrix": [7, 4], "x": 144, "y": 58, "flags": 4},
+            {"matrix": [7, 3], "x": 164, "y": 55, "flags": 4},
+            {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
+            {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
+            {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
+            {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
+            {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
+            {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
+            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
+            {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
+            {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
+            {"matrix": [4, 0], "x": 224, "y": 7, "flags": 4},
+            {"matrix": [5, 0], "x": 224, "y": 24, "flags": 4},
+            {"matrix": [6, 0], "x": 224, "y": 41, "flags": 4},
+            {"matrix": [4, 6], "x": 122, "y": 17, "flags": 4},
+            {"matrix": [5, 6], "x": 122, "y": 24, "flags": 4}
+        ]
+    }
+}