ncurses 5.3
[ncurses.git] / man / ncurses.3x
1 '\" t
2 .\"***************************************************************************
3 .\" Copyright (c) 1998,1999,2001,2002 Free Software Foundation, Inc.         *
4 .\"                                                                          *
5 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
6 .\" copy of this software and associated documentation files (the            *
7 .\" "Software"), to deal in the Software without restriction, including      *
8 .\" without limitation the rights to use, copy, modify, merge, publish,      *
9 .\" distribute, distribute with modifications, sublicense, and/or sell       *
10 .\" copies of the Software, and to permit persons to whom the Software is    *
11 .\" furnished to do so, subject to the following conditions:                 *
12 .\"                                                                          *
13 .\" The above copyright notice and this permission notice shall be included  *
14 .\" in all copies or substantial portions of the Software.                   *
15 .\"                                                                          *
16 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19 .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20 .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21 .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22 .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23 .\"                                                                          *
24 .\" Except as contained in this notice, the name(s) of the above copyright   *
25 .\" holders shall not be used in advertising or otherwise to promote the     *
26 .\" sale, use or other dealings in this Software without prior written       *
27 .\" authorization.                                                           *
28 .\"***************************************************************************
29 .\"
30 .\" $Id: ncurses.3x,v 1.63 2002/08/10 21:56:07 tom Exp $
31 .hy 0
32 .TH ncurses 3X ""
33 .ds n 5
34 .ds d @TERMINFO@
35 .SH NAME
36 \fBncurses\fR - CRT screen handling and optimization package
37 .SH SYNOPSIS
38 \fB#include <curses.h>\fR
39 .br
40 .SH DESCRIPTION
41 The \fBncurses\fR library routines give the user a terminal-independent method
42 of updating character screens with reasonable optimization.  This
43 implementation is ``new curses'' (ncurses) and is the approved replacement for
44 4.4BSD classic curses, which has been discontinued.
45
46 The \fBncurses\fR routines emulate the \fBcurses\fR(3X) library of System V
47 Release 4 UNIX, and the XPG4 curses standard (XSI curses) but the \fBncurses\fR
48 library is freely redistributable in source form.  Differences from the SVr4
49 curses are summarized under the EXTENSIONS and BUGS sections below and
50 described in detail in the EXTENSIONS and BUGS sections of individual man
51 pages.
52
53 A program using these routines must be linked with the \fB-lncurses\fR option,
54 or (if it has been generated) with the debugging library \fB-lncurses_g\fR.
55 (Your system integrator may also have installed these libraries under
56 the names \fB-lcurses\fR and \fB-lcurses_g\fR.)
57 The ncurses_g library generates trace logs (in a file called 'trace' in the
58 current directory) that describe curses actions.
59
60 The \fBncurses\fR package supports: overall screen, window and pad
61 manipulation; output to windows and pads; reading terminal input; control over
62 terminal and \fBcurses\fR input and output options; environment query
63 routines; color manipulation; use of soft label keys; terminfo capabilities;
64 and access to low-level terminal-manipulation routines.
65
66 To initialize the routines, the routine \fBinitscr\fR or \fBnewterm\fR
67 must be called before any of the other routines that deal with windows
68 and screens are used.  The routine \fBendwin\fR must be called before
69 exiting.  To get character-at-a-time input without echoing (most
70 interactive, screen oriented programs want this), the following
71 sequence should be used:
72
73       \fBinitscr(); cbreak(); noecho();\fR
74
75 Most programs would additionally use the sequence:
76
77       \fBnonl();\fR
78       \fBintrflush(stdscr, FALSE);\fR
79       \fBkeypad(stdscr, TRUE);\fR
80
81 Before a \fBcurses\fR program is run, the tab stops of the terminal
82 should be set and its initialization strings, if defined, must be
83 output.  This can be done by executing the \fBtput init\fR command
84 after the shell environment variable \fBTERM\fR has been exported.
85 \fBtset(1)\fR is usually responsible for doing this.
86 [See \fBterminfo\fR(\*n) for further details.]
87
88 The \fBncurses\fR library permits manipulation of data structures,
89 called \fIwindows\fR, which can be thought of as two-dimensional
90 arrays of characters representing all or part of a CRT screen.  A
91 default window called \fBstdscr\fR, which is the size of the terminal
92 screen, is supplied.  Others may be created with \fBnewwin\fR.
93
94 Note that \fBcurses\fR does not handle overlapping windows, that's done by
95 the \fBpanel\fR(3X) library. This means that you can either use
96 \fBstdscr\fR or divide the screen into tiled windows and not using
97 \fBstdscr\fR at all. Mixing the two will result in unpredictable, and
98 undesired, effects.
99
100 Windows are referred to by variables declared as \fBWINDOW *\fR.
101 These data structures are manipulated with routines described here and
102 elsewhere in the \fBncurses\fR manual pages.  Among which the most basic
103 routines are \fBmove\fR and \fBaddch\fR.  More general versions of
104 these routines are included with names beginning with \fBw\fR,
105 allowing the user to specify a window.  The routines not beginning
106 with \fBw\fR affect \fBstdscr\fR.)
107
108 After using routines to manipulate a window, \fBrefresh\fR is called,
109 telling \fBcurses\fR to make the user's CRT screen look like
110 \fBstdscr\fR.  The characters in a window are actually of type
111 \fBchtype\fR, (character and attribute data) so that other information
112 about the character may also be stored with each character.
113
114 Special windows called \fIpads\fR may also be manipulated.  These are windows
115 which are not constrained to the size of the screen and whose contents need not
116 be completely displayed.  See \fBcurs_pad\fR(3X) for more information.
117
118 In addition to drawing characters on the screen, video attributes and colors
119 may be supported, causing the characters to show up in such modes as
120 underlined, in reverse video, or in color on terminals that support such
121 display enhancements.  Line drawing characters may be specified to be output.
122 On input, \fBcurses\fR is also able to translate arrow and function keys that
123 transmit escape sequences into single values.  The video attributes, line
124 drawing characters, and input values use names, defined in \fB<curses.h>\fR,
125 such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR.
126
127 If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the
128 program is executing in a window environment, line and column information in
129 the environment will override information read by \fIterminfo\fR.  This would
130 effect a program running in an AT&T 630 layer, for example, where the size of a
131 screen is changeable (see \fBENVIRONMENT\fR).
132
133 If the environment variable \fBTERMINFO\fR is defined, any program using
134 \fBcurses\fR checks for a local terminal definition before checking in the
135 standard place.  For example, if \fBTERM\fR is set to \fBatt4424\fR, then the
136 compiled terminal definition is found in
137
138       \fB\*d/a/att4424\fR.
139
140 (The \fBa\fR is copied from the first letter of \fBatt4424\fR to avoid
141 creation of huge directories.)  However, if \fBTERMINFO\fR is set to
142 \fB$HOME/myterms\fR, \fBcurses\fR first checks
143
144       \fB$HOME/myterms/a/att4424\fR,
145
146 and if that fails, it then checks
147
148       \fB\*d/a/att4424\fR.
149
150 This is useful for developing experimental definitions or when write
151 permission in \fB\*d\fR is not available.
152
153 The integer variables \fBLINES\fR and \fBCOLS\fR are defined in
154 \fB<curses.h>\fR and will be filled in by \fBinitscr\fR with the size of the
155 screen.  The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and
156 \fB0\fR, respectively.
157
158 The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR
159 which is used for certain low-level operations like clearing and redrawing a
160 screen containing garbage.  The \fBcurscr\fR can be used in only a few
161 routines.
162
163 .SS Routine and Argument Names
164 Many \fBcurses\fR routines have two or more versions.  The routines prefixed
165 with \fBw\fR require a window argument.  The routines prefixed with \fBp\fR
166 require a pad argument.  Those without a prefix generally use \fBstdscr\fR.
167
168 The routines prefixed with \fBmv\fR require a \fIy\fR and \fIx\fR
169 coordinate to move to before performing the appropriate action.  The
170 \fBmv\fR routines imply a call to \fBmove\fR before the call to the
171 other routine.  The coordinate \fIy\fR always refers to the row (of
172 the window), and \fIx\fR always refers to the column.  The upper
173 left-hand corner is always (0,0), not (1,1).
174
175 The routines prefixed with \fBmvw\fR take both a window argument and
176 \fIx\fR and \fIy\fR coordinates.  The window argument is always
177 specified before the coordinates.
178
179 In each case, \fIwin\fR is the window affected, and \fIpad\fR is the
180 pad affected; \fIwin\fR and \fIpad\fR are always pointers to type
181 \fBWINDOW\fR.
182
183 Option setting routines require a Boolean flag \fIbf\fR with the value
184 \fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR.  The
185 variables \fIch\fR and \fIattrs\fR below are always of type
186 \fBchtype\fR.  The types \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and
187 \fBchtype\fR are defined in \fB<curses.h>\fR.  The type \fBTERMINAL\fR
188 is defined in \fB<term.h>\fR.  All other arguments are integers.
189
190 .SS Routine Name Index
191 The following table lists each \fBcurses\fR routine and the name of
192 the manual page on which it is described.  Routines flagged with `*'
193 are ncurses-specific, not described by XPG4 or present in SVr4.
194
195 .TS
196 center tab(/);
197 l l
198 l l .
199 \fBcurses\fR Routine Name/Manual Page Name
200 =
201 COLOR_PAIR/\fBcurs_color\fR(3X)
202 PAIR_NUMBER/\fBcurs_attr\fR(3X)
203 _nc_tracebits/\fBcurs_trace\fR(3X)*
204 _traceattr/\fBcurs_trace\fR(3X)*
205 _traceattr2/\fBcurs_trace\fR(3X)*
206 _tracechar/\fBcurs_trace\fR(3X)*
207 _tracechtype/\fBcurs_trace\fR(3X)*
208 _tracechtype2/\fBcurs_trace\fR(3X)*
209 _tracedump/\fBcurs_trace\fR(3X)*
210 _tracef/\fBcurs_trace\fR(3X)*
211 _tracemouse/\fBcurs_trace\fR(3X)*
212 add_wch/\fBcurs_add_wch\fR(3X)
213 add_wchnstr/\fBcurs_add_wchstr\fR(3X)
214 add_wchstr/\fBcurs_add_wchstr\fR(3X)
215 addch/\fBcurs_addch\fR(3X)
216 addchnstr/\fBcurs_addchstr\fR(3X)
217 addchstr/\fBcurs_addchstr\fR(3X)
218 addnstr/\fBcurs_addstr\fR(3X)
219 addnwstr/\fBcurs_addwstr\fR(3X)
220 addstr/\fBcurs_addstr\fR(3X)
221 addwstr/\fBcurs_addwstr\fR(3X)
222 assume_default_colors/\fBdefault_colors\fR(3X)*
223 attr_get/\fBcurs_attr\fR(3X)
224 attr_off/\fBcurs_attr\fR(3X)
225 attr_on/\fBcurs_attr\fR(3X)
226 attr_set/\fBcurs_attr\fR(3X)
227 attroff/\fBcurs_attr\fR(3X)
228 attron/\fBcurs_attr\fR(3X)
229 attrset/\fBcurs_attr\fR(3X)
230 baudrate/\fBcurs_termattrs\fR(3X)
231 beep/\fBcurs_beep\fR(3X)
232 bkgd/\fBcurs_bkgd\fR(3X)
233 bkgdset/\fBcurs_bkgd\fR(3X)
234 bkgrnd/\fBcurs_bkgrnd\fR(3X)
235 bkgrndset/\fBcurs_bkgrnd\fR(3X)
236 border/\fBcurs_border\fR(3X)
237 border_set/\fBcurs_border_set\fR(3X)
238 box/\fBcurs_border\fR(3X)
239 box_set/\fBcurs_border_set\fR(3X)
240 can_change_color/\fBcurs_color\fR(3X)
241 cbreak/\fBcurs_inopts\fR(3X)
242 chgat/\fBcurs_attr\fR(3X)
243 clear/\fBcurs_clear\fR(3X)
244 clearok/\fBcurs_outopts\fR(3X)
245 clrtobot/\fBcurs_clear\fR(3X)
246 clrtoeol/\fBcurs_clear\fR(3X)
247 color_content/\fBcurs_color\fR(3X)
248 color_set/\fBcurs_attr\fR(3X)
249 copywin/\fBcurs_overlay\fR(3X)
250 curs_set/\fBcurs_kernel\fR(3X)
251 curses_version/\fBcurs_extend\fR(3X)*
252 def_prog_mode/\fBcurs_kernel\fR(3X)
253 def_shell_mode/\fBcurs_kernel\fR(3X)
254 define_key/\fBdefine_key\fR(3X)*
255 del_curterm/\fBcurs_terminfo\fR(3X)
256 delay_output/\fBcurs_util\fR(3X)
257 delch/\fBcurs_delch\fR(3X)
258 deleteln/\fBcurs_deleteln\fR(3X)
259 delscreen/\fBcurs_initscr\fR(3X)
260 delwin/\fBcurs_window\fR(3X)
261 derwin/\fBcurs_window\fR(3X)
262 doupdate/\fBcurs_refresh\fR(3X)
263 dupwin/\fBcurs_window\fR(3X)
264 echo/\fBcurs_inopts\fR(3X)
265 echo_wchar/\fBcurs_add_wch\fR(3X)
266 echochar/\fBcurs_addch\fR(3X)
267 endwin/\fBcurs_initscr\fR(3X)
268 erase/\fBcurs_clear\fR(3X)
269 erasechar/\fBcurs_termattrs\fR(3X)
270 erasewchar/\fBcurs_termattrs\fR(3X)
271 filter/\fBcurs_util\fR(3X)
272 flash/\fBcurs_beep\fR(3X)
273 flushinp/\fBcurs_util\fR(3X)
274 get_wch/\fBcurs_get_wch\fR(3X)
275 get_wstr/\fBcurs_get_wstr\fR(3X)
276 getbegyx/\fBcurs_getyx\fR(3X)
277 getbkgd/\fBcurs_bkgd\fR(3X)
278 getbkgrnd/\fBcurs_bkgrnd\fR(3X)
279 getcchar/\fBcurs_getcchar\fR(3X)
280 getch/\fBcurs_getch\fR(3X)
281 getmaxyx/\fBcurs_getyx\fR(3X)
282 getmouse/\fBcurs_mouse\fR(3X)*
283 getn_wstr/\fBcurs_get_wstr\fR(3X)
284 getnstr/\fBcurs_getstr\fR(3X)
285 getparyx/\fBcurs_getyx\fR(3X)
286 getstr/\fBcurs_getstr\fR(3X)
287 getsyx/\fBcurs_kernel\fR(3X)
288 getwin/\fBcurs_util\fR(3X)
289 getyx/\fBcurs_getyx\fR(3X)
290 halfdelay/\fBcurs_inopts\fR(3X)
291 has_colors/\fBcurs_color\fR(3X)
292 has_ic/\fBcurs_termattrs\fR(3X)
293 has_il/\fBcurs_termattrs\fR(3X)
294 has_key/\fBcurs_getch\fR(3X)*
295 hline/\fBcurs_border\fR(3X)
296 hline_set/\fBcurs_border_set\fR(3X)
297 idcok/\fBcurs_outopts\fR(3X)
298 idlok/\fBcurs_outopts\fR(3X)
299 immedok/\fBcurs_outopts\fR(3X)
300 in_wch/\fBcurs_in_wch\fR(3X)
301 in_wchnstr/\fBcurs_in_wchstr\fR(3X)
302 in_wchstr/\fBcurs_in_wchstr\fR(3X)
303 inch/\fBcurs_inch\fR(3X)
304 inchnstr/\fBcurs_inchstr\fR(3X)
305 inchstr/\fBcurs_inchstr\fR(3X)
306 init_color/\fBcurs_color\fR(3X)
307 init_pair/\fBcurs_color\fR(3X)
308 initscr/\fBcurs_initscr\fR(3X)
309 innstr/\fBcurs_instr\fR(3X)
310 innwstr/\fBcurs_inwstr\fR(3X)
311 ins_nwstr/\fBcurs_ins_wstr\fR(3X)
312 ins_wch/\fBcurs_ins_wch\fR(3X)
313 ins_wstr/\fBcurs_ins_wstr\fR(3X)
314 insch/\fBcurs_insch\fR(3X)
315 insdelln/\fBcurs_deleteln\fR(3X)
316 insertln/\fBcurs_deleteln\fR(3X)
317 insnstr/\fBcurs_insstr\fR(3X)
318 insstr/\fBcurs_insstr\fR(3X)
319 instr/\fBcurs_instr\fR(3X)
320 intrflush/\fBcurs_inopts\fR(3X)
321 inwstr/\fBcurs_inwstr\fR(3X)
322 is_linetouched/\fBcurs_touch\fR(3X)
323 is_wintouched/\fBcurs_touch\fR(3X)
324 isendwin/\fBcurs_initscr\fR(3X)
325 key_name/\fBcurs_util\fR(3X)
326 keybound/\fBkeybound\fR(3X)*
327 keyname/\fBcurs_util\fR(3X)
328 keyok/\fBkeyok\fR(3X)*
329 keypad/\fBcurs_inopts\fR(3X)
330 killchar/\fBcurs_termattrs\fR(3X)
331 killwchar/\fBcurs_termattrs\fR(3X)
332 leaveok/\fBcurs_outopts\fR(3X)
333 longname/\fBcurs_termattrs\fR(3X)
334 mcprint/\fBcurs_print\fR(3X)*
335 meta/\fBcurs_inopts\fR(3X)
336 mouse_trafo/\fBcurs_mouse\fR(3X)*
337 mouseinterval/\fBcurs_mouse\fR(3X)*
338 mousemask/\fBcurs_mouse\fR(3X)*
339 move/\fBcurs_move\fR(3X)
340 mvadd_wch/\fBcurs_add_wch\fR(3X)
341 mvadd_wchnstr/\fBcurs_add_wchstr\fR(3X)
342 mvadd_wchstr/\fBcurs_add_wchstr\fR(3X)
343 mvaddch/\fBcurs_addch\fR(3X)
344 mvaddchnstr/\fBcurs_addchstr\fR(3X)
345 mvaddchstr/\fBcurs_addchstr\fR(3X)
346 mvaddnstr/\fBcurs_addstr\fR(3X)
347 mvaddnwstr/\fBcurs_addwstr\fR(3X)
348 mvaddstr/\fBcurs_addstr\fR(3X)
349 mvaddwstr/\fBcurs_addwstr\fR(3X)
350 mvchgat/\fBcurs_attr\fR(3X)
351 mvcur/\fBcurs_terminfo\fR(3X)
352 mvdelch/\fBcurs_delch\fR(3X)
353 mvderwin/\fBcurs_window\fR(3X)
354 mvget_wch/\fBcurs_get_wch\fR(3X)
355 mvget_wstr/\fBcurs_get_wstr\fR(3X)
356 mvgetch/\fBcurs_getch\fR(3X)
357 mvgetn_wstr/\fBcurs_get_wstr\fR(3X)
358 mvgetnstr/\fBcurs_getstr\fR(3X)
359 mvgetstr/\fBcurs_getstr\fR(3X)
360 mvhline/\fBcurs_border\fR(3X)
361 mvhline_set/\fBcurs_border_set\fR(3X)
362 mvin_wch/\fBcurs_in_wch\fR(3X)
363 mvin_wchnstr/\fBcurs_in_wchstr\fR(3X)
364 mvin_wchstr/\fBcurs_in_wchstr\fR(3X)
365 mvinch/\fBcurs_inch\fR(3X)
366 mvinchnstr/\fBcurs_inchstr\fR(3X)
367 mvinchstr/\fBcurs_inchstr\fR(3X)
368 mvinnstr/\fBcurs_instr\fR(3X)
369 mvinnwstr/\fBcurs_inwstr\fR(3X)
370 mvins_nwstr/\fBcurs_ins_wstr\fR(3X)
371 mvins_wch/\fBcurs_ins_wch\fR(3X)
372 mvins_wstr/\fBcurs_ins_wstr\fR(3X)
373 mvinsch/\fBcurs_insch\fR(3X)
374 mvinsnstr/\fBcurs_insstr\fR(3X)
375 mvinsstr/\fBcurs_insstr\fR(3X)
376 mvinstr/\fBcurs_instr\fR(3X)
377 mvinwstr/\fBcurs_inwstr\fR(3X)
378 mvprintw/\fBcurs_printw\fR(3X)
379 mvscanw/\fBcurs_scanw\fR(3X)
380 mvvline/\fBcurs_border\fR(3X)
381 mvvline_set/\fBcurs_border_set\fR(3X)
382 mvwadd_wch/\fBcurs_add_wch\fR(3X)
383 mvwadd_wchnstr/\fBcurs_add_wchstr\fR(3X)
384 mvwadd_wchstr/\fBcurs_add_wchstr\fR(3X)
385 mvwaddch/\fBcurs_addch\fR(3X)
386 mvwaddchnstr/\fBcurs_addchstr\fR(3X)
387 mvwaddchstr/\fBcurs_addchstr\fR(3X)
388 mvwaddnstr/\fBcurs_addstr\fR(3X)
389 mvwaddnwstr/\fBcurs_addwstr\fR(3X)
390 mvwaddstr/\fBcurs_addstr\fR(3X)
391 mvwaddwstr/\fBcurs_addwstr\fR(3X)
392 mvwchgat/\fBcurs_attr\fR(3X)
393 mvwdelch/\fBcurs_delch\fR(3X)
394 mvwget_wch/\fBcurs_get_wch\fR(3X)
395 mvwget_wstr/\fBcurs_get_wstr\fR(3X)
396 mvwgetch/\fBcurs_getch\fR(3X)
397 mvwgetn_wstr/\fBcurs_get_wstr\fR(3X)
398 mvwgetnstr/\fBcurs_getstr\fR(3X)
399 mvwgetstr/\fBcurs_getstr\fR(3X)
400 mvwhline/\fBcurs_border\fR(3X)
401 mvwhline_set/\fBcurs_border_set\fR(3X)
402 mvwin/\fBcurs_window\fR(3X)
403 mvwin_wch/\fBcurs_in_wch\fR(3X)
404 mvwin_wchnstr/\fBcurs_in_wchstr\fR(3X)
405 mvwin_wchstr/\fBcurs_in_wchstr\fR(3X)
406 mvwinch/\fBcurs_inch\fR(3X)
407 mvwinchnstr/\fBcurs_inchstr\fR(3X)
408 mvwinchstr/\fBcurs_inchstr\fR(3X)
409 mvwinnstr/\fBcurs_instr\fR(3X)
410 mvwinnwstr/\fBcurs_inwstr\fR(3X)
411 mvwins_nwstr/\fBcurs_ins_wstr\fR(3X)
412 mvwins_wch/\fBcurs_ins_wch\fR(3X)
413 mvwins_wstr/\fBcurs_ins_wstr\fR(3X)
414 mvwinsch/\fBcurs_insch\fR(3X)
415 mvwinsnstr/\fBcurs_insstr\fR(3X)
416 mvwinsstr/\fBcurs_insstr\fR(3X)
417 mvwinstr/\fBcurs_instr\fR(3X)
418 mvwinwstr/\fBcurs_inwstr\fR(3X)
419 mvwprintw/\fBcurs_printw\fR(3X)
420 mvwscanw/\fBcurs_scanw\fR(3X)
421 mvwvline/\fBcurs_border\fR(3X)
422 mvwvline_set/\fBcurs_border_set\fR(3X)
423 napms/\fBcurs_kernel\fR(3X)
424 newpad/\fBcurs_pad\fR(3X)
425 newterm/\fBcurs_initscr\fR(3X)
426 newwin/\fBcurs_window\fR(3X)
427 nl/\fBcurs_outopts\fR(3X)
428 nocbreak/\fBcurs_inopts\fR(3X)
429 nodelay/\fBcurs_inopts\fR(3X)
430 noecho/\fBcurs_inopts\fR(3X)
431 nonl/\fBcurs_outopts\fR(3X)
432 noqiflush/\fBcurs_inopts\fR(3X)
433 noraw/\fBcurs_inopts\fR(3X)
434 notimeout/\fBcurs_inopts\fR(3X)
435 overlay/\fBcurs_overlay\fR(3X)
436 overwrite/\fBcurs_overlay\fR(3X)
437 pair_content/\fBcurs_color\fR(3X)
438 pechochar/\fBcurs_pad\fR(3X)
439 pnoutrefresh/\fBcurs_pad\fR(3X)
440 prefresh/\fBcurs_pad\fR(3X)
441 printw/\fBcurs_printw\fR(3X)
442 putp/\fBcurs_terminfo\fR(3X)
443 putwin/\fBcurs_util\fR(3X)
444 qiflush/\fBcurs_inopts\fR(3X)
445 raw/\fBcurs_inopts\fR(3X)
446 redrawwin/\fBcurs_refresh\fR(3X)
447 refresh/\fBcurs_refresh\fR(3X)
448 reset_prog_mode/\fBcurs_kernel\fR(3X)
449 reset_shell_mode/\fBcurs_kernel\fR(3X)
450 resetty/\fBcurs_kernel\fR(3X)
451 resizeterm/\fBresizeterm\fR(3X)*
452 restartterm/\fBcurs_terminfo\fR(3X)
453 ripoffline/\fBcurs_kernel\fR(3X)
454 savetty/\fBcurs_kernel\fR(3X)
455 scanw/\fBcurs_scanw\fR(3X)
456 scr_dump/\fBcurs_scr_dump\fR(3X)
457 scr_init/\fBcurs_scr_dump\fR(3X)
458 scr_restore/\fBcurs_scr_dump\fR(3X)
459 scr_set/\fBcurs_scr_dump\fR(3X)
460 scrl/\fBcurs_scroll\fR(3X)
461 scroll/\fBcurs_scroll\fR(3X)
462 scrollok/\fBcurs_outopts\fR(3X)
463 set_curterm/\fBcurs_terminfo\fR(3X)
464 set_term/\fBcurs_initscr\fR(3X)
465 setcchar/\fBcurs_getcchar\fR(3X)
466 setscrreg/\fBcurs_outopts\fR(3X)
467 setsyx/\fBcurs_kernel\fR(3X)
468 setterm/\fBcurs_terminfo\fR(3X)
469 setupterm/\fBcurs_terminfo\fR(3X)
470 slk_attr/\fBcurs_slk\fR(3X)*
471 slk_attr_off/\fBcurs_slk\fR(3X)
472 slk_attr_on/\fBcurs_slk\fR(3X)
473 slk_attr_set/\fBcurs_slk\fR(3X)
474 slk_attroff/\fBcurs_slk\fR(3X)
475 slk_attron/\fBcurs_slk\fR(3X)
476 slk_attrset/\fBcurs_slk\fR(3X)
477 slk_clear/\fBcurs_slk\fR(3X)
478 slk_color/\fBcurs_slk\fR(3X)
479 slk_init/\fBcurs_slk\fR(3X)
480 slk_label/\fBcurs_slk\fR(3X)
481 slk_noutrefresh/\fBcurs_slk\fR(3X)
482 slk_refresh/\fBcurs_slk\fR(3X)
483 slk_restore/\fBcurs_slk\fR(3X)
484 slk_set/\fBcurs_slk\fR(3X)
485 slk_touch/\fBcurs_slk\fR(3X)
486 standend/\fBcurs_attr\fR(3X)
487 standout/\fBcurs_attr\fR(3X)
488 start_color/\fBcurs_color\fR(3X)
489 subpad/\fBcurs_pad\fR(3X)
490 subwin/\fBcurs_window\fR(3X)
491 syncok/\fBcurs_window\fR(3X)
492 term_attrs/\fBcurs_termattrs\fR(3X)
493 termattrs/\fBcurs_termattrs\fR(3X)
494 termname/\fBcurs_termattrs\fR(3X)
495 tgetent/\fBcurs_termcap\fR(3X)
496 tgetflag/\fBcurs_termcap\fR(3X)
497 tgetnum/\fBcurs_termcap\fR(3X)
498 tgetstr/\fBcurs_termcap\fR(3X)
499 tgoto/\fBcurs_termcap\fR(3X)
500 tigetflag/\fBcurs_terminfo\fR(3X)
501 tigetnum/\fBcurs_terminfo\fR(3X)
502 tigetstr/\fBcurs_terminfo\fR(3X)
503 timeout/\fBcurs_inopts\fR(3X)
504 touchline/\fBcurs_touch\fR(3X)
505 touchwin/\fBcurs_touch\fR(3X)
506 tparm/\fBcurs_terminfo\fR(3X)
507 tputs/\fBcurs_termcap\fR(3X)
508 tputs/\fBcurs_terminfo\fR(3X)
509 trace/\fBcurs_trace\fR(3X)*
510 typeahead/\fBcurs_inopts\fR(3X)
511 unctrl/\fBcurs_util\fR(3X)
512 unget_wch/\fBcurs_get_wch\fR(3X)
513 ungetch/\fBcurs_getch\fR(3X)
514 ungetmouse/\fBcurs_mouse\fR(3X)*
515 untouchwin/\fBcurs_touch\fR(3X)
516 use_default_colors/\fBdefault_colors\fR(3X)*
517 use_env/\fBcurs_util\fR(3X)
518 use_extended_names/\fBcurs_extend\fR(3X)*
519 vid_attr/\fBcurs_terminfo\fR(3X)
520 vid_puts/\fBcurs_terminfo\fR(3X)
521 vidattr/\fBcurs_terminfo\fR(3X)
522 vidputs/\fBcurs_terminfo\fR(3X)
523 vline/\fBcurs_border\fR(3X)
524 vline_set/\fBcurs_border_set\fR(3X)
525 vw_printw/\fBcurs_printw\fR(3X)
526 vw_scanw/\fBcurs_scanw\fR(3X)
527 vwprintw/\fBcurs_printw\fR(3X)
528 vwscanw/\fBcurs_scanw\fR(3X)
529 wadd_wch/\fBcurs_add_wch\fR(3X)
530 wadd_wchnstr/\fBcurs_add_wchstr\fR(3X)
531 wadd_wchstr/\fBcurs_add_wchstr\fR(3X)
532 waddch/\fBcurs_addch\fR(3X)
533 waddchnstr/\fBcurs_addchstr\fR(3X)
534 waddchstr/\fBcurs_addchstr\fR(3X)
535 waddnstr/\fBcurs_addstr\fR(3X)
536 waddnwstr/\fBcurs_addwstr\fR(3X)
537 waddstr/\fBcurs_addstr\fR(3X)
538 waddwstr/\fBcurs_addwstr\fR(3X)
539 wattr_get/\fBcurs_attr\fR(3X)
540 wattr_off/\fBcurs_attr\fR(3X)
541 wattr_on/\fBcurs_attr\fR(3X)
542 wattr_set/\fBcurs_attr\fR(3X)
543 wattroff/\fBcurs_attr\fR(3X)
544 wattron/\fBcurs_attr\fR(3X)
545 wattrset/\fBcurs_attr\fR(3X)
546 wbkgd/\fBcurs_bkgd\fR(3X)
547 wbkgdset/\fBcurs_bkgd\fR(3X)
548 wbkgrnd/\fBcurs_bkgrnd\fR(3X)
549 wbkgrndset/\fBcurs_bkgrnd\fR(3X)
550 wborder/\fBcurs_border\fR(3X)
551 wborder_set/\fBcurs_border_set\fR(3X)
552 wchgat/\fBcurs_attr\fR(3X)
553 wclear/\fBcurs_clear\fR(3X)
554 wclrtobot/\fBcurs_clear\fR(3X)
555 wclrtoeol/\fBcurs_clear\fR(3X)
556 wcolor_set/\fBcurs_attr\fR(3X)
557 wcursyncup/\fBcurs_window\fR(3X)
558 wdelch/\fBcurs_delch\fR(3X)
559 wdeleteln/\fBcurs_deleteln\fR(3X)
560 wecho_wchar/\fBcurs_add_wch\fR(3X)
561 wechochar/\fBcurs_addch\fR(3X)
562 wenclose/\fBcurs_mouse\fR(3X)*
563 werase/\fBcurs_clear\fR(3X)
564 wget_wch/\fBcurs_get_wch\fR(3X)
565 wget_wstr/\fBcurs_get_wstr\fR(3X)
566 wgetbkgrnd/\fBcurs_bkgrnd\fR(3X)
567 wgetch/\fBcurs_getch\fR(3X)
568 wgetn_wstr/\fBcurs_get_wstr\fR(3X)
569 wgetnstr/\fBcurs_getstr\fR(3X)
570 wgetstr/\fBcurs_getstr\fR(3X)
571 whline/\fBcurs_border\fR(3X)
572 whline_set/\fBcurs_border_set\fR(3X)
573 win_wch/\fBcurs_in_wch\fR(3X)
574 win_wchnstr/\fBcurs_in_wchstr\fR(3X)
575 win_wchstr/\fBcurs_in_wchstr\fR(3X)
576 winch/\fBcurs_inch\fR(3X)
577 winchnstr/\fBcurs_inchstr\fR(3X)
578 winchstr/\fBcurs_inchstr\fR(3X)
579 winnstr/\fBcurs_instr\fR(3X)
580 winnwstr/\fBcurs_inwstr\fR(3X)
581 wins_nwstr/\fBcurs_ins_wstr\fR(3X)
582 wins_wch/\fBcurs_ins_wch\fR(3X)
583 wins_wstr/\fBcurs_ins_wstr\fR(3X)
584 winsch/\fBcurs_insch\fR(3X)
585 winsdelln/\fBcurs_deleteln\fR(3X)
586 winsertln/\fBcurs_deleteln\fR(3X)
587 winsnstr/\fBcurs_insstr\fR(3X)
588 winsstr/\fBcurs_insstr\fR(3X)
589 winstr/\fBcurs_instr\fR(3X)
590 winwstr/\fBcurs_inwstr\fR(3X)
591 wmouse_trafo/\fBcurs_mouse\fR(3X)*
592 wmove/\fBcurs_move\fR(3X)
593 wnoutrefresh/\fBcurs_refresh\fR(3X)
594 wprintw/\fBcurs_printw\fR(3X)
595 wredrawln/\fBcurs_refresh\fR(3X)
596 wrefresh/\fBcurs_refresh\fR(3X)
597 wresize/\fBwresize\fR(3X)*
598 wscanw/\fBcurs_scanw\fR(3X)
599 wscrl/\fBcurs_scroll\fR(3X)
600 wsetscrreg/\fBcurs_outopts\fR(3X)
601 wstandend/\fBcurs_attr\fR(3X)
602 wstandout/\fBcurs_attr\fR(3X)
603 wsyncdown/\fBcurs_window\fR(3X)
604 wsyncup/\fBcurs_window\fR(3X)
605 wtimeout/\fBcurs_inopts\fR(3X)
606 wtouchln/\fBcurs_touch\fR(3X)
607 wunctrl/\fBcurs_util\fR(3X)
608 wvline/\fBcurs_border\fR(3X)
609 wvline_set/\fBcurs_border_set\fR(3X)
610 .TE
611 .SH RETURN VALUE
612 Routines that return an integer return \fBERR\fR upon failure and an
613 integer value other than \fBERR\fR upon successful completion, unless
614 otherwise noted in the routine descriptions.
615
616 All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR,
617 \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, \fBgetmaxyx\fR.  The return
618 values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and
619 \fBgetmaxyx\fR are undefined (\fIi\fR.\fIe\fR., these should not be used as the
620 right-hand side of assignment statements).
621
622 Routines that return pointers return \fBNULL\fR on error.
623 .SH ENVIRONMENT
624 The following environment symbols are useful for customizing the
625 runtime behavior of the \fBncurses\fR library.  The most important
626 ones have been already discussed in detail.
627 .TP 5
628 BAUDRATE
629 The debugging library checks this environment symbol when the application
630 has redirected output to a file.
631 The symbol's numeric value is used for the baudrate.
632 If no value is found \fBncurses\fR uses 9600.
633 This allows testers to construct repeatable test-cases
634 that take into account costs that depend on baudrate.
635 .TP 5
636 CC
637 When set, change occurrences of the command_character
638 (i.e., the \fBcmdch\fP capability)
639 of the loaded terminfo entries to the value of this symbol.
640 Very few terminfo entries provide this feature.
641 .TP 5
642 COLUMNS
643 Specify the width of the screen in characters.
644 Applications running in a windowing environment usually are able to
645 obtain the width of the window in which they are executing.
646 If neither the $COLUMNS value nor the terminal's screen size is available,
647 \fBncurses\fR uses the size which may be specified in the terminfo database
648 (i.e., the \fBcols\fR capability).
649
650 It is important that your application use a correct size for the screen.
651 However, this is not always possible because your application may be
652 running on a host which does not honor NAWS (Negotiations About Window
653 Size), or because you are temporarily running as another user.
654
655 Either COLUMNS or LINES symbols may be specified independently.
656 This is mainly useful to circumvent legacy misfeatures of terminal descriptions,
657 e.g., xterm which commonly specifies a 65 line screen.
658 For best results, \fBlines\fR and \fBcols\fR should not be specified in
659 a terminal description for terminals which are run as emulations.
660
661 Use the \fBuse_env\fR function to disable this feature.
662 .TP 5
663 ESCDELAY
664 Specifies the total time, in milliseconds, for which ncurses will
665 await a character sequence, e.g., a function key.
666 The default value, 1000 milliseconds, is enough for most uses.
667 However, it is made a variable to accommodate unusual applications.
668
669 The most common instance where you may wish to change this value
670 is to work with slow hosts, e.g., running on a network.
671 If the host cannot read characters rapidly enough, it will have the same
672 effect as if the terminal did not send characters rapidly enough.
673 The library will still see a timeout.
674
675 Note that xterm mouse events are built up from character sequences
676 received from the xterm.
677 If your application makes heavy use of multiple-clicking, you may
678 wish to lengthen this default value because the timeout applies
679 to the composed multi-click event as well as the individual clicks.
680 .TP 5
681 HOME
682 Tells \fBncurses\fR where your home directory is.
683 That is where it may read and write auxiliary terminal descriptions:
684
685 $HOME/.termcap
686 .br
687 $HOME/.terminfo
688 .TP 5
689 LINES
690 Like COLUMNS, specify the height of the screen in characters.
691 See COLUMNS for a detailed description.
692 .TP 5
693 MOUSE_BUTTONS_123
694 This applies only to the OS/2 EMX port.
695 It specifies the order of buttons on the mouse.
696 OS/2 numbers a 3-button mouse inconsistently from other
697 platforms:
698
699 1 = left
700 .br
701 2 = right
702 .br
703 3 = middle.
704
705 This symbol lets you customize the mouse.
706 The symbol must be three numeric digits 1-3 in any order, e.g., 123 or 321.
707 If it is not specified, \fBncurses\fR uses 132.
708 .TP 5
709 NCURSES_ASSUMED_COLORS
710 Override the compiled-in assumption that the
711 terminal's default colors are white-on-black
712 (see \fBassume_default_colors\fR(3X)).
713 You may set the foreground and background color values with this environment
714 variable by proving a 2-element list: foreground,background.
715 For example, to tell ncurses to not assume anything
716 about the colors, set this to "-1,-1".
717 To make it green-on-black, set it to "2,0".
718 Any positive value from zero to the terminfo \fBmax_colors\fR value is allowed.
719 .TP 5
720 NCURSES_NO_PADDING
721 Most of the terminal descriptions in the terminfo database are written
722 for real "hardware" terminals.
723 Many people use terminal emulators
724 which run in a windowing environment and use curses-based applications.
725 Terminal emulators can duplicate
726 all of the important aspects of a hardware terminal, but they do not
727 have the same limitations.
728 The chief limitation of a hardware terminal from the standpoint
729 of your application is the management of dataflow, i.e., timing.
730 Unless a hardware terminal is interfaced into a terminal concentrator
731 (which does flow control),
732 it (or your application) must manage dataflow, preventing overruns.
733 The cheapest solution (no hardware cost)
734 is for your program to do this by pausing after
735 operations that the terminal does slowly, such as clearing the display.
736
737 As a result, many terminal descriptions (including the vt100)
738 have delay times embedded.  You may wish to use these descriptions,
739 but not want to pay the performance penalty.
740
741 Set the NCURSES_NO_PADDING symbol to disable all but mandatory
742 padding.  Mandatory padding is used as a part of special control
743 sequences such as \fIflash\fR.
744 .TP 5
745 NCURSES_NO_SETBUF
746 Normally \fBncurses\fR enables buffered output during terminal initialization.
747 This is done (as in SVr4 curses) for performance reasons.
748 For testing purposes, both of \fBncurses\fR and certain applications,
749 this feature is made optional.  Setting the NCURSES_NO_SETBUF variable
750 disables output buffering, leaving the output in the original (usually
751 line buffered) mode.
752 .TP 5
753 NCURSES_TRACE
754 During initialization, the \fBncurses\fR debugging library
755 checks the NCURSES_TRACE symbol.
756 If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR
757 function, using that value as the argument.
758
759 The argument values, which are defined in \fBcurses.h\fR, provide several
760 types of information.
761 When running with traces enabled, your application will write the
762 file \fBtrace\fR to the current directory.
763 .TP 5
764 TERM
765 Denotes your terminal type.
766 Each terminal type is distinct, though many are similar.
767 .TP 5
768 TERMCAP
769 If the \fBncurses\fR library has been configured with \fItermcap\fR
770 support, \fBncurses\fR will check for a terminal's description in
771 termcap form if it is not available in the terminfo database.
772
773 The TERMCAP symbol contains either a terminal description (with
774 newlines stripped out),
775 or a file name telling where the information denoted by the TERM symbol exists.
776 In either case, setting it directs \fBncurses\fR to ignore
777 the usual place for this information, e.g., /etc/termcap.
778 .TP 5
779 TERMINFO
780 Overrides the directory in which \fBncurses\fR searches for your terminal
781 description.
782 This is the simplest, but not the only way to change the list of directories.
783 The complete list of directories in order follows:
784 .RS
785 .TP 3
786 -
787 the last directory to which \fBncurses\fR wrote, if any, is searched first.
788 .TP 3
789 -
790 the directory specified by the TERMINFO symbol
791 .TP 3
792 -
793 $HOME/.terminfo
794 .TP 3
795 -
796 directories listed in the TERMINFO_DIRS symbol
797 .TP 3
798 -
799 one or more directories whose names are configured and compiled into the
800 ncurses library, e.g.,
801 @TERMINFO@
802 .RE
803 .TP 5
804 TERMINFO_DIRS
805 Specifies a list of directories to search for terminal descriptions.
806 The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
807 All of the terminal descriptions are in terminfo form, which makes
808 a subdirectory named for the first letter of the terminal names therein.
809 .TP 5
810 TERMPATH
811 If TERMCAP does not hold a file name then \fBncurses\fR checks
812 the TERMPATH symbol.
813 This is a list of filenames separated by spaces or colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
814 If the TERMPATH symbol is not set, \fBncurses\fR looks in the files
815 /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, in that order.
816 .PP
817 The library may be configured to disregard the following variables when the
818 current user is the superuser (root), or if the application uses setuid or
819 setgid permissions:
820 $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
821 .SH FILES
822 .TP 5
823 @DATADIR@/tabset
824 directory containing initialization files for the terminal capability database
825 @TERMINFO@
826 terminal capability database
827 .SH SEE ALSO
828 \fBterminfo\fR(\*n) and related pages whose names begin "curs_" for detailed routine
829 descriptions.
830 .SH EXTENSIONS
831 The \fBncurses\fR library can be compiled with an option (\fB-DUSE_GETCAP\fR)
832 that falls back to the old-style /etc/termcap file if the terminal setup code
833 cannot find a terminfo entry corresponding to \fBTERM\fR.  Use of this feature
834 is not recommended, as it essentially includes an entire termcap compiler in
835 the \fBncurses\fR startup code, at significant cost in core and startup cycles.
836
837 The \fBncurses\fR library includes facilities for capturing mouse events on
838 certain terminals (including xterm). See the \fBcurs_mouse\fR(3X)
839 manual page for details.
840
841 The \fBncurses\fR library includes facilities for responding to window
842 resizing events, e.g., when running in an xterm.
843 See the \fBresizeterm\fR(3X)
844 and \fBwresize\fR(3X) manual pages for details.
845 In addition, the library may be configured with a SIGWINCH handler.
846
847 The \fBncurses\fR library extends the fixed set of function key capabilities
848 of terminals by allowing the application designer to define additional
849 key sequences at runtime.
850 See the \fBdefine_key\fR(3X)
851 and \fBkeyok\fR(3X) manual pages for details.
852
853 The \fBncurses\fR library can exploit the capabilities of terminals which
854 implement the ISO-6429 SGR 39 and SGR 49 controls, which allow an application
855 to reset the terminal to its original foreground and background colors.
856 From the users' perspective, the application is able to draw colored
857 text on a background whose color is set independently, providing better
858 control over color contrasts.
859 See the \fBdefault_colors\fR(3X) manual page for details.
860
861 The \fBncurses\fR library includes a function for directing application output
862 to a printer attached to the terminal device.  See the \fBcurs_print\fR(3X)
863 manual page for details.
864 .SH PORTABILITY
865 The \fBncurses\fR library is intended to be BASE-level conformant with the XSI
866 Curses standard.  Certain portions of the EXTENDED XSI Curses functionality
867 (including color support) are supported.  The following EXTENDED XSI Curses
868 calls in support of wide (multibyte) characters are not yet implemented:
869 \fBpecho_wchar\fP,
870 \fBslk_wset\fP.
871 .PP
872 A small number of local differences (that is, individual differences between
873 the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR
874 sections of the library man pages.
875 .PP
876 The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4.  See
877 the \fBcurs_getch\fR(3X) manual page for details.
878 .PP
879 The routine \fBslk_attr\fR is not part of XPG4, nor is it present in SVr4.  See
880 the \fBcurs_slk\fR(3X) manual page for details.
881 .PP
882 The routines \fBgetmouse\fR, \fBmousemask\fR, \fBungetmouse\fR,
883 \fBmouseinterval\fR, and \fBwenclose\fR relating to mouse interfacing are not
884 part of XPG4, nor are they present in SVr4.  See the \fBcurs_mouse\fR(3X)
885 manual page for details.
886 .PP
887 The routine \fBmcprint\fR was not present in any previous curses
888 implementation.  See the \fBcurs_print\fR(3X) manual page for details.
889 .PP
890 The routine \fBwresize\fR is not part of XPG4, nor is it present in SVr4.  See
891 the \fBwresize\fR(3X) manual page for details.
892 .PP
893 In historic curses versions, delays embedded in the capabilities \fBcr\fR,
894 \fBind\fR, \fBcub1\fR, \fBff\fR and \fBtab\fR activated corresponding delay
895 bits in the UNIX tty driver.  In this implementation, all padding is done by
896 NUL sends.  This method is slightly more expensive, but narrows the interface
897 to the UNIX kernel significantly and increases the package's portability
898 correspondingly.
899 .SH NOTES
900 The header file \fB<curses.h>\fR automatically includes the header files
901 \fB<stdio.h>\fR and \fB<unctrl.h>\fR.
902
903 If standard output from a \fBncurses\fR program is re-directed to something
904 which is not a tty, screen updates will be directed to standard error.  This
905 was an undocumented feature of AT&T System V Release 3 curses.
906 .SH AUTHORS
907 Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
908 Based on pcurses by Pavel Curtis.
909 .\"#
910 .\"# The following sets edit modes for GNU EMACS
911 .\"# Local Variables:
912 .\"# mode:nroff
913 .\"# fill-column:79
914 .\"# End: