Great add-ons! Many thanks.
Just one issue: Can the NVDA+j key be
reassigned by the user, or am I missing it? It conflicts with
another add-on that I am using, NVDA Global Commands Extension,
so I cannot currently use the BrowserNav add-on. It would be
very helpful if you can make it possible for that key to be
Happy new year, everyone!
I present new features and improvements to
my add-ons. This is a pretty long email, so I marked sections
as level 1 and level 2 headings for ease of navigation. Any
feedback and suggestions are welcome!
The most exciting new
feature is support of bookmarks. You can now configure
bookmarks and this simplifies navigation around websites that
you frequently use. Bookmarks can be configured either for a
specific URL or for the entire domain. Bookmark itself can be
configured either as matching text on the page, or a regular
expression. There are many more options to customize
bookmarks, please refer to github page for a full list of
There are four types of bookmarks in
Once they are
configured, you can find and jump to them by pressing either J
or Shift+J in browse mode. BrowserNav comes with default
configuration that you can use as an example of configuring
bookmarks, and that example includes some QuickJump bookmarks
for amazon.com: you can jump to “5 items in cart”, “Your
Orders”, “4.5 out of 5 stars” – these are just examples of
information that I often need to find on Amazon pages while
shopping, but you can of course configure your own bookmarks.
These are not
really bookmarks, but rather you can configure BrowserNav to
skip certain text while navigating either by paragraph (with
Control+Up/Down) or by line (with Up/Down). Most common
example of this is skipping blank lines – and this one is
included in the default configuration. Other examples can
include skipping timestamps or frequently repeated elements on
the webpage (think of repeating buttons on Facebook website:
Reply, React, Like, …). SkipClutter mode can be turned off
temporarily when you do want to access those elements by
pressing / or Control+/.
These are similar to QuickJump
bookmarks, but instead of jumping to bookmark, you can click
buttons or links without moving your cursor. For example, on
youtube.com you might want to have an easy way to play/pause
video. In fact this QuickClick bookmark is included in the
default configuration for reference. So, you just need to
press Alt+J to click all QuickClick bookmarks on the page.
Another example of where I find QuickClick especially useful
is expanding collapsed elements of the page, e.g. on Facebook
you might want to automatically expand links “See more”, “View
5 more comments”, etc.
Many websites (e.g., reddit, hacker news)
show user comments as a tree where each successive level of
reply is indented more and more to the right. Hierarchical
bookmarks is the most convenient way to browse such comment
trees for screenreader users. BrowserNav can announce the
level of current comment, or alternatively, you can jump to
next/previous comment of a given level, similar to built-in
function of jumping to heading of given level. You just need
to capture some element of a comment in a bookmark (such as
upvote or downvote buttons) and BrowserNav will automatically
compute levels based on horizontal offset of each match. I
have included sample configuration for hacker news and old
reddit. You can try it yourself once you have BrowserNav v2.2
or Alt+Shift+`: jump to next/previous comment and announce its
or Alt+Shift+1: jumpt to next/previous comment at level 1.
or Alt+Shift+2: jumpt to next/previous comment at level 2.
or Alt+Shift+number: jumpt to next/previous comment at
Please note that in both
reddit and hacker news the bookmark also matches the original
post. As a result, on reddit original post corresponds to
level 2, so all the comments have levels 1,3,4,5 …. Skipping
Configuring websites and bookmarks
Press NVDA+J to open
BrowserNav popup menu. Here you can configure websites and
bookmarks. For ease of use I added options to create a new
entry for current website, and create a new bookmark from
All websites and bookmarks
can also be configured via NVDA > Preferences > Settings
There are a few options that can be
configured on per website level:
focus events: some websites misuse focus events: e.g. they
focus some elements when trying to scroll, thus making the
website hard or impossible to use for screenreader users. You
can disable handling of focus events for such websites. In
this case focus events will be ignored and your cursor will
not jump around.
live region announcements. Similarly, some websites misuse
live regions. BrowserNav allows to selectively block them.
QuickClick. Once you configured QuickClick bookmarks on a website, you can tell
BrowserNav to click those bookmarks automatically when website
is fully loaded.
Vertical navigation (via NVDA+Alt+Up/Down
commands) now works much faster in Chromium-based browsers and
Recap of other BrowserNav functions
navigation: allows to find objects on a web page that are
directly underneath by pressing NVDA+Alt+Down/Up.
by font size: allows to find text written in the same font
size or font style.
QuickNav commands: jump to next menu(Z), tab(Y), dialog(P),
am aware of Placemarkers add-on existence. BrowserNav
bookmarks is however different in many ways: more flexible
website definition, more flexible bookmark definition, more
functionality around different types of bookmarks. I know NVDA
community is typically wary of add-ons that are similar in
functionality, but I didn’t have any intention to compete
against PlaceMarkers. The function of regular expression
search was in BrowserNav since many years ago and developing
proper bookmarks was a natural extension of it. It would also
be totally impractical for me to upgrade Placemarkers add-on,
since the changes that I implemented would require rewriting
probably 90% of Placemarkers, so this is not justified.
can split off bookmarks into a separate add-on if there is
enough interest. As long as community doesn’t mind given
concerns of being too similar to Placemarks add-on.
Tony’s Enhancements v1.13
This add-on is a hodgepodge
of different NVDA improvements and this time I added a few
Triggered by pressing NVDA+Alt+S you can
enable sound split: when using stereo headphones this would
make all NVDA sounds to go to right channel, while all
application sounds will go to left channel (or vice versa).
This could be handy if you have to attend long and boring
meetings over VC. Additionally you can adjust NVDA volume and
applications volume separately via
NVDA+Control+PageUp/PageDown and NVDA+Alt+PageUp/PageDown
Many people on NVDA mailing list complained
that there was no good way in NVDA to copy a table from a
webpage. Now there is a way! Press NVDA+Alt+T while on a table
and you’ll be presented with a few options: you can either
copy the whole table, or current row or column. The table will
be copied with preserving formatting information about its
cells, so that you can paste it into Microsoft Word or any
other rich text editor, and it will still appear as a table.
Experimental mouse click and mouse scroll scripts
I noticed that existing NVDA mouse click
scripts don’t always work. In particular I found cases when
NVDA+NumPadDivide keystroke doesn’t bring mouse cursor over
the link that I would like to click. These scripts are my
attempt to solve this. The feature is experimental, in the
sense that there are still cases where it doesn’t work as
expected. Yet it already can be very useful in some cases, so
I decided to still include it in the release. Keystrokes:
moves mouse pointer to current object, clicks left/right mouse
button, then moves mouse pointer back to where it was.
Additionally it tries to check if there are any other windows
on the way (e.g. topmost windows) and tries to get them out of
Move mouse pointer over current object and scroll up/down.
This can be useful to load more content in infinite scroll
move mouse pointer to top left corner of the screen. This can
be useful for websites that make excessive use of mouse hover
information to show popup windows.
Recap of other functions of Tony’s enhancements
table navigation commands, such as jump to first/last
language switching based on Unicode character set.
– similar to BrowserNav QuickJump bookmark, but works in text
keystrokes: allows to configure announcing current line after
and hiding any application windows.
insert/overwrite mode in text editors to prevent accidentally
system priority of NVDA process for better responsiveness.
Bluetooth Audio v1.4
Bluetooth audio fixes
quality of audio by playing either silence or soft white noise
as long as NVDA is active. Many Bluetooth headphones and
speakers enter standby mode after a few seconds of inactivity.
Then when NVDA speaks next utterance, the first word or two
might be lost. Bluetooth Audio prevents these devices from
entering standby mode by keeping audio stream open and
constantly playing some sound. In fact, Bluetooth audio has
been reported to improve audio quality on other types of audio
devices: RF wireless headphones and even some wired speakers.
It can also get rid of crackling noise on some devices.
The previous version of
Bluetooth Audio could only play silence. As a result, it was
hard to tell whether it is working or not. In fact, it seems
that it wasn’t working, or at least not always working – one
of NVDA updates in 2020 seems to have broken it, and even I
didn’t catch it. To avoid this in the future I added an option
to play soft white noise instead of silence, so that you can
hear when Bluetooth audio is working. Another feature I added
is dynamically changing output device when NVDA configuration
changes – previously that required a restart.
IndentNav is primarily
designed for software developers, and it allows better
navigation around indented source code files in text editors.
This new version works much faster, especially in VSCode. Here
are some keystrokes to try (please read github page for a
jump to next/previous line with the same indentation level
within current block.
jump to parent/first child line, where parent and child are
defined as line with lesser/greater indentation level.
select current block (e.g. function).
indent-paste, that is paste with adjusting indentation level
of clipboard content to match current line.
Phonetic punctuation v1.6
Phonetic punctuation allows to replace
punctuation marks with auditory icons (earcons). In general,
it allows to replace any regular expression configured
substring with an auditory icon, which can be great for
getting rid of timestamps and other frequently repeated
fragments. It also allows to change prosody parameters for
parts of speech, but only a few synthesizers support this.
This new version allows to adjust volume of each individual
auditory icon and has several bugfixes.
WordNav provides more
advanced scripts to navigate by word. It replaces built in
Control+Left/Right keystrokes with custom scripts. It makes
behavior of these keystrokes consistent across all
applications and adds multiple options on its behavior.
In this last version I spent
quite some time to work around Google Chrome bug in its IAccessible implementation,
but in the end I made it to work correctly in Chrome.
SentenceNav allows to
navigate by sentence via Alt+Up/Down keystrokes. This new
version includes some bugfixes.
TextNav allows you to find
the beginning of article, that is readable text written in
complete sentences, on any webpage. You can automatically skip
most of the clutter, such as menus, images, metadata and ads
on webpages. Works by pressing Alt+Shift+Down/Up keys. This
latest version only updates compatibility flag.
Console toolkit v1.2
This add-on provides some
additional features for console application, such as Windows
command prompt and Windows Terminal. This new version adds
better support for Putty. Here are some features:
can now be used for pasting.
becomes more real-time in a console that actively prints new
can edit current command by pressing NVDA+e in an accessible
have not been updated on the official NVDA add-ons website
yet. I sent a pull request, and it is subject to approval by
NVAccess. Until then, feel free to download latest versions
using links I provided above.
the add-ons were tested with NVDA alpha build 24399. Some
compatibility issues have been fixed, however, it is still
possible that something will change and compatibility will
break again by the time NVDA 2022 is released. The author
however has very limited time to work on add-ons, in fact the
only time of year when I have time to maintain my add-ons is
the winter break around Christmas and New Year. So, I release
my add-ons as is. I might try to find some time to fix
compatibility mid-year, but I cannot commit to it. Which
brings me to my second point:
needed. I currently have 9 add-ons and they require some
maintenance and as my life gets more and more busy every year,
I am struggling to find time for that, while users ask for
compatibility, translations, etc. I don’t want to let my users
down. So, I’m looking for someone who is familiar with add-on
development process to help me with that. Please contact me
off-list if you’re interested. Typical maintenance tasks are:
dealing with compatibility flags and releases, dealing with
translations, optionally fixing bugs.