Low Vision HOWTO: Draft

Dear gnome-accessibility folks,

We hope we have a solid starting point for a "Linux Large Text for Low
Vision HOWTO."  As stated in the proposed HOWTO's Introduction, "Most
of the work remains to be done, such as trying these methods on
various Linux boxes with various users, especially low-vision users,
and then documenting and incorporating that experience into a HOWTO."
Also, any help towards "converting a joystick to a two-axis foot
rocker and programming it for right, left, up, down scrolling
("virtual-screen" movement)" would be much appreciated.  This would
add a lot to user convenience.

If interested, please read through the attached HOWTO draft, and note
the disclaimer.  If you might like to become a contributor as we bring
this document to HOWTO stage and/or a maintainer of the HOWTO, contact
JP Schnapper- Casteras <jpsc users sf net>.  For all content-specific
questions, e-mail Tom Dannenfelser <tdan foxinternet com>

Best regards,

Tom Dannenfelser
JP Schnapper-Casteras

Cell Phone  -  206-849-9032
Time Zone   -  Pacific (-08:00 UTC)
Home Page   -  http://ocularis.sourceforge.net

Do You Yahoo!?
Yahoo! Autos - Get free new car price quotes
Linux Large Text For Low Vision HOWTO (Draft)


The objective is to creat a non-graphical, (large) text-based user
interface for Email, Internet browsing, word processing, etc.  I hope
the following information will provide some useful hints and perhaps a
starting point for a "Linux Large Text For Low Vision HOWTO."  Most of
the work remains to be done, such as trying these methods on various
Linux boxes with various users, especially low-vision users, and then
documenting and incorporating that experience into a HOWTO.  My
experience with the following large-text methods has been on two
computers: a 120 MHz Pentium and a more recent 500 MHz AMD, using
RedHat 6.2 and 7.2 on both computers.  With different computers and
different distributions of Linux, large-text methods will probably be
somewhat different.

The large-text interface is basically one or more Xterms (terminal
windows) running in X Windows, using the Gnome display manager and the
Enlightenment window manager.  The "virtual screen" grows to fit the
character (or font) size.  With characters about one-inch high (a font
size of 112), the virtual screen can be imagined as a four-by-eight
foot sheet of plywood, oriented horizontally.  This virtual screen can
be "moved around under the monitor screen" as the user reads it or
writes on it.  These up, down, right, left "screen moves" can be bound
to various keys via window manager configuration.

For the last four months I have been using my 500 MHz AMD computer
with RedHat 7.2, but with Enlightenment -0.15.5-48 (the version that
comes with RedHat 6.2) as the window manager.  It has been working
well for both large-text use and for standard use.  However, prior to
this, for over a year I was experimenting with various large-text
methods and "crashed" my computers several times, resulting in:
delayed boot ups with error messages; reduced, missing, or no
functionality; and "core dump" icons and files.  I believe these
problems occurred because I changed file permissions and/or ownerships
and perhaps because I used aliases instead of scripts for some complex
commands (See "Linux Problem Solver" by Brian Ward, p. 221.).  For the
last four months I have avoided both of these practices.  This
necessitates (when using the Bash shell, standard with RedHat)
preceding my script commands with sh space or dot (period) space.
There are ways around this in Bash, using chmod to change permissions,
but I don't recommend them.  To see what shell my system is using I
use the echo command: "echo $SHELL".  Also, to avoid changing
permissions I briefly change to root when connecting to or
disconnecting from my ISP or shutting down.

If I had time, I would re-install Linux (RedHat 6.2, 7.2 and possibly
SuSE) on both my computers, carefully documenting every step, for
inclusion into the HOWTO.  But with my current work schedule and other
time constraints, I'm afraid my progress would be slow and would delay
the emergence of a "Linux Large Text For Low Vision HOWTO."  So, at
this point, I will summarize what I've learned in the hopes that
volunteers will continue.  I will continue exploring Linux large text
capabilities and sharing anything I find that seems useful.


Experiment with the following methods at your own risk.  In what
follows I describe what seemed to work for me, on my computer systems.
I can't guarantee the results other users will have on other computer
systems.  Experimentation should only be done on a computer you can
afford to have crash, losing all stored data, and necessitating
re-installing Linux.


