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.
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.
Contents
To do
- Fill out Mac API column.(Mac OS X - Carbon Accessibility API and Accessibility Constants)
- Fill out HTML column
- Fill out XUL column.
- Create 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
MSAA Role (ROLE_SYSTEM_*) | Java Accessibility Role | Gnome Accessibility Role (ATK_ROLE_*) | Mac OS X Accessibility Role | Description and Notes | Relevant HTML | Relevant XUL |
---|---|---|---|---|---|---|
ALERT | ALERT | ALERT | For alerts, in Java/Gnome for any alert, in MSAA if no other role applies | |||
ANIMATION | n/a | no spec | Content changes over time, such as animated gif | |||
APPLICATION | FRAME | n/a | Object representing entire app | |||
BORDER | n/a | n/a | Entire window border as 1 object | |||
BUTTONDROPDOWN | n/a | n/a | Specific kind of button that drops down a list of items, MSAA only | |||
BUTTONDROPDOWNGRID | n/a | n/a | Specific kind of button that drops down a grip, MSAA only | |||
BUTTONMENU | n/a | n/a | Specific kind of button that drops down a menu, MSAA only | |||
CARET | n/a | n/a | Represents the system's caret | |||
CELL | n/a | TABLE_CELL | A cell in a table | |||
CHARACTER | n/a | n/a | Not what you think - this is for the damn paperclip | |||
CHART | n/a | For graphics representing data | ||||
CHECKBUTTON | CHECK_BOX | CHECK_BOX | A checkbox; good example of arbitrary naming difference | |||
CLOCK | n/a | n/a | Pretty obvious what this is for | |||
COLUMN | n/a | n/a | Column of cells in a table - how would the user specifically point to this, as opposed to the column header or cells? | |||
COLUMNHEADER | COLUMN_HEADER | COLUMN_HEADER, TABLE_COLUMN_HEADER | The heading of a table's column | |||
COMBOBOX | COMBO_BOX | COMBO_BOX | Edit control with drop down list box, different from DROPLIST | |||
CURSOR | n/a | n/a | The mouse pointer - when and how is this used? | |||
(n/a - use either PUSHBUTTON or LISTITEM) | DESKTOP_ICON | DESKTOP_ICON | Iconified version of an app | |||
DIAGRAM | n/a | n/a | A specific kind of a graphic - a diagram. Not defined anywhere on web. | |||
DIAL | n/a | n/a | A dial or a knob. MSAA only. | |||
DIALOG | DIALOG | DIALOG | A dialog or message box. | |||
DOCUMENT | n/a | n/a | Window that corresponds to an MDI document | |||
DROPLIST | n/a | n/a | A drop down list, different from COMBOBOX | |||
EQUATION | n/a | n/a | For math & chemistry | |||
GRAPHIC | n/a | n/a | How can this only exist for MSAA? | |||
GRIP | n/a | n/a | A type of mouse pointer used for resizing windows | |||
GROUPING | PANEL | PANEL | Probably a group box (titledbox in mozilla) | |||
HELPBALLOON | n/a | n/a | Click on this thing and then click on the item for tooltip style help | |||
HOTKEYFIELD | n/a | n/a | Editable field that allows user to assign a key combination | |||
INDICATOR | n/a | n/a | Graphic that indicates something, such as an arrow | |||
LINK | n/a | Hypertext link that can be on image or text | ||||
LIST | LIST | LIST | A list that allows more than 1 selection | |||
LISTITEM | n/a | LIST_ITEM | An item in a list | |||
MENUBAR | MENU_BAR | MENU_BAR | The main menu bar below the app's title bar | |||
MENUITEM | MENU_ITEM | MENU_ITEM | A menu item | |||
MENUPOPUP | POPUP_MENU, MENU | POPUP_MENU, MENU |
Any menu other than the menu bar Java: MENU is for pull-downs, POPUP_MENU for all others |
|||
OUTLINE | TREE | TREE | A tree with expandable & collapseable elements | |||
OUTLINEITEM | n/a | n/a | A tree item | |||
PAGETAB | PAGE_TAB | PAGE_TAB | A tab in a tabbed tialog box | |||
PAGETABLIST | PAGE_TAB_LIST | PAGE_TAB_LIST | The container of the page tab controls | |||
PANE | n/a | A pane or frame in the current window | ||||
PROGRESSBAR | PROGRESS_BAR | n/a | Shows percentage completion for task | |||
PROPERTYPAGE | n/a | n/a | Page showing properties of something | |||
PUSHBUTTON | PUSH_BUTTON | PUSH_BUTTON | Your average, run-of-the-mill button | |||
RADIOBUTTON | RADIO_BUTTON | RADIO_BUTTON | No surprises here, only 1 in group is selectable | |||
ROW | n/a | n/a | Represents the an row in a table | |||
ROWHEADER | ROW_HEADER | ROW_HEADER, TABLE_ROW_HEADER | A table row header | |||
SCROLLBAR | SCROLL_BAR | SCROLL_BAR | vertical or horizontal scrollbar | |||
SEPARATOR (either in menu or splits panes) |
SEPARATOR (in menu only) |
SEPARATOR | A line that splits 2 areas from each other | |||
SLIDER | SLIDER | SLIDER | Adjust in increments from min to max values | |||
SOUND | n/a | n/a | A system sound | |||
SPINBUTTON | n/a | n/a | Kind of like a dial, but controls the value in a related field | |||
STATICTEXT | LABEL | LABEL | Uneditable text | |||
STATUSBAR | n/a | n/a | Entire status bar | |||
TABLE | TABLE | TABLE | Represents an entire table | |||
TEXT | TEXT | TEXT | Text that might be editable, depending on state | |||
TITLEBAR | n/a | n/a | Title or caption of window | |||
n/a | TOGGLE_BUTTON | TOGGLE_BUTTON | A button that can be pushed in or out, but doesn't provide separate indicator of checked state | |||
TOOLBAR | TOOL_BAR | TOOL_BAR | A toolbar | |||
TOOLTIP | TOOL_TIP | TOOL_TIP | The little piece of help text that comes up when you put your mouse over something | |||
WHITESPACE | FILLER | FILLER | Nothing to see here ... move along | |||
WINDOW | WINDOW | WINDOW | A window | |||
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 | I have no idea what the difference between these things are | |||
INTERNAL_FRAME |
INTERNAL_FRAME, | A window in an MDI applicaton | ||||
GLASS_PANE | GLASS_PANE | Invisible layer z-indexed to the front, for temporary content. E.g., tooltips may be drawn on the glass pane layer. |
||||
SPLIT_PANE | SPLIT_PANE | Multiple adjacent panes that can be sized reletive to each other by dragging a grippy on their border |
||||
n/a | n/a | CANVAS | An object that can be drawn into and is used to trap events | |||
n/a | COLOR_CHOOSER | COLOR_CHOOSER | A dialog for picking a color | |||
n/a | FILE_CHOOSER | FILE_CHOOSER | A dialog for picking a file | |||
n/a | n/a | INVALID | No explanation given | |||
n/a | n/a | UNKNOWN | Contains accesible info, but its role is not known |
Accessible States
MSAA State (STATE_SYSTEM_*) | Java Accessibility State | Gnome Accessibility State (ATK_STATE_*) | Mac OS X Accessibility State | Description & Notes | Relevant HTML | Relevant XUL |
---|---|---|---|---|---|---|
n/a | n/a | INVALID | No explanation given | |||
n/a | n/a | ACTIVE | This window is currently the active window | |||
ALERT_HIGH | n/a | n/a | Critical info to convey immediately | |||
ALERT_MEDIUM | n/a | n/a | Info that's important, but does not required immediacy | |||
ALERT_LOW | n/a | n/a | Low-priority info such as a tip or hint | |||
ANIMATED | n/a | n/a | This object is changing or moving rapidly | |||
n/a | ARMED | ARMED | Not sure what this is for, similar to PRESSED? | |||
BUSY | BUSY | BUSY | The control cannot accept input at this time | |||
CHECKED | CHECKED | CHECKED | Used for any kind of toggle or radio button | |||
COLLAPSED | COLLAPSED | COLLAPSED | This is for expandable items that are not expanded | Different from XUL's collapsed="true" attribute which indicates something is hidden | ||
DEFAULT | n/a | n/a | This is the default button or menu item | |||
EXPANDED | EXPANDED | EXPANDED | An item that has been expanded, such as a tree item with visible children | |||
n/a | EXPANDABLE | EXPANDABLE | An item that can be expanded, such as a tree item with children | |||
EXTSELECTABLE | n/a | n/a | Can extend selection | |||
FLOATING | n/a | n/a | Not clipped to boundary of parent, does not auto-move with parent | |||
FOCUSABLE | FOCUSABLE | FOCUSABLE | The item can get the keyboard focus | |||
FOCUSED | FOCUSED | FOCUSED | The item has the keyboard focus | |||
HOTTRACKED | n/a | n/a | Appearance has changed for mouseover | |||
n/a | HORIZONTAL | HORIZONTAL | Especially used for sliders and scrollbars | |||
INVISIBLE | VISIBLE | VISIBLE | MS and Sun are opposite here | |||
n/a | ICONIFIED | ICONIFIED | Minimized | |||
MARQUEED | n/a | n/a | ||||
MIXED | n/a | n/a | 3rd state in a tri-state checkbox | |||
n/a | MODAL | MODAL | Must do something with control before leaving it | |||
n/a | MULTI_LINE | MULTI_LINE | Edit control that can take multiple lines | |||
MULTISELECTABLE | MULTISELECTABLE | MULTI_SELECTABLE | Can select more than one of the children | |||
OFFSCREENGROUPING | n/a | n/a | Currently off-screen | |||
n/a | OPAQUE | OPAQUE | Indicates that every pixel is painted within the object's rectangular region | |||
PRESSED | PRESSED | PRESSED | Object is currently pressed down | |||
PROTECTED | n/a | PASSWD_TEXT | For passwords | |||
READONLY | EDITABLE | EDITABLE | MSAA opposite Sun here | |||
SELECTABLE | SELECTABLE | SELECTABLE | This object can be selected | |||
SELECTED | SELECTED | SELECTED | This object is selected | |||
n/a | n/a | SENSITIVE | 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. | |||
SELFVOICING | n/a | n/a | Don't speak for this item, it will take care of text-to-speech on it's own | |||
n/a | RESIZABLE | RESIZABLE | Object can be resized | |||
n/a | SHOWING | SHOWING | This object and all of it's ancestors are visible | |||
n/a | SINGLE_LINE | SINGLE_LINE | This text object can only contain 1 line of text | |||
n/a | TRANSIENT | TRANSIENT | Tells accessibility aid "Don't add event listener - this object doesn't generate any". For example, could be used with higher level containers. | |||
UNAVAILABLE | ENABLED | n/a | For greyed out vs. available items (I think). Are these opposites? | |||
n/a | VERTICAL | VERTICAL | Especially used for sliders and scrollbars |
Accessible Events
MSAA Event (EVENT_OBJECT_*, EVENT_SYSTEM_*) | Java Accessibility Event | Gnome Accessibility Signals | Mac OS X Accessibility Event | Description & Notes | Relevant HTML | Relevant XUL |
---|---|---|---|---|---|---|
FOCUS | ||||||
SELECTION | ||||||
STATE_CHANGE |