Homer Script Library beta 2 for Jaws for Windows version 3.31
Last updated December 20, 1999


                                   CONTENTS

Introduction
Block operation scripts
Home row context scripts
Deletion shortcut scripts
Navigation voicing scripts
Miscellaneous enhancement scripts
Installation
Credits


                                 INTRODUCTION

This document describes enhancements I've developed to the default
functionality of Jaws for Windows version 3.31 by Henter Joyce
(http://www.hj.com).  I'm sharing them to get feedback and benefit others. 
Collectively, I'm calling them the "Homer" script library to denote their home
row and blindness orientation (Homer was a blind author in ancient times).  

These scripts were motivated by a persistent desire to have various, extra
screen reading features to be commonly available in any Windows application. 
Over the years, I've suggested such features to multiple screen reader
developers as a registered user of their products.  Understandably, the
companies have not prioritized the features for future development in the same
ways I would.  Recently, I decided to create as many of them as possible by
programming with the JFW scripting language.  The work was hard and time
consuming, but the reward is that I've been able to create most features I
wanted.  Naturally, the development process triggers ideas for further
improvements, so the cycle may repeat in some way.

The Homer library is a free contribution to the public domain.  The keystroke
combinations assigned to its scrips are intended to add features, minimize
keyboard conflicts, and provide memory associations described below.  At this
time, the scripts are grouped into the following categories:  block operations,
home row context, deletion shortcuts, navigation voicing, and miscellaneous
enhancements.  The default commands by HJ remain available in the desktop
layout.

This is the second public beta release of Homer, intended for testing by any
interested user of JFW.  Feedback I received from testers of the initial
release helped me to correct problems, add features, and improve the usability
of the library.  The direct web address of the Homer archive is
http://www.empowermentzone.com/homer.zip


                            BLOCK OPERATION SCRIPTS

The block scripts offer extensive clipboard capabilities independent of the
Windows clipboard and the normal modes of selecting text.  They allow any text
that can be read to be defined and stored as a block in a special buffer (a JFW
global variable).  The block can span multiple lines.  It can be expanded by
appending to rather than replacing it.  The separator character between appends
can be chosen.  The block can be pasted into an editing mode of any
application.  To minimize confusion with the Windows clipboard, I refer to it
as the block buffer.

The block manipulation commands use the punctuation keys in the lower right of
the keyboard in combination with either Control+Shift or Alt+Shift.  The basic
and most common commands use Control+Shift and the more advanced ones use
Alt+Shift.  In addition, Some keys have extra functionality when pressed twice
quickly in succession.  Here are the keystrokes and summary descriptions--
followed by longer explanations:

Control+Shift+, = Start block, or copy field to buffer if repeated
Control+Shift+. = End block and Copy to buffer
Control+Shift+/ = Paste block buffer
Control+Shift+Semicolon = Say block buffer and separator, or spell if repeated
Alt+Shift+, = Append field to buffer
Alt+Shift+. = End block and append to buffer
Alt+Shift+/ = Send block buffer to Windows clipboard, or clear if repeated
Alt+Shift+Semicolon = Choose separator between appended blocks

A typical block sequence would involve setting the left edge with the
Control+Shift+, key, then setting the right edge with the Control+Shift+. key,
which also copies the block defined to the internal buffer, and finally the
Control+Shift+/ key to paste the block where desired.  Notice that these three
keys are in a row from left to right on the keyboard.  Notice that the less
than symbol (<) is associated with the comma key (when shifted), and that < can
be thought of as enclosing the left of the block.  Similarly, the greater than
symbol (>) can be thought of as enclosing the right of the block.

The Control+Shift+; key says the current block stored in the buffer.  It also
says the current block separator character that will be used in append
operations.  When pressed twice quickly, this key spells the current block,
similar to the way that the JFW Insert+NumPad5 key spells the current word when
repeated.

The Control+Shift+, or StartBlock key also has a second function when repeated
quickly.  It defines the current block as the field at the cursor position. 
JFW defines a field intelligently as sequential text with similar
characteristics, e.g., an underlined phrase.  Notice that this operation is
analogous to the way that Control+[ repeated quickly defines a JFW frame
automatically as the current window.

The advanced block functions use Alt rather than Control as a modifier.  The
Alt+Shift+, key appends rather than copies the current field to the block
buffer, with the block separator character inserted between the previous and
newly added text.  Similarly, the Alt+Shift+. key appends rather than copies a
block after setting its right edge.  Commands which copy or append to the block
buffer announce the text that has just been added.

The Alt+Shift+/ key sends the contents of the block buffer to the Windows
clipboard.  If you also want to clear the block buffer, you can repeat this key
quickly.  The text on the clipboard can be pasted with the standard Control+v
key.  Typically, the clipboard approach would not be used because of the extra
steps involved.  It may be useful if you want to have two different blocks
available for pasting into an application, one stored in the block buffer to be
pasted with the Control+Shift+/ key and the other stored on the Windows
clipboard to be pasted with the Control+V key.  You might also discover
situations where the block paste method works less reliably than the clipboard
paste method, which is integrated into Windows itself.  Be assured, however,
that the block scripts have been tested, revised with feedback, and found to
work well at this time.

When repeated quickly, The Alt+Shift+/ key clears the block buffer, allowing
you to start again with a clean slate so to speak.  It is not actually
necessary if a CopyBlock command will be used next, since that would replace
the contents of the block buffer.

The Alt+Shift+; key lets you choose the character(s) between appended blocks. 
The default separator is a carriage return, causing each appended unit in the
block buffer to be placed on a separate line when the whole block is pasted. 
Other block separators can be chosen from a listbox, including Tab, Space,
Comma and Space, and None (no separator).  Choosing a separator character
affects subsequent appends, without altering what is already stored in the
block buffer.

The keys that define the left and right of a block use the active cursor, which
can be Jaws, PC, Invisible, or Braille.  The PC cursor should be avoided for
this, however, unless you are defining a block automatically as a field of
text.  The reason is that moving the PC cursor to set the right of a block will
often affect the exact positioning of all text in the window, causing the block
to be something other than what you expected.  To minimize such problems, the
StartBlock command checks whether the PC cursor is active, and if so, activates
the Jaws cursor and routes it to the PC cursor.

You can define a block containing multiple lines of text by executing the
EndBlock command on a line below the StartBlock command, thereby indicating the
top right and bottom left positions of the block.  In this case, it is
especially important to use a cursor other than the PC cursor because text in
the window is likely to shift as you move the PC cursor.  Also, keep in mind
that characters in the Windows environment usually vary in width due to the use
of proportional rather than monospaced fonts.

Homer defines a multiline block so that it includes complete intervening lines
of text between the top and bottom positions of the block definition.  The top
line of the block includes text from the left position of the block to the
right edge of the line.  The bottom line of the block includes text from the
left edge of the line to the right position of the block.  Thus, setting block
coordinates determines the start of the block on the top line and the end of
the block on the bottom line, with full lines in between.  A carriage return
will separate each line of text in the buffer, regardless of the block
separator for append operations.


                           HOME ROW CONTEXT SCRIPTS

Another group of scripts is designed for performing common screen reading
operations without moving your hand to the numeric keypad.  I often find this
more convenient and efficient.  Others may consider these alternatives
unnecessary since they feel productive with exclusive use of the numeric or
extended keypads for such functions.  These home row alternatives provide
contextual information relative to the active cursor.  They are as follows:

Control+6 = Say character, or phonetic equivalent if repeated
Control+7 = Say word, or spell if repeated
Control+8 = Say line, or spell if repeated
Control+9 = Say control, or spell if repeated
Control+0 = Say window, or spell if repeated
Control+[ = Say from start of line to cursor, or spell if repeated
Control+] = Say from cursor to end of line, or spell if repeated
Control+, = Say line before cursor, or spell if repeated
Control+. = Say line after cursor, or spell if repeated
Control+' = Say window title, or spell if repeated
Control+/ = Say status line, or spell if repeated
Shift+Space = Say selected text, or spell if repeated
Shift+Enter = Say default button, or spell if repeated
Shift+Backspace = Say field, or spell if repeated
Control+Semicolon = Pass next key through to application

Notice that the sequence of Control with the 6, 7, 8, 9, and 0 keys reads
textual units of increasing size.  Notice that the caret symbol (^) is
associated with the 6 key, which can be thought of as pointing to the character
at the cursor.  The Control+8 key is perhaps the easiest to comfortably press,
which makes sense because saying the current line is the most common reading
operation.  The Control+9 key identifies the type, label, and data of the
current control, an alternative to the JFW Insert+Tab key.  When repeated
quickly the Control+6 key says the phonetic equivalent of the character.  As
much as technically possible, the other home row context keys will spell their
verbalizations when pressed twice quickly.  In this way, the home row
alternatives provide some additional information over the standard reading
scripts.


Notice that the left bracket and right bracket symbols ([]) convey reading from
the left edge of the line to the cursor and from the cursor to the right of the
line, respectively (alternatives to the JFW Insert+Home and Insert+PageUp
keys).  Similarly, the less than and greater than symbols (<>) convey reading
the line before and after the cursor.  Notice that the quote symbol (") is
associated with saying the title of the window, and that titles of written
documents are often surrounded by quote marks.  Notice that the slash symbol
(/) is associated with reading the status bar, and that it , like a status bar,
is at the bottom.  Also notice that this command is associated with the
question mark symbol (?), signifying a query of the status of the application
in use, e.g., to determine the operating mode of an email program.  

Notice that the Space key is often used to select items in a listbox, and that
the Shift+Space key says selected text.  Also, this key is convenient to press
for confirming the text selected while you are using the shifted arrow keys to
select text.  Notice that the Enter key is used to accept the default button in
a dialog box, and that Shift+Enter says this button.  The Shift+Backspace key
is another in this triplet of Shift keys, saying the field at the active
cursor, and providing a way to check what text would be copied to the block
buffer with the CopyField or AppendField commands.

Finally, in case these home row or other JFW keys conflict with keyboard
shortcuts of an application, the Control+; key provides an especially
convenient and efficient way to pass keys through.  It involves minimal hand
movement from the home row position.


                           DELETION SHORTCUT SCRIPTS


To increase efficiency when editing text in Windows applications, a group of
Homer scripts provides common deletion commands, including reading the new text
at the cursor afterward.  They are as follows:

Control+Delete = Delete word and say new one
Control+Shift+Delete = Delete to end of line and say line
Control+Shift+Backspace = Delete to beginning of line and say line
Alt+Backspace = Delete line and say new one
Alt+Shift+Delete = Delete to bottom of file and say line
Alt+Shift+Backspace = Delete to top of file and say line

Windows programs often use the Control+Delete key for deleting a word at a time
in the forward direction (Control+Backspace goes backward).  Homer attaches a
script to this key so that the new word at the cursor is spoken after a
deletion, thus confirming the deletion and updating your orientation.

Notice that adding the Shift modifier to this key extends the deletion to the
end of the line.  The Control+Shift+Backspace key does the reverse by deleting
to the beginning of the line.

The Alt+Backspace key deletes the current line.  It combines the keystrokes for
going to the beginning of the current line, selecting it, deleting it, and then
saying the new line under the cursor.  This is a common task, especially for a
screen reader user who often thinks and edits in a line oriented manner.  If
you accidentally delete text with this or other deletion commands, immediately
press the Control+Z key to undo the operation.

A final pair of deletion commands is the Alt+Shift+Delete key to delete from
the cursor to the end of the file, and the Alt+Shift+Backspace key to delete
from the cursor to the top of the file.  None of these deletion commands use
both the Alt and Control modifiers, so you should not be tempted to press the
Alt+Control+Delete key, which would invoke the Windows "end task" dialog.


                          NAVIGATION VOICING SCRIPTS

A group of scripts adds reading to common navigation commands.  They confirm
the new location and automatically verbalize text units associated with the
cursor movements.  These rather self-explanatory scripts are as follows:

Home = Go to start of line and say word
End = Go to end of line and say word
Control+Home = Go to top of file and say line
Control+End = Go to bottom of file and say line
PageUp = Go to screen top and say line, or read prior screen with PC cursor
PageDown = Go to screen bottom and say line, or read next screen with PC cursor


                       MISCELLANEOUS ENHANCEMENT SCRIPTS

This group of scrips offers miscellaneous enhancements to the default
functionality of JFW:

Alt+Semicolon = Maximize window
Alt+/ = Say all with PC Cursor
Insert+` = Toggle between all and no punctuation
Control+5 = Say relative position as percentages
Control+NumPadMinus = Say position in rectangular grid

The Alt+; key maximizes the current parent and child window, refreshes the Jaws
"off screen model," and makes the PC cursor active.  These steps generally
prepare Jaws for the best reading orientation.  By its location, the Alt+; key
is especially easy to press, allowing this command to be comfortably executed
as frequently as needed.  If a maximize command is not available on the current
system menus, you may hear a beep.  No harm is done to the application,
however.

The Alt+/ key is immediately below the MaximizeWindow command, allowing one to
initiate continuous reading conveniently.  This key activates the PC cursor and
then performs the JFW SayAll function.  Notice that the slash symbol (/) is at
the bottom right of the keyboard, suggesting how the cursor will move downward
through the document toward its end.

The Insert+` key toggles JFW between a setting of all and no punctuation.  No
punctuation is often efficient when reading documents for content, since fewer
verbalizations occur and you can concentrate on words without distracting
symbols.  All punctuation is often needed when reading for format, such as
reviewing a document you've written.  Although the punctuation setting can be
changed through the JFW verbosity dialog, this key provides a significantly
quicker way of switching between punctuation extremes.  Notice that the accent
symbol (`) is associated with it, signifying punctuation.

The Control+5 key says the position of the active cursor in terms of
percentages rather than absolute row and column coordinates.  It gives you a
proportional sense of your horizontal and vertical position within the current
window.  Notice that the percent symbol (%) is associated with the 5 key.  Also
notice that this key is next to the key that says the current character, and it
provides coordinates of this character in percentages.

Another command that gives a sense of relative position is the Control+NumPad-
key.  It tells you the column and line of the cursor as if the current window
were a rectangular grid like in DOS mode.  For example, it might say
"Jaws cursor column 30 of 100 line 10 of 30."  It should be understood that a
window is not actually composed of regular, equally-sized lines and columns. 
You will find, for example, that the total number of lines often changes as you
move from left to right.  This key can sometimes be useful, however, in
understanding the layout of a window and where movements of the cursor take
you.  Since the command only works with the Jaws cursor, it also activates that
cursor.  If you want the grid position of the PC cursor, you should first route
the Jaws cursor to it.  Notice that the minus key is associated with the Jaws
cursor, and that this command provides information about it.


                                 INSTALLATION

Since the Homer library extends the default scripts of JFW, it can be installed
by replacing those files.  It is important that you create a backup of all
default files before doing this in case you wish to go back to the files
shipped by Henter-Joyce.  A backup can be created by copying all files matching
the default.* specification into another folder.  Homer would replace the
default.jsb compiled file, default.jss script file, default.jkm keyboard file,
and default.jsd documentation file.  It does not affect the default
configuration, dictionary, frame, or graphics files.

You can also install Homer functions manually by modifying appropriate files
either with the JFW utilities or a text editor.  You may want to do this if you
have made other changes to the default script files, which you don't want to
lose by replacing them.  You could also choose this approach if you want some
Homer commands but not others.

To manually install Homer, take the following steps:

1.   Open the JFW script editor with the default file, e.g., with the
Control+Shift+0 key.

2.  Insert the contents of the homer.jss file at the end of the document.  You
might do this by opening homer.jss in the Wordpad program, selecting and
copying all text to the Windows clipboard, and then pasting it into the
default.jss file.

3.  Compile the new default scripts, such as with the Control+S key.

4.  Assign each Homer script desired to a key combination.  A summary of the
script including its suggested keystroke is provided on the second line of the
script (the one immediately below the Script command).  To provide a synopsis
for a key, you could select the text after the equals sign on the summary line,
copy it to the Windows clipboard, and then paste it into the synopsis field
after invoking the documentation dialog with the Control+D key.  You can move
forward and backward through scripts with the F2 and Shift+F2 keys.  You need
only assign keys to the groups of scripts that interest you, and only the ones
desired in each group.  In general, The scripts function independently, except
for the block operation ones, which practically speaking, should probably be
assigned either completely or not at all.  The extra work of adding the
synopsis to document a script is optional, depending on whether you want this
to be read when its key is pressed in the JFW key help mode.

An alternate, much quicker though nonstandard way of adding the Homer library
to your default scripts can be done as follows.  First, compile the new
default.jss file with homer.jss included at the end.  Then, use a text editor
such as NOTEPAD or HJPAD and insert the contents of homer.jkm into the
default.jkm file immediately after the following line:

[DESKTOP Keys]

Although Homer keys can be added to the JFW laptop layout, some keys will
conflict in the complete set, so I suggest adding only the keys you desire if
you want to preserve the default functionality of that layout.  On the other
hand, you may find that the Homer key assignments accomplish most of what you
want to do from the main keyboard, and that it is easier to re-assign HJ keys
that do not have Homer equivalents.  In either case, insert the homer.jkm file
after the following line:

[LAPTOP Keys]

Then remove or re-assign keys on conflicting lines in that section of the file. 
Save the new default.jkm file to disk.  Finally, insert homer.jsd at the end of
default.jsd, and save the revised file.  This will allow Homer keys to be
identified in the JFW keyboard help mode, invoked with the Insert+1 key. 
Reload JFW for the Homer library to take effect.


                                    CREDITS

I wish to thank the staff of Henter-Joyce for developing the JFW scripting
language, Ken Gould for the scripting guide, Dennis Brown for the tips
collection, and Jim Snowbarger for initial ideas about block functions.  I
welcome feedback and suggestions, which provide information and inspiration for
enhancing the library.  Homer is an open-source work which anyone can use and
improve.

Jamal Mazrui
[EMAIL PROTECTED]
http://www.empowermentzone.com




-
Visit the jfw ml web page: http://jfw.cjb.net

Reply via email to