FA-31834 / Keyboard interactions / Member archive
Tap-hold dual-role keyboard key: Foreign release is replaced with modifier release or dropped · case 04
The event trace violates the foreign release rule and produces incorrect keyboard state or command output.
Case contract
Case [dual,tap,modifier,threshold,events]. Events [kind,key,time]. Dual down arms tap; repeated dual downs ignored. A foreign down or threshold tick promotes pending dual into modifier down before forwarding foreign down. Dual up emits tap when pending, modifier up when promoted. Cancel releases a promoted modifier and cancels pending tap. Foreign up is forwarded. Return emitted [phase,key] and pending [start,promoted] or None. Inputs are finite ordered event traces; return the stated deterministic state. Batch entries are independent. N varies the number of independent input transactions.
Why this case matters
Controlled keyboard event processing model for debugging application event logic.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| dual-role-key scenario 2 | [[[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "Control"], ["up", "Control"]], null]] | [[[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "A"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "A"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "A"], ["up", "Control"]], null], [[["down", "Control"], ["down", "A"], ["down", "B"], ["up", "A"], ["up", "Control"]], null]] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