Implement NVUI accessibility shortcuts and navigation enhancements by Diogo1457 · Pull Request #20566 · lichess-org/lila · GitHub
Skip to content

Implement NVUI accessibility shortcuts and navigation enhancements#20566

Open
Diogo1457 wants to merge 1 commit into
lichess-org:masterfrom
Diogo1457:feature-17712
Open

Implement NVUI accessibility shortcuts and navigation enhancements#20566
Diogo1457 wants to merge 1 commit into
lichess-org:masterfrom
Diogo1457:feature-17712

Conversation

@Diogo1457

@Diogo1457 Diogo1457 commented May 29, 2026

Copy link
Copy Markdown
Contributor

Closes #17712: additional shortcuts

This PR delivers a comprehensive set of accessibility upgrades for the Non-Visual User Interface (NVUI). Originally intended only for analysis, the scope was expanded during development to cover active game mode (round mode), ensuring unified navigation across Lichess.

Changes

  • Implemented Shift+H to announce a contextual help string directly from the board's command documentation.
  • Implemented the help input command to read a contextual help string from the relevant input commands.
  • Upgraded the F (flip board) handler to a global binding so users can change perspective from anywhere in the application.
  • Added shortcuts 9 and 0 to quickly check pocket pieces/reserves in Crazyhouse mode.
  • Added advanced board traversal controls (Ctrl+ArrowUp, Ctrl+ArrowDown, Ctrl+ArrowLeft, Ctrl+ArrowRight) - while these were not explicitly requested in the initial issue, they were added to give a nice touch and further improve match navigation.
  • Configured Ctrl+ArrowDown and Ctrl+ArrowUp to jump to the start and end of the board state, and Ctrl+ArrowLeft / Ctrl+ArrowRight to skip backward/forward by multiple moves (6/2).
  • Expanded all new shortcuts and navigation features beyond analysis mode into game mode (round mode) for platform-wide consistency.
  • Created comprehensive unit tests to verify the behavior for every single new shortcut.

Testing

Manually tested by:

  • Focusing on the board and testing the ergonomics and audible screen-reader announcements for Shift+H.
  • Typing the help command directly into the command line to verify the contextual output.
  • Pressing F from different non-board areas of the application to confirm the global scope of the layout flip.
  • Pressing 9 and 0 during a Crazyhouse game to ensure pockets/reserves are announced correctly.
  • Traversing a match using Ctrl+ArrowUp, Ctrl+ArrowDown, and multi-move skipping via Ctrl+ArrowLeft / Ctrl+ArrowRight.
  • Verifying that all the above shortcuts and behaviors work seamlessly in both analysis mode and live game mode (round mode).
  • Running the entire frontend test suite, including the new comprehensive unit tests for shortcut edge cases and case sensitivity.

Demo / Video (Outdated with previous shortcuts)

A short video demonstrating the new features and explaining the changes:
Watch the video

@yafred yafred added the nvui Non-Visual UI (or Blind Mode) for accessibility label Jun 1, 2026
@nicvagn

nicvagn commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

@ikrami1

ikrami1 commented Jun 1, 2026 via email

Copy link
Copy Markdown

@Diogo1457

Copy link
Copy Markdown
Contributor Author

I would appreciate a clearer explanation of how these changes improve the existing workflow. At the moment, it is not entirely clear to me what Shift+S and Shift+C are intended to do or how they fit into the current navigation model. I also have some concerns about the proposed keyboard shortcuts. Alt+Home is commonly used by browsers to open the home page, and Alt+Left Arrow / Alt+Right Arrow are standard browser shortcuts for back and forward navigation. Because of this, I am not sure whether using these key combinations within the interface could lead to conflicts or unintended behavior.

Thanks for the feedback.

Just to clarify, we are not proposing Alt+Left Arrow or Alt+Right Arrow. The proposal uses Ctrl+Left Arrow and Ctrl+Right Arrow, specifically to avoid conflicts with the standard browser back/forward shortcuts.

Regarding Shift+S and Shift+C:

The reason for choosing these shortcuts was simply that they are located close to the existing Shift+A (previous move) and Shift+D (next move) shortcuts, allowing related analysis actions to remain grouped together and easily reachable.

