3. Keyboard Commands

3.1. The Cursor
3.2. The Pointer
3.3. Keyboard User Interface Considerations
3.3.1. Preferred Keyboard Ergonomics
3.4. Key Bindings
3.5. ReviewPerk Functions
3.6. BasicSpeechPerk Functions
3.7. BookmarkPerk Functions
3.8. SearchPerk Functions
3.9. DefaultDialogPerk Functions
3.10. DeveloperPerk Functions
3.11. Application-Specific Bindings

When people with blindness interact with desktop applications, they use standard keyboard navigation to manipulate controls. The BasicSpeechPerk narrates this interaction according to the design in Section 2, “Event Announcements”.

Giving feedback on the interaction between the user and an application is not enough, though. Blind and visually impaired users also need a way of listening to parts of the display without affecting it, much like a sighted user scans a GUI with his or her eyes. The ReviewPerk and AltShiftPerk define a keyboard interface for reviewing the visual display. The key map includes numerous commands for reviewing program information that does not get output automatically. One example of a keyboard-activated function is to say the font properties at the text caret.

Two points of regard (PORs) determine how the keys perform their functions. One POR is the cursor and the other is the pointer.

3.1. The Cursor

The cursor POR always falls in the control that has the application focus. For controls having a visible text caret, the cursor moves with the caret. It rests on the character under a block caret or to the right of a line caret. For controls supporting item selection, the cursor moves with the active selection. It rests on the first character of the active item. For all other simple controls, the cursor is fixed on the first character of the one and only item in the control.

The application dictates what controls the cursor can reach. For example, the user cannot move the cursor to a static text label deemed non-focusable by the application. The application also determines the keys available for moving the cursor. Tab for instance, switches the widget focus among the focusable controls is most applications. The ReviewPerk makes one exception to the rule of the application defining all aspects of cursor navigation. When activated, the route pointer to cursor function moves the cursor to the location of the pointer, if possible.

[Important]Important

When the cursor changes location, the pointer is always automatically synchronized to it.

3.2. The Pointer

The pointer POR may be moved to any control in an application. As a result, the pointer provides a useful way of browsing the view presented by an application without affecting it. For example, a user can read through a window by pressing the next item key. When the user activates the next item function, the ReviewPerk moves the pointer POR to that item and then BasicSpeechPerk announces it. The user may repeat the operation until reaching the end of the view. The application focus, and thus the cursor POR, remain unchanged while moving the pointer in this manner.

A practical use of the pointer is to read information that is not deemed focusable by an application. For example, a program might display a static text label with instructions. In many applications, focus cannot be given to this type of control, making the help string inaccessible to blind and visually impaired users. A user can overcome this problem by using the pointer to navigate to the static text and read it.

[Important]Important

When the pointer changes location, the cursor is not automatically synchronized to it.

3.3. Keyboard User Interface Considerations

The keyboard bindings attempt to accomplish the following:

  • adherence to Section 508 requirements
  • minimize learning curve for the end user
  • minimize impact on perk developers
  • maximize usability/ergonomics
  • minimize key conflicts with keys used by Linux apps and with standard Linux key conventions
  • maximize key mapping flexibility
  • maximize portability of the UI to non-US markets

3.3.1. Preferred Keyboard Ergonomics

The following ergonomic criteria are considered in the selection of key bindings. The most ergonomic conditions are listed first. The conditions that create an absolutely non-ergonomic conditions are listed last. Conditions beyond the top 5 most ergonomic should be seriously evaluated before use in any design.

[Note]Note

