AT APIs Support
This documentation explains how makers of screen readers, voice dictation packages, onscreen keyboards, magnification software and other assitive technologies can support Gecko-based software. We provide for them the support of these products on Windows, Linux/Unix and OS X platforms.
Gecko can be used in two ways to create application:
Embedded clients use Gecko only in the content window, at the moment for HTML and generic XML only. They typically use standard Windows controls for their user interface -- the area outside of the client content window, plus the context menu.
- on Windows platform
- MFCEMBED testing client - this is a very simple package, great for testing basic HTML accessibility with your products and the Gecko rendering engine (please contact us for a copy).
- K-Meleon - light, ultra-fast and more advanced (fully configurable) Gecko-based web browser available on the Windows platform
- on Linux/Unix platform
- on Mac platform
- Camino - web browser for OS X
XUL applications make full use of the Gecko architecture, not only for HTML content, but also for the entire user interface. Widgets such as menus, tab panels, tree views and dialogs are provided via an XML language called XUL (eXtensible User-interface Language). None of the user interface contains standard OS controls. This is done to ensure a common look and feel across all supported platforms, and to allow for different skins (appearances). Developing a XUL window is not that different from developing a web page, but the elements available to add widgets are more powerful and designed to be similar to desktop widgets.
Examples of XUL applications:
- Firefox - web-browser
- Thunderbird - email client
- Seamonkey - web-browser, advanced e-mail and newsgroup client, IRC chat client, and HTML editing made simple
- Sunbird - cross-platform calendar application
- KompoZer - a complete Web Authoring System for Linux Desktop, Microsoft Windows and Macintosh users to rival programs like FrontPage and Dreamweaver.
- Open Komodo - platform for building developer environments
- Miro - a free, open source internet tv and video player
- Any XulRunner application (Songbird media player, etc.)
- Extensions to other XUL apps (e.g. Firefox extensions)
For Firefox and all other Gecko-based products: this documentation applies to up-to-date product builds based on Gecko 1.9.2 -- currently not available on official releases. However most of described features are supported starting from Gecko 1.9.0 (Firefox 3.0). However it's preferable to grab the current build of Firefox or any other Gecko-based product to be up to dated:
Accessibility is enabled on Windows and Linux platforms by default. As well you might find helpful the about:accessibilityenabled Firefox extension.
- Microsoft Active Accessibility (MSAA)
- an API devised by Microsoft so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand MSAA, you'll need to read the docs on MSDN and play with the sample apps and code that come with MSAA SDK 1.3. (I recommend SDK 1.3 because the MSAA SDK 2.0 doesn't come with the source code to the testing tools. The other differences are not important).
- IAccessible2 (IA2)
- IAccessible2 is a new accessibility API which complements Microsoft's earlier work on MSAA. This API fills critical accessibility API gaps in the MSAA offering.
- Assistive Technology Service Provider Interface (AT-SPI)
- an API devised by Sun Microsystems so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand AT-SPI, you'll need to read the docs on gnome.org and play with the available sample apps and code, such as at-poke. Please note that the web docs are sometimes out of date, and the latest AT-SPI is available on CVS.
- Universal Access (UA)
- Universal Access (UA) is the Apple's accessibility framework.
We support MSAA (Microsoft Active Accessibility) and IAccessible2 on Windows. Also we expose MS COM interfaces ISimpleDOM* to provide an access to DOM tree.
IAccessible2 is a set of interfaces that overlay the MSAA (IAccessible) and DOM (ISimpleDOM*) interface support. Any object that supports IAccessible will also support IAccessible2 and possibly any of the other IA2 interfaces.
We support ATK/AT-SPI interfaces on Linux.
We currently support only a subset of Universal Access. The rest of the Mozilla Universal Access support is in progress.
Gecko exposes the number of XML languages including HTML to AT. Refer to accessible web specifications page to learn what and how markup languages are exposed.
Refer to implementation details page to see how Gecko supports interesting AT API. There you will find information how AT API interfaces, roles, states and etc are mapped into Gecko accessibility API and visa versa.
Fortunately, Gecko uses the standard keyboard API's for each supported platform. The Mozilla keyboard shortcuts for content are similar to what is used in other browsers. Here is a list of Firefox keyboard shortcuts.
Here you will find a list of tools to test accessibility Gecko-based applications.
- MSAA SDK tools - version 1.3 is recommended instead of 2.0 because it includes source code for the tools
- Accessibility Probe -- includes MSAA support as well
- Accerciser - interactive Python accessibility explorer for the GNOME desktop
- DOM Inspector has an ability to test Gecko accessibility layer, supports base features.
Here's a list of screen readers we are oriented to in the first place.