GWKB1003 : Working With Window-Eyes User Windows

Product: Window-Eyes
Author: Steve Clower
Date Added: 09/20/2005
Last Modified: 03/21/2011

Working With Window-Eyes User Windows

This guide describes how Window-Eyes standard, hyperactive, and float windows operate. For this guide, it is assumed that you are comfortable with Window-Eyes concepts and commands, you are running at least Window-Eyes 7.5, and you have set Window-Eyes to show advanced options from within the Help menu. None of the user window features described below are available when advanced options are hidden.

Note: while still useful, user windows are a legacy technology that remains for those who are more comfortable with this approach to customizing their Window-Eyes speech environments. We strongly recommend that those interested in customizing Window-Eyes to work with new applications investigate app development or the Hot Spot app as both of these options provide more flexibility than this technology.

If, on the other hand, you wish to continue learning about the power that is available with standard, hyperactive, and float windows, then keep reading for all of the details. If you are running a version of Window-Eyes prior to 7.5, the hot keys discussed below are still relevant, though the user interface and placement of options will differ.

User Windows

Not to be confused with Microsoft Windows, Window-Eyes user windows are user definable, rectangular portions of the display screen. You define them in terms of coordinates relative to the active window. For example, a window defined as the full active Window would have a left edge 0 pixels from the left edge of the active window, 0 pixels from the top edge of the active window, 0 pixels from the right edge, and 0 pixels from the bottom of the active window. As the active window is resized or moved, Window-Eyes user windows adjust to accommodate the changes.

Window-Eyes has two kinds of windows, standard and hyperactive. Standard user windows are for reading portions of the display screen while ignoring other portions. They can be set to any size, from one character to the entire display screen. You can read the contents of any of the first twenty standard windows with the press of a hot key. Windows 0 through 9 can be read with Alt-0 through Alt-9. Windows 10 through 19 have their hot keys undefined by default. Any of the 50 standard windows can be read with the Any Window hot key, undefined in the default Window-Eyes speaking environment. Though fifty standard user windows are available, few speech-access users ever need to use all, or even most of them.

A bit more complicated than standard windows but no less important, hyperactive windows help automate Window-Eyes. Once set, a hyperactive window watches constantly for user-specified changes on the display screen and then instructs Window-Eyes to carry out some pre-selected task. For example, a hyperactive window might be set to watch for any change on your program's status line and then instruct Window-Eyes to read the line. Ordinarily located at the very bottom of the program window, a status line is a line of information about the status of a program where the cursor is in a document, the name of the currently open file, etc. Meanwhile, another hyperactive window might be set to watch for a certain color to pop up, and then trigger Window-Eyes to beep or maybe make some announcement.

Setting and adjusting the user windows is done with a set of hot keys, defined by default as Insert-F3 through Insert-F7. Like all hot keys, these can be redefined if necessary.

Window-Eyes needs two pieces of information for each of the four user window coordinates. For the left position, for example, Window-Eyes must know not only a numeric value for the setting of that position, but also whether or not that value is relative to the left or right edge of the active Window.

Setting and Adjusting the Current User Window

The "Select User Window" hot key, Insert-F3, prompts you to select one of the fifty user windows (0-49) as the current user window. Once you select a window to be the current user window, it remains so until you change it or load a new SET file.

When you press Insert-F3, Window-Eyes displays the User Window Properties settings group of its control panel which prompts you to select a window number. Key in a number, 0-49, and either press Enter to close the Window-Eyes control panel, or Tab through and configure the user window's properties. Insert-F4 sets the coordinates of the current user window. When you want to set another window, you have to make that window the current window with the select user window hot key or by adjusting the "Current Window" option within any of the user window settings panes. Window coordinates are saved when you save SET files through the File menu. To set window coordinates with the Insert-F4 key:

 

Press Insert-F4. The User Window Coordinates settings pane of the Window-Eyes control panel opens and prompts you for the left, top, right, and bottom coordinates of the current user window. Key in a number between 0 and the maximum resolution of your video card to set the left edge of the window and press Tab to confirm the current setting.

Window-Eyes accepts the setting and moves the cursor to the next field, which is a radio button group. Window-Eyes announces, "Radio Button Checked Offset From Left 1 of 2." Use the arrow keys to move from Offset From Left or Offset From Right. When offset from right, Window-Eyes offsets the coordinates from the opposite edge of the active window.

Press Tab again to move to the next field for the value of the setting for the top of the user window. Window-Eyes prompts for the number of the top line. Key in the number you want for the top of the window. Use a value between 0 and the maximum resolution of your video card.

Pressing Tab again takes you to the pair of radio buttons where you determine whether you wish the value you assigned to the top of the window to be interpreted as an offset from the top or bottom edge of the active window. Use the arrow keys to change the setting of the radio buttons. Once again, if you choose Offset From Bottom, the offset will be the opposite edge of the active window, which in this case would be the bottom.

Set the right and bottom coordinates of the user window using the same procedure just described above.

Pressing Tab from the bottom radio buttons moves you to a button labeled "Copy Settings From Window." Pressing Enter on this button brings up a dialog with an edit box allowing you to type the number of a user window from which you wish to copy coordinates.

Once you have made all the changes you wish to make, press Enter to minimize the Window-Eyes control panel.

You can use the File/Reset Settings item in Window-Eyes to cancel any changes you have made before saving them to disk.

Using the Mouse Pointer to Set Window Coordinates

A fair amount of concentration is needed when ascertaining the number-values of the coordinates you want to use to define window boundaries and then keeping them in mind while you work through the above procedure for setting these coordinates. So Window-Eyes has an alternative method which does not require you to go through all this. The mouse pointer is available to set window coordinates.

Since Window-Eyes' user windows always come in rectangles, their boundaries are always defined as top-left and bottom-right. You only have to know these two coordinates to have the other two, bottom-left and top-right, defined logically. It can be easy to find the conceptual top-left and bottom-right of a window without knowing, or even caring, about the number-value of these coordinates. The first line of text above or below a status line, the color attributes of a grouping of text, the place where program menus pop up; these and other clues to appropriate window locations and sizes can often be determined simply by moving the pointer around.

When you do this and find a place you want to use as one of the two boundaries, just press Insert-F5 to set the top-left or Insert-F6 to set the bottom-right boundaries. Window-Eyes enters pixel values for you. Since it may be difficult for you to position the mouse pointer exactly at the top left or bottom right of the area, by default Window-Eyes adjusts your values to correspond to the beginning or end of the current clip.

