Next Previous Contents

3. Visually Impaired

I'll use two general categories here. People who are partially sighted and need help seeing / deciphering / following the text and those who are unable to use any visual interface whatsoever.

3.1 Seeing the Screen with Low Vision

There are many different problems here. Often magnification can be helpful, but that's not the full story. Sometimes people can't track motion, sometimes people can't find the cursor unless it moves. This calls for a range of techniques, the majority of which are only just being added to X.


This program is useful for improving the visibility of the normal text screen that Linux provides. The normal screen that Linux provides shows 80 characters across by 25 vertically. This can be changed (and the quality of those characters improved) using SVGATextMode. The program allows full access to the possible modes of an SVGA graphics card. For example, the text can be made larger so that only 50 by 15 characters appear on the screen. There isn't any easy way to zoom in on sections of a screen, but you can resize when needed.

X Window System

For people who can see the screen there are a large number of ways of improving X. They don't add up to a coherent set of features yet, but if set up correctly could solve many problems.

Different Screen Resolutions

The X server can be set up with many different resolutions. A single key press can then change between them allowing difficult to read text to be seen.

In the file /etc/XF86Config, you have an entry in the Screen section with a line beginning with modes. If, for example, you set this to

Modes       "1280x1024" "1024x768" "800x600" "640x480" "320x240"
with each mode set up correctly (which requires a reasonably good monitor for the highest resolution mode), you will be able to have four times screen magnification, switching between the different levels using

Ctrl+Alt+Keypad-Plus and Ctrl+Alt+Keypad-Minus

Moving the mouse around the screen will scroll you to different parts of the screen. For more details on how to set this up you should see the documentation which comes with the XFree86 X server.

Screen Magnification

There are several known screen magnification programs, xmag which will magnify a portion of the screen as much as needed but is very primitive. Another one is xzoom. Previously I said that there had to be something better than xmag, well this is it. See section xzoom.

Another program which is available is puff. This is specifically oriented towards visually impaired users. It provides such features as a box around the pointer which makes it easier to locate. Other interesting features of puff are that, if correctly set up, it is able to select and magnify portions of the screen as they are updated. However, there seem to be interacations between xpuff and the window manager which could make it difficult to use. When used with my fvwm setup, it didn't respond at all to key presses. However using twm improved the situation.

The final program which I have seen working is dynamag. This again has some specific advantages such as the ability to select a specific area of the screen and monitor it, refreshing the magnified display at regular intervals between a few tenths of a second at twenty seconds. dynamag is part of the UnWindows distribution. See UnWindows for more details.

Change Screen Font

The screen fonts all properly written X software should be changeable. You can simply make it big enough for you to read. This is generally accomplished by putting a line the file .Xdefaults which should be in your home directory. By putting the correct lines in this you can change the fonts of your programs, for example

Emacs.font: -sony-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-*

To see what fonts are available, use the program xfontsel under X.

There should be some way of changing things at a more fundamental level so that everything comes out with a magnified font. This could be done by renaming fonts, and by telling telling font generating programs to use a different level of scaling. If someone gets this to work properly, please send me the details of how you did it.

Cross Hair Cursors etc..

For people that have problems following cursors there are many things which can help;

No software I know of specifically provides a cross hair cursor. puff, mentioned in the previous section does however provide a flashing box around the cursor which can make it considerably easier to locate.

For now the best that can be done is to change the cursor bitmap. Make a bitmap file as you want it, and another one which is the same size, but completely black. Convert them to the XBM format and run

        xsetroot -cursor cursorfile.xbm black-file.xbm

actually, if you understand masks, then the black-file doesn't have to be completely black, but start with it like that. The .Xdefaults file controls cursors used by actual applications. For much more information, please see the X Big Cursor mini-HOWTO, by Joerg Schneider <>.


Provided that the user can hear, audio input can be very useful for making a more friendly and communicative computing environment. For a person with low vision, audio clues can be used to help locate the pointer (see UnWindows). For a console mode user using Emacspeak (see Emacspeak), the audio icons available will provide very many useful facilities.

Setting up Linux audio is covered in the Linux Sound HOWTO (see Linux Documentation). Once sound is set up, sounds can be played with the play command which is included with most versions of Linux. This is the way to use my version of UnWindows.

Producing Large Print

Using large print with Linux is quite easy. There are several techniques.

LaTeX / TeX

LaTeX is an extremely powerful document preparation system. It may be used to produce large print documents of almost any nature. Though somewhat complicated to learn, many documents are produced using LaTeX or the underlying typesetting program, TeX.

this will produce some reasonably large text

\font\magnifiedtenrm=cmr10 at 20pt  % setup a big font
this is some large text

For more details, see the LaTeX book which is available in any computer book shop. There are also a large number of introductions available on the internet.

Outputting Large Text

Almost all Linux printing uses postscript, and Linux can drive almost any printer using it. I output large text teaching materials using a standard Epson dot matrix printer.

For users of X, there are various tools available which can produce large Text. These include LyX, and many commercial word processors.

3.2 Aids for Those Who Can't Use Visual Output

For someone who is completely unable to use a normal screen there are two alternatives Braille and Speech. Obviously for people who also have hearing loss, speech isn't always useful, so Braille will always be important.

