Commit Graph

26603 Commits

Author SHA1 Message Date
rootiest 0cf22be07c feat(q5_max): map dip-switch to RGB effects (heatmap / solid white)
Replace the Win/Mac default-layer switch with an RGB effect toggle:
- Win side → solid white backlight
- Mac side → typing heatmap

Add a weak dip_switch_update_keymap() hook in q5_max.c to work around
factory_test.c already owning dip_switch_update_user().
2026-04-11 02:14:34 -04:00
rootiest eedf234ab3 Merge pull request 'fix(q5_max): revert backspace to KC_BSPC, keep BSP_DEL for later use' (#16) from fix/shft-bkspc into main 2026-04-11 05:01:42 +00:00
rootiest 5764e38e73 Merge pull request 'feat(q5_max): add per-key tapping term with 175ms for home/end tap-dance' (#15) from feat/tap-term into main 2026-04-11 05:01:37 +00:00
rootiest 03765e0faa Merge pull request 'feat(q5_max): shift-backspace sends Delete (BSP_DEL)' (#14) from feat/shft-bkspc into main 2026-04-11 05:01:32 +00:00
rootiest f9972b2fee Merge pull request 'feat(k17): add tap-chord dance to K17 Max' (#13) from feat/k17/tap-chords into main 2026-04-11 05:01:26 +00:00
rootiest bc1556547d Merge pull request 'feat(q5_max): implement bi-directional Raw HID protocol' (#12) from feat/raw-hid into main 2026-04-11 05:01:21 +00:00
rootiest 287a0d1cbc Merge pull request 'fix(caps-mod): fix errant modifier taps and dummy keypress for combos' (#10) from fix/caps-mod into main 2026-04-11 04:52:40 +00:00
rootiest eaa284d557 Merge pull request 'chore(dict): add autocorrect dictionary entries' (#9) from chore/dict into main 2026-04-11 04:52:34 +00:00
rootiest 1c2886c052 Merge pull request 'chore: use direnv to manage python venv' (#8) from chore/dir-env into main 2026-04-11 04:52:28 +00:00
rootiest 622a20bb0d fix(q5): switch backspace back to normal
Keep the BSP_DEL for later use.
2026-04-11 00:48:18 -04:00
rootiest 49af06fcac feat(q5_max): add per-key tapping term with 50ms for home/end tap-dance
Define TAPPING_TERM (200ms default) and TAPPING_TERM_PER_KEY in config.h,
then implement get_tapping_term() to set a tight 50ms window for TD_HOME_END
so a single Home tap never accidentally resolves as End.
2026-04-11 00:48:15 -04:00
rootiest 52e75ecc6a feat(q5_max): add shift-backspace → delete key (BSP_DEL)
Replaces KC_BSPC on the BASE layer with a custom BSP_DEL keycode:
tap sends Backspace, Shift+tap strips shift and sends Delete.
2026-04-11 00:07:54 -04:00
rootiest 5f9121c0d2 fix(k17): remove dead custom keycode stubs from tap-chord dance
CK_CTRL_K_C and CK_CTRL_K_D were leftover from an earlier failed
attempt using ACTION_TAP_DANCE_DOUBLE with custom keycodes. Now that
TD_CHORDS uses ACTION_TAP_DANCE_FN with SEND_STRING, they are unused.
2026-04-11 00:07:52 -04:00
rootiest 6d6eee5571 feat(k17): add tap-chords to keychron k17_max 2026-04-10 23:13:36 -04:00
rootiest df671b656b fix(q5_max): fix RAW_EPSIZE and via_command_kb hook conflict
Two build errors:

1. RAW_EPSIZE undeclared — usb_descriptor.h is not in scope when
   keymap.c is compiled through Keychron's build path. Replace all
   uses with HID_PACKET_SIZE (= 32), now defined in hid_protocol.h.

2. via_command_kb duplicate symbol — keychron_raw_hid.c already defines
   via_command_kb (non-weak) so we cannot redefine it in keymap.c.

Fix by adding a weak kc_raw_hid_rx_kb() extension hook to
keychron_raw_hid.c (following the same pattern as kc_rgb_matrix_rx).
kc_raw_hid_rx() now calls this hook from its default case instead of
returning false directly. The keymap overrides kc_raw_hid_rx_kb() to
handle our custom HID command range (0x40-0x7E).
2026-04-10 15:10:14 -04:00
rootiest 6fd5179c55 feat(q5_max): implement bi-directional Raw HID protocol
Add hid_protocol.h defining a shared 32-byte packet structure for the
qmk-host bridge application (command IDs 0x40-0x7E, clear of VIA's
range). Implement via_command_kb() in keymap.c to intercept incoming
packets: LAYER_SYNC applies a new active layer, VOLUME and BRIGHTNESS
store host-reported values for future RGB indicators, and ACTIVE_APP
is stubbed for a later commit. Layer state changes are broadcast to the
host via raw_hid_send() from layer_state_set_user(), guarded by
g_hid_recv_active to prevent echo loops when the change itself
originated from HID.
2026-04-10 14:41:58 -04:00
rootiest 9b2cd0cb32 chore: ignore gemini session file
Session file is only relevant during development and unique to the local
machine.
2026-04-10 14:19:59 -04:00
rootiest d4bd903423 fix(chatter): fix key chatter with stricter tap terms and debounce 2026-04-10 14:19:09 -04:00
rootiest c0d868dca3 fix(caps-mod) implement dummy keypress for capsmod combos
Send KC_F24 when modifiers are used with CAPS_MOD to avoid the modifiers
being treated as lone taps.
2026-04-09 00:28:34 -04:00
rootiest d8dccd67a6 fix(caps-mod): fixes errant taps of modifiers
Prevents modifiers (GUI and ALT) from firing a tap signal when they are
used in conjunction with the CAPS_MOD key.
2026-04-09 00:19:04 -04:00
rootiest 360e642fcf chore(dict): add thiink and fiish to dictionary 2026-04-09 00:16:49 -04:00
rootiest 4cfa85ee8e chore(dict): generate dictionary file
Create a autocorrect_dictionary.txt file which is used to generate the
autocorrect_data.h file.
2026-04-09 00:16:20 -04:00
rootiest 41fe2a11bd chore: use direnv to manage python venv 2026-04-09 00:12:20 -04:00
rootiest d52d55e442 Merge pull request 'chore: cleanup dev artifacts — CLAUDE.md update and remove superpowers notes' (#7) from chore/cleanup-dev-artifacts into main 2026-04-08 05:08:20 +00:00
rootiest aad85d9930 chore: remove superpowers development notes
Features are merged with descriptive commit messages and PR summaries;
these ephemeral planning docs are no longer needed.
2026-04-08 01:07:58 -04:00
rootiest 0c28ba889f docs(CLAUDE.md): document delete-on-merge pattern for stacked PRs 2026-04-08 01:07:58 -04:00
rootiest 846d07966f Merge pull request 'chore/feat(q5_max): gitignore update, layer control, and CAPS_MOD' (#6) from feat/layer-control into main 2026-04-08 04:57:09 +00:00
rootiest 5c0fb31e41 Merge pull request 'feat(q5_max): CAPS_MOD — multi-function CapsLock key with CapsWord, Autocorrect, and RGB indicators' (#4) from feat/caps-mod into feat/layer-control 2026-04-08 04:50:36 +00:00
rootiest 14747159fa Merge pull request 'chore: remove upstream GitHub Actions workflows' (#5) from chore/remove-actions into main 2026-04-08 04:50:17 +00:00
rootiest d2a67b2bb3 fix(q5_max): invert autocorrect LED indicator — purple when autocorrect is OFF 2026-04-08 00:47:29 -04:00
rootiest 0210caf90e feat(q5_max): add RGB indicators for CapsWord/Autocorrect/CapsLock on LED 55 2026-04-08 00:47:29 -04:00
rootiest 6045cfa866 fix(q5_max): add clarifying comments to CAPS_MOD release handler 2026-04-08 00:47:29 -04:00
rootiest b77eea4192 feat(q5_max): implement CAPS_MOD tap/hold logic (ESC/Ctrl/CapsLock/CapsWord/Autocorrect) 2026-04-08 00:47:29 -04:00
rootiest bab766887a fix(q5_max): restore void casts for CAPS_MOD vars (QMK uses -Werror=unused-variable) 2026-04-08 00:47:28 -04:00
rootiest a2ef1712ab feat(q5_max): add CAPS_MOD keycode and replace KC_CAPS in all layers 2026-04-08 00:47:28 -04:00
rootiest 0865d7ed26 docs: update capslock-mod plan to reflect autocorrect_data.h already defines AUTOCORRECT_MIN_LENGTH 2026-04-08 00:47:28 -04:00
rootiest 3d283cdf48 fix(q5_max): remove duplicate AUTOCORRECT_MIN_LENGTH define from config.h 2026-04-08 00:47:28 -04:00
rootiest aeae6d485d feat(q5_max): enable CAPS_WORD and AUTOCORRECT features 2026-04-08 00:47:28 -04:00
rootiest 926628bc4f docs: add Caps Lock mod design spec
Spec for CAPS_MOD custom keycode: tap=ESC, hold=Ctrl, Shift+tap=CapsLock,
Alt+tap=CapsWord, GUI+tap=Autocorrect toggle. Includes RGB indicators and
feature enablement plan.
2026-04-08 00:47:28 -04:00
rootiest 45276ac042 feat(q5_max): add layer-lock keycodes for persistent layer activation
Introduces LCK_FN1–LCK_FN4, LCK_CTL, and LCK_BASE custom keycodes that
toggle a layer into a locked state so it stays active after momentary keys
are released. A second press on the same lock key or pressing LCK_BASE
clears all locks and returns to BASE.
2026-04-08 00:47:22 -04:00
rootiest 423e544097 feat(q5_max): add ESC key RGB indicator for active layer
Implements rgb_matrix_indicators_advanced_user to colour the ESC key
(LED 0) based on the current layer: dark on BASE, blue on FN1, green
on FN2, orange on FN3, purple on FN4, and red on KEEB_CTL.
2026-04-08 00:47:22 -04:00
rootiest 86cad58f34 feat(q5_max): add COMM+DOT+SLSH fallback combo to return to BASE
Adds a three-key combo (,  .  /) that fires TO(BASE), providing an
emergency escape hatch when stuck on an unknown layer. COMBO_ONLY_FROM_LAYER
is set to 0 in the keymap config.h so keycodes are always resolved from
BASE, making the combo reliable regardless of the active layer.
2026-04-08 00:47:22 -04:00
rootiest e897c73ff4 chore: ignore Claude session and session memory ID files
Pull Request Labeler / triage (pull_request) Successful in 4s
2026-04-08 00:47:06 -04:00
rootiest 949d34941a chore: remove upstream GitHub Actions workflows
Pull Request Labeler / triage (pull_request) Successful in 4s
Keychron's CI workflows don't apply to this personal fork and trigger
unwanted runs. Remove the entire .github/workflows directory.
2026-04-08 00:46:53 -04:00
rootiest 9d2531efd3 Merge pull request 'feat(q5_max): chord-based unicode/emoji input system' (#1) from q5_dev into main
Close stale issues and PRs / stale (push) Successful in 5s
Automatic Approve / automatic_approve (push) Has been skipped
Reviewed-on: #1
2026-04-06 17:31:49 +00:00
rootiest bdcec0fd7e docs(CLAUDE.md): add git conventions section
PR Lint keyboards / lint (pull_request) Failing after 2m18s
Pull Request Labeler / triage (pull_request) Successful in 17s
2026-04-06 12:23:49 -04:00
rootiest e1bed8ec91 docs: add CLAUDE.md with project guidelines and venv requirement
Document build commands, code style, and development workflow for the
Q5 Max via keymap. Emphasize that all qmk commands must be run inside
the project Python venv (.venv/bin/activate) rather than the system qmk.
2026-04-06 12:23:49 -04:00
rootiest c819c83b80 feat(q5_max): add chord-based unicode/emoji input system
Implement a chord-mode unicode entry system activated by Fn1+LeftAlt
(CHORD_KEY). Supports two activation styles: tap CHORD_KEY then type
the sequence within a 2-second window, or hold CHORD_KEY, type the
sequence, and release to commit.

- Add chord_unicode.c/h with a ~110-entry table covering math symbols
  (°²³√≈≠≤≥±÷×∞π), Greek letters, currency, fractions, arrows,
  typography, and a broad emoji set
- Prefix-aware matching with a 300ms disambiguation timer handles
  same-prefix alias pairs (e.g. lte/lteq→≤, inf/infty→∞) cleanly
- Backspace deletes, Enter confirms, Escape cancels while in chord mode
- Modifier and layer key-up events pass through so TT(FN1) release
  correctly deactivates the layer while chord mode is active
- Enable UNICODE_ENABLE and wire chord_unicode.c into the build
2026-04-06 12:23:35 -04:00
rootiest 893fd02ec2 feat(q5_max): add sleep/power and tweak home/end keys
Add additional functionality and more intuitive use of existing keys:
  - Add a Sleep key (FN1+Esc)
  - Add a Power key (FN2+Esc)
  - Keep old End key behavior alongside tap-dance (FN1+Home - End)
  - Add Home key (FN1+LeftArrow)
  - Add End key (FN1+RightArrow)
2026-04-05 20:32:44 -04:00
rootiest f2c5c157e4 feat(q5_max): set typing heatmap as default RGB effect
Close stale issues and PRs / stale (push) Successful in 1m31s
Automatic Approve / automatic_approve (push) Has been skipped
2026-04-05 20:15:57 -04:00