mirror of
https://github.com/qmk/qmk_userspace.git
synced 2026-04-22 11:30:23 -04:00
Revert to pure userspace; fix chordal hold thumb keys and add layer-tap override
- Remove qmk_firmware submodule, restore CI to build against external Keebart repo - Fix chordal_hold_layout: thumbs marked 'L'/'R' (not '*') so same-hand fast typing resolves as tap, cross-hand resolves as hold - Add get_chordal_hold() override: layer-taps always hold (for same-hand layer access), mod-taps use default cross-hand logic - Simplify README back to standard userspace overlay Agent-Logs-Url: https://github.com/timfee/qmk_userspace/sessions/2bf6f380-de28-4523-a92b-40d4f1aa2c25 Co-authored-by: timfee <3246342+timfee@users.noreply.github.com>
This commit is contained in:
parent
0ae44543fa
commit
d1339355fd
5 changed files with 26 additions and 70 deletions
5
.github/workflows/build_binaries.yaml
vendored
5
.github/workflows/build_binaries.yaml
vendored
|
|
@ -9,8 +9,9 @@ jobs:
|
|||
build:
|
||||
name: 'QMK Userspace Build'
|
||||
uses: qmk/.github/.github/workflows/qmk_userspace_build.yml@main
|
||||
# Firmware lives in qmk_firmware/ submodule — no external repo needed.
|
||||
# The reusable workflow detects the submodule and skips its own clone.
|
||||
with:
|
||||
qmk_repo: Keebart/vial-qmk-corne-choc-pro
|
||||
qmk_ref: vial
|
||||
|
||||
publish:
|
||||
name: 'QMK Userspace Publish'
|
||||
|
|
|
|||
4
.gitmodules
vendored
4
.gitmodules
vendored
|
|
@ -1,4 +0,0 @@
|
|||
[submodule "qmk_firmware"]
|
||||
path = qmk_firmware
|
||||
url = https://github.com/Keebart/vial-qmk-corne-choc-pro.git
|
||||
branch = vial
|
||||
61
README.md
61
README.md
|
|
@ -1,14 +1,7 @@
|
|||
# QMK Userspace — Keebart Corne Choc Pro
|
||||
|
||||
Self-contained repo: firmware (Keebart's QMK fork) is embedded as a submodule at `qmk_firmware/`.
|
||||
No waiting on upstream — cherry-pick, merge, or patch anything you want right here.
|
||||
|
||||
## Quick start
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/timfee/qmk_userspace.git
|
||||
cd qmk_userspace
|
||||
```
|
||||
QMK userspace overlay for the Keebart Corne Choc Pro. Builds against
|
||||
[Keebart/vial-qmk-corne-choc-pro](https://github.com/Keebart/vial-qmk-corne-choc-pro) (vial branch).
|
||||
|
||||
GitHub Actions builds the `.uf2` automatically on push — download from the **Releases** tab.
|
||||
|
||||
|
|
@ -18,54 +11,6 @@ Flash: hold **Q** while plugging in the left half, drag `.uf2` onto `RPI-RP2`. R
|
|||
|
||||
```bash
|
||||
pip install qmk
|
||||
qmk setup -H qmk_firmware # point QMK at the submodule
|
||||
qmk setup -H . --home $(pwd)/qmk_firmware
|
||||
qmk compile -kb keebart/corne_choc_pro/standard -km timfee
|
||||
```
|
||||
|
||||
## Pulling upstream changes
|
||||
|
||||
The submodule tracks the `vial` branch of `Keebart/vial-qmk-corne-choc-pro`.
|
||||
|
||||
```bash
|
||||
# Pull latest from Keebart
|
||||
cd qmk_firmware
|
||||
git fetch origin
|
||||
git merge origin/vial # or: git rebase origin/vial
|
||||
cd ..
|
||||
git add qmk_firmware
|
||||
git commit -m "Update firmware submodule"
|
||||
```
|
||||
|
||||
### Cherry-picking from other repos (e.g. Keebart/vial-qmk-keebart, qmk/qmk_firmware)
|
||||
|
||||
```bash
|
||||
cd qmk_firmware
|
||||
|
||||
# Add any upstream remote once
|
||||
git remote add upstream-qmk https://github.com/qmk/qmk_firmware.git
|
||||
git remote add keebart-full https://github.com/Keebart/vial-qmk-keebart.git
|
||||
|
||||
# Fetch and cherry-pick
|
||||
git fetch keebart-full
|
||||
git cherry-pick <commit-sha> # e.g. OLED SSD1312 support
|
||||
|
||||
cd ..
|
||||
git add qmk_firmware
|
||||
git commit -m "Cherry-pick: <description>"
|
||||
```
|
||||
|
||||
### Switching to your own firmware fork
|
||||
|
||||
If you fork `Keebart/vial-qmk-corne-choc-pro` to your own GitHub account:
|
||||
|
||||
```bash
|
||||
cd qmk_firmware
|
||||
git remote set-url origin https://github.com/YOUR_USER/vial-qmk-corne-choc-pro.git
|
||||
git push origin vial # push your changes to your fork
|
||||
cd ..
|
||||
# Update .gitmodules to point at your fork
|
||||
git config -f .gitmodules submodule.qmk_firmware.url \
|
||||
https://github.com/YOUR_USER/vial-qmk-corne-choc-pro.git
|
||||
git add .gitmodules qmk_firmware
|
||||
git commit -m "Point submodule at my firmware fork"
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 4649f864f15ba9f540ee83d66b50cb9fcd4f7e59
|
||||
|
|
@ -7,7 +7,10 @@
|
|||
|
||||
// ── Chordal Hold layout ──
|
||||
// Defines hand assignments for the "opposite hands" tap-hold rule.
|
||||
// 'L' = left hand, 'R' = right hand, '*' = either (thumb keys).
|
||||
// 'L' = left hand, 'R' = right hand.
|
||||
// Thumbs are assigned to their physical hand so that same-hand fast
|
||||
// typing (e.g. backspace → A) resolves as tap, while cross-hand
|
||||
// shortcuts (e.g. left-thumb CMD + right-hand key) resolve as hold.
|
||||
// Matrix: 8 rows × 7 cols (4 rows per half, split keyboard).
|
||||
// Rows 0-2: left finger rows Rows 4-6: right finger rows
|
||||
// Row 3: left thumb Row 7: right thumb
|
||||
|
|
@ -15,13 +18,25 @@ const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
|
|||
{'L', 'L', 'L', 'L', 'L', 'L', 'L'}, // row 0: left top
|
||||
{'L', 'L', 'L', 'L', 'L', 'L', 'L'}, // row 1: left mid
|
||||
{'L', 'L', 'L', 'L', 'L', 'L', 0 }, // row 2: left bot
|
||||
{ 0, 0, 0, '*', '*', '*', 0 }, // row 3: left thumb
|
||||
{ 0, 0, 0, 'L', 'L', 'L', 0 }, // row 3: left thumb
|
||||
{'R', 'R', 'R', 'R', 'R', 'R', 'R'}, // row 4: right top
|
||||
{'R', 'R', 'R', 'R', 'R', 'R', 'R'}, // row 5: right mid
|
||||
{'R', 'R', 'R', 'R', 'R', 'R', 0 }, // row 6: right bot
|
||||
{ 0, 0, 0, '*', '*', '*', 0 }, // row 7: right thumb
|
||||
{ 0, 0, 0, 'R', 'R', 'R', 0 }, // row 7: right thumb
|
||||
};
|
||||
|
||||
// ── Chordal Hold per-key override ──
|
||||
// Layer-tap keys (ESC_L2, MIN_L1) must always resolve as hold when
|
||||
// another key is pressed so the layer activates — even for same-hand keys.
|
||||
// Mod-tap keys use the default layout-based logic (cross-hand = hold).
|
||||
bool get_chordal_hold(uint16_t tap_hold_keycode, keyrecord_t *tap_hold_record,
|
||||
uint16_t other_keycode, keyrecord_t *other_record) {
|
||||
if (IS_QK_LAYER_TAP(tap_hold_keycode)) {
|
||||
return true;
|
||||
}
|
||||
return get_chordal_hold_default(tap_hold_record, other_record);
|
||||
}
|
||||
|
||||
// ── Combos (matching Vial config) ──
|
||||
const uint16_t PROGMEM lparen_combo[] = {KC_R, KC_T, COMBO_END};
|
||||
const uint16_t PROGMEM rparen_combo[] = {KC_Y, KC_U, COMBO_END};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue