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:
|
build:
|
||||||
name: 'QMK Userspace Build'
|
name: 'QMK Userspace Build'
|
||||||
uses: qmk/.github/.github/workflows/qmk_userspace_build.yml@main
|
uses: qmk/.github/.github/workflows/qmk_userspace_build.yml@main
|
||||||
# Firmware lives in qmk_firmware/ submodule — no external repo needed.
|
with:
|
||||||
# The reusable workflow detects the submodule and skips its own clone.
|
qmk_repo: Keebart/vial-qmk-corne-choc-pro
|
||||||
|
qmk_ref: vial
|
||||||
|
|
||||||
publish:
|
publish:
|
||||||
name: 'QMK Userspace 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
|
# QMK Userspace — Keebart Corne Choc Pro
|
||||||
|
|
||||||
Self-contained repo: firmware (Keebart's QMK fork) is embedded as a submodule at `qmk_firmware/`.
|
QMK userspace overlay for the Keebart Corne Choc Pro. Builds against
|
||||||
No waiting on upstream — cherry-pick, merge, or patch anything you want right here.
|
[Keebart/vial-qmk-corne-choc-pro](https://github.com/Keebart/vial-qmk-corne-choc-pro) (vial branch).
|
||||||
|
|
||||||
## Quick start
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone --recursive https://github.com/timfee/qmk_userspace.git
|
|
||||||
cd qmk_userspace
|
|
||||||
```
|
|
||||||
|
|
||||||
GitHub Actions builds the `.uf2` automatically on push — download from the **Releases** tab.
|
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
|
```bash
|
||||||
pip install qmk
|
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
|
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,21 +7,36 @@
|
||||||
|
|
||||||
// ── Chordal Hold layout ──
|
// ── Chordal Hold layout ──
|
||||||
// Defines hand assignments for the "opposite hands" tap-hold rule.
|
// 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).
|
// Matrix: 8 rows × 7 cols (4 rows per half, split keyboard).
|
||||||
// Rows 0-2: left finger rows Rows 4-6: right finger rows
|
// Rows 0-2: left finger rows Rows 4-6: right finger rows
|
||||||
// Row 3: left thumb Row 7: right thumb
|
// Row 3: left thumb Row 7: right thumb
|
||||||
const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
|
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 0: left top
|
||||||
{'L', 'L', 'L', 'L', 'L', 'L', 'L'}, // row 1: left mid
|
{'L', 'L', 'L', 'L', 'L', 'L', 'L'}, // row 1: left mid
|
||||||
{'L', 'L', 'L', 'L', 'L', 'L', 0 }, // row 2: left bot
|
{'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 4: right top
|
||||||
{'R', 'R', 'R', 'R', 'R', 'R', 'R'}, // row 5: right mid
|
{'R', 'R', 'R', 'R', 'R', 'R', 'R'}, // row 5: right mid
|
||||||
{'R', 'R', 'R', 'R', 'R', 'R', 0 }, // row 6: right bot
|
{'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) ──
|
// ── Combos (matching Vial config) ──
|
||||||
const uint16_t PROGMEM lparen_combo[] = {KC_R, KC_T, COMBO_END};
|
const uint16_t PROGMEM lparen_combo[] = {KC_R, KC_T, COMBO_END};
|
||||||
const uint16_t PROGMEM rparen_combo[] = {KC_Y, KC_U, 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