diff --git a/Doc/lib/libcurses.tex b/Doc/lib/libcurses.tex
index bb2109d..d0ba2a3 100644
--- a/Doc/lib/libcurses.tex
+++ b/Doc/lib/libcurses.tex
@@ -1,8 +1,9 @@
 \section{\module{curses} ---
-         Terminal independent console handling}
+         Screen painting and input handling for character-cell terminals}
 
 \declaremodule{extension}{curses}
 \sectionauthor{Moshe Zadka}{mzadka@geocities.com}
+\sectionauthor{Eric Raymond}{esr@thyrsus.com}
 \modulesynopsis{An interface to the curses library.}
 
 The \module{curses} module provides an interface to the curses \UNIX{}
@@ -10,14 +11,17 @@
 handling.
 
 While curses is most widely used in the \UNIX{} environment, versions
-are available for DOS, OS/2, and possibly other systems as well.  The
-extension module has not been tested with all available versions of
-curses.
+are available for DOS, OS/2, and possibly other systems as well.  This
+extension module is designed to match the API of ncurses, an
+open-source curses library hosted on Linux and the BSD variants of
+Unix.
 
 \begin{seealso}
   \seemodule{curses.ascii}{Utilities for working with \ASCII{}
                            characters, regardless of your locale
                            settings.}
