Skip to content

enhancement: redesign the virtual keyboard layout after the PS5 structural model #41

Description

@nextestudios

Summary

Rework the layout and visuals of the existing VirtualKeyboard to follow the PS5 keyboard's structural and interaction model, with ControlFS's own visual identity. Not a rewrite of the keyboard logic.

Motivation

The current keyboard works but its layout is dense and its function keys are scattered; a familiar console structure is faster to use from the couch.

Requirements

  • Text field on top; four character rows (e.g. 1 2 3 4 5 6 7 8 9 0 @, Q W E R T Y U I O P #, A S D F G H J K L " /, Z X C V B N M . _ ? !).
  • Function row: ⇧ (Shift) · ABC (letters) · @#: (symbols) · wide SPACE · ⌫ (Backspace).
  • Bottom row: cursor ◀ ▶ (and ▲▼ where multi-line applies) · … (more: accents, language) · wide DONE.
  • Shift: one tap = next letter uppercase; two taps = Caps Lock (behavior already exists in ShiftState).
  • Keep PT-BR and EN layouts, uppercase/lowercase, numbers, symbols and accents (accents via the … page or long-press).
  • Field-type rules preserved (file names disable forbidden characters; paths allow separators; passwords masked).
  • Uses ControlFS theme tokens; no Sony assets, logos, textures or screenshots.
  • Shared by every text field: create folder, rename, search, archive password, compress name, filters, batch rename, path edit.

Controller UX

D-pad/left stick move focus; South/A (✕) types the focused key; East/B (○) cancels; West/X (□) Backspace; North/Y (△) Shift; LB/RB move the cursor; Start/Options = Done; View/Create toggles symbols. Prompts come from #34.

Technical Notes

Change VirtualKeyboardLayouts.Build and ModalView.BuildKeyboard; keep VirtualKeyboard (model) and its tests; adjust KeyboardDriver test helper to the new grid.

Acceptance Criteria

  • All existing keyboard tests pass after updating the layout-dependent helpers.
  • A user can type Relatório ação 2026 (an accented Portuguese sample) using only the D-pad and South.
  • Layout matches the structure above at 1080p and on a handheld.

Testing

Unit tests for new branches and for every bug reproduced before a fix (no trivial variations, see AGENTS.md). Manual comparison of flows (not visuals) with a PS5 keyboard; screenshots in smoke.

Dependencies


Priority: high · Milestone: 3 · Virtual Keyboard UX

Activity

  1. added
    moscow: mustMoSCoW: required for 1.0
    and removed
    priority: highImportant for the controller-first experience
    on Sep 27, 2026
  2. nextestudios commented on Sep 27, 2026

    @nextestudios
    OwnerAuthor

    Follow-up verification of the pending acceptance criterion "layout matches the structure at 1080p and on a handheld": screens-only smoke run 36349504542 (1920x1080 and 1280x800) shows the text field on top, four character rows, the function row (⇧ · ABC · @#: · space · ⌫) and the bottom row (◀ ▶ · … · Cancelar · Concluir), nothing clipped, in the #172 modal panel. Deliberate deviations from the example rows in this issue: " / and ? live on the symbols page instead of the letter rows because they are forbidden in Windows file names (the keyboard is shared by name fields); PT-BR shows ç in the third row. Real controller / TV-distance checks remain in docs/TESTING.md (not hardware validated).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions