JGauge Progress Bar Monitoring Scripts For JAWS 4.x-8.x

Here you will find my scripts for monitoring Windows progress bars using sounds or speech.

Because these scripts are meant to modify JAWS' default behavior, they must be installed such that they take effect ahead of the normal default JAWS scripts in default.jsb. The procedure outlined below will accomplish this. For JAWS versions supporting separate shared and user settings, the user settings area should be used for installation.

To install the scripts:

  1. Download them and unpack them into the JAWS settings\enu directory. For JAWS versions 6.0 and up, this directory is most easily found by going to the Start menu, then All Programs, then the appropriate JAWS version, then Explore JAWS, and finally Explore My Settings. For older JAWS versions, an example directory is c:\jaws510\settings\enu. JGauge.jsb and three source files will be unpacked into this directory, along with a Sounds directory containing 105 small .wav files.
  2. Compile the scripts thus:
    1. Type JAWSKey+0 from within any application to open the JAWS Script Manager.
    2. Type Ctrl+O to get a dialog for opening a script file, then in the text box that appears, type "jgauge.jss" (without the quotes) and press Enter.
    3. Type Ctrl+S to compile jgauge.jsb.
    4. Type Alt+F4 to close the JAWS Script Manager.
  3. If you don't already have a custom default.jss file:
    JAWS 6.0 and up
    Copy default.jsb in the shared folder to default0.jsb in the user folder, then create a new default.jss in the user folder containing the line
    Use "default0.jsb"
    JAWS 5.10 and below
    Rename default.jss and default.jsb to default0.jss and default0.jsb, respectively; then create a new default.jss containing the line
    Use "default0.jsb"
  4. In your custom default.jss file, add this below the Use "default0.jsb" line:
    Use "JGauge.jsb" void function _jgauge() return endFunction
    The dummy function is necessary to avoid problems compiling default.jss under JAWS 7.1.
  5. Recompile the default.jsb file with the JAWS Script Manager to make the new code immediately take effect.

These scripts are hereby released into the public domain. At this writing, I consider them more a proof of concept than a final product. They are based on an idea from a guy named Jason on the JAWSScripts list (I don't think I ever did see his last name). I wrote them before JAWS began reporting progress bar percentages, but as JAWS now does this, many people will likely find these scripts unnecessary. I still find them cool, but then I'm a bit biased.

What follows is a description of the scripts. Click here to download the current version.

Script Features

This is a set of scripts and a set of 105 wav files comprising an audio gauge. The idea is to have a tone sweep from 220Hz to 880Hz (i.e., one octave below A 440 to one octave above it) as a progress bar advances. 101 wav files are assigned to the 101 values of a percentage (101 because they include both 0% and 100%; the other four wav files are used for special conditions). When a progress bar's position changes, the corresponding wav file is played. If a progress bar remains unmoving for five seconds, its last position is indicated so you can detect stalled downloads, etc. Each tone file is only 0.05 seconds long, so it amounts to a very short blip. Actually, each file contains three simultaneous tones: the one indicating the current progress percentage, plus a quieter tone for the starting position and one for the ending position. The upshot of all this is that, as a progress bar moves, you hear not only that it's moving, but also a very fast and accurate description of how far it is relative to its endpoints. Easier to hear than to explain, no doubt. If you don't install the wav files, JAWS will announce the percentages instead of using the wav files to report them.

The wav files were created using Perl and a Unix tool called augen. The volumes of the tones should be such that JAWS speech is not eclipsed by progress indications. The wav files are small (1,294 bytes each) and so don't require much time to load.

A note from author Doug Lee about the source code: It is split into three files: the main file, called jgauge.jss, and two code modules named progress.jsl and IEGlobe.jsl (JSL means JAWS Script Library). Progress.jsl contains the progress bar watching code. IEGlobe.jsl contains code for watching the Internet Explorer globe for movement, as well as a bit of code for reporting when Windows is busy.