If you wish to have Window-Eyes use the exact position of the mouse to only include part of the clip, turn the use clip boundaries with mouse item off in the User Windows/Miscellaneous pane of the Window-Eyes control panel; this is a global setting. Generally you will want to leave this option on, but in some programs such as terminal emulators or sound editing programs the clip might be an entire line and you might want to set the user window to exclude part of this line. In these cases you would want to turn the use clip boundaries with mouse option off.

The Offset

When should you use the opposite value for the offset options when setting up a window? Generally speaking, you will probably use one or more of the opposite values for most windows. There are times when you will not want a particular coordinate to be an offset from its corresponding edge.

Let us look at an example. Let us suppose that in your word processor the page and line numbers are displayed at the bottom of the active window. You would like to have a hot key to read that information. So, you select window 5, place your mouse pointer on the word "Page" and press Insert-F5. You place your pointer on the line number and press Insert-F6. You press Alt-5 to hear the text enclosed within window 5 and hear "Page 1 Line 9." This is what you had in mind, so you select window 0 and save your settings. You might want to get in the habit of setting the current user window back to a more frequently used window after you have made other user window changes. In our example, if you leave the current user window at window 5, then the majority of cursoring and reading hot keys will be relative to the status window only, and not the rest of the program. You do not, however, have to set the current user window back to 0. But we do recommend setting it to a user window that covers the majority of your program area, or at least the area where you will be doing the majority of your work.

If you look at the settings of window 5, they might look something like this:

Left = 498 - Offset from Left checked
Top=467 - Offset from Top checked
Right=64 - Offset from Right checked
Bottom=8 - Offset from Bottom checked

It might seem confusing to think that the top is 467 and the bottom is 8, but remember, this is the distance from the edge, not the absolute position.

This user window works fine, but for reasons unrelated to it or the status line, you decide to resize or maximize the program window. This shifts the position of the status line. It is the same distance from the bottom edge of the active window, but it may be much closer to the top than it was previously. So, you might need to reset the top of user window 5 to a location more like 300 pixels from the top of the active window.

Should you continually adjust your user window to match the active window? Should you vow never to resize a window so as to avoid this problem? No. What you should do in this case is to use the "Offset from Bottom" option for the top position in window 5. Then, set the top value to a distance from the bottom edge which will catch all of the information you wish to read and none of the surrounding text. In this case, you might try a value somewhere around fifty.

Just as Window-Eyes can determine the correct pixel values by the position of the mouse, it can also attempt to detect the correct window offsets. If you press the Insert-F5 or Insert-F6 keys twice in a row without moving the mouse or pressing any other keys on the keyboard, Window-Eyes will attempt to automatically set the window offsets correctly and say "auto offsets" after either saying "top left" or "bottom right." To determine the offset to use, Window-Eyes looks for the closest window boundary and uses this offset. So if you were setting a user window for a status line at the bottom of the program and the status line included the full width of the program window, Window-Eyes would set the left to offset from left, top offset from bottom, right offset from right, and bottom offset from bottom. The auto offset feature is not always correct because sometimes the closest offset is not always the window boundary that remains constant when you resize a window. But you will find that this feature is correct most of the time; and when it is right, it makes choosing the correct offset much easier. Even when Window-Eyes chooses the incorrect window offset, you can use the Insert-F4 dialog to choose the other setting for the offset and then use Insert-F5 and Insert-F6 to reset the window coordinates. If you manually set the offset make sure that you only press Insert-F5 and Insert-F6 once so that you do not engage the auto offset feature accidentally. This would override your manual offset settings.

Window Logic

Caution: The PC, powerful and quick as it is, cannot defy logic. But we can control how the computer reacts to illogical commands. If you go rummaging around outside the current window and you want to set new coordinates for the current user window, you can do this. But logic precludes you from setting the top line to a place below the present setting for the bottom line or the left column to a place to the right of the present setting for the right column. If you attempt to do this and then read the window you have set, Window-Eyes will simply read nothing.

Likewise it is possible to set a window with perfectly valid coordinates and then to resize the window and inadvertently place the top below the bottom or the right to the left of the left (what?). If you are confused, just think how Window-Eyes feels, which again, is why Window-Eyes will read nothing.

Confining Your Reading to the User Window

Why would you want one window to be the current user window instead of another? There are several reasons, but one can be illustrated by a common reading situation.

Imagine that you are reading a document in your word processor. Imagine that the document is displayed in two newspaper-style columns. Imagine that when you read a line, you hear text across the two columns, making the information incomprehensible. You want Window-Eyes to recognize only the text in the first column as you arrow down through the document.

The solution is to set a user window to include the text in the first column and to exclude the text in the second column. When you press the hot key to hear the window you have set, you hear only the portion of the document which is in the first column and is displayed on the screen. If you then make this new user window the current user window, as you arrow down through the text Window-Eyes reads only the portion of each line which falls inside the user window.

When the cursor is outside the current user window, the Window-Eyes hot keys do speak, regardless of current user window boundaries. If, through the Cursor keys pane of the Window-Eyes control panel, you have set Up and Down ArrowS to read the current line, and you use these keys to move the cursor above or below the current window boundaries, the lines outside the current user window are still voiced. If under similar circumstances, however, you do not have the current user window set for the full width of the active window, only the text that lies within the range of the window is voiced.

The Status of the User Window

In most cases, you would not want to hear everything your program displays on the screen in the order in which it puts it there. Dialog boxes, edit windows, menus, etc. provide too much information in too disorganized a manner to be easily interpreted if read exactly as displayed. However, there are times when information flows smoothly to the screen, and capturing it as it appears is a useful and efficient way to access that material. Communications programs, in which you are connected to a bulletin board or on-line service, are good examples of cases in which you will probably prefer to hear the information the remote system is sending you exactly as it sends it. Whether you wish this type of speaking or not influences how you set the speaking status of user windows. This is done from the User Window Properties pane within Window-Eyes accessed by pressing Insert-F7. The properties pane is discussed below.

The Speak Window

A "Speak" window is a window that captures and voices everything that is written onto your PC's screen as it is written. For example, let us say you are on-line with your favorite communications program. The software at the other end of the connection might display a menu of five items on the screen. By default, Window-Eyes does not read this automatically - you must press a window hot key to hear the menu read. This is worse than inconvenient, since you cannot always know when a new menu has appeared on the screen. So, the solution is simply to set a user window to correspond to the area of the active window in which the material from the host appears and then to tell that window to "speak" everything. After this is accomplished, Window-Eyes intercepts the text as it reaches the display screen and then sends the text to your speech synthesizer software for voicing.

