Access key background information

The Agenda for the Aug 5 2004 WCAG WG telecon includes a topic on access 
keys.   Here is some background for the discussion. 

Back in June I started the following thread in the mailing list about a 
proposal for access keys:
  <http://lists.w3.org/Archives/Public/w3c-wai-gl/2004AprJun/0773.html>

The idea is to have standard access keys and let each browser define the 
set of keystrokes that map to these functions.  This helps to eliminate 
the current problem with the HTML access key attribute where the author 
must find an available keystroke combination (that works in multiple 
browsers) and find a way to notify the user of the set of access keys used 
in the content.

The behavior when an access key is pressed must also be specified.  In 
some instances, pressing an access key may set focus to a certain part of 
the document, such as an access key for "skip to main content".  But, 
other access keys may actually be used to perform an action such as a set 
of keys for moving from "page" to "page" forward or backward within a web 
resource.  In the case of links to move forward or backward in a web site, 
should executing the access key bring focus to the link for moving 
forward/backward or should pressing the key actually perform the action 
without first focusing the link?  Menus can exhibit the same problems - 
should pressing the access key execute the menu item or just focus the 
menu item?  Thus, the user should be able to select an option in the 
browser for setting access keys to focus or activate when pressed.   And, 
should there be support for access keys that may have no visible 
representation?   In many cases, access keys are representing a particular 
action or role on the web resource.  Roles is something that is being 
looked at by the XHTML working group for XHTML2 and is identified as part 
of the WAI-PF working group Roadmap.

The XHTML group is working on a roadmap to help fix some of the issues 
with dynamic web content working with assistive technologies.  To that 
end, the roadmap proposes a set of standard roles that can be assigned to 
components in the web resource.   And example is marking a particular 
<div> as representing a menu item; or making a <div> as the main content 
on the page; or marking a component as a navigation bar.   An assistive 
technology can use the role information attached to a component to provide 
support for the function of that component.  For example, if a screen 
reader encounters a <div> that is marked with role of menu, it can speak, 
"menu - reply options with 4 menu items" or, "menu item - reply with 
history".  In addition to components having roles, scripts can specify 
action roles such as "open new window", that can give additional 
information to assistive technologies about what action will occur.  In 
working on the definition of standard roles, the group has encountered 
overlap with access key definitions. 

Often it would be desirable to assign a standard access key to interact 
with components that implement some of  the standard role definitions. For 
example: marking a section of the document as the main content and 
defining an access key to navigate to the main content;  or assigning a 
role of "portlet" and assigning an access key to navigate from portlet to 
portlet on the page.   This leads to the following questions that we would 
like feedback from WCAG about:

What are the standard access keys we would like to see defined and what 
are the use cases?
What are the standard roles we would like to see defined and what are the 
use cases?
How do we merge the areas of overlap between roles and access keys?
How to handle scoping issues? For example, if there are several portlets 
defined on a page each with a main content section in what order do these 
get invoked?

The following tables list the proposed standard roles.

Accessibility API Roles
The following table lists the set of standard roles which map to platform 
accessibility API. These apply to elements within the body tag. 


General Role
User Agent Mapping
alert
Definition: Indicates that the Window is an Alert message

ATK: ATK_ROLE_ALERT
MSAA: ROLE_SYSTEM_ALERT 
animation
Definition: Contains graphic content that changes over time.


ATK: ATK_ROLE_ANIMATION
MSAA: ROLE_SYSTEM_ANIMATION
application
Definition: Indicates that the element and its descendents represent an 
application. This is valuable for <object>.
ATK: ATK_ROLE_APPLICATION
MSAA: ROLE_SYSTEM_APPLICATION
buttonmenu

Definition: Button that drops down a menu
MSAA: ROLE_SYSTEM_BUTTONMENU
calendar
Definition: Displays a calendar and allows for date selection.

