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
..
ChangeLog
develop 2024q4 changelog. (#24638 )
2024-11-27 21:19:17 +11:00
drivers
Unify spi_master headers ( #24857 )
2025-01-26 22:37:37 +01:00
features
Merge remote-tracking branch 'origin/master' into develop
2025-01-08 03:13:29 +00:00
public
Ensure documentation pull requests build ( #23908 )
2024-06-13 02:59:37 +01:00
__capabilities.md
[docs] Remove gitbook directory ( #23839 )
2024-06-01 10:37:40 +10:00
__capabilities_inc.md
Add embed to docs capabilities ( #23698 )
2024-05-12 03:26:11 +10:00
_aliases.json
Revert removal of QK_OUTPUT_AUTO, fixup docs to reflect. ( #24593 )
2024-11-14 21:16:52 +11:00
_sidebar.json
Add licensing violations page. ( #24697 )
2024-12-13 20:42:47 +11:00
api_development_environment.md
api_development_overview.md
Fix typo in docs/api_development_overview.md ( #24620 )
2024-11-19 13:37:39 -07:00
api_docs.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
api_overview.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
arm_debugging.md
breaking_changes.md
develop 2024q4 changelog. (#24638 )
2024-11-27 21:19:17 +11:00
breaking_changes_history.md
develop 2024q4 changelog. (#24638 )
2024-11-27 21:19:17 +11:00
breaking_changes_instructions.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
chibios_upgrade_instructions.md
Update branch names to reflect configurator's new deployment. ( #19999 )
2023-03-03 14:16:06 +11:00
cli.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
cli_commands.md
qmk find: expand operator support (#24468 )
2024-11-21 22:57:36 +11:00
cli_configuration.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
cli_development.md
Docs theme updates ( #23832 )
2024-05-31 10:34:30 +10:00
cli_tab_complete.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
coding_conventions_c.md
[Docs] Code markdown amendment ( #21323 )
2023-06-20 20:58:13 -06:00
coding_conventions_python.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
compatible_microcontrollers.md
Added MCU support for ArteryTek AT32F415 ( #23445 )
2024-11-21 17:28:28 +11:00
config_options.md
Remove RING_BUFFERED_6KRO_REPORT_ENABLE due to disuse. ( #24433 )
2024-09-24 12:53:55 +01:00
configurator_architecture.md
Architecture documentation for Configurator and API ( #13935 )
2021-08-10 07:47:53 -07:00
configurator_default_keymaps.md
Update leftover RGB keycodes ( #24653 )
2024-11-30 05:30:05 +00:00
configurator_diagram.drawio
Architecture documentation for Configurator and API ( #13935 )
2021-08-10 07:47:53 -07:00
configurator_diagram.svg
Architecture documentation for Configurator and API ( #13935 )
2021-08-10 07:47:53 -07:00
configurator_step_by_step.md
Remove suggestion of creating issues for unsupported keyboards. ( #23918 )
2024-06-14 00:23:57 +01:00
configurator_troubleshooting.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
contributing.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
custom_matrix.md
Remove matrix_init_quantum/matrix_scan_quantum ( #19806 )
2023-02-11 03:47:17 +00:00
custom_quantum_functions.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
data_driven_config.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
documentation_best_practices.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
documentation_templates.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
driver_installation_zadig.md
Added MCU support for ArteryTek AT32F415 ( #23445 )
2024-11-21 17:28:28 +11:00
easy_maker.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
faq_build.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
faq_debug.md
Fix link to TMK magic commands ( #24773 )
2025-01-02 12:45:26 +01:00
faq_general.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
faq_keymap.md
[Docs] Remove references to bootmagic lite ( #24369 )
2024-09-06 17:30:54 +01:00
faq_misc.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
feature_advanced_keycodes.md
docs: fix RWIN alias ( #24610 )
2024-11-17 15:05:57 +00:00
feature_converters.md
Add svlinky converter ( #24449 )
2024-10-12 00:16:25 +01:00
feature_debounce_type.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
feature_eeprom.md
[Docs] Remove references to bootmagic lite ( #24369 )
2024-09-06 17:30:54 +01:00
feature_layers.md
[Feature] Add keycode PDF(layer) to set the default layer in EEPROM ( #24630 )
2024-11-23 10:09:34 +00:00
feature_layouts.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
feature_macros.md
Convert stray legacy warn/info docs panels ( #24799 )
2025-01-07 19:12:54 -08:00
feature_userspace.md
Convert stray legacy warn/info docs panels ( #24799 )
2025-01-07 19:12:54 -08:00
flashing.md
Added MCU support for ArteryTek AT32F415 ( #23445 )
2024-11-21 17:28:28 +11:00
fuse.txt
getting_started_docker.md
Allow running Docker container on MacOS (without in-container USB support) ( #24412 )
2025-01-16 06:36:20 +11:00
getting_started_github.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
getting_started_introduction.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
getting_started_make_guide.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
hand_wire.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
hardware_drivers.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
hardware_keyboard_guidelines.md
Update hardware_keyboard_guidelines.md to Fix Typos ( #24671 )
2024-12-03 11:35:39 -07:00
how_a_matrix_works.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
how_keyboards_work.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
index.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
isp_flashing_guide.md
Docs theme updates ( #23832 )
2024-05-31 10:34:30 +10:00
keycodes.md
[Feature] Add keycode PDF(layer) to set the default layer in EEPROM ( #24630 )
2024-11-23 10:09:34 +00:00
keycodes_basic.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
keycodes_magic.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
keycodes_us_ansi_shifted.md
[Docs] Address some typos (also in moonlander matrix.c) ( #16248 )
2022-02-06 17:36:44 +00:00
keymap.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
license_violations.md
[License Violation] add pressplayid ( #24869 )
2025-01-25 08:58:38 -07:00
mod_tap.md
[Docs] Fix wording in Mod Tap documentation ( #24796 )
2025-01-07 19:13:04 -08:00
newbs.md
[docs] Fix dead link to keyboard list in newbs.md ( #24579 )
2024-11-09 09:49:11 -07:00
newbs_building_firmware.md
Clarify keymap location and format in newbs_building_firmware.md ( #24663 )
2024-12-22 12:23:14 -08:00
newbs_building_firmware_configurator.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_building_firmware_workflow.md
Docs theme updates ( #23832 )
2024-05-31 10:34:30 +10:00
newbs_external_userspace.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_flashing.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
newbs_getting_started.md
[docs] Fix code blocks overflowing page width ( #23829 )
2024-05-30 10:00:28 +01:00
newbs_git_best_practices.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_git_resolving_merge_conflicts.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_git_resynchronize_a_branch.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_git_using_your_master_branch.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
newbs_learn_more_resources.md
[Docs] Refactor code examples ( #18003 )
2022-08-12 17:27:24 -07:00
newbs_testing_debugging.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
one_shot_keys.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
other_eclipse.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
other_vscode.md
[Maintenance] builddefs: common_rules: overhaul debug information generation ( #24352 )
2024-09-01 19:54:53 +02:00
platformdev_blackpill_f4x1.md
Docs: typo fixes in platformdev_blackpill_f4x1.md ( #19635 )
2023-01-19 16:09:11 -07:00
platformdev_chibios_earlyinit.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
platformdev_proton_c.md
Add converter docs ( #17593 )
2022-07-08 22:49:16 +01:00
platformdev_rp2040.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
platformdev_selecting_arm_mcu.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
porting_your_keyboard_to_qmk.md
qmk new-keyboard: separate dev board and MCU selection (#24548 )
2024-11-21 17:22:14 +11:00
power.txt
pr_checklist.md
Update PR Checklist for 'via' keymaps ( #24330 )
2024-08-27 07:28:23 +10:00
quantum_keycodes.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
quantum_painter.md
Add LD7032 support to QP. ( #20828 )
2024-09-18 21:44:33 +10:00
quantum_painter_lvgl.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
quantum_painter_qff.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
quantum_painter_qgf.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
quantum_painter_rle.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
ref_functions.md
Add easier way to set default single layer ( #24376 )
2024-10-06 21:39:21 +13:00
reference_configurator_support.md
Fix rendering of reference_configurator_support.md ( #24629 )
2024-11-21 18:46:36 +00:00
reference_glossary.md
[docs] Organize driver & feature docs into subfolders ( #23848 )
2024-06-02 12:42:24 +10:00
reference_info_json.md
[Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. ( #24560 )
2025-01-27 12:32:23 +01:00
reference_keymap_extras.md
Add keymap-extras for EurKEY layout ( #24241 )
2024-12-23 23:23:51 -08:00
squeezing_avr.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
support.md
Update Discord URL ( #24283 )
2024-08-15 14:37:27 +01:00
support_deprecation_policy.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
syllabus.md
[Docs] Remove references to bootmagic lite ( #24369 )
2024-09-06 17:30:54 +01:00
tap_hold.md
[Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. ( #24560 )
2025-01-27 12:32:23 +01:00
understanding_qmk.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
unit_testing.md
Vitepress conversion of docs. ( #23795 )
2024-05-30 12:00:41 +10:00
usb_nkro.txt