If only one user window is set to "Speak," and that window does not cover the whole display screen, only text which appears within that window speaks automatically. For example, imagine window 0 is the only user window set to "Speak." The boundaries of window 0 are set to Left=0 pixels from the left edge of the active window and right=300 pixels from the right edge of the active window (we will ignore the top and bottom settings for now), meaning that much of the information on the right side of the active window is being ignored. Window-Eyes speaks only the portion of the menu which falls inside the speak window, probably only the first few words of each item. Other information is not spoken.

If you are not aware of where your program or remote source is going to write new text to your screen or before you go through the procedure of setting up speak windows, you might consider trying the Speak All Toggle hot key (Insert-A). This hot key is a toggle and hence has two settings, "Off" and "On."

When Speak All is set to "Off," it does not affect the functioning of Window-Eyes.

When Speak All is set to "On," text which your program or remote source writes to the screen is spoken as it appears, regardless of where it appears on the display.

If you want some newly presented text to speak as it appears in some places but not in other places, use speak windows. Otherwise, the Speak All hot key may meet your needs single-handedly.

You can have as many of the fifty user windows set to "Speak" as you'd like, and if they happen to overlap, that is okay too, the overlap will not cause text to be spoken twice. For example, let us say you have two windows (with different boundaries) set to "Speak." Text written to the screen within the confines of either of the two windows would be spoken as it is written, while text which is not within the boundaries of either of these two windows would not. It does not matter for speaking purposes whether either or neither of these windows is the current window or what the current user window boundaries are. Speak windows speak regardless.

Pressing the Control key interrupts speech that emanates from a speak window. When the flow of new text to the screen within the speak window is finished, Window-Eyes beeps. Pressing the Control key a second time resumes speech.

Some programs and communication systems write information into edit boxes. By choosing "Allow Speak Windows in Edit Boxes" through the General/User Windows pane of the Window-Eyes control panel, you can instruct Window-Eyes to read such information as it is written. This setting does not affect text you key into edit boxes.

The Silent Window

When a window is set to "Silent," text written to the display screen within the boundaries of that window does not speak. It is not quite that simple, though, because of Window-Eyes "window precedence," that is, the ability of one window's speaking status to supersede that of another. The lower the window number, the higher the precedence. Thus, for a silent window to restrict speech from an area of the screen chosen to be spoken by a speak window, the silent window must have precedence, that is, a lower number than the speak window.

For example, let us say you want all the text but the top line in the active window to speak automatically. Set the top coordinates of window 1 to left=0, top=0, right=0, and bottom=50 with offset from top selected. Set Window 1 to "Silent." Set the coordinates of window 2 (or some higher number) to the entire active window and set the window to "Speak." Set all other windows to "Neutral." Text written to the top line of the active window is unspoken.

The silent window might be useful in a situation in which you are on line and the host system is displaying the time in one part of the screen. The time might read "10:04:25" and you probably do not want to hear the time updated every second, or even every minute. You might set user window 3 to cover the clock as a silent window and window 7 to cover the rest of the area used by the host to display important information as a speak window. This would give you all of the meaningful information and none of the rambling "10:04:25 10:04:26 10:04:27...."

The Neutral Window

Of all four options for user window status, "Neutral" requires the least discussion. A window set to "Neutral" neither permits nor restricts the speaking of text written to the screen.

Do any of the choices of the three settings discussed so far alter the function of the read-window hot keys? No. If you want to press the hot keys to have the contents of any window spoken, you can use that key regardless of the window's speaking status.

The Float Window

At this point in the discussion, we cannot give float windows a proper treatment because concepts not yet covered in this guide are needed. For now, we will say that the coordinates of float windows vary automatically, according to the positions of things like the cursor and highlight. We will discuss float windows in detail later.

Getting User Window Status Reports

Pressing the "Read User Window Coordinates" Hot Key (undefined by default) gives the following information: the number of the current user window; whether it is set to "Speak," "Float," "Neutral," or "Silent"; and the window coordinates. It gives similar information for one of the hyperactive windows, but this will be discussed later.

You can also use the "User Window Status" Hot Key (undefined by default). Pressing this Hot Key will display a dialog with a list of all user windows (0 - 49) and all hyperactive windows (A - Z) as well as their current status for the set file that is loaded at the time of pressing the Hot Key.

Reading User Windows

There are a number of ways to read a user window. The most direct method and the method easiest to understand is to read a window by pressing a hot key. There are a number of these available.

The first twenty user windows, window 0 through window 19, have their own hot keys. By default, these keys are defined as Alt-0 through Alt-9 for windows 0 through 9. The hot keys for reading Windows 10 through 19 are undefined. Pressing the hot key reads the corresponding window.

Any of the user or hyperactive windows can be read by pressing the "Any window" hot key (undefined by default) and keying in the number (0 - 49) or letter (A - Z) of a window. To read window 37, for example, press the any window hot key (you will need to assign a key to this function if you have not already), type in 37, and press Enter. Window-Eyes reads the information contained within window 37. If you wanted to read hyperactive window Z, you would simply press the "Any window" hot key and type in the letter Z followed by Enter.

There may also be times when it is convenient to read the current user window without having to know which window is current or what its hot key is. Window-Eyes has a "Read Active User Window" hot key to perform this function. This is useful when you have set up user windows to read columns or other complex text arrangements and you simply want to read the window you are in now without regard to its number. This hot key is undefined by default.

Show User Window Outline

The show user window outline feature is controlled by an option User Windows/Miscellaneous pane in the Window-Eyes control panel. This option is not saved with the SET file or anywhere else. It is an option that gets reset to off each time you load Window-Eyes. If you turn this option on, Window-Eyes will invert the colors of the area of the user or hyperactive window on the screen each time you read it. So the first time you read a window it will be inverted on the screen. The second time you read it, it will be inverted again (or set to normal) on the screen.

It is possible for the contents of the screen to get scrambled during this process if the screen changes between the two times that you read the user window. If this happens you can restore the screen either with the screen redraw hot key which is Insert-BACKSLASH or by minimizing and then maximizing the program. You can minimize the program with Alt-Space followed by N and you can maximize it with the command Alt-Space followed by X. This feature is for visual access users to assist them in debugging the boundaries of user windows as they are being set up.

User Window Properties

The User Windows Properties pane of the Window-Eyes control panel is ideal for getting a quick and concise look at all of the components that define a user window's behavior.