ATK: ATK_ROLE_CALENDAR
MSAA: ROLE_SYSTEM_TABLE
checkbox

Definition: Turned off independently of other objects. Usually rendered to 
appear like a standard GUI checkbox control.
ATK: ATK_ROLE_CHECKBOX
MSAA: ROLE_SYSTEM_CHECKBUTTON
checkMenuItem
Definition:  menu item with a  check box
ATK: ATK_ROLE_CHECK_MENU_ITEM
MSAA: ROLE_SYSTEM_MENUITEM
combobox

Definition: Select from a list of choices. Usually rendered as an edit 
field with a drop down list of choices

ATK: ATK_ROLE_COMBOBOX
MSAA: ROLE_SYSTEM_COMBOBOX
column_header

Definition:  Header for a  colunm of data not associated with a table.  
Use table_column_header for  table specific column headers.
ATK: ATK_ROLE_COLUMN_HEADER
MSAA:  ROLE_SYSTEM_COLUMNHEADER (NOTE that this IS specific to tables)
dial

Definition: Allows for selection of a value within a range through the use 
of a knob or dial.

ATK:ATK_ROLE_DIAL
MSAA: ROLE_SYSTEM_ DIAL
dialog

Definition: Rendered to look as a dialog box for selection of a range of 
values.
ATK:ATK_ROLE_DIALOG
MSAA: ROLE_SYSTEM_DIALOG
dialog_pane

Definition: Pane used inside a dialog box.
ATK:ATK_ROLE_OPTION_PANE
MSAA: ROLE_SYSTEM_DIALOG
directory_pane

Definition: Allows navigation and selection of contents of a directory
ATK:ATK_ROLE_DIRECTORY_PANE
MSAA: ROLE_SYSTEM_PANE
frame

Definition: Rendered to look like a window frame.
ATK:ATK_ROLE_FRAME
MSAA:  ROLE_SYSTEM_WINDOW 
groupbox

Definition: Group of controls.
ATK: ATK_ROLE_PANEL
MSAA: ROLE_SYSTEM_GROUPING
Note: The user agent will need to define a group relationship to its for 
the panel's children in ATK
icon

Definition: A fixed sized picture.
ATK:ATK_ROLE_ICON


graphic
Definition:  a picture or image
ATK: ATK_ROLE_IMAGE
MSAA: ROLE_SYSTEM_GRAPHIC
label

Definition:  static text describing an element or object
ATK: ATK_ROLE_LABEL 
MSAA: ROLE_SYSTEM_STATICTEXT 
layered_pane

Definition: pane with childran that are drawn in stacking order
ATK: ATK_ROLE_LAYERED_PANE
MSAA: ROLE_SYSTEM_PANE
link
Description: navigates to another resource but not implemented as a 
traditional link 
MSAA:  ROLE_SYSTEM_LINK
list

Definition:  represents a list box for selecting one or more items
ATK: ATK_ROLE_LIST
MSAA: ROLE_SYSTEM_LIST
listItem

Definition: represents a selectable item in a list
ATK: ATK_ROLE_LISTITEM
MSAA: ROLE_SYSTEM_LISTITEM
menu

Definition:  represents a list of items from which the user can select an 
action
ATK:: ATK_ROLE_MENU
MSAA: ROLE_SYSTEM_MENUPOPUP
menubar

Definition: contains more than one menu selectable by the user.  Generally 
at the top of a window or pane
ATK: ATK_ROLE_MENU_BAR
MSAA: ROLE_SYSTEM_MENUBAR
menuitem

Definittion:  an element in a menu  that represents a selectable action
ATK: ATK_ROLE_MENU_ITEM
MSAA: ROLE_SYSTEM_MENUITEM
pane

Definition: level of grouping within frame or document
ATK: ATK_ROLE_PANEL
MSAA: ROLE_SYSTEM_PANE 
progressbar

