[Keyboard] Add Sofle Choc Prog from keebart (#24974)

This commit is contained in:
André Cruz 2025-03-13 21:04:32 +00:00 committed by GitHub
parent 8ae5d34c0d
commit 65aef7be95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 323 additions and 0 deletions

View File

@ -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

View File

@ -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}
]
}
}
}

View File

@ -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

View File

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

View File

@ -0,0 +1,28 @@
# Sofle Choc Pro
![sofle_choc_pro](https://i.imgur.com/q9A2HMe.jpeg)
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