The first edit box in this pane allows you to select a user window to modify. This is the exact same box that is reached when you press Insert-F7.

Tabbing places your focus in the user window status combo box. The available items (neutral, silent, speak, and float) are discussed in more detail above.

Next in the properties pane is an edit box which prompts you for a comment regarding the user window you are defining. It is a good idea to describe the purpose of the user window so that if you should come back to it later, or if someone else looks at your set file, the user window's definition will make sense.

Pressing Tab again takes you to the window attributes area of the property pane. Two check boxes are available that allow you to set whether or not the user window you are defining will speak for any foreground and background colors. If either box is not checked, then the window will speak only when the foreground or background colors match specific values.

If either the Match Any Foreground Color check box or Match Any Background Color check box listed above is unchecked, pressing Tab again will take you to the "Enter Window Attributes" button. Enter Window Attributes allows you to set the RGB values for foreground and background attributes for the current user window for voicing in response to a read window hot key or through a speak window. Pressing Enter on this item produces a dialog box in which you can enter each of the six values for red, green and blue, foreground and background. At the bottom of this dialog box are three buttons: "OK," "Cancel," and "Accept Mouse." If you choose "Accept Mouse," Window-Eyes sets the colors to the attributes that are under the mouse pointer. Window-Eyes announces, "Mouse accepted."

Tabbing again moves your focus to the Autodetermine Highlight Color check box. This allows you to instruct Window-Eyes to attempt to determine the highlight colors as highlights move.

If the Autodetermine Highlight Color check box is unchecked, then pressing the Tab key will move your focus to the Enter Highlight Attributes button which allows you to enter the values for the foreground and background of the highlight for the current user window. Pressing Enter on this item produces a dialog box in which you can enter each of the six values for red, green and blue, foreground and background. At the bottom of this dialog box are three buttons: "OK," "Cancel," and "Accept Mouse." If you choose "Accept Mouse," Window-Eyes sets the colors to the attributes that are under the mouse pointer. Window-Eyes announces, "Mouse accepted."

Next is the Window to Chain Read combo box. This option lets you designate a standard window for Window-Eyes to read immediately after it finishes reading the current window. A window cannot be chain-read twice. While in this combo box, use the Up and Down Arrow keys to select the window you wish to chain read, or simply press the number of the window. You can chain as many standard windows together as you wish.

Pressing Tab next takes you to the Highlight Status combo box. This box offers the same choices as the highlight rotor hot key--Auto, On, and Off. The Up and Down Arrows move among these choices.

Since programs often change the color or style of highlights many times in a computing session, Window-Eyes gives you fifty independent highlight settings within each SET file. The highlight status (on, off, auto) is designated for each user window independently of the highlight status of any other user window. This is true whether you use the highlight rotor hot key, the highlight status option just described, or the highlight track option within the General/Highlight property pane of the Window-Eyes control panel. This setting is never global. Likewise, the attribute settings are specific for the window and do not affect the highlight settings of any other window.

What does this mean? If your program gives you two different situations which have two different highlight colors in them, you can easily cause Window-Eyes to track the correct color simply by switching windows. Likewise, if the program has a third mode in which there is no highlight at all, you can turn highlight tracking off by switching to a third user window.

Pressing Tab again moves your focus to the Speak and Spell check box. When this check box is checked, it causes every word in the window to be spelled immediately after it is voiced. This feature is handy for spell-checking functions or memorizing spelling lists.

Finally, the Copy Settings From Window button allows you to type the number of a user window from which you wish to copy settings.

Now that the user window definition options have been discussed, let us look at an example program where you could apply them.

In your favorite database, the memo field is always displayed in white letters on a black background whereas all other data and field names are displayed in some other set of colors. The size of the memo field varies and its position shifts within the focused window, so you find it difficult to set a user window to a size that will catch all of every memo without catching any of the other material.

Fortunately, the memo is consistently displayed in specific attributes. So, you set your memo-field user window to the entire focused window and set the window attributes to the displayed color set (R255, G255, B255 on R0, G0, B0, for example), and press the hot key to read the user window. Only the memo field is read.

There is a quick and simple way to do this. First, get a memo on the screen. Press Insert-F3 and key in the number of the window you would like to use as the memo-field window. We'll use window 8 for this example. After selecting the window, place your mouse pointer somewhere in the text of the memo field. Press your "Set User Window Color" hot key (undefined by default). Window-Eyes will announce, "Window Set for R255 G255 B255 on R0 G0 B0." When you press the hot key, Window-Eyes will automatically uncheck the "Match Any Foreground Attribute" and "Match Any Background Attribute" options.

Later, you notice that certain types of memos are not spoken with Alt-8 (or whatever hot key you have defined). When you use the mouse pointer to inspect the text, you find that it is displayed in a slightly different shade of white on a black background, say R255 G248 B255 on R0 G0 B0. It is not uncommon for programs to mix foreground colors on a single background color. Your window can easily be corrected to accommodate these displays. Select window 8 and press Insert-F7 to bring up the user window property pane of the Window-Eyes control panel. Tab to the "Match Any Foreground Attribute" check box and use the Space Bar to check it. Press Enter, select user window 0 (or your usual work-area window), and save the settings. Now Alt-8 will read any memo displayed on a background of R0 G0 B0.

Note: We recommend that you never allow a user window set for specific attributes to be used as the current user window. Always choose a window other than your usual work-area window for these functions. You can attach different color sets to each of the fifty standard windows.

Hyperactive Windows

The basic purpose of the standard user windows discussed so far is to make the reading of information as quick and convenient as possible. Unlike standard user windows, hyperactive windows are designed for Window-Eyes to monitor the screen for any of nine kinds of changes and then automatically perform up to three instances of nine routine Window-Eyes commands. Hyperactive windows are similar to standard windows in that they are shaped like rectangles.

Much of what you already know about setting up standard user windows is also applicable for setting up hyperactive windows. We have already shown how to use your keyboard's function keys to set up standard user windows. Many of these same function keys are used for setting up the hyperactive windows, but in combination with the Control and Shift keys. Control-Shift-F3, for example, prompts for a window letter (A-Z) to designate as the current hyperactive window for the purpose of setting or adjusting it. All twenty six hyperactive windows can run at the same time, once they are set up. There is no such thing as a current hyperactive window in the same sense as the current user window.

