 | Hypatia Rojas (hrojas@us.ibm.com), Software Engineer, IBM Sanaa Abdelhadi (sabdelha@us.ibm.com), Staff Software Engineer, IBM Jack Alford (alfordja@us.ibm.com), Advisory Human Factors Engineer, IBM Linda St.Clair (lstclair@us.ibm.com), Technical Editor, IBM
01 Nov 2001 Accessibility removes the barriers that prevent people with disabilities from participating in social, professional, and practical life activities. By combining new accessibility support in AIX 5L (the AIX operating system for POWER-based systems and Itanium-based systems, with an affinity for Linux) with built-in functionality in standard UNIX components, you can make AIX more accessible for your users. According to estimates from the 1994 - 1995 Survey of Income and
Program Participation, 54 million Americans have disabilities. The
number of disabled people using computers has doubled in the past
decade, and 8% of World Wide Web users have disabilities. Also, as
computer users age, they develop such disabilities as vision or
hearing loss. The bottom line? Computer users expect hardware,
software, and product information to be accessible to everyone. That expectation is backed by federal legislation and standards.
The Federal Rehabilitation Act bars the federal government from
purchasing information technology that is not fully accessible. The
Americans with Disabilities Act requires that companies with 15 or
more employees provide "reasonable accommodations" for individuals
with disabilities. In addition, the FCC Telecommunication Act has
issued final guidelines for accessibility of telecommunications
equipment, ensuring that the equipment is designed, developed, and
fabricated to be accessible to and usable by individuals with
disabilities. This article discusses how you can make your AIX system more
accessible for your end users and how you can develop an accessible
application for the AIX environment. Using X Keyboard Extensions to increase accessibility
X Keyboard Extensions, when enabled, support standard keyboard
accessibility functions for the X Window environment and
applications. The following table describes these functions and how
they are activated: | Function | Description | How to activate keyboard navigation features | | StickyKeys | For users who cannot press multiple keys simultaneously.
Interprets sequential presses of modifier keys as though they
were pressed simultaneously. Examples: Ctrl+Alt+Delete,
Shift+numeral = ! | Activated by pressing shift key 5 times. Deactivated by
pressing shift key 5 times or pressing two modifier keys
simultaneously. Auditory feedback is presented on activation
and deactivation and when StickyKeys is used. | | RepeatKeys | Enables and disables core auto repeat controls. Affects
auto repeat timeout and interval controls. Useful for
mobility-impaired users. | Support for Auto Repeat enabling and disabling is
available from the Keyboard application in the CDE Style
Manager. Click Volume also can be adjusted from this
application. | | SlowKeys | Filters out accidental bumping of keys by
mobility-impaired users. | Activated by holding down right Shift key for 8 seconds
(system gives warning beeps) + 4 more seconds (system gives
confirmation sound). RepeatKeys is activated and deactivated
simultaneously with SlowKeys and BounceKeys. | | BounceKeys | Filters out accidental multiple key presses by
mobility-impaired users. | Support is available programmatically. | | ToggleKeys | For visually impaired users. Gives an audible tone when
any of the toggle keys (for example, Caps Lock, Num Lock) are
pressed. | Enable with StickyKeys. | | MouseKeys | Provides keyboard control of the mouse pointer. | Shift+NumLock (when keymap file has been modified - see
below). |
Activating the X Keyboard Extensions
To enable the X Keyboard Extensions on your AIX system, your
system administrator must modify the /usr/lpp/X11/defaults/xserverrc
file, which is the file that starts the X server The following example xserverrc file entry invokes the following
options: | +kb | Enables keyboard extensions | | +accessx | Enables accessibility extensions |
#---------------------------------------------------------------------
# Turn X11R6 keyboard extension on.
#---------------------------------------------------------------------
EXTENSIONS="$EXTENSIONS +kb +accessx"
|
Using Style Manager in Common Desktop Environment (CDE)
In CDE, use the CDE Style Manager to customize color, font,
background, and auditory output. You also can customize the color
and shape of the mouse pointer for CDE and X Windows. Changing the shape and color of your mouse pointer
The following command allows you to change the shape and color of
the mouse pointer. Run this command at the root window only: xsetroot -cursor_name name -bg color
|
Use the /usr/include/X11/cursorfont.h file, which has the names
of the cursor, to change the cursor into the following shapes: | X-cursor | Cursor converts to a large X | | arrow | Arrow cursor points to the right | | base_arrow_down | Cursor points downward | | base_arrow_up | Cursor points upward | | circle | Cursor converts to a circle |
To change the cursor to a large red X, run the following command
in the command window: xsetroot -cursor_name X-cursor -bg red
|
Using Web-based System Manager with the IBM SVK
The Web-based System Manager in AIX 5L is a suite of system
management tools written in the Java_ language. Making the graphical
user interface accessible to visually impaired users required some
additional technology. The SVK, available from the IBM alphaWorks
Web site, provides the link between the Java code and a speech
synthesizer that translates the Web-based System Manager GUI to
speech output. This section describes how the SVK, working with the
Java Accessibility API, supports speech output for Java applications
like the Web-based System Manager without requiring modification of
the base code. The SVK, based on Access Engine technology from IBM, is launched
as an assistive technology by Sun's Java Accessibility utility
class, EventQueueMonitor. The engine communicates with Web-based
System Manager's accessible components and manages the information
from Web-based System Manager. User interface presentation
extensions to Web-based System Manager can quickly access the
information from Web-based System Manager through the SVK Toolkit
class library. The SVK class library contains many utility
functions, which include speaking text, reading application text,
and activating accessible components. As shown in Figure 1, the SVK loads automatically into the Java
virtual machine with the Web-based System Manager application.
Optionally, an external keypad can be connected to the other serial
port to provide functionality for a blind user to navigate Web-based
System Manager. If the keypad is not installed, a key sequence puts
the user into review mode. In this mode, keystrokes are directed to
SVK to provide functionality similar to the external keypad. Figure 1. SVK monitor window and Web-based System Manager
console
 In Figure 1, the monitor window launched by the SVK displays the
