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 14 and later but no older JAWS versions.
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