Skip to content

[Timing] Unify Custom Rule and Mapper timing language #1211

Description

@malpern

Part of #1203 and #888.

User problem

The Custom Rule editor and Mapper expose the same dual-role fields with different terms such as Tap, Tapping term, Tap timeout, Hold, Hold timeout, and Quick tap. Users cannot transfer what they learned between the two editors, and several labels do not describe the underlying behavior.

Approved vocabulary

  • Repeat-tap window for the tap-repress timeout in ordinary dual-role modes.
  • Hold activation delay for the hold timeout path.
  • Typing grace period when release-order mode gives the same stored field a different meaning.
  • Activate hold after another key is released instead of Quick tap.
  • Multi-tap window for tap-dance timing; the clock resets after every tap.

Scope

  • Establish one shared copy/semantics source for timing fields used by AdvancedBehaviorContent and MappingBehaviorEditor.
  • Make labels, helper text, units, and accessibility copy mode-aware.
  • Hide controls the selected variant ignores.
  • Rename Pattern Window/time-to-register-taps to Multi-tap window and explain reset/resolution behavior.
  • Keep persisted/internal keys stable unless a separate migration is justified.

Acceptance criteria

  • Equivalent behaviors use identical visible and accessibility language in both editors.
  • Release-order mode shows Typing grace period, not Repeat-tap window.
  • Modes without a hold-timeout path do not show an effective Hold activation delay control.
  • The other-key-release behavior is described as a physical action, not Quick tap.
  • Tap-dance uses Multi-tap window and explains that the clock resets after each tap.
  • Copy-focused tests cover every dual-role variant in both editors.
  • Relevant user documentation is updated.

Non-goals

  • Merging the two editor architectures.
  • Renaming serialized fields.
  • Changing rule semantics as part of copy cleanup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-okImplementation can be agent-led once the issue is current and not on holddevuxkeypathScope: KeyPath product, app, installer, or repository workpost-releasePost-public-1.0 work; not required before stable 1.0 release

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions