nvda
3894e25f - added support for delayed phonetic character descriptions (#13550)

Commit
3 years ago
added support for delayed phonetic character descriptions (#13550) Closes #13509 Summary of the issue: The main use case is navigating character by character and a user encounters a character that they do not understand. The delayed phonetic character description is something like “alpha”/“beta”/“romeo”/“igloo”. What makes understanding a character difficult? This may be because a synthesizer pronounces a character unusually or indistinguishable from another character. A user may also be hearing impaired or have other trouble processing the character. In this case, the user waits for the delayed phonetic description to occur. Other ways to report the character description: - script_review_currentCharacter - script_review_currentWord - script_review_currentLine - script_reportCurrentLine What makes determining the delay difficult? The main determinate of the delay is the speed that a user interacts with the device, e.g. speed of navigating by character. NVDA currently does not have a way to configure interaction rate, which is a general problem described in #13915. Meeting auditory processing needs is generally achieved by adjusting the synthesizer rate. Unfortunately, synthesizer rate varies by synthesizer, and so calculating a delay based on rate is challenging. While a general solution for the interaction rate is blocked by #13915, using a sensible default will handle most users requirements. This delay can be configured easily by add-ons. Description of user facing changes Adds an option, which when enabled, causes character descriptions to be announced after a fixed delay of 1 second. This delay value has been tested as a default in the “Enhanced phonetic reading” Add-on. Description of development This code modifies getTextInfoSpeech to emit a BreakCommand followed by several commands to speak a character description. This only happens if the unit of resolution is a single character, and the reason for querying for textInfo speech is caret. This causes NVDA to emit character descriptions in the following conditions: when moving by character in an edit field. When moving by character in review cursors. When moving by character in browse mode. When reporting single characters at review cursor. Any other time that caret movement is being reported for single characters. This solution also reads the character description with capitalization settings. Using the BreakCommand means that the overall approach is simpler as opposed to using a timer, and handled by the synthesizer rather than NVDA.
Author
Parents
Loading