Your work is interesting.
and what about the translations?
the "tonysEnhancements" add-on is not ready to be translated. What
do you intend to do about it?
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