Control-Shift-F4 opens the Hyperactive Window Coordinates pane in Window-Eyes. You can then pick the current hyperactive window and set its left, top, right, and bottom window coordinates. Control-Shift-F5 sets the top-left boundary of the hyperactive window to the position of the mouse pointer. Control-Shift-F6 sets the bottom-right boundary of the hyperactive window to the position of the mouse pointer.

Like standard user windows, hyperactive windows also offer offsets for the four positions. You can manually adjust the offsets using the Hyperactive Window Coordinates pane reached with Control-Shift-F4, or you can try the auto offset option by pressing Control-Shift-F5 and Control-Shift-F6 twice in a row without moving the mouse pointer between presses. Window-Eyes will attempt to set the offsets based on the location of the mouse pointer.

There need be no relationship between the locations of any of the standard windows and the locations of hyperactive windows. You can let them overlap. You can set several hyperactive windows to exactly the same location and have them monitor the screen for different events to occur.

Defining Hyperactive Windows

The Control-Shift-F7 key opens the Hyperactive Window Properties pane inside the Window-Eyes control panel. Here, you can switch the current hyperactive window on or off; decide whether the hyperactive window should interrupt speech; tell Window-Eyes what to watch for (or "Trigger On") in the hyperactive window; and finally, set up to three commands to be carried out when it does trigger.

General Properties

Once you have set the boundaries for a hyperactive window, press the Control-Shift-F7 key. Before doing this, it is a good idea to go to the Hyperactive Window Status pane in Window-Eyes and turn Hyperactive Status to Off so that the window does not get a chance to trigger before you can save your settings.

The Hyperactive check box determines whether the hyperactive window is operational. If it is checked, then the window is active. Otherwise, it is not.

The Speech Interrupt check box determines whether the action to be taken by the hyperactive window should interrupt speech in progress or wait for speech to play out. When Speech interrupt is unchecked, the hyperactive window will trigger as it always did but any speech produced by the window will be buffered to the end of the existing text being spoken. When Speech interrupt is checked, Window-Eyes interrupts speech to trigger the window. This feature prevents you from inadvertently interrupting a hyperactive message with the keyboard. If you really need to interrupt the hyperactive window you can press the Control key at any time to do this. Window-Eyes will always interrupt speech with the Control key unless you disable this feature (from the Interruptability option in the Keyboard/Other pane of the Window-Eyes control panel). It should also be noted that if one hyperactive window generates speech (say, by speaking a string), it will not be interrupted by another hyperactive window set to speak.

The Comment Line edit box allows you to enter a description of the function of the defined window. This is simply used for internal documentation for set file developers who wish to note the purpose of the window either for their own reference, or for other developers.

Telling the Hyperactive Window What to Do

The Trigger combo box tells Window-Eyes what you want it to watch for in the hyperactive window. Items in the list include: "Any Change," "Contains Attribute," "Does Not Contain Attribute," "Contains String," "Does Not Contain String," "Contains Cursor," "Does Not Contain Cursor," "Contains Focus," and "Does Not Contain Focus."

When trigger is set to "Any Change," Window-Eyes watches everything in the hyperactive window for any change in character, case (upper or lower), or color attributes. For example, your program may use the top or bottom line of the focused window as a status line, giving such information as the file name, cursor position, error messages, etc. You want Window-Eyes to voice the contents of this line any time any change of any kind occurs there but ignore the line otherwise. "Any Change" will help in this situation.

When trigger on is set to "Contains Attribute," Window-Eyes watches for the appearance anywhere in the hyperactive window of only the color attributes specified when the hyperactive window was defined. When you select this item, you must also press Enter on the "Trigger" button. Pressing Enter on this item produces a dialog box in which you can enter each of the six values for red, green and blue, foreground and background. At the bottom of this dialog box are three buttons: "OK," "Cancel," and "Accept Mouse." If you choose "Accept Mouse," Window-Eyes sets the colors to the attributes that are under the mouse pointer. Window-Eyes announces, "Mouse accepted." You might use this option in a hyperactive window when you block text in your word processor, the blocked text changes to a particular color, and you'd like to hear it read.

When trigger on is set to "Does Not Contain Attribute," Window-Eyes watches for the designated color attributes to disappear. The designated attributes are those you entered in the "Enter Attributes" dialog box (through the "Trigger" button) when you defined the hyperactive window. Pressing Enter on this item produces a dialog box in which you can enter each of the six values for red, green and blue, foreground and background. At the bottom of this dialog box are three buttons: "OK," "Cancel," and "Accept Mouse." If you choose "Accept Mouse," Window-Eyes sets the colors to the attributes that are under the mouse pointer. Window-Eyes announces, "Mouse accepted."Other attribute changes are ignored.

When trigger on is set to "Contains String," Window-Eyes watches for the appearance of a specified string anywhere in the hyperactive window; changes in color and other text changes are ignored. When you select this item you must also provide the string by pressing Enter on the "Trigger" button. Key in up to thirty-two characters, if you wish, and press Enter. For example, let us say you know the host to which you are connected via your communications program is going to send you a message somewhere within the hyperactive window, prompting for some value, but the exact location of the message is uncertain. When this message appears, you want Window-Eyes to announce, "Enter a Value."

"Contains String" is not case sensitive; that is, Window-Eyes will watch for either uppercase or lowercase occurrences of the letters in your string. If you wish to search for a graphic, simply label it and use the graphic label as the string.

When trigger on is set to "Does Not Contain String," Window-Eyes watches for the disappearance from anywhere in the hyperactive window of a specified string. When you select this item you must also provide the string by pressing Enter on the "Trigger" button.

When trigger on is set to "Contains Cursor," Window-Eyes watches for the cursor to appear anywhere in the hyperactive window.

When trigger on is set to "Does Not Contain Cursor," Window-Eyes watches for the cursor to disappear from the hyperactive window. For example, on a number of occasions, your program removes the cursor from the editor, or from the screen altogether. You want Window-Eyes to announce, "Cursor Missing."

When trigger on is set to "Contains Focus," Window-Eyes watches constantly for a window gaining focus within the boundary of your hyperactive window. For example, let us say you want Window-Eyes to watch for a certain window to get focus and when this happens, you want Window-Eyes to load a new set file.

When trigger on is set to "Does Not Contain Focus," Window-Eyes watches constantly for no window to have focus within the boundary of your hyperactive window.

What Window-Eyes Should Do If the Hyperactive Window Triggers