connection status to input and output devices. The monitor window
aids developers in verifying the accessibility of an
application. Software and device support
The SVK runs as an application in the Java virtual machine that
the Web-based System Manager supports. The SVK supports DecExpress
and Accent SA hardware text-to-speech synthesizers. Using accessibility features in applications
The following code samples with the Java Foundation Classes /
Swing 1.1 demonstrate how to make your application accessible with
the SVK:
- Define mnemonics and accelerator keys for tasks that are
frequently performed. For mnemonics, set the mnemonic key on
components that extend AbstractButton. For example:
JButton buttonSample = new JButton("Sample");
buttonSample.setMnemonic('S');
|
- Make components that do not get focus (like JTextFields)
accessible: Create a dummy JLabel and setLabelFor on
non-accessible components. For example:
JLabel dummyLabel = new JLabel();
dummyLabel.setLabelFor(Non-accessible Component);
|
Note: The dummyLabel component is not part of
a dialog. To see the corresponding data for nonaccessible
component data in the SVK tool, use the Shift + F4
key.
- Associate JLabels with corresponding JTextFields. For example:
JLabelComponent.setLabelFor(JTextFieldComponent).
- Describe icons and graphics and set the descriptions on all
components. For example, icons should have text description for
fly-over or hover help.
ImageIcon helpIcon = new ImageIcon("image.gif");
helpIcon.setDescription(String description)
|
- Add perks where application information is announced and where
no focus is rendered.
A perk is a programmable user interface extension. Perks
that are part of the SVK are usually programmable voice output
user interface extensions that announce application information to
augment or replace your visual interface.
The SVK includes a number of perks to provide the default user
interface and to serve as examples or to aid with debugging.
DefaultPerk defines the default user interface. The init() method
registers the Keyboard command mapping and the Event listeners.
Optionally, if the Screen Reader Keypad is identified and can be
found attached to the system, the KeypadKeys Perk is loaded, as
well.
Conclusion
Computer users with varying abilities need equal access to
technology and information. You can configure your AIX system to be
more accessible to your users, as well as enhance your code with
accessibility features. The easiest way to build an accessible Java
application is to use JFC/Swing 1.1 and follow IBM guidelines for
making Java applications accessible. This article discussed some of
the ways you can make AIX more accessible. Resources About the authors Hypatia Rojas is a Software Engineer in AIX for Developers
at IBM Austin. She received a MS in Computer Science from Pratt
Institute in New York. Hypatia has worked in Fishkill, New York, as
a Manufacturing Engineer and as a programmer in Austin, Texas.
Currently, she is a software developer in Java for the Web-based
System Manager development group in Austin. You can contact her at
hrojas@us.ibm.com. | Sanaa Abdelhadi is a Staff Software Engineer who joined
IBM in 1999. She received her MS in Computer Science from Texas
A&M University. Sanaa has worked in system management software
development and in embedded systems. Currently, she is a software
developer in Java for the Web-based System Manager development group
in Austin. You can contact her at sabdelha@us.ibm.com.
| Jack Alford, an Advisory Human Factors Engineer, joined
IBM in 1980, after receiving a PhD in Human Experimental Psychology
from the University of Texas at Austin. Jack has worked in Endicott,
Dallas, and Austin on user interfaces for office products, operating
systems, and system management tools. He is currently a user
interface designer and User-Centered Design practitioner in the
Web-based System Manager development group in Austin. You can
contact him at alfordja@us.ibm.com.
| Linda St. Clair is a technical editor in the AIX &
RS/6000 Information Design & Development area, editing software
and hardware publications for that organization. She joined IBM in
1978 and has spent most of her IBM career in information
development, both as a writer and an editor. You can contact her at
lstclair@us.ibm.com.
|

|  |
|  |