Checkpoint 502.3.11: Actions on Objects

Applications shall allow assistive technology to programmatically execute available actions on objects.


This checkpoint is complementary to checkpoint 502.3.10 List of Actions, which requires that the list of executable actions offered by each software object be made available programmatically to assistive technology. This checkpoint, Actions on Objects, requires that assistive technology have the ability to execute all those supported actions without having the user resort to accessing the actions through a context menu, which would require extra steps.

This is especially beneficial for ATs that offer assistance to users with mobility impairment, such as voice control software or on-screen keyboards. Some examples of actions that could be supported include:

  • a combo box is opened when the user presses Enter, Spacebar or Alt+Down Arrow
  • a node in a flow diagram is opened when the user presses Enter or Spacebar
  • the same node is deleted via the Delete key or copied via Ctrl+C.

Note: If the list of executable actions has more than one action, the first one should be identified as the default action. (Reference: IAccessibleAction Interface specifications and AccessibleAction reference page in Mozilla Developer's Network.)

Development Techniques

Note: Review the General techniques as well as other tabs applicable to your technology.  Prioritize the use of technology-specific techniques, and implement the General techniques as needed. You are always required to find, understand and implement accessible code techniques to meet the checkpoint. The documented techniques and supplements are not exhaustive; they illustrate acceptable ways to achieve the spirit of the checkpoint. If numbered, techniques are in order of preference, with recommended techniques listed first.

General techniques

Each item in this section represents a technique or combination of techniques deemed sufficient.

  • Allowing assistive technologies (AT) to programmatically execute available actions on objects

Mobile Native (iOS) techniques

In addition to the General techniques, any item in this section represents a technique deemed sufficient where appropriate

Programmatically exposing all actions that can be executed on an object

Using standard controls from the UIKit framework exposes actions automatically.  Additional actions can be described using Hints and Traits.  See also UIKit Interface Catalog.

Add gesture-based actions

When gestures are assigned to a screen component, use the accessibilityCustomActions method to add the gesture-based actions to the component.

Eclipse techniques

In addition to the General techniques, the Eclipse techniques in this section represent a combination of techniques deemed sufficient.

Implementing AccessibleActionListener for control

Add an AccessibleActionListener to the Accessible information of the control and implement the methods of AccessibleActionListener. This enables an assistive technology to obtain the number of available actions, name and description of each action, and gives the AT the ability to execute an action on the control.

If the control supports more than one action, the first action (index 0) is the "default" action of the object.

toolBar.getAccessible().addAccessibleActionListener(new AccessibleActionAdapter() {
    public void getActionCount(AccessibleActionEvent e) {
        e.count = getActionCount();
    public void getName(AccessibleActionEvent e) {
        e.result = "Name of the action: " + getAction(e.index);

    public void getDescription(AccessibleActionEvent e) {
        e.result = "Description of the action: " + getAction(e.index);

    public void doAction(AccessibleActionEvent e) {
        e.result = ACC.OK;

Implementing AccessibleControlListener to return the default action.

Add an AccessibleControlListener to the Accessible information of the control and Implement getDefaultAction to return the provide information about the default action.

Note: When using simple SWT widgets, e.g., Button, the default action is already defined by the platform. This can be confirmed by examining the control with Inspect Objects.

toolBar.getAccessible().addAccessibleControlListener(new AccessibleControlAdapter() {
     public void getDefaultAction(AccessibleControlEvent e) {
        e.result = getAction(0);


Windows-based (MSAA+IA2) techniques

Instructions: In addition to the General techniques, refer to the Windows techniques tab in checkpoint 502.3.1 Object Information to learn about accessibility APIs, and use the following to support Windows accessibilty.

Implementing IAccessibleAction

Every accessible object that can be manipulated via the native GUI beyond the methods available either in the MSAA IAccessible interface or in the set of IAccessible2 interfaces (other than this IAccessibleAction interface) should support the IAccessibleAction interface in order to provide Assistive Technology access to all the actions that can be performed by the object. (Source: IAccessibleAction Interface reference at

Even if the object only supports a single action, it is still important to implement IAccessibleAction while the Microsoft Active Accessibility (MSAA) IAccessible interface provides access only to the default action without the user knowing exactly what the default action does.

Implementing get_accDefaultAction, accDoDefaultAction, and get_accKeyboardShortcut

It is important to continue to support MSAA IAccessible interface for ATs that require it. Implement get_accDefaultAction  and accDoDefaultAction methods of IAccessible to programmatically expose the default action of the control to assistive technology (AT) and allow AT to perform the default action for the control.

For all objects that have a shortcut key or an access key, implement the IAccessible::get_accKeyboardShortcut method to programmatically expose the specified object's shortcut key or access key, also known as the mnemonic.

Most links in this checklist reside outside at the Web Content Accessibility Guidelines (WCAG) 2.0. W3C Recommendation 11 December 2008:

Copyright © 1994-2017 World Wide Web Consortium, (Massachusetts Institute of Technology, European Research Consortium for Informatics and Mathematics, Keio University, Beihang University). All Rights Reserved.

Copyright © 2001, 2017 IBM Corporation