BX, the JAWS Toolbox

General Information

This page is laid out for easy navigation via JAWS:

Version Current

This dynamic version began on March 28, 2017 and supports JAWS 15 and later but no older JAWS versions.

Revision 2325, released March 08, 2020

A block of BX code that has been active since 2003 was found occasionally to cause performance problems during focus switching between applications. This update is therefore recommended for all BX users. The performance issue appears to affect JAWS 2020 and possibly 2019 and consists of speech and keyboard stalls of several seconds' duration when the user switches between applications and then very quickly tries to issue commands to the newly focused app.

Along with removal of this code block, the following four BX commands are removed:

Revision 2303, February 15, 2020

Revision 2246, October 14, 2019

Revision 2244, October 9, 2019

Revision 2214, July 3, 2019

This revision fixes a problem some users experienced with the BX Update system. It also replaces some oddly-located features with more sensibly located and flexible commands and maps. The new commands and maps will be described first, followed by the removed commands and how they were replaced, and finally some other changes and enhancements beyond the new commands and maps.

New commands and maps:

Removed commands and how to accomplish what they once did:

Other changes and enhancements:

Revision 2171, June 7, 2019

Typeing QuickKey b toggles on/off a battery watching feature described below and also speaks, and shows in Braille where applicable, "on" or "off" indicating whether the watch feature is on or off, then the following very briefly summarized computer power status information:

Typical battery status examples:
ph 100%
bl 25% 21 minutes remaining

If the watch feature is on, any change in the above status information, except for hours/minuts/seconds remaining, is reported as it occurs. To turn the watch off again, type QuickKey b again.

Revision 2127, April 22, 2019

Revision 2085, March 5, 2019

Revision 2041, November 19, 2018

This release contains several miscellaneous changes as well as a coordination of features for updating scripts.

Miscellaneous changes:

BX now includes means to pull updates to itself and to scripts for running applications from the BX author's website. All updates use secure https rather than http to retrieve update files.

Warning: Use of the below update commands should be considered equivalent to following a beta track, as incomplete and experimental features may appear from time to time via such updates. This warning applies to both updating BX and updating scripts for other applications. Also, the update system's ability to function may be dependent on local and network policy restrictions on web access and/or local file and folder access.

The following commands from the Global Functions map are available for performing updates:

For those who have defined a BX Quick Key, the same three keys typed after QuickKey d will also work. See "The BX Quick Key" in the BX User's Guide for more information.

Revision 1982, August 9, 2018

Revision 1970, June 25, 2018

s in Object Examination includes the hex value from GetObjectStateCode, a function that has been around for a long time. In sufficiently new versions of JAWS 2018 and later, pressing s twice will report the hex values from GetObjectMSAAState and GetObjectIA2State, and pressing three times will report the hex value from GetObjectStateCodeEx. At least the first two of these three new functions are documented in versions of JAWS 2018 prior to their actual implementation in JAWS itself.

Revision 1961, May 8, 2018

Revision 1876, September 6, 2017

Revision 1813, April 1, 2017

Revision 1797, March 28, 2017

There are numerous improvements and additions over the 15a release, unfortunately not at this time listed here.

Download: Current Installer (also can be unzipped with 7Zip)

Version 15a

This version was released on January 20, 2014 and was long considered experimental. It is the last version supporting JAWS 13 and older and is not recommended for newer JAWS versions.

Bug fixes
  • Error messages on 64-bit Windows machines, such as "can't make the VBS environment," should no longer speak.
  • Vvarious VBScript and JScript errors from HTML Navigation commands should now speak without bringing up error dialogs on 64-bit Windows versions just as on 32-bit ones.
