Keystroke Queuing

Summary

Keystroke Queuing is an NVDA add-on that lets you define named sequences of keystrokes, mouse actions, and text input in a simple configuration file, then execute any sequence with just a couple of keystrokes.

Requirements

Installation

  1. Download the .nvda-addon file.
  2. Open it with NVDA (double-click or use Tools → Manage add-ons → Install).
  3. Restart NVDA when prompted.

On first install the default keystrokeQueuing.cfg is copied to your NVDA user configuration directory so you can customise it.

Usage

Default Keyboard Shortcuts

| Shortcut | Action | |---|---| | NVDA+Shift+Q | Open the command queue selection dialog | | NVDA+Control+Shift+Q | Reload the configuration file |

Selecting and Executing a Queue

  1. Press NVDA+Shift+Q.
  2. A dialog appears listing all configured command queues by name.
  3. Select a queue and press Enter (or click OK).
  4. NVDA announces the queue name and executes each step in sequence.
  5. When finished, NVDA announces "Done."

Settings Panel

You can edit the configuration directly from within NVDA:

  1. Go to NVDA → Preferences → Settings.
  2. Select the Keystroke Queuing category in the left-hand list.
  3. The panel displays a text editor pre-loaded with your current keystrokeQueuing.cfg content.
  4. Edit the commands as needed (the format is described below).
  5. Press OK or Apply to save. The configuration is written to your NVDA user configuration directory and automatically reloaded — no restart required.

Configuration File

The configuration lives in keystrokeQueuing.cfg. On installation it is copied to your NVDA user configuration directory (typically %APPDATA%\nvda\). If the file is not found there, the add-on falls back to the default copy bundled inside the add-on. You can edit this file manually or use the built-in Settings panel described above.

Format

```

Lines starting with # are comments

queueName=step1|delay1||step2|delay2||step3|delay3 ```

Each queue is a single line. The name (before =) is what appears in the selection dialog. The value (after =) is a ||-separated list of steps. Each step is action|delay where delay is in seconds.

Supported Step Types

| Syntax | Description | |---|---| | keystroke\|delay | Emulate a keyboard shortcut, e.g. control+v\|0.2 | | `text`\|delay | Type literal text character by character | | mouseMoveX*Y\|delay | Move mouse to absolute position (e.g. mouseMove100*200) | | mouseMove+X*-Y\|delay | Move mouse relative to current position | | mouseClick\|delay | Left-click at current mouse position | | mouseDoubleClick\|delay | Double-click at current mouse position | | tellMe:message\|delay | Show a message box with the given text |

Example Configuration

```ini

Type "title of window is" then press Insert+T to read the window title

title=title of window is|0.2||insert+t|0.0

Open Firefox via the Run dialog

firefox=windows+r|0.2||firefox|0.2||enter|2.0||alt+d|0.2

Open Notepad, paste clipboard, open File menu

notepad=windows+r|0.5||notepad|0.2||enter|1.0||ctrl+v|0.2||alt+f|0.2

Open Notepad, type text, show a message

notepad2=windows+r|0.5||notepad|0.2||enter|1.0||hello world|0.5||tellMe:how are you today|0.5

Move mouse to (25, 25) and click

clickMouseOn25-25=mouseMove25*25|0.5||mouseClick|0.2

Show desktop and double-click at a specific position

doubleClickThisPC=windows+m|0.2||mouseMove39*139|0.2||mouseDoubleClick|0.1 ```

Building from Source

Prerequisites

Build

bash cd keystrokeQueuing scons

This produces keystrokeQueuing-1.0.0.nvda-addon in the project root.

Quick Package (without SCons)

If you just want to create the .nvda-addon file manually:

bash cd keystrokeQueuing/addon zip -r ../keystrokeQueuing-1.0.0.nvda-addon . -x "*.pyc" "__pycache__/*"

Or on Windows with PowerShell:

powershell cd keystrokeQueuing\addon Compress-Archive -Path .\* -DestinationPath ..\keystrokeQueuing-1.0.0.nvda-addon

Rename the .zip extension to .nvda-addon if your archive tool adds it.

Changes

1.1.0

1.0.0

License

This add-on is licensed under the GNU General Public License version 2. See COPYING.txt for the full license text.