aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <[email protected]>2024-10-06 02:05:10 -0700
committerGitHub <[email protected]>2024-10-06 22:05:10 +1300
commitc9cd92ece3537a91e509488ea0ab1ae8b30d9c65 (patch)
tree4a8ea6b1ef916fdbfb41d676da818b07cb7eea1b
parentddfb8765ec2a15a3bbcc52001649c9ddba0991dc (diff)
downloadqmk_firmware-c9cd92ece3537a91e509488ea0ab1ae8b30d9c65.tar.gz
qmk_firmware-c9cd92ece3537a91e509488ea0ab1ae8b30d9c65.zip
[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
-rw-r--r--keyboards/crkbd/crkbd.c1
-rw-r--r--keyboards/crkbd/info.json144
-rw-r--r--keyboards/crkbd/keymaps/default/keymap.c9
-rw-r--r--keyboards/crkbd/post_config.h32
-rw-r--r--keyboards/crkbd/r2g/keyboard.json15
-rw-r--r--keyboards/crkbd/readme.md17
-rw-r--r--keyboards/crkbd/rev1/keyboard.json120
-rwxr-xr-xkeyboards/crkbd/rev4_0/config.h17
-rwxr-xr-xkeyboards/crkbd/rev4_0/info.json367
-rwxr-xr-xkeyboards/crkbd/rev4_0/mcuconf.h9
-rwxr-xr-xkeyboards/crkbd/rev4_0/mini/keyboard.json52
-rwxr-xr-xkeyboards/crkbd/rev4_0/post_config.h11
-rwxr-xr-xkeyboards/crkbd/rev4_0/standard/keyboard.json58
-rwxr-xr-xkeyboards/crkbd/rev4_1/config.h16
-rwxr-xr-xkeyboards/crkbd/rev4_1/info.json363
-rwxr-xr-xkeyboards/crkbd/rev4_1/mcuconf.h9
-rwxr-xr-xkeyboards/crkbd/rev4_1/mini/keyboard.json52
-rwxr-xr-xkeyboards/crkbd/rev4_1/post_config.h11
-rwxr-xr-xkeyboards/crkbd/rev4_1/standard/keyboard.json58
19 files changed, 1199 insertions, 162 deletions
diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c
index 2ac0e63125..ae94088d29 100644
--- a/keyboards/crkbd/crkbd.c
+++ b/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) {
diff --git a/keyboards/crkbd/info.json b/keyboards/crkbd/info.json
index 880cbccc29..31ee98e269 100644
--- a/keyboards/crkbd/info.json
+++ b/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
+ }
}
diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c
index e46743af6b..f4d6f900ce 100644
--- a/keyboards/crkbd/keymaps/default/keymap.c
+++ b/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
diff --git a/keyboards/crkbd/post_config.h b/keyboards/crkbd/post_config.h
index aaf405a5bf..dcc194479b 100644
--- a/keyboards/crkbd/post_config.h
+++ b/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
diff --git a/keyboards/crkbd/r2g/keyboard.json b/keyboards/crkbd/r2g/keyboard.json
index e6c49d5fc8..15d5ef0a03 100644
--- a/keyboards/crkbd/r2g/keyboard.json
+++ b/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": [
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index 4297ee56d9..7e921ad66d 100644
--- a/keyboards/crkbd/readme.md
+++ b/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.
diff --git a/keyboards/crkbd/rev1/keyboard.json b/keyboards/crkbd/rev1/keyboard.json
index c9b5c27884..2b32a5c8f6 100644
--- a/keyboards/crkbd/rev1/keyboard.json
+++ b/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"
}
diff --git a/keyboards/crkbd/rev4_0/config.h b/keyboards/crkbd/rev4_0/config.h
new file mode 100755
index 0000000000..228fc6dc07
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_0/info.json b/keyboards/crkbd/rev4_0/info.json
new file mode 100755
index 0000000000..2eda29a53f
--- /dev/null
+++ b/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
+ }
+}
diff --git a/keyboards/crkbd/rev4_0/mcuconf.h b/keyboards/crkbd/rev4_0/mcuconf.h
new file mode 100755
index 0000000000..543d4703b0
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_0/mini/keyboard.json b/keyboards/crkbd/rev4_0/mini/keyboard.json
new file mode 100755
index 0000000000..a455b1ba21
--- /dev/null
+++ b/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}
+ ]
+ }
+}
diff --git a/keyboards/crkbd/rev4_0/post_config.h b/keyboards/crkbd/rev4_0/post_config.h
new file mode 100755
index 0000000000..d9669a4cc3
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_0/standard/keyboard.json b/keyboards/crkbd/rev4_0/standard/keyboard.json
new file mode 100755
index 0000000000..ba90a9e5f5
--- /dev/null
+++ b/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}
+ ]
+ }
+}
diff --git a/keyboards/crkbd/rev4_1/config.h b/keyboards/crkbd/rev4_1/config.h
new file mode 100755
index 0000000000..6f7d290ddc
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_1/info.json b/keyboards/crkbd/rev4_1/info.json
new file mode 100755
index 0000000000..3732d63910
--- /dev/null
+++ b/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
+ }
+}
diff --git a/keyboards/crkbd/rev4_1/mcuconf.h b/keyboards/crkbd/rev4_1/mcuconf.h
new file mode 100755
index 0000000000..543d4703b0
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_1/mini/keyboard.json b/keyboards/crkbd/rev4_1/mini/keyboard.json
new file mode 100755
index 0000000000..a455b1ba21
--- /dev/null
+++ b/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}
+ ]
+ }
+}
diff --git a/keyboards/crkbd/rev4_1/post_config.h b/keyboards/crkbd/rev4_1/post_config.h
new file mode 100755
index 0000000000..4cb5c8b236
--- /dev/null
+++ b/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
diff --git a/keyboards/crkbd/rev4_1/standard/keyboard.json b/keyboards/crkbd/rev4_1/standard/keyboard.json
new file mode 100755
index 0000000000..ba90a9e5f5
--- /dev/null
+++ b/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}
+ ]
+ }
+}