Add an "on-demand" speech mode (#15804)
Closes #481
Summary of the issue:
In some situations, e.g. meetings or when an alternative information channel (braille, visual with magnification), the user does not want NVDA to provide speech feedback on actions such as moving the cursor or focus. But they still want to have NVDA speaking on specific request.
Description of user facing changes
Add a new speech "on demand" mode in the NVDA+S toggle command. When speech on demand is selected, NVDA does not provide a speech feedback for actions, but still speak on explicit request.
The criterion to determine if a command should speak in "on demand" mode is:
if the command is mainly to perform an action and the speech is only a feedback after this action, NVDA does not speak. Said otherwise, this command could have a usefulness when used blindly without any speech (or braille or visual) feedback
if the goal command is mainly to provide information without performing any other action, NVDA speaks.
Note: although say all commands move the cursor, they are speaking in the "on demand" mode since there is no point running them if speech is totally off.
Description of development approach
Added a new speech mode
Added a new "speakOnDemand" parameter for the script decorator to indicate which script should speak in this mode.