I have tried using the app on site like Youtube, I was able
to generate a bookmark on the play pause button.
1. I open either email from the current folder
2. I jump to the content of the email by heading and move to
the line "reply" and want to create a bookmark on that
3. I press nvda j, down to bookmark and press right arrow, it
only offer me one option "Create new bookmark from current
paragraph for site All sites"
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 installed:
Old reddit: https://old.reddit.com/r/sysadmin/comments/rt91z6/exchange_2019_antimalware_bad_update/
Hacker news: https://news.ycombinator.com/item?id=29756714
Alt+` or Alt+Shift+`: jump to
next/previous comment and announce its level.
Alt+1 or Alt+Shift+1: jumpt to
next/previous comment at level 1.
Alt+2 or Alt+Shift+2: jumpt to
next/previous comment at level 2.
Alt+number or Alt+Shift+number:
jumpt to next/previous comment at corresponding level.
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 >
There are a few options that can be
configured on per website level:
Block 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.
Block live region announcements.
Similarly, some websites misuse live regions. BrowserNav
allows to selectively block them.
Auto 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
Recap of other BrowserNav functions
Vertical navigation: allows to find
objects on a web page that are directly underneath by
Navigation by font size: allows to
find text written in the same font size or font style.
More QuickNav commands: jump to
next menu(Z), tab(Y), dialog(P), etc.
I 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.
I 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.
mouse pointer over current object and scroll up/down. This
can be useful to load more content in infinite scroll
Alt+NumPadDelete: 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
Enhanced table navigation commands,
such as jump to first/last row/column.
Automatic language switching based
on Unicode character set.
QuickSearch – similar to BrowserNav
QuickJump bookmark, but works in text editors.
Dynamic keystrokes: allows to
configure announcing current line after certain keystrokes.
Showing and hiding any application
Detecting insert/overwrite mode in
text editors to prevent accidentally overwriting text.
Adjusting 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
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
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):
NVDA+Alt+Up/Down: jump to
next/previous line with the same indentation level within
NVDA+Alt+Left/Right: jump to
parent/first child line, where parent and child are defined
as line with lesser/greater indentation level.
NVDA+Control+I: select current
block (e.g. function).
NVDA+V: 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
Control+V can now be used for
Speech becomes more real-time in a
console that actively prints new messages.
You can edit current command by
pressing NVDA+e in an accessible window.
Versions 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
All 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
Volunteers 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.