Idea for a Macro Capability in NVDA

32 views
Skip to first unread message

Darrell Hilliker

unread,
Feb 26, 2026, 6:45:14 PM (4 days ago) Feb 26
to nvda-...@nvaccess.org

Hi everyone,

 

I’ve had this idea for years, but, now that I’ve adopted NVDA as my primary screen reader, I’m deciding to let it out for some fresh air to see if anyone out here is interested in tackling the challenge.

 

I think NVDA should have a macro capability. It should be built as an addon first, and then, once tested thoroughly, incorporated into NVDA core.

 

Here’s how I envision this working.

 

There’s an app that isn’t fully accessible, or maybe its accessible, but perhaps not very productive to use due to a lack of keyboard shortcuts, etc. An addon can be created, but that still requires quite a bit of software development and we know lots of highly-skilled blind people who don’t and are not interested in coding.

 

Introducing macros! Press a desired keyboard command, then execute all the commands needed to accomplish a task, enter some basic information describing its purpose and then save the macro! Anytime the task needs to be done again, just press the newly defined shortcut key!!!

 

I have some ideas as to design requirements:

  1. Built first as a global addon.
  2. The keyboard shortcut and its description gets added to Input Gestures.
  3. In addition to basic command execution, there would be a few critical extras like the ability to stop speaking while the macro runs and the ability to send specific information or the results from a reading command out to be Brailled and spoken.

 

And here’s a stretch:

  1. The macro gets saved as a text file anyone can edit, either to tweak the actual sequence or to correct an error without having to necessarily start over.
  2. Macros could be packaged and associated with a specific app, then exchanged with other NVDA users!

 

Here’s an example…

I use a program called N3FJP Amateur Contact Log to keep my logbook. It displays some information I’d like to get by just pressing a single keystroke rather than having to manually navigate the screen. I don’t necessarily want to spend a huge amount of time writing a Python program just to capture and rerun keystrokes.

 

So with a macro capability I might do something like the following to quickly move to and speak the total number of contacts:

  1. Assign the new macro to alt+shift+q.
  2. Now execute NVDA commands like:

NVDA+numpad 9 to focus the navigator object inside the N3FJP Call Window.

NVDA+numpad 8 twice to move up to the main program’s object.

Shift+numpad 7 to move to the top of the window.

Numpad 9 three times to move to the line containing the most recent contact.

Numpad 5 to speak the current word, which contains the number of the most recently concluded contact.

  1. Press a keystroke to save the macro.
  2. Enter a name for the Macro.
  3. Prompt for a description for the macro.
  4. After providing the description and pressing enter, the macro is saved and ready for immediate use!

 

What does everyone think? Anyone interested in creating a small collaboration to get this done?

 

Thanks,

 

 

Darrell Hilliker, NU7I, CPWA, Salesforce Certified User Experience Designer

When disabled people ask you to improve your accessibility, they’re asking you to make a conscious choice. Will you welcome us in or leave us out? Good people make the right accessibility choices every time.

 

Quentin Christensen

unread,
Feb 26, 2026, 9:13:27 PM (4 days ago) Feb 26
to nvda-...@nvaccess.org
While an add-on could be made for this, there are quite possibly Windows macro programs already available which may do what you want?  I haven't really used any of them, so I'll leave it to others to recommend, but I think many of them simply work by executing the commands you give them - so they don't necessarily need to know that those keys are NVDA specific shortcut keys.

I had a quick look in our add-ons, and not so much for general commands, but for creating macros for text replacement, there is "Keyboard Shortcut Autocomplete Professional".

Kind regards

Quentin

--
***
Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
 
You can contact the group owners and moderators via nvda-user...@nvaccess.org.
---
You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org.
To view this discussion visit https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/088d01dca779%24f1266920%24d3733b60%24%40gmail.com.


--

Quentin Christensen
Training and Support Manager

NV Access

Subscribe to email updates (blog, new versions, etc): https://eepurl.com/iuVyjo

jacob kruger

unread,
Feb 27, 2026, 1:41:00 AM (4 days ago) Feb 27
to nvda-...@nvaccess.org

Ok, what you are describing is similar to what things like mainstream software autoHotkey can offer - intercept keystrokes and then carry out combinations of UI interaction activities.


Secondly, my one initial experiment with NVDA add-on development relates pretty much to what you were talking about in terms of creating macros of activities to allow automated interaction with possibly inaccessible software - actually put it together in first place to try make it possible for a sighted person to compile sets of interaction activities from the NVDA-user perspective, with the idea being that we could then compile these into an actual application-specific add-on, but never really got past the initial experimentation phase.


What it effectively does at the moment, is allows you to edit a text file and create a form of macro, provide it with a label, and then inside it specify sets of activities to be carried out in a set order, with possible time-pauses between actions, and the current types of activities include the following:

moving mouse cursor to a specific position on-screen

moving mouse cursor to a relative position

executing a keystroke such as enter, space, or keystroke combinations like alt+F, etc.

type in a string value character by character


So, sounds almost like it could already do what you want, except it's still just here in my try-out scratchpad under NVDA user settings, and when you invoke it's own primary keystroke, it currently brings up a list of it's activity collections for you to select one of them to then have it executed.