On some, laptops there is only one of various modifier keys so it is nearly impossible to optimize for those keyboards unless one knows where the various modifier keys are located.

  1. A two-key combination where both hands remain in home row position, and the keys are pressed with opposite hands (e.g. Ctrl-letter).
  2. A three-key combination involving two modifier keys that can be pressed easily with one hand and a key that can be pressed with the opposite hand in home row position. Ranked in order of preference: Alt-Ctrl-letter, Alt-Shift-letter, Alt-CapsLock-letter, Shift-CapsLock-letter, Ctrl-CapsLock-letter, and NumPadInsert-Ctrl-letter. Alternatives in this category should be ranked favoring minimization of hand movement from the home row for the hand pressing the two modifier keys. Also, some juxtaposed shift keys require more movement from the home row than other non-juxtaposed modifier key combinations depending on the keyboard layout (e.g. Shift-CapsLock requires more movement from the home row on a ThinkPad than does Alt-CapsLock).
  3. A two-key combination where one hand remains on the home row while the other is used to press a key on the same half of the keyboard as that hand's home row position (e.g. Capslock-F12).
  4. A three-key combination involving two shift keys that can be easily pressed with one hand and a key that is located on the same side of the keyboard as that hand's home row position (e.g. Alt-Ctrl-F12).
  5. A four-key combination involving three immediately juxtaposed shift keys that can be fairly easily pressed with one hand and a fourth key that is on the same side of the keyboard as the opposite hand's home row position (e.g. Ctrl-Alt-Shift-K).
  6. A two-key combination that requires one hand to move to a side of the keyboard opposite its home row position (e.g. Insert-F11).
  7. A three-key combination involving two modifier keys that can easily be pressed with one hand and requires the other hand to move to a side of the keyboard opposite its home row position (e.g. Alt-CapsLock-F1).
  8. A four-key combination involving three modifier keys that can be pressed with one hand with modest difficulty and requires the other hand to move to a side of the keyboard opposite its home row position (e.g. Ctrl-Shift-CapsLock-F1).
  9. A three-key combination involving two modifier keys that are difficult to press with one hand (e.g. Ctrl-Insert on a laptop).
  10. A four-key combination involving three shift keys that are difficult to press with one hand.
  11. Any five-key combination.

3.4. Key Bindings

The screen reader key sequences trigger functions in the ReviewPerk, BasicSpeechPerk, DeveloperPerk, and DefaultDialogPerk. Every key sequence starts with the press of one or more modifier keys followed by the press of a non-modifier. The function bound to a sequence is activated on the release of the first of any of the held keys. The use of release as the trigger is intentional: it avoids problems with accidental repeat key presses (e.g. typomatic repeat for held keys, users with poor hand control). Scan codes are used instead of keysyms to ensure the position of keys in a binding remain the same across keyboard layouts, not their mnemonic associations.

The basic screen reader functions are bound to sequences following the Alt-Shift key map defined in the AltShiftPerk. The sequences in this map are intended to avoid conflicts with standard application key sequences and keyboard accessibility features. For instance, the use of standard modifiers prevents unintended interactions with the Sticky Keys keyboard accessibility feature.

The functions in the DeveloperPerk are bound to keys prefixed with Alt-CapsLock. The use of a separate modifier distinguishes them from most of the basic user keys. The key map for the developer functions is defined in the DeveloperPerk itself.

The LSR Perk Writer's Guide advises that custom Perks use CapsLock as a modifier. This alternative helps users distinguish between standard functions and application specific functions.

[Note]Note

Some bindings are exceptions to these rules. First, the user function stop now is bound to Ctrl alone. Second, the user functions in BookmarkPerk use CapsLock as part of their modifier. Third, the developer function toggle mute is bound to Left Ctrl-Right Ctrl.

All of the keys available in the current context are listed in the help dialog. The listing includes keys defined in the base screen reader Perks as well as custom Perks. See Section 4.2, “Help Chooser”.

3.5. ReviewPerk Functions

The following table lists the functions provided by the ReviewPerk and the keys to which they are bound by the AltShiftPerk. All functions operate relative to the pointer POR unless otherwise indicated.

Table 1. Basic review functions and bindings

FunctionBindingNotes
review previous item Alt-Shift-U Moves the pointer to the start of the previous item. Stops at the first item of the foreground window.
review current item Alt-Shift-I Moves the pointer to the start of the current item
review next item Alt-Shift-O Moves the pointer to the start of the next item. Stops at the last item of the foreground window.
review previous word Alt-Shift-J Moves the pointer to the start of the previous word. Stops at the first word in the foreground window or the current item depending on the wrapping setting.
review current word Alt-Shift-K Moves the pointer to the start of the current word.
review next word Alt-Shift-L Moves the pointer to the start of the next word. Stops at the last word in the foreground window or the current item depending on the wrapping setting.
review previous char Alt-Shift-M Moves the pointer to the previous character. Stops at the first character of the foreground window or the current item depending on the wrapping setting.
review current char Alt-Shift-,  
review next char Alt-Shift-. Moves the pointer to the next character. Stops at the last character of the foreground window or the current item depending on the wrapping setting.
focus to por Alt-Shift-R Attempts to move the cursor to the pointer POR by default. If possible, sets the application focus, active selection, and caret at the pointer position. If not, reports that the cursor cannot be moved.
pointer to por Alt-Shift-F Attempts to move the pointer to the cusror POR by default.
mouse to por Alt-Shift-X  

