Getting Started with Accessibility

Technology Overview

Accessibility is the successful access to information and information technologies by people with disabilities. Apple supports accessibility with Universal Access, the collection of built-in Mac OS X features, technologies, and components that enable all users to enjoy the Macintosh experience. The developer part of Universal Access is the accessibility architecture, which supports the development of both assistive technologies and accessible applications.

A disabled person often uses one or more assistive technologies, such as a screen reader or specialized input device, to interact with an application. For this interaction to work, the application must be accessible, which means that it responds to an assistive technology in the same way it responds to a nondisabled user.

The Mac OS X accessibility architecture includes the Accessibility API. This API defines communication mechanisms for both accessible applications and assistive technologies. For applications, the Accessibility API defines an accessibility protocol that user-interface objects must implement to provide information about themselves to assistive technologies. For assistive technologies, the Accessibility API defines methods and functions the technology uses to manipulate the user interface of an accessible application.

Start Here

Before you begin developing with accessibility in mind, become familiar with accessibility for the Macintosh. You should look at:

  • The Apple Accessibility webpage.

  • The Universal Access features in Mac OS X version 10.2 and later. You can also view these features in a running Mac OS X system by selecting Universal Access in System Preferences.

  • Information on third-party assistive technologies available for Macintosh computers (software, general hardware, and input devices).

  • Accessibility Overview for an introduction to the Mac OS X accessibility architecture and how it's used by applications and devices.

Choose a Learning Path

If you’re developing an application for Mac OS X, you want to make sure it is accessible to users who may interact with it through built-in Mac OS X or third-party assistive technologies. If you’re developing an assistive application or device, you need to know how to communicate with accessible applications running in Mac OS X.

Developing Applications

If you’re developing an application in Cocoa, Carbon, or Java, you want to make sure that users can manipulate your application's user interface using assistive technologies. Regardless of the development framework you choose, first read "Keep Your Users in Mind" in Apple Human Interface Guidelines to learn about some of the accessibility issues that should inform your application design.

  • If you’re developing a Cocoa application, very little work is required when you use standard Cocoa classes because they build in accessibility support. If you’re using subclassed user-interface elements that have special behavior, you’ll have to write additional code to make sure your custom widgets implement the accessibility protocol. Read Accessibility Programming Guidelines for Cocoa to learn how to make your Cocoa application accessible.

  • If you’re developing a Carbon application, you’ll find that standard Carbon controls, windows, and menus build in accessibility support. If you use custom elements in your application, you can add function calls to support accessibility by implementing additional Carbon events. If you are using your own text engine, you can add code to support parameterized text queries. Read Accessibility Programming Guidelines for Carbon to find out how to make your Carbon application accessible.

  • If you’re developing Java applications, you don’t need the Java Accessibility Bridge required for other platforms, because it is built into the Java 2, Standard Edition implementation in Mac OS X. You can take advantage of the built-in accessibility support of the standard Java windowing models (AWT and Swing). See the javax.accessibility API reference available from Sun’s Java website.

Developing Assistive Technologies

You want to make sure that your assistive application or device adopts Apple’s Accessibility API. Using this API, you can manipulate Carbon, Cocoa, and Java applications though a framework-agnostic communication system.

  • To write an assistive application, you can use any of the Mac OS X development frameworks. Apple recommends that you use Cocoa to simplify the development process.

  • To integrate assistive hardware (joysticks, Braille readers, and so on), you should use USB or FireWire rather than older serial or PS/2 interfaces. By adhering to standards outlined for these I/O technologies (for example, the HID specification for USB devices), you simplify your work. For documentation on accessing a specific type of device, see the appropriate topic (such as USB) in Hardware & Drivers Guides.

  • If you want to leverage other Mac OS X technologies to keep assistive applications active but not intrusive, read "Keep Your Users in Mind" in Apple Human Interface Guidelines.

Next Steps

The Accessibility Reference Library includes the following resource pages, which can be bookmarked for easy access:

  • Guides

    Conceptual and how-to information about accessibility.

  • Reference

    Focused, detailed descriptions in reference format for accessibility.

  • Release Notes

    Late-breaking documents on issues related to accessibility.

  • Sample Code

    Sample applications demonstrating the use of accessibility APIs.

  • Technical Notes

    Supplementary documentation on specific subjects related to accessibility.

  • Technical Q&As

    Programming tips, code samples, and FAQs by Apple’s support engineers.

  • Mailing Lists

    The accessibility-dev mailing list is an excellent place to discuss programming for accessibility with fellow developers.

© 2004, 2007 Apple Inc. All Rights Reserved. (Last updated: 2007-12-11)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.