blob: 9255e198330b77eb6470e47c3c00fb45be8100c7 [file] [log] [blame]
Fred Drakea4070ce1999-06-21 21:13:09 +00001\section{\module{curses} ---
Eric S. Raymond68996602000-07-24 03:28:40 +00002 Screen painting and input handling for character-cell terminals}
Fred Drakea4070ce1999-06-21 21:13:09 +00003
Eric S. Raymond5a007692000-08-04 07:35:41 +00004\declaremodule{standard}{curses}
Fred Drakea4070ce1999-06-21 21:13:09 +00005\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
Eric S. Raymond68996602000-07-24 03:28:40 +00006\sectionauthor{Eric Raymond}{esr@thyrsus.com}
Fred Drakea4070ce1999-06-21 21:13:09 +00007\modulesynopsis{An interface to the curses library.}
Eric S. Raymond5a007692000-08-04 07:35:41 +00008\versionadded{1.6}
Fred Drakea4070ce1999-06-21 21:13:09 +00009
10The \module{curses} module provides an interface to the curses \UNIX{}
11library, the de-facto standard for portable advanced terminal
12handling.
13
14While curses is most widely used in the \UNIX{} environment, versions
Eric S. Raymond68996602000-07-24 03:28:40 +000015are available for DOS, OS/2, and possibly other systems as well. This
16extension module is designed to match the API of ncurses, an
17open-source curses library hosted on Linux and the BSD variants of
18Unix.
Fred Drakea4070ce1999-06-21 21:13:09 +000019
20\begin{seealso}
Fred Drake5c529d32000-06-28 22:11:40 +000021 \seemodule{curses.ascii}{Utilities for working with \ASCII{}
22 characters, regardless of your locale
23 settings.}
Eric S. Raymond5a007692000-08-04 07:35:41 +000024 \seemodule{curses.textpad}{Editable text widget for curses supporting
Fred Drakeec4b2af2000-08-09 14:34:48 +000025 \program{Emacs}-like bindings.}
26 \seemodule{curses.wrapper}{Convenience function to ensure proper
27 terminal setup and resetting on
28 application entry and exit.}
Fred Drakea4070ce1999-06-21 21:13:09 +000029 \seetext{Tutorial material on using curses with Python is available
Fred Drake37f15741999-11-10 16:21:37 +000030 on the Python Web site as Andrew Kuchling's
31\citetitle[http://www.python.org/doc/howto/curses/curses.html]{Curses
Fred Drakea4070ce1999-06-21 21:13:09 +000032 Programming with Python}, at
33 \url{http://www.python.org/doc/howto/curses/curses.html}.}
34\end{seealso}
35
36
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000037\subsection{Functions \label{curses-functions}}
Fred Drakea4070ce1999-06-21 21:13:09 +000038
39The module \module{curses} defines the following exception:
Fred Drakeec4b2af2000-08-09 14:34:48 +000040
Fred Drakea4070ce1999-06-21 21:13:09 +000041\begin{excdesc}{error}
Fred Drakeec4b2af2000-08-09 14:34:48 +000042Exception raised when a curses library function returns an error.
Fred Drakea4070ce1999-06-21 21:13:09 +000043\end{excdesc}
44
Fred Drake0bccd731999-06-23 17:28:01 +000045\strong{Note:} Whenever \var{x} or \var{y} arguments to a function
46or a method are optional, they default to the current cursor location.
47Whenever \var{attr} is optional, it defaults to \constant{A_NORMAL}.
48
Fred Drakea4070ce1999-06-21 21:13:09 +000049The module \module{curses} defines the following functions:
50
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000051\begin{funcdesc}{baudrate}{}
Eric S. Raymond68996602000-07-24 03:28:40 +000052Returns the output speed of the terminal in bits per second. On
53software terminal emulators it will have a fixed high value.
54Included for historical reasons; in former times, it was used to
55write output loops for time delays and occasionally to change
56interfaces depending on the line speed.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000057\end{funcdesc}
58
59\begin{funcdesc}{beep}{}
Eric S. Raymond68996602000-07-24 03:28:40 +000060Emit a short attention sound.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000061\end{funcdesc}
62
63\begin{funcdesc}{can_change_color}{}
64Returns true or false, depending on whether the programmer can change
65the colors displayed by the terminal.
66\end{funcdesc}
67
68\begin{funcdesc}{cbreak}{}
Eric S. Raymond68996602000-07-24 03:28:40 +000069Enter cbreak mode. In cbreak mode (sometimes called ``rare'' mode)
70normal tty line buffering is turned off and characters are available
71to be read one by one. However, unlike raw mode, special characters
72(interrupt, quit, suspend, and flow control) retain their effects on
73the tty driver and calling program. Calling first \function{raw()}
74then \function{cbreak()} leaves the terminal in cbreak mode.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000075\end{funcdesc}
76
77\begin{funcdesc}{color_content}{color_number}
78Returns the intensity of the red, green, and blue (RGB) components in
79the color \var{color_number}, which must be between 0 and COLORS. A
803-tuple is returned, containing the R,G,B values for the given color,
81which will be between 0 (no component) and 1000 (maximum amount of
82component).
83\end{funcdesc}
84
85\begin{funcdesc}{color_pair}{color_number}
86Returns the attribute value for displaying text in the specified
87color. This attribute value can be combined with
88\constant{A_STANDOUT}, \constant{A_REVERSE}, and the other
89\constant{A_*} attributes. \function{pair_number()} is the counterpart to this function.
90\end{funcdesc}
91
92\begin{funcdesc}{curs_set}{visibility}
93Sets the cursor state. \var{visibility} can be set to 0, 1, or 2, for
94invisible, normal, or very visible. If the terminal supports the
95visibility requested, the previous cursor state is returned;
Eric S. Raymond68996602000-07-24 03:28:40 +000096otherwise, an exception is raised. On many terminals, the ``visible''
97mode is an underline cursor and the ``very visible'' mode is a block cursor.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +000098\end{funcdesc}
99
100\begin{funcdesc}{def_prog_mode}{}
101Saves the current terminal mode as the ``program'' mode, the mode when
102the running program is using curses. (Its counterpart is the
103``shell'' mode, for when the program is not in curses.) Subsequent calls
104to \function{reset_prog_mode()} will restore this mode.
105\end{funcdesc}
106
107\begin{funcdesc}{def_shell_mode}{}
108Saves the current terminal mode as the ``shell'' mode, the mode when
109the running program is not using curses. (Its counterpart is the
110``program'' mode, when the program is using curses capabilities.)
111Subsequent calls
112to \function{reset_shell_mode()} will restore this mode.
113\end{funcdesc}
114
115\begin{funcdesc}{delay_output}{ms}
116Inserts an \var{ms} millisecond pause in output.
117\end{funcdesc}
118
119\begin{funcdesc}{doupdate}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000120Update the physical screen. The curses library keeps two data
121structures, one representing the current physical screen contents
122and a virtual screen representing the desired next state. The
123\function{doupdate()} ground updates the physical screen to match the
124virtual screen.
125
126The virtual screen may be updated by a \method{noutrefresh()} call
127after write operations such as \method{addstr()} have been performed
128on a window. The normal \method{refresh()} call is simply
129\method{noutrefresh()} followed by \function{doupdate()}; if you have
130to update multiple windows, you can speed performance and perhaps
131reduce screen flicker by issuing \method{noutrefresh()} calls on
132all windows, followed by a single \function{doupdate()}.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000133\end{funcdesc}
134
135\begin{funcdesc}{echo}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000136Enter echo mode. In echo mode, each character input is echoed to the
137screen as it is entered.
Fred Drakea4070ce1999-06-21 21:13:09 +0000138\end{funcdesc}
139
140\begin{funcdesc}{endwin}{}
141De-initialize the library, and return terminal to normal status.
142\end{funcdesc}
143
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000144\begin{funcdesc}{erasechar}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000145Returns the user's current erase character. Under Unix operating
146systems this is a property of the controlling tty of the curses
147program, and is not set by the curses library itself.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000148\end{funcdesc}
149
150\begin{funcdesc}{filter}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000151The \function{filter()} routine, if used, must be called before
152\function{initscr()} is called. The effect is that, during those
153calls, LINES is set to 1; the capabilities clear, cup, cud, cud1,
154cuu1, cuu, vpa are disabled; and the home string is set to the value of cr.
155The effect is that the cursor is confined to the current line, and so
156are screen updates. This may be used for enabling cgaracter-at-a-time
157line editing without touching the rest of the screen.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000158\end{funcdesc}
159
160\begin{funcdesc}{flash}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000161Flash the screen. That is, change it to reverse-video and then change
162it back in a short interval. Some people prefer such as `visible bell'
163to the audible attention signal produced by \function{beep()}.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000164\end{funcdesc}
165
166\begin{funcdesc}{flushinp}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000167Flush all input buffers. This throws away any typeahead that has
168been typed by the user and has not yet been processed by the program.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000169\end{funcdesc}
170
Andrew M. Kuchlingefc43d42000-06-30 01:05:39 +0000171\begin{funcdesc}{getmouse}{}
172After \method{getch()} returns \constant{KEY_MOUSE} to signal a mouse
173event, this method should be call to retrieve the queued mouse event,
174represented as a 5-tuple
175\code{(\var{id}, \var{x}, \var{y}, \var{z}, \var{bstate})}.
176\var{id} is an ID value used to distinguish multiple devices,
177and \var{x}, \var{y}, \var{z} are the event's coordinates. (\var{z}
178is currently unused.). \var{bstate} is an integer value whose bits
179will be set to indicate the type of event, and will be the bitwise OR
180of one or more of the following constants, where \var{n} is the button
181number from 1 to 4:
182\constant{BUTTON\var{n}_PRESSED},
183\constant{BUTTON\var{n}_RELEASED},
184\constant{BUTTON\var{n}_CLICKED},
185\constant{BUTTON\var{n}_DOUBLE_CLICKED},
186\constant{BUTTON\var{n}_TRIPLE_CLICKED},
187\constant{BUTTON_SHIFT},
188\constant{BUTTON_CTRL},
189\constant{BUTTON_ALT}.
190\end{funcdesc}
191
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000192\begin{funcdesc}{getsyx}{}
193Returns the current coordinates of the virtual screen cursor in y and
194x. If leaveok is currently true, then -1,-1 is returned.
195\end{funcdesc}
196
197\begin{funcdesc}{getwin}{file}
198Reads window related data stored in the file by an earlier
199\function{putwin()} call. The routine then creates and initializes a
200new window using that data, returning the new window object.
201\end{funcdesc}
202
203\begin{funcdesc}{has_colors}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000204Returns true if the terminal can display colors; otherwise, it
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000205returns false.
206\end{funcdesc}
207
208\begin{funcdesc}{has_ic}{}
209Returns true if the terminal has insert- and delete- character
Eric S. Raymond68996602000-07-24 03:28:40 +0000210capabilities. This function is included for historical reasons only,
211as all modern software terminal emulators have such capabilities.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000212\end{funcdesc}
213
214\begin{funcdesc}{has_il}{}
215Returns true if the terminal has insert- and
216delete-line capabilities, or can simulate them using
Eric S. Raymond68996602000-07-24 03:28:40 +0000217scrolling regions. This function is included for historical reasons only,
218as all modern software terminal emulators have such capabilities.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000219\end{funcdesc}
220
221\begin{funcdesc}{has_key}{ch}
222Takes a key value \var{ch}, and returns true if the current terminal
223type recognizes a key with that value.
224\end{funcdesc}
225
226\begin{funcdesc}{halfdelay}{tenths}
227Used for half-delay mode, which is similar to cbreak mode in that
228characters typed by the user are immediately available to the program.
229However, after blocking for \var{tenths} tenths of seconds, an
230exception is raised if nothing has been typed. The value of
Eric S. Raymond68996602000-07-24 03:28:40 +0000231\var{tenths} must be a number between 1 and 255. Use \function{nocbreak()} to
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000232leave half-delay mode.
233\end{funcdesc}
234
235\begin{funcdesc}{init_color}{color_number, r, g, b}
236Changes the definition of a color, taking the number of the color to
237be changed followed by three RGB values (for the amounts of red,
238green, and blue components). The value of \var{color_number} must be
239between 0 and COLORS. Each of \var{r}, \var{g}, \var{b}, must be a
240value between 0 and 1000. When \function{init_color()} is used, all
241occurrences of that color on the screen immediately change to the new
Eric S. Raymond68996602000-07-24 03:28:40 +0000242definition. This function is a no-op on most terminals; it is active
243only if \function{can_change_color()} returns 1.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000244\end{funcdesc}
245
246\begin{funcdesc}{init_pair}{pair_number, fg, bg}
247Changes the definition of a color-pair. It takes three arguments: the
248number of the color-pair to be changed, the foreground color number,
249and the background color number. The value of \var{pair_number} must
250be between 1 and COLOR_PAIRS-1 (the 0 color pair is wired to white on
251black and cannot be changed). The value of \var{fg} and \var{bg}
252arguments must be between 0 and COLORS. If the color-pair was
253previously initialized, the screen is refreshed and all occurrences of
254that color-pair are changed to the new definition.
255\end{funcdesc}
256
257\begin{funcdesc}{initscr}{}
258Initialize the library. Returns a \class{WindowObject} which represents
259the whole screen.
260\end{funcdesc}
261
Fred Drakea4070ce1999-06-21 21:13:09 +0000262\begin{funcdesc}{isendwin}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000263Returns true if \function{endwin()} has been called (that is, the
264curses library has been deinitialized).
Fred Drakea4070ce1999-06-21 21:13:09 +0000265\end{funcdesc}
266
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000267\begin{funcdesc}{keyname}{k}
Eric S. Raymond68996602000-07-24 03:28:40 +0000268Return the name of the key numbered \var{k}. The name of a key
269generating printable ASCII character is the key's character. The name
270of a control-key combination is a two-character string consisting of a
271caret followed by the corresponding printable ASCII character. The
272name of an alt-key combination (128-255) is a string consisting of the
273prefix `M-' followed by the name of the corresponding ASCII character.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000274\end{funcdesc}
275
276\begin{funcdesc}{killchar}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000277Returns the user's current line kill character. Under Unix operating
278systems this is a property of the controlling tty of the curses
279program, and is not set by the curses library itself.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000280\end{funcdesc}
281
282\begin{funcdesc}{longname}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000283Returns a string containing the terminfo long name field describing the current
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000284terminal. The maximum length of a verbose description is 128
285characters. It is defined only after the call to
286\function{initscr()}.
287\end{funcdesc}
288
289\begin{funcdesc}{meta}{yes}
Eric S. Raymond68996602000-07-24 03:28:40 +0000290If \var{yes} is 1, allow 8-bit characters to be input. If \var{yes} is 0,
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000291allow only 7-bit chars.
292\end{funcdesc}
293
Andrew M. Kuchlingefc43d42000-06-30 01:05:39 +0000294\begin{funcdesc}{mouseinterval}{interval}
Thomas Woutersf8316632000-07-16 19:01:10 +0000295Sets the maximum time in milliseconds that can elapse between press and
Andrew M. Kuchlingefc43d42000-06-30 01:05:39 +0000296release events in order for them to be recognized as a click, and
297returns the previous interval value. The default value is 200 msec,
298or one fifth of a second.
299\end{funcdesc}
300
301\begin{funcdesc}{mousemask}{mousemask}
302Sets the mouse events to be reported, and returns a tuple
303\code{(\var{availmask}, \var{oldmask})}.
304\var{availmask} indicates which of the
305specified mouse events can be reported; on complete failure it returns
3060. \var{oldmask} is the previous value of the given window's mouse
307event mask. If this function is never called, no mouse events are
308ever reported.
309\end{funcdesc}
310
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000311\begin{funcdesc}{newpad}{nlines, ncols}
312Creates and returns a pointer to a new pad data structure with the
313given number of lines and columns. A pad is returned as a
314window object.
315
Eric S. Raymond68996602000-07-24 03:28:40 +0000316A pad is like a window, except that it is not restricted by the screen
317size, and is not necessarily associated with a particular part of the
318screen. Pads can be used when a large window is needed, and only a
319part of the window will be on the screen at one time. Automatic
320refreshes of pads (e.g., from scrolling or echoing of input) do not
321occur. The \method{refresh()} and \method{noutrefresh()} methods of a
322pad require 6 arguments to specify the part of the pad to be
323displayed and the location on the screen to be used for the display.
324The arguments are pminrow, pmincol, sminrow, smincol, smaxrow,
325smaxcol; the p arguments refer to the upper left corner of the the pad
326region to be displayed and the s arguments define a clipping box on
327the screen within which the pad region is to be displayed.
Fred Drakea4070ce1999-06-21 21:13:09 +0000328\end{funcdesc}
329
330\begin{funcdesc}{newwin}{\optional{nlines, ncols,} begin_y, begin_x}
331Return a new window, whose left-upper corner is at
332\code{(\var{begin_y}, \var{begin_x})}, and whose height/width is
Fred Drake0bccd731999-06-23 17:28:01 +0000333\var{nlines}/\var{ncols}.
334
335By default, the window will extend from the
Fred Drakea4070ce1999-06-21 21:13:09 +0000336specified position to the lower right corner of the screen.
337\end{funcdesc}
338
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000339\begin{funcdesc}{nl}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000340Enter newline mode. This mode translates the return key into newline
341on input, and translates newline into return and line-feed on output.
342Newline mode is initially on.
Fred Drakea4070ce1999-06-21 21:13:09 +0000343\end{funcdesc}
344
345\begin{funcdesc}{nocbreak}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000346Leave cbreak mode. Return to normal ``cooked'' mode with line buffering.
Fred Drakea4070ce1999-06-21 21:13:09 +0000347\end{funcdesc}
348
Fred Drakea4070ce1999-06-21 21:13:09 +0000349\begin{funcdesc}{noecho}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000350Leave echo mode. Echoing of input characters is turned off,
Fred Drakea4070ce1999-06-21 21:13:09 +0000351\end{funcdesc}
352
Fred Drakea4070ce1999-06-21 21:13:09 +0000353\begin{funcdesc}{nonl}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000354Leave newline mode. Disable translation of return into newline on
355input, and disable low-level translation of newline into
356newline/return on output (but this does not change the behavior of
Fred Drakee1b304d2000-07-24 19:35:52 +0000357\code{addch('\e n')}, which always does the equivalent of return and
358line feed on the virtual screen). With translation off, curses can
359sometimes speed up vertical motion a little; also, it will be able to
360detect the return key on input.
Fred Drakea4070ce1999-06-21 21:13:09 +0000361\end{funcdesc}
362
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000363\begin{funcdesc}{noqiflush}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000364When the noqiflush routine is used, normal flush of input and
365output queues associated with the INTR, QUIT and SUSP
366characters will not be done. You may want to call
367\function{noqiflush()} in a signal handler if you want output
368to continue as though the interrupt had not occurred, after the
369handler exits.
Fred Drakea4070ce1999-06-21 21:13:09 +0000370\end{funcdesc}
371
372\begin{funcdesc}{noraw}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000373Leave raw mode. Return to normal ``cooked'' mode with line buffering.
Fred Drakea4070ce1999-06-21 21:13:09 +0000374\end{funcdesc}
375
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000376\begin{funcdesc}{pair_content}{pair_number}
377Returns a tuple \var{(fg,bg)} containing the colors for the requested
378color pair. The value of \var{pair_number} must be between 0 and
379COLOR_PAIRS-1.
Fred Drakea4070ce1999-06-21 21:13:09 +0000380\end{funcdesc}
381
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000382\begin{funcdesc}{pair_number}{attr}
383Returns the number of the color-pair set by the attribute value \var{attr}.
384\function{color_pair()} is the counterpart to this function.
Fred Drakea4070ce1999-06-21 21:13:09 +0000385\end{funcdesc}
386
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000387\begin{funcdesc}{putp}{string}
Eric S. Raymond68996602000-07-24 03:28:40 +0000388Equivalent to \code{tputs(str, 1, putchar)}; emits the value of a
389specified terminfo capability for the current terminal. Note that the
390output of putp always goes to standard output.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000391\end{funcdesc}
392
393\begin{funcdesc}{qiflush}{ \optional{flag} }
394If \var{flag} is false, the effect is the same as calling
395\function{noqiflush()}. If \var{flag} is true, or no argument is
396provided, the queues will be flushed when these control characters are
397read.
398\end{funcdesc}
399
400\begin{funcdesc}{raw}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000401Enter raw mode. In raw mode, normal line buffering and
402processing of interrupt, quit, suspend, and flow control keys are
403turned off; characters are presented to curses input functions one
404by one.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000405\end{funcdesc}
406
407\begin{funcdesc}{reset_prog_mode}{}
408Restores the terminal to ``program'' mode, as previously saved
409by \function{def_prog_mode()}.
410\end{funcdesc}
411
412\begin{funcdesc}{reset_shell_mode}{}
413Restores the terminal to ``shell'' mode, as previously saved
414by \function{def_shell_mode()}.
415\end{funcdesc}
416
417\begin{funcdesc}{setsyx}{y, x}
418Sets the virtual screen cursor to \var{y}, \var{x}.
419If \var{y} and \var{x} are both -1, then leaveok is set.
420\end{funcdesc}
421
422\begin{funcdesc}{start_color}{}
423Must be called if the programmer wants to use colors, and before any
424other color manipulation routine is called. It is good
425practice to call this routine right after \function{initscr()}.
426
427\function{start_color()} initializes eight basic colors (black, red,
428green, yellow, blue, magenta, cyan, and white), and two global
429variables in the \module{curses} module, COLORS and COLOR_PAIRS,
430containing the maximum number of colors and color-pairs the terminal
431can support. It also restores the colors on the terminal to the
432values they had when the terminal was just turned on.
433\end{funcdesc}
434
435\begin{funcdesc}{termattrs}{}
436Returns a logical OR of all video attributes supported by the
437terminal. This information is useful when a curses program needs
438complete control over the appearance of the screen.
439\end{funcdesc}
440
441\begin{funcdesc}{termname}{}
442Returns the value of the environment variable TERM, truncated to 14
443characters.
444\end{funcdesc}
445
Andrew M. Kuchling1962fb52000-07-26 02:59:13 +0000446\begin{funcdesc}{tigetflag}{capname}
447Returns the value of the Boolean capability corresponding to the
448terminfo capability name \var{capname}. The value -1 is returned if
449\var{capname} is not a Boolean capability, or 0 if it is canceled or
450absent from the terminal description.
451\end{funcdesc}
452
453\begin{funcdesc}{tigetnum}{capname}
454Returns the value of the numeric capability corresponding to the
455terminfo capability name \var{capname}. The value -2 is returned if
456\var{capname} is not a numeric capability, or -1 if it is canceled or absent
457from the terminal description.
458\end{funcdesc}
459
460\begin{funcdesc}{tigetstr}{capname}
461Returns the value of the string capability corresponding to the
462terminfo capability name \var{capname}. \code{None} is returned if
463\var{capname} is not a string capability, or is canceled or absent
464from the terminal description.
465\end{funcdesc}
466
Andrew M. Kuchlingd24ff442000-06-21 01:42:51 +0000467\begin{funcdesc}{typeahead}{fd}
468Specifies that the file descriptor \var{fd} be used for typeahead
469checking. If \var{fd} is -1, then no typeahead checking is done.
470
471The curses library does ``line-breakout optimization'' by looking for
472typeahead periodically while updating the screen. If input is found,
473and it is coming from a tty, the current update is postponed until
474refresh or doupdate is called again, allowing faster response to
475commands typed in advance. This function allows specifying a different
476file descriptor for typeahead checking.
477\end{funcdesc}
478
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000479\begin{funcdesc}{unctrl}{ch}
480Returns a string which is a printable representation of the character
481\var{ch}. Control characters are displayed as a caret followed by the
482character, for example as \verb|^C|. Printing characters are left as they
483are.
484\end{funcdesc}
485
486\begin{funcdesc}{ungetch}{ch}
487Push \var{ch} so the next \method{getch()} will return it.
488\strong{Note:} only one \var{ch} can be pushed before \method{getch()}
489is called.
490\end{funcdesc}
491
Andrew M. Kuchlingefc43d42000-06-30 01:05:39 +0000492\begin{funcdesc}{ungetmouse}{id, x, y, z, bstate}
493Push a \constant{KEY_MOUSE} event onto the input queue, associating
494the given state data with it.
495\end{funcdesc}
496
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000497\begin{funcdesc}{use_env}{flag}
498If used, this function should be called before \function{initscr} or
499newterm are called. When \var{flag} is false, the values of
500lines and columns specified in the terminfo database will be
501used, even if environment variables LINES and COLUMNS (used by
502default) are set, or if curses is running in a window (in which
503case default behavior would be to use the window size if LINES
504and COLUMNS are not set).
505\end{funcdesc}
Fred Drakea4070ce1999-06-21 21:13:09 +0000506
507\subsection{Window Objects \label{curses-window-objects}}
508
509Window objects, as returned by \function{initscr()} and
510\function{newwin()} above, have the
511following methods:
512
Fred Drakea4070ce1999-06-21 21:13:09 +0000513\begin{methoddesc}{addch}{\optional{y, x,} ch\optional{, attr}}
514\strong{Note:} A \emph{character} means a C character (i.e., an
515\ASCII{} code), rather then a Python character (a string of length 1).
516(This note is true whenever the documentation mentions a character.)
Eric S. Raymond68996602000-07-24 03:28:40 +0000517The builtin \function{ord()} is handy for conveying strings to codes.
Fred Drakea4070ce1999-06-21 21:13:09 +0000518
519Paint character \var{ch} at \code{(\var{y}, \var{x})} with attributes
520\var{attr}, overwriting any character previously painter at that
521location. By default, the character position and attributes are the
522current settings for the window object.
523\end{methoddesc}
524
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000525\begin{methoddesc}{addnstr}{\optional{y, x,} str, n\optional{, attr}}
526Paint at most \var{n} characters of the
527string \var{str} at \code{(\var{y}, \var{x})} with attributes
Fred Drake0bccd731999-06-23 17:28:01 +0000528\var{attr}, overwriting anything previously on the display.
Fred Drakea4070ce1999-06-21 21:13:09 +0000529\end{methoddesc}
530
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000531\begin{methoddesc}{addstr}{\optional{y, x,} str\optional{, attr}}
532Paint the string \var{str} at \code{(\var{y}, \var{x})} with attributes
533\var{attr}, overwriting anything previously on the display.
Fred Drakea4070ce1999-06-21 21:13:09 +0000534\end{methoddesc}
535
536\begin{methoddesc}{attroff}{attr}
Eric S. Raymond68996602000-07-24 03:28:40 +0000537Remove attribute \var{attr} from the ``background'' set applied to all
538writes to the current window.
Fred Drakea4070ce1999-06-21 21:13:09 +0000539\end{methoddesc}
540
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000541\begin{methoddesc}{attron}{attr}
Eric S. Raymond68996602000-07-24 03:28:40 +0000542Add attribute \var{attr} from the ``background'' set applied to all
543writes to the current window.
Fred Drakea4070ce1999-06-21 21:13:09 +0000544\end{methoddesc}
545
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000546\begin{methoddesc}{attrset}{attr}
Eric S. Raymond68996602000-07-24 03:28:40 +0000547Set the ``background'' set of attributes to \var{attr}. This set is
548initially 0 (no attributes).
Fred Drakea4070ce1999-06-21 21:13:09 +0000549\end{methoddesc}
550
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000551\begin{methoddesc}{bkgd}{ch\optional{, attr}}
552Sets the background property of the window to the character \var{ch},
553with attributes \var{attr}. The change is then applied to every
554character position in that window:
555\begin{itemize}
Eric S. Raymondb924bd42000-07-27 21:10:02 +0000556\item
557The attribute of every character in the window is
558changed to the new background attribute.
559\item
560Wherever the former background character appears,
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000561it is changed to the new background character.
562\end{itemize}
563
564\end{methoddesc}
565
566\begin{methoddesc}{bkgdset}{ch\optional{, attr}}
567Sets the window's background. A window's background consists of a
568character and any combination of attributes. The attribute part of
569the background is combined (OR'ed) with all non-blank characters that
570are written into the window. Both the character and attribute parts
571of the background are combined with the blank characters. The
572background becomes a property of the character and moves with the
573character through any scrolling and insert/delete line/character
574operations.
Fred Drakea4070ce1999-06-21 21:13:09 +0000575\end{methoddesc}
576
Fred Drake0bccd731999-06-23 17:28:01 +0000577\begin{methoddesc}{border}{\optional{ls\optional{, rs\optional{, ts\optional{,
578 bs\optional{, tl\optional{, tr\optional{,
579 bl\optional{, br}}}}}}}}}
580Draw a border around the edges of the window. Each parameter specifies
581the character to use for a specific part of the border; see the table
582below for more details. The characters must be specified as integers;
583using one-character strings will cause \exception{TypeError} to be
584raised.
585
586\strong{Note:} A \code{0} value for any parameter will cause the
587default character to be used for that parameter. Keyword parameters
588can \emph{not} be used. The defaults are listed in this table:
589
590\begin{tableiii}{l|l|l}{var}{Parameter}{Description}{Default value}
591 \lineiii{ls}{Left side}{\constant{ACS_VLINE}}
592 \lineiii{rs}{Right side}{\constant{ACS_VLINE}}
593 \lineiii{ts}{Top}{\constant{ACS_HLINE}}
594 \lineiii{bs}{Bottom}{\constant{ACS_HLINE}}
595 \lineiii{tl}{Upper-left corner}{\constant{ACS_ULCORNER}}
596 \lineiii{tr}{Upper-right corner}{\constant{ACS_URCORNER}}
597 \lineiii{bl}{Bottom-left corner}{\constant{ACS_BLCORNER}}
598 \lineiii{br}{Bottom-right corner}{\constant{ACS_BRCORNER}}
599\end{tableiii}
Fred Drakea4070ce1999-06-21 21:13:09 +0000600\end{methoddesc}
601
Fred Drake0bccd731999-06-23 17:28:01 +0000602\begin{methoddesc}{box}{\optional{vertch, horch}}
603Similar to \method{border()}, but both \var{ls} and \var{rs} are
604\var{vertch} and both \var{ts} and {bs} are \var{horch}. The default
605corner characters are always used by this function.
Fred Drakea4070ce1999-06-21 21:13:09 +0000606\end{methoddesc}
607
Fred Drakea4070ce1999-06-21 21:13:09 +0000608\begin{methoddesc}{clear}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000609Like \method{erase()}, but also causes the whole window to be repainted
Fred Drakea4070ce1999-06-21 21:13:09 +0000610upon next call to \method{refresh()}.
611\end{methoddesc}
612
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000613\begin{methoddesc}{clearok}{yes}
614If \var{yes} is 1, the next call to \method{refresh()}
Eric S. Raymond68996602000-07-24 03:28:40 +0000615will clear the window completely.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000616\end{methoddesc}
617
Fred Drakea4070ce1999-06-21 21:13:09 +0000618\begin{methoddesc}{clrtobot}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000619Erase from cursor to the end of the window: all lines below the cursor
Fred Drakea4070ce1999-06-21 21:13:09 +0000620are deleted, and then the equivalent of \method{clrtoeol()} is performed.
621\end{methoddesc}
622
623\begin{methoddesc}{clrtoeol}{}
624Erase from cursor to the end of the line.
625\end{methoddesc}
626
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000627\begin{methoddesc}{cursyncup}{}
628Updates the current cursor position of all the ancestors of the window
629to reflect the current cursor position of the window.
Fred Drakea4070ce1999-06-21 21:13:09 +0000630\end{methoddesc}
631
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000632\begin{methoddesc}{delch}{\optional{x, y}}
633Delete any character at \code{(\var{y}, \var{x})}.
Fred Drakea4070ce1999-06-21 21:13:09 +0000634\end{methoddesc}
635
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000636\begin{methoddesc}{deleteln}{}
637Delete the line under the cursor. All following lines are moved up
638by 1 line.
639\end{methoddesc}
640
641\begin{methoddesc}{derwin}{\optional{nlines, ncols,} begin_y, begin_y}
642An abbreviation for ``derive window'', \method{derwin()} is the same
643as calling \method{subwin()}, except that \var{begin_y} and
644\var{begin_x} are relative to the origin of the window, rather than
645relative to the entire screen. Returns a window object for the
646derived window.
647\end{methoddesc}
648
649\begin{methoddesc}{echochar}{ch\optional{, attr}}
650Add character \var{ch} with attribute \var{attr}, and immediately
Eric S. Raymond68996602000-07-24 03:28:40 +0000651call \method{refresh} on the window.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000652\end{methoddesc}
653
Andrew M. Kuchlingefc43d42000-06-30 01:05:39 +0000654\begin{methoddesc}{enclose}{y, x}
655Tests whether the given pair of screen-relative character-cell
656coordinates are enclosed by the given window, returning true or
657false. It is useful for determining what subset of the screen
658windows enclose the location of a mouse event.
659\end{methoddesc}
660
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000661\begin{methoddesc}{erase}{}
662Clear the window.
663\end{methoddesc}
664
665\begin{methoddesc}{getbegyx}{}
666Return a tuple \code{(\var{y}, \var{x})} of co-ordinates of upper-left
667corner.
Fred Drakea4070ce1999-06-21 21:13:09 +0000668\end{methoddesc}
669
670\begin{methoddesc}{getch}{\optional{x, y}}
671Get a character. Note that the integer returned does \emph{not} have to
672be in \ASCII{} range: function keys, keypad keys and so on return numbers
673higher then 256. In no-delay mode, an exception is raised if there is
674no input.
675\end{methoddesc}
676
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000677\begin{methoddesc}{getkey}{\optional{x, y}}
678Get a character, returning a string instead of an integer, as
679\method{getch()} does. Function keys, keypad keys and so on return a
680multibyte string containing the key name. In no-delay mode, an
681exception is raised if there is no input.
682\end{methoddesc}
683
684\begin{methoddesc}{getmaxyx}{}
685Return a tuple \code{(\var{y}, \var{x})} of the height and width of
686the window.
687\end{methoddesc}
688
689\begin{methoddesc}{getparyx}{}
690Returns the beginning coordinates of this window relative to its
691parent window into two integer variables y and x. Returns
692\code{-1,-1} if this window has no parent.
693\end{methoddesc}
694
Fred Drakea4070ce1999-06-21 21:13:09 +0000695\begin{methoddesc}{getstr}{\optional{x, y}}
696Read a string from the user, with primitive line editing capacity.
697\end{methoddesc}
698
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000699\begin{methoddesc}{getyx}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000700Return a tuple \code{(\var{y}, \var{x})} of current cursor position
701relative to the window's upper-left corner.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000702\end{methoddesc}
703
704\begin{methoddesc}{hline}{\optional{y, x,} ch, n}
705Display a horizontal line starting at \code{(\var{y}, \var{x})} with
706length \var{n} consisting of the character \var{ch}.
707\end{methoddesc}
708
709\begin{methoddesc}{idcok}{flag}
710If \var{flag} is false, curses no longer considers using the hardware
711insert/delete character feature of the terminal; if \var{flag} is
712true, use of character insertion and deletion is enabled. When curses
713is first initialized, use of character insert/delete is enabled by
714default.
715\end{methoddesc}
716
717\begin{methoddesc}{idlok}{yes}
718If called with \var{yes} equal to 1, \module{curses} will try and use
719hardware line editing facilities. Otherwise, line insertion/deletion
720are disabled.
721\end{methoddesc}
722
723\begin{methoddesc}{immedok}{flag}
724If \var{flag} is true, any change in the window image
725automatically causes the window to be refreshed; you no longer
726have to call \method{refresh()} yourself. However, it may
727degrade performance considerably, due to repeated calls to
728wrefresh. This option is disabled by default.
729\end{methoddesc}
730
Fred Drakea4070ce1999-06-21 21:13:09 +0000731\begin{methoddesc}{inch}{\optional{x, y}}
732Return the character at the given position in the window. The bottom
7338 bits are the character proper, and upper bits are the attributes.
734\end{methoddesc}
735
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000736\begin{methoddesc}{insch}{\optional{y, x,} ch\optional{, attr}}
737Paint character \var{ch} at \code{(\var{y}, \var{x})} with attributes
738\var{attr}, moving the line from position \var{x} right by one
739character.
Fred Drakea4070ce1999-06-21 21:13:09 +0000740\end{methoddesc}
741
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000742\begin{methoddesc}{insdelln}{nlines}
743Inserts \var{nlines} lines into the specified window above the current
744line. The \var{nlines} bottom lines are lost. For negative
745\var{nlines}, delete \var{nlines} lines starting with the one under
746the cursor, and move the remaining lines up. The bottom \var{nlines}
747lines are cleared. The current cursor position remains the same.
748\end{methoddesc}
749
750\begin{methoddesc}{insertln}{}
751Insert a blank line under the cursor. All following lines are moved
752down by 1 line.
753\end{methoddesc}
754
755\begin{methoddesc}{insnstr}{\optional{y, x, } str, n \optional{, attr}}
756Insert a character string (as many characters as will fit on the line)
757before the character under the cursor, up to \var{n} characters.
758If \var{n} is zero or negative,
759the entire string is inserted.
760All characters to the right of
761the cursor are shifted right, with the the rightmost characters on the
762line being lost. The cursor position does not change (after moving to
763\var{y}, \var{x}, if specified).
764\end{methoddesc}
765
766\begin{methoddesc}{insstr}{\optional{y, x, } str \optional{, attr}}
767Insert a character string (as many characters as will fit on the line)
768before the character under the cursor. All characters to the right of
769the cursor are shifted right, with the the rightmost characters on the
770line being lost. The cursor position does not change (after moving to
771\var{y}, \var{x}, if specified).
772\end{methoddesc}
773
774\begin{methoddesc}{instr}{\optional{y, x} \optional{, n}}
775Returns a string of characters, extracted from the window starting at
776the current cursor position, or at \var{y}, \var{x} if specified.
777Attributes are stripped from the characters. If \var{n} is specified,
778\method{instr()} returns return a string at most \var{n} characters
779long (exclusive of the trailing NUL).
780\end{methoddesc}
781
782\begin{methoddesc}{is_linetouched}{\var{line}}
783Returns true if the specified line was modified since the last call to
784\method{refresh()}; otherwise returns false. Raises a
785\exception{curses.error} exception if \var{line} is not valid
786for the given window.
787\end{methoddesc}
788
789\begin{methoddesc}{is_wintouched}{}
790Returns true if the specified window was modified since the last call to
791\method{refresh()}; otherwise returns false.
792\end{methoddesc}
793
794\begin{methoddesc}{keypad}{yes}
795If \var{yes} is 1, escape sequences generated by some keys (keypad,
796function keys) will be interpreted by \module{curses}.
797If \var{yes} is 0, escape sequences will be left as is in the input
798stream.
Fred Drakea4070ce1999-06-21 21:13:09 +0000799\end{methoddesc}
800
801\begin{methoddesc}{leaveok}{yes}
Eric S. Raymond68996602000-07-24 03:28:40 +0000802If \var{yes} is 1, cursor is left where it is on update, instead of
803being at ``cursor position.'' This reduces cursor movement where
804possible. If possible the cursor will be made invisible.
Fred Drakea4070ce1999-06-21 21:13:09 +0000805
Eric S. Raymond68996602000-07-24 03:28:40 +0000806If \var{yes} is 0, cursor will always be at ``cursor position'' after
807an update.
Fred Drakea4070ce1999-06-21 21:13:09 +0000808\end{methoddesc}
809
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000810\begin{methoddesc}{move}{new_y, new_x}
811Move cursor to \code{(\var{new_y}, \var{new_x})}.
Fred Drakea4070ce1999-06-21 21:13:09 +0000812\end{methoddesc}
813
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000814\begin{methoddesc}{mvderwin}{y, x}
815Moves the window inside its parent window. The screen-relative
816parameters of the window are not changed. This routine is used to
817display different parts of the parent window at the same physical
818position on the screen.
819\end{methoddesc}
Fred Drakea4070ce1999-06-21 21:13:09 +0000820
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000821\begin{methoddesc}{mvwin}{new_y, new_x}
822Move the window so its upper-left corner is at \code{(\var{new_y}, \var{new_x})}.
Fred Drakea4070ce1999-06-21 21:13:09 +0000823\end{methoddesc}
824
825\begin{methoddesc}{nodelay}{yes}
826If \var{yes} is 1, \method{getch()} will be non-blocking.
827\end{methoddesc}
828
829\begin{methoddesc}{notimeout}{yes}
830If \var{yes} is 1, escape sequences will not be timed out.
831
832If \var{yes} is 0, after a few milliseconds, an escape sequence will
833not be interpreted, and will be left in the input stream as is.
834\end{methoddesc}
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000835
836\begin{methoddesc}{noutrefresh}{}
Eric S. Raymond65983372000-08-09 21:49:31 +0000837Mark for refresh but wait. This function updates the data structure
838representing the desired state of the window, but does not force
839an update of the physical screen.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000840\end{methoddesc}
841
842\begin{methoddesc}{putwin}{file}
843Writes all data associated with the window into the provided file
844object. This information can be later retrieved using the
845\function{getwin()} function.
846
847\end{methoddesc}
848
849\begin{methoddesc}{redrawln}{beg, num}
850Indicates that the \var{num} screen lines, starting at line \var{beg},
851are corrupted and should be completely redrawn on the next
852\method{refresh()} call.
853\end{methoddesc}
854
855\begin{methoddesc}{redrawwin}{}
856Touches the entire window, causing it to be completely redrawn on the
857next \method{refresh()} call.
858\end{methoddesc}
859
860\begin{methoddesc}{refresh}{ \optional{pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol} }
861Update the display immediately (sync actual screen with previous
862drawing/deleting methods).
863
864The 6 optional arguments can only be specified when the window is a
865pad created with \function{newpad()}. The additional parameters are
866needed to indicate what part of the pad and screen are involved.
867\var{pminrow} and \var{pmincol} specify the upper left-hand corner of the
868rectangle to be displayed in the pad. \var{sminrow}, \var{smincol},
869\var{smaxrow}, and \var{smaxcol} specify the edges of the rectangle to be displayed on the screen. The lower right-hand corner of the
870rectangle to be displayed in the pad is calculated from the screen
871coordinates, since the rectangles must be the same size. Both
872rectangles must be entirely contained within their respective
873structures. Negative values of \var{pminrow}, \var{pmincol},
874\var{sminrow}, or \var{smincol} are treated as if they were zero.
875\end{methoddesc}
876
877\begin{methoddesc}{scroll}{\optional{lines\code{ = 1}}}
878Scroll the screen upward by \var{lines} lines.
879\end{methoddesc}
880
881\begin{methoddesc}{scrollok}{flag}
882Controls what happens when the cursor of a window is moved off the
Eric S. Raymond68996602000-07-24 03:28:40 +0000883edge of the window or scrolling region, either as a result of a
884newline action on the bottom line, or typing the last character
885of the last line. If \var{flag} is false, the cursor is left
886on the bottom line. If \var{flag} is true, the window is
887scrolled up one line. Note that in order to get the physical
888scrolling effect on the terminal, it is also necessary to call
889\method{idlok()}.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000890\end{methoddesc}
891
892\begin{methoddesc}{setscrreg}{top, bottom}
893Set the scrolling region from line \var{top} to line \var{bottom}. All
894scrolling actions will take place in this region.
895\end{methoddesc}
896
897\begin{methoddesc}{standend}{}
Eric S. Raymond68996602000-07-24 03:28:40 +0000898Turn off the standout attribute. On some terminals this has the
899side effect of turning off all attributes.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000900\end{methoddesc}
901
902\begin{methoddesc}{standout}{}
903Turn on attribute \var{A_STANDOUT}.
904\end{methoddesc}
905
906\begin{methoddesc}{subpad}{\optional{nlines, ncols,} begin_y, begin_y}
907Return a sub-window, whose upper-left corner is at
908\code{(\var{begin_y}, \var{begin_x})}, and whose width/height is
909\var{ncols}/\var{nlines}.
910\end{methoddesc}
911
912\begin{methoddesc}{subwin}{\optional{nlines, ncols,} begin_y, begin_y}
913Return a sub-window, whose upper-left corner is at
914\code{(\var{begin_y}, \var{begin_x})}, and whose width/height is
915\var{ncols}/\var{nlines}.
916
917By default, the sub-window will extend from the
918specified position to the lower right corner of the window.
919\end{methoddesc}
920
921\begin{methoddesc}{syncdown}{}
922Touches each location in the window that has been touched in any of
923its ancestor windows. This routine is called by \method{refresh()},
924so it should almost never be necessary to call it manually.
925\end{methoddesc}
926
927\begin{methoddesc}{syncok}{flag}
928If called with \var{flag} set to true, then \method{syncup()} is
929called automatically whenever there is a change in the window.
930\end{methoddesc}
931
932\begin{methoddesc}{syncup}{}
933Touches all locations in ancestors of the window that have been changed in
934the window.
935\end{methoddesc}
936
Andrew M. Kuchlingd24ff442000-06-21 01:42:51 +0000937\begin{methoddesc}{timeout}{delay}
Thomas Woutersf8316632000-07-16 19:01:10 +0000938Sets blocking or non-blocking read behavior for the window. If
Andrew M. Kuchlingd24ff442000-06-21 01:42:51 +0000939\var{delay} is negative, blocking read is used, which will wait
940indefinitely for input). If \var{delay} is zero, then non-blocking
941read is used, and -1 will be returned by \method{getch()} if no input
942is waiting. If \var{delay} is positive, then \method{getch()} will
943block for \var{delay} milliseconds, and return -1 if there is still no
944input at the end of that time.
945\end{methoddesc}
946
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000947\begin{methoddesc}{touchline}{start, count}
948Pretend \var{count} lines have been changed, starting with line
949\var{start}.
950\end{methoddesc}
951
952\begin{methoddesc}{touchwin}{}
953Pretend the whole window has been changed, for purposes of drawing
954optimizations.
955\end{methoddesc}
956
957\begin{methoddesc}{untouchwin}{}
958Marks all lines in the window as unchanged since the last call to
959\method{refresh()}.
960\end{methoddesc}
961
962\begin{methoddesc}{vline}{\optional{y, x,} ch, n}
963Display a vertical line starting at \code{(\var{y}, \var{x})} with
964length \var{n} consisting of the character \var{ch}.
965\end{methoddesc}
966
967\subsection{Constants}
968
969The \module{curses} module defines the following data members:
970
971\begin{datadesc}{version}
972A string representing the current version of the module.
973Also available as \constant{__version__}.
974\end{datadesc}
975
Fred Drakeec4b2af2000-08-09 14:34:48 +0000976Several constants are available to specify character cell attributes:
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000977
Fred Drakeec4b2af2000-08-09 14:34:48 +0000978\begin{tableii}{l|l}{code}{Attribute}{Meaning}
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000979 \lineii{A_ALTCHARSET}{Alternate character set mode.}
980 \lineii{A_BLINK}{Blink mode.}
981 \lineii{A_BOLD}{Bold mode.}
982 \lineii{A_DIM}{Dim mode.}
983 \lineii{A_NORMAL}{Normal attribute.}
984 \lineii{A_STANDOUT}{Standout mode.}
985 \lineii{A_UNDERLINE}{Underline mode.}
986\end{tableii}
987
988Keys are referred to by integer constants with names starting with
Fred Drakeec4b2af2000-08-09 14:34:48 +0000989\samp{KEY_}. The exact keycaps available are system dependent.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000990
991% XXX this table is far too large!
992% XXX should this table be alphabetized?
993
Fred Drakeec4b2af2000-08-09 14:34:48 +0000994\begin{tableii}{l|l}{code}{Key constant}{Key}
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +0000995 \lineii{KEY_MIN}{Minimum key value}
996 \lineii{KEY_BREAK}{ Break key (unreliable) }
997 \lineii{KEY_DOWN}{ Down-arrow }
998 \lineii{KEY_UP}{ Up-arrow }
999 \lineii{KEY_LEFT}{ Left-arrow }
1000 \lineii{KEY_RIGHT}{ Right-arrow }
1001 \lineii{KEY_HOME}{ Home key (upward+left arrow) }
1002 \lineii{KEY_BACKSPACE}{ Backspace (unreliable) }
1003 \lineii{KEY_F0}{ Function keys. Up to 64 function keys are supported. }
1004 \lineii{KEY_F\var{n}}{ Value of function key \var{n} }
1005 \lineii{KEY_DL}{ Delete line }
1006 \lineii{KEY_IL}{ Insert line }
1007 \lineii{KEY_DC}{ Delete character }
1008 \lineii{KEY_IC}{ Insert char or enter insert mode }
1009 \lineii{KEY_EIC}{ Exit insert char mode }
1010 \lineii{KEY_CLEAR}{ Clear screen }
1011 \lineii{KEY_EOS}{ Clear to end of screen }
1012 \lineii{KEY_EOL}{ Clear to end of line }
1013 \lineii{KEY_SF}{ Scroll 1 line forward }
1014 \lineii{KEY_SR}{ Scroll 1 line backward (reverse) }
1015 \lineii{KEY_NPAGE}{ Next page }
1016 \lineii{KEY_PPAGE}{ Previous page }
1017 \lineii{KEY_STAB}{ Set tab }
1018 \lineii{KEY_CTAB}{ Clear tab }
1019 \lineii{KEY_CATAB}{ Clear all tabs }
1020 \lineii{KEY_ENTER}{ Enter or send (unreliable) }
1021 \lineii{KEY_SRESET}{ Soft (partial) reset (unreliable) }
1022 \lineii{KEY_RESET}{ Reset or hard reset (unreliable) }
1023 \lineii{KEY_PRINT}{ Print }
1024 \lineii{KEY_LL}{ Home down or bottom (lower left) }
1025 \lineii{KEY_A1}{ Upper left of keypad }
1026 \lineii{KEY_A3}{ Upper right of keypad }
1027 \lineii{KEY_B2}{ Center of keypad }
1028 \lineii{KEY_C1}{ Lower left of keypad }
1029 \lineii{KEY_C3}{ Lower right of keypad }
1030 \lineii{KEY_BTAB}{ Back tab }
1031 \lineii{KEY_BEG}{ Beg (beginning) }
1032 \lineii{KEY_CANCEL}{ Cancel }
1033 \lineii{KEY_CLOSE}{ Close }
1034 \lineii{KEY_COMMAND}{ Cmd (command) }
1035 \lineii{KEY_COPY}{ Copy }
1036 \lineii{KEY_CREATE}{ Create }
1037 \lineii{KEY_END}{ End }
1038 \lineii{KEY_EXIT}{ Exit }
1039 \lineii{KEY_FIND}{ Find }
1040 \lineii{KEY_HELP}{ Help }
1041 \lineii{KEY_MARK}{ Mark }
1042 \lineii{KEY_MESSAGE}{ Message }
1043 \lineii{KEY_MOVE}{ Move }
1044 \lineii{KEY_NEXT}{ Next }
1045 \lineii{KEY_OPEN}{ Open }
1046 \lineii{KEY_OPTIONS}{ Options }
1047 \lineii{KEY_PREVIOUS}{ Prev (previous) }
1048 \lineii{KEY_REDO}{ Redo }
1049 \lineii{KEY_REFERENCE}{ Ref (reference) }
1050 \lineii{KEY_REFRESH}{ Refresh }
1051 \lineii{KEY_REPLACE}{ Replace }
1052 \lineii{KEY_RESTART}{ Restart }
1053 \lineii{KEY_RESUME}{ Resume }
1054 \lineii{KEY_SAVE}{ Save }
1055 \lineii{KEY_SBEG}{ Shifted Beg (beginning) }
1056 \lineii{KEY_SCANCEL}{ Shifted Cancel }
1057 \lineii{KEY_SCOMMAND}{ Shifted Command }
1058 \lineii{KEY_SCOPY}{ Shifted Copy }
1059 \lineii{KEY_SCREATE}{ Shifted Create }
1060 \lineii{KEY_SDC}{ Shifted Delete char }
1061 \lineii{KEY_SDL}{ Shifted Delete line }
1062 \lineii{KEY_SELECT}{ Select }
1063 \lineii{KEY_SEND}{ Shifted End }
1064 \lineii{KEY_SEOL}{ Shifted Clear line }
1065 \lineii{KEY_SEXIT}{ Shifted Dxit }
1066 \lineii{KEY_SFIND}{ Shifted Find }
1067 \lineii{KEY_SHELP}{ Shifted Help }
1068 \lineii{KEY_SHOME}{ Shifted Home }
1069 \lineii{KEY_SIC}{ Shifted Input }
1070 \lineii{KEY_SLEFT}{ Shifted Left arrow }
1071 \lineii{KEY_SMESSAGE}{ Shifted Message }
1072 \lineii{KEY_SMOVE}{ Shifted Move }
1073 \lineii{KEY_SNEXT}{ Shifted Next }
1074 \lineii{KEY_SOPTIONS}{ Shifted Options }
1075 \lineii{KEY_SPREVIOUS}{ Shifted Prev }
1076 \lineii{KEY_SPRINT}{ Shifted Print }
1077 \lineii{KEY_SREDO}{ Shifted Redo }
1078 \lineii{KEY_SREPLACE}{ Shifted Replace }
1079 \lineii{KEY_SRIGHT}{ Shifted Right arrow }
1080 \lineii{KEY_SRSUME}{ Shifted Resume }
1081 \lineii{KEY_SSAVE}{ Shifted Save }
1082 \lineii{KEY_SSUSPEND}{ Shifted Suspend }
1083 \lineii{KEY_SUNDO}{ Shifted Undo }
1084 \lineii{KEY_SUSPEND}{ Suspend }
1085 \lineii{KEY_UNDO}{ Undo }
1086 \lineii{KEY_MOUSE}{ Mouse event has occurred }
1087 \lineii{KEY_RESIZE}{ Terminal resize event }
1088 \lineii{KEY_MAX}{Maximum key value}
1089\end{tableii}
1090
Fred Drakeec4b2af2000-08-09 14:34:48 +00001091On VT100s and their software emulations, such as X terminal emulators,
1092there are normally at least four function keys (\constant{KEY_F1},
1093\constant{KEY_F2}, \constant{KEY_F3}, \constant{KEY_F4}) available,
1094and the arrow keys mapped to \constant{KEY_UP}, \constant{KEY_DOWN},
1095\constant{KEY_LEFT} and \constant{KEY_RIGHT} in the obvious way. If
1096your machine has a PC keybboard, it is safe to expect arrow keys and
1097twelve function keys (older PC keyboards may have only ten function
1098keys); also, the following keypad mappings are standard:
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001099
Fred Drakeec4b2af2000-08-09 14:34:48 +00001100\begin{tableii}{l|l}{kbd}{Keycap}{Constant}
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001101 \lineii{Insert}{KEY_IC}
1102 \lineii{Delete}{KEY_DC}
1103 \lineii{Home}{KEY_HOME}
1104 \lineii{End}{KEY_END}
1105 \lineii{Page Up}{KEY_NPAGE}
1106 \lineii{Page Down}{KEY_PPAGE}
1107\end{tableii}
1108
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +00001109The following table lists characters from the alternate character set.
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001110These are inherited from the VT100 terminal, and will generally be
1111available on software emulations such as X terminals. When there
1112is no graphic available, curses falls back on a crude printable ASCII
1113approximation.
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +00001114\strong{Note:} These are available only after \function{initscr()} has
1115been called.
1116
Fred Drakeec4b2af2000-08-09 14:34:48 +00001117\begin{tableii}{l|l}{code}{ACS code}{Meaning}
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001118 \lineii{ACS_BBSS}{alternate name for upper right corner}
Eric S. Raymond68996602000-07-24 03:28:40 +00001119 \lineii{ACS_BLOCK}{solid square block}
1120 \lineii{ACS_BOARD}{board of squares}
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001121 \lineii{ACS_BSBS}{alternate name for horizontal line}
1122 \lineii{ACS_BSSB}{alternate name for upper left corner}
1123 \lineii{ACS_BSSS}{alternate name for top tee}
Eric S. Raymond68996602000-07-24 03:28:40 +00001124 \lineii{ACS_BTEE}{bottom tee}
1125 \lineii{ACS_BULLET}{bullet}
1126 \lineii{ACS_CKBOARD}{checker board (stipple)}
1127 \lineii{ACS_DARROW}{arrow pointing down}
1128 \lineii{ACS_DEGREE}{degree symbol}
1129 \lineii{ACS_DIAMOND}{diamond}
1130 \lineii{ACS_GEQUAL}{greater-than-or-equal-to}
1131 \lineii{ACS_HLINE}{horizontal line}
1132 \lineii{ACS_LANTERN}{lantern symbol}
1133 \lineii{ACS_LARROW}{left arrow}
1134 \lineii{ACS_LEQUAL}{less-than-or-equal-to}
1135 \lineii{ACS_LLCORNER}{lower left-hand corner}
1136 \lineii{ACS_LRCORNER}{lower right-hand corner}
1137 \lineii{ACS_LTEE}{left tee}
1138 \lineii{ACS_NEQUAL}{not-equal sign}
1139 \lineii{ACS_PI}{letter pi}
1140 \lineii{ACS_PLMINUS}{plus-or-minus sign}
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001141 \lineii{ACS_PLUS}{big plus sign}
Eric S. Raymond68996602000-07-24 03:28:40 +00001142 \lineii{ACS_RARROW}{right arrow}
1143 \lineii{ACS_RTEE}{right tee}
1144 \lineii{ACS_S1}{scan line 1}
1145 \lineii{ACS_S3}{scan line 3}
1146 \lineii{ACS_S7}{scan line 7}
1147 \lineii{ACS_S9}{scan line 9}
Eric S. Raymondb924bd42000-07-27 21:10:02 +00001148 \lineii{ACS_SBBS}{alternate name for lower right corner}
1149 \lineii{ACS_SBSB}{alternate name for vertical line}
1150 \lineii{ACS_SBSS}{alternate name for right tee}
1151 \lineii{ACS_SSBB}{alternate name for lower left corner}
1152 \lineii{ACS_SSBS}{alternate name for bottom tee}
1153 \lineii{ACS_SSSB}{alternate name for left tee}
1154 \lineii{ACS_SSSS}{alternate name for crossover or big plus}
Eric S. Raymond68996602000-07-24 03:28:40 +00001155 \lineii{ACS_STERLING}{pound sterling}
1156 \lineii{ACS_TTEE}{top tee}
1157 \lineii{ACS_UARROW}{up arrow}
1158 \lineii{ACS_ULCORNER}{upper left corner}
1159 \lineii{ACS_URCORNER}{upper right corner}
1160 \lineii{ACS_VLINE}{vertical line}
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +00001161\end{tableii}
1162
1163The following table lists the predefined colors:
1164
Fred Drakeec4b2af2000-08-09 14:34:48 +00001165\begin{tableii}{l|l}{code}{Constant}{Color}
Andrew M. Kuchlingf1dc5fa2000-05-23 16:46:04 +00001166 \lineii{COLOR_BLACK}{Black}
1167 \lineii{COLOR_BLUE}{Blue}
1168 \lineii{COLOR_CYAN}{Cyan (light greenish blue)}
1169 \lineii{COLOR_GREEN}{Green}
1170 \lineii{COLOR_MAGENTA}{Magenta (purplish red)}
1171 \lineii{COLOR_RED}{Red}
1172 \lineii{COLOR_WHITE}{White}
1173 \lineii{COLOR_YELLOW}{Yellow}
1174\end{tableii}
1175
Eric S. Raymond5a007692000-08-04 07:35:41 +00001176\section{\module{curses.textpad} ---
1177 Text input widget for curses programs}
1178
1179\declaremodule{standard}{curses.textpad}
1180\sectionauthor{Eric Raymond}{esr@thyrsus.com}
1181\moduleauthor{Eric Raymond}{esr@thyrsus.com}
1182\modulesynopsis{Emacs-like input editing in a curses window.}
1183\versionadded{1.6}
1184
1185The \module{curses.textpad} module provides a \class{Textbox} class
1186that handles elementary text editing in a curses window, supporting a
1187set of keybindings resembling those of Emacs (thus, also of Netscape
1188Navigator, BBedit 6.x, FrameMaker, and many other programs). The
1189module also provides a rectangle-drawing function useful for framing
1190text boxes or for other purposes.
1191
Fred Drakeec4b2af2000-08-09 14:34:48 +00001192The module \module{curses.textpad} defines the following function:
Eric S. Raymond5a007692000-08-04 07:35:41 +00001193
1194\begin{funcdesc}{rectangle}{win, uly, ulx, lry, lrx}
1195Draw a rectangle. The first argument must be a window object; the
1196remaining arguments are coordinates relative to that window. The
1197second and third arguments are the y and x coordinates of the upper
1198left hand corner of the rectangle To be drawn; the fourth and fifth
1199arguments are the y and x coordinates of the lower right hand corner.
1200The rectangle will be drawn using VT100/IBM PC forms characters on
1201terminals that make this possible (including xterm and most other
1202software terminal emulators). Otherwise it will be drawn with ASCII
1203dashes, vertical bars, and plus signs.
1204\end{funcdesc}
1205
Fred Drakeec4b2af2000-08-09 14:34:48 +00001206
Eric S. Raymond5a007692000-08-04 07:35:41 +00001207\subsection{Textbox objects \label{curses-textpad-objects}}
1208
1209You can instantiate a \class{Textbox} object as follows:
1210
Fred Drakeec4b2af2000-08-09 14:34:48 +00001211\begin{classdesc}{Textbox}{win}
1212Return a textbox widget object. The \var{win} argument should be a
1213curses \class{WindowObject} in which the textbox is to be contained.
1214The edit cursor of the textbox is initially located at the upper left
1215hand corner of the containin window, with coordinates \code{(0, 0)}.
1216The instance's \member{stripspaces} flag is initially on.
Eric S. Raymond5a007692000-08-04 07:35:41 +00001217\end{classdesc}
1218
Fred Drakeec4b2af2000-08-09 14:34:48 +00001219\class{Textbox} objects have the following methods:
Eric S. Raymond5a007692000-08-04 07:35:41 +00001220
Fred Drakeec4b2af2000-08-09 14:34:48 +00001221\begin{methoddesc}{edit}{\optional{validator}}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001222This is the entry point you will normally use. It accepts editing
Fred Drakeec4b2af2000-08-09 14:34:48 +00001223keystrokes until one of the termination keystrokes is entered. If
1224\var{validator} is supplied, it must be a function. It will be called
1225for each keystroke entered with the keystroke as a parameter; command
1226dispatch is done on the result. This method returns the window
1227contents as a string; whether blanks in the window are included is
1228affected by the \member{stripspaces} member.
Eric S. Raymond5a007692000-08-04 07:35:41 +00001229\end{methoddesc}
1230
1231\begin{methoddesc}{do_command}{ch}
1232Process a single command keystroke. Here are the supported special
1233keystrokes:
1234
Fred Drakeec4b2af2000-08-09 14:34:48 +00001235\begin{tableii}{l|l}{kbd}{Keystroke}{Action}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001236 \lineii{Ctrl-A}{Go to left edge of window.}
1237 \lineii{Ctrl-B}{Cursor left, wrapping to previous line if appropriate.}
1238 \lineii{Ctrl-D}{Delete character under cursor.}
1239 \lineii{Ctrl-E}{Go to right edge (stripspaces off) or end of line (stripspaces on).}
1240 \lineii{Ctrl-F}{Cursor right, wrapping to next line when appropriate.}
1241 \lineii{Ctrl-G}{Terminate, returning the window contents.}
1242 \lineii{Ctrl-H}{Delete character backward.}
1243 \lineii{Ctrl-J}{Terminate if the window is 1 line, otherwise insert newline.}
1244 \lineii{Ctrl-K}{If line is blank, delete it, otherwise clear to end of line.}
1245 \lineii{Ctrl-L}{Refresh screen.}
1246 \lineii{Ctrl-N}{Cursor down; move down one line.}
1247 \lineii{Ctrl-O}{Insert a blank line at cursor location.}
1248 \lineii{Ctrl-P}{Cursor up; move up one line.}
1249\end{tableii}
1250
1251Move operations do nothing if the cursor is at an edge where the
1252movement is not possible. The following synonyms are supported where
Fred Drakeec4b2af2000-08-09 14:34:48 +00001253possible:
1254
1255\begin{tableii}{l|l}{constant}{Constant}{Keystroke}
1256 \lineii{KEY_LEFT}{\kbd{Ctrl-B}}
1257 \lineii{KEY_RIGHT}{\kbd{Ctrl-F}}
1258 \lineii{KEY_UP}{\kbd{Ctrl-P}}
1259 \lineii{KEY_DOWN}{\kbd{Ctrl-N}}
1260 \lineii{KEY_BACKSPACE}{\kbd{Ctrl-h}}
1261\end{tableii}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001262
1263All other keystrokes are treated as a command to insert the given
1264character and move right (with line wrapping).
1265\end{methoddesc}
1266
1267\begin{methoddesc}{gather}{}
1268This method returns the window contents as a string; whether blanks in
1269the window are included is affected by the \member{stripspaces}
1270member.
1271\end{methoddesc}
1272
Fred Drakeec4b2af2000-08-09 14:34:48 +00001273\begin{memberdesc}{stripspaces}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001274This data member is a flag which controls the interpretation of blanks in
1275the window. When it is on, trailing blanks on each line are ignored;
1276any cursor motion that would land the cursor on a trailing blank goes
1277to the end of that line instead, and trailing blanks are stripped when
1278the window contents is gathered.
Fred Drakeec4b2af2000-08-09 14:34:48 +00001279\end{memberdesc}
1280
Eric S. Raymond5a007692000-08-04 07:35:41 +00001281
1282\section{\module{curses.wrapper} ---
Fred Drakeec4b2af2000-08-09 14:34:48 +00001283 Terminal handler for curses programs}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001284
1285\declaremodule{standard}{curses.wrapper}
1286\sectionauthor{Eric Raymond}{esr@thyrsus.com}
1287\moduleauthor{Eric Raymond}{esr@thyrsus.com}
Fred Drakeec4b2af2000-08-09 14:34:48 +00001288\modulesynopsis{Terminal configuration wrapper for curses programs.}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001289\versionadded{1.6}
1290
1291This module supplies one function, \function{wrapper()}, which runs
1292another function which should be the rest of your curses-using
1293application. If the application raises an exception,
1294\function{wrapper()} will restore the terminal to a sane state before
1295passing it further up the stack and generating a traceback.
1296
Fred Drakeec4b2af2000-08-09 14:34:48 +00001297\begin{funcdesc}{wrapper}{func, \moreargs}
Eric S. Raymond5a007692000-08-04 07:35:41 +00001298Wrapper function that initializes curses and calls another function,
Fred Drakeec4b2af2000-08-09 14:34:48 +00001299\var{func}, restoring normal keyboard/screen behavior on error.
1300The callable object \var{func} is then passed the main window 'stdscr'
Eric S. Raymond5a007692000-08-04 07:35:41 +00001301as its first argument, followed by any other arguments passed to
1302\function{wrapper()}.
1303\end{funcdesc}
1304
Eric S. Raymond1ebd3f62000-08-09 21:11:07 +00001305Before calling the hook function, \function{wrapper()} turns on cbreak
1306mode, turns off echo, enables the terminal keypad, and initializes
1307colors if the terminal has color support. On exit (whether normally
1308or by exception) it restores cooked mode, turns on echo, and disables
1309the terminal keypad.
Eric S. Raymond5a007692000-08-04 07:35:41 +00001310