3.6. BasicSpeechPerk Functions

The following table lists the functions provided by the BasicSpeechPerk, the keys to which some are bound by the AltShiftPerk, and the functions in the ReviewPerk to which others are bound. All functions operate relative to the pointer POR unless otherwise indicated.

Table 2. Basic speech functions and bindings

FunctionBindingNotes
stop nowCtrl 
increase speech rate Alt-Shift-T Does nothing when the output device has no concept of rate.
decrease speech rate Alt-Shift-G Does nothing when the output device has no concept of rate.
read review item, read review skip review previous item, review current item, review next item Reads empty items only if the skipping setting is set to report.
read review word, spell review word, pronounce review word review previous word, review current word, review next word

The function cycles from reading, spelling, and pronouncing (using NATO phonetic alphabet code words) the current word when the review current word function is invoked repeatedly without interruption.

read review char, spell review char, pronounce review char review previous char, review current char, review next char

The function cycles from reading and pronouncing (using NATO phonetic alphabet code words) the current character when the review current char function is invoked repeatedly without interruption.

read top Alt-Shift-Y Moves the pointer to the first item in the view and reads it. Usually, this command reads the title of the active window.
read bottom Alt-Shift-N Moves the pointer to the last item in the view and reads it. Usually, this command reads the status bar of the active window.
read description Alt-Shift-D Reads the accessible description of an item.
read text color, read text attributes Alt-Shift-B This key sequence cycles. The first press says the foreground color name on the background color name, followed three (red, green, blue) decimal values for each. The next press reports all of the remaining name/value pairs of the text attributes.
read all Alt-Shift-H  
where am i now, where am i ancestors Alt-Shift-1 This key sequence cycles. The first press reports the details of the current accessible. The second press reports abbreviated details of each ancestor up the chain to the root of the active window.

When navigating across items, the template for output is the same as the one used for active selection events. See Section 2.4.1, “Item Activation”.

3.7. BookmarkPerk Functions

The following table lists the functions provided by the BookmarkPerk and the keys to which they are bound.

Table 3. Bookmark functions and bindings

FunctionBindingsNotes
bookmark reg add gesture Alt-CapsLock-2 through Alt-CapsLock-0 Stores the current pointer POR in the given slot. If the slot already stores a bookmark, asks for confirmation. A second consecutive press confirms the overwrite.
bookmark reg goto gesture CapsLock-2 through CapsLock-0 Moves the pointer to the bookmarked POR.
bookmark reg where am i gesture Alt-Shift-2 through Alt-Shift-0 Compares the bookmarked POR to the root of the view.
bookmark reg bm compare gesture Alt-CapsLock-Shift-2 through Alt-CapsLock-Shift-0 Compares the bookmarked POR to the pointer POR.

3.8. SearchPerk Functions

The following table lists the functions provided by the SearchPerk and the keys to which they are bound by the AltShiftPerk.

Table 4. Search functions and bindings

FunctionBindingsNotes
search show chooser Alt-Shift-S See Section 4.3, “Search Chooser”
search find next Alt-Shift-E  
search find previous Alt-Shift-W  

3.9. DefaultDialogPerk Functions

The following table lists the functions provided by the DefaultDialogPerk and the keys to which they are bound by the AltShiftPerk.

Table 5. Dialog functions and bindings

FunctionBindingsNotes
show settings chooser Alt-Shift-Q See Section 4.1, “Settings Chooser”
show perk chooser Alt-Shift-A See Section 4.4, “Perk Chooser”
show help chooser Alt-Shift-Z See Section 4.2, “Help Chooser”

3.10. DeveloperPerk Functions

The following table lists the functions provided by the DeveloperPerk and the keys to which they are bound.

Table 6. Developer functions and bindings

FunctionKey SequenceNotes
toggle mute Left Ctrl-Right Ctrl  
say perks Alt-CapsLock-J Says the names of the active Perks starting with the one that will process events first.
reload perks Alt-CapsLock-K Reloads all Perks in the current application. Any change to the Perk code since the last load will take effect immediately.
toggle monitors Alt-CapsLock-L Shows all monitors registered in the current profile if any one monitor is not shown. Hides all monitors if all of them are shown. See Section 4.5, “Developer Dialogs”

3.11. Application-Specific Bindings

Perks for particular applications can define additional key bindings. This document only covers the commands defined by the core Perks. Additional key bindings are described in the Linux Screen Reader User's Guide.

Generated 2007/05/14 10:49:43-05:00

Copyright © 2006, 2007 IBM