Accessibility API cross-reference

This cross-reference helps us see the difference between today's accessibility API's. All accessibility APIs to date define a list of possible object roles, or general types, such as button, menu item, text, etc. They also define a list of possible object states, such as focused, read-only, checked, etc.

An interesting problem is that Mozilla, Safari/KHTML, Opera, StarOffice and other apps are cross-platform, but there is currently no cross-platform Accessibility API. The IPC mechanisms used by current generation API's are also not cross-platform, although communication for some cross-platform accessibility API of the future could be done through sockets.

These tables describe how various accessibility APIs define possible roles of an object, and states. All accessibility APIs to date define a list of possible object roles, or general types, such as button, menu item, text, etc. They also define a list of possible object states, such as focused, read-only, checked, etc. This table is the start of a cross-reference, so we can spot the differences and similarities in the APIs.

ARIA is a standard developed as part of the Web Accessibility Initiative, which uses markup syntax quite familiar to users of HTML, XML, SGML and others. The roles it specifies have already informed the 'semantic elements' of HTML5 (such as main and footer), but there is not a one-to-one mapping between the ARIA roles and the semantics of HTML5. ARIA can be used to 'fill out' the missing semantics of HTML, but may also be used in other markup languages (such as SVG) and expresses semantics using attributes, compared with HTML, which tends to have distinct named elements for its roles. For all these reasons, ARIA and HTML are given separate columns. ARIA abstract roles should not be used by content authors.

The Gnome accessibility architecture is implemented via ATK and AT-SPI, and was implemented by Sun Microsystems. It will be reused for KDE accessibility via AT-SPI . We find that it uses very similar naming conventions as Java accessibility, and for those purposes the two to be nearly the same. However, only about one third of the states and roles in Sun's accessibility API's are the same as in MSAA.

To do

  • Fill out Mac API column.(Mac OS X - Carbon Accessibility API and Accessibility Constants)
  • Finish ARIA column - add explanation of the term 'Abstract role'
  • Fill out HTML column
  • Create AOM column
  • Fill out XUL column.
  • Fill out Tagged PDF column (Relevant documents from PDF association)
  • Add missing ARIA properties
  • Fill out events cross reference table
  • Use this info to expand Mozilla's accessibility API coverage to include Mac, so that we can start to freeze them
  • Talk about the fact that MSAA uses one interface (IAccessible), wherease Gnome accessibility uses a lot of different interfaces depending on the type of object
  • Go through the ATK info and make sure it's up-to-date

Accessible Roles

Description & Notes MSAA Role (ROLE_SYSTEM_*) Java Accessibility Role Gnome Accessibility Role (ATK_ROLE_*) Mac OS X Accessibility Role ARIA (role=*) HTML Tagged PDF Relevant XUL
For alerts, in Java/Gnome for any alert, in MSAA if no other role applies. ARIA live region. ALERT ALERT ALERT alert, alertdialog
Content changes over time, such as animated gif ANIMATION n/a no spec n/a
A section that forms an independent part of a document, page, or site. article <article> <Part> or <Art>
Object representing entire app. ARIA role denotes interactive (not browsable) content operable in ways that differ from any of the other interactive ARIA roles, and may be only a part of the main document. APPLICATION FRAME n/a application See <Div> and <NonStruct>
A region that contains mostly site-oriented content, rather than page-specific content. banner
A portion of quoted content which is 'too long' to appear 'inline' n/a blockquote <BlockQuote>
Entire window border as 1 object BORDER n/a n/a n/a
Specific kind of button that drops down a list of items, MSAA only BUTTONDROPDOWN n/a n/a Expressed with aria-haspopup on an element with a button role
Specific kind of button that drops down a grid, MSAA only BUTTONDROPDOWNGRID n/a n/a
Specific kind of button that drops down a menu, MSAA only BUTTONMENU n/a n/a Expressed with aria-haspopup on an element with a button role
Represents the system's caret CARET n/a n/a n/a
A brief portion of text describing a table or figure. In Tagged PDF n/a n/a Expressed with aria-labelledby if visible on screen or aria-label otherwise <caption> (for tables), <figcaption> (for figures), and <label> with a for attribute (for input elements) a <TOC> or <L> may contain a <caption> as its first item