As for Alt+Home, we have not noticed any conflicts while focus is on the board, but if there are concerns about browser compatibility or platform-specific behavior, we are open to changing that shortcut to something else.

@ikrami1

ikrami1 commented Jun 1, 2026 via email

Copy link
Copy Markdown

@Diogo1457

Copy link
Copy Markdown
Contributor Author

Thanks for the clarification. From my perspective, I am not fully convinced that remapping these shortcuts is necessary. Users may already be familiar with the existing G and Shift+G workflow, and introducing Shift+S and Shift+C could create overlap or confusion, especially since C is already used for another function. I do not see a clear usability gain that outweighs the cost of changing established shortcuts. Regarding navigation shortcuts, would it be possible to consider using Ctrl+Up Arrow and Ctrl+Down Arrow instead of Alt+Home and Alt+End? These combinations might feel more consistent with directional navigation and could potentially reduce conflicts with browser or system-level shortcuts. Currently, they just move me across the board just like the arrows do alone. Thanks so much for the effort.

Thanks for the feedback.

Using Ctrl+Up Arrow and Ctrl+Down Arrow instead of Alt+Home and Alt+End is a good suggestion. We can replace the proposed shortcuts with those instead, as they seem more intuitive for navigation and avoid potential browser or system conflicts.

Regarding Shift+S and Shift+C, the intention was not to replace the existing Shift+G and v shortcuts. They would simply be additional shortcuts for the same actions, mainly because they are located closer to Shift+A and Shift+D.

That said, if there is no clear usability benefit and they feel unnecessary or potentially confusing, we can certainly remove them from the proposal. The primary goal is to improve accessibility and efficiency without adding complexity or redundant shortcuts.

Thanks again for taking the time to review and provide feedback.

@Diogo1457

Copy link
Copy Markdown
Contributor Author

Updates in the Latest Commit

Based on the latest adjustments and feedback from @ikrami1, here is a quick summary of what has changed from the previous iteration:

  • Removed Engine Shortcuts: Completely dropped the Shift+S and Shift+C shortcuts.
  • Updated Traversal Bindings: Replaced Alt+Home and Alt+End with Ctrl+ArrowDown and Ctrl+ArrowUp for jumping directly to the start and end of the board state.
  • Documentation & Test Alignment: Updated the manual testing steps and comprehensive unit tests to ensure all edge cases reflect these new keybinds.

@ikrami1

ikrami1 commented Jun 2, 2026 via email

Copy link
Copy Markdown

This commit aggregates several accessibility improvements for the
Non-Visual User Interface (NVUI), focusing on enhanced keyboard
navigation, efficiency, and screen-reader support.

Key changes include:

* Implemented `Shift+H` to announce a contextual help string
	directly from the board's command documentation.

* Implemented `help` input command to read a contextual help string
	from the relevant input commands.

* Upgraded the `F` (flip board) handler to a global binding
	so users can change perspective from anywhere in the application.

* Added advanced board traversal controls (`Ctrl+ArrowUp`,
	`Ctrl+ArrowDown`, `Ctrl+ArrowLeft`, `Ctrl+ArrowRight`) that were not originally
	mentioned in the issue but were decided to be implemented
	for better navigation.

* Configured `Ctrl+ArrowDown` and `Ctrl+ArrowUp` to jump to the start and
	end of the board state.

* Configured `Ctrl+ArrowLeft` and `Ctrl+ArrowRight` to allow jumping
	backward and forward by multiple moves (6/2).

* Added shortcuts `9` and `0` to quickly check pocket pieces/reserves
	in Crazyhouse mode.

* Created and expanded comprehensive unit tests to verify the
	behavior, edge cases, and case sensitivity for every single
	new shortcut.

For example, a screen-reader user can now use `Ctrl+ArrowLeft` to skip
back multiple moves to review the position, and press `Ctrl+ArrowUp`
to immediately jump to the end of the board.

Closes lichess-org#17712
Co-authored-by: Diogo Lobo <diogo.lobo@tecnico.ulisboa.pt>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

nvui Non-Visual UI (or Blind Mode) for accessibility

Projects

None yet

Development

Successfully merging this pull request may close these issues.

nvui - additional shortcuts

5 participants