2001 Conference Proceedings

Go to previous article 
Go to next article 
Return to 2001 Table of Contents

AccessX: LINUX and XFree86 Accessibility

Jon Gunderson, Ph.D. and Dan Linder, B.S.
Division of Rehabilitation - Education Services
College of Applied Life Students
University of Illinois at Urbana/Champaign
1207 S.Oak Street
Champaign, IL 61820

The AccessX for LINUX project is designed to bring the same AccessX features that are available for other UNIX operating systems, like SUN Solaris [sun], DEC Motif [dec] and SGI IRIX [sgi], to the LINUX operating system.


LINUX is a very popular open source version of the UNIX operating system and along with other open source products like XFree86 and GNOME provides a very robust operating system and is widely used throughout the world. Unfortunately the original project to develop basic keyboard and mouse pointer accessibility features for X-Windows was not fully carried over into the LINUX and XFree86 development. The results of this project provides a graphical control panel and command line access to the AccessX features of XFree86 graphical windows management system, and has identified and proposed a solution to the current bug in XFree86 that limits the utility of the AccessX features.

History of AccessX

The DACX group lead by the Trace Research and Development Center at the University of Wisconsin and major developers of UNIX computer hardware and operating systems formed a group to create basic accessibility features for the X-Windows graphical user interface management system [packard][walker]. The group defined specifications for keyboard and mouse key accessibility features for the X-Windows keyboard extensions. These were included in the final releases of the X-Windows operating system [X].

LINUX and XFree86 [XFree86] are open source versions of the UNIX operating system and the X-Window graphical user interface. Most LINUX distributions are designed for Intel based PC compatible computer systems. The open source version X-Windows that was the basis for XFree86 did not include utilities for enabling and setting the AccessX features of the X-Windows keyboard extensions. A computer science senior design project at UIUC [cs292] developed a an prototype graphical control panel and a set of command line utilities to enable and set the AccessX features of XFree86. During this project the senior design group discovered problems in setting the timing values for slow keys, repeat keys and the pointer movement speed for mouse keys. It became apparent that there was a bug in the X-Windows system. The bug was traced to the hardware keyboard repeat generated by PC keyboards. The keyboards repeat keydown codes which confused the timers used to determine keyboard hold times, repeat rates and mouse movement speed. Dan Linder a graduate student fixed the problem by adding 8 lines of code to the XFree86 keyboard extensions. His fix not only eliminated the timing problems observed with AccessX features, but also fixed a number of other keyboard timing problems problems. His code basically filtered out scan codes from the keyboard that are the same as the previous scan code received. The problem and the proposed solution have been sent to the XFree86 development group for inclusion in future versions of XFree86. Dan also improved on the senior design project's graphical control panel and command line utilities. He also modified the configuration format to be compatible with the format user by SUN to improve the portability of AccessX setting between computer systems.

AccessX provides basic features for improved access by people with movement impairments to the X-Windows graphical user interface. The features are very similar to the keyboard and mouse key accessibility options in Windows and the accessibility features of the Macintosh. The following table highlights the major features available in AccessX.

Table of Features Provided by AccessX
Feature Description
Mouse Keys Allows pointer operations to be emulated through keystrokes on the numeric keypad.
Bounce Keys Set the time required before a key repeat starts
Sticky Keys Allow single finger operation of the keyboard with momentary or locked functionality for modifier keys (shift, control and alt)
Slow Keys Set the amount of time required for a key to be pressed before it generates a keystroke
Repeat Keys Set the rate a key will be repeated if it is continuously held down
Timeout The length of time the computer will wait, without user input, until it turns off accessibility features

The XFree86 AccessX utilities are compatible with SUN configuration files. This is important to for users of multiple computer systems to share settings between computers.

The control panel provides graphical controls to observe and change the current settings of the AccessX features. The graphical view helps users see the range of options available through AccessX without having to know cryptic command line parameters. The graphical control panel was developed using Tcl/Tk. A version using X-Windows widgets is planned for the future to remove the requirements of having Tcl/Tk available on the computer system, although most distributions of LINUX include Tcl/Tk as part of the standard installation.

Screen shot of AccessX Control Panel for XFree86

Screen shot of AccessX Control Panel for XFree86

In addition to the graphical control panel the user can use a command prompt to set or reset accessibility features and to set AccessX timing values. The following shows the range of command line parameters for checking and setting different AccessX features.

Usage: ax [options & option/value pairs]

status: Show status of AccessX Features
help: Show this help text
loadconfig: Load the ~/AccessX config file

+timeout: Enable AccessX Timeout
-timeout: Disable AccessX Timeout
timeout : Set AccessX Timeout

+mousekeys: Enable MouseKeys
-mousekeys: Disable MouseKeys
mousedelay : Set MouseKeys Delay
mouseinterval : Set MouseKeys Interval
mousetimetomax : Set MouseKeys time to max speed
mousemaxspeed : Set MouseKeys max speed
mousecurve : Set MouseKeys acceleration curve

+slowkeys: Enable SlowKeys
-slowkeys: Disable SlowKeys
slowdelay : Set SlowKeys Delay

+stickykeys: Enable StickyKeys
-stickykeys: Disable StickyKeys
+stickylatchtolock: Enable S.K. Latch To Lock
-stickylatchtolock: Disbale S.K. Latch To Lock
+stickytwokeydisable: Enable S.K. Two Key Disable

+bouncekeys: Enable BounceKeys
-bouncekeys: Disable BounceKeys
bouncedelay : Set Debounce Delay

+repeatkeys: Enable RepeatKeys
-repeatkeys: Disable RepeatKeys
repeatdelay : Set RepeatKeys Delay
repeatinterval : Set RepeatKeys Interval

Future Development

Future development on the control panel includes developing a graphical status bar showing the state of modifier keys when stickey keys is turned on and a help system that allows people to easily understand the keyboard commands for mouse keys and other short cut keys available in AccessX. Auditory feedback of when keys are typed and when a modifier key state changes is also useful feature that will be added in the future version of the package.

More Information

The AccessX control panel and installation instructions are available at the following web site. The site also contains information on how repair the bug in current version of XFree86.



I would like to thank the following members of the CS 292 Computer Science Senior Design[cs292] class of Aaron Klish , Charles (Shane) Smith, Kristian Rickert and Rishi Dubey for their initial development of the AccessX utilities for XFree86.


[cs292] CS 292/293: COMPUTER SCIENCE SENIOR PROJECT, 1998-1999 Handicap Accessibility 

[dacx] DACX Background

[dec] Access to DECwindows for People with Disabilities 

[packard] Keith Packard (1992) Using XTrap to Help People with Disabilities Author: Keith Packard Source: The X Resources 1: Winter 1992, pp 199-211

[sgi] SGI AccessX 

[sun] Sun Microsystems: About AccessX

[walker] William Walker, Mark Novak, Henry Tumblin, Gregg Vanderheiden (1993) Making the X Window System Accessible to People with Disabilities, The X Resource, Issue 5, pp 213-227

[X] X.org 

[XFree86] The XFree86 Project,Inc 

Go to previous article 
Go to next article 
Return to 2001 Table of Contents 
Return to Table of Proceedings

Reprinted with author(s) permission. Author(s) retain copyright.