Enhancements and changes
  • Major rewrite of BX's internal structure for handling locations.
  • For string comparisons, the "==" operator is now treated with JAWS 12+ semantics, i.e., full match rather than match only through shortest string. "StringComparison Partial" is no longer used in BX.
  • This and subsequent BX versions will not compile or run properly under anything older than the latest update of JAWS 11.
  • New UIA Navigation map that can help in UIA testing under JAWS 14 and later. Includes the ability to type a filter specification to choose the UIA view to navigate (raw, control, content, current process, specific control types, or any combination). More on filters below.
  • New Context map from UIA Navigation for jumping from a UIA object to its window, MSAA element, or rectangle.
  • New UIA Find map (/ from UIA Navigation) for collecting all elements matching a filter specification and moving through them with arrows. More on filters below.
  • New Context map entries for Window and MSAA Navigation to jump to the corresponding UIA elements.
  • Activating a map before you have a location (e.g., a window or MSAA object) will move to a default location for that map and announce this. This means you no longer have to type Ctrl+F when switching to Window or MSAA Navigation for the first time.
  • Most maps, not just the Window Navigation map, save their previous locations across BX activations. This means, for example, that MSAA Navigation will stay at the last object/element visited even when you turn BX off and back on. A JAWS restart will of course reset all this.
  • Marks are no longer saved across JAWS restarts.
  • There is now a history system in BX: Alt+Shift+UpArrow returns to the previously visited location and the map from which it was visited. Subsequent presses retreat up to 20 locations back through visitation history. Alt+Shift+DownArrow steps forward through these locations. Both wrap at the end of the history saved.
  • bx.jsd no longer contains function declaration overrides required for BX compilation.

UIA Filter Specifications

BX now includes a system for letting users specify UIA tree filters via an edit box. This system encapsulates the various Condition-building features of the new JAWS 15 (and undocumented but present in JAWS 14) UIAScriptAPI COM system.

Filter strings, or specifications, consist of a series of one or more items separated by single spaces. The items comprise an expression that forms a filter condition. The expression is in post-fix, or Reverse Polish Notation (RPN) format. This may be unfamiliar to some users but significantly simplifies expressions by avoiding the need for parentheses and for recursion in parsing (which JAWS does not support). Example expressions:

Requests the entire UIA tree be visible for navigation.
contentView focusedProcess and
Include only content-view elements and only those in the focused Windows process.
Shorthand for the above.
FPRawView controlType checkBox controlType edit or and
Include only checkboxes and edit controls in the focused process (this much complexity is rarely necessary).

Here are all the types of items permitted in a filter specification:

contentView, controlView, rawView
Require the given UIA tree view type.
Require the process ID to match the focused application's process ID.
One of the above with focusedProcess.
Reverse the previous condition: "focusedProcess not."
and, or
Combine previous two conditions: "contentView focusedProcess and."
property name
The name of a property with a PropertyID. These are from UIA.jsh without UIA_ prefix and PropertyId suffix. Examples: Name, ControlType.
value name
The name of a value with an ID. Categories:
  • Control types like CheckBox, Edit, and Hyperlink.
  • Other constants without *_ prefix, like Horizontal and LargeIncrement.
  • Other raw constants like Next that contain no underscore.
False, True
Create a boolPropertyCondition with the previous item. Example: "IsEnabled True." If not after a property, creates a False or True condition (directly in JAWS 15.0.5056+, simulated before that).
int like 1, -50, etc.
An integer value. Makes an IntPropertyCondition with the previous item. Example: "RangeValueMinimum -5"
String like 'hello'
A string value. Makes a StringPropertyCondition with the previous item. Example: "Name 'My UIA Application'" To get a literal apostrophe in a string, write two of them together. Backslash escapes like \t also work.

Download: 15a Installer (also can be unzipped with 7Zip)

Version 10a

This version was released on January 14, 2014. This is the last BX version supporting JAWS 10 and older and is not recommended for newer JAWS versions. This version calls itself "BX10" when Insert+Q is typed while BX is active.

Window Navigation updates
  • A double Shift+C reports the total number of descendants (at any level) under the current BX window. If a filter is in effect, the number of descendants matching the filter and the total number of descendants are announced.
HTML Testing updates:
  • Major event attribute announcement clutter in IE 9 fixed.
  • Ctrl+L allows querying of element.getBoundingClientRect(), which appears to be the best way to get the rectangle containing an HTML element.
