puff - An X program for sight-impaired users
puff [-toolkit_option] [-option]
-d | -dnum integer (resource: Puff.displayNumber)
Have Puff's false server listen at a different display number. By
default, Puff listens to display number 1.
-m | -mag integer (resource: Puff*Mag)
Set the magnification factor. The magnification is constrained to be
an integer greater than zero. The default is 6.
-u | -update integer (resource: Puff*delayMax)
Specify in milliseconds how often to update the Puff window in the
absence of pointer of graphics activity. For example, to update every
second, use a value of 1000. The default update rate is 500 mil-
liseconds, or 2 Hz. An update value of zero turns off periodic updat-
-c | -cwidth integer (resource: Puff*cursorWidth)
Specify the size of the pointer cursor block in the Puff window. The
actual dimension of the block is '2 * cursorWidth * magnification'. The
default cursor width is 3. The width of the view box outline is `cur-
sorWidth + magnification'.
-h | -help
Display a short command summary.
Puff (puff) is intended for people who need text and graphics displayed at
a high magnification factor. Typically users will want both the pointer
and text to be tracked as they work.
Puff follows the pointer (also known as the mouse), magnifying a part of
the screen under the cursor. In addition, Puff can monitor the X11 proto-
col of X clients and magnify the region where graphics were last drawn. By
monitoring a program like xterm, Puff can follow the text cursor automati-
cally. Puff switches focus between the pointer and graphics, depending on
which was last active.
In order to track the protocol of X clients, Puff sets up a false server on
the machine that it is executed on. This server is, by default, at display
number 1. Any X clients connecting with this false server are connected to
the same X server that Puff is connected to. Puff is transparent to X
Puff draws a box around the location being magnified, which makes it easier
to track the cursor and see where Puff is focusing its attention. The view
box flashes on each update.
Puff is controlled via the keyboard. The following keys have these
1-9, 0, -, =
Change the magnification factor to 2-18, 20, 25, and 30, respectively.
Toggle showing the view box.
Quit Puff. This will also finish off any clients running through Puff.
The following arrow key commands make it easier to scan text and graphics:
Move the magnification window up by 1/4 the window height.
Move the magnification window down by 1/4 the window height.
Move the magnification window right by 1/4 the window width.
Move the magnification window left by 1/4 the window width.
Return to the point of interest.
The following resources apply to the Puff widget, of class puff:
magX: integer (Class: Mag)
Set the magnification factor in the horizontal direction. The resource
value must be a positive integer.
magY: integer (Class: Mag)
Set the magnification factor in the vertical direction. The resource
value must be a positive integer.
delayMin: milliseconds (Class: DelayMin)
Graphics and pointer activity are accumulated for delayMin milliseconds
before Puff updates to avoid overwhelming the X server. To decrease
Puff's impact, increase delayMin. The default value is 50 mil-
liseconds, or 20 Hz.
viewBox: integer (Class: ViewBox)
If the viewBox resource is nonzero, the view box will be drawn.
In practice, Puff is used on the top half of the screen, with clients run-
ning on the bottom half. A sample .xsession file might read:
xrdb -load $HOME/.Xdefaults
xclock -geometry -10-10 &
puff -geometry 1280x500+0+0 &
xterm -display :1 -geometry 80x32+5-5 &
For an example of how Puff follows the display, enter the following command
after starting Puff:
xclock -display :1 -u 1
If run over a network, Puff can consume a good portion of an Ethernet's
bandwidth. To be a good citizen, run Puff on the same workstation as the X
server whenever possible.
If available, Puff will use the MIT Shared Memory X server extension, which
greatly improves performance. However, if terminated with extreme preju-
dice (that is, kill -9), the program will not have a chance to release the
shared memory segments it was using. The ipcrm program can be used to free
up Puff's mess.
Puff will grab all Ctrl arrow-key events, depriving other clients. This
obnoxious behavior should be made an option.
AHPCRC (Army High Performance Computing Research Center)