Either way, this discussion would probably do better on the NVDA add-ons mailing list for now anyway.


Jacob Kruger
"Resistance is futile...acceptance is versatile..."
--

jacob kruger

unread,
Feb 27, 2026, 2:02:14 AM (4 days ago) Feb 27
to nvda-...@nvaccess.org

Sorry - left out ability to perform either single or double mouse-clicks as well - after you've moved mouse cursor with previous action.


Jacob Kruger
"Resistance is futile...acceptance is versatile..."

Ed Marquette

unread,
Feb 27, 2026, 2:12:57 AM (4 days ago) Feb 27
to nvda-...@nvaccess.org
All:
Some of us who have been around back to the 90's will remember a Screen Reader called Window Bridge (way before NVDA). It included an extremely powerful macro facility that could send keystrokes both to the screen reader itself and to the running application (or operating system). So, the idea isn't new, but it is a good one.
Windows offers something called Autohotkey, but my one experience with it was quite unsatisfactory.
In Windows, Phone-Link is supposed to permit one to switch a mobile phone call to the computer. Even though NVDA reads, "Would you like to transfer the call to your computer," no reliable keyboard-actuated way to respond to the prompt exists. Chat GPT offered several solutions that didn't work. Then Chat GPT suggested using Autohotkey. I messed with it for a couple of hours and gave up.
An NVDA macro would be really helpful.


From: nvda-...@nvaccess.org <nvda-...@nvaccess.org> on behalf of jacob kruger <ja...@blindza.co.za>
Sent: Friday, February 27, 2026 00:40
To: nvda-...@nvaccess.org <nvda-...@nvaccess.org>
Subject: Re: [NVDA] Idea for a Macro Capability in NVDA
 

Rob Hudson

unread,
Feb 27, 2026, 2:33:13 AM (4 days ago) Feb 27
to nvda-...@nvaccess.org
What about something like hot spot clicker.
> 1. Built first as a global addon.
> 2. The keyboard shortcut and its description gets added to Input Gestures.
> 3. In addition to basic command execution, there would be a few critical extras like the ability to stop speaking while the macro runs and the ability to send specific information or the results from a reading command out to be Brailled and spoken.
>
>
>
> And here’s a stretch:
>
> 1. The macro gets saved as a text file anyone can edit, either to tweak the actual sequence or to correct an error without having to necessarily start over.
> 2. Macros could be packaged and associated with a specific app, then exchanged with other NVDA users!
>
>
>
> Here’s an example…
>
> I use a program called N3FJP Amateur Contact Log to keep my logbook. It displays some information I’d like to get by just pressing a single keystroke rather than having to manually navigate the screen. I don’t necessarily want to spend a huge amount of time writing a Python program just to capture and rerun keystrokes.
>
>
>
> So with a macro capability I might do something like the following to quickly move to and speak the total number of contacts:
>
> 1. Assign the new macro to alt+shift+q.
> 2. Now execute NVDA commands like:
>
> NVDA+numpad 9 to focus the navigator object inside the N3FJP Call Window.
>
> NVDA+numpad 8 twice to move up to the main program’s object.
>
> Shift+numpad 7 to move to the top of the window.
>
> Numpad 9 three times to move to the line containing the most recent contact.
>
> Numpad 5 to speak the current word, which contains the number of the most recently concluded contact.
>
> 1. Press a keystroke to save the macro.
> 2. Enter a name for the Macro.
> 3. Prompt for a description for the macro.
> 4. After providing the description and pressing enter, the macro is saved and ready for immediate use!
>
>
>
> What does everyone think? Anyone interested in creating a small collaboration to get this done?
>
>
>
> Thanks,
>
>
>
>
>
> Darrell Hilliker, NU7I, CPWA, Salesforce Certified User Experience Designer
>
> When disabled people ask you to improve your accessibility, they’re asking you to make a conscious choice. Will you welcome us in or leave us out? Good people make the right accessibility choices every time.
>
>
>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org<mailto:nvda-user...@nvaccess.org>.
> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org<mailto:nvda-users+...@nvaccess.org>.
> To view this discussion visit https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/088d01dca779%24f1266920%24d3733b60%24%40gmail.com<https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/088d01dca779%24f1266920%24d3733b60%24%40gmail.com?utm_medium=email&utm_source=footer>.
>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org.
> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org<mailto:nvda-users+...@nvaccess.org>.
> To view this discussion visit https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/715db403-4e6d-418d-b81a-ab7368d7d620%40blindza.co.za<https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/715db403-4e6d-418d-b81a-ab7368d7d620%40blindza.co.za?utm_medium=email&utm_source=footer>.
>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org.
> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org.
> To view this discussion visit https://groups.google.com/a/nvaccess.org/d/msgid/nvda-users/BYAPR11MB35600E8FD57D40E2A3617651F773A%40BYAPR11MB3560.namprd11.prod.outlook.com.
>
>

Christopher Bartlett

