Accessibility API cross-reference

by 1 contributor:

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.

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            

 

Document Tags and Contributors

Contributors to this page: openjck
Last updated by: openjck,