commit: 4f257711e09b5877d872f4ff67ac2fc15fa8792f
parent 27b115151fdc07867d2d0c3a21d4b66510085d4c
Author: QMK Bot <hello@qmk.fm>
Date: Thu, 13 Mar 2025 21:05:09 +0000
Merge remote-tracking branch 'origin/master' into develop
Diffstat:
5 files changed, 323 insertions(+), 0 deletions(-)
diff --git a/keyboards/keebart/sofle_choc_pro/config.h b/keyboards/keebart/sofle_choc_pro/config.h
@@ -0,0 +1,10 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define USB_VBUS_PIN GP13
+
+/* RP2040- and hardware-specific config */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
diff --git a/keyboards/keebart/sofle_choc_pro/keyboard.json b/keyboards/keebart/sofle_choc_pro/keyboard.json
@@ -0,0 +1,235 @@
+{
+ "manufacturer": "Keebart",
+ "keyboard_name": "sofle_choc_pro",
+ "maintainer": "Keebart",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "GP23", "pin_b": "GP22"}
+ ]
+ },
+ "features": {
+ "bootmagic": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["GP27", "GP26", "GP25", "GP24", "GP19", "GP18"],
+ "rows": ["GP0", "GP1", "GP2", "GP3", "GP4"]
+ },
+ "processor": "RP2040",
+ "rgb_matrix": {
+ "animations": {
+ "alphas_mods": true,
+ "band_pinwheel_sat": true,
+ "band_pinwheel_val": true,
+ "band_sat": true,
+ "band_spiral_sat": true,
+ "band_spiral_val": true,
+ "band_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "multisplash": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_multisplash": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_multicross": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"matrix": [4, 5], "x": 99, "y": 38, "flags": 4},
+ {"matrix": [4, 4], "x": 91, "y": 64, "flags": 4},
+ {"matrix": [4, 3], "x": 77, "y": 60, "flags": 4},
+ {"matrix": [3, 5], "x": 82, "y": 45, "flags": 4},
+ {"matrix": [2, 5], "x": 82, "y": 31, "flags": 4},
+ {"matrix": [1, 5], "x": 82, "y": 17, "flags": 4},
+ {"matrix": [0, 5], "x": 82, "y": 3, "flags": 4},
+ {"matrix": [0, 4], "x": 66, "y": 2, "flags": 4},
+ {"matrix": [1, 4], "x": 66, "y": 16, "flags": 4},
+ {"matrix": [2, 4], "x": 66, "y": 29, "flags": 4},
+ {"matrix": [3, 4], "x": 66, "y": 43, "flags": 4},
+ {"matrix": [4, 2], "x": 58, "y": 59, "flags": 4},
+ {"matrix": [4, 1], "x": 41, "y": 59, "flags": 4},
+ {"matrix": [3, 3], "x": 49, "y": 41, "flags": 4},
+ {"matrix": [2, 3], "x": 49, "y": 28, "flags": 4},
+ {"matrix": [1, 3], "x": 49, "y": 16, "flags": 4},
+ {"matrix": [0, 3], "x": 49, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 33, "y": 2, "flags": 4},
+ {"matrix": [1, 2], "x": 33, "y": 16, "flags": 4},
+ {"matrix": [2, 2], "x": 33, "y": 29, "flags": 4},
+ {"matrix": [3, 2], "x": 33, "y": 43, "flags": 4},
+ {"matrix": [4, 0], "x": 25, "y": 60, "flags": 4},
+ {"matrix": [3, 1], "x": 16, "y": 47, "flags": 4},
+ {"matrix": [2, 1], "x": 16, "y": 33, "flags": 4},
+ {"matrix": [1, 1], "x": 16, "y": 19, "flags": 4},
+ {"matrix": [0, 1], "x": 16, "y": 5, "flags": 4},
+ {"matrix": [0, 0], "x": 0, "y": 5, "flags": 4},
+ {"matrix": [1, 0], "x": 0, "y": 19, "flags": 4},
+ {"matrix": [2, 0], "x": 0, "y": 33, "flags": 4},
+ {"matrix": [3, 0], "x": 0, "y": 47, "flags": 4},
+ {"matrix": [9, 5], "x": 125, "y": 38, "flags": 4},
+ {"matrix": [9, 4], "x": 134, "y": 64, "flags": 4},
+ {"matrix": [9, 3], "x": 147, "y": 60, "flags": 4},
+ {"matrix": [8, 5], "x": 142, "y": 45, "flags": 4},
+ {"matrix": [7, 5], "x": 142, "y": 31, "flags": 4},
+ {"matrix": [6, 5], "x": 142, "y": 17, "flags": 4},
+ {"matrix": [5, 5], "x": 142, "y": 3, "flags": 4},
+ {"matrix": [5, 4], "x": 158, "y": 2, "flags": 4},
+ {"matrix": [6, 4], "x": 158, "y": 16, "flags": 4},
+ {"matrix": [7, 4], "x": 158, "y": 29, "flags": 4},
+ {"matrix": [8, 4], "x": 158, "y": 43, "flags": 4},
+ {"matrix": [9, 2], "x": 166, "y": 59, "flags": 4},
+ {"matrix": [9, 1], "x": 183, "y": 59, "flags": 4},
+ {"matrix": [8, 3], "x": 175, "y": 41, "flags": 4},
+ {"matrix": [7, 3], "x": 175, "y": 28, "flags": 4},
+ {"matrix": [6, 3], "x": 175, "y": 16, "flags": 4},
+ {"matrix": [5, 3], "x": 175, "y": 0, "flags": 4},
+ {"matrix": [5, 2], "x": 191, "y": 2, "flags": 4},
+ {"matrix": [6, 2], "x": 191, "y": 16, "flags": 4},
+ {"matrix": [7, 2], "x": 191, "y": 29, "flags": 4},
+ {"matrix": [8, 2], "x": 191, "y": 43, "flags": 4},
+ {"matrix": [9, 0], "x": 199, "y": 60, "flags": 4},
+ {"matrix": [8, 1], "x": 208, "y": 47, "flags": 4},
+ {"matrix": [7, 1], "x": 208, "y": 33, "flags": 4},
+ {"matrix": [6, 1], "x": 208, "y": 19, "flags": 4},
+ {"matrix": [5, 1], "x": 208, "y": 5, "flags": 4},
+ {"matrix": [5, 0], "x": 224, "y": 5, "flags": 4},
+ {"matrix": [6, 0], "x": 224, "y": 19, "flags": 4},
+ {"matrix": [7, 0], "x": 224, "y": 33, "flags": 4},
+ {"matrix": [8, 0], "x": 224, "y": 47, "flags": 4}
+ ],
+ "max_brightness": 50,
+ "sleep": true,
+ "split_count": [30, 30]
+ },
+ "split": {
+ "bootmagic": {
+ "matrix": [5, 0]
+ },
+ "enabled": true,
+ "handedness": {
+ "pin": "GP21"
+ },
+ "serial": {
+ "driver": "vendor",
+ "pin": "GP12"
+ },
+ "transport": {
+ "sync": {
+ "indicators": true,
+ "layer_state": true,
+ "matrix_state": true
+ }
+ }
+ },
+ "url": "https://keebart.com/products/sofle",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "suspend_wakeup_delay": 200,
+ "vid": "0xFEED"
+ },
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP10"
+ },
+ "layouts": {
+ "LAYOUT_split_4x6_5": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0.375},
+ {"matrix": [0, 1], "x": 1, "y": 0.375},
+ {"matrix": [0, 2], "x": 2, "y": 0.125},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0.125},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [5, 5], "x": 9, "y": 0.25},
+ {"matrix": [5, 4], "x": 10, "y": 0.125},
+ {"matrix": [5, 3], "x": 11, "y": 0},
+ {"matrix": [5, 2], "x": 12, "y": 0.125},
+ {"matrix": [5, 1], "x": 13, "y": 0.375},
+ {"matrix": [5, 0], "x": 14, "y": 0.375},
+ {"matrix": [1, 0], "x": 0, "y": 1.375},
+ {"matrix": [1, 1], "x": 1, "y": 1.375},
+ {"matrix": [1, 2], "x": 2, "y": 1.125},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1.125},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [6, 5], "x": 9, "y": 1.25},
+ {"matrix": [6, 4], "x": 10, "y": 1.125},
+ {"matrix": [6, 3], "x": 11, "y": 1},
+ {"matrix": [6, 2], "x": 12, "y": 1.125},
+ {"matrix": [6, 1], "x": 13, "y": 1.375},
+ {"matrix": [6, 0], "x": 14, "y": 1.375},
+ {"matrix": [2, 0], "x": 0, "y": 2.375},
+ {"matrix": [2, 1], "x": 1, "y": 2.375},
+ {"matrix": [2, 2], "x": 2, "y": 2.125},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2.125},
+ {"matrix": [2, 5], "x": 5, "y": 2.25},
+ {"matrix": [7, 5], "x": 9, "y": 2.25},
+ {"matrix": [7, 4], "x": 10, "y": 2.125},
+ {"matrix": [7, 3], "x": 11, "y": 2},
+ {"matrix": [7, 2], "x": 12, "y": 2.125},
+ {"matrix": [7, 1], "x": 13, "y": 2.375},
+ {"matrix": [7, 0], "x": 14, "y": 2.375},
+ {"matrix": [3, 0], "x": 0, "y": 3.375},
+ {"matrix": [3, 1], "x": 1, "y": 3.375},
+ {"matrix": [3, 2], "x": 2, "y": 3.125},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3.125},
+ {"matrix": [3, 5], "x": 5, "y": 3.25},
+ {"matrix": [4, 5], "x": 6, "y": 2.75},
+ {"matrix": [9, 5], "x": 8, "y": 2.75},
+ {"matrix": [8, 5], "x": 9, "y": 3.25},
+ {"matrix": [8, 4], "x": 10, "y": 3.125},
+ {"matrix": [8, 3], "x": 11, "y": 3},
+ {"matrix": [8, 2], "x": 12, "y": 3.125},
+ {"matrix": [8, 1], "x": 13, "y": 3.375},
+ {"matrix": [8, 0], "x": 14, "y": 3.375},
+ {"matrix": [4, 0], "x": 1.5, "y": 4.375},
+ {"matrix": [4, 1], "x": 2.5, "y": 4.25},
+ {"matrix": [4, 2], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 3], "x": 4.5, "y": 4.375},
+ {"matrix": [4, 4], "x": 6, "y": 4.375, "h": 1.5},
+ {"matrix": [9, 4], "x": 8, "y": 4.375, "h": 1.5},
+ {"matrix": [9, 3], "x": 9.5, "y": 4.375},
+ {"matrix": [9, 2], "x": 10.5, "y": 4.25},
+ {"matrix": [9, 1], "x": 11.5, "y": 4.25},
+ {"matrix": [9, 0], "x": 12.5, "y": 4.375}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebart/sofle_choc_pro/keymaps/default/keymap.c b/keyboards/keebart/sofle_choc_pro/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ BASE, // default layer
+ MDIA, // media keys
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | CAPS | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| Mute | | Pause |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LCTL | LALT | LCMD | LGUI | /Enter / \Space \ | RGUI | DEL | RALT | RCTL |
+ * | | | | LT1 |/ / \ \ | LT1 | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+
+[BASE] = LAYOUT_split_4x6_5(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LCMD, LT(MDIA,KC_LGUI), KC_ENT, KC_SPC, LT(MDIA,KC_RGUI), KC_DEL, KC_RALT, KC_RCTL
+),
+[MDIA] = LAYOUT_split_4x6_5(
+ KC_MUTE,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ RM_TOGG,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ RM_NEXT,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ RM_HUEU,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______, _______, _______,_______,_______,_______
+)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [MDIA] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }
+};
+#endif
diff --git a/keyboards/keebart/sofle_choc_pro/keymaps/default/rules.mk b/keyboards/keebart/sofle_choc_pro/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebart/sofle_choc_pro/readme.md b/keyboards/keebart/sofle_choc_pro/readme.md
@@ -0,0 +1,28 @@
+# Sofle Choc Pro
+
+
+
+A complete remake of the Sofle Choc Keyboard by Josef Adamčík. Featuring an onboard RP2040 with 128 MB flash
+memory and choc-spaced keys for a more compact keyboard.
+
+- Keyboard Maintainer: [Keebart](https://github.com/Keebart)
+- Hardware Supported: RP2040
+- Hardware Availability: [Keebart Shop](https://keebart.com/products/sofle)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebart/sofle_choc_pro:default
+
+Flashing example for this keyboard:
+
+ make keebart/sofle_choc_pro:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+- **Bootmagic reset**: Hold down the top left key of the left side of the keyboard while connecting the left side to the computer. Similarly, hold down the top right key of the right side of the keyboard while connecting the right side to the computer.
+- **Physical reset button**: Briefly press the button on the back of the PCB
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available