ncl: TH portion transparency and hold.tlex - #703
Open
rgoulter wants to merge 1 commit into
Open
Conversation
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
from
August 16, 2026 05:41
373b424 to
7ecbccb
Compare
rgoulter
force-pushed
the
feat/tlex-exit-on-transparent
branch
from
August 16, 2026 05:41
9c78724 to
6bf1ecc
Compare
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
from
August 16, 2026 07:06
7ecbccb to
bb6bdb5
Compare
rgoulter
force-pushed
the
feat/tlex-exit-on-transparent
branch
2 times, most recently
from
August 16, 2026 07:06
5a63f62 to
464a7cc
Compare
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
2 times, most recently
from
August 16, 2026 07:14
717e712 to
fe070e9
Compare
rgoulter
force-pushed
the
feat/tlex-exit-on-transparent
branch
from
August 16, 2026 07:14
464a7cc to
4e6d04c
Compare
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
from
August 16, 2026 07:22
fe070e9 to
2e42119
Compare
rgoulter
force-pushed
the
feat/tlex-exit-on-transparent
branch
2 times, most recently
from
August 16, 2026 07:35
b5ada7c to
87cf3df
Compare
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
2 times, most recently
from
August 16, 2026 08:25
7620795 to
405cfe3
Compare
rgoulter
force-pushed
the
feat/tlex-exit-on-transparent
branch
from
August 16, 2026 08:25
87cf3df to
84dc1fe
Compare
2 tasks
Add K.trans; lower hold.trans / tap.trans by projecting the column below. hold.tlex becomes a nested LayeredKey continuation (projected hold + tlex hole) so hold resolve deactivates the defining layer and registers the hold from below (FAK hold.tlex).
rgoulter
force-pushed
the
feat/tlex-th-portions
branch
from
August 16, 2026 09:43
405cfe3 to
b722071
Compare
rgoulter
commented
Aug 16, 2026
Comment on lines
+64
to
+67
| # Portion transparency (FAK tap.trans / hold.trans): not a whole-cell hole. | ||
| # Use as TH child, e.g. `K.J & K.hold K.trans` or `K.trans & K.hold K.LeftShift`. | ||
| # Lowered by column projection before JSON (see lower_th_portions). | ||
| trans = { transparent = true }, |
Owner
Author
There was a problem hiding this comment.
Hmmm.
May be acceptable.
But, since layer transparency uses null otherwise, this is a bit unintuitive.
rgoulter
commented
Aug 16, 2026
Comment on lines
+438
to
+449
| if is_trans_key hold_child then | ||
| if below == null then | ||
| std.fail_with "hold.trans: nothing below to project" | ||
| else | ||
| project_hold below | ||
| else if is_tlex_key hold_child then | ||
| if below == null then | ||
| std.fail_with "hold.tlex: nothing below to project" | ||
| else | ||
| continuation_with_exit (project_hold below) layer_idx | ||
| else | ||
| hold_child |
Owner
Author
There was a problem hiding this comment.
This gets quite nested; but I reckon that e.g. match would be simpler to read.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
FAK-shaped tap-hold portion handling on layered columns:
K.trans— portion transparency (hold.trans/tap.trans): project the hold or tap binding from the column below (layer stays on).K.hold K.tlex— hold.tlex: project hold from below into a nestedLayeredKeycontinuation (tlex hole on the defining layer) so hold resolve deactivates that layer and registers the hold from below.Nickel column lower only; no new
Reffamily.Stack
PR 3 of 3 — base:
master(after #701 and #702)K.exit_on_transparentlayer map (merged)Test plan
cargo test -p smart-keymap --test rust-integration layered::tlex(6 tests)