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.
Phonetic punctuation
·
Github
page
·
Short
audio demo
·
Download
latest version
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
·
Github page
·
Download
latest version
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.
Browser marks
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.
Tony’s enhancements
·
Github
page
·
Download
latest version
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.
NVDA volume
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.
Dynamic keystrokes
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
·
Github page
·
Audio
demo
·
Download
latest version
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.
SentenceNav
·
Github page
·
Download
latest version
Allows you to navigate text
sentence-by-sentence or phrase-by-phrase, as opposed to by word,
character or
line.
IndentNav
·
Github page
·
Download
latest version
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.
Bluetooth Audio
·
Github
page
·
Download
latest version
Improves sound quality for
those who use NVDA
with Bluetooth or other wireless audio devices by constantly
playing silent
sound.
AudioChart
·
Github page
·
Download
latest version
AudioChart allows you to sonify time series
in Microsoft
Excel.
Thanks for reading this! Let me know
what you think about these new features!
--Tony