Merge remote-tracking branch 'origin/master' into develop
Update API Data / api_data (push) Canceled after 0s
CI Build Major Branch / Determine concurrency (push) Canceled after 0s
CLI CI / test (push) Canceled after 0s
Update feature branches after develop merge / feature_branch_update (riot) (push) Canceled after 0s
Update feature branches after develop merge / feature_branch_update (xap) (push) Canceled after 0s
Lint Format / lint (push) Canceled after 0s
Regenerate Files / regen (push) Canceled after 0s
Unit Tests / test (push) Canceled after 0s
CI Build Major Branch / Compile keymap ${{ fromJson(needs.determine_concurrency.outputs.keymaps) }} (push) Canceled after 0s
CI Build Major Branch / Consolidation (push) Canceled after 0s

This commit is contained in:
QMK Bot
2026-08-03 05:12:38 +00:00
12 changed files with 1219 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
// Copyright 2026 Yiancar
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* RGB Light */
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM5
#define WS2812_PWM_DMA_CHANNEL 5
+8
View File
@@ -0,0 +1,8 @@
// Copyright 2026 Yiancar
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,14 @@
// Copyright 2026 Yiancar
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
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_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT)
};
+9
View File
@@ -0,0 +1,9 @@
// Copyright 2026 Yiancar
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE
+32
View File
@@ -0,0 +1,32 @@
# Stratum
This is a standard TKL layout PCB. It supports VIA.
* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
* Hardware Supported: A TKL keyboard with STM32F072CB
* Hardware Availability: https://artifact-industries.com
## Instructions
### Build
Make example for this keyboard (after setting up your build environment):
make artifact/stratum: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).
### Reset
- Unplug
- Hold Escape
- Plug In
- Unplug
- Release Escape
### Flash
- Unplug
- Hold Escape
- Plug In
- Flash using QMK Toolbox or CLI (`make artifact/stratum:<keymap>:flash`)
+9
View File
@@ -0,0 +1,9 @@
// Copyright 2026 Yiancar
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
void led_init_ports(void) {
// Set our LED pins as open drain outputs
gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN);
}
@@ -0,0 +1,7 @@
// Copyright 2026 Matt F
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
@@ -0,0 +1,130 @@
{
"manufacturer": "Krado Industries",
"keyboard_name": "Promenade RP24HS",
"maintainer": "Feags",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "GP12", "pin_b": "GP15"},
{"pin_a": "GP12", "pin_b": "GP16"},
{"pin_a": "GP16", "pin_b": "GP15"},
{"pin_a": "GP18", "pin_b": "GP12"}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["GP20", "GP10", "GP9", "GP8", "GP7", "GP6", "GP14", "GP13", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0"],
"rows": ["GP29", "GP28", "GP27", "GP19", "GP17"]
},
"processor": "RP2040",
"rgblight": {
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"snake": true,
"static_gradient": true,
"twinkle": true
},
"led_count": 14,
"sleep": true
},
"url": "https://www.kradoindustries.com/",
"usb": {
"device_version": "1.0.0",
"pid": "0x4853",
"vid": "0x4B72",
"suspend_wakeup_delay": 200
},
"ws2812": {
"driver": "vendor",
"pin": "GP26"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5},
{"matrix": [0, 1], "x": 1.5, "y": 0},
{"matrix": [0, 2], "x": 2.5, "y": 0},
{"matrix": [0, 3], "x": 3.5, "y": 0},
{"matrix": [0, 4], "x": 4.5, "y": 0},
{"matrix": [0, 5], "x": 5.5, "y": 0},
{"matrix": [0, 6], "x": 6.5, "y": 0},
{"matrix": [0, 7], "x": 7.5, "y": 0},
{"matrix": [0, 8], "x": 8.5, "y": 0},
{"matrix": [0, 9], "x": 9.5, "y": 0},
{"matrix": [0, 10], "x": 10.5, "y": 0},
{"matrix": [0, 11], "x": 11.5, "y": 0},
{"matrix": [0, 12], "x": 12.5, "y": 0},
{"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2},
{"matrix": [2, 2], "x": 2.5, "y": 2},
{"matrix": [2, 3], "x": 3.5, "y": 2},
{"matrix": [2, 4], "x": 4.5, "y": 2},
{"matrix": [2, 5], "x": 5.5, "y": 2},
{"matrix": [2, 6], "x": 6.5, "y": 2},
{"matrix": [2, 7], "x": 7.5, "y": 2},
{"matrix": [2, 8], "x": 8.5, "y": 2},
{"matrix": [2, 9], "x": 9.5, "y": 2},
{"matrix": [2, 10], "x": 10.5, "y": 2},
{"matrix": [2, 11], "x": 11.5, "y": 2},
{"matrix": [2, 12], "x": 12.5, "y": 2},
{"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
{"matrix": [3, 1], "x": 1.5, "y": 3},
{"matrix": [3, 2], "x": 2.5, "y": 3},
{"matrix": [3, 3], "x": 3.5, "y": 3},
{"matrix": [3, 4], "x": 4.5, "y": 3},
{"matrix": [3, 5], "x": 5.5, "y": 3},
{"matrix": [3, 6], "x": 6.5, "y": 3},
{"matrix": [3, 7], "x": 7.5, "y": 3},
{"matrix": [3, 8], "x": 8.5, "y": 3},
{"matrix": [3, 9], "x": 9.5, "y": 3},
{"matrix": [3, 10], "x": 10.5, "y": 3},
{"matrix": [3, 11], "x": 11.5, "y": 3},
{"matrix": [3, 12], "x": 12.5, "y": 3},
{"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.5},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4},
{"matrix": [4, 3], "x": 3.5, "y": 4},
{"matrix": [4, 4], "x": 4.5, "y": 4},
{"matrix": [4, 5], "x": 5.5, "y": 4},
{"matrix": [4, 6], "x": 6.5, "y": 4},
{"matrix": [4, 7], "x": 7.5, "y": 4},
{"matrix": [4, 8], "x": 8.5, "y": 4},
{"matrix": [4, 9], "x": 9.5, "y": 4},
{"matrix": [4, 10], "x": 10.5, "y": 4},
{"matrix": [4, 11], "x": 11.5, "y": 4},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}
@@ -0,0 +1,84 @@
// Copyright 2026 Matt F
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#define _FN MO(3)
#define FN_BACK LT(3, KC_BSPC)
#define ZOOMIN C(KC_EQL)
#define ZOOMOUT C(KC_MINS)
#define NTAB C(KC_TAB)
#define BTAB C(S(KC_TAB))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
/* Base Layer
* .------------------------------------------------------------------------------------------------------------------------------------.
* | Grave | 1 | 2 | 3 | 4 | 5 | - | = | 6 | 7 | 8 | 9 | 0 | Backspace |
* | | | | | | | | | | | | | | |
* |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------|
* | Tab | Q | W | E | R | T | [ | ] | Y | U | I | O | P | Del |
* | | | | | | | | | | | | | | |
* |-----------+--------+--------+--------+--------+--------|--------+--------|--------+--------+--------+-----------------+-----------|
* | FN_BACK | A | S | D | F | G | [ | ] | H | J | K | L | " | Enter |
* | | | | | | | | | | | | | ' | |
* |-----------+--------+--------+--------+--------+--------|--------+--------|--------+--------+--------------------------+-----------|
* | LShift | Z | X | C | V | B | BTab | NTab | N | M | < | > | ? | RShift |
* | | | | | | | | | | | , | . | / | |
* |-----------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+-----------|
* | LCTRL | LGUI | LALT | FN | Space | Space | Space | Space | Space | RALT | Vol- | Mute | Vol+ | RCTRL |
* | | | | | | | | | | | | | | |
* '-----------------------------------------------------------------------------------------------------------------------------------'
*/
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
FN_BACK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, BTAB, NTAB, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC,
KC_LCTL, KC_LGUI, KC_LALT, _FN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_VOLD, KC_MUTE, KC_VOLU, KC_RCTL
),
[1] = LAYOUT( /* Layer One */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, _FN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_VOLD, KC_MUTE, KC_VOLU, KC_RCTL
),
[2] = LAYOUT( /* Layer Two */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, ZOOMIN, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
FN_BACK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ZOOMOUT, KC_LBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, _FN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_VOLD, KC_MUTE, KC_VOLU, KC_RCTL
),
[3] = LAYOUT( /* Layer Three */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, DF(0) , DF(1) , _______, _______, _______, _______, KC_PSCR, KC_BSLS,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT,
_______, _______, _______, _______, _______, _______, DF(2) , _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, KC_CAPS,
_______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______, _______, QK_BOOT
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)),
ENCODER_CCW_CW(KC_LEFT, KC_RGHT), ENCODER_CCW_CW(MS_WHLU, MS_WHLD)},
[1 ... 3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______),
ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______)}
};
#endif
@@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes
@@ -0,0 +1,31 @@
# Promenade RP24HS
![Promenade RP24HS](https://i.imgur.com/uQOhmmJ.jpeg)
The Promenade RP24HS is the newer version of the [Promenade](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kradoindustries/promenade) which is based on the [Boardwalk](https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardwalk), a 60% ortholinear keyboard that uses 1.5u Ergodoxian modifier keys. In addition to Pok3r-style 60% tray mounting points, the pcb also has edge cuts for use in gummy o-ring mount boards like the Bakeneko60. Some additional spacebar options including 3u and 6u were added. The pcb has two footprint locations for a JST connector, many breakout pins, and several rotary encoder locations. The MCU has been upgraded to a RP2040 with 32M-bit of flash memory.
The 1.5u vertical inner mods are the default configuration, but the board can be configured to use 3x2 1u keys either by removing the existing hotswap sockets and soldering 6 hotswap sockets to the 1u pads. *Note that the some of the 1u keys may require the plastic legs of 5-pin switches to be trimmed.*
* Keyboard Maintainer: [Feags](https://github.com/Feags) / [Krado Industries](https://kradoindustries.com/)
* Hardware Supported: Promenade pcb. Many 60% cases.
* Hardware Availability: [Krado Industries](https://kradoindustries.com/)
Make example for this keyboard (after setting up your build environment):
make kradoindustries/promenade_rp24hs:default
Flashing example for this keyboard:
make kradoindustries/promenade_rp24hs: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 key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available