Commit Graph
3085 Commits
Author SHA1 Message Date
QMK Bot aefa671701 Merge remote-tracking branch 'origin/develop' into xap 2025-03-19 19:46:30 +00:00
Pascal GetreuerandRyan 3484f0a0df [Core] get_keycode_string(): function to format keycodes as strings, for more readable debug logging. (#24787)
* keycode_string(): Format keycodes as strings.

This adds the `keycode_string()` function described in
https://getreuer.info/posts/keyboards/keycode-string/index.html
as a core feature.

* Fix formatting.

* keycode_string review revisions.

* Rename keycode_string() -> get_keycode_string() for consistency with
  existing string utils like get_u8_str().

* Revise custom keycode names with separate _user and _kb tables.

* Correct indent in builddefs/generic_features.mk.

Co-authored-by: Ryan <fauxpark@gmail.com>

* Add KC_NUHS, KC_NUBS, and KC_CAPS.

* Fix linking error with custom names.

* Attempt at simplifying interface.

* Formatting fix.

* Several fixes and revisions.

* Don't use PSTR in KEYCODE_STRING_NAME, since this fails to build on
  AVR. Store custom names in RAM.
* Revise the internal table of common keycode names to use its own
  storage representation, still in PROGMEM, and now more efficiently
  stored flat in 8 bytes per entry.
* Support Swap Hands keycodes and a few other keycodes.

* Revert "Formatting fix."

This reverts commit 2a2771068c.

* Revert "Attempt at simplifying interface."

This reverts commit 8eaf67de76.

* Simplify custom names API by sigprof's suggestion.

* Support more keycodes.

* Add QK_LOCK keycode.
* Add Secure keycodes.
* Add Joystick keycodes.
* Add Programmable Button keycodes.
* Add macro MC_ keycodes.
* For remaining keys in known code ranges, stringify them as
  "QK_<feature>+<number>". For instance, "QK_MIDI+7".

* Bug fix and a few improvements.

* Fix missing right-hand bit when displaying 5-bit mods numerically.
* Support KC_HYPR, KC_MEH, HYPR_T(kc), MEH_T(kc).
* Exclude one-shot keycodes when NO_ACTION_ONESHOT is defined.

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
2025-03-19 20:45:56 +01:00
QMK Bot 1b4d4a30bc Merge remote-tracking branch 'origin/develop' into xap 2025-03-06 23:18:25 +00:00
Joel Challis 6e1d3d6d07 Add EOL to non-keyboard files (#24990) 2025-03-06 23:17:51 +00:00
QMK Bot 99204ae0b4 Merge remote-tracking branch 'origin/develop' into xap 2025-02-28 05:46:50 +00:00
Joel ChallisandNick Brassel 6ee806f376 Implement battery level interface (#24666)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-02-28 16:46:14 +11:00
Nick Brassel 25f28bac16 Merge remote-tracking branch 'upstream/develop' into xap 2025-02-28 09:18:17 +11:00
Nick Brassel 1efc82403b Community modules (#24848) 2025-02-26 22:25:41 +11:00
Nick Brassel 55baed3380 Merge remote-tracking branch 'upstream/develop' into xap 2025-02-17 08:44:50 +11:00
Steve StorckandSergey Vlasov c00b0c5bc9 Created SH1107 driver for quantum painter (#24724)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2025-02-17 08:41:07 +11:00
John b69bf4b885 Retro Tapping Re-Write; Key Roll Fix (#23641) 2025-02-16 20:50:42 +11:00
DavidSannier 3ab2b3b6e2 Chaining OSL and MO (#23065) 2025-02-16 20:48:40 +11:00
QMK Bot cc433c2509 Merge remote-tracking branch 'origin/develop' into xap 2025-01-29 19:28:40 +00:00
QMK Bot ae01f1b63e Merge remote-tracking branch 'origin/master' into develop 2025-01-29 19:28:06 +00:00
Drashna Jaelre 8bf01dd796 [OS Detection] Improve MacOS detection (#24708) 2025-01-30 06:25:21 +11:00
QMK Bot 03ca68f0c7 Merge remote-tracking branch 'origin/develop' into xap 2025-01-29 19:18:28 +00:00
Nick Brassel d7fb12164a Invoke process_record_via after _user/_kb have a chance to handle it. (#24879) 2025-01-30 06:18:07 +11:00
Pascal Getreuer 9d799aff97 [Bug][Core] Fix for Chordal Hold: stuck mods when mod-taps are pressed in a stuttered sequence. (#24878) 2025-01-30 06:17:54 +11:00
QMK Bot 2343e525b3 Merge remote-tracking branch 'origin/develop' into xap 2025-01-27 11:33:00 +00:00
Pascal Getreuer 544ddde113 [Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. (#24560)
* Chordal Hold: restrict what chords settle as hold

* Chordal Hold: docs and further improvements

* Fix formatting.

* Doc rewording and minor edit.

* Support Chordal Hold of multiple tap-hold keys.

* Fix formatting.

* Simplification and additional test.

* Fix formatting.

* Tighten tests.

* Add test two_mod_taps_same_hand_hold_til_timeout.

* Revise handing of pairs of tap-hold keys.

* Generate a default chordal_hold_layout.

* Document chordal_hold_handedness().

* Add license notice to new and branched files in PR.

* Add `tapping.chordal_hold` property for info.json.

* Update docs/reference_info_json.md

* Revise "hand" jsonschema.

* Chordal Hold: Improved layout handedness heuristic.

This commit improves the heuristic used in generate-keyboard-c for
inferring key handedness from keyboard.json geometry data.

Heuristic summary:

1. If the layout is symmetric (e.g. most split keyboards), guess the
   handedness based on the sign of (x - layout_x_midpoint).

2. Otherwise, if the layout has a key of >=6u width, it is probably the
   spacebar. Form a dividing line through the spacebar, nearly vertical
   but with a slight angle to follow typical row stagger.

3. Otherwise, assume handedness based on the widest horizontal
   separation.

I have tested this strategy on a couple dozen keyboards and found it to
work reliably.

* Use Optional instead of `| None`.

* Refactor to avoid lambdas.

* Remove trailing comma in chordal_hold_layout.

* Minor docs edits.

* Revise to allow combining multiple same-hand mods.

This commit revises Chordal Hold as described in discussion in
https://github.com/qmk/qmk_firmware/pull/24560#discussion_r1894655238

1. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RCTL_T(KC_A)↑" before the tapping
   term, RCTL_T(KC_A) is settled as tapped.
2. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RSFT_T(KC_C)↑", both RCTL_T(KC_A)
   and RSFT_T(KC_C) are settled as tapped.
3. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, KC_U↓" (all keys on the same side),
   both RCTL_T(KC_A) and RSFT_T(KC_C) are settled as tapped.
4. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, LSFT_T(KC_T)↓", with the third key
   on the other side, we allow Permissive Hold or Hold On Other Keypress
   to decide how/when to settle the keys.
5. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓" held until the tapping term, the
   keys are settled as held.

1–3 provide same-hand roll protection. 4–5 are for combining multiple
same-hand modifiers.

I've updated the unit tests and have been running it on my keyboard, for
a few hours so far, and all seems good. I really like this scheme. It
allows combining same-side mods, yet it also has roll protection on
streaks. For me, this feels like Achordion, but clearly better streak
handling and improved responsiveness.

* Fix formatting.

* Add a couple tests with LT keys.

* Remove stale use of CHORDAL_HOLD_LAYOUT.

* Fix misspelling lastest -> latest

* Handling tweak for LTs and tests.

* Fix formatting.

* More tests with LT keys.

* Fix formatting.
2025-01-27 12:32:23 +01:00
QMK Bot 3c45329871 Merge remote-tracking branch 'origin/develop' into xap 2025-01-25 03:12:49 +00:00
QMK Bot 2dd2d4eb81 Merge remote-tracking branch 'origin/master' into develop 2025-01-25 03:12:14 +00:00
Drashna Jaelre 6a9ccae18d Fix missing wait.h include in Dip Switch Map (#24863) 2025-01-25 03:11:38 +00:00
Nick Brassel d9adad642a Fix up generated files. 2025-01-21 09:05:58 +11:00
Nick Brassel 0c0d620165 Merge remote-tracking branch 'upstream/develop' into xap 2025-01-21 09:01:32 +11:00
Nick Brassel a6a0dc8039 Consolidate send_string implementations. (#24817) 2025-01-21 08:24:39 +11:00
QMK Bot 66bb48d343 Merge remote-tracking branch 'origin/develop' into xap 2025-01-19 17:07:48 +00:00
Joel Challis cedd49c59b Consolidate timer_elapsed implementations (#24830) 2025-01-19 17:07:11 +00:00
QMK Bot cd79715b77 Merge remote-tracking branch 'origin/develop' into xap 2025-01-08 16:52:03 +00:00
QMK Bot e28799d790 Merge remote-tracking branch 'origin/master' into develop 2025-01-08 16:51:30 +00:00
Drashna JaelreandRyan 80c90a6952 [Bug] Fix Underglow keycode processing (#24798)
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-01-08 08:50:54 -08:00
QMK Bot 97ef06ba52 Merge remote-tracking branch 'origin/develop' into xap 2025-01-02 10:24:13 +00:00
フィルターペーパー c23e64f551 Refactor Hue Breathing matrix effect with runner (#24525) 2025-01-02 02:23:41 -08:00
QMK Bot 08da793326 Merge remote-tracking branch 'origin/develop' into xap 2025-01-02 07:13:34 +00:00
Will Spooner b603094995 Add leader_add_user callback (#24266) 2025-01-01 23:12:58 -08:00
QMK Bot e692d3a943 Merge remote-tracking branch 'origin/develop' into xap 2025-01-02 07:11:42 +00:00
フィルターペーパー e016b9b4c5 Update Raindrops effect to respect LED range limits (#24531) 2025-01-01 23:11:28 -08:00
QMK Bot b6003c1079 Merge remote-tracking branch 'origin/develop' into xap 2025-01-02 07:10:45 +00:00
フィルターペーパー cf975e2bfa Update Starlight matrix effects (#24521) 2025-01-01 23:10:34 -08:00
David Hoelscher 8157b37438 always return audio pin to 0 on ARM (#24503) 2025-01-01 23:10:07 -08:00
QMK Bot e03b79314a Merge remote-tracking branch 'origin/develop' into xap 2025-01-01 02:23:08 +00:00
QMK Bot d5a0424987 [CI] Regenerate Files (#24772)
Regenerate Files
2025-01-01 02:22:28 +00:00
QMK Bot d471da238a Merge remote-tracking branch 'origin/develop' into xap 2025-01-01 02:10:29 +00:00
QMK Bot 1e6eb5e35c Merge remote-tracking branch 'origin/master' into develop 2025-01-01 02:09:51 +00:00
QMK Bot 57f89e5388 [CI] Regenerate Files (#24770)
Regenerate Files
2025-01-01 13:02:16 +11:00
QMK Bot 36749bcd90 Merge remote-tracking branch 'origin/develop' into xap 2024-12-24 07:24:28 +00:00
38eb643a82 Add keymap-extras for EurKEY layout (#24241)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2024-12-23 23:23:51 -08:00
QMK Bot 7d7751fc23 Merge remote-tracking branch 'origin/develop' into xap 2024-12-12 18:09:57 +00:00
フィルターペーパー e1351b4f4b Subscript alef correction (#24707)
Output for U+0656 is AltGr + V
2024-12-12 11:01:50 -07:00
QMK Bot a2306ebcf1 Merge remote-tracking branch 'origin/develop' into xap 2024-12-02 05:58:50 +00:00