Miscellaneous updates
  • Major internal reorganizations including better modularization, more well-defined paths for data and execution to transfer among modules, and better namespace management. (This is an ongoing effort and is still not complete.)
  • bx.jsd entries required for compilation under very old JAWS versions reduced.
  • The distributed bx.jsb and other jsb files are compiled with JAWS 10.0 rather than JAWS 5.0.
  • Various installer/uninstaller fixes, including better guessing of jfw.exe file location when not findable in the Windows registry (helps when JAWS is not on drive C), not interfering with SkypeWatch installations, better script chain management, and better handling of non-English BX uninstallation.

Download: 10a Installer (also can be unzipped with 7Zip)

Version 130301

This version contains numerous enhancements over previous BX releases, not all of which managed to get documented here. One notable enhancement is that the installer for this version properly handles installation after other scripts that chain through default.jss, such as the SkypeWatch scripts. This installer can also be unpacked with a 7Zip or compatible utility, so a separate zip of the BX files is no longer necessary here.

The specific changes in this version are not listed here at this time, though this may change based on time and need. Users are advised to use Tab in each map they use to find out what new items may exist. Previous BX versions have been removed from this web site, as they were causing problems in modern JAWS versions and custom script environments.

Download: 130301 Obsolete version, download no longer available

Version 100524

This version updates and replaces the version released on September 11, 2007. Enhancements included are described below. Changes are grouped by which map they affect. Changes not specific to a particular map appear in the "Miscellaneous" section. The "BX Configuration" section includes some changes affecting configuration files but not the actual BX Configuration map. There are numerous changes not listed here due to lack of time to collect them all. Users are advised to use Tab in each map they use to find out what new items may exist.

HTML Navigation

RightArrow and LeftArrow now move in and out of frames as if they were part of the same node tree. JAWS will announce when it enters or exits a frame in this manner. The old ways of doing this, Ctrl+S to enter and Ctrl+LeftArrow to exit, should still work, though Ctrl+S uses a different and older method to find a frame's contents, and Ctrl+LeftArrow goes to the containing frame's document object rather than to the frame element itself. The new RightArrow code came from an idea by Jonathan Avila.

Ctrl+F now drills through frames as necessary to land on the innermost element with focus, instead of stopping on the focused Frame element in the top-level document.

Shift+P now puts the current (in BX) element's document outerHTML on the clipboard and in the JAWS virtual buffer, instead of always putting the top-level document there.

MSAA Navigation

Alt+Shift+S in MSAA Navigation will now select an MSAA element without also setting focus to it.

Window Navigation

The accent key (` A double Shift+I in Window Navigation will now spell the .Net controlIDString.

Global Functions

A double O in Global Functions now announces the result of isWinVista in addition to isWin9x.

BX Configuration

In BX Configuration, K now opens bx_user.kmp instead of bx.kmp, and Shift+K opens bx.kmp. Bx_user.kmp is the recommended place to make personal maps and map entries.

Special Ctrl+Alt+arrow etc. behavior when BX is off can now be turned on/off with the bx.jcf colorchk option. Unless disabled, these commands move by pixel when a non-PC cursor is active, even outside of BX.

BX should now run under the following applications where it had trouble before:

COM Object Testing

Alt+R in COM Object Testing now attempts to register TLBInf32.dll, first in the Windows system directory, then in the Windows directory, and finally in the JAWS user folder in case the BX installer left the file there. Also, there should now be fewer complaints if you use BX without this DLL.


The semicolon (;) now cycles among Cursor, Object, and Pixel maps for convenience when pressed from within one of those maps.

There are numerous updates to the ListView Functions, TreeView Functions, and ToolBar Functions maps that are not listed individually here.

There is a Skype submap accessible via the BX Quick Key that allows dialing of any phone number under the active cursor if Skype is running. BXQuickKey D S will enter this map, then D will read the phone number that would be dialed without dialing it, and Shift+D will actually dial it and exit BX.

UserBuffers will now more consistently end with the proper "Press ESCAPE to close this message" message.

JAWSKey+E has been enhanced:


The following items are newly documented in the manual, bxman.htm:

Download: 100524 Obsolete version, download no longer available

Version 070911

This is the first public release of BX. Sorry to say, the documentation is quite lacking; but there is much built-in help, which is described by what external documentation does exist. The documentation file is bx.htm, which is included in the download and is also reachable via the link earlier in this paragraph.

Download: 070911 Obsolete version, download no longer available