More complex accessibility features come under the banner of assistive technology. These are programs designed to convert between an application's graphical user interface (GUI) and some other means of access. Among these are on-screen keyboards (OSKs) like GNOME GOK which allow computer control and text entry using only the mouse pointer, or switch devices with a simple on/off action. Screen readers such as JAWS (Job Access With Speech), NVDA (NonVisual Desktop Access), and GNOME's Orca provide for full access with only a keyboard and communicate the screen content by means of Braille via a refreshable Braille display and / or synthetic speech. Programs like MouseTrap detect head and eye motion with a low-cost web cam and use it to simulate a pointing device. Dasher is an innovative program that allows text entry using only a couple of distinct input 'gestures' through various input devices, for example a breath operated switch. Other useful technologies include magnification and speech input.
Mobile devices without a physical keyboard running iOS, Android, Symbian or Windows Mobile provide a virtual keyboard or voice recognition. Accessibility to these devices is provided by mobile screen reader solutions like VoiveOver, Talkback, Spiel, Mobile Accessibility, Talks and MobileSpeak. Devices running on Windows Phone 7 are currently not accessible since Microsoft does not provide suitable APIs in order to access the off-screen model.
Assistive technology software requires software access to a program's user interface to determine what the program is doing and control it as required. This is facilitated by Accessibility Application Programming Interfaces (Accessibility APIs), which provide a consistent way for programs to access common functionality provided by other software. It is interesting to notice that these APIs were originally developed for user interface testing procedures.
The Linux GNOME desktop has a well-developed and full-featured solution called Assistive Technology Service Provider Interface (AT-SPI) [GA]. KDE (Kool Desktop Environment) is another popular Linux desktop. The community is currently investigating how to best provide support, with some effort going into how to harmonize with GNOME. Recently, a new open standard IAccessible2 (see [IA2] ) has been published in conjunction with a reference implementation. It provides an API for Microsoft Windows. Interestingly, it is published and maintained by the Linux Foundation's Open Accessibility Workgroup [OAW], largely as its design closely follows AT-SPI. This extends the limited Microsoft Active Accessibility (MSAA) API that is supplied with Microsoft Windows. Microsoft has also developed its own enhancement to MSAA, called Microsoft UI Automation (UIA), which was introduced in Microsoft Windows Vista and the .NET Framework 3.0. (See also [OAO].)
Oracle provides the Java Access Bridge (see [JAB] ) for Microsoft Windows 64- and 32-bit operating systems. The JAB is a technology that exposes the Java Accessibility API (see [JAAPI] ) in a Microsoft Windows DLL, in order to enable Java applications and applets that implement the Java Accessibility API to be visible to assistive technologies.