First Command, Second Command, and Third Command: Instruct Window-Eyes what to do when the hyperactive window triggers. The Up and Down Arrows move through the following choices: "Undefined," "Speak Window," "Speak String," "Speak Highlight," "Activate Window," "Load SET," "Execute Hot Key," "Beep," and "Route Mouse To Window."

When the hyperactive window triggers, Window-Eyes executes the setting for first command, then the setting for second command, then the setting for third command. If all three are set to "undefined," Window-Eyes takes no action when the hyperactive window triggers.

When command is set to "Speak Window," you must press Enter on the "Command Info" button in order to tell Window-Eyes which user window to speak. Window-Eyes will pop up a dialog box and prompt for the number of the window to be spoken. Key in the number of any standard window 0-49 or the letter of any hyperactive window A-Z and press Enter. When the hyperactive window triggers, Window-Eyes reads the contents of the window set for the command.

When command is set to "Speak String," you must press Enter on the "Command Info" button to cause Window-Eyes to prompt for the text. Key in a string up to thirty-two characters long and press Enter. When the hyperactive window triggers, Window-Eyes voices the specified string.

When command is set to "Speak Highlight," Window-Eyes reads a highlight if one is present within the currently active window when the hyperactive window triggers.

When command is set to "Activate Window" you must press Enter on the "Command Info" button in order to have Window-Eyes prompt for the number of the standard user window to activate. Key in the number of any standard window 0-49 and press Enter. When the hyperactive window triggers, Window-Eyes switches the current standard user window to the one you have set here.

When command is set to "Load Set," you must press Enter on the "Command Info" button in order to type in the name of the SET file to load. Key in the name of any SET file in the current user's directory. This item does not accept a drive or path specification. When the hyperactive window triggers, Window-Eyes loads the named SET file.

When command is set to "Execute Hot Key" you must press the "Command Info" button to choose the Window-Eyes hot key to execute from a list box of hot keys. It is not necessary for the hot key to be defined in your SET file for it to be executed. When the hyperactive window triggers, the hot key is executed.

When command is set to "Beep," Windows beeps (normally through your sound card) when the hyperactive window triggers.

When command is set to "Route Mouse To Window" you must press Enter on the "Command Info" button in order to have Window-Eyes prompt for the number of the standard user window to route to. Key in the number of any standard window 0-49 and press Enter. When the hyperactive window triggers, Window-Eyes will route the mouse to the top left of the specified window.

Note: If you are setting more than one command, and one of these loads a set file, be sure not to follow this command with a speak string or another load set file command. The string to be spoken or the name of the SET file to be loaded is stored in the original SET file and will not be retained when the new SET file is loaded.

Window and Command Precedence

As with standard user windows 0-49, hyperactive windows A-Z follow an ordinal precedence. That is, if conditions on screen provide a match on which two or more hyperactive windows are set to trigger, the one with the first letter triggers first. For example, let us say you have set hyperactive window A to watch for a particular word to appear on the status line and window B set to watch for some particular color attributes (R255, G0, B0 on R0, G0, B0, for example). If the status line were to change at the same instant that the colors red on black appeared, window A would trigger first, then window B. If Interrupt were set to "Yes" in window B, it would not interrupt a speak command going on in window A (as explained earlier).

While considering this window precedence, keep in mind that there are times when you want things to happen in a particular order. You may find that you always wish to hear the highlight before you hear the status line. Be sure that your windows are ordered accordingly. If you wish to have certain windows trigger only when the conditions of other windows are not true, you can have a window of a higher precedence load a SET file. If window A loads a SET file, window B will never be triggered because new settings have been loaded. As a rule, if you have windows which load SET files and windows which speak information, place your "loading" windows near the beginning of the alphabet and the "reading" windows near the end. This will reduce extraneous chatter.

Turning Hyperactive Windows On and Off

You can turn all twenty six hyperactive windows on or off with the hyperactive windows rotor hot key (Control-Shift-F8). This key rotors between "Off," "Messages Off," and "Messages On." When hyperactive windows rotor is in the "Off" position, none of the hyperactive windows can trigger, although all their settings are still stored in the computer's memory. When hyperactive windows rotor is in the "Messages Off" position, hyperactive windows set to "Hyperactive" trigger as usual. When hyperactive Windows Rotor is set to the "Messages On" position all hyperactive windows trigger as normal. They also send a message to the speech synthesizer that they are triggering. This is useful for debugging your hyperactive windows.

You do not have to use the hyperactive windows rotor hot key. Instead, you can go to the Hyperactive/Status pane in the Window-Eyes control panel which functions exactly the same as the hot key. Simply Tab to the Status combo box, and use your Up and Down arrow keys to choose from "Off," "Messages Off," or "Messages On."

Troubleshooting Hyperactive Windows

Circumstances are possible in which hyperactive windows can work against, rather than for you. For example, let us say you set a hyperactive window to look for some screen event such as a particular attribute and then load another SET file. In the second SET file, you might accidentally set up a hyperactive window that looks for the same attributes and then reloads the SET file you were just in. In such a case, the two SET files would load and reload each other in an infinite loop. Fix this kind of problem by going to the hyperactive window properties pane (Control-Shift-F7) and correcting the circumstances leading up to the loop. Or use the hyperactive windows rotor hot key to turn all hyperactive windows off and then fix the problem.

Another problem comes when part of a status line reflects the new cursor position every time the cursor moves. If you were to set a hyperactive window to monitor the entire line and read it upon every change, Window-Eyes would try to read the line at every key you typed. In this case, you should set the dimensions of the hyperactive window to some portion of the status line that does not contain the cursor-position indicator. Set a standard user window to cover the whole status line and set the hyperactive window to read the standard window. The other benefit is that you can read the contents of the status line any time simply by pressing the appropriate read window hot key.

Float Windows

So far, we have defined window boundaries (whether standard or hyperactive) strictly in relation to the boundaries of the active window. For many purposes of speech access, these window boundaries are adequate, especially considering the fact that Window-Eyes offers a total of 76 windows you can use to read the screen. You can predetermine numerous screen locations where text you want to read might be located, often with a high degree of certainty. But programs are active; they paint blocks of information to the screen in varying locations, which in turn vary in size. Window-Eyes meets the challenge of letting you read what you want and not be bothered with what you do not want, by adding windows that "float."

A float window can let any or all of its boundaries float with the movements of a highlight, cursor, or focus window. It can set positions a constant distance left or right of, up or down from the cursor or highlight.

