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.
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 menu item | MENUITEM | MENU_ITEM | MENU_ITEM | menuitem | ||||
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 |
MENUPOPUP | POPUP_MENU, MENU | POPUP_MENU, MENU | menu | ||||
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) |
SEPARATOR (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 | ||||
A toolbar | TOOLBAR | TOOL_BAR | TOOL_BAR | toolbar | ||||
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 | <br> |
|||
An interactive component of a graphical user interface. | n/a | n/a | widget (abstract role) | |||||
A window | WINDOW | WINDOW | WINDOW | window (abstract role) | ||||
I have no idea what the difference between these things are | n/a | INTERNAL_FRAME, OPTION_PANE, FRAME, DIRECTORY_PANE, ROOT_PANE, LAYERED_PANE, SCROLL_PANE, VIEWPORT | DESKTOP_FRAME, DIRECTORY_PANE, FRAME, LAYERED_PANE, OPTION_PANE, ROOT_PANE, SCROLL_PANE, VIEWPORT | |||||
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 |
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 can be selected | SELECTABLE | SELECTABLE | SELECTABLE | |||||
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 |
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 | ||||||
SELECTION | select | |||||
STATE_CHANGE | change (not sure if this is the same thing?) |