Definition:  dynamically displays how much of an operation has been 
completed
ATK:  ATK_ROLE_PROGRESS_BAR
MSAA: ROLE_SYSTEM_PROGRESSBAR
propertypage

Definition: a property sheet for changing attributes 
MSAA: ROLE_SYSTEM_PROPERTYPAGE
pushbutton

Definition:  push button control to perform an action
ATK: ATK_ROLE_PUSH_BUTTON
MSAA:  ROLE_SYSTEM_PUSHBUTTON
radiobutton

Definition:  represents a specialized button  in a mutually exclusive 
group - activating one in the group deactivates all others in the group.
values: true  
ATK: ATK_ROLE_RADIO_BUTTON
MSAA: ROLE_SYSTEM_RADIOBUTTON
root_pane

Definition: pane that contains a top_pane and layered_pane(s)
ATK: ATK_ROOT_PANE
MSAA: ROLE_SYSTEM_PANE
row_header

Definition:  Header for a row of data not associated with a table.  Use 
table_row_header for table specific rows.  
ATK:  ATK_ROOT_ROW_HEADER
MSAA: ROLE_SYSTEM_ROWHEADER (Note that this IS specific to tables).
scrollbar
Definitiion:  represents a horizontal or vertical scroll bar
ATK: ATK_ROLE_SCROLL_BAR
MSAA:  ROLE_SYSTEM_SCROLLBAR
scroll_pane

Definition: pane that contains a top_pane and layered_pane(s)
ATK: ATK_ROLE_SCROLL_PANE
MSAA: ROLE_SYSTEM_PANE
secret_text

Definition:  text content not visibly displayed to the user
ATK: ATK_ROLE_PASSWORD_TEXT
MSAA: ROLE_SYSTEM_TEXT
selectable

Definition: This means that this element is a descendant of a container 
element which manages its selection and it is selectable by the user.
applies to HTML Form element <option>

XForms: see selectable

values: true

separator

Definition:  provide visual separation in a list of objects. Generally 
used in a menu
ATK: ATK_ROLE_SEPARATOR
MSAA: ROLE_SYSTEM_SEPARATOR
slider

Definition:  control for selecting an incremental  value between some 
specified minimum and maximum
ATK: ATK_ROLE_SLIDER
MSAA: ROLE_SYSTEM_SLIDER
spinbutton

Definition: Control for modifying an incremental value in an associated 
control  such as text field
ATK: ATK_ROLE_SPIN_BUTTON
MSAA: ROLE_SYSTEM_SPINBUTTON 
split_pane

Definition: specialized panel that presents two panels at the same time
ATK: ATK_ROLE_SPLIT_PANE
MASS:  ROLE_SYSTEM_PANE
static_text

Definition: read only text
ATK:ATK_ROLE_TEXT (use the editible state attributes to determine 
aditiable or not)
MSAA: ROLE_SYSTEM_STATIC_TEXT
statusbar

Definition: object that provides information about the current operation 
or selection
ATK: ATK_ROLE_STATUSBAR
MSAA: ROLE_SYSTEM_STATUSBAR
table

Definition: objects represents a data table of rows and columns
ATK: ATK_ROLE_TABLE
MSAA: ROLE_SYSTEM_TABLE
tablecell
Definition:  represents a cell in a table
ATK: ATK_ROLE_TABLE_CELL
MSAA: ROLE_SYSTEM_CELL  
table_layout

Definiton: Table used as a layout mechanism

table_column_header

Definition:  header for a column in a table
ATK: ATK_ROLE_TABLE_COLUMN_HEADER
MSAA: ROLE_SYSTEM_COLUMNHEADER
table_row_header

Definition:  header for a row in a table
ATK: ATK_ROLE_TABLE_ROW_HEADER
MSAA:  ROLE_SYSTEM_ROWHEADER
tab_panel