To illustrate the need for float windows, imagine a table which contains several columns of information across like a spreadsheet. The columns may vary in width, and the document as a whole might be so wide that not all of its columns even fit on the screen at once. Furthermore, the width of the columns can be changed in order to fit them to the amount of text you plan to put in them. As you move from column to column and back with either the Tab and Shift-Tab keys, or the Arrow keys, the program moves text left or right to fit a whole column on-screen. A highlight in bright white text on a red background highlights the column heading because it is marked for bold print, and that is the only distinguishing feature of a column, apart from a varying number of blank spaces. You want to read information in the active column without reading surrounding information. You want your Up and Down Arrows to read lines, but only the portion of each line in the current table column. What you need is a window whose coordinates will vary depending on the location and size of your highlight. As you move from column to column, you want your window to move with you and to grow and shrink as you move from narrow columns to wide to narrow.

Another example might be if you want to read the row and column headings of a spreadsheet as you arrow through your information. Normally an Excel spreadsheet will tell you the coordinates of the cell you are on before reading you the cell contents. With float windows, you can have the column and row headers read to you instead of the cell coordinates. So instead of hearing "B4, John," with a float window, you could hear, "First Name, John."

We already know Insert-F4 as the key for setting Window-Eyes window coordinates. When you press Insert-F4, Window-Eyes displays the Standard User Windows Coordinates pane for setting constant values for the left, top, right, and bottom of the current window; that is, if the window status is set to "Neutral," "Silent," or "Speak." But if the window status is set to "Float," the pane contains additional options.

To Designate any Standard Window as a Float Window:

  1. Press Insert-F3 to select any standard window 0-49 not now in use.
  2. Bring up the user window properties pane with Insert-F7, and set status to "Float."
  3. Navigate to the coordinates pane, and configure the float window.

 

Setting up the Float Window

If we move through the user window coordinates pane after setting the status of the active user window to "float," we see that we have more or less the same four items as with other types of windows: left position, top position, right position, and bottom position. However, each position has different properties such as option, value, offset, and string.

Setting the Position

When the user window coordinates pane first appears, the selected item is the option for the current window. Pressing the Tab key moves your focus to the left position option, which is a combo box. The default setting is "Constant." The Up and Down Arrows move through the other possibilities within the combo box, and the Tab key moves to the next item in the dialog box.

Let us go through the combo box and look at each setting, telling along the way what Window-Eyes prompts for, and then how your choices will play out in your computing session. Finally, we will work our way through setting up a few float windows, step by step.

Setting the Position to a Constant

The default setting for all four boundaries of the float window is "Constant." Many of the float windows you will set will have one or more of the four boundaries held constant. Like the standard and hyperactive windows, the values of the constants can be any value within the range of your video driver's limitations. Leaving the position set to "Constant" would be like setting the coordinates of a standard window; in other words, the constant position does not move, or "float."

You can also set the boundary to "Constant plus Attribute" and "Constant minus Attribute." When you request a window to be spoken with either of these boundaries, Window-Eyes will calculate the boundary position by examining the constant you enter, and then adding or subtracting (depending on whether you chose plus or minus) the distance to the next different attribute (different from the one on which your constant is located). Note: The attribute characteristic refers only to the color of the text and not any of the font characteristics like style or size.

When you press Tab, Window-Eyes moves you down one line and announces the value for constant. Key in the number you want to serve as the left constant position and press Tab. Window-Eyes moves you to the offset item. These offsets are the same as in the user windows described earlier.

Setting the Position to the Highlight

Six other options for the float option are "Beginning of Highlight," "End of Highlight," "Beginning of Highlight Plus Constant," "End of Highlight Plus Constant," "Beginning of Highlight Minus Constant," and "End of Highlight Minus Constant." As may appear obvious, this position setting puts the position of the window at the beginning or end of a highlight if one is present on-screen within the current user window. If left position is set to "Beginning of Highlight" and/or the right position is set to "End of Highlight," it does not matter if the highlight itself is outside the range of the top and bottom window boundaries; only the left and right boundaries are concerned with the highlight in this case. Likewise, if top and bottom positions are set to either "Beginning of Highlight" or "End of Highlight," it does not matter if the highlight itself is outside the range of the left and right window boundaries.

Note: When you choose settings such as "Beginning/End of Highlight Plus/Minus Constant" for a position, pressing Tab takes you to an edit box where you can fill in the appropriate constant information. If you select "Beginning/End of Highlight" by itself, then pressing Tab will take you to the next option since there would be no need to enter any information in the constant edit box.

Setting the Position Relative to the Cursor

Four of the possible settings for the float window fix the position relative to the cursor. These are: "Cursor plus Constant," "Cursor minus Constant," "Cursor plus Attribute," and "Cursor minus Attribute." Plus means to the right of or below the cursor; minus means to the left of or above the cursor.

When you choose "Cursor plus/minus Constant" and press Tab, Window-Eyes moves you to the "Constant" prompt and announces the current value set for constant. Key in a number of pixels left or right of, up or down from the cursor that you want to serve as boundaries for the float window. You can have the cursor itself define the current boundary by setting the position to "Cursor plus Constant" and then setting the constant to 0. In practice, then, the float window sets its boundary the distance from the cursor that you have just set for the constant.

If the cursor happens to be sitting closer to any edge of the active window than the constant value, Window-Eyes compensates and only gives you the information that is actually in the active window.

When you choose "Cursor plus/minus Next Attribute" and press Tab, Window-Eyes skips the constant edit box and offset radio buttons. In practice, as you request that the window be spoken, Window-Eyes calculates the distance from the cursor to the first instance of any attribute (in the direction you chose) different from the attribute at the cursor position, and sets the boundary accordingly.

Position Minus One

The float window does not actually set its position on the next attribute. Instead, it looks left or right, up or down; whatever direction you have chosen and moves back one character before fixing the position. Why? Because that is what you are most likely to want it to do. For example, let us say you are working in text with your program. You want Window-Eyes to read only the material between sets of text of another color. You do not want it to read the text of the surrounding attribute, only the text in the center. So, you set the left and top to "Cursor minus Attribute," and right and bottom to "Cursor plus Attribute." You would not want the letters included in the surrounding color to be a part of the window, only the text that lies between the groups of background attribute.

This is not the case with "Beginning/End of Highlight" and "Cursor plus/minus Constant," however. Consider our spreadsheet example. A column of text is signified by a highlight, and you want the highlight to define the left and right edges of the float window. So you set the positions as follows: left "Beginning of Highlight," top "Constant," right "End of Highlight," and bottom "Constant." In this case, you want to be able to read all the text that falls directly under the highlight when any Window-Eyes feature calls for the window to be voiced.

