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 reassigned.
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 options.
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
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
or Alt+Shift+`: jump to next/previous comment and announce
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 level 2.
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 dialog.
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 Firefox.
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),
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 interesting ones.
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 the way.
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
keystrokes: allows to configure announcing current line
after certain keystrokes.
and hiding any application windows.
insert/overwrite mode in text editors to prevent
accidentally overwriting text.
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 complete list):
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
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
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
can now be used for pasting.
becomes more real-time in a console that actively prints
can edit current command by pressing NVDA+e in an
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