- === How to Develop Accessible Linux Applications ===
SharonSnidersnidersd@us.ibm.com
[mailto:snidersd@us.ibm.com snidersd@us.ibm.com] snidersd@us.ibm.com Publication date: v1.1, 2002-05-03This document provides Linux software developers with guidelines and test cases for developing accessible Linux applications. This document provides Linux software developers with guidelines and test cases for developing accessible Linux applications.
Revision History: ||
v1.1||2002-05-03||sds||Converted to DocBook XML and updated broken links.v1.12002-05-03sdsConverted to DocBook XML and updated broken links. ||v1.0||2002-01-28||sds||Wrote and converted to DocBook SGML.v1.02002-01-28sdsWrote and converted to DocBook SGML. === Introduction ===
This document provides developers with the information necessary to assess their applications for accessibility. Some of these tests should be performed using various types of adaptive technologies. This document provides developers with the information necessary to assess their applications for accessibility. Some of these tests should be performed using various types of
[http://www.ibiblio.org/pub/Linux/docs/HOWTO/Accessibility-HOWTO adaptive technologies] adaptive technologies. Please send any comments, or contributions via e-mail to Sharon Snider. This document will be updated regularly with new contributions and suggestions.Please send any comments, or contributions via e-mail to [mailto:snidersd@us.ibm.com Sharon Snider]
- Sharon Snider.
This document will be updated regularly with new contributions and suggestions.
- === Developing Accessible Applications ===
Some of the most important reasons for developing accessible software are:Some of the most important reasons for developing accessible software are:Software should be accessible to as many users as possible.Software should be accessible to as many users as possible.Accessibility to new products benefits everyone. Information technology has provided many benefits to society. However, individuals with disabilities can not participate fully when the technology does not meet the needs of users with disabilities.Accessibility to new products benefits everyone. Information technology has provided many benefits to society. However, individuals with disabilities can not participate fully when the technology does not meet the needs of users with disabilities.Compliance with worldwide regulations and standards such as Section 508 of the Rehabilitation Act, Americans with Disabilities Act and the World Wide Web Consortium's Web Accessibility Initiative.Compliance with worldwide regulations and standards such as
[http://www.section508.gov/ Section 508 of the Rehabilitation Act] Section 508 of the Rehabilitation Act, [http://www.usdoj.gov/crt/ada/adahom1.htm Americans with Disabilities Act] Americans with Disabilities Act and [http://www.w3.org/WAI/Policy the World Wide Web Consortium's Web Accessibility Initiative] the World Wide Web Consortium's Web Accessibility Initiative. === Principles for Developing Accessible Applications ===
Developers need to consider the following needs of disabled users when developing an accessible application: Developers need to consider the following needs of disabled users when developing an accessible application: Choice of input methods. Support should be available for various types of input, such as, keyboard, mouse and adaptive technologies. Pay close attention to keyboard navigation.Choice of input methods. Support should be available for various types of input, such as, keyboard, mouse and adaptive technologies. Pay close attention to keyboard navigation.Choice of output methods. Support should be available for various types of output, such as, visual display, audio, and print. The main focus is that text labels are provided for all user interface elements and objects, graphics, and icons.Choice of output methods. Support should be available for various types of output, such as, visual display, audio, and print. The main focus is that text labels are provided for all user interface elements and objects, graphics, and icons.Consistency and flexibility with the user's system configuration. In addition, include customization options so the user can select color, font, and layout of the work area.Consistency and flexibility with the user's system configuration. In addition, include customization options so the user can select color, font, and layout of the work area.
- === Guidelines for Developing Accessible Applications ===
- The following sections contain guidelines and tests that developers can use to create more accessible applications. Use Pass, Fail, or Pending as a rating system for each item. The following sections contain guidelines and tests that developers can use to create more accessible applications. Use Pass, Fail, or Pending as a rating system for each item.
- === Keyboard Navigation === === Guidelines ===
The following keyboard navigation settings and sequences can cause accessibility problems. You should confirm that:The following keyboard navigation settings and sequences can cause accessibility problems. You should confirm that:Efficient keyboard access is provided to application features.Efficient keyboard access is provided to application features.A logical keyboard navigation order has been implemented.A logical keyboard navigation order has been implemented.The correct tab order is used for controls that are dependent on check boxes, radio buttons, or toggle state.The correct tab order is used for controls that are dependent on check boxes, radio buttons, or toggle state.Keyboard access does not override existing accessibility features.Keyboard access does not override existing accessibility features.The application provides more than one method to perform keyboard tasks whenever possible.The application provides more than one method to perform keyboard tasks whenever possible.There are alternate key combinations whenever possible.There are alternate key combinations whenever possible.There are no awkward reaches for frequently performed keyboard operations.There are no awkward reaches for frequently performed keyboard operations.The application does not use repetitive, simultaneous key presses.The application does not use repetitive, simultaneous key presses.The application provides keyboards equivalents for all mouse functions.The application provides keyboards equivalents for all mouse functions.The application does not use any general navigation functions to trigger operations.The application does not use any general navigation functions to trigger operations.All the keyboard invoked menus, windows, and tool tips appear near the object they relate to.All the keyboard invoked menus, windows, and tool tips appear near the object they relate to.
- === Tests ===
Run the following keyboard tests without using the mouse for all actions. Using only the keyboard commands, move the focus through all menus in the application. You should verify that:Run the following keyboard tests without using the mouse for all actions. Using only the keyboard commands, move the focus through all menus in the application. You should verify that:Context sensitive menus display correctly.Context sensitive menus display correctly.Any functions listed on the tool bar can be performed using the keyboard.Any functions listed on the tool bar can be performed using the keyboard.You can operate every control in the client area of the application and dialog boxes.You can operate every control in the client area of the application and dialog boxes.Text and objects within the application can be selected.Text and objects within the application can be selected.Any keyboard enhancements or shortcuts are working as designed.Any keyboard enhancements or shortcuts are working as designed.
- === Mouse Interaction === === Guidelines ===
The following are mouse button actions and sequences that cause accessibility problems. You should confirm that:The following are mouse button actions and sequences that cause accessibility problems. You should confirm that:There is no input dependent on mouse button two or three.There is no input dependent on mouse button two or three.All mouse operations can be canceled.All mouse operations can be canceled.There is visual feedback throughout a drag and drop operation.There is visual feedback throughout a drag and drop operation.
- === Graphical Elements and Objects === === Guidelines ===
The following are graphical element attributes, object attributes, and naming conventions that are needed for accessibility. You should confirm that:The following are graphical element attributes, object attributes, and naming conventions that are needed for accessibility. You should confirm that:There are no hard-coded graphical attributes, such as, lines, borders, or shadow thickness.There are no hard-coded graphical attributes, such as, lines, borders, or shadow thickness.There are descriptive names for all application program interface (API) objects.There are descriptive names for all application program interface (API) objects.All multi-color graphical elements can be adjusted to monochrome only, whenever possible.All multi-color graphical elements can be adjusted to monochrome only, whenever possible.All interactive graphical user interface (GUI) elements are easily identifiable.All interactive graphical user interface (GUI) elements are easily identifiable.An option to hide non-essential graphics has been provided.An option to hide non-essential graphics has been provided.
- === Tests ===
Test the application using a screen reader and verify that:Test the application using a screen reader and verify that:Labels and text are being read correctly, including menus and tool bars.Labels and text are being read correctly, including menus and tool bars.Object information is read correctly.Object information is read correctly.
- === Fonts and Text === === Guidelines ===
The following are font and text styles, attributes, and labels that cause accessibility problems. You should confirm that:The following are font and text styles, attributes, and labels that cause accessibility problems. You should confirm that:All the font styles and sizes are not hard-coded.All the font styles and sizes are not hard-coded.An option to turn off graphical backdrops has been provided.An option to turn off graphical backdrops has been provided.All label objects have names that make sense when taken out of context.All label objects have names that make sense when taken out of context.There are no label names that have been used more than once in the same window.There are no label names that have been used more than once in the same window.There is consistency with label positioning throughout the application.There is consistency with label positioning throughout the application.When using static text as a label for a control, the label immediately precedes the control in tab order.When using static text as a label for a control, the label immediately precedes the control in tab order.An alternative to what you see is what you get (WYSIWYG) is provided.An alternative to what you see is what you get (WYSIWYG) is provided.
- === Tests ===
Run the following tests to confirm that font size and settings are maintained.Run the following tests to confirm that font size and settings are maintained.Change the font in the application and confirm that the changes apply only to the application and not the desktop environment.Change the font in the application and confirm that the changes apply only to the application and not the desktop environment.Change colors within the application and confirm that the changes apply only to the application and not the desktop environment.Change colors within the application and confirm that the changes apply only to the application and not the desktop environment.Run a screen magnification program and test the font, color, and size of text when being viewed through a magnifier.Run a screen magnification program and test the font, color, and size of text when being viewed through a magnifier.
- === Color and High Contrast Settings === === Guidelines ===
The following are color and high contrast guidelines for the application environment. You should confirm that:The following are color and high contrast guidelines for the application environment. You should confirm that:The application color is not hard-coded and can be changed.The application color is not hard-coded and can be changed.Color is used as an enhancement and not the only way to convey information.Color is used as an enhancement and not the only way to convey information.The application supports various high contrast settings (For example, black on white, or white on black).The application supports various high contrast settings (For example, black on white, or white on black).The application is not dependent on a particular high contrast setting.The application is not dependent on a particular high contrast setting.
- === Tests ===
Run the following tests and verify that:Run the following tests and verify that:All information is available by printing a screen shot to a black and white printer.All information is available by printing a screen shot to a black and white printer.All information is conveyed correctly when settings are set to only black and white or high contrast.All information is conveyed correctly when settings are set to only black and white or high contrast.At least three high contrast schemes are available, and they function correctly.At least three high contrast schemes are available, and they function correctly.High contrast settings in the desktop environment are respected by the application (For example, the window bar and font colors that are set by the desktop environment do not change).High contrast settings in the desktop environment are respected by the application (For example, the window bar and font colors that are set by the desktop environment do not change).
- === Magnification === === Guidelines ===
The following magnification functions should be built into the application. You should confirm that:The following magnification functions should be built into the application. You should confirm that:The application provides the ability to magnify the work area.The application provides the ability to magnify the work area.The application has the option to scale the work area.The application has the option to scale the work area.The applications not adversely effected by changing the magnification settings.The applications not adversely effected by changing the magnification settings.
- === Audio === === Guidelines ===
The following are guidelines for audio output. Using a screen reader, confirm that:The following are guidelines for audio output. Using a screen reader, confirm that:The user can hear all required audio output.The user can hear all required audio output.Audio is not the only means that the information is conveyed. Audio is not the only means that the information is conveyed. The user can configure frequency and volume on all audio alerts and sounds.The user can configure frequency and volume on all audio alerts and sounds.
- === Tests ===
The application should have an option to show audio alerts and sounds visually. Test that the audio is working correctly with sound enabled. Verify that:The application should have an option to show audio alerts and sounds visually. Test that the audio is working correctly with sound enabled. Verify that:The application is working as designed when the user performs an action that generates an audio alert.The application is working as designed when the user performs an action that generates an audio alert.The application works correctly when increasing or decreasing the volume.The application works correctly when increasing or decreasing the volume.Warning messages and alerts can be heard correctly in a noisy work environment.Warning messages and alerts can be heard correctly in a noisy work environment.
- === Animation === === Guidelines ===
The following are guidelines for all animation that is included in the application. You should confirm that:The following are guidelines for all animation that is included in the application. You should confirm that:There are no blinking elements with a frequency greater then 2 Hertz (Hz) and lower then 55Hz.There are no blinking elements with a frequency greater then 2 Hertz (Hz) and lower then 55Hz.There are no large areas that flash or blink.There are no large areas that flash or blink.
- === Tests ===
Run the following tests on applications that include animation. You should verify that:Run the following tests on applications that include animation. You should verify that:An option is available to stop or turn off animation.An option is available to stop or turn off animation.When the animation is turned off it is working correctly.When the animation is turned off it is working correctly.
- === Focus === === Guidelines ===
Focus is determined by the location of the cursor as the user moves through the application or display panels. The following are guidelines for focus within the application. You should confirm that:Focus is determined by the location of the cursor as the user moves through the application or display panels. The following are guidelines for focus within the application. You should confirm that:Focus starts at the most commonly used controls.Focus starts at the most commonly used controls.The current input focus is clearly displayed at all times.The current input focus is clearly displayed at all times.The input focus is in the active display panel.The input focus is in the active display panel.The appropriate feedback is provided when the user attempts to navigate past the end of a group of related objects.The appropriate feedback is provided when the user attempts to navigate past the end of a group of related objects.The default audio alert is played when the user presses an inappropriate key.The default audio alert is played when the user presses an inappropriate key.
- === Visual Focus Indicator === === Guidelines ===
The visual focus indicator tells the user the position of the cursor and provides enough information, so the user understands what to do next. The following are guidelines for the visual focus indicator. You should confirm that:The visual focus indicator tells the user the position of the cursor and provides enough information, so the user understands what to do next. The following are guidelines for the visual focus indicator. You should confirm that:There is sufficient audio information for the visual focus indicator, so the user can figure out what to do next.There is sufficient audio information for the visual focus indicator, so the user can figure out what to do next.Screen readers and Braille devices can confirm the current cursor position within the application and read the content of the visual focus indicator.Screen readers and Braille devices can confirm the current cursor position within the application and read the content of the visual focus indicator.
- === Tests ===
Test the following using a screen reader or Braille device. You should verify that:Test the following using a screen reader or Braille device. You should verify that:When moving among objects the visual focus indicator is easy to identify. When moving among objects the visual focus indicator is easy to identify. Keyboard navigation through the application menus is clearly visible when the focus moves.Keyboard navigation through the application menus is clearly visible when the focus moves.The screen reader or Braille device is tracking the visual focus indicator as you navigate using a keyboard.The screen reader or Braille device is tracking the visual focus indicator as you navigate using a keyboard.When running a screen magnification program that the magnifier can track the visual focus indicator accurately as you navigate using the keyboard and mouse.When running a screen magnification program that the magnifier can track the visual focus indicator accurately as you navigate using the keyboard and mouse.
- === Timing === === Guidelines ===
The following guidelines apply to timing options built-in to the application. You should confirm that:The following guidelines apply to timing options built-in to the application. You should confirm that:There are no hard-coded timeouts or other time-based features.There are no hard-coded timeouts or other time-based features.There are no objects that display briefly and then hide information based on the movement of the mouse pointer.There are no objects that display briefly and then hide information based on the movement of the mouse pointer.
- === Tests ===
Test the following for timing related to your application. You should verify that:Test the following for timing related to your application. You should verify that:The user is notified before a message times out and is given the option to indicate that more time is needed.The user is notified before a message times out and is given the option to indicate that more time is needed.An option is available to adjust the response time and confirm that it is working as designed.An option is available to adjust the response time and confirm that it is working as designed.
- === Documentation === === Guidelines ===
The following are guidelines for writing accessible documentation:The following are guidelines for writing accessible documentation:All documentation is in an accessible format (For example, HTML, or text).All documentation is in an accessible format (For example, HTML, or text).Documentation is available on all accessibility features of the application.Documentation is available on all accessibility features of the application.State if the application does not support the standard keyboard access that is used by the operating system.State if the application does not support the standard keyboard access that is used by the operating system.Identify if there are unique keyboard commands.Identify if there are unique keyboard commands.Identify and explain all accessibility features.Identify and explain all accessibility features.When documenting mouse actions, include the alternative keyboard action as well.When documenting mouse actions, include the alternative keyboard action as well.
- === Tests ===
Run the following test to verify that the documentation is available and accessible.Run the following test to verify that the documentation is available and accessible.Open a help file while in the application using a screen reader or Braille device and confirm the information is accessible, clear, and precise.Open a help file while in the application using a screen reader or Braille device and confirm the information is accessible, clear, and precise.
- === Additional Resources: ===
- The following Web sites provide checklists and testing information that is more specific to the various Linux development environments: The following Web sites provide checklists and testing information that is more specific to the various Linux development environments:American Foundation for the Blind provides information on creating accessible applications at .American Foundation for the Blind provides information on creating accessible applications at
- GNOME Accessibility Project has written a guide specifically for application development in the GNOME 2.0 desktop. It includes information using their Accessibility Tool Kit (ATK). Additional information is available at .GNOME Accessibility Project has written a guide specifically for application development in the GNOME 2.0 desktop. It includes information using their Accessibility Tool Kit (ATK). Additional information is available at
[http://developer.gnome.org/projects/gap/guide/gad/index.html ]
- IBM Accessibility Center provides links to a Java, Web, and Software accessibility checklist for application development. This site is located at .IBM Accessibility Center provides links to a Java, Web, and Software accessibility checklist for application development. This site is located at
- Sun Accessibility provides accessibility information on designing accessible Java applications. More information is available at .Sun Accessibility provides accessibility information on designing accessible Java applications. More information is available at
- The Web Accessibility Initiative Web site includes guidelines, checklists, and techniques for developing accessible Web sites and applications. Additional information is located at .The Web Accessibility Initiative Web site includes guidelines, checklists, and techniques for developing accessible Web sites and applications. Additional information is located at
![[LDP]](/moin_static184/ldp/tldp.png)