Setting the Position Relative to the Focus Window

Six other options for float windows are "Beginning of Focus Window," "End of Focus Window," "Beginning of Focus Window plus/minus Constant," and "End of Focus Window plus/minus Constant." As may appear obvious, this position setting puts the window position at the beginning or end of the currently focused window within the program window (for example, a button, combo box, edit box, or some other control). If left position is set to "Beginning of Focus Window" and/or the right position is set to "End of Focus Window," it does not matter if the focus window itself is outside the range of the top and bottom window boundaries; only the left and right boundaries are concerned with the focus window in this case. Likewise, if top and bottom positions are set to either "Beginning of Focus Window" or "End of Focus Window," it does not matter if the focus window itself is outside the range of the left and right boundaries.

If you select one of the Focus plus or minus constant options, when you press the Tab key you will be prompted for the constant value to add or subtract.

Setting the Position Relative to a String

This position setting puts the window position at the beginning or end of a string within the program window. After tabbing past the position coordinates, you can enter a string of up to 10 characters in the string edit box. Window-Eyes will search the current default user window for the specified string. If left position is set to "Beginning of String" and/or the right position is set to "End of String," only the left and right boundaries will be concerned with the string in this case. The same goes for setting the top and bottom positions to either "Beginning of String" or "End of String;" only the top and bottom boundaries will be concerned with the string.

If you select one of the String plus or minus constant options, when you press the Tab key you will be prompted for the constant value to add or subtract.

Automatic Adjustment of Float Windows

A float window does not adjust its size and location constantly (with every movement of the cursor, for example). It waits for a Window-Eyes command that reads the float window; whether the command is issued by a cursoring key, a hot key, or a hyperactive window. The reason is that there is no point in tying up your computer with shuffling float windows around when you do not need to read them.

Some Practical Examples

Spreadsheet programs provide a good example of where you might use float windows with some positions set to "Beginning/End of Highlight." Spreadsheet programs ordinarily have several columns across the screen. These columns can vary in width, in order to correspond to the width of the column label or to the data in the column. Consider these column titles, for example:

Phone Bill Gas Bill Electric Bill Mortgage Payment Total

Ordinarily, the contents of the active cell are shown in highlight colors, which expand across the entire width of the current cell. As you move from column to column, you could use a float window to read the column title before the cell contents.

Column titles ordinarily show up in a fixed position within the focused window. As you move to different screens of data in the spreadsheet file, the column titles remain fixed while the data below them scroll upward. Thus, you always know what line or lines the column titles are on. For the sake of communication, lets say they fall between fifty and eighty pixels from the top edge of the focused window. Designate some standard window as a float window (window 2, for example). Make window 2 a float window, and set the top and bottom line position items to "Constant." Let the constant for the top equal 50, offset from the top, and for the bottom let constant equal 80, not offset from the bottom but from the top instead. Because the active cell, again, is shown in a highlight, you can choose "Beginning of Highlight" for the left position and "End of Highlight" for the right position. Thus, as the width of the spreadsheet column grows and shrinks, the width of the float window can grow and shrink correspondingly. The float window is only for reading the spreadsheet column titles and cannot be the current user window where you would be working in the spreadsheet editor, filling in or reading the data in each active cell. Perhaps the current user window should be window 0. You would need to set the highlight colors for that window to those of the active cell.

When you press the Window-Eyes hot key to read the float window, Window-Eyes looks for the highlight in the current user window and sets the left and right columns of the float window to the same ones occupied by the highlight. If it cannot find a highlight, Window-Eyes beeps when you press the hot key for reading the float window.

Now, go to the cursoring menu and set your Arrow keys, or whatever keys move your program cursor from cell to cell. For each key, set the first action to "Speak Window" and specify the number of your float window. Set the second action to "Highlight." Now, when you move from one spreadsheet cell to another, the cursoring key calls for window 2 to be read. Window 2, being a float window, looks for the beginning and end of the highlight in window 0, the current window, and sets left and right columns accordingly; then, it voices the contents of window 2 (whose top and bottom coordinates have already been defined as constant values). Finally, the cursoring key calls for the information shown in the highlight to be voiced. It does not matter what line in window 0 the highlight is on. When trying this, make sure highlight status is turned off in window 0. Also most spread sheets use a moving box rather than a traditional highlight so you will need to turn the Include Box in Highlight option on in the General/Highlight pane of the Window-Eyes control panel.

If the rows, not the columns, were labeled, you could just determine how wide the longest label extended to the right from the left edge of the focused window (75, let us say). You would set the float window's left position to "Constant," and let constant equal 0, offset from left. You would set right position also to "Constant," and let constant equal 75, offset from left. Top position and bottom position you would set to "Beginning of Highlight" and "End of Highlight," respectively.

If the spreadsheet has both column and row labels, you could set up two float windows and, through the standard user windows properties pane (Insert-F7), chain one to the other. You would need, in that case, only to have the cursoring key read the first float window, then the highlight. Upon your pressing of the cursoring key, Window-Eyes would voice first the contents of the first float window, the contents of the second float window, and finally the highlight of the current user window.

Other possibilities exist. Maybe your spreadsheet or financial management program does not use highlights. It does something, though, to separate columns or rows. It may have a fixed width or length and place the cursor at the beginning of the cell.

If you are using tabular columns in a word processor, you do not have highlights to work with, but you can still use float windows to read text within the current tabular column, that is, if the cursor is at the beginning of that column. In a float window, set top line position and bottom line position to constant values ranging from the top to the bottom of the word processor's editor. Set left position to "Cursor minus Constant," and let the constant equal 0. Set right position to "Cursor plus Constant," and let the constant equal the width of your tabular columns (in pixels). You can now assign a Window-Eyes hot key to the float window and use it to read the contents of the whole tabular column.

You could even have another float window (let's say window 3) with top and bottom position set to "Cursor plus Constant" and let the values for constant equal 10. Then the Window-Eyes hot key for that window would only read the portion of the tabular column that contained the line which held the cursor. If you wanted to read only the portion of the current line which contained the current tabular column as you moved up and down with Arrow keys, you would define the Arrows as Window-Eyes cursoring keys to read window 3. Then, if you wanted the keys that move the cursor from tabular column to tabular column (often Tab and Shift-Tab) to read the whole column vertically as you moved across, you could define them as Window-Eyes cursoring keys to read window 2.

The possibilities for float windows are endless. Work with them and find new programs we have not yet found.