The methods described here don't require an expensive computer.  An
older computer, such as my 120 MHz Pentium, can be used by itself or it
can share a monitor, printer, keyboard, mouse, etc., with one or more
other computers; and switch boxes are available to make this more
convenient.  Also, an additional hard-drive can be installed on an
existing computer and used only for Linux/Low-Vision.  My 120 MHz
Pentium has its original Windows 95, and Linux is installed on a
separate hardrive.  (See the appropriate documentation for hardware


Linux should be installed and set up by a person with reasonably
"normal" vision.  There is no information provided here for
installation and initial large-text setup by a person with low vision.
When installing RedHat, I select Custom Installation and I select the
"everything" option, which requires more disk space, but ensures I
have lots of applications installed.  For my 17-inch monitor, I select
a resolution of 800 x 600 and a color depth of 256 colors (8-bit).
You may have to find your own values here.  For setting up modem, ISP
connection, printer, etc., I recommend the GUI tools that come with
the distribution.  I currently have my computer come up in a line-mode
prompt (runlevel 3) from which I use the startx command to enter X


The first step is getting large text in an xterm.  To find out what
fonts are available on my RedHat Linux system, I type

	xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m-*'

(This command and a good description of font specifications is given
on pages 449- 450 in the "GNU Emacs Manual," Fourteenth Edition,
Version 20.7, by Richard M.  Stallman.  Also, there is a good font
HOWTO, and man X has relevant information.)

Scalable fonts--the kind that look good to me at any size--have the
pattern 0-0-0-0-m-0 instead of specific numbers for pixels, height,
etc.  The scalable fonts can be found by themselves by typing

	xlsfonts -fn '*-*-*-*-*-*-*-0-0-0-0-m-0-iso8859-*'

Once a suitable font is chosen, the following command will open an
xterm with nearly any font size.  For example, using a font of 112

	xterm -fn

It might be a good idea to try this now (using a font installed on
your system), to see if your monitor and setup are working OK.  The
"virtual screen" can be moved around by "grabbing it" with the mouse,
which is done by holding the alt key and the left-hand mouse button.
To close this screen, you'll have to slide it to the left until you
see the close button in the upper-right-hand corner.  This is not a
very pleasant way to move the screen for any length of time, so we'll
soon move on to window managers and their configuration.

Later, a script can be written to open an xterm with a font of nearly
any size, by replacing 112 in the above command with the size that
suits you.  I have used font sizes up to 312 (which makes the letters
about 3 inches high); and there is nothing special about my choice of
numbers; 100, 93, 300, 277, etc. will bring up fonts of the
corresponding sizes.  If you want to specify the font size each time
you open a large-text xterm, you can replace the 112 in the above
command with $1

	xterm -fn

I wrote this command in the Emacs editor and called it xxx (Emacs xxx
being the command used in an xterm to get into Emacs).  I have to
predede xxx with a dot space when I run it, as I do with all my
scripts, as explained in the Introduction.  Also, for the above
command, with the $1 in it, the xxx is followed by the desired font
size, for example: . xxx 150

Note: There are a lot more arguments that can be specified when
opening an xterm, such as foreground and background colors and
location of the xterm in the monitor (xterm -geometry +0+0 -fn etc.).
The -geometry +0+0 argument locates the xterm's upper-left-hand corner
in the monitor's upper-left-hand corner, and seems to be necessary
when using Enlightenment Configuration Shortcuts, Run Command, to bind
a key to the command.  I haven't needed the -geometry argument when
using scripts.  (For more information, use the command: "man xterm" or
consult one of the many books available on Linux, some of which are
listed at the end of this document.)


At this point, it is probably best to add a new user, especially if
you are going to change from the default window manager.  The new
window manager and its configuration can just be for that new user.
The documentation for your Linux distribution can probably explain how
to do this. ( For someone using RedHat 6.2, this may not be


There are many window managers available for Linux.  I have only tried
Sawfish and Enlightenment for use with large text.


Sawfish is the default window manager when using Gnome in RedHat 7.2.
It is usable for large text, but as far as I can see, it only gives
one variable for the screen moves.  The variable is called "slide
Pixels," and a value of 600 is a reasonable compromise.


Enlightenment -0.15.5-48 is my preferred window manager.  With this
version of Enlightenment, each up, down, right, and left move (which
is bound to a key or key combination, using the shortcuts item on the
configuration menu) can be given its own move value.  This allows much
better control of screen movement.  RedHat 6.2, since it uses the
preferred Enlightenment as the default in Gnome, seems more
integrated; and 6.2 will probably install and run well on some older
computers, as it does on my 1997, 120 MHz Pentium.


To enter the Enlightenment or Sawfish configuration menu, the middle
mouse button is pressed when the mouse is over a bare area of the
desktop.  For Enlightenment, the shortcuts submenu is chosen, and
there are lots of options.  The most useful of these for me have been
the following:

Scroll Windows by [X Y] pixels

Run Command

Annihilate Window

Note: The large fonts seem to work best if the "Size of Virtual
Screen" (in the Configuration Desktops menu) is left at the default
1x1.  Also, for the "Keyboard focus follows" options (in the
Configuration Basic Options menu), "Sloppy Pointer" may be the best


I use the far right-hand keypad for most Shortcut bindings.  I've used
the following keys and corresponding X Y values for Scroll Windows:
KP_Right -700 0, KP_Left 700 0, KP_Home 4900 0 (like Return or Enter
for 112 font), KP_Prior (Page Up) 0 500, KP_Next (Page Down) 0 -500,
KP_Up 0 100, KP_Down 0 -100, Ctl (Control Key, used as a
"Modifier")KP_Right -100 0, Ctl KP_Left 100 0, Ctl KP_Prior 0 2500,
Ctl KP_Next 0 -2500, Ctl KP_Home -4900 0 (moves screen from left-most
edge to right-most edge, like opposite of Enter)

For a font other than 112, experiment to find convenient values.

For Run Command, I've used KP_Begin (5 on my keypad!) to run an xterm
command, like the one mentioned above for large fonts, with a font
size of 16, comfortable for my late-middle-aged eyes.  I use KP_Add (+
key) for an xterm with 112-sized font.

Note: Once a suitable font is found for a low-visioned user, and
Scroll Windows have been given convenient X Y values, a key should be
bound to Run Command, using "xterm -geomety +0+0 -fn (font info here,
etc.)".  This way, the user just hits a certain key or key combination
to open an xterm with the chosen font.

I use Delete (Del on keypad) to Annihilate Window, which is a lot more
convenient than scrolling to the far upper RH corner to hit the X
close window button.  Note: Position the large-text window so that its
upper-left-hand corner is in the monitor's upper-left-hand corner
before annihilating it.  Otherwise, your launching window will be
"lost in virtual flatspace."

For a low visioned user, this should be a GUI-less interface.  This
shouldn't be a problem, if a reasonably experienced Linux user is
available to install Linux and set it up.  With RedHat, the computer
can be configured to come up in text mode or in X Windows.  The login
might be a little tricky for a low-visioned user, but the distinctive
lack of screen activity when it's ready to accept a login would
probably be recognizable.  Locator dots are available to help with
orientation on the keyboard.  The dots are raised so they can be felt,
and they have adhesive to stick onto the desired keys.


As mentioned in the Introduction, this is basically an "xterm user
interface."  The Pine Email program, the editor Vi, the text-based
Internet browser Lynx, and I would guess many other programs can be
run in a large-text (or "large-font") xterm, and the programs also run
with the same large font.  I've used Pine this way quite a bit, and it
works well, as does Lynx.  However, with Lynx, the particular website
has a lot to do with how well it works with a large-text xterm.  I've
read online English literature from www.literature.org, and I was
surprised at how well www.cnn.com worked the other night when I first
tried that address.  The Emacs editor has to be entered a little
differently.  From an xterm of any sized font, "emacs" is followed by
the same font info that follows the xterm command: emacs -fn
"-adobe...etc.  I've gone through the emacs tutorial with a font of
112, and it worked pretty well.  Note: If emacs is to be used a lot,
it might be best to bind the above command to a key, using
Enlightenment Configuration.


I spent too much time struggling with text-based Internet
connect/disconnect commands.  What finally made it easier is using the
"ps -ax | more" command before and after connecting to or
disconnecting from my ISP, using the default GUI method.  This let me
see the command's text version.  With RedHat 6.2, I found
"/sbin/ppp-watch ifcfg-ppp0" to connect, and I can use killall
"/sbin/ppp-watch" to disconnect.  (With RedHat 6.2 I can also use
"wvdial <my ISP's name> &" to connect and "killall wvdial" to
disconnect.)  With RedHat 7.2, I found "/sbin/ppp-watch ppp0
ifcfg-ppp0" to connect and "killall /sbin/ppp-watch" to disconnect.
Note: As mentioned in the Introduction, I briefly change to root to
use these commands.

Also, I'm using fetchmail to retrieve my Email, and the command that
I'm using is "fetchmail -p POP3 -u tdan pop.foxinternet.com," with
"tdan" my username and "pop.foxinternet.com" my mail server.


Two useful commands for bailing out that work with these versions of
RedHat Linux (and probably other Linux distributions) are Control Alt
Delete, which gives a safe reboot from console mode, and Control Alt
Backspace, which exits X Windows and returns to the console mode.
Note: For a low-visioned user, Control Alt Delete will be more useful
if there is a way to configure it so that the computer halts after the
shutdown, instead of rebooting.  This may be possible, but I haven't
worked on it yet.

I'm currently using "/sbin/shutdown -h now" to shutdown the computer
from an xterm window.  As mentioned in the Introduction, I have to be
in root to do this, as I also have to be in root to connect to or
disconnect from my ISP.  I only stay in root for long enough to do
these tasks, because being in root when not necessary is risky and not


These methods are meant to be independent of mouse and GUI, but if the
mouse pointer is out of the xterm window, "focus," or use of the
window may be temporarily lost.  There may be ways to deal with this
using Enlightenment Configuration, or creating a large, visible
pointer, or perhaps just clamping the mouse roller so that the pointer
is always positioned in an unobtrusive corner of the screen.  However,
this is something I haven't experimented enough with. 

What would really be nice, if possible, would be converting a joystick
to a two-axis foot rocker and programming it for right, left, up,
down, scrolling ("virtual screen" movement).  This would leave the
hands free for normal keyboard typing.  The electro-mechanical aspect
seems doable, but I don't know what kind of drivers and software
exist for using joysticks with Linux for scrolling.

Keeping track of the much more visible, rectangular text cursor,
especially when writing, takes getting used to.  It follows the text
being entered and carriage returns (Enter key), not screen moves.

One more thing that should probably be mentioned are the error
messages that seem to follow use of large-text xterms.  They don't
seem to correspond to any serious problems on my computer, but they
might cause concern to the person setting up a low-vision Linux
system.  A low-visioned user might not see them, as they often are in
a standard font size, as are the normal messages that appear as the
computer is booting up.  Note: On further consideration, these error
messages seem to appear when starting a large-text xterm from another
xterm and then returning to the original xterm.  If the low-visioned
user has a key bound to the large-text xterm command, and then runs
Email, Lynx, Vi, etc. from thant terminal, there probably won't be
error messages.


"The Concise Guide to XFree86 for Linux," by Aron Hsiao, c. 2000, 
Que Corporation

"The Joy of X," by Niall Mansfield, c. 1993, Addison-Wesley

"Linux Programmer's Reference, Second Edition," by Richard 
Petersen, c. 2000, Osborne/McGraw-Hill

"Red Hat Linux: The Complete Reference," by Richard Petersen,
c. 2000, Osborne/McGraw-Hill

"GNU Emacs Manual, 14th Edition, Version 20.7," by Richard
Stallman, c. 2000, Free Software Foundation, Inc.

"The Linux Problem Solver," by Brian Ward, c. 2000, No Starch Press

Also, there are lots of relevant man pages, on-line documents,
HOWTOs, etc.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]