<Caption> or <Lbl>
A cell in a table CELL n/a TABLE_CELL cell <td> TD
Not what you think - this is for the damn paperclip CHARACTER n/a n/a n/a
For graphics representing data CHART n/a figure ?
A checkbox; ARIA has two kinds: Use checkbox if you need to express 'mixed' state (some of the descendents are true, some are false), otherwise use switch or (preferred in HTML) <input type=checkbox>, which are true/false only. CHECKBUTTON CHECK_BOX CHECK_BOX checkbox or switch <input type=checkbox>
Pretty obvious what this is for CLOCK n/a n/a timer <time>
Column of cells in a table - how would the user specifically point to this, as opposed to the column header or cells? COLUMN n/a n/a n/a
The heading of a table's column COLUMNHEADER COLUMN_HEADER COLUMN_HEADER, TABLE_COLUMN_HEADER columnheader <th scope=col>
Edit control with drop down list box, different from DROPLIST COMBOBOX COMBO_BOX COMBO_BOX combobox
Abstract role - A form of widget that performs an action but does not receive input data. command
A supporting section of the document, designed to be complementary to the main content at a similar level in the DOM hierarchy, but remains meaningful when separated from the main content. complementary <aside> n/a but <Div> or even <p> have been suggested for this purpose
A widget that may contain navigable descendants or owned children. composite (abstract role)
A large perceivable region that contains information about the parent document such as copyright, authors' names etc. contentinfo <footer> Page footers are often tagged as an Artifact (not "real" content) with the 'contentinfo' provided as document level XMP metadata instead
The mouse pointer - when and how is this used? CURSOR n/a n/a n/a
A definition of a term or concept. definition <dd>, <dfn> <LBody>
Iconified version of an app (n/a - use either PUSHBUTTON or LISTITEM) DESKTOP_ICON DESKTOP_ICON n/a
A specific kind of a graphic - a diagram. DIAGRAM n/a n/a figure <figure>
A dial or a knob. MSAA only. DIAL n/a n/a n/a
A dialog or message box. DIALOG DIALOG DIALOG dialog <dialog>
A list of references to members of a group, such as a static table of contents. directory See <nav> If it really is a table of contents, use <TOC> containing <TOCI> elements (which are wrappers for internal hyperlinks in such a table). For an index, use <Index> with a <L>(List) inside.
No default semantics in HTML, but semantics and other accessibility features may be provided with ARIA. See also Span n/a n/a n/a <div> <Div> but if you need custom semantic structure, use <NonStruct> instead
Window that corresponds to an MDI document. In ARIA, used to nest browsable rich text content inside interactive content DOCUMENT n/a n/a document Document
A drop down list, different from COMBOBOX DROPLIST n/a n/a listbox
For math & chemistry EQUATION n/a n/a math
A scrollable list of articles where scrolling may cause articles to be added to or removed from either end of the list. feed
A landmark region that contains a collection of items and objects that, as a whole, combine to create a form. form <form>
Presumably MSAA's GRAPHIC is ARIA's and HTML's img? GRAPHIC n/a n/a img <img>
A cell in a grid or treegrid. grid
A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys, e.g. a spreadsheet. gridcell
A type of mouse pointer used for resizing windows GRIP n/a n/a n/a
Probably a group box (titledbox in mozilla) GROUPING PANEL PANEL group <fieldset>, <div>
A heading for a section of the page. In ARIA, the heading level is expressed with the aria-level attribute. heading <h1> ... <h6> <H1> ... <H6>. <H> is also available but its use is not recommended because of lack of suitable tools - and the heading level is undefined
Click on this thing and then click on the item for tooltip style help HELPBALLOON n/a n/a n/a
Editable field that allows user to assign a key combination HOTKEYFIELD n/a n/a n/a
Graphic that indicates something, such as an arrow INDICATOR n/a n/a n/a
Abstract role - A generic type of widget that allows user input. input n/a
Hypertext link that can be on image or text LINK n/a link <a> <Link> According to the PDF 1.7 spec, a <Link> must not be a direct child of a <TOCI> (table of contents item). In such a case, they should be wrapped in a <Reference> Pragmatically however, user agents should expect to find <Link> tags as direct children of <TOCI>
Abstract role - A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology. landmark n/a
Hypertext link that can be on image or text LINK n/a link <a> <Link> According to the PDF 1.7 spec, a <Link> must not be a direct child of a <TOCI> (table of contents item). In such a case, they should be wrapped in a <Reference> Pragmatically however, user agents should expect to find <Link> tags as direct children of <TOCI>
A list LIST LIST LIST list <ol>, <ul> <L>
An item in a list LISTITEM n/a LIST_ITEM listitem <li> <LI> may contain <Lbl> (bullet, numeral, term etc.) and <LBody>
A type of live region where new information is added in meaningful order and old information may disappear. log
The main content of a document, distinct from complementary info, headers, footers, navigation, asides etc. main <main>
A type of live region where non-essential information changes frequently. marquee
The main menu bar below the app's title bar MENUBAR MENU_BAR MENU_BAR menubar
A menuitem with a checkable state whose possible values are true, false, or mixed. menuitemcheckbox
A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time. menuitemradio
Any menu other than the menu bar
Java: MENU is for pull-downs, POPUP_MENU for all others
A collection of navigational elements (usually links) for navigating the document or related documents. navigation <nav> If it's a table of contents, use <TOC>
An element whose implicit native role semantics (if any) will not be mapped to the accessibility API. none, presentation <Private> or perhaps <Artifact>
A section whose content is parenthetic or ancillary to the main content of the resource. note
A selectable item in a select list. option
A tree with expandable & collapseable elements OUTLINE TREE TREE tree
A tree item OUTLINEITEM n/a n/a treeitem
A tab in a tab panel UI (but is this the actual 'tab' that sticks out, or the panel associated with it?) PAGETAB PAGE_TAB PAGE_TAB tab
The container of the page tab controls. PAGETABLIST PAGE_TAB_LIST PAGE_TAB_LIST tablist
A pane or frame in the current window PANE n/a region or group ?
The most common content type in most documents. A paragraph generally encloses distinct portions of content that are not otherwise specified with other block level structure element types such as heading, table or list elements. <p> <P>
Shows percentage completion for task PROGRESSBAR PROGRESS_BAR n/a progressbar
Page showing properties of something PROPERTYPAGE n/a n/a n/a
Your average, run-of-the-mill button PUSHBUTTON PUSH_BUTTON PUSH_BUTTON button <button>
Only one radio button in a group is selectable. ARIA requires the parent to have role radiogroup RADIOBUTTON RADIO_BUTTON RADIO_BUTTON radio <input type=radio>
A container for a a group of radio buttons radiogroup Expressed by giving each radio button the same value name attribute
Represents the an row in a table ROW n/a n/a row <tr>
A structure containing one or more row elements in a tabular container. n/a n/a rowgroup n/a
A table row header ROWHEADER ROW_HEADER ROW_HEADER, TABLE_ROW_HEADER rowheader <th scope=row>
vertical or horizontal scrollbar SCROLLBAR SCROLL_BAR SCROLL_BAR scrollbar
A landmark region that contains a collection of items and objects that, as a whole, combine to create a search facility. search
A type of textbox intended for specifying search criteria. searchbox
A renderable structural containment unit in a document or application. section (abstract role) <section> <Sect>
A structure that labels or summarizes the topic of its related section. sectionhead (abstract role)
A form widget that allows the user to make selections from a set of choices. select (abstract role)
A line that splits 2 areas from each other SEPARATOR
(either in menu or splits panes)
(in menu only)
SEPARATOR separator <hr>
Adjust in increments from min to max values SLIDER SLIDER SLIDER slider <input type=range>
A system sound SOUND n/a n/a n/a
No default semantics in HTML, but semantics and other accessibility features may be provided with ARIA. See also Div n/a n/a n/a <span> Span
Kind of like a dial, but controls the value in a related field SPINBUTTON n/a n/a spinbutton
Uneditable text STATICTEXT LABEL LABEL see aria-readonly The text nodes of HTML elements are uneditable by default, apart from <input type=text>, or those with a  contentEditable attribute
Entire status bar. In ARIA, a type of live region whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar. STATUSBAR n/a n/a status
A document structural element. structure (abstract role)
Represents an entire table TABLE TABLE TABLE table <table>
A container for the resources associated with a tab, where each tab is contained in a tablist. tabpanel
A word or phrase with a corresponding definition. term dt <Lbl>
Text that might be editable, depending on state TEXT TEXT TEXT textbox (if editable) The text nodes of HTML elements are uneditable by default, apart from <input type=text>, or those with a contentEditable attribute
Title or caption of window TITLEBAR n/a n/a <title>
A button that can be pushed in or out, but doesn't provide separate indicator of checked state n/a TOGGLE_BUTTON TOGGLE_BUTTON button with aria-pressed attribute
The little piece of help text that comes up when you put your mouse over something TOOLTIP TOOL_TIP TOOL_TIP tooltip
A grid whose rows can be expanded and collapsed in the same manner as for a tree. n/a n/a treegrid
If you're using more than one consecutive whitespace element in HTML, you're doing it wrong. (Use CSS instead). Screen readers often announce this as "blank" or similar, which is usually noise, rather than content. WHITESPACE FILLER FILLER n/a &nbsp;
An interactive component of a graphical user interface. n/a n/a widget (abstract role)
A window WINDOW WINDOW WINDOW window (abstract role)
A window in an MDI applicaton INTERNAL_FRAME INTERNAL_FRAME, n/a
Invisible layer z-indexed to the front, for temporary content. E.g., tooltips may be drawn on the glass pane layer. GLASS_PANE GLASS_PANE n/a
Multiple adjacent panes that can be sized relative to each other by dragging a grippy on their border SPLIT_PANE SPLIT_PANE n/a
An object that can be drawn into and is used to trap events. n/a n/a CANVAS n/a <canvas> (accessible alternative richtext content may be nested inside, but the canvas itself is presentational)
A dialog for picking a color n/a COLOR_CHOOSER COLOR_CHOOSER n/a <input type=color>
A dialog for picking a file n/a FILE_CHOOSER FILE_CHOOSER n/a Invoked with <input type=file>
No explanation given n/a n/a INVALID n/a
Contains accessible info, but its role is not known n/a n/a UNKNOWN

Accessible States and Properties

Description & Notes MSAA State (STATE_SYSTEM_*) Java Accessibility State Gnome Accessibility State (ATK_STATE_*) Mac OS X Accessibility State ARIA State or property HTML attribute Tagged PDF Relevant XUL
Used in ARIA to denote non-conformant user input n/a n/a INVALID aria-invalid
This window is currently the active window n/a ACTIVE ACTIVE n/a
Identifies the currently active element when focus is on a composite widget, textbox, group, or application. n/a ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY aria-activedescendant
Critical info to convey immediately ALERT_HIGH n/a n/a aria-live=assertive
Info that's important, but does not require immediacy ALERT_MEDIUM n/a n/a aria-live=polite
Low-priority info such as a tip or hint ALERT_LOW n/a n/a n/a
This object is changing or moving rapidly ANIMATED n/a n/a n/a
Indicates that the user input is currently directed to that object and it is "armed for selection." Example: a highlighted menu item or a pressed push button. For receiving text input, see FOCUSED n/a ARMED ARMED available to javaScript as document.activeElement
Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. n/a n/a aria-atomic
Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made. n/a n/a aria-autocomplete
The control cannot accept input at this time. Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. BUSY BUSY BUSY aria-busy
Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. CHECKED CHECKED CHECKED aria-checked checked (boolean attribute)
Defines the total number of columns in a table, grid, or treegrid. n/a n/a aria-colcount
Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. n/a n/a aria-colindex
Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. n/a n/a aria-colspan
Identifies the element (or elements) whose contents or presence are controlled by the current element. n/a n/a aria-controls
Indicates the element that represents the current item within a container or set of related elements. n/a n/a aria-current
Identifies the element (or elements) that describes the object. n/a n/a aria-describedby
Identifies the element that provides a detailed, extended description for the object. n/a n/a aria-details
This is for expandable items that are not expanded, such as folded tree branches or accordions COLLAPSED COLLAPSED COLLAPSED aria-expanded=false Different from XUL's collapsed="true" attribute which indicates something is hidden
This is the default button or menu item DEFAULT n/a n/a
Identifies the element that provides an error message for the object. n/a n/a aria-errormessage
An item that has been expanded, such as a tree item or accordion EXPANDED EXPANDED EXPANDED aria-expanded=true
Indicates this object allows progressive disclosure of its children. n/a EXPANDABLE EXPANDABLE Implied by the presence of the aria-expanded attribute, regardless of value
Can extend selection EXTSELECTABLE n/a n/a
Not clipped to boundary of parent, does not auto-move with parent FLOATING n/a n/a
Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order. VERY POOR SUPPORT in user agents and ATs, and no sufficient techniques available n/a n/a aria-flowto
Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. Supported for anything that's not a menu is poor n/a n/a aria-haspopup
The item can get the keyboard focus FOCUSABLE FOCUSABLE FOCUSABLE tabindex attribute with value of 0 or more
The item has focus for text input. For other kinds of keyboard operation, e.g. UI controls, see ARMED FOCUSED FOCUSED FOCUSED available to javaScript as document.activeElement
Appearance has changed for mouseover HOTTRACKED n/a n/a
Especially used for sliders, scrollbars, toolbars, tablists... n/a HORIZONTAL HORIZONTAL aria-orientation=horizontal
Indicates whether the element is exposed to an accessibility API. Note the reversed logic in some APIs INVISIBLE VISIBLE VISIBLE aria-hidden hidden (boolean attribute)
Indicates whether the object is in an iconified or minimized state. Minimized n/a ICONIFIED ICONIFIED Can be expressed with aria-expanded
MARQUEED n/a n/a
3rd state in a tri-state checkbox MIXED n/a n/a aria-checked=mixed n/a
Must do something with control before leaving it n/a MODAL MODAL aria-modal=true
Edit control that can take multiple lines n/a MULTI_LINE MULTI_LINE aria-multiline=true
Can select more than one of the children MULTISELECTABLE MULTISELECTABLE MULTI_SELECTABLE aria-multiselectable=true
Currently off-screen OFFSCREENGROUPING n/a n/a n/a
Indicates that every pixel is painted within the object's rectangular region n/a OPAQUE OPAQUE n/a