If you can choose, which should you choose? This is a matter of `vigorous' debate. Speech is rapid to use, reasonably cheap and especially good for textual applications (e.g. reading a long document like this one). Problems include needing a quiet environment, possibly needing headphones to work without disturbing others and avoid being listened in on by them (not available for all speech synthesisers).

Braille is better for applications where precise layout is important (e.g. spreadsheets). Also can be somewhat more convenient if you want to check the beginning of a sentence when you get to the end. Braille is, however, much more expensive and slower for reading text. Obviously, the more you use Braille, the faster you get. Grade II Braille is difficult to learn, but is almost certainly worth it since it is much faster. This means that if you don't use Braille for a fair while you can never discover its full potential and decide for yourself. Anyway, enough said on this somewhat controversial topic.

based on original by James Bowden <>

Braille Terminals

Braille terminals are normally a line or two of Braille. Since these are at most 80 characters wide and normally 40 wide, they are somewhat limited. I know of two kinds

The first kind works only when the computer is in text mode and reads the screen memory directly. See section hardware driven Braille terminals.

The second kind of Braille terminal is similar, in many ways, to a normal terminal screen of the kind Linux supports automatically. Unfortunately, they need special software to make them usable.

There are two packages which help with these. The first, BRLTTY, works with several Braille display types and the authors are keen to support more as information becomes available. Currently BRLTTY supports Tieman B.V.'s CombiBraille series, Alva B.V.'s ABT3 series and Telesensory Systems Inc.'s PowerBraille and Navigator series displays. The use of Blazie Engineering's Braille Lite as a Braille display is discouraged, but support may be renewed on demand. See section Software Braille Terminals.

The other package I am aware of is Braille Enhanced Screen. This is designed to work on other UNIX systems as well as Linux. This should allow user access to a Braille terminal with many useful features such as the ability to run different programs in different `virtual terminals' at the same time.

Speech Synthesis

Speech Synthesisers take (normally) ASCII text and convert it into actual spoken output. It is possible to have these implemented as either hardware or software. Unfortunately, the free Linux speech synthesisers are, reportedly, not good enough to use as a sole means of output.

Hardware speech synthesisers are the alternative. The main one that I know of that works is DECtalk from Digital, driven by emacspeak. However, at this time (March 1997) a driver for the Doubletalk synthesiser has been announced. Using emacspeak full access to all of the facilities of Linux is fairly easy. This includes the normal use of the shell, a world wide web browser and many other similar features, such as email. Although, it only acts as a plain text reader (similar to IBM's one for the PC) when controling programs it doesn't understand, with those that it does, it can provide much more sophisticated control. See section Emacspeak for more information about emacspeak.

Handling Console Output

When it starts up, Linux at present puts all of its messages straight to the normal (visual) screen. This could be changed if anyone with a basic level of kernel programming ability wants to do it. This means that it is impossible for most Braille devices to get information about what Linux is doing before the operating system is completely working.

It is only at that stage that you can start the program that you need for access. If the BRLTTY program is used and run very early in the boot process, then from this stage on the messages on the screen can be read. Most hardware and software will still have to wait until the system is completely ready. This makes administering a Linux system difficult, but not impossible for a visually impaired person. Once the system is ready however, you can scroll back by pressing (on the default keyboard layout) Shift-PageUP.

There is one Braille system that can use the console directly, called the Braillex. This is designed to read directly from the screen memory. Unfortunately the normal scrolling of the terminal gets in the way of this. If you are using a Kernel newer than 1.3.75, just type linux no-scroll at the LILO prompt or configure LILO to do this automatically. If you have an earlier version of Linux, see section Screen Memory Braille Terminals

The other known useful thing to do is to use sounds to say when each stage of the boot process has been reached. (T.V. Raman suggestion)

Optical Character Recognition

There is a free Optical Character Recognition (OCR) program for Linux called xocr. In principle, if it is good enough, this program would allow visually impaired people to read normal books to some extent (accuracy of OCR is never high enough..). However, according to the documentation, this program needs training to recognise the particular font that it is going to use and I have no idea how good it is since I don't have the hardware to test it.

3.3 Beginning to Learn Linux

Beginning to learn Linux can seem difficult and daunting for someone who is either coming from no computing background or from a pure DOS background. Doing the following things may help:

The Emacspeak HOWTO written by Jim Van Zandt ( <>) covers this in much more detail (see The Linux HOWTO Documents).

If you are planning to use Emacspeak, you should know that Emacspeak does not attempt to teach Emacs, so in this sense, prior knowledge of Emacs would always be useful. This said, you certainly do not need to know much about Emacs to start using Emacspeak. In fact, once Emacspeak is installed and running, it provides a fluent interface to the rich set of online documentation including the info pages, and makes learning what you need a lot easier.

"In summary: starting to use Emacspeak takes little learning. Getting the full mileage out of Emacs and Emacspeak, especially if you intend using it as a replacement for X Windows as I do does involve eventually becoming familiar with a lot of the Emacs extensions; but this is an incremental process and does not need to be done in a day." - T.V.Raman

One other option which may be interesting are the RNIB training tapes which include one covering UNIX. These can be got from

Customer Services
PO Box 173
Cambridgeshire PE2 6WS
Tel: 01345 023153 (probably only works in UK)

3.4 Braille Embossing

Linux should be the perfect platform to drive a Braille embosser from. There are many formatting tools which are aimed specifically at the fixed width device. A Braille embosser can just be connected to the serial port using the standard Linux printing mechanisms. For more info see the Linux Printing HOWTO.

There is a free software package which acts as a multi-lingual grade two translator available for Linux from the American ``National Federation for the Blind''. This is called NFBtrans. See section NFB translator for more details.

Next Previous Contents