Definitiion: represents a panel in a grouping of tabbed panels
ATK: ATK_ROLE_PAGE_TAB
MSAA: ROLE_SYSTEM_PAGETAB (must have ROLE_SYSTEM_GROUPING as only child)
tab_panel_list

Definition: container for tab_panels
ATK: ATK_ROLE_PAGE_TAB_LIST
MSAA: ROLE_SYSTEM_PAGETABLIST
tear_off_menuItem

Definition:  a menu  with a moveable state
ATK: ATK_ROLE_TEAR_OFF_MENU_ITEM
MSAA:  ROLE_SYSTEM_MENUITEM 
(Note: use of accessible state information would indicate that the element 
is moveable in MSAA)
text
Definition:  represents text

ATK: ATK_ROLE_TEXT (will need to use state information to indicate if the 
text is editable)
MSAA: ROLE_SYSTEM_TEXT 
toolbar

Definition:  grouping of controls that represent common actions 
values: true
ATK: ATK_ROLE_TOOL_BAR
MSAA: ROLE_SYSTEM_TOOLBAR
top_panel

Definition: panel that is drawn on top of all others
ATK: ATK_ROLE_GLASSPANE
MSAA: ROLE_SYSTEM_PANE
tooltip

Definition:  provides information about another object
values: string
ATK: ATK_ROLE_TOOL_TIP
MSAA: ROLE_SYSTEM_TOOLTIP
XForms - see hint
tree
Definition:  represents hierarchical information to the user in expandable 
/collapsable sections
ATK: ATK_ROLE_TREE
MSAA_ROLE_SYSTEM_OUTLINE
tree_table

Definition: tree that also shows multiple columns of data
ATK: ATK_ROLE_TREE_TABLE
unknown

Definition: This is the indeterminate state of a tri-state widget. This is 
used for progress meters or checkboxes.
ATK: ATK_ROLE_UNKNOWN
MSAA: ROLE_SYSTEM_CLIENT (represents a window's client area but also used 
as the default when the role is unknown)
whitespace

Definition:  object that represents empty space between objects
ATK: ATK_ROLE_FILLER
MSAA: ROLE_SYSTEM_WHITESPACE


Additional Roles
The following are additional roles that do not map directly to existing 
Accessibility APIs but are common functions found in web content. These 
apply to elements within the body tag.  Selfvoicing is limited to object, 
body, iframe, frame due to complexity imposed on assistive technologies.

Role
Definition
cell
cell in a grid of row and columns
column
column of information not associate with a table 
contact_information
grouping of contact information 
footer
grouping of information at the bottom of a resource
header
grouping of information at the top of a resource
horizontal_navigationbar
horizontal  implementation of a navigation mechanism for the 
site/application
layout_table
table element that has been used strictly for layout purposes
maincontent
indicates the main content area of the resource
row
row of information not associated with a table
portlet
A content channel or application to which a user subscribes, adds to their 
personal portal page and configures to show personalized content. A likely 
appearance is a box with a title bar and content (e.g. sports results, 
stock quotes, urgent e-mail, weather) located somewhere on a portal page.
self_voicing 
Definition: Indicates the object tag represents a self-voicing application 
meaning that it will speak without an assistive technology.
sitemap
describes the structure of the site
vertical_navigationbar
vertical implementation of a navigation mechanism for the site/application


Action Roles
The following roles represent actions that are implemented via scripting.

Role
Definition
add_element
result of the script adds new element(s) to the document object model
display_message
script displays a message to the user (generally in a popup)
new_location
result of the script may load a new uri
new_window
result of the script may open a new window
submit
successful execution of the script performs a submit
update_focus
script programmatically updates the element with focus
validate
script performs validation of data


Becky Gibson
Web Accessibility Architect
                                                       
IBM Emerging Internet Technologies
5 Technology Park Drive
Westford, MA 01886
Voice: 978 399-6101; t/l 333-6101
Email: gibsonb@us.ibm.com

Received on Thursday, 5 August 2004 10:59:42 UTC