unread,
Feb 27, 2026, 1:33:54 PM (4 days ago) Feb 27
to nvda-...@nvaccess.org
Something like this would certainly be useful in the Google Docs world with its finger-straining multiple-key commands to move around docs. Funny this should come up now as I began examining the feasibility to build something like this for docs specifically.


On Fri, Feb 27, 2026 at 2:33 AM 'Rob Hudson' via NVDA Screen Reader Discussion <nvda-...@nvaccess.org> wrote:
What about something like hot spot clicker.

----- Original Message -----
From: Ed Marquette <marque...@gmail.com>
To: "nvda-...@nvaccess.org" <nvda-...@nvaccess.org>
Date: Fri, 27 Feb 2026 07:12:52 +0000
>   1.  Built first as a global addon.
>   2.  The keyboard shortcut and its description gets added to Input Gestures.
>   3.  In addition to basic command execution, there would be a few critical extras like the ability to stop speaking while the macro runs and the ability to send specific information or the results from a reading command out to be Brailled and spoken.

>
>
>
> And here’s a stretch:
>
>   1.  The macro gets saved as a text file anyone can edit, either to tweak the actual sequence or to correct an error without having to necessarily start over.
>   2.  Macros could be packaged and associated with a specific app, then exchanged with other NVDA users!

>
>
>
> Here’s an example…
>
> I use a program called N3FJP Amateur Contact Log to keep my logbook. It displays some information I’d like to get by just pressing a single keystroke rather than having to manually navigate the screen. I don’t necessarily want to spend a huge amount of time writing a Python program just to capture and rerun keystrokes.
>
>
>
> So with a macro capability I might do something like the following to quickly move to and speak the total number of contacts:
>
>   1.  Assign the new macro to alt+shift+q.
>   2.  Now execute NVDA commands like:

>
> NVDA+numpad 9 to focus the navigator object inside the N3FJP Call Window.
>
> NVDA+numpad 8 twice to move up to the main program’s object.
>
> Shift+numpad 7 to move to the top of the window.
>
> Numpad 9 three times to move to the line containing the most recent contact.
>
> Numpad 5 to speak the current word, which contains the number of the most recently concluded contact.
>
>   1.  Press a keystroke to save the macro.
>   2.  Enter a name for the Macro.
>   3.  Prompt for a description for the macro.
>   4.  After providing the description and pressing enter, the macro is saved and ready for immediate use!

>
>
>
> What does everyone think? Anyone interested in creating a small collaboration to get this done?
>
>
>
> Thanks,
>
>
>
>
>
> Darrell Hilliker, NU7I, CPWA, Salesforce Certified User Experience Designer
>
> When disabled people ask you to improve your accessibility, they’re asking you to make a conscious choice. Will you welcome us in or leave us out? Good people make the right accessibility choices every time.
>
>
>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org<mailto:nvda-user...@nvaccess.org>.

> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.

>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org.
> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.

>
> --
> ***
> Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
> NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
> https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
>
> You can contact the group owners and moderators via nvda-user...@nvaccess.org.
> ---
> You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org.

>
>

--
***
Please note: the NVDA project has a Citizen and Contributor Code of Conduct.
NV Access expects that all community members will read and abide by the rules set out in this document while participating in this group.
https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md

You can contact the group owners and moderators via nvda-user...@nvaccess.org.
---
You received this message because you are subscribed to the Google Groups "NVDA Screen Reader Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nvda-users+...@nvaccess.org.


--
Christopher Bartlett

Darrell Hilliker

unread,
Feb 27, 2026, 2:08:56 PM (3 days ago) Feb 27
to nvda-...@nvaccess.org

Hi Christopher,

 

I appreciate your support. Google Docs is a great example of the need for such a capability.

 

I’m also thinking about a lot of custom apps or apps from small developers where there’s either not enough good underlying object structure or it would require a great deal of specialized Python addon development to make it accessible.

 

A macro capability could essentially democratize the accessification of apps, because the user just needs to know the steps they’re taking and wouldn’t have to become a coder just to make apps they might need on the job work for them.

 

Thanks,

 

 

Darrell Hilliker, NU7I, CPWA, Salesforce Certified User Experience Designer

When disabled people ask you to improve your accessibility, they’re asking you to make a conscious choice. Will you welcome us in or leave us out? Good people make the right accessibility choices every time.

 

"Roberto Pérez de Paz."

unread,
Feb 27, 2026, 3:36:31 PM (3 days ago) Feb 27
to nvda-...@nvaccess.org

Andrew Downie

unread,
Feb 27, 2026, 5:45:57 PM (3 days ago) Feb 27
to nvda-...@nvaccess.org
I am a huge fan of AutoHotKey (www.autohotkey.com).  It is free and well documented.  Yes, some learning is required, but the benefits are huge.  I have a friend who is an audio engineer and he relies heavily on AutoHotKey scripts to access his preferred DAW.
A few years ago when the Golden Cursor add-on was temporarily unavailable I wrote an AutoHotKey script, which I modestly called Silver Cursor, to fill the gap.  Results were very pleasing.
It is also a great tool for remapping keys.


Andrew


Reply all
Reply to author
Forward
0 new messages