aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorQMK Bot <[email protected]>2025-03-13 21:05:09 +0000
committerQMK Bot <[email protected]>2025-03-13 21:05:09 +0000
commit4f257711e09b5877d872f4ff67ac2fc15fa8792f (patch)
tree6e6a5b5f3cf0a084166ec96aec4ca162e0b0acee /keyboards
parent27b115151fdc07867d2d0c3a21d4b66510085d4c (diff)
parent65aef7be95025a8a26fa8fe0c4af3ce0d36f47f4 (diff)
downloadqmk_firmware-4f257711e09b5877d872f4ff67ac2fc15fa8792f.tar.gz
qmk_firmware-4f257711e09b5877d872f4ff67ac2fc15fa8792f.zip
Merge remote-tracking branch 'origin/master' into developHEADdevelop
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/keebart/sofle_choc_pro/config.h10
-rw-r--r--keyboards/keebart/sofle_choc_pro/keyboard.json235
-rw-r--r--keyboards/keebart/sofle_choc_pro/keymaps/default/keymap.c49
-rw-r--r--keyboards/keebart/sofle_choc_pro/keymaps/default/rules.mk1
-rw-r--r--keyboards/keebart/sofle_choc_pro/readme.md28
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
new file mode 100644
index 0000000000..5c9b6ff8f1
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..a1ba222388
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..c6f33d9c56
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..8f0e797be0
--- /dev/null
+++ b/keyboards/keebart/sofle_choc_pro/readme.md
@@ -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