FAILURE MAP
← Case archive

FA-31815 / Keyboard interactions / Member archive

Tap-hold dual-role keyboard key: Timer promotion repeats a modifier down or fails to promote a pending tap · case 05

The event trace violates the tick single rule and produces incorrect keyboard state or command output.

Member previewVariant 5 · 3 implementations · 9 checks per implementation

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 fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
dual-role-key scenario 4[[[["down", "Control"], ["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["down", "Control"], ["up", "Control"]], null]][[[["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["up", "Control"]], null], [[["down", "Control"], ["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 ↗