<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qmk_sweep_skeletyl/lib/python/qmk/cli/generate/keyboard_c.py, branch master</title>
<subtitle>my qmk configs</subtitle>
<id>http://archive.git.mgrote.net/qmk_sweep_skeletyl/atom?h=master</id>
<link rel='self' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/'/>
<updated>2025-01-27T11:32:23+00:00</updated>
<entry>
<title>[Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. (#24560)</title>
<updated>2025-01-27T11:32:23+00:00</updated>
<author>
<name>Pascal Getreuer</name>
</author>
<published>2025-01-27T11:32:23+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=544ddde113657a932275399f577a422a809d2880'/>
<id>urn:sha1:544ddde113657a932275399f577a422a809d2880</id>
<content type='text'>
* 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 &gt;=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 -&gt; latest

* Handling tweak for LTs and tests.

* Fix formatting.

* More tests with LT keys.

* Fix formatting.</content>
</entry>
<entry>
<title>Implement data driven joysticks (#22947)</title>
<updated>2024-06-18T02:44:22+00:00</updated>
<author>
<name>Joel Challis</name>
</author>
<published>2024-06-18T02:44:22+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=53a0cdc4467fb688faa2708fe75daa26686e918d'/>
<id>urn:sha1:53a0cdc4467fb688faa2708fe75daa26686e918d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CLI: Allow generation of both LED and RGB Matrix config (#22896)</title>
<updated>2024-01-14T10:33:58+00:00</updated>
<author>
<name>Ryan</name>
</author>
<published>2024-01-14T10:33:58+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=1bebaa310abb637cbca146b6d7859f3efe503cfd'/>
<id>urn:sha1:1bebaa310abb637cbca146b6d7859f3efe503cfd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid exceptions when layouts contain OOB matrix values (#22609)</title>
<updated>2023-12-05T13:32:07+00:00</updated>
<author>
<name>Joel Challis</name>
</author>
<published>2023-12-05T13:32:07+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=bba5c14933274d47c88140106de13b1ce9391b01'/>
<id>urn:sha1:bba5c14933274d47c88140106de13b1ce9391b01</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add dd mapping for hardware based split handedness (#22369)</title>
<updated>2023-11-01T00:55:48+00:00</updated>
<author>
<name>Joel Challis</name>
</author>
<published>2023-11-01T00:55:48+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=a19ae3d78466588caa9caf7c38d1617932255733'/>
<id>urn:sha1:a19ae3d78466588caa9caf7c38d1617932255733</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement data driven dip switches (#22017)</title>
<updated>2023-10-29T00:09:02+00:00</updated>
<author>
<name>Joel Challis</name>
</author>
<published>2023-10-29T00:09:02+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=98530cad3ba8733d8a100e0bc5f3cf47339c4b3e'/>
<id>urn:sha1:98530cad3ba8733d8a100e0bc5f3cf47339c4b3e</id>
<content type='text'>
* Add data driven dip switches

* Autogen weak matrix_mask</content>
</entry>
<entry>
<title>Typographic updates to source generation (#19160)</title>
<updated>2023-02-10T22:39:13+00:00</updated>
<author>
<name>Jouke Witteveen</name>
</author>
<published>2023-02-10T22:39:13+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=31378839566006de80e4b979079f3149b3a9f4df'/>
<id>urn:sha1:31378839566006de80e4b979079f3149b3a9f4df</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Data driven `g_led_config` (#16728)</title>
<updated>2022-05-15T21:39:29+00:00</updated>
<author>
<name>Joel Challis</name>
</author>
<published>2022-05-15T21:39:29+00:00</published>
<link rel='alternate' type='text/html' href='http://archive.git.mgrote.net/qmk_sweep_skeletyl/commit/?id=608fa5154c01420ff8f0946655ef16c99dec56a4'/>
<id>urn:sha1:608fa5154c01420ff8f0946655ef16c99dec56a4</id>
<content type='text'>
</content>
</entry>
</feed>
