nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.02k stars 624 forks source link

Have NVDA report keyboard shortcut/input gesture collisions for add-ons at load time #15242

Open britechguy opened 11 months ago

britechguy commented 11 months ago

Is your feature request related to a problem? Please describe.

Please refer to NVDA Group topic, NVDA and NVDA Shortcut Key Collision Avoidance - Does this exist?, for more information and the comments of others.

As more and more shortcuts come into being, many of which are somewhat "everything but the kitchen sink" in the range of what they do, shortcut collisions between those add-ons is not only bound to happen, but is already happening in certain combinations.

I believe that what determines "who owns/who wins" for a given keyboard shortcut (AKA input gesture) is the order in which add-ons load, which can differ for individuals depending on which add-ons they added when.

It is very, very easy either to forget that one add-on uses a specific keyboard shortcut or never to have known it in the first place if that shortcut is not one you ever use for that add-on. Later, if you add another that uses that same shortcut and there is a collision between two or more add-ons using it, nothing is reported.

Describe the solution you'd like

I would like NVDA to do an "input gestures check" at load time, after all add-ons have loaded, to check whether any keyboard shortcut/input gesture collisions exist and, if they do, to report those to the user. I do NOT expect NVDA to attempt to resolve those collisions, that would be up to the user, since only they can know how they'd like to resolve the situation and redefine a given input gestures.

Ideally, and if possible, it would be good to have each collision reported with: Shortcut/gesture involved Add-Ons list where collisions for that shortcut have been detected. Which single add-on in that list currently "owns" that shortcut/gesture if no redefinitions are made.

Describe alternatives you've considered

None.

Additional context

N/A

bhavyashah commented 11 months ago

Adding a note of support that key conflicts were quite confusing and difficult to detect for a beginner NVDA user I was working with recently. Due to dexterity issues, they remapped a few commands they frequently used to simpler (fewer keys or keys that were less spread out) key combinations and then upon installing add-ons which used that key combination, got a bit disoriented and started second-guessing their memory of the keystrokes. One point I'd add to this ticket is that keystroke collisions can happen not just between add-ons but also between core functions and add-ons; those cases should be handled too.

britechguy commented 11 months ago

@bhavyashah

I absolutely concur with you that this function should be looking at keyboard shortcuts/input gestures as a global whole at load time, as it's entirely possible for an add-on to have tried to steal an NVDA-native input gesture.

I failed to include that simply because I didn't think about anyone trying to take away a native NVDA input gesture that they might never use, or be aware of. And there are a number of NVDA input gestures that should not be remappable by other things, in my opinion.

But every input gesture that would be active during that NVDA session should be cross checked at load time so that any collisions would be identified ahead of time. It's up to the user to decide how they want to "reshuffle the deck" to resolve those collisions.

M3198 commented 2 months ago

Me too. I also support the creator of this issue in regard to this request.