+  \seemodule{curses.textbox}{Editable text widget for curses supporting 
+			   Emacs-like bindings.}
   \seetext{Tutorial material on using curses with Python is available
            on the Python Web site as Andrew Kuchling's
 \citetitle[http://www.python.org/doc/howto/curses/curses.html]{Curses
@@ -40,11 +44,15 @@
 The module \module{curses} defines the following functions:
 
 \begin{funcdesc}{baudrate}{}
-Returns the output speed of the terminal in bits per second.
+Returns the output speed of the terminal in bits per second.  On
+software terminal emulators it will have a fixed high value.
+Included for historical reasons; in former times, it was used to 
+write output loops for time delays and occasionally to change
+interfaces depending on the line speed.
 \end{funcdesc}
 
 \begin{funcdesc}{beep}{}
-Emit a short sound.
+Emit a short attention sound.
 \end{funcdesc}
 
 \begin{funcdesc}{can_change_color}{}
@@ -53,7 +61,12 @@
 \end{funcdesc}
 
 \begin{funcdesc}{cbreak}{}
-Enter cbreak mode.
+Enter cbreak mode.  In cbreak mode (sometimes called ``rare'' mode)
+normal tty line buffering is turned off and characters are available
+to be read one by one.  However, unlike raw mode, special characters
+(interrupt, quit, suspend, and flow control) retain their effects on
+the tty driver and calling program.  Calling first \function{raw()}
+then \function{cbreak()} leaves the terminal in cbreak mode.
 \end{funcdesc}
 
 \begin{funcdesc}{color_content}{color_number}
@@ -75,7 +88,8 @@
 Sets the cursor state.  \var{visibility} can be set to 0, 1, or 2, for
 invisible, normal, or very visible.  If the terminal supports the
 visibility requested, the previous cursor state is returned;
-otherwise, an exception is raised.
+otherwise, an exception is raised.  On many terminals, the ``visible''
+mode is an underline cursor and the ``very visible'' mode is a block cursor.
 \end{funcdesc}
 
 \begin{funcdesc}{def_prog_mode}{}
@@ -98,11 +112,24 @@
 \end{funcdesc}
 
 \begin{funcdesc}{doupdate}{}
-Update the screen.
+Update the physical screen.  The curses library keeps two data
+structures, one representing the current physical screen contents
+and a virtual screen representing the desired next state.  The
+\function{doupdate()} ground updates the physical screen to match the
+virtual screen.
+
+The virtual screen may be updated by a \method{noutrefresh()} call
+after write operations such as \method{addstr()} have been performed
+on a window.  The normal \method{refresh()} call is simply
+\method{noutrefresh()} followed by \function{doupdate()}; if you have
+to update multiple windows, you can speed performance and perhaps
+reduce screen flicker by issuing \method{noutrefresh()} calls on
+all windows, followed by a single \function{doupdate()}.
 \end{funcdesc}
 
 \begin{funcdesc}{echo}{}
-Enter echo mode.
+Enter echo mode.  In echo mode, each character input is echoed to the
+screen as it is entered.  
 \end{funcdesc}
 
 \begin{funcdesc}{endwin}{}
@@ -110,24 +137,30 @@
 \end{funcdesc}
 
 \begin{funcdesc}{erasechar}{}
-Returns the user's current erase character.
+Returns the user's current erase character.  Under Unix operating
+systems this is a property of the controlling tty of the curses
+program, and is not set by the curses library itself.
 \end{funcdesc}
 
 \begin{funcdesc}{filter}{}
-The \function{filter()} routine, if used, must be called before 
-\function{initscr()} is  called.  
-
-The effect is that, during those calls, LINES is set to 1; the
-capabilities clear, cup, cud, cud1, cuu1, cuu, vpa are disabled; and
-the home string is set to the value of cr.  
+The \function{filter()} routine, if used, must be called before
+\function{initscr()} is  called.  The effect is that, during those
+calls, LINES is set to 1; the capabilities clear, cup, cud, cud1,
+cuu1, cuu, vpa are disabled; and the home string is set to the value of cr.
+The effect is that the cursor is confined to the current line, and so
+are screen updates.  This may be used for enabling cgaracter-at-a-time 
+line editing without touching the rest of the screen.
 \end{funcdesc}
 
 \begin{funcdesc}{flash}{}
-Flash the screen.
+Flash the screen.  That is, change it to reverse-video and then change
+it back in a short interval.  Some people prefer such as `visible bell'
+to the audible attention signal produced by \function{beep()}.
 \end{funcdesc}
 
 \begin{funcdesc}{flushinp}{}
-Flush all input buffers.
+Flush all input buffers.  This throws away any  typeahead  that  has
+been typed by the user and has not yet been processed by the program.
 \end{funcdesc}
 
 \begin{funcdesc}{getmouse}{}
@@ -163,19 +196,21 @@
 \end{funcdesc}
 
 \begin{funcdesc}{has_colors}{}
-Returns true if the terminal can manipulate colors; otherwise, it
+Returns true if the terminal can display colors; otherwise, it
 returns false. 
 \end{funcdesc}
 
 \begin{funcdesc}{has_ic}{}
 Returns true if the terminal has insert- and delete- character
-capabilities.
+capabilities.  This function is included for historical reasons only,
+as all modern software terminal emulators have such capabilities.
 \end{funcdesc}
 
 \begin{funcdesc}{has_il}{}
 Returns true if the terminal has insert- and
 delete-line  capabilities,  or  can  simulate  them  using
-scrolling regions. 
+scrolling regions. This function is included for historical reasons only,
+as all modern software terminal emulators have such capabilities.
 \end{funcdesc}
 
 \begin{funcdesc}{has_key}{ch}
@@ -188,7 +223,7 @@
 characters typed by the user are immediately available to the program.
 However, after blocking for \var{tenths} tenths of seconds, an
 exception is raised if nothing has been typed.  The value of
-\var{tenths} must be a number between 1 and 255.  Use nocbreak to
+\var{tenths} must be a number between 1 and 255.  Use \function{nocbreak()} to
 leave half-delay mode.
 \end{funcdesc}
 
@@ -199,7 +234,8 @@
 between 0 and COLORS.  Each of \var{r}, \var{g}, \var{b}, must be a
 value between 0 and 1000.  When \function{init_color()} is used, all
 occurrences of that color on the screen immediately change to the new
-definition.
+definition.  This function is a no-op on most terminals; it is active
+only if \function{can_change_color()} returns 1.
 \end{funcdesc}
 
 \begin{funcdesc}{init_pair}{pair_number, fg, bg}
@@ -219,26 +255,34 @@
 \end{funcdesc}
 
 \begin{funcdesc}{isendwin}{}
-Returns true if \function{endwin()} has been called.
+Returns true if \function{endwin()} has been called (that is, the 
+curses library has been deinitialized).
 \end{funcdesc}
 
 \begin{funcdesc}{keyname}{k}
-Return the name of the key numbered \var{k}.
+Return the name of the key numbered \var{k}.  The name of a key
+generating printable ASCII character is the key's character.  The name
+of a control-key combination is a two-character string consisting of a
+caret followed by the corresponding printable ASCII character.  The
+name of an alt-key combination (128-255) is a string consisting of the
+prefix `M-' followed by the name of the corresponding ASCII character.
 \end{funcdesc}
 
 \begin{funcdesc}{killchar}{}
-Returns the user's current line kill character.
+Returns the user's current line kill character. Under Unix operating
+systems this is a property of the controlling tty of the curses
+program, and is not set by the curses library itself.
 \end{funcdesc}
 
 \begin{funcdesc}{longname}{}
-Returns a string containing a verbose description of the current
+Returns a string containing the terminfo long name field describing the current
 terminal.  The maximum length of a verbose description is 128
 characters.  It is defined only after the call to
 \function{initscr()}.
 \end{funcdesc}
 
 \begin{funcdesc}{meta}{yes}
-If \var{yes} is 1, allow 8-bit characters. If \var{yes} is 0, 
+If \var{yes} is 1, allow 8-bit characters to be input. If \var{yes} is 0, 
 allow only 7-bit chars.
 \end{funcdesc}
 
@@ -264,19 +308,18 @@
 given number of lines and columns.  A pad is returned as a
 window object.
 
-A pad is like a window,
-except that it is not restricted by the screen size, and is not
-necessarily associated with a particular part of the screen.
-Pads can be used when a large window is needed, and only a part
-of the window will be on the screen at one time.  Automatic
-refreshes of pads (e.g., from scrolling or echoing of
-       input) do not occur.  It is not legal to call wrefresh
-       with a pad as an argument; the routines prefresh or
-       pnoutrefresh should be called instead.  Note that these
-       routines require additional parameters to specify the part of
-       the pad to be displayed and the location on the screen to be
-       used for the display.
-
+A pad is like a window, except that it is not restricted by the screen
+size, and is not necessarily associated with a particular part of the
+screen.  Pads can be used when a large window is needed, and only a
+part of the window will be on the screen at one time.  Automatic
+refreshes of pads (e.g., from scrolling or echoing of input) do not
+occur.  The \method{refresh()} and \method{noutrefresh()} methods of a
+pad require 6 arguments to specify the part of the pad to be
+displayed and the location on the screen to be used for the display.
+The arguments are pminrow, pmincol, sminrow, smincol, smaxrow,
+smaxcol; the p arguments refer to the upper left corner of the the pad
+region to be displayed and the s arguments define a clipping box on
+the screen within which the pad region is to be displayed.
 \end{funcdesc}
 
 \begin{funcdesc}{newwin}{\optional{nlines, ncols,} begin_y, begin_x}
@@ -289,32 +332,40 @@
 \end{funcdesc}
 
 \begin{funcdesc}{nl}{}
-Enter nl mode.
+Enter newline mode.  This mode translates the return key into newline
+on input, and translates newline into return and line-feed on output.
+Newline mode is initially on.
 \end{funcdesc}
 
 \begin{funcdesc}{nocbreak}{}
-Leave cbreak mode.
+Leave cbreak mode.  Return to normal ``cooked'' mode with line buffering.
 \end{funcdesc}
 
 \begin{funcdesc}{noecho}{}
-Leave echo mode.
+Leave echo mode.  Echoing of input characters is turned off,
 \end{funcdesc}
 
 \begin{funcdesc}{nonl}{}
-Leave nl mode.
+Leave newline mode.  Disable translation of return into newline on
+input, and disable low-level translation of newline into
+newline/return on output (but this does not change the behavior of
+addch('\n') which always does the equivalent of return and line feed
+on the virtual screen).  With translation off, curses can sometimes speed
+up vertical motion a little; also, it will be able to detect the
+return key on input
 \end{funcdesc}
 
 \begin{funcdesc}{noqiflush}{}
-       When the noqiflush routine is used, normal flush of input and
-       output queues associated with the INTR, QUIT and SUSP
-       characters will not be done.  You may want to call
-       \function{noqiflush()} in a signal handler if you want output
-       to continue as though the interrupt had not occurred, after the
-       handler exits.
+When the noqiflush routine is used, normal flush of input and
+output queues associated with the INTR, QUIT and SUSP
+characters will not be done.  You may want to call
+\function{noqiflush()} in a signal handler if you want output
+to continue as though the interrupt had not occurred, after the
+handler exits.
 \end{funcdesc}
 
 \begin{funcdesc}{noraw}{}
-Leave raw mode.
+Leave raw mode. Return to normal ``cooked'' mode with line buffering.
 \end{funcdesc}
 
 \begin{funcdesc}{pair_content}{pair_number}
@@ -329,8 +380,9 @@
 \end{funcdesc}
 
 \begin{funcdesc}{putp}{string}
-Equivalent to \code{tputs(str, 1, putchar)}.  Note that the output of putp always
-goes to standard output.
+Equivalent to \code{tputs(str, 1, putchar)}; emits the value of a
+specified terminfo capability for the current terminal.  Note that the
+output of putp always goes to standard output.
 \end{funcdesc}
 
 \begin{funcdesc}{qiflush}{ \optional{flag} }
@@ -341,7 +393,10 @@
 \end{funcdesc}
 
 \begin{funcdesc}{raw}{}
-Enter raw mode.
+Enter raw mode.  In raw mode, normal line buffering and 
+processing of interrupt, quit, suspend, and flow control keys are
+turned off; characters are presented to curses input functions one
+by one.
 \end{funcdesc}
 
 \begin{funcdesc}{reset_prog_mode}{}
@@ -433,6 +488,7 @@
 \strong{Note:} A \emph{character} means a C character (i.e., an
 \ASCII{} code), rather then a Python character (a string of length 1).
 (This note is true whenever the documentation mentions a character.)
+The builtin \function{ord()} is handy for conveying strings to codes.
 
 Paint character \var{ch} at \code{(\var{y}, \var{x})} with attributes
 \var{attr}, overwriting any character previously painter at that
@@ -452,15 +508,18 @@
 \end{methoddesc}
 
 \begin{methoddesc}{attroff}{attr}
-Turn off attribute \var{attr}.
+Remove attribute \var{attr} from the ``background'' set applied to all
+writes to the current window.
 \end{methoddesc}
 
 \begin{methoddesc}{attron}{attr}
-Turn on attribute \var{attr}.
+Add attribute \var{attr} from the ``background'' set applied to all
+writes to the current window.
 \end{methoddesc}
 
 \begin{methoddesc}{attrset}{attr}
-Set the attributes to \var{attr}.
+Set the ``background'' set of attributes to \var{attr}.  This set is
+initially 0 (no attributes).
 \end{methoddesc}
 
 \begin{methoddesc}{bkgd}{ch\optional{, attr}}
@@ -520,17 +579,17 @@
 \end{methoddesc}
 
 \begin{methoddesc}{clear}{}
-Like \method{erase()}, but also causes the whole screen to be repainted
+Like \method{erase()}, but also causes the whole window to be repainted
 upon next call to \method{refresh()}.
 \end{methoddesc}
 
 \begin{methoddesc}{clearok}{yes}
 If \var{yes} is 1, the next call to \method{refresh()}
-will clear the screen completely.
+will clear the window completely.
 \end{methoddesc}
 
 \begin{methoddesc}{clrtobot}{}
-Erase from cursor to the end of the screen: all lines below the cursor
+Erase from cursor to the end of the window: all lines below the cursor
 are deleted, and then the equivalent of \method{clrtoeol()} is performed.
 \end{methoddesc}
 
@@ -562,7 +621,7 @@
 
 \begin{methoddesc}{echochar}{ch\optional{, attr}}
 Add character \var{ch} with attribute \var{attr}, and immediately 
-call \method{refresh}.
+call \method{refresh} on the window.
 \end{methoddesc}
 
 \begin{methoddesc}{enclose}{y, x}
@@ -611,7 +670,8 @@
 \end{methoddesc}
 
 \begin{methoddesc}{getyx}{}
-Return a tuple \code{(\var{y}, \var{x})} of current cursor position.
+Return a tuple \code{(\var{y}, \var{x})} of current cursor position 
+relative to the window's upper-left corner.
 \end{methoddesc}
 
 \begin{methoddesc}{hline}{\optional{y, x,} ch, n}
@@ -712,13 +772,12 @@
 \end{methoddesc}
 
 \begin{methoddesc}{leaveok}{yes}
-If \var{yes} is 1,
-cursor is left where it is, instead of being at ``cursor position.''
-This reduces cursor movement where possible. If possible it will be made
-invisible.
+If \var{yes} is 1, cursor is left where it is on update, instead of
+being at ``cursor position.''  This reduces cursor movement where
+possible. If possible the cursor will be made invisible.
 
-If \var{yes} is 0, cursor will always be at
-``cursor position'' after an update.
+If \var{yes} is 0, cursor will always be at ``cursor position'' after
+an update.
 \end{methoddesc}
 
 \begin{methoddesc}{move}{new_y, new_x}
@@ -792,13 +851,13 @@
 
 \begin{methoddesc}{scrollok}{flag}
 Controls what happens when the cursor of a window is moved off the
-       edge of the window or scrolling region, either as a result of a
-       newline action on the bottom line, or typing the last character
-       of the last line.  If \var{flag} is false, the cursor is left
-       on the bottom line.  If \var{flag} is true, the window is
-       scrolled up one line.  Note that in order to get the physical
-       scrolling effect on the terminal, it is also necessary to call
-       \method{idlok()}.
+edge of the window or scrolling region, either as a result of a
+newline action on the bottom line, or typing the last character
+of the last line.  If \var{flag} is false, the cursor is left
+on the bottom line.  If \var{flag} is true, the window is
+scrolled up one line.  Note that in order to get the physical
+scrolling effect on the terminal, it is also necessary to call
+\method{idlok()}.
 \end{methoddesc}
 
 \begin{methoddesc}{setscrreg}{top, bottom}
@@ -807,7 +866,8 @@
 \end{methoddesc}
 
 \begin{methoddesc}{standend}{}
-Turn off all attributes.
+Turn off the standout attribute.  On some terminals this has the
+side effect of turning off all attributes.
 \end{methoddesc}
 
 \begin{methoddesc}{standout}{}
@@ -1004,34 +1064,35 @@
 
 \begin{tableii}{c|l}{code}{ACS code}{Meaning}
   \lineii{ACS_BBSS}{}
-  \lineii{ACS_BLOCK}{}
-  \lineii{ACS_BOARD}{}
+  \lineii{ACS_BLOCK}{solid square block}
+  \lineii{ACS_BOARD}{board of squares}
   \lineii{ACS_BSBS}{}
   \lineii{ACS_BSSB}{}
   \lineii{ACS_BSSS}{}
-  \lineii{ACS_BTEE}{}
-  \lineii{ACS_BULLET}{}
-  \lineii{ACS_CKBOARD}{}
-  \lineii{ACS_DARROW}{}
-  \lineii{ACS_DEGREE}{}
-  \lineii{ACS_DIAMOND}{}
-  \lineii{ACS_GEQUAL}{ (Not available with SGI curses)}
-  \lineii{ACS_HLINE}{}
-  \lineii{ACS_LANTERN}{}
-  \lineii{ACS_LARROW}{}
-  \lineii{ACS_LEQUAL}{ (Not available with SGI curses)}
-  \lineii{ACS_LLCORNER}{}
-  \lineii{ACS_LRCORNER}{}
-  \lineii{ACS_LTEE}{}
-  \lineii{ACS_NEQUAL}{ (Not available with SGI curses)}
-  \lineii{ACS_PI}{ (Not available with SGI curses)}
-  \lineii{ACS_PLMINUS}{}
-  \lineii{ACS_PLUS}{}
-  \lineii{ACS_RARROW}{}
-  \lineii{ACS_RTEE}{}
-  \lineii{ACS_S1}{}
-  \lineii{ACS_S3}{ (Not available with SGI curses)}
-  \lineii{ACS_S9}{}
+  \lineii{ACS_BTEE}{bottom tee}
+  \lineii{ACS_BULLET}{bullet}
+  \lineii{ACS_CKBOARD}{checker board (stipple)}
+  \lineii{ACS_DARROW}{arrow pointing down}
+  \lineii{ACS_DEGREE}{degree symbol}
+  \lineii{ACS_DIAMOND}{diamond}
+  \lineii{ACS_GEQUAL}{greater-than-or-equal-to}
+  \lineii{ACS_HLINE}{horizontal line}
+  \lineii{ACS_LANTERN}{lantern symbol}
+  \lineii{ACS_LARROW}{left arrow}
+  \lineii{ACS_LEQUAL}{less-than-or-equal-to}
+  \lineii{ACS_LLCORNER}{lower left-hand corner}
+  \lineii{ACS_LRCORNER}{lower right-hand corner}
+  \lineii{ACS_LTEE}{left tee}
+  \lineii{ACS_NEQUAL}{not-equal sign}
+  \lineii{ACS_PI}{letter pi}
+  \lineii{ACS_PLMINUS}{plus-or-minus sign}
+  \lineii{ACS_PLUS}{plus sign}
+  \lineii{ACS_RARROW}{right arrow}
+  \lineii{ACS_RTEE}{right tee}
+  \lineii{ACS_S1}{scan line 1}
+  \lineii{ACS_S3}{scan line 3}
+  \lineii{ACS_S7}{scan line 7}
+  \lineii{ACS_S9}{scan line 9}
   \lineii{ACS_SBBS}{}
   \lineii{ACS_SBSB}{}
   \lineii{ACS_SBSS}{}
@@ -1039,12 +1100,12 @@
   \lineii{ACS_SSBS}{}
   \lineii{ACS_SSSB}{}
   \lineii{ACS_SSSS}{}
-  \lineii{ACS_STERLING}{ (Not available with SGI curses)}
-  \lineii{ACS_TTEE}{}
-  \lineii{ACS_UARROW}{}
-  \lineii{ACS_ULCORNER}{}
-  \lineii{ACS_URCORNER}{}
-  \lineii{ACS_VLINE}{}
+  \lineii{ACS_STERLING}{pound sterling}
+  \lineii{ACS_TTEE}{top tee}
+  \lineii{ACS_UARROW}{up arrow}
+  \lineii{ACS_ULCORNER}{upper left corner}
+  \lineii{ACS_URCORNER}{upper right corner}
+  \lineii{ACS_VLINE}{vertical line}
 \end{tableii}
 
 The following table lists the predefined colors:
