Skip to content

enhancement: hold-to-repeat for Backspace and cursor keys in the virtual keyboard #42

Description

@nextestudios

Summary

Holding Backspace (West/X or the ⌫ key) deletes continuously; holding cursor keys moves continuously. D-pad/stick focus movement already repeats via InputRouter.

Motivation

Deleting a long name one press at a time is tedious with a controller.

Requirements

  • Initial delay, continuous repeat and progressive acceleration, reusing InputSettings timings and deadzone handling.
  • Only editing actions that are safe to repeat (Backspace, cursor) repeat; Confirm/Done never repeat.
  • Holding South/A on the focused ⌫ key also repeats.

Controller UX

Hold West/X or ⌫ → continuous delete; hold LB/RB or ◀/▶ → continuous cursor movement.

Technical Notes

Extend InputActionExtensions.IsRepeatable with a keyboard-context rule, or a keyboard-specific repeat in AppController without making Back/Confirm repeatable elsewhere.

Acceptance Criteria

  • Holding Backspace for 2 s deletes many characters and stops immediately on release.
  • Confirm/Done never auto-repeat (existing router tests still pass).

Testing

Unit tests for new branches and for every bug reproduced before a fix (no trivial variations, see AGENTS.md).

Dependencies

  • None

Priority: high · Milestone: 3 · Virtual Keyboard UX

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions