Tony's addons - updates
Hello NVDA community,
I have implemented a lot of new features in my add-ons since my last announcement here more than a year ago, so I would like to share all these new features – hopefully you guys will find some of them useful. I present my new add-ons: Phonetic punctuation and Tony’s enhancements, as well as I added many new features to BrowserNav. In the end of this email I also mention my other add-ons, just in case someone hasn’t heard of them, they have only been updated with bugfixes. This is a pretty long email, so I structured it with headings.
Please download latest versions of my add-ons directly from their respective github pages – the links are provided in this email.
This add-on allows you to substitute punctuation marks, and any other part of speech configured by a regular expression with an auditory icon (custom sound). Most common use of phonetic punctuation would be for writing code, where it is essential to know all the punctuation marks, but other uses can include: replacing the word “blank” with a sound, replacing timestamps or other frequently repeated text with a sound, etc. Configuring phonetic punctuation requires knowledge of regular expressions.
Thanks to Kara Goldfinch for contributing auditory icons for some punctuation marks!
BrowserNav is a collection of improvements to user experience in browsers. I added quite a few new features to it since last release.
Horizontal indentation using tones
You can configure BrowserNav to express horizontal indentation of a currently focused element using tone – similar to a built in NVDA feature of reporting indentation with tones in text documents. This allows you to better understand the layout of the page. For example, it allows you to hear malformed HTML tables, that is when NVDA doesn’t see a table as a real table, yet the elements are still aligned in a tabular fashion on the screen. It also greatly simplifies browsing hierarchical trees of comments on websites such as reddit, facebook, hacker news – now the tone would indicate the level of the comment.
Please note that there are also commands to find next/previous element with the same horizontal indentation, which you might find handy.
Crackling for QuickNav commands
In all my add-ons crackling is an indicator of how far we have just jumped in the document when some navigational keystroke is pressed. I implemented this feature for built-in NVDA QuickNav commands as well. Now when you press H for next heading, you can hear crackling, and judging by the length of such crackling you can quickly and intuitively figure out whether the next heading was close by or you just jumped over a lot of text.
Think of this feature as regular expression enabled bookmarks for browser. You can configure a single regular expression, that can be arbitrary largeand include all the potential bookmarks on all your webpages, and then you can quickly jump to next/previous browser mark using J or Shift+J commands in browse mode. For example, as a frequent Amazon shopper, I like to be able to quickly jump to things like “5 items in cart” and “your orders”. So I have configured my browser mark regular expression to be:
(^\d+ items? in cart$|^Your orders$)
Please note that the regular expression must match the whole paragraph exactly, hence be careful with ^ and $ regular expression qualifiers. Please also note that this regular expression will apply to all web pages and all browsers, so be as specific as possible.
Accessibility for semi-accessible edit boxes
Many web pages these days are using a fancy HTML text edit component called Monaco – it provides syntax highlighting for sighted people, but it has one major flaw: it is not accessible, that is the edit box appears empty. For example Jupyter and hacker rank use such a text editor among others. You can still retrieve the contents of the edit box by pressing Control+A Control+C and then pasting it to the editor of your choice. However, repeating this every time is tedious, therefore I automated this process. Now you can navigate to said edit box and simply press NVDA+e to view or edit it.
This is a hodgepodge of small improvements to various parts of NVDA, not logically connected in any way. All the options are disabled by default and need to be enabled manually in the preferences window.
Allows to adjust the volume of all the NVDA sounds, including beeps and speech.
Automatic language switching
Some languages use non-Latin script, e.g. Russian, Arabic, Chinese, etc. There is no reason why NVDA wouldn’t be able to automatically switch synthesizer language between English and those foreign languages. Now I bring this feature to live. Automatically switching between two Latin-based languages is not supported at this time. Please note that your synthesizer must support all these languages for this feature to be effective.
Enhanced table navigation commands
I added commands like Control+Alt+Home/End/PageUp/PageDown to jump to first or last row or column. I also added keystrokes to jump to 1..10th row or column, please check add-on documentation for these shortcuts.
Enhanced move by word commands
Most text editors support Control+LeftArrow/RightArrow commands for word navigation. However the definition of the word changes from one program to another. This is especially true of modern web-based text editors, such as Monaco. NVDA should know the definition of word in given program in order to speak words correctly. If NVDA doesn't know the exact definition, then either words are going to be skipped, or pronounced multiple times. Moreover, some web-based text editors position the cursor in the end of the word, instead of the beginning, making editing much harder for visually impaired users. In order to combat this problem I have created enhanced word navigation commands, that take the word definition from Notepad++ and they do not rely on program's definition of words, but rather parse lines into words on NVDA's side. The Control+LeftArrow/RightArrow gesture is not even sent to the program, thus ensuring the consistency of the speech.
This option overrides default Control+LeftArrow/RightArrow commands in NVDA.
Real-time console output
If you work with command line applications that print out a lot of logs, it might be not the best behavior for NVDA to read out all these logs line by line, since NVDA can be speaking much slower than those lines are being printed, thus NVDA might be speaking some lines that were printed a minute ago. I modified the way NVDA speaks command line output to be more realtime. The basic logic is like this: if a new line appears on the screen and NVDA is currently speaking something that was shown on the screen more than a second ago, then we interrupt current utterance and speak the most recent line. Speaking output this way better represents what’s going on in command line window in real time. There is also an option to beep on every update in command line.
I call a keystroke dynamic if it changes the state of an application. Often times we’d want NVDA to speak the updated change automatically, but NVDA does nothing for keystrokes that it’s not aware of. An example of such a keystroke would be F2 in Notepad++ that jumps to the next bookmark – you would want NVDA to speak the current line automatically. Many other editors have such keystrokes as well. Now you can configure the list of keystrokes and NVDA will automatically speak current line after them. Please check github page for more information.
Suppressing unwanted “unselected” messages
If certain text is selected in a text editor, and in the next moment no longer selected, NVDA would say “unselected” and then the original text that was selected. In certain situations this is not a desirable behavior. For example if you have some text selected, and then you press Control+Home, to go to the very beginning of the document, NVDA would first speak the first line of the document, then “unselected”, then the original selection. I felt this was annoying, so I found a way to suppress this message, while still keeping the “unselected” message when you indeed unselect your selection by character, or word, etc
Preventing double insert keystroke
If you press insert key twice accidentally, it would trigger insert mode in your application. Since Insert is a special key in NVDA, this behavior cannot be disabled using input gestures dialog in NVDA, yet this was happening too often to me, so I wrote a function to disable double insert key backstroke. If you still would like to toggle insert mode, you can do so by pressing NVDA+F2, and then insert key.
Insert mode detector
As another layer of defense against accidental insert mode I implemented this feature. It monitors current line of text and looks at how it changes when you type alphanumeric keys. If it seems like characters are being overwritten, it will beep on every character. Similar to built-in caps lock on warning beep.
Fixing a bug when focus gets stuck in the taskbar when pressing Windows+Numbers
There is a bug in Windows 10, and possibly in other versions. When switching between applications using Windows+number shortcut sometimes the focus gets stuck in the taskbar area instead of jumping to the window being switched to. So I implemented a workaround. The add-on detects this situation and plays a short low-pitch beep when this situation is detected, then the add-on fixes it automatically by bringing focus to the desired application.
TextNav allows you to quickly find the beginning of article on a web page, and also skip over junk HTML elements, such as menus, images, ads, etc.
Allows you to navigate text sentence-by-sentence or phrase-by-phrase, as opposed to by word, character or line.
This add-on improves navigation around source code files for programming by allowing to find lines with the same/greater/smaller indentation level. But it also can be used for structured text files, where structure is expressed by the indentation level.
Improves sound quality for those who use NVDA with Bluetooth or other wireless audio devices by constantly playing silent sound.
AudioChart allows you to sonify time series in Microsoft Excel.
Thanks for reading this! Let me know what you think about these new features!