musescore / MuseScore

MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!
https://musescore.org
Other
11.81k stars 2.56k forks source link

Mnemonic access keys don't work within menus #18832

Open MichLeon opened 11 months ago

MichLeon commented 11 months ago

Issue type

UI bug

Bug description

Mnemonics like Alt+F work to open menus (in this case the File menu) but they don't work to open items within the menu.

For example, pressing Alt+F (File) followed by Alt+S (Save) should perform a Save operation.

Steps to reproduce

  1. Open a menu - e.g. 'Add' - by its shortcut Alt + A or by a mouseclick. The highest item is selected
  2. Press a mnemonic letter shortcut. eg 'I' for Interval. The item is not selected.
  3. After pressing 'Space' or 'Enter' the action associated with the highest item will be executed.

Screenshots/Screen recordings

No response

MuseScore Version

4.1.1-232071203, rev: e4d1ddf

Regression

Yes, this used to work in a previous version of MuseScore 4.x

Operating system

Windows 11

Additional context

No response

henkdegroot commented 11 months ago

For example, pressing Alt+F (File) followed by Alt+S (Save) should perform a Save operation.

After pressing Alt+F (to open the File menu), you should only press the letter to select the menu item (S in this sample). Not Alt+S.

MarcSabatella commented 11 months ago

True, but that doens't work reliably either. I find some mnemonics works, others don't. For instance, Alt+F, S does save. But Alt+A, U doesn't open the Tuplets submenu - it opens the Notes submenu. It seems fairly random as to which ones will work and which won't. And it's not consistent either. A given mnemonic combination might work once then fail next time. Tested on both Windows 11 and Linux with similar results.

shoogle commented 11 months ago

A given mnemonic combination might work once then fail next time.

@zacjansheski and I have both found this as well. Mnemonics work occasionally but most of the time they fail and there is no logic to when they do or don't succeed.

After pressing Alt+F (to open the File menu), you should only press the letter to select the menu item (S in this sample). Not Alt+S.

I've seen some variation between applications. The behaviour I would like to see after pressing Alt+F is:

  1. Press Alt+S to perform the Save operation, or;
  2. Press 'S' to highlight the Save item in the menu.
    • The user can then press Enter to perform the Save operation, or press the 'S' key repeatedly to cycle through other items in the menu that also begin with the letter 'S'.

I consider (1) necessary to fix this issue while (2) would be a separate issue (actually a feature request).

MarcSabatella commented 11 months ago

It's possible standards differ between systems as well . My experience mostly comes from Windows, even though I use Linux and ChromeOS more today. I had to look some of this up to be sure, but Windows definitely does not use Alt for menu items - only for the menus themselves (and buttons or other controls within dialog boxes).

So, Windows users will normally expect "S" alone to select the item with "S" as a mnemonic - no "Alt" required. See for instance this Microsoft article, which states "When a menu is active, the user can select a menu item by pressing the key that corresponds to the item's underlined letter."

Also, on Windows at least, there would not normally be multiple items with the same mnemonic within the same scope. See for instance this Microsoft article.

Oddly, I don't really see any explicit statement in these articles about whether pressing "S" within the file menuy should actually activate the save or merely select it. But checking a few Microsoft apps as well as third party apps, they do indeed activate, not just select.

shoogle commented 11 months ago

Windows definitely does not use Alt for menu items

Actually, it works to use Alt for menu items in Notepad. It works without Alt too, but it still works with Alt.

there would not normally be multiple items with the same mnemonic within the same scope

Indeed, but in the method I proposed, pressing the letter key without Alt would cycle through menu items that begin with that letter, not menu items that use the same mnemonic (of which there are none, as you rightly suggest).

The requirement to use a unique letter for each mnemonic results in some very odd combinations (see the Add > Intervals menu for example) and it isn't even possible in some menus (e.g. Add > Notes). That's just in English. Who knows what the situation is like in the translations, if they even have mnemonics? (I know some do, but are they unique?) Jumping to menu items based on the first letter avoids these caveats and is much more intuitive in my opinion.

I think it's ok to do something that's a bit non-standard (but vastly superior) when the Alt key is not pressed as long as we provide the standard behaviour when the Alt key is pressed.

MarcSabatella commented 11 months ago

Of the apps I tried, all worked without Alt. Only a few worked with it. After spending some time experimenting, I discovered that if I hold Alt after pressing Alt+F, then it works with most applications. But if I release Alt as I normally would in preparation for then pressing a letter, pressing Alt+S just closes the menu again the moment I start pressing Alt.

So I don't think most Windows users would be accustomed to using Alt at all, since the official documentation doesn't call for it, and it doesn't actually work well. And if I'm any indication, I'd say most Windows users who use mnemonics regularly would never even think to try holding Alt in this way - they'd simply assume mnemonics were broken. So I'd be very apprehensive about requiring Alt and expecting users to discover this on their own.

On the other hand, I care much less about the select vs activate distinction. Even though it's not at all standard, I do rather like the idea of not executing the command immediately, as it then lets me continue navigating by keyboard. But I am of course concerned about user expectation, and especially blind users, who may or may not be getting the feedback they expect they would need to even know if the command executed or not. That would be the most important thing to manage.

shoogle commented 11 months ago

I think the difference in behaviour is not as great as you are making it out to be. In both systems, you press Alt+letter to open a menu and then you press a letter without Alt to focus a menu item. The only difference is that in my system the mnemonic is effectively always the first letter of each menu item's name instead of some random letter in the middle of the name. (Also the item is selected rather than activated, but you agreed that would actually be an improvement.)

When we picked the mnemonics, we were careful to use the standard ones wherever possible (e.g. &Save, &Print), so in most cases the first letter and the actual mnemonic will be the same and the user won't notice any difference. For the items that are more rarely used (e.g. Save a cop&y, Project propert&ies), I doubt that more than a handful of people have memorised what the mnemonics are.

For that handful of people, the new system may occasionally result in an unexpected menu item being highlighted, but fortunately the item would only be highlighted, not activated (which you agree is actually an improvement) so the user can simply navigate to the correct item and select that instead.

MarcSabatella commented 11 months ago

Hmm, maybe I'm misunderstanding. Are you saying that you propose implementing it so Alt+F to open the menu followed by S alone (without Alt) will actually work to select Save? If so, then indeed, we agree. I thought you were saying that users would somehow need to guess they are to press Alt while pressing S in order to select Save.

Eism commented 11 months ago

I think we should follow the practices used in Microsoft Office, according to their standards.

https://learn.microsoft.com/en-us/windows/apps/design/input/access-keys

shoogle commented 11 months ago

Yes, let's just follow the Microsoft standard for now. I'll save my alternative proposal for a separate discussion. Ideally the new system would work alongside the standard method, not replace it.

According to Microsoft, it should be possible to use access keys without Alt after the initial combination (i.e. Alt+F, S for Save rather than Alt+F, Alt+S), though it doesn't prohibit the latter form, so I think we should allow both, like Notepad.

Microsoft's documentation has some other ideas we could borrow in the future, like multi-key mnemonics (e.g. Alt+T, V, 1,2 to exchange voices 1 and 2), and mnemonics for items outside of menus (e.g. Alt+P for Palettes). The way they display mnemonics is also more discoverable than the traditional underline.

I don't have Microsoft Word, but WordPad comes built-in on Windows and it exhibits the same behaviour.

image

Jojo-Schmitz commented 1 month ago

Came up again in https://musescore.org/en/node/364034 and https://musescore.org/en/node/364121

Jojo-Schmitz commented 2 weeks ago

And again in https://musescore.org/en/node/365430