(deprecated in favor of CSS background-color)

Object is currently pressed down. ARIA permits this only with button role PRESSED PRESSED PRESSED aria-pressed=true
For passwords PROTECTED n/a PASSWD_TEXT password role slated for ARIA 2.0
A portion of quoted content which is brief enough to appear 'inline'. (Compare with blockquote). n/a <q> <Quote>
Note the reversed logic in some APIs READONLY EDITABLE EDITABLE aria-readonly=true
This object is selected SELECTED SELECTED SELECTED aria-selected=true selected (boolean attribute)
For a button that is "consistent". The button is inconsistent when it will act on a group of objects (such as a list of mail messages) that are not in the same state. n/a n/a SENSITIVE
Don't speak for this item, it will take care of text-to-speech on its own SELFVOICING n/a n/a
Object can be resized n/a RESIZABLE RESIZABLE
This object and all of its ancestors are visible n/a SHOWING SHOWING
This text object can only contain 1 line of text n/a SINGLE_LINE SINGLE_LINE
Tells accessibility aid "Don't add event listener - this object doesn't generate any". For example, could be used with higher level containers. n/a TRANSIENT TRANSIENT The descendents of composite roles behave rather like this.
For grayed-out (disabled) vs. available (enabled) items. HTML attribute also removes element from tab sequence and 'grays it out'. ARIA attribute keeps it 'perceivable'. UNAVAILABLE ENABLED n/a aria-disabled=true disabled (boolean attribute)
Especially used for sliders and scrollbars n/a VERTICAL VERTICAL aria-orientation=vertical

Accessible Events

MSAA Event (EVENT_OBJECT_*, EVENT_SYSTEM_*) Java Accessibility Event Gnome Accessibility Signals Mac OS X Accessibility Event Description & Notes JavaScript Relevant XUL
FOCUS focus, focusin
blur, focusout
STATE_CHANGE change (not sure if this is the same thing?)