Re: Screen-reader behaviour

aloha!  

i will speak to what i personally know, and hope that others using other 
set ups will do the same, in particular jason white, who uses linux, 
orca, and refreshable braille, which i do not, and david poehlman, who 
uses a mac; jason also uses emacspeak, as i did once, so perhaps raman 
would also like to weigh in on this topic...

i primarily use JAWS, save for when using FireVox and NVDA -- as far as 
JAWS' ability to recognize and "jump to" specific markup, the following
options are available via a menu (most, if not all, are also useable as
"naked" keystrokes when in "virtual cursor mode" -- which is JAWS' 
keyboard overlay in MSIE (and, to a lesser extent, FireFox and 
SeaMonkey) -- in virtual cursor mode, for example, i can advance by 
paragraph by pressing the p key -- and can move backwards using the 
SHIFT key in addition to the p key (note that in large documents, it 
is often impossible to actually move the virtual cursor back using the 
SHIFT modifier), to get to a table, one can press t and the virtual 
cursor will place one at the top of a table, reading out the summary 
defined for that table, or in the absence of a summary will give the 
user the table's dimensions (X colums by Y rows); to navigate a table 
or to interact with a FORM, one must go into a special mode, in order 
to interact with the document controls directly (in the case of a form) 
or to navigate a table, when one is encountered...

as you can imagine, the full virtual keyboard layout is very complicated 
and entails quite a learning curve for the average or new user... here 
is, from JAWS 8's help files a list of basic "virtual keyboard commands" 
-- note that

A) these are "virtual commands" meant to work with MSIE7 and, to 
a lesser extent FireFox

B) that this is only a partial, albeit "official", list of JAWS' virtual 
cursor mode commands

C) the use of the INSERT key as a modifier key, means that commands 
which use UI chrome keys (such as "Enter Forms Mode using INSERT+F5) 
often leads the command being misinterpreted by the UA as a "refresh"
command, which leads to one's answers to a form to be cleared, as 
JAWS often has difficulty retaining its focus in forms mode, especially 
if the form is irregularly constructed (such as the submit key being 
located outside of the FORM element and in a javascripted link); also,
by far the easiest and most reliable way to review one's answers to a 
form is to use the list of form controls, which is invoked using 
INSERT+F5, to provide one with an overview of answers, but one usually 
has a 50/50 chance that instead of being able to review form entry data, 
one inadvertantly clears the form

D) the longer the document, the less likely the gross navigational 
commands are to work as intended -- one can often move forward 
using H to go to the next header, but shift+H won't always get you 
back to the previous header

E) it is often impossible to get contextual information by querying 
the element which has focus -- on a hyperlink, for example, INSERT+TAB
will not read the title text if JAWS is set to read hyperlink text, 
and vice-versa, which is problematic, for many well intentioned 
hyperlink titles -- when spoken in place of hyperlink text -- make the 
flow of a document disorienting and hard to understand...

F) the following information is extracted from the help files that 
accompanied the latest official release of JAWS 8, as well as the lists 
of lists one can invoke in "virtual cursor mode"

---- BEGIN LIST OF GENERAL JAWS VIRTUAL CURSOR MODE COMMANDS ----
-------------------
1. General Commands
-------------------

Back a Page: ALT+LEFT ARROW or BACKSPACE
Forward a Page: ALT+RIGHT ARROW
 
Move to Address Bar: ALT+D
Read Address Bar:  INSERT+A
Move JAWS Cursor to Address Bar:  INSERT+A twice quickly
 
Virtual HTML Features:  INSERT+F3
   * note: i will address this feature after listing the virtual mode 
commands

View Basic Element Information:  INSERT+SHIFT+F1
View Advanced Element Information: CTRL+INSERT+SHIFT+F1
 
Move to Next Clickable Element:  SLASH
Move to Previous Clickable Element:  SHIFT+SLASH
Select Clickable Element:  INSERT+CTRL+SLASH
 
Activate Mouse Over: INSERT+CTRL+ENTER
Move to Next Mouse Over Element:  SEMICOLON
Move to Previous Mouse Over Element:  SHIFT+SEMICOLON
Select a Mouse Over Element: INSERT+CTRL+SEMICOLON


-----------------
2) Links Commands
-----------------

List Links:  INSERT+F7
Next Link:  TAB
Prior Link: SHIFT+TAB
Next Visited Link: V
Prior Visited Link: SHIFT+V

Open Link: ENTER
Open Link in New Window: SHIFT+ENTER
 
Next Non Link Text:  N
Prior Non Link Text:  SHIFT+N


--------------------
3) Headings Commands
--------------------

List Headings: INSERT+F6 

Next Heading: H
Prior Heading: SHIFT+H

First Heading: ALT+INSERT+HOME 
Last Heading: ALT+INSERT+END 

Next Heading at Level: 1 through 6
   * note: 1 will cycle through level 1 headers, 2 through level 2 
headers, etc.

Prior Heading at Level:  SHIFT+1 through 6 
 
