musescore / musescore/MuseScore

Dropdowns, menus and lists should highlight items in reaction to key presses ("Initial Letter Navigation")

Open
#16,508 19 comments 1 reaction 1 assignee View on GitHub

@bkunda is already working on this.

Since Dec 9, 2025.

accessibility community P2
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Task description
When a dropdown, menu or list is focused, you should be able to type text on the keyboard, to quickly jump to the corresponding item.

For example, in the dropdown shown below,

  • when you press S, it should highlight the first next item that comes lexicographically after "S", so in this case "Sans Serif Collection".

  • when you press S E in quick succession, it should highlight the first next item that comes lexicographically after "Se", so in this case "Segoe Fluent Icons".

  • when you press S G in quick succession, it should highlight the first next item that comes lexicographically after "Sg", so in this case "Showcard Gothic".

Edits by @shoogle:

  • Changed 'first' to 'next'.

  • The delay for "in quick succession" is one second (see WM_CHAR), but could be made configurable in Preferences > Advanced. Within this period, letters are added to a string buffer and a search is performed for the entire string. If the current item starts with the string then selection remains on this item, otherwise it goes to the next item that starts with the string. After the period expires, the string buffer is emptied. A subsequent key press starts a fresh search with a new string buffer, and will move to the next matching item even if the current item is a match.

  • If the first letter is pressed repeatedly (e.g. S S S) then the selection cycles through items that begin with that letter (e.g. "Sans", "Sergeo", "Showcard"). However, the buffer is still saved as SSS, and if a different character is pressed before it empties (e.g. SSSQ) then the selection jumps to the next item starting with this entire string (e.g. "Sssquash").

  • See PR #5829 for previous implementation in MuseScore 3. If in doubt, check the behaviour of Windows File Explorer.

Technical note
This will need to be implemented for all QML dropdowns/menus/lists/treeViews.
In Qt Widgets, this already works out of the box (and for those few cases where it doesn't, we shouldn't invest time to fix it since Qt Widgets is going to be replaced eventually anyway).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.