This page is laid out for easy navigation via JAWS:
- Use h to jump from section to section.
- Use Tab to move among links for
different script versions. JAWSKey+F7 should also provide
a list of these links.
This dynamic version began on March 28, 2017 and supports JAWS 15 and later but no older JAWS versions.
Revision 2085, March 5, 2019
- Ctrl+JAWSKey+r from any map restarts BX and leaves it active.
- Improved means of handling web proxy servers during script updates.
The bx.htm documentation is updated accordingly.
- Fix to long-standing typos that broke the Describe (Space) description for the slash key at the default level.
- The sequence QuickKey a from within Internet Explorer, Firefox, and Google Chrome provides a few useful functions for browsers.
This sequence previously only worked from within Internet Explorer.
The most useful sequence is probably QuickKey a Shift+a, which does the same advanced-element-info retrieval as the default JAWSKey+Ctrl+Shift+F1 command. This alternative may be useful from keyboards which
are unable to issue the standard JAWS command due to its complexity.
- In the Browser map just mentioned, g and d apply to FSXML instead of the IE document object model.
These commands are minimally supported, however, as their use requires a command-line-based "diff" utility that is not included with BX.
- Some obsolete code is eliminated.
Revision 2041, November 19, 2018
This release contains several miscellaneous changes as well as a coordination of features for updating scripts.
- Shift+v in UIA Navigation reports the value of the UIA
- In the UIA map, pattern query changed from d to shift+d, and d now announces
- In Global Functions, the n command's help string finally documents the fact that, in addition to reporting network user and domain names and computer name from the
WScript.Network object, it also
reports any of
userProfile that have a value.
The BX author to date has never observed values for these attributes, however.
- In Global Functions, the u command for retrieving values of
GetRegisteredTo is now changed to Shift+n.
It also spells the three values if typed twice in quick succession.
- The command sequences for retrieving CPU usage percent (QuickKey d w c) and highest CPU utilizer (QuickKey d w shift+c)
See "The BX Quick Key" in the BX User's Guide for more information about the BX Quick Key.
- Should work in console settings like cmd on Windows 8/8.1/10, and
- Allow 7 seconds instead of 3 per COM call under JAWS 16 and later.
- a in HTML and XML Testing, intended for adding an attribute to an HTML node, is removed because its code was never written and it would only apply to Internet Explorer environments.
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:
- u attempts to update the scripts for the running application.
- Shift+u attempts to update the scripts for the running application without regard to any special scripting project namespace that may apply to this machine. This will not be of concern to anyone for
whom the BX author has not done direct scripting work.
This command may be useful though for those for whom such work has been done; e.g., to update scripts for Skype or Skype For Business (SFB) on a machine that is otherwise considered to be part of a specific scripting project.
- Ctrl+u attempts to update BX itself.
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
- The CPU load query command sequences, ] d w c and ] d w C, should work more often. Previously they would fail in console windows. Now they will most often succeed in a console window if already once run
since JAWS restart in a non-console window.
- The BX Configuration map, ' ctrl+b, contains a command (f) that toggles the effect of the JAWS Script Utility Mode command. By default, the Script Utility Mode command turns on BX when BX is loaded;
and typing the command twice quickly instead turns on Script Utility Mode. This toggle switches these so that a single press activates Script Utility Mode and a double press activates BX.
Typing f once in the BX Configuration map simply announces the toggle's current state. Typing f more than once, regardless of how fast, toggles the setting back and forth between the two alternatives.
This BX update fixes the announcement of the new state when it is toggled. The toggling worked before but was announced incorrectly.
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
GetObjectIA2State, and pressing three times will report the hex
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
- The minimum JAWS version for BX is now changed from 14 to 15.
bx_user.conf allows a new fastSpeechHistory setting. When set to 1, this causes the JAWS Ins+Space H sequence to bring up speech history in the old JAWS user buffer instead of the newer Results Viewer. Especially if userBuffer display is switched Off in JAWS settings, this results in much faster availability of speech history when this command is typed.
- Shift+C in the WTM QuickKey map includes highest processor user and usage percent under Windows 8/10, though out of 100 instead of within total CPU usage.
- In the UIA Navigation map, the UIA native window handle command is now w instead of Shift+H.
- In Global Functions, Shift+V reports major and minor Windows version numbers when unable to determine a friendlier name for the active Windows version.
- Some obsolete features of BX are removed, along with some superfluous output error messages held over from many years ago.
- The installer is a bit more likely to succeed in locations where read access to the Windows registry is not allowed.
Revision 1876, September 6, 2017
- The installer works under JAWS 2018 beta and should work under JAWS 2018 when it is released.
- If the installer fails to find a usable JAWS instance, it will display a log to help the developer understand why.
- l in HTML and XML Testing returns the bounding rectangle of an FSXML element when possible, though it may first move the element onto the screen.
- Shift+L in Window Navigation reports element count alongside length for
and the help string for the command is more accurate.
The text returned for double and triple presses may sometimes be cut short though.
- BX now includes nine new properties in UIA property lists that are not mentioned in the JAWS 18
A JAWS restart after updating BX may be required before these properties will appear in the Alt+Right property lists for UIA elements.
r8 variable types are reported properly in and out of arrays in the UIA element property list.
- A double d in UIA Navigation lists custom property values when property ids are available.
- Numerous tests for JAWS versions that BX no longer supports are removed.
- Shift+M in Global Functions reports Metro app name and version along with the already-reported
- Shift+A in Global Functions is just one function test, and Alt+A is removed.
These changes reflect changes to JAWS' handling of ARIA applications in or after JAWS 13.
- Multiple updates for virtual view handling (Shift+V in Cursor Navigation):
- The type "static text" is no longer announced.
- Regions no longer include type names on their start and end lines because the lines already include this.
- The state "Vertical" sometimes found on combo boxes is removed.
- Task switching by number
(BXQuickKey w when a quick key is defined)
will now attempt a special approach for Skype For Business 2016 conversation windows when appropriate.
- Windows 10 Settings and Store windows no longer appear to BX as tasks when their UI windows don't exist.
- There is a UIAScriptAPI object cache, to work around the problem of the BX event tracker, loaded on top of active scripts,
CreateObjectEx to fail to get one.
Revision 1813, April 1, 2017
- bxman.htm is now just bx.htm for consistency with other projects.
- Typing BX QuickKey sequences very rapidly should no longer cause keys to reach the focused application.
- Event tracing without unloading current app scripts works again.
- s in Window Navigation no longer includes code comments.
- Ctrl+Shift+JAWSKey+RightArrow in MSAA Navigation works on modern JAWS and Windows versions.
- Tab position in a map is not lost by visiting and returning from one of its context maps.
- Some functionality may be slightly faster due to use of scripting capabilities added in JAWS 14.
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)
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)
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)
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
Download: 130301 Obsolete version, download no longer available
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
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.
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.
Alt+Shift+S in MSAA Navigation will now select an MSAA element
without also setting focus to it.
The accent key (`
A double Shift+I in Window Navigation will now spell the
A double O in Global Functions now announces the result of isWinVista
in addition to isWin9x.
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
BX should now run under the following applications where it had
- Current versions of Microsoft Outlook.
- Microsoft PowerPoint.
- Windows Calculator.
- PCSWS.exe (IBM Personal Communications).
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
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:
- It can now be used to run a line of JAWS code immediately from more
places than just in the JAWS Script Manager. Example: It works in Notepad.
- It even works from console windows (no pasting of results though).
- Selected text is now used in preference to the current line for
JAWSKey+E (except in console windows), so lines wider than the
screen can be used.
- Alt+Shift+E will repeat the last-run
Alt+E or JAWSKey+E command without bringing up an edit box.
The following items are newly documented in the manual, bxman.htm:
- More default commands (commands that run from within any map).
- The mark system for saving locations.
- The BX Quick Key and its current set of command categories.
Download: 100524 Obsolete version, download no longer available
This is the first public release of BX.
Sorry to say, the
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