First Heading at Level: ALT+CTRL+INSERT+1 through 6 
Last Heading at Level: ALT+CTRL+INSERT+ SHIFT+1 through 6 


-----------------
4) Forms Commands
-----------------

4A) Getting to a Particular form field using the virtual cursor:

Move To First Form Field: INSERT+CTRL+HOME
Move To Last Form Field:  INSERT+CTRL+END

Move To Next Form Field: F
Move To Prior Form Field: SHIFT+F

Move To Next Button: B
Move to Prior Button: SHIFT+B

Move To Next Combo Box:  C
Move to Prior Combo Box: SHIFT+C
 
Move To Next Edit Box: E
Move to Prior Edit Box: SHIFT+E

Move To Next Radio Button: R
Move to Prior Radio Button: SHIFT+R

Move To Next Check Box: X
Move to Prior Check Box: SHIFT+X

4B) Forms Mode (actually allows user to interact with form controls)

Enter Forms Mode: ENTER
Exit Forms Mode: NUM PAD PLUS

List of Form Fields: INSERT+F5
List Buttons: CTRL+INSERT+B
List Combo Boxes: CTRL+INSERT+C
List Edit Boxes: CTRL+INSERT+E
List Radio Buttons: CTRL+INSERT+R
List Check Boxes: CTRL+INSERT+X

Enter/Leave Multi-Select Mode: SHIFT+F8


------------------
5) Tables Commands
------------------

Move To Next Table:  T
Move To Prior Table: SHIFT+T 

Select Table: F8

List Tables: CTRL+INSERT+T

Jump to Table Cell (from within a table): CTRL+WINDOWS Key+J
Return to Previous Cell: CTRL+SHIFT+WINDOWS Key+J
Read current cell: CTRL+ALT+NUM PAD 5 
Move to and Read Next Cell: CTRL+ALT+RIGHT ARROW 
Move to and Read Prior Cell: CTRL+ALT+LEFT ARROW 
Move to and Read Cell Above: CTRL+ALT+UP ARROW 
Move to and Read Cell Below: CTRL+ALT+DOWN ARROW 

Move to and Read First Cell: CTRL+ALT+HOME 
Move to and Read Last Cell: CTRL+ALT+END 

Read Next Row: WINDOWS KEY+DOWN ARROW 
Read Prior Row: WINDOWS KEY+UP ARROW 
Read Current Row: WINDOWS KEY+COMMA 
Read from Beginning of Row to Current Cell: INSERT+SHIFT+HOME
Read from Current Cell to End of Row: INSERT+SHIFT+PAGE UP 

Read Current Column: WINDOWS KEY+PERIOD
Read from Top of Column to Current Cell: INSERT+SHIFT+END 
Read from Current Cell to Bottom of Column: INSERT+SHIFT+PAGE DOWN 


------------------
6) Frames Commands
------------------

Next Frame: M
Prior Frame: SHIFT+M

Move to Frame 1 to 10: Unassigned

List Frames: INSERT+F9


--------------------
7) Elements Commands
--------------------

Next Same Element: S 
Prior Same Element: SHIFT+S 

Next Different Element: D 
Prior Different Element: SHIFT+D 

Next Element: SHIFT+PERIOD
Previous Element: SHIFT+COMMA

Select Entire Element: F8 

Display Element Information: SHIFT+INSERT+F1 
 
Display Detailed Element Information: CTRL+SHIFT+INSERT+F1 
 
Activate Mouse Over: INSERT+CTRL+ENTER


-----------------
8) Other Commands
-----------------

Create Custom Label: CTRL+INSERT+TAB

Move to Next Place Marker: K 
Move to Previous Place Marker: SHIFT+K
 
List, Go To, or Modify Place Markers: CTRL+SHIFT+K
 
Move to Next List: L
Move to Prior List: SHIFT+L

Select List: F8
List All Ordered, Unordered, and Definition Lists: CTRL+INSERT+L

Move to Next Item in a List: I
Move to Prior Item in a List: SHIFT+I

Refresh JAWS Virtual Mode: INSERT+ESC
  * updates JAWS' screen shot of the document instance loaded into JAWS' 
     virtual mode buffer; it is often necessary to use this command when 
     switching from BrowserTab to BrowserTab, otherwise all the 
     information about the document instance you have just left will be 
     retained in JAWS' virtual memory (this is an example of the OSM in 
     action, the OSM being the "off-screen model" which JAWS scrapes 
     from the initial rendering of the page, so it can work off of the OSM
     generated snapshot; when the page refreshes, the OSM does not 
     always refresh, nor does it always refresh when a user switches 
     between document instances, so it is one of the most invoked keys
     in virtual mode

List Toolbar Buttons: INSERT+F8 (not available in Mozilla Firefox)
 
Route Virtual to PC Cursor: INSERT+DELETE
Route PC to Virtual Cursor: CTRL+INSERT+DELETE
Route Virtual to JAWS Cursor: INSERT+NUM PAD PLUS

Virtual Cursor Toggle: INSERT+Z

JAWS Find Next: F3
JAWS Find Previous: SHIFT+F3
   * note: "JAWS Find" is different from the UA's built-in "Find Function"
      in that a JAWS Find searches the OSM, rather than the document 
      instance itself
 
Jump to Line: J
Return to Previous Line: SHIFT+J

Move to Next Division: Z
Move to Prior Division: SHIFT+Z
List Divisions: CTRL+INSERT+Z
---- END OF LIST OF GENERAL JAWS VIRTUAL CURSOR MODE COMMANDS ----

due to the previous list (which is only a partial listing of the virtual 
cursor 
commands and interactive commands), being so large, not to mention 
dependent upon proper use of markup by the author of the document 
instance 
being read, JAWS has a "virtual HTML features" list, containing 20 items 
and 
invoked using the INSTERT+F3 key -- the "virtual HTML features" are 
listed 
below:

  * Anchors List
  * Blockquote List
  * Buttons 
  * Checkboxes 
  * Combo boxes: 
  * Division marker list
  * Edit box list
  * Forms list
  * Frames list
  * Graphics list
  * Headers list
  * Links list
  * Link Items list
  * Lists list
  * Object list
  * Paragraph list
  * Placemarkers list
  * Personalized Web settings list
  * Tables list
  * Radio button list

note that there is neither a "class" list nor an "id" list, and most of 
the above-listed commands provide only "gross navigation", save 
for when one enters Table Navigation mode or Forms Control mode;
note, as well, that when one lists tables, there is no differentiation 
between layout tables and data tables, so moving from table to 
table using the T and SHIFT+T commands often doesn't provide the 
user with the ability to be discriminating about which tables the user
investigates, which forces the user to investigate EACH table, simply
in order to ascertain whether or not it contains any relevant content,
or whether it is a layout table encasing a layout table, encasing a 
layout table.

also, there are inherent conflicts -- when i am in table navigation 
mode to inspect a form contained in a table, the state and type of 
form controls contained in the row or column will NOT be enunciated,
nor will the text contained in the row or column as pseudo-labels 
be available when in forms mode, so it is often necessary to switch 
from mode to mode several times whilst attempting to complete a 
single form, let alone navigate an entire page...

one can set the cascade one wants enunciated for certain elements:
for graphical links, one can either have the link text, title text, alt 
text, whichever is longest spoken (note, this cannot be easily 
changed on the fly; the final cascade is if no other information present,
read the contents of the src attribute), just as one can choose for 
regular hyperlink text what to speak: link text, title, or longest. 
(again, exclusive settings that cannot be easily changed on the fly, 
but are hard set in JAWS -- just as one has the ability to toggle 
expansion all ABBR of or on, and the ability to toggle expansion of 
ACRONYM on or off, but only by setting JAWS' property sheets to either
expand or not expand either element...  one can also set JAWS to 
ignore any IMG which lacks alt text, to identify it simply as a 
"graphic", or to use the contents of the src attribute to provide ersatz 
alt text for that graphic; this is how one avoids the "spacer.gif 
spacer.gif spacer.gif spacer.gif string of text spacer.gif spacer.gif 
spacer.gif spacer.gif phenomenon, but it is often necessary to leave 
ennunciation of unlabeled graphics enabled, in order to interact with 
certain sites that allowed their author or authoring tool to use invalid 
ALT values -- knowing that a graphical item is part of a document's 
presentation is often essential to understanding the document, its flow, 
and how it's author means to convey information to the user -- you'd be 
surprised how many people assume that screen readers can perform OCR 
(optical character recognition) on images of text, and neglect to provide 
an equivalent alternate to the picture of text, assuming that text -- no 
matter what it's form, can be spoken, despite the fact that a picture 
of text is not text, but, rather, a picture which happens to contain 
text in a graphical format

i hope this helps answer your question, phil -- if not, ask again!
gregory.

----------------------------------------------------------------
CONSERVATIVE, n.  A statesman who is enamored of existing evils,
as distinguished from the Liberal, who wishes to replace them 
with others.         -- Ambrose Bierce, _The Devil's Dictionary_
----------------------------------------------------------------
             Gregory J. Rosmaita, oedipus@hicom.net
  Camera Obscura: http://www.hicom.net/~oedipus/index.html
----------------------------------------------------------------

---------- Original Message -----------
From: "Philip Taylor (Webmaster)" <P.Taylor@Rhul.Ac.Uk>
To: Joshue O Connor <joshue.oconnor@cfit.ie>
Cc: HTML Working Group <public-html@w3.org>, wai-xtech@w3.org
Sent: Thu, 30 Aug 2007 15:17:23 +0100
Subject: Screen-reader behaviour

> If you are familiar with the technology hands-
> on, can you also say whether classes and/or
> IDs (as well as elements) are exposed to the
> end-user by any system  of which you are aware ?

Received on Thursday, 30 August 2007 16:44:19 UTC