JAWS Scripts For 3CX
Doug Lee
Last Revised August, 2025
This document describes the JAWS scripts for 3CX and provides
tips for using this application with JAWS.
This document can be opened from within the application via a double press
of JAWSKey+F1 (or Insert+F1)
when the scripts are running.
Table of Contents
System Requirements For JAWS Users
In addition to any system requirements for the application, the following
apply for JAWS users:
- The computer should be running Windows 10 or 11.
Older Windows versions may work but have not been tested.
- 3CX version 20 or possibly later should be used.
These scripts are not designed to work with older 3CX versions.
- JAWS 2020 or later should be used. The scripts will not
work with or install into older JAWS versions.
The scripts were most recently tested against JAWS 2025.
Script Installation Instructions
To install these scripts on a new system:
- Load JAWS if this has not already been done. This will require
administrative privileges on the computer.
- Run JAWS as the user for whom the scripts are to be installed.
This and the following steps must be performed for each user of the computer
who will be using JAWS with these scripts.
- Download and run, or run directly, the installer for these
scripts; and follow the on-screen directions. Be sure to install the scripts in the currently running
JAWS version if a JAWS version list is presented.
- To verify successful installation, type Insert+Q from
within the application. Part of the JAWS spoken response should be a
revision number. If you do not hear a revision number, the scripts are
not correctly loaded.
In some cases, restarting JAWS may fix this issue.
Key Sequences
These scripts incorporate commands that consist of sequences of keystrokes, all beginning with a common prefix, or "command keystroke."
This approach allows many script commands without the risk of conflicting with application keystrokes.
See the "Multi-Key Command Sequences" section of the "Common Script Elements" document for further details, including
how to explore the available script commands (similar to exploring a menu system),
and how to change the Command keystroke if necessary.
By default, the Command keystroke for these scripts is [.
This document may refer to this keystroke as [ or Command;
so, for example, [ Tab and Command Tab both refer to typing the prefix keystroke, then separately the Tab key.
Some sequences may consist of more than two keystrokes, or "levels"; for example, [ d r would refer to typing [, then d, then finally r.
Script Features In Brief
The scripts provide the following features:
- Better field announcements throughout the application. This includes
- Names for menu items and buttons that were not named in the application.
- Announcement of "selected" for selected menu items.
- Announcement of "badges" (event counts) beside menu items like Calls.
- Names for checkboxes on Settings pages.
- Meaningful naming of edit controls on the Settings > Hotkeys page.
- Improvements for Insert+B, the standard JAWS command for reading a dialog in
a logical order.
- Quick keys for handling calls (see also
Setting Up Global 3CX Hotkeys
for how to set up 3CX hotkeys that even work outside of the 3CX window):
- The key sequence [ C announces the current call's phone number.
Typing this sequence twice quickly, or using the sequence [ Shift+C,
also copies the number to the clipboard.
- The key sequence [ H holds or resumes the current call.
- The key sequence [ T transfers the current call.
(By default, this is an unattended transfer.)
- The key sequence [ S to bring up the status menu that is obtained by clicking on this user's avatar.
This menu allows status changes, timed statuses, account configuration, and more.
- The key sequence [ L, or the JAWS command Insert+F5,
brings up a list of controls for review and selection.
Besides convenience, this provides a means to reach
controls that Tab and Shift+Tab skip,
such as the "Keep on top" checkbox.
- The key sequence [ Shift+L, or the JAWS command Insert+F6,
brings up a list of text elements for review.
This can provide information about an active call and ready access to
other screen material not reachable via the keyboard,
such as the current call's connect time and contact name.
Setting Up Global 3CX Hotkeys
3CX provides a screen where you can set up hotkeys for various functions that will work from anywhere in Windows.
A hotkey should include Ctrl and/or Alt and may also include Shift.
When choosing hotkeys, remember that any active 3CX hotkey will override anything that key combination would
otherwise do in another application.
A hotkey will not override a JAWS script however, which is why these 3CX scripts do not use
Ctrl+Shift combinations for functions like hold/resume as of July, 2025.
To set up global hotkeys, such as for answering or holding/resuming a call:
- Go to the Settings menu item and press Space or Enter.
- Tab to the Hotkeys button and press Space.
- Tab to the Hotkeys checkbox and make sure it is checked.
When this box is not checked, all global 3CX hotkeys are disabled, as are the fields for setting or changing
them in this screen.
- Tab to the first function for which you want to assign a hotkey. JAWS will describe the
function and say "read only edit."
- Type the key combination you want to use, such as Ctrl+Shift+H. Type the combination as if
you are trying to use it; do not spell it out in letters.
- Use the JAWS
SayLine
command, Insert+Up or JAWSKey+I in laptop
keyboard layout, to verify that your keystroke appears in the box.
- To change an assignment, just type the new combination over the old one.
- To remove an assignment, Tab once from its edit box to the next Delete button and press
Space.
- When finished, Tab or Shift+Tab to the Back button and press Space to
close the Hotkeys panel and return to the Settings screen.
Tips For Using 3CX With JAWS and the Scripts
This section provides tips for performing several common tasks in
3CX while using JAWS and these scripts.
This is not an exhaustive list of tasks nor a replacement for the
3CX user documentation.
To change your online status, set a timed status, make account configuration changes, and more, open the
status menu from your avatar with the key sequence [ S.
[ L or Insert+F5 can provide a means to access buttons and other
controls that are otherwise not reachable via the keyboard.
The shortcuts for handling calls mentioned in the previous section
provide fast means of holding, resuming, and transferring a call and
identifying the phone number of the contact. Any control or operation
not given a quick key can still be accessed via the list of controls, brought up with [ L
or Insert+F5.
[ Shift+L or Insert+F6 can provide access to screen text that is otherwise
hard to find via the keyboard. Most text shown by this command will be
field and control labels, but this command is provided in case any
other text item must quickly be accessed.
Insert+B is a good way to review the contents of short popup
dialogs, such as confirmation boxes and alert messages.
The touch cursor provided by JAWS starting in JAWS 15 may be
handy for finding material in this application that is not reachable
via the Tab key.
If it becomes necessary to exit the 3CX application completely:
- Move to the system tray. In Windows 11, Windows+B will do this.
- If necessary, press the "Show hidden icons" button so that the 3CX button becomes visible.
- Find the 3CX button using Left and Right arrow keys,
then press the Menu or Application key.
JAWS is likely to say "Menu" or "Context menu" but may then announce a control from within the 3CX window.
- Press Tab once to reach the context menu.
JAWS should say "Exit" unless there are more entries in the menu on your system.
- Find Exit and press Enter.
Known Issues
The following issues are known and may be encountered during use of the application with these JAWS scripts.
These issues may be fixed in a future update to the scripts or to the application itself.
In some screens, notably Settings screens such as Hotkeys, Tab and Shift+Tab often
stop in places where keys do nothing.
This is a native 3CX application issue that should be fixed in the application itself.
The control and text item lists can be slow to appear and can include many more items than necessary.
Braille support is not well tested and is likely incomplete.
Revision History
This is the revision history of these scripts, most recent revision first:
Revision 66, August 5, 2025, tested against application version 20.0.0.967
Warnings:
- This is a FlexStable release that may
change over time to accommodate more fixes and features until this notice is removed.
During development of this update for 3CX version 20, these changes may be unusually significant.
- This script update is intended for 3CX version 20 and should not be installed and used with any older 3CX
version (16, 18, etc.).
- The minimum supported JAWS version is raised from 2018 to 2020 in order to support script loading based
on web subdomain address patterns.
- The old Ctrl+Shift+R command is removed because 3CX no longer offers a separate
retrieve/resume function; rather, hold/resume is now a toggle.
- Several scripted keystrokes have changed to key sequences, in order to avoid collisions with 3CX itself.
In particular, this allows users to set up global hotkeys like Ctrl+Shift+H in 3CX itself for
holding/resuming calls.
Such keystrokes will work both inside and outside of the 3CX window, whereas scripts will only work inside
the 3CX window.
Expand this for a table of changed keystrokes
The changed keystrokes are as follows:
Changed keystrokes and their new sequences in this script revision
Function | Old Keystroke | New Key Sequence | Comments |
Hold call | Ctrl+Shift+H | [ H | |
Retrieve/resume call | Ctrl+Shift+R | [ H | 3CX no longer offers a separate button for this; just use hold/resume |
Say contact number | Ctrl+Shift+C | [ C | |
Put contact number on clipboard | Ctrl+Shift+C twice quickly | [ Shift+C | |
List controls | Insert+F5 | [ L | The original command also still works; it's a standard JAWS command and not likely to be used by 3CX |
List text items | Insert+F6 | [ Shift+L | The original command also still works; it's a standard JAWS command and not likely to be used by 3CX |
Additional updates in this revision:
- These scripts load for the following new 3CX instance types:
- 3cx.us subdomains.
- 3cx.cloud subdomains.
- The Windows 3CX app obtained from the Windows App Store (3CXDMCC).
- The scripts are updated for 3CX version 20 as can be obtained at this writing from the Windows App Store.
- The key sequence [ S brings up the status menu that is obtained by clicking on this user's avatar.
This menu allows status changes, timed statuses, account configuration, and more.
- There is a new
Setting Up Global 3CX Hotkeys
section in this document that explains how to set up 3CX hotkeys for common functions, such as answering and
holding calls.
- This document also includes a description of
how to exit 3CX.
- JAWS names most buttons and menu items even when they have no on-screen text names.
- JAWS announces "badge" counts for menu items like Calls, and "selected" for the selected menu item.
- There is special script support in the Settings > Hotkeys page to make JAWS announce what each hotkey
edit box is for.
- Removed some code for supporting very old JAWS versions,
and updated various parts of the code to improve support for newer JAWS versions and Windows 11.
Translators:
The xml files are updated and include all strings needing translation.
Previously, several were missing and were instead included as part of the script code and were thus not
possible to translate until now.
Revision 36, September 22, 2022, tested against application version 16.0.1.88
Warning: This script author was not able to test this update sufficiently due to lack of
access to a testing environment. This message is likely to go away as soon as I hear back from users on how
well this update works.
In the event of trouble, though trouble is not predicted,
the previous released revision (26) is available here.
- Code is updated to improve support for JAWS 2021 and later.
- Keystroke names in this document are more consistent, and there are other minor documentation improvements.
- The installer contains version and product information visible from the Details tab in Windows Explorer,
to better identify its contents. This update is being applied to all projects.
- A "directives" text file is included that provides information on how to install this set of scripts manually.
See "Handling Directives Files" in the "Common
Script Elements" document for further information.
- The messages for these scripts are now distributed in XML rather than jsm files so that translators can
create translations with no need for script source recompilation.
See the Script Translation Procedure document for details on
how to translate these scripts, including how to update the XML message file.
Revision 26, released April 08, 2020, tested against application version 16.0.1.88
- The minimum JAWS version is raised from 16.0 to 2018.
- The new application name
3CXWin8Phone
is mapped in Confignames.ini to load these
scripts.
- The code and documentation are significantly updated to conform to modern standards.
The installer is also switched from Inno Setup (ISS) to Nullsoft (NSI).
- Source code to the scripts is no longer included. See my Script
Distribution Policy document for details. As one side effect, this will cause installation to run much faster.
Revision 16, April 27, 2015, tested against application version 12.0.37098
- Initial script release, though released in beta form due to the sudden termination of the corresponding
volunteer engagement due to lack of need for completion of the project.