Commit Graph

61 Commits

Author SHA1 Message Date
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
Nick Brassel
0bda0f4775
Revert removal of QK_OUTPUT_AUTO, fixup docs to reflect. (#24593) 2024-11-14 21:16:52 +11:00
Ryan
3eb172d08e
[docs] Turn on icons for external links (#24580) 2024-11-09 12:04:14 -07:00
Ryan
f18a699393
[docs] reference_info_json: add type hints (#24443) 2024-09-30 00:26:31 +01:00
Joel Challis
4ab36df48f
Move split.soft_serial_pin to split.serial.pin (#24127) 2024-07-18 09:02:53 +10:00
Joel Challis
51acd35e6f
Implement data driven serial driver (#23923) 2024-06-17 19:22:47 +01:00
Ryan
78a0adfbb4
[docs] Organize driver & feature docs into subfolders (#23848)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-06-02 12:42:24 +10:00
Nick Brassel
6ef9717288
Vitepress conversion of docs. (#23795) 2024-05-30 12:00:41 +10:00
Joel Challis
ef0734b7a6
Remove 'split.transport.protocol=serial_usart' (#23668) 2024-05-10 20:54:44 +10:00
Ryan
0ff53b2498
Rename RGBW define to WS2812_RGBW (#23585) 2024-04-28 00:36:54 +10:00
Joel Challis
d333a25868
Add audio driver to keyboard.json schema (#23616) 2024-04-26 05:41:22 +01:00
Joel Challis
16cca527a6
Fix WAIT_FOR_USB handling (#23598) 2024-04-24 19:33:52 +01:00
Ryan
23b7a02ebe
LED drivers: add support for IS31FL3236 (#23264) 2024-03-17 19:23:14 +11:00
Drashna Jaelre
83e6ddbbb4
[Audio] Add support for audio shutdown pin (#22731)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-03-06 22:02:37 +11:00
HorrorTroll
f6709e65eb
Add RGB matrix & LED Matrix support for IS31FL3729 (#21944)
Co-authored-by: Xelus22 <preyas22@gmail.com>
Co-authored-by: dexter93 <d3xter93@gmail.com>
2024-02-17 01:41:35 +11:00
Joel Challis
b24bd2351a
Remove redundant audio eeconfig init (#22736) 2023-12-24 06:52:58 +00:00
Joel Challis
e279c78ba3
Enable linking of encoders to switch within layout macros (#22264) 2023-11-20 15:41:48 +00:00
Joel Challis
fbbb221a31
Implement data driven lighting defaults (#21825) 2023-11-01 01:26:24 +00:00
Joel Challis
a19ae3d784
Add dd mapping for hardware based split handedness (#22369) 2023-11-01 00:55:48 +00:00
Joel Challis
98530cad3b
Implement data driven dip switches (#22017)
* Add data driven dip switches

* Autogen weak matrix_mask
2023-10-29 01:09:02 +01:00
jack
896d3dc497
Add DD mappings for locking switch (#22242)
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-10-25 02:15:27 -07:00
Joel Challis
e4c54a9612
Support additional split sync items for info.json (#22193) 2023-10-21 01:48:05 +01:00
Ryan
c0f16be50f
Rename CKLED2001 driver to SNLED27351 (#22071) 2023-10-04 20:10:05 +11:00
Ryan
bd5860de4e
is31fl3737/3741: add LED Matrix support (#22163) 2023-10-03 01:09:20 +11:00
Ryan
d58f85e09e
is31fl3733: complete LED Matrix support (#22149) 2023-09-27 16:11:28 +10:00
Ryan
288c2313fe
is31fl3218: Add LED Matrix support (#22126)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-09-27 14:37:06 +10:00
Ryan
32de27bb20
is31fl3736: extract single-color API (#22133) 2023-09-27 01:18:07 +01:00
Joel Challis
80ccbdfd86
More data driven RGB/LED Matrix config (#21939) 2023-09-27 00:41:13 +01:00
Ryan
a931e6d7bd
Update WS2812 docs and add APA102 docs (#22106)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2023-09-25 14:18:40 +10:00
Ryan
1ea54a2d8d
Complete RGB Matrix support for IS31FL3218 (#22004) 2023-09-17 22:11:16 +10:00
Ryan
a0aebe5cd5
aw20216: driver naming cleanups (#21891) 2023-09-13 22:45:17 +10:00
Joel Challis
5fab310e65
Implement data driven wear leveling (#21906)
* DD encoder map, wear leveling

* remove encoder map from DD

let's avoid the support headache

* wear leveling: specify the allowed drivers by name

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

* Add additional params

* Relocate under eeprom

* disable parsing

---------

Co-authored-by: Dimitris Mantzouranis <d3xter93@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-09-05 01:53:05 +01:00
Ryan
736451558e
Rework info.json reference (#21324)
* Rework info.json reference

* Apply suggestions from code review

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Update backlight.pins description

* Add rgblight.driver and lowercase other driver names

* Remove `split.main` and `split.matrix_grid` for now as they are not working yet

---------

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2023-08-26 21:03:29 +01:00
Joel Challis
3fc9c03559
Remove all from list of animations in info.json (#19978) 2023-03-01 02:55:14 +00:00
Joel Challis
6133b08e73
Rework input_pressed_state docs (#19267)
* Revert changes to porting

* Update reference_info_json.md
2022-12-08 20:41:38 +00:00
Joel Challis
c952458c78
DD bootmagic config (#19201)
* DD bootmagic config

* Also enable

* docs
2022-11-30 04:27:21 +00:00
Joel Challis
4a0aa9ada2
Fix headers in info.json reference (#19202) 2022-11-30 02:45:51 +00:00
Ndot
5a3770d363
[Docs] Update reference_info_json.md (#18817)
* [Docs] Update reference_info_json.md

- Makes it easier to find keyboard.jsonschema.
- Adds a reference to the Data Driven page.

* Update docs/reference_info_json.md

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-11-28 02:08:27 +00:00
Joel Challis
af6aa225eb
Additional DD backlight config (#19124)
* Additional dd backlight config

* Update docs
2022-11-23 18:48:22 +00:00
Less/Rikki
00dc764f72
[docs] Improve documentation regarding info.json (#18508)
* docs: raise info.json awareness

* docs: note that DD migration is WIP
2022-09-29 13:08:45 -04:00
Markus Knutsson
961de3c205
Update reference_info_json.md (#18518)
* Update reference_info_json.md

* Update docs/reference_info_json.md

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

* Update docs/reference_info_json.md

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

* Update docs/reference_info_json.md

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

* Update docs/reference_info_json.md

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

* Update docs/reference_info_json.md

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-09-29 11:01:34 -04:00
zvecr
82f0263e41 Merge remote-tracking branch 'origin/master' into develop 2022-07-13 01:19:58 +01:00
Joel Challis
2a3dd95229
Add basic secure docs (#17577) 2022-07-13 00:06:19 +01:00
QMK Bot
05074cbdf0 Merge remote-tracking branch 'origin/master' into develop 2022-07-02 11:27:40 +00:00
Josh Hinnebusch
096db8c8ca
Add LED backlight/indicator info to reference_info_json.md (#17010)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-07-02 21:27:34 +10:00
Joel Challis
1a400d8644
Allow encoder config from info.json (#17295) 2022-06-20 20:15:06 -07:00
evils
0a45a19801
[Docs] clarify inner array of direct pin matrix (#17437) 2022-06-21 01:52:11 +01:00
peepeetee
8014fb14b6
Fix in-page links in reference_info_json.md (#16487) 2022-03-07 18:50:03 -08:00
Ryan
c72ed7c024
CLI: Parse USB device version BCD (#14580)
* CLI: Parse USB device version BCD

* Apply suggestions
2022-01-17 08:44:34 +11:00
Ryan
b7a346600c
[Docs] Clean up reference_info_json.md (#14806) 2021-10-15 12:45:33 +11:00