1
0
Fork 0
Commit graph

44 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
36b5559b99
[Core] Add Layer Lock feature (#23430)
Co-authored-by: Daniel <1767914+iamdanielv@users.noreply.github.com>
Co-authored-by: Pascal Getreuer <getreuer@google.com>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-11-21 17:31:54 +11:00
Joel Challis
4ab36df48f
Move split.soft_serial_pin to split.serial.pin (#24127) 2024-07-18 09:02:53 +10:00
Joel Challis
53a0cdc446
Implement data driven joysticks (#22947) 2024-06-18 03:44:22 +01:00
Ryan
0ff53b2498
Rename RGBW define to WS2812_RGBW (#23585) 2024-04-28 00:36:54 +10:00
83e6ddbbb4
[Audio] Add support for audio shutdown pin (#22731)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-03-06 22:02:37 +11:00
Joel Challis
e2dbe39b94
Removal of bootmagic lite terminology (#22979) 2024-02-17 12:27:34 +00:00
Joel Challis
71257e21e6
Generate true/false for _DEFAULT_ON options (#22829) 2024-01-06 13:16:23 +00:00
Joel Challis
b24bd2351a
Remove redundant audio eeconfig init (#22736) 2023-12-24 06:52:58 +00:00
Ryan
8812a09581
Rename RGB_DISABLE_WHEN_USB_SUSPENDED -> RGB_MATRIX_SLEEP (#22682) 2023-12-20 13:31:50 +11:00
Ryan
73758d3d3a
Rename LED_DISABLE_WHEN_USB_SUSPENDED -> LED_MATRIX_SLEEP (#22681) 2023-12-20 13:31:39 +11:00
Ryan
e648155113
Rename RGBLED_NUM -> RGBLIGHT_LED_COUNT (#22570) 2023-12-12 15:30:08 +11: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
QMK Bot
6b4728796a Merge remote-tracking branch 'origin/master' into develop 2023-10-28 01:10:36 +00:00
Joel Challis
ca2d2a524f
Flag more VIAL config options in lint (#22345) 2023-10-28 02:09:53 +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
Joel Challis
80ccbdfd86
More data driven RGB/LED Matrix config (#21939) 2023-09-27 00:41:13 +01: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
Joel Challis
95681b8ff4
Add *_MATRIX_LED_COUNT generation (#21110) 2023-08-27 04:00:14 +01:00
Joel Challis
a9e2f6a25a
Remove led_matrix.hue_steps and led_matrix.sat_steps from schema (#21827) 2023-08-25 00:47:12 +01:00
Ryan
9551a0a38a
Move RGBLIGHT_LED_MAP to data driven (#21095) 2023-06-14 22:01:13 +10:00
Joel Challis
aa33fb00fd
Revert "Add *_MATRIX_LED_COUNT generation/validation (#19515)" (#21109)
This reverts commit 25c16b3ade.
2023-06-02 02:45:48 +01:00
Joel Challis
25c16b3ade
Add *_MATRIX_LED_COUNT generation/validation (#19515)
* Add *_MATRIX_LED_COUNT parsing/validation

* Disable parsing for now

* Disable complexity check
2023-06-02 02:42:49 +01:00
Nick Brassel
5faa23d54c
Keymap introspection for combos. (#19670) 2023-05-15 22:27:37 +10:00
Ryan
ef37fa29cd
Organise config/rules <-> info mappings (#20723) 2023-05-09 13:23:03 +10:00
Ryan
47966dc2a6
Migrate rgblight.pin and RGB_DI_PIN to ws2812.pin (#20303) 2023-04-06 18:00:54 +10:00
Pascal Getreuer
ae63c0f509
[Core] Caps Word "Invert on shift" option: pressing Shift inverts the shift state. (#20092)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2023-04-04 09:11:26 +10:00
precondition
1899793f27
Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps (#20211) 2023-04-03 15:32:47 +10:00
Ryan
647c2835e6
WS2812 driver improvements (#20262) 2023-03-30 12:21:02 +11:00
Ryan
65a80f411f
Clean up APA102 config and add DD mapping (#20159) 2023-03-20 08:12:19 +11:00
Ryan
314f6c1ddb
Move backlight config to data driven (#19910) 2023-02-26 08:37:57 +11:00
precondition
515dd18c28
Remove IGNORE_MOD_TAP_INTERRUPT_PER_KEY in favour of HOLD_ON_OTHER_KEY_PRESS_PER_KEY (#15741) 2022-12-13 22:20:07 +11:00
Albert Y
cbabc8dbe6
[Core] Replace Tapping Force Hold feature with Quick Tap Term (#17007)
* Replace Tapping Force Hold feature with Quick Tap Term

* Replace keyboard level TAPPING_FORCE_HOLD with QUICK_TAP_TERM 0

* Deprecate force hold in info_config.json

* Before and after quick tap term unit tests

* Quick tap unit tests iteration

* Keymap config.h correction

* Remove TAPPING_FORCE_HOLD_PER_KEY macros that were missed

* Add two more test cases for quick tap

* Replace TAPPING_FORCE_HOLD with QUICK_TAP_TERM in configs #2

* Replace TAPPING_FORCE_HOLD_PER_KEY with QUICK_TAP_TERM_PER_KEY in configs #2

* Add function declaration for get_quick_tap_term

Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2022-12-12 16:52:22 +01:00
dexter93
f2a8a13dba
Core: Support inverted scan logic for optical switches (#19053) 2022-12-09 03:09:01 +11:00
50661ab65c
Remove RGBLIGHT_ANIMATIONS from core (+cleanup) (#19216) 2022-12-01 13:06:45 -08:00
Joel Challis
c952458c78
DD bootmagic config (#19201)
* DD bootmagic config

* Also enable

* docs
2022-11-30 04:27:21 +00:00
Nick Brassel
9e78e65a56
2022 Nov 26 changelog. (#19164)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-11-28 07:33:55 +11:00
Joel Challis
af6aa225eb
Additional DD backlight config (#19124)
* Additional dd backlight config

* Update docs
2022-11-23 18:48:22 +00:00
1a3f2130d5
Revert "Add pointing device support to data driven config (#18215)" (#19063) 2022-11-15 17:44:09 +11:00
d3073ef494
Add pointing device support to data driven config (#18215)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-11-14 03:05:46 +11:00
Ryan
479d8de622
Format DD mappings and schemas (#18924) 2022-11-08 01:05:08 +00:00
Renamed from data/mappings/info_config.json (Browse further)