| '\" t |
| .\"*************************************************************************** |
| .\" Copyright 2018-2020,2021 Thomas E. Dickey * |
| .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * |
| .\" * |
| .\" Permission is hereby granted, free of charge, to any person obtaining a * |
| .\" copy of this software and associated documentation files (the * |
| .\" "Software"), to deal in the Software without restriction, including * |
| .\" without limitation the rights to use, copy, modify, merge, publish, * |
| .\" distribute, distribute with modifications, sublicense, and/or sell * |
| .\" copies of the Software, and to permit persons to whom the Software is * |
| .\" furnished to do so, subject to the following conditions: * |
| .\" * |
| .\" The above copyright notice and this permission notice shall be included * |
| .\" in all copies or substantial portions of the Software. * |
| .\" * |
| .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| .\" * |
| .\" Except as contained in this notice, the name(s) of the above copyright * |
| .\" holders shall not be used in advertising or otherwise to promote the * |
| .\" sale, use or other dealings in this Software without prior written * |
| .\" authorization. * |
| .\"*************************************************************************** |
| .\" |
| .\" $Id: ncurses.3x,v 1.153 2021/08/22 17:17:16 tom Exp $ |
| .hy 0 |
| .TH ncurses 3X "" |
| .ie \n(.g .ds `` \(lq |
| .el .ds `` `` |
| .ie \n(.g .ds '' \(rq |
| .el .ds '' '' |
| .de bP |
| .ie n .IP \(bu 4 |
| .el .IP \(bu 2 |
| .. |
| .de NS |
| .ie n .sp |
| .el .sp .5 |
| .ie n .in +4 |
| .el .in +2 |
| .nf |
| .ft C \" Courier |
| .. |
| .de NE |
| .fi |
| .ft R |
| .ie n .in -4 |
| .el .in -2 |
| .. |
| .ds n 5 |
| .ds d @TERMINFO@ |
| .SH NAME |
| \fBncurses\fR \- CRT screen handling and optimization package |
| .SH SYNOPSIS |
| \fB#include <curses.h>\fR |
| .br |
| .SH DESCRIPTION |
| The \fBncurses\fR library routines give the user a terminal-independent method |
| of updating character screens with reasonable optimization. |
| This implementation is \*(``new curses\*('' (ncurses) and |
| is the approved replacement for |
| 4.4BSD classic curses, which has been discontinued. |
| This describes \fBncurses\fR |
| version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). |
| .PP |
| The \fBncurses\fR library emulates the curses library of |
| System V Release 4 UNIX, |
| and XPG4 (X/Open Portability Guide) curses (also known as XSI curses). |
| XSI stands for X/Open System Interfaces Extension. |
| The \fBncurses\fR library is freely redistributable in source form. |
| Differences from the SVr4 |
| curses are summarized under the |
| \fBEXTENSIONS\fP and \fBPORTABILITY\fP sections below and |
| described in detail in the respective |
| \fBEXTENSIONS\fP, \fBPORTABILITY\fP and \fBBUGS\fP sections |
| of individual man pages. |
| .PP |
| The \fBncurses\fR library also provides many useful extensions, |
| i.e., features which cannot be implemented by a simple add-on library |
| but which require access to the internals of the library. |
| .PP |
| A program using these routines must be linked with the \fB\-lncurses\fR option, |
| or (if it has been generated) with the debugging library \fB\-lncurses_g\fR. |
| (Your system integrator may also have installed these libraries under |
| the names \fB\-lcurses\fR and \fB\-lcurses_g\fR.) |
| The ncurses_g library generates trace logs (in a file called \*(``trace\*('' in the |
| current directory) that describe curses actions. |
| See also the section on \fBALTERNATE CONFIGURATIONS\fP. |
| .PP |
| The \fBncurses\fR package supports: overall screen, window and pad |
| manipulation; output to windows and pads; reading terminal input; control over |
| terminal and \fBcurses\fR input and output options; environment query |
| routines; color manipulation; use of soft label keys; terminfo capabilities; |
| and access to low-level terminal-manipulation routines. |
| .SS Initialization |
| .PP |
| The library uses the locale which the calling program has initialized. |
| That is normally done with \fBsetlocale\fP: |
| .NS |
| \fBsetlocale(LC_ALL, "");\fP |
| .NE |
| .PP |
| If the locale is not initialized, |
| the library assumes that characters are printable as in ISO\-8859\-1, |
| to work with certain legacy programs. |
| You should initialize the locale and not rely on specific details of |
| the library when the locale has not been setup. |
| .PP |
| The function \fBinitscr\fR or \fBnewterm\fR |
| must be called to initialize the library |
| before any of the other routines that deal with windows |
| and screens are used. |
| The routine \fBendwin\fR(3X) must be called before exiting. |
| .PP |
| To get character-at-a-time input without echoing (most |
| interactive, screen oriented programs want this), the following |
| sequence should be used: |
| .NS |
| \fBinitscr(); cbreak(); noecho();\fR |
| .NE |
| .PP |
| Most programs would additionally use the sequence: |
| .NS |
| \fBintrflush(stdscr, FALSE);\fR |
| \fBkeypad(stdscr, TRUE);\fR |
| .NE |
| .PP |
| Before a \fBcurses\fR program is run, the tab stops of the terminal |
| should be set and its initialization strings, if defined, must be output. |
| This can be done by executing the \fB@TPUT@ init\fR command |
| after the shell environment variable \fBTERM\fR has been exported. |
| \fB@TSET@(1)\fR is usually responsible for doing this. |
| [See \fBterminfo\fR(\*n) for further details.] |
| .SS Datatypes |
| .PP |
| The \fBncurses\fR library permits manipulation of data structures, |
| called \fIwindows\fR, which can be thought of as two-dimensional |
| arrays of characters representing all or part of a CRT screen. |
| A default window called \fBstdscr\fR, which is the size of the terminal |
| screen, is supplied. |
| Others may be created with \fBnewwin\fR. |
| .PP |
| Note that \fBcurses\fR does not handle overlapping windows, that's done by |
| the \fBpanel\fR(3X) library. |
| This means that you can either use |
| \fBstdscr\fR or divide the screen into tiled windows and not using |
| \fBstdscr\fR at all. |
| Mixing the two will result in unpredictable, and undesired, effects. |
| .PP |
| Windows are referred to by variables declared as \fBWINDOW *\fR. |
| These data structures are manipulated with routines described here and |
| elsewhere in the \fBncurses\fR manual pages. |
| Among those, the most basic |
| routines are \fBmove\fR and \fBaddch\fR. |
| More general versions of |
| these routines are included with names beginning with \fBw\fR, |
| allowing the user to specify a window. |
| The routines not beginning |
| with \fBw\fR affect \fBstdscr\fR. |
| .PP |
| After using routines to manipulate a window, \fBrefresh\fR(3X) is called, |
| telling \fBcurses\fR to make the user's CRT screen look like |
| \fBstdscr\fR. |
| The characters in a window are actually of type |
| \fBchtype\fR, (character and attribute data) so that other information |
| about the character may also be stored with each character. |
| .PP |
| Special windows called \fIpads\fR may also be manipulated. |
| These are windows |
| which are not constrained to the size of the screen and whose contents need not |
| be completely displayed. |
| See \fBcurs_pad\fR(3X) for more information. |
| .PP |
| In addition to drawing characters on the screen, video attributes and colors |
| may be supported, causing the characters to show up in such modes as |
| underlined, in reverse video, or in color on terminals that support such |
| display enhancements. |
| Line drawing characters may be specified to be output. |
| On input, \fBcurses\fR is also able to translate arrow and function keys that |
| transmit escape sequences into single values. |
| The video attributes, line |
| drawing characters, and input values use names, defined in \fB<curses.h>\fR, |
| such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR. |
| .SS Environment variables |
| .PP |
| If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the |
| program is executing in a window environment, line and column information in |
| the environment will override information read by \fIterminfo\fR. |
| This would affect a program running in an AT&T 630 layer, |
| for example, where the size of a |
| screen is changeable (see \fBENVIRONMENT\fR). |
| .PP |
| If the environment variable \fBTERMINFO\fR is defined, any program using |
| \fBcurses\fR checks for a local terminal definition before checking in the |
| standard place. |
| For example, if \fBTERM\fR is set to \fBatt4424\fR, then the |
| compiled terminal definition is found in |
| .NS |
| \fB\*d/a/att4424\fR. |
| .NE |
| .PP |
| (The \fBa\fR is copied from the first letter of \fBatt4424\fR to avoid |
| creation of huge directories.) However, if \fBTERMINFO\fR is set to |
| \fB$HOME/myterms\fR, \fBcurses\fR first checks |
| .NS |
| \fB$HOME/myterms/a/att4424\fR, |
| .NE |
| .PP |
| and if that fails, it then checks |
| .NS |
| \fB\*d/a/att4424\fR. |
| .NE |
| .PP |
| This is useful for developing experimental definitions or when write |
| permission in \fB\*d\fR is not available. |
| .PP |
| The integer variables \fBLINES\fR and \fBCOLS\fR are defined in |
| \fB<curses.h>\fR and will be filled in by \fBinitscr\fR with the size of the |
| screen. |
| The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and |
| \fB0\fR, respectively. |
| .PP |
| The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR |
| which is used for certain low-level operations like clearing and redrawing a |
| screen containing garbage. |
| The \fBcurscr\fR can be used in only a few routines. |
| .\" |
| .SS Routine and Argument Names |
| Many \fBcurses\fR routines have two or more versions. |
| The routines prefixed with \fBw\fR require a window argument. |
| The routines prefixed with \fBp\fR require a pad argument. |
| Those without a prefix generally use \fBstdscr\fR. |
| .PP |
| The routines prefixed with \fBmv\fR require a \fIy\fR and \fIx\fR |
| coordinate to move to before performing the appropriate action. |
| The \fBmv\fR routines imply a call to \fBmove\fR before the call to the |
| other routine. |
| The coordinate \fIy\fR always refers to the row (of |
| the window), and \fIx\fR always refers to the column. |
| The upper left-hand corner is always (0,0), not (1,1). |
| .PP |
| The routines prefixed with \fBmvw\fR take both a window argument and |
| \fIx\fR and \fIy\fR coordinates. |
| The window argument is always specified before the coordinates. |
| .PP |
| In each case, \fIwin\fR is the window affected, and \fIpad\fR is the |
| pad affected; \fIwin\fR and \fIpad\fR are always pointers to type |
| \fBWINDOW\fR. |
| .PP |
| Option setting routines require a Boolean flag \fIbf\fR with the value |
| \fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR. |
| Most of the data types used in the library routines, |
| such as \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and \fBchtype\fR |
| are defined in \fB<curses.h>\fR. |
| Types used for the terminfo routines such as |
| \fBTERMINAL\fR are defined in \fB<term.h>\fR. |
| .PP |
| This manual page describes functions which may appear in any configuration |
| of the library. |
| There are two common configurations of the library: |
| .RS 3 |
| .TP 5 |
| .I ncurses |
| the \*(``normal\*('' library, which handles 8-bit characters. |
| The normal (8-bit) library stores characters combined with attributes |
| in \fBchtype\fP data. |
| .IP |
| Attributes alone (no corresponding character) may be stored in \fBchtype\fP |
| or the equivalent \fBattr_t\fP data. |
| In either case, the data is stored in something like an integer. |
| .IP |
| Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBchtype\fP. |
| .TP 5 |
| .I ncursesw |
| the so-called \*(``wide\*('' library, which handles multibyte characters |
| (see the section on \fBALTERNATE CONFIGURATIONS\fP). |
| The \*(``wide\*('' library includes all of the calls |
| from the \*(``normal\*('' library. |
| It adds about one third more calls using data types which store |
| multibyte characters: |
| .RS 5 |
| .TP 5 |
| .B cchar_t |
| corresponds to \fBchtype\fP. |
| However it is a structure, because more data is stored than can fit into |
| an integer. |
| The characters are large enough to require a full integer value \- and there |
| may be more than one character per cell. |
| The video attributes and color are stored in separate fields of the structure. |
| .IP |
| Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBcchar_t\fP. |
| .IP |
| The \fBsetcchar\fP(3X) and \fBgetcchar\fP(3X) |
| functions store and retrieve the data from |
| a \fBcchar_t\fP structure. |
| .TP 5 |
| .B wchar_t |
| stores a \*(``wide\*('' character. |
| Like \fBchtype\fP, this may be an integer. |
| .TP 5 |
| .B wint_t |
| stores a \fBwchar_t\fP or \fBWEOF\fP \- not the same, though both may have |
| the same size. |
| .RE |
| .IP |
| The \*(``wide\*('' library provides new functions which are analogous to |
| functions in the \*(``normal\*('' library. |
| There is a naming convention which relates many of the normal/wide variants: |
| a \*(``_w\*('' is inserted into the name. |
| For example, \fBwaddch\fP becomes \fBwadd_wch\fP. |
| .RE |
| .PP |
| .\" |
| .SS Routine Name Index |
| The following table lists the \fBcurses\fR routines provided in |
| the \*(``normal\*('' and \*(``wide\*('' libraries and the names of |
| the manual pages on which they are described. |
| Routines flagged with \*(``*\*('' |
| are ncurses-specific, not described by XPG4 or present in SVr4. |
| .PP |
| .TS |
| center tab(/); |
| l l |
| l l . |
| \fBcurses\fR Routine Name/Manual Page Name |
| = |
| COLOR_PAIR/\fBcurs_color\fR(3X) |
| PAIR_NUMBER/\fBcurs_attr\fR(3X) |
| add_wch/\fBcurs_add_wch\fR(3X) |
| add_wchnstr/\fBcurs_add_wchstr\fR(3X) |
| add_wchstr/\fBcurs_add_wchstr\fR(3X) |
| addch/\fBcurs_addch\fR(3X) |
| addchnstr/\fBcurs_addchstr\fR(3X) |
| addchstr/\fBcurs_addchstr\fR(3X) |
| addnstr/\fBcurs_addstr\fR(3X) |
| addnwstr/\fBcurs_addwstr\fR(3X) |
| addstr/\fBcurs_addstr\fR(3X) |
| addwstr/\fBcurs_addwstr\fR(3X) |
| alloc_pair/\fBnew_pair\fR(3X)* |
| assume_default_colors/\fBdefault_colors\fR(3X)* |
| attr_get/\fBcurs_attr\fR(3X) |
| attr_off/\fBcurs_attr\fR(3X) |
| attr_on/\fBcurs_attr\fR(3X) |
| attr_set/\fBcurs_attr\fR(3X) |
| attroff/\fBcurs_attr\fR(3X) |
| attron/\fBcurs_attr\fR(3X) |
| attrset/\fBcurs_attr\fR(3X) |
| baudrate/\fBcurs_termattrs\fR(3X) |
| beep/\fBcurs_beep\fR(3X) |
| bkgd/\fBcurs_bkgd\fR(3X) |
| bkgdset/\fBcurs_bkgd\fR(3X) |
| bkgrnd/\fBcurs_bkgrnd\fR(3X) |
| bkgrndset/\fBcurs_bkgrnd\fR(3X) |
| border/\fBcurs_border\fR(3X) |
| border_set/\fBcurs_border_set\fR(3X) |
| box/\fBcurs_border\fR(3X) |
| box_set/\fBcurs_border_set\fR(3X) |
| can_change_color/\fBcurs_color\fR(3X) |
| cbreak/\fBcurs_inopts\fR(3X) |
| chgat/\fBcurs_attr\fR(3X) |
| clear/\fBcurs_clear\fR(3X) |
| clearok/\fBcurs_outopts\fR(3X) |
| clrtobot/\fBcurs_clear\fR(3X) |
| clrtoeol/\fBcurs_clear\fR(3X) |
| color_content/\fBcurs_color\fR(3X) |
| color_set/\fBcurs_attr\fR(3X) |
| copywin/\fBcurs_overlay\fR(3X) |
| curs_set/\fBcurs_kernel\fR(3X) |
| curses_trace/\fBcurs_trace\fR(3X)* |
| curses_version/\fBcurs_extend\fR(3X)* |
| def_prog_mode/\fBcurs_kernel\fR(3X) |
| def_shell_mode/\fBcurs_kernel\fR(3X) |
| define_key/\fBdefine_key\fR(3X)* |
| del_curterm/\fBcurs_terminfo\fR(3X) |
| delay_output/\fBcurs_util\fR(3X) |
| delch/\fBcurs_delch\fR(3X) |
| deleteln/\fBcurs_deleteln\fR(3X) |
| delscreen/\fBcurs_initscr\fR(3X) |
| delwin/\fBcurs_window\fR(3X) |
| derwin/\fBcurs_window\fR(3X) |
| doupdate/\fBcurs_refresh\fR(3X) |
| dupwin/\fBcurs_window\fR(3X) |
| echo/\fBcurs_inopts\fR(3X) |
| echo_wchar/\fBcurs_add_wch\fR(3X) |
| echochar/\fBcurs_addch\fR(3X) |
| endwin/\fBcurs_initscr\fR(3X) |
| erase/\fBcurs_clear\fR(3X) |
| erasechar/\fBcurs_termattrs\fR(3X) |
| erasewchar/\fBcurs_termattrs\fR(3X) |
| exit_curses/\fBcurs_memleaks\fR(3X)* |
| exit_terminfo/\fBcurs_memleaks\fR(3X)* |
| extended_color_content/\fBcurs_color\fR(3X)* |
| extended_pair_content/\fBcurs_color\fR(3X)* |
| extended_slk_color/\fBcurs_slk\fR(3X)* |
| filter/\fBcurs_util\fR(3X) |
| find_pair/\fBnew_pair\fR(3X)* |
| flash/\fBcurs_beep\fR(3X) |
| flushinp/\fBcurs_util\fR(3X) |
| free_pair/\fBnew_pair\fR(3X)* |
| get_wch/\fBcurs_get_wch\fR(3X) |
| get_wstr/\fBcurs_get_wstr\fR(3X) |
| getattrs/\fBcurs_attr\fR(3X) |
| getbegx/\fBcurs_legacy\fR(3X)* |
| getbegy/\fBcurs_legacy\fR(3X)* |
| getbegyx/\fBcurs_getyx\fR(3X) |
| getbkgd/\fBcurs_bkgd\fR(3X) |
| getbkgrnd/\fBcurs_bkgrnd\fR(3X) |
| getcchar/\fBcurs_getcchar\fR(3X) |
| getch/\fBcurs_getch\fR(3X) |
| getcurx/\fBcurs_legacy\fR(3X)* |
| getcury/\fBcurs_legacy\fR(3X)* |
| getmaxx/\fBcurs_legacy\fR(3X)* |
| getmaxy/\fBcurs_legacy\fR(3X)* |
| getmaxyx/\fBcurs_getyx\fR(3X) |
| getmouse/\fBcurs_mouse\fR(3X)* |
| getn_wstr/\fBcurs_get_wstr\fR(3X) |
| getnstr/\fBcurs_getstr\fR(3X) |
| getparx/\fBcurs_legacy\fR(3X)* |
| getpary/\fBcurs_legacy\fR(3X)* |
| getparyx/\fBcurs_getyx\fR(3X) |
| getstr/\fBcurs_getstr\fR(3X) |
| getsyx/\fBcurs_kernel\fR(3X) |
| getwin/\fBcurs_util\fR(3X) |
| getyx/\fBcurs_getyx\fR(3X) |
| halfdelay/\fBcurs_inopts\fR(3X) |
| has_colors/\fBcurs_color\fR(3X) |
| has_ic/\fBcurs_termattrs\fR(3X) |
| has_il/\fBcurs_termattrs\fR(3X) |
| has_key/\fBcurs_getch\fR(3X)* |
| has_mouse/\fBcurs_mouse\fR(3X)* |
| hline/\fBcurs_border\fR(3X) |
| hline_set/\fBcurs_border_set\fR(3X) |
| idcok/\fBcurs_outopts\fR(3X) |
| idlok/\fBcurs_outopts\fR(3X) |
| immedok/\fBcurs_outopts\fR(3X) |
| in_wch/\fBcurs_in_wch\fR(3X) |
| in_wchnstr/\fBcurs_in_wchstr\fR(3X) |
| in_wchstr/\fBcurs_in_wchstr\fR(3X) |
| inch/\fBcurs_inch\fR(3X) |
| inchnstr/\fBcurs_inchstr\fR(3X) |
| inchstr/\fBcurs_inchstr\fR(3X) |
| init_color/\fBcurs_color\fR(3X) |
| init_extended_color/\fBcurs_color\fR(3X)* |
| init_extended_pair/\fBcurs_color\fR(3X)* |
| init_pair/\fBcurs_color\fR(3X) |
| initscr/\fBcurs_initscr\fR(3X) |
| innstr/\fBcurs_instr\fR(3X) |
| innwstr/\fBcurs_inwstr\fR(3X) |
| ins_nwstr/\fBcurs_ins_wstr\fR(3X) |
| ins_wch/\fBcurs_ins_wch\fR(3X) |
| ins_wstr/\fBcurs_ins_wstr\fR(3X) |
| insch/\fBcurs_insch\fR(3X) |
| insdelln/\fBcurs_deleteln\fR(3X) |
| insertln/\fBcurs_deleteln\fR(3X) |
| insnstr/\fBcurs_insstr\fR(3X) |
| insstr/\fBcurs_insstr\fR(3X) |
| instr/\fBcurs_instr\fR(3X) |
| intrflush/\fBcurs_inopts\fR(3X) |
| inwstr/\fBcurs_inwstr\fR(3X) |
| is_cleared/\fBcurs_opaque\fR(3X)* |
| is_idcok/\fBcurs_opaque\fR(3X)* |
| is_idlok/\fBcurs_opaque\fR(3X)* |
| is_immedok/\fBcurs_opaque\fR(3X)* |
| is_keypad/\fBcurs_opaque\fR(3X)* |
| is_leaveok/\fBcurs_opaque\fR(3X)* |
| is_linetouched/\fBcurs_touch\fR(3X) |
| is_nodelay/\fBcurs_opaque\fR(3X)* |
| is_notimeout/\fBcurs_opaque\fR(3X)* |
| is_pad/\fBcurs_opaque\fR(3X)* |
| is_scrollok/\fBcurs_opaque\fR(3X)* |
| is_subwin/\fBcurs_opaque\fR(3X)* |
| is_syncok/\fBcurs_opaque\fR(3X)* |
| is_term_resized/\fBresizeterm\fR(3X)* |
| is_wintouched/\fBcurs_touch\fR(3X) |
| isendwin/\fBcurs_initscr\fR(3X) |
| key_defined/\fBkey_defined\fR(3X)* |
| key_name/\fBcurs_util\fR(3X) |
| keybound/\fBkeybound\fR(3X)* |
| keyname/\fBcurs_util\fR(3X) |
| keyok/\fBkeyok\fR(3X)* |
| keypad/\fBcurs_inopts\fR(3X) |
| killchar/\fBcurs_termattrs\fR(3X) |
| killwchar/\fBcurs_termattrs\fR(3X) |
| leaveok/\fBcurs_outopts\fR(3X) |
| longname/\fBcurs_termattrs\fR(3X) |
| mcprint/\fBcurs_print\fR(3X)* |
| meta/\fBcurs_inopts\fR(3X) |
| mouse_trafo/\fBcurs_mouse\fR(3X)* |
| mouseinterval/\fBcurs_mouse\fR(3X)* |
| mousemask/\fBcurs_mouse\fR(3X)* |
| move/\fBcurs_move\fR(3X) |
| mvadd_wch/\fBcurs_add_wch\fR(3X) |
| mvadd_wchnstr/\fBcurs_add_wchstr\fR(3X) |
| mvadd_wchstr/\fBcurs_add_wchstr\fR(3X) |
| mvaddch/\fBcurs_addch\fR(3X) |
| mvaddchnstr/\fBcurs_addchstr\fR(3X) |
| mvaddchstr/\fBcurs_addchstr\fR(3X) |
| mvaddnstr/\fBcurs_addstr\fR(3X) |
| mvaddnwstr/\fBcurs_addwstr\fR(3X) |
| mvaddstr/\fBcurs_addstr\fR(3X) |
| mvaddwstr/\fBcurs_addwstr\fR(3X) |
| mvchgat/\fBcurs_attr\fR(3X) |
| mvcur/\fBcurs_terminfo\fR(3X) |
| mvdelch/\fBcurs_delch\fR(3X) |
| mvderwin/\fBcurs_window\fR(3X) |
| mvget_wch/\fBcurs_get_wch\fR(3X) |
| mvget_wstr/\fBcurs_get_wstr\fR(3X) |
| mvgetch/\fBcurs_getch\fR(3X) |
| mvgetn_wstr/\fBcurs_get_wstr\fR(3X) |
| mvgetnstr/\fBcurs_getstr\fR(3X) |
| mvgetstr/\fBcurs_getstr\fR(3X) |
| mvhline/\fBcurs_border\fR(3X) |
| mvhline_set/\fBcurs_border_set\fR(3X) |
| mvin_wch/\fBcurs_in_wch\fR(3X) |
| mvin_wchnstr/\fBcurs_in_wchstr\fR(3X) |
| mvin_wchstr/\fBcurs_in_wchstr\fR(3X) |
| mvinch/\fBcurs_inch\fR(3X) |
| mvinchnstr/\fBcurs_inchstr\fR(3X) |
| mvinchstr/\fBcurs_inchstr\fR(3X) |
| mvinnstr/\fBcurs_instr\fR(3X) |
| mvinnwstr/\fBcurs_inwstr\fR(3X) |
| mvins_nwstr/\fBcurs_ins_wstr\fR(3X) |
| mvins_wch/\fBcurs_ins_wch\fR(3X) |
| mvins_wstr/\fBcurs_ins_wstr\fR(3X) |
| mvinsch/\fBcurs_insch\fR(3X) |
| mvinsnstr/\fBcurs_insstr\fR(3X) |
| mvinsstr/\fBcurs_insstr\fR(3X) |
| mvinstr/\fBcurs_instr\fR(3X) |
| mvinwstr/\fBcurs_inwstr\fR(3X) |
| mvprintw/\fBcurs_printw\fR(3X) |
| mvscanw/\fBcurs_scanw\fR(3X) |
| mvvline/\fBcurs_border\fR(3X) |
| mvvline_set/\fBcurs_border_set\fR(3X) |
| mvwadd_wch/\fBcurs_add_wch\fR(3X) |
| mvwadd_wchnstr/\fBcurs_add_wchstr\fR(3X) |
| mvwadd_wchstr/\fBcurs_add_wchstr\fR(3X) |
| mvwaddch/\fBcurs_addch\fR(3X) |
| mvwaddchnstr/\fBcurs_addchstr\fR(3X) |
| mvwaddchstr/\fBcurs_addchstr\fR(3X) |
| mvwaddnstr/\fBcurs_addstr\fR(3X) |
| mvwaddnwstr/\fBcurs_addwstr\fR(3X) |
| mvwaddstr/\fBcurs_addstr\fR(3X) |
| mvwaddwstr/\fBcurs_addwstr\fR(3X) |
| mvwchgat/\fBcurs_attr\fR(3X) |
| mvwdelch/\fBcurs_delch\fR(3X) |
| mvwget_wch/\fBcurs_get_wch\fR(3X) |
| mvwget_wstr/\fBcurs_get_wstr\fR(3X) |
| mvwgetch/\fBcurs_getch\fR(3X) |
| mvwgetn_wstr/\fBcurs_get_wstr\fR(3X) |
| mvwgetnstr/\fBcurs_getstr\fR(3X) |
| mvwgetstr/\fBcurs_getstr\fR(3X) |
| mvwhline/\fBcurs_border\fR(3X) |
| mvwhline_set/\fBcurs_border_set\fR(3X) |
| mvwin/\fBcurs_window\fR(3X) |
| mvwin_wch/\fBcurs_in_wch\fR(3X) |
| mvwin_wchnstr/\fBcurs_in_wchstr\fR(3X) |
| mvwin_wchstr/\fBcurs_in_wchstr\fR(3X) |
| mvwinch/\fBcurs_inch\fR(3X) |
| mvwinchnstr/\fBcurs_inchstr\fR(3X) |
| mvwinchstr/\fBcurs_inchstr\fR(3X) |
| mvwinnstr/\fBcurs_instr\fR(3X) |
| mvwinnwstr/\fBcurs_inwstr\fR(3X) |
| mvwins_nwstr/\fBcurs_ins_wstr\fR(3X) |
| mvwins_wch/\fBcurs_ins_wch\fR(3X) |
| mvwins_wstr/\fBcurs_ins_wstr\fR(3X) |
| mvwinsch/\fBcurs_insch\fR(3X) |
| mvwinsnstr/\fBcurs_insstr\fR(3X) |
| mvwinsstr/\fBcurs_insstr\fR(3X) |
| mvwinstr/\fBcurs_instr\fR(3X) |
| mvwinwstr/\fBcurs_inwstr\fR(3X) |
| mvwprintw/\fBcurs_printw\fR(3X) |
| mvwscanw/\fBcurs_scanw\fR(3X) |
| mvwvline/\fBcurs_border\fR(3X) |
| mvwvline_set/\fBcurs_border_set\fR(3X) |
| napms/\fBcurs_kernel\fR(3X) |
| newpad/\fBcurs_pad\fR(3X) |
| newterm/\fBcurs_initscr\fR(3X) |
| newwin/\fBcurs_window\fR(3X) |
| nl/\fBcurs_inopts\fR(3X) |
| nocbreak/\fBcurs_inopts\fR(3X) |
| nodelay/\fBcurs_inopts\fR(3X) |
| noecho/\fBcurs_inopts\fR(3X) |
| nofilter/\fBcurs_util\fR(3X)* |
| nonl/\fBcurs_inopts\fR(3X) |
| noqiflush/\fBcurs_inopts\fR(3X) |
| noraw/\fBcurs_inopts\fR(3X) |
| notimeout/\fBcurs_inopts\fR(3X) |
| overlay/\fBcurs_overlay\fR(3X) |
| overwrite/\fBcurs_overlay\fR(3X) |
| pair_content/\fBcurs_color\fR(3X) |
| pecho_wchar/\fBcurs_pad\fR(3X)* |
| pechochar/\fBcurs_pad\fR(3X) |
| pnoutrefresh/\fBcurs_pad\fR(3X) |
| prefresh/\fBcurs_pad\fR(3X) |
| printw/\fBcurs_printw\fR(3X) |
| putp/\fBcurs_terminfo\fR(3X) |
| putwin/\fBcurs_util\fR(3X) |
| qiflush/\fBcurs_inopts\fR(3X) |
| raw/\fBcurs_inopts\fR(3X) |
| redrawwin/\fBcurs_refresh\fR(3X) |
| refresh/\fBcurs_refresh\fR(3X) |
| reset_color_pairs/\fBcurs_color\fR(3X)* |
| reset_prog_mode/\fBcurs_kernel\fR(3X) |
| reset_shell_mode/\fBcurs_kernel\fR(3X) |
| resetty/\fBcurs_kernel\fR(3X) |
| resize_term/\fBresizeterm\fR(3X)* |
| resizeterm/\fBresizeterm\fR(3X)* |
| restartterm/\fBcurs_terminfo\fR(3X) |
| ripoffline/\fBcurs_kernel\fR(3X) |
| savetty/\fBcurs_kernel\fR(3X) |
| scanw/\fBcurs_scanw\fR(3X) |
| scr_dump/\fBcurs_scr_dump\fR(3X) |
| scr_init/\fBcurs_scr_dump\fR(3X) |
| scr_restore/\fBcurs_scr_dump\fR(3X) |
| scr_set/\fBcurs_scr_dump\fR(3X) |
| scrl/\fBcurs_scroll\fR(3X) |
| scroll/\fBcurs_scroll\fR(3X) |
| scrollok/\fBcurs_outopts\fR(3X) |
| set_curterm/\fBcurs_terminfo\fR(3X) |
| set_term/\fBcurs_initscr\fR(3X) |
| setcchar/\fBcurs_getcchar\fR(3X) |
| setscrreg/\fBcurs_outopts\fR(3X) |
| setsyx/\fBcurs_kernel\fR(3X) |
| setupterm/\fBcurs_terminfo\fR(3X) |
| slk_attr/\fBcurs_slk\fR(3X)* |
| slk_attr_off/\fBcurs_slk\fR(3X) |
| slk_attr_on/\fBcurs_slk\fR(3X) |
| slk_attr_set/\fBcurs_slk\fR(3X) |
| slk_attroff/\fBcurs_slk\fR(3X) |
| slk_attron/\fBcurs_slk\fR(3X) |
| slk_attrset/\fBcurs_slk\fR(3X) |
| slk_clear/\fBcurs_slk\fR(3X) |
| slk_color/\fBcurs_slk\fR(3X) |
| slk_init/\fBcurs_slk\fR(3X) |
| slk_label/\fBcurs_slk\fR(3X) |
| slk_noutrefresh/\fBcurs_slk\fR(3X) |
| slk_refresh/\fBcurs_slk\fR(3X) |
| slk_restore/\fBcurs_slk\fR(3X) |
| slk_set/\fBcurs_slk\fR(3X) |
| slk_touch/\fBcurs_slk\fR(3X) |
| slk_wset/\fBcurs_slk\fR(3X)* |
| standend/\fBcurs_attr\fR(3X) |
| standout/\fBcurs_attr\fR(3X) |
| start_color/\fBcurs_color\fR(3X) |
| subpad/\fBcurs_pad\fR(3X) |
| subwin/\fBcurs_window\fR(3X) |
| syncok/\fBcurs_window\fR(3X) |
| term_attrs/\fBcurs_termattrs\fR(3X) |
| termattrs/\fBcurs_termattrs\fR(3X) |
| termname/\fBcurs_termattrs\fR(3X) |
| tgetent/\fBcurs_termcap\fR(3X) |
| tgetflag/\fBcurs_termcap\fR(3X) |
| tgetnum/\fBcurs_termcap\fR(3X) |
| tgetstr/\fBcurs_termcap\fR(3X) |
| tgoto/\fBcurs_termcap\fR(3X) |
| tigetflag/\fBcurs_terminfo\fR(3X) |
| tigetnum/\fBcurs_terminfo\fR(3X) |
| tigetstr/\fBcurs_terminfo\fR(3X) |
| timeout/\fBcurs_inopts\fR(3X) |
| tiparm/\fBcurs_terminfo\fR(3X)* |
| touchline/\fBcurs_touch\fR(3X) |
| touchwin/\fBcurs_touch\fR(3X) |
| tparm/\fBcurs_terminfo\fR(3X) |
| tputs/\fBcurs_termcap\fR(3X) |
| tputs/\fBcurs_terminfo\fR(3X) |
| trace/\fBcurs_trace\fR(3X)* |
| typeahead/\fBcurs_inopts\fR(3X) |
| unctrl/\fBcurs_util\fR(3X) |
| unget_wch/\fBcurs_get_wch\fR(3X) |
| ungetch/\fBcurs_getch\fR(3X) |
| ungetmouse/\fBcurs_mouse\fR(3X)* |
| untouchwin/\fBcurs_touch\fR(3X) |
| use_default_colors/\fBdefault_colors\fR(3X)* |
| use_env/\fBcurs_util\fR(3X) |
| use_extended_names/\fBcurs_extend\fR(3X)* |
| use_legacy_coding/\fBlegacy_coding\fR(3X)* |
| use_tioctl/\fBcurs_util\fR(3X)* |
| vid_attr/\fBcurs_terminfo\fR(3X) |
| vid_puts/\fBcurs_terminfo\fR(3X) |
| vidattr/\fBcurs_terminfo\fR(3X) |
| vidputs/\fBcurs_terminfo\fR(3X) |
| vline/\fBcurs_border\fR(3X) |
| vline_set/\fBcurs_border_set\fR(3X) |
| vw_printw/\fBcurs_printw\fR(3X) |
| vw_scanw/\fBcurs_scanw\fR(3X) |
| vwprintw/\fBcurs_printw\fR(3X) |
| vwscanw/\fBcurs_scanw\fR(3X) |
| wadd_wch/\fBcurs_add_wch\fR(3X) |
| wadd_wchnstr/\fBcurs_add_wchstr\fR(3X) |
| wadd_wchstr/\fBcurs_add_wchstr\fR(3X) |
| waddch/\fBcurs_addch\fR(3X) |
| waddchnstr/\fBcurs_addchstr\fR(3X) |
| waddchstr/\fBcurs_addchstr\fR(3X) |
| waddnstr/\fBcurs_addstr\fR(3X) |
| waddnwstr/\fBcurs_addwstr\fR(3X) |
| waddstr/\fBcurs_addstr\fR(3X) |
| waddwstr/\fBcurs_addwstr\fR(3X) |
| wattr_get/\fBcurs_attr\fR(3X) |
| wattr_off/\fBcurs_attr\fR(3X) |
| wattr_on/\fBcurs_attr\fR(3X) |
| wattr_set/\fBcurs_attr\fR(3X) |
| wattroff/\fBcurs_attr\fR(3X) |
| wattron/\fBcurs_attr\fR(3X) |
| wattrset/\fBcurs_attr\fR(3X) |
| wbkgd/\fBcurs_bkgd\fR(3X) |
| wbkgdset/\fBcurs_bkgd\fR(3X) |
| wbkgrnd/\fBcurs_bkgrnd\fR(3X) |
| wbkgrndset/\fBcurs_bkgrnd\fR(3X) |
| wborder/\fBcurs_border\fR(3X) |
| wborder_set/\fBcurs_border_set\fR(3X) |
| wchgat/\fBcurs_attr\fR(3X) |
| wclear/\fBcurs_clear\fR(3X) |
| wclrtobot/\fBcurs_clear\fR(3X) |
| wclrtoeol/\fBcurs_clear\fR(3X) |
| wcolor_set/\fBcurs_attr\fR(3X) |
| wcursyncup/\fBcurs_window\fR(3X) |
| wdelch/\fBcurs_delch\fR(3X) |
| wdeleteln/\fBcurs_deleteln\fR(3X) |
| wecho_wchar/\fBcurs_add_wch\fR(3X) |
| wechochar/\fBcurs_addch\fR(3X) |
| wenclose/\fBcurs_mouse\fR(3X)* |
| werase/\fBcurs_clear\fR(3X) |
| wget_wch/\fBcurs_get_wch\fR(3X) |
| wget_wstr/\fBcurs_get_wstr\fR(3X) |
| wgetbkgrnd/\fBcurs_bkgrnd\fR(3X) |
| wgetch/\fBcurs_getch\fR(3X) |
| wgetdelay/\fBcurs_opaque\fR(3X)* |
| wgetn_wstr/\fBcurs_get_wstr\fR(3X) |
| wgetnstr/\fBcurs_getstr\fR(3X) |
| wgetparent/\fBcurs_opaque\fR(3X)* |
| wgetscrreg/\fBcurs_opaque\fR(3X)* |
| wgetstr/\fBcurs_getstr\fR(3X) |
| whline/\fBcurs_border\fR(3X) |
| whline_set/\fBcurs_border_set\fR(3X) |
| win_wch/\fBcurs_in_wch\fR(3X) |
| win_wchnstr/\fBcurs_in_wchstr\fR(3X) |
| win_wchstr/\fBcurs_in_wchstr\fR(3X) |
| winch/\fBcurs_inch\fR(3X) |
| winchnstr/\fBcurs_inchstr\fR(3X) |
| winchstr/\fBcurs_inchstr\fR(3X) |
| winnstr/\fBcurs_instr\fR(3X) |
| winnwstr/\fBcurs_inwstr\fR(3X) |
| wins_nwstr/\fBcurs_ins_wstr\fR(3X) |
| wins_wch/\fBcurs_ins_wch\fR(3X) |
| wins_wstr/\fBcurs_ins_wstr\fR(3X) |
| winsch/\fBcurs_insch\fR(3X) |
| winsdelln/\fBcurs_deleteln\fR(3X) |
| winsertln/\fBcurs_deleteln\fR(3X) |
| winsnstr/\fBcurs_insstr\fR(3X) |
| winsstr/\fBcurs_insstr\fR(3X) |
| winstr/\fBcurs_instr\fR(3X) |
| winwstr/\fBcurs_inwstr\fR(3X) |
| wmouse_trafo/\fBcurs_mouse\fR(3X)* |
| wmove/\fBcurs_move\fR(3X) |
| wnoutrefresh/\fBcurs_refresh\fR(3X) |
| wprintw/\fBcurs_printw\fR(3X) |
| wredrawln/\fBcurs_refresh\fR(3X) |
| wrefresh/\fBcurs_refresh\fR(3X) |
| wresize/\fBwresize\fR(3X)* |
| wscanw/\fBcurs_scanw\fR(3X) |
| wscrl/\fBcurs_scroll\fR(3X) |
| wsetscrreg/\fBcurs_outopts\fR(3X) |
| wstandend/\fBcurs_attr\fR(3X) |
| wstandout/\fBcurs_attr\fR(3X) |
| wsyncdown/\fBcurs_window\fR(3X) |
| wsyncup/\fBcurs_window\fR(3X) |
| wtimeout/\fBcurs_inopts\fR(3X) |
| wtouchln/\fBcurs_touch\fR(3X) |
| wunctrl/\fBcurs_util\fR(3X) |
| wvline/\fBcurs_border\fR(3X) |
| wvline_set/\fBcurs_border_set\fR(3X) |
| .TE |
| .PP |
| Depending on the configuration, |
| additional sets of functions may be available: |
| .RS 3 |
| .TP 5 |
| \fBcurs_memleaks\fP(3X) - curses memory-leak checking |
| .TP 5 |
| \fBcurs_sp_funcs\fP(3X) - curses screen-pointer extension |
| .TP 5 |
| \fBcurs_threads\fP(3X) - curses thread support |
| .TP 5 |
| \fBcurs_trace\fP(3X) - curses debugging routines |
| .RE |
| .SH RETURN VALUE |
| Routines that return an integer return \fBERR\fR upon failure and an |
| integer value other than \fBERR\fR upon successful completion, unless |
| otherwise noted in the routine descriptions. |
| .PP |
| As a general rule, routines check for null pointers passed as parameters, |
| and handle this as an error. |
| .PP |
| All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR, |
| \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR. |
| The return values of |
| \fBsetscrreg\fR, |
| \fBwsetscrreg\fR, |
| \fBgetyx\fR, |
| \fBgetbegyx\fR, and |
| \fBgetmaxyx\fR are undefined (i.e., these should not be used as the |
| right-hand side of assignment statements). |
| .PP |
| Functions with a \*(``mv\*('' prefix first perform a cursor movement using |
| \fBwmove\fP, and return an error if the position is outside the window, |
| or if the window pointer is null. |
| Most \*(``mv\*(''-prefixed functions |
| (except variadic functions such as \fBmvprintw\fP) |
| are provided both as macros and functions. |
| .PP |
| Routines that return pointers return \fBNULL\fR on error. |
| .SH ENVIRONMENT |
| .PP |
| The following environment symbols are useful for customizing the |
| runtime behavior of the \fBncurses\fR library. |
| The most important ones have been already discussed in detail. |
| .SS CC command-character |
| .PP |
| When set, change occurrences of the command_character |
| (i.e., the \fBcmdch\fP capability) |
| of the loaded terminfo entries to the value of this variable. |
| Very few terminfo entries provide this feature. |
| .PP |
| Because this name is also used in development environments to represent |
| the C compiler's name, \fBncurses\fR ignores it if it does not happen to |
| be a single character. |
| .SS BAUDRATE |
| .PP |
| The debugging library checks this environment variable when the application |
| has redirected output to a file. |
| The variable's numeric value is used for the baudrate. |
| If no value is found, \fBncurses\fR uses 9600. |
| This allows testers to construct repeatable test-cases |
| that take into account costs that depend on baudrate. |
| .SS COLUMNS |
| .PP |
| Specify the width of the screen in characters. |
| Applications running in a windowing environment usually are able to |
| obtain the width of the window in which they are executing. |
| If neither the \fBCOLUMNS\fP value nor the terminal's screen size is available, |
| \fBncurses\fR uses the size which may be specified in the terminfo database |
| (i.e., the \fBcols\fR capability). |
| .PP |
| It is important that your application use a correct size for the screen. |
| This is not always possible because your application may be |
| running on a host which does not honor NAWS (Negotiations About Window |
| Size), or because you are temporarily running as another user. |
| However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's |
| use of the screen size obtained from the operating system. |
| .PP |
| Either \fBCOLUMNS\fP or \fBLINES\fP symbols may be specified independently. |
| This is mainly useful to circumvent legacy misfeatures of terminal descriptions, |
| e.g., xterm which commonly specifies a 65 line screen. |
| For best results, \fBlines\fR and \fBcols\fR should not be specified in |
| a terminal description for terminals which are run as emulations. |
| .PP |
| Use the \fBuse_env\fR function to disable all use of external environment |
| (but not including system calls) to determine the screen size. |
| Use the \fBuse_tioctl\fR function to update \fBCOLUMNS\fP or \fBLINES\fP |
| to match the screen size obtained from system calls or the terminal database. |
| .SS ESCDELAY |
| .PP |
| Specifies the total time, in milliseconds, for which ncurses will |
| await a character sequence, e.g., a function key. |
| The default value, 1000 milliseconds, is enough for most uses. |
| However, it is made a variable to accommodate unusual applications. |
| .PP |
| The most common instance where you may wish to change this value |
| is to work with slow hosts, e.g., running on a network. |
| If the host cannot read characters rapidly enough, it will have the same |
| effect as if the terminal did not send characters rapidly enough. |
| The library will still see a timeout. |
| .PP |
| Note that xterm mouse events are built up from character sequences |
| received from the xterm. |
| If your application makes heavy use of multiple-clicking, you may |
| wish to lengthen this default value because the timeout applies |
| to the composed multi-click event as well as the individual clicks. |
| .PP |
| In addition to the environment variable, |
| this implementation provides a global variable with the same name. |
| Portable applications should not rely upon the presence of ESCDELAY |
| in either form, |
| but setting the environment variable rather than the global variable |
| does not create problems when compiling an application. |
| .SS HOME |
| Tells \fBncurses\fR where your home directory is. |
| That is where it may read and write auxiliary terminal descriptions: |
| .NS |
| $HOME/.termcap |
| $HOME/.terminfo |
| .NE |
| .SS LINES |
| .PP |
| Like COLUMNS, specify the height of the screen in characters. |
| See COLUMNS for a detailed description. |
| .SS MOUSE_BUTTONS_123 |
| .PP |
| This applies only to the OS/2 EMX port. |
| It specifies the order of buttons on the mouse. |
| OS/2 numbers a 3-button mouse inconsistently from other |
| platforms: |
| .NS |
| 1 = left |
| .br |
| 2 = right |
| .br |
| 3 = middle. |
| .NE |
| .PP |
| This variable lets you customize the mouse. |
| The variable must be three numeric digits 1\-3 in any order, e.g., 123 or 321. |
| If it is not specified, \fBncurses\fR uses 132. |
| .SS NCURSES_ASSUMED_COLORS |
| .PP |
| Override the compiled-in assumption that the |
| terminal's default colors are white-on-black |
| (see \fBdefault_colors\fR(3X)). |
| You may set the foreground and background color values with this environment |
| variable by proving a 2-element list: foreground,background. |
| For example, to tell ncurses to not assume anything |
| about the colors, set this to "\-1,\-1". |
| To make it green-on-black, set it to "2,0". |
| Any positive value from zero to the terminfo \fBmax_colors\fR value is allowed. |
| .SS NCURSES_CONSOLE2 |
| This applies only to the MinGW port of ncurses. |
| .PP |
| The \fBConsole2\fP program's handling of the Microsoft Console API call |
| \fBCreateConsoleScreenBuffer\fP is defective. |
| Applications which use this will hang. |
| However, it is possible to simulate the action of this call by |
| mapping coordinates, |
| explicitly saving and restoring the original screen contents. |
| Setting the environment variable \fBNCGDB\fP has the same effect. |
| .SS NCURSES_GPM_TERMS |
| .PP |
| This applies only to ncurses configured to use the GPM interface. |
| .PP |
| If present, |
| the environment variable is a list of one or more terminal names |
| against which the \fBTERM\fP environment variable is matched. |
| Setting it to an empty value disables the GPM interface; |
| using the built-in support for xterm, etc. |
| .PP |
| If the environment variable is absent, |
| ncurses will attempt to open GPM if \fBTERM\fP contains \*(``linux\*(''. |
| .SS NCURSES_NO_HARD_TABS |
| .PP |
| \fBNcurses\fP may use tabs as part of the cursor movement optimization. |
| In some cases, |
| your terminal driver may not handle these properly. |
| Set this environment variable to disable the feature. |
| You can also adjust your \fBstty\fP settings to avoid the problem. |
| .SS NCURSES_NO_MAGIC_COOKIE |
| .PP |
| Some terminals use a magic-cookie feature which requires special handling |
| to make highlighting and other video attributes display properly. |
| You can suppress the highlighting entirely for these terminals by |
| setting this environment variable. |
| .SS NCURSES_NO_PADDING |
| .PP |
| Most of the terminal descriptions in the terminfo database are written |
| for real \*(``hardware\*('' terminals. |
| Many people use terminal emulators |
| which run in a windowing environment and use curses-based applications. |
| Terminal emulators can duplicate |
| all of the important aspects of a hardware terminal, but they do not |
| have the same limitations. |
| The chief limitation of a hardware terminal from the standpoint |
| of your application is the management of dataflow, i.e., timing. |
| Unless a hardware terminal is interfaced into a terminal concentrator |
| (which does flow control), |
| it (or your application) must manage dataflow, preventing overruns. |
| The cheapest solution (no hardware cost) |
| is for your program to do this by pausing after |
| operations that the terminal does slowly, such as clearing the display. |
| .PP |
| As a result, many terminal descriptions (including the vt100) |
| have delay times embedded. |
| You may wish to use these descriptions, |
| but not want to pay the performance penalty. |
| .PP |
| Set the NCURSES_NO_PADDING environment variable to disable all but mandatory |
| padding. |
| Mandatory padding is used as a part of special control |
| sequences such as \fIflash\fR. |
| .SS NCURSES_NO_SETBUF |
| This setting is obsolete. |
| Before changes |
| .RS 3 |
| .bP |
| started with 5.9 patch 20120825 |
| and |
| .bP |
| continued |
| though 5.9 patch 20130126 |
| .RE |
| .PP |
| \fBncurses\fR enabled buffered output during terminal initialization. |
| This was done (as in SVr4 curses) for performance reasons. |
| For testing purposes, both of \fBncurses\fR and certain applications, |
| this feature was made optional. |
| Setting the NCURSES_NO_SETBUF variable |
| disabled output buffering, leaving the output in the original (usually |
| line buffered) mode. |
| .PP |
| In the current implementation, |
| ncurses performs its own buffering and does not require this workaround. |
| It does not modify the buffering of the standard output. |
| .PP |
| The reason for the change was to make the behavior for interrupts and |
| other signals more robust. |
| One drawback is that certain nonconventional programs would mix |
| ordinary stdio calls with ncurses calls and (usually) work. |
| This is no longer possible since ncurses is not using |
| the buffered standard output but its own output (to the same file descriptor). |
| As a special case, the low-level calls such as \fBputp\fP still use the |
| standard output. |
| But high-level curses calls do not. |
| .SS NCURSES_NO_UTF8_ACS |
| .PP |
| During initialization, the \fBncurses\fR library |
| checks for special cases where VT100 line-drawing (and the corresponding |
| alternate character set capabilities) described in the terminfo are known |
| to be missing. |
| Specifically, when running in a UTF\-8 locale, |
| the Linux console emulator and the GNU screen program ignore these. |
| Ncurses checks the \fBTERM\fP environment variable for these. |
| For other special cases, you should set this environment variable. |
| Doing this tells ncurses to use Unicode values which correspond to |
| the VT100 line-drawing glyphs. |
| That works for the special cases cited, |
| and is likely to work for terminal emulators. |
| .PP |
| When setting this variable, you should set it to a nonzero value. |
| Setting it to zero (or to a nonnumber) |
| disables the special check for \*(``linux\*('' and \*(``screen\*(''. |
| .PP |
| As an alternative to the environment variable, |
| ncurses checks for an extended terminfo capability \fBU8\fP. |
| This is a numeric capability which can be compiled using \fB@TIC@\ \-x\fP. |
| For example |
| .RS 3 |
| .ft CW |
| .sp |
| .nf |
| # linux console, if patched to provide working |
| # VT100 shift-in/shift-out, with corresponding font. |
| linux-vt100|linux console with VT100 line-graphics, |
| U8#0, use=linux, |
| .sp |
| # uxterm with vt100Graphics resource set to false |
| xterm-utf8|xterm relying on UTF-8 line-graphics, |
| U8#1, use=xterm, |
| .fi |
| .ft |
| .RE |
| .PP |
| The name \*(``U8\*('' is chosen to be two characters, |
| to permit it to be used by applications that use ncurses' |
| termcap interface. |
| .SS NCURSES_TRACE |
| .PP |
| During initialization, the \fBncurses\fR debugging library |
| checks the NCURSES_TRACE environment variable. |
| If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR |
| function, using that value as the argument. |
| .PP |
| The argument values, which are defined in \fBcurses.h\fR, provide several |
| types of information. |
| When running with traces enabled, your application will write the |
| file \fBtrace\fR to the current directory. |
| .PP |
| See \fBcurs_trace\fP(3X) for more information. |
| .SS TERM |
| .PP |
| Denotes your terminal type. |
| Each terminal type is distinct, though many are similar. |
| .PP |
| \fBTERM\fP is commonly set by terminal emulators to help |
| applications find a workable terminal description. |
| Some of those choose a popular approximation, e.g., |
| \*(``ansi\*('', \*(``vt100\*('', \*(``xterm\*('' rather than an exact fit. |
| Not infrequently, your application will have problems with that approach, |
| e.g., incorrect function-key definitions. |
| .PP |
| If you set \fBTERM\fP in your environment, |
| it has no effect on the operation of the terminal emulator. |
| It only affects the way applications work within the terminal. |
| Likewise, as a general rule (\fBxterm\fP being a rare exception), |
| terminal emulators which allow you to |
| specify \fBTERM\fP as a parameter or configuration value do |
| not change their behavior to match that setting. |
| .SS TERMCAP |
| If the \fBncurses\fR library has been configured with \fItermcap\fR |
| support, \fBncurses\fR will check for a terminal's description in |
| termcap form if it is not available in the terminfo database. |
| .PP |
| The \fBTERMCAP\fP environment variable contains |
| either a terminal description (with newlines stripped out), |
| or a file name telling where the information denoted by |
| the \fBTERM\fP environment variable exists. |
| In either case, setting it directs \fBncurses\fR to ignore |
| the usual place for this information, e.g., /etc/termcap. |
| .SS TERMINFO |
| .PP |
| \fBncurses\fP can be configured to read from multiple terminal databases. |
| The \fBTERMINFO\fP variable overrides the location for |
| the default terminal database. |
| Terminal descriptions (in terminal format) are stored in terminal databases: |
| .bP |
| Normally these are stored in a directory tree, |
| using subdirectories named by the first letter of the terminal names therein. |
| .IP |
| This is the scheme used in System V, which legacy Unix systems use, |
| and the \fBTERMINFO\fP variable is used by \fIcurses\fP applications on those |
| systems to override the default location of the terminal database. |
| .bP |
| If \fBncurses\fP is built to use hashed databases, |
| then each entry in this list may be the path of a hashed database file, e.g., |
| .NS |
| /usr/share/terminfo.db |
| .NE |
| .IP |
| rather than |
| .NS |
| /usr/share/terminfo/ |
| .NE |
| .IP |
| The hashed database uses less disk-space and is a little faster than the |
| directory tree. |
| However, |
| some applications assume the existence of the directory tree, |
| reading it directly |
| rather than using the terminfo library calls. |
| .bP |
| If \fBncurses\fP is built with a support for reading termcap files |
| directly, then an entry in this list may be the path of a termcap file. |
| .bP |
| If the \fBTERMINFO\fP variable begins with |
| \*(``hex:\*('' or \*(``b64:\*('', |
| \fBncurses\fP uses the remainder of that variable as a compiled terminal |
| description. |
| You might produce the base64 format using \fBinfocmp\fP(1M): |
| .NS |
| TERMINFO="$(infocmp -0 -Q2 -q)" |
| export TERMINFO |
| .NE |
| .IP |
| The compiled description is used if it corresponds to the terminal identified |
| by the \fBTERM\fP variable. |
| .PP |
| Setting \fBTERMINFO\fP is the simplest, |
| but not the only way to set location of the default terminal database. |
| The complete list of database locations in order follows: |
| .RS 3 |
| .bP |
| the last terminal database to which \fBncurses\fR wrote, |
| if any, is searched first |
| .bP |
| the location specified by the TERMINFO environment variable |
| .bP |
| $HOME/.terminfo |
| .bP |
| locations listed in the TERMINFO_DIRS environment variable |
| .bP |
| one or more locations whose names are configured and compiled into the |
| ncurses library, i.e., |
| .RS 3 |
| .bP |
| @TERMINFO_DIRS@ (corresponding to the TERMINFO_DIRS variable) |
| .bP |
| @TERMINFO@ (corresponding to the TERMINFO variable) |
| .RE |
| .RE |
| .PP |
| .SS TERMINFO_DIRS |
| .PP |
| Specifies a list of locations to search for terminal descriptions. |
| Each location in the list is a terminal database as described in |
| the section on the \fBTERMINFO\fP variable. |
| The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX. |
| .PP |
| There is no corresponding feature in System V terminfo; |
| it is an extension developed for \fBncurses\fP. |
| .SS TERMPATH |
| .PP |
| If \fBTERMCAP\fP does not hold a file name then \fBncurses\fR checks |
| the \fBTERMPATH\fP environment variable. |
| This is a list of filenames separated by spaces or colons (i.e., ":") on Unix, |
| semicolons on OS/2 EMX. |
| .PP |
| If the \fBTERMPATH\fP environment variable is not set, |
| \fBncurses\fR looks in the files |
| .NS |
| /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, |
| .NE |
| .PP |
| in that order. |
| .PP |
| The library may be configured to disregard the following variables when the |
| current user is the superuser (root), or if the application uses setuid or |
| setgid permissions: |
| .NS |
| $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. |
| .NE |
| .SH ALTERNATE CONFIGURATIONS |
| .PP |
| Several different configurations are possible, |
| depending on the configure script options used when building \fBncurses\fP. |
| There are a few main options whose effects are visible to the applications |
| developer using \fBncurses\fP: |
| .TP 5 |
| \-\-disable\-overwrite |
| The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP: |
| .NS |
| \fB#include <curses.h>\fR |
| .NE |
| .IP |
| This option is used to avoid filename conflicts when \fBncurses\fP |
| is not the main implementation of curses of the computer. |
| If \fBncurses\fP is installed disabling overwrite, it puts its headers in |
| a subdirectory, e.g., |
| .NS |
| \fB#include <ncurses/curses.h>\fR |
| .NE |
| .IP |
| It also omits a symbolic link which would allow you to use \fB\-lcurses\fP |
| to build executables. |
| .TP 5 |
| \-\-enable\-widec |
| The configure script renames the library and |
| (if the \fB\-\-disable\-overwrite\fP option is used) |
| puts the header files in a different subdirectory. |
| All of the library names have a \*(``w\*('' appended to them, |
| i.e., instead of |
| .NS |
| \fB\-lncurses\fR |
| .NE |
| .IP |
| you link with |
| .NS |
| \fB\-lncursesw\fR |
| .NE |
| .IP |
| You must also enable the wide-character features in the header file |
| when compiling for the wide-character library |
| to use the extended (wide-character) functions. |
| The symbol which enables these features has changed since XSI Curses, Issue 4: |
| .RS |
| .bP |
| Originally, the wide-character feature required the symbol |
| \fB_XOPEN_SOURCE_EXTENDED\fP |
| but that was only valid for XPG4 (1996). |
| .bP |
| Later, that was deemed conflicting with \fB_XOPEN_SOURCE\fP defined to 500. |
| .bP |
| As of mid-2018, |
| none of the features in this implementation require a \fB_XOPEN_SOURCE\fP |
| feature greater than 600. |
| However, X/Open Curses, Issue 7 (2009) recommends defining it to 700. |
| .bP |
| Alternatively, you can enable the feature by defining \fBNCURSES_WIDECHAR\fP |
| with the caveat that some other header file than \fBcurses.h\fP |
| may require a specific value for \fB_XOPEN_SOURCE\fP |
| (or a system-specific symbol). |
| .RE |
| .IP |
| The \fBcurses.h\fP file which is installed for the wide-character |
| library is designed to be compatible with the normal library's header. |
| Only the size of the \fBWINDOW\fP structure differs, and very few |
| applications require more than a pointer to \fBWINDOW\fPs. |
| .IP |
| If the headers are installed allowing overwrite, |
| the wide-character library's headers should be installed last, |
| to allow applications to be built using either library |
| from the same set of headers. |
| .TP 5 |
| \-\-with\-pthread |
| The configure script renames the library. |
| All of the library names have a \*(``t\*('' appended to them |
| (before any \*(``w\*('' added by \fB\-\-enable\-widec\fP). |
| .IP |
| The global variables such as \fBLINES\fP are replaced by macros to |
| allow read-only access. |
| At the same time, setter-functions are provided to set these values. |
| Some applications (very few) may require changes to work with this convention. |
| .TP 5 |
| \-\-with\-shared |
| .TP |
| \-\-with\-normal |
| .TP |
| \-\-with\-debug |
| .TP |
| \-\-with\-profile |
| The shared and normal (static) library names differ by their suffixes, |
| e.g., \fBlibncurses.so\fP and \fBlibncurses.a\fP. |
| The debug and profiling libraries add a \*(``_g\*('' |
| and a \*(``_p\*('' to the root names respectively, |
| e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP. |
| .TP 5 |
| \-\-with\-termlib |
| Low-level functions which do not depend upon whether the library |
| supports wide-characters, are provided in the tinfo library. |
| .IP |
| By doing this, it is possible to share the tinfo library between |
| wide/normal configurations as well as reduce the size of the library |
| when only low-level functions are needed. |
| .IP |
| Those functions are described in these pages: |
| .RS |
| .bP |
| \fBcurs_extend\fP(3X) \- miscellaneous curses extensions |
| .bP |
| \fBcurs_inopts\fR(3X) \- \fBcurses\fR input options |
| .bP |
| \fBcurs_kernel\fR(3X) \- low-level \fBcurses\fR routines |
| .bP |
| \fBcurs_termattrs\fR(3X) \- \fBcurses\fR environment query routines |
| .bP |
| \fBcurs_termcap\fR(3X) \- \fBcurses\fR emulation of termcap |
| .bP |
| \fBcurs_terminfo\fR(3X) \- \fBcurses\fR interfaces to terminfo database |
| .bP |
| \fBcurs_util\fR(3X) \- miscellaneous \fBcurses\fR utility routines |
| .RE |
| .TP 5 |
| \-\-with\-trace |
| The \fBtrace\fP function normally resides in the debug library, |
| but it is sometimes useful to configure this in the shared library. |
| Configure scripts should check for the function's existence rather |
| than assuming it is always in the debug library. |
| .SH FILES |
| .TP 5 |
| @DATADIR@/tabset |
| directory containing initialization files for the terminal capability database |
| @TERMINFO@ |
| terminal capability database |
| .SH SEE ALSO |
| \fBterminfo\fR(\*n) and related pages whose names begin |
| \*(``curs_\*('' for detailed routine descriptions. |
| .br |
| \fBcurs_variables\fR(3X) |
| .br |
| \fBuser_caps\fP(5) for user-defined capabilities |
| .SH EXTENSIONS |
| The \fBncurses\fR library can be compiled with an option (\fB\-DUSE_GETCAP\fR) |
| that falls back to the old-style /etc/termcap file if the terminal setup code |
| cannot find a terminfo entry corresponding to \fBTERM\fR. |
| Use of this feature |
| is not recommended, as it essentially includes an entire termcap compiler in |
| the \fBncurses\fR startup code, at significant cost in core and startup cycles. |
| .PP |
| The \fBncurses\fR library includes facilities for capturing mouse events on |
| certain terminals (including xterm). |
| See the \fBcurs_mouse\fR(3X) |
| manual page for details. |
| .PP |
| The \fBncurses\fR library includes facilities for responding to window |
| resizing events, e.g., when running in an xterm. |
| See the \fBresizeterm\fR(3X) |
| and \fBwresize\fR(3X) manual pages for details. |
| In addition, the library may be configured with a \fBSIGWINCH\fP handler. |
| .PP |
| The \fBncurses\fR library extends the fixed set of function key capabilities |
| of terminals by allowing the application designer to define additional |
| key sequences at runtime. |
| See the \fBdefine_key\fR(3X) |
| \fBkey_defined\fR(3X), |
| and \fBkeyok\fR(3X) manual pages for details. |
| .PP |
| The \fBncurses\fR library can exploit the capabilities of terminals which |
| implement the ISO\-6429 SGR 39 and SGR 49 controls, which allow an application |
| to reset the terminal to its original foreground and background colors. |
| From the users' perspective, the application is able to draw colored |
| text on a background whose color is set independently, providing better |
| control over color contrasts. |
| See the \fBdefault_colors\fR(3X) manual page for details. |
| .PP |
| The \fBncurses\fR library includes a function for directing application output |
| to a printer attached to the terminal device. |
| See the \fBcurs_print\fR(3X) manual page for details. |
| .SH PORTABILITY |
| The \fBncurses\fR library is intended to be BASE-level conformant with XSI |
| Curses. |
| The EXTENDED XSI Curses functionality |
| (including color support) is supported. |
| .PP |
| A small number of local differences (that is, individual differences between |
| the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR |
| sections of the library man pages. |
| .SS Error checking |
| .PP |
| In many cases, X/Open Curses is vague about error conditions, |
| omitting some of the SVr4 documentation. |
| .PP |
| Unlike other implementations, this one checks parameters such as pointers |
| to WINDOW structures to ensure they are not null. |
| The main reason for providing this behavior is to guard against programmer |
| error. |
| The standard interface does not provide a way for the library |
| to tell an application which of several possible errors were detected. |
| Relying on this (or some other) extension will adversely affect the |
| portability of curses applications. |
| .SS Extensions versus portability |
| .PP |
| Most of the extensions provided by ncurses have not been standardized. |
| Some have been incorporated into other implementations, such as |
| PDCurses or NetBSD curses. |
| Here are a few to consider: |
| .bP |
| The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4. |
| See the \fBcurs_getch\fR(3X) manual page for details. |
| .bP |
| The routine \fBslk_attr\fR is not part of XPG4, nor is it present in SVr4. |
| See the \fBcurs_slk\fR(3X) manual page for details. |
| .bP |
| The routines \fBgetmouse\fR, \fBmousemask\fR, \fBungetmouse\fR, |
| \fBmouseinterval\fR, and \fBwenclose\fR relating to mouse interfacing are not |
| part of XPG4, nor are they present in SVr4. |
| See the \fBcurs_mouse\fR(3X) manual page for details. |
| .bP |
| The routine \fBmcprint\fR was not present in any previous curses implementation. |
| See the \fBcurs_print\fR(3X) manual page for details. |
| .bP |
| The routine \fBwresize\fR is not part of XPG4, nor is it present in SVr4. |
| See the \fBwresize\fR(3X) manual page for details. |
| .bP |
| The WINDOW structure's internal details can be hidden from application |
| programs. |
| See \fBcurs_opaque\fR(3X) for the discussion of \fBis_scrollok\fR, etc. |
| .bP |
| This implementation can be configured to provide rudimentary support |
| for multi-threaded applications. |
| See \fBcurs_threads\fR(3X) for details. |
| .bP |
| This implementation can also be configured to provide a set of functions which |
| improve the ability to manage multiple screens. |
| See \fBcurs_sp_funcs\fR(3X) for details. |
| .SS Padding differences |
| .PP |
| In historic curses versions, delays embedded in the capabilities \fBcr\fR, |
| \fBind\fR, \fBcub1\fR, \fBff\fR and \fBtab\fR activated corresponding delay |
| bits in the UNIX tty driver. |
| In this implementation, all padding is done by sending NUL bytes. |
| This method is slightly more expensive, but narrows the interface |
| to the UNIX kernel significantly and increases the package's portability |
| correspondingly. |
| .SS Header files |
| The header file \fB<curses.h>\fR automatically includes the header files |
| \fB<stdio.h>\fR and \fB<unctrl.h>\fR. |
| .PP |
| X/Open Curses has more to say, |
| but does not finish the story: |
| .RS 4 |
| .PP |
| The inclusion of <curses.h> may make visible all symbols |
| from the headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>. |
| .RE |
| .PP |
| Here is a more complete story: |
| .bP |
| Starting with BSD curses, all implementations have included <stdio.h>. |
| .IP |
| BSD curses included <curses.h> and <unctrl.h> from an internal header |
| "curses.ext" ("ext" was a short name for \fIexterns\fP). |
| .IP |
| BSD curses used <stdio.h> internally (for \fBprintw\fP and \fBscanw\fP), |
| but nothing in <curses.h> itself relied upon <stdio.h>. |
| .bP |
| SVr2 curses added \fBnewterm\fP(3X), which relies upon <stdio.h>. |
| That is, the function prototype uses \fBFILE\fP. |
| .IP |
| SVr4 curses added \fBputwin\fP and \fBgetwin\fP, which also use <stdio.h>. |
| .IP |
| X/Open Curses documents all three of these functions. |
| .IP |
| SVr4 curses and X/Open Curses do not require the developer to |
| include <stdio.h> before including <curses.h>. |
| Both document curses showing <curses.h> as the only required header. |
| .IP |
| As a result, standard <curses.h> will always include <stdio.h>. |
| .bP |
| X/Open Curses is inconsistent with respect to SVr4 regarding <unctrl.h>. |
| .IP |
| As noted in \fBcurs_util\fP(3X), ncurses includes <unctrl.h> from |
| <curses.h> (like SVr4). |
| .bP |
| X/Open's comments about <term.h> and <termios.h> may refer to HP-UX and AIX: |
| .IP |
| HP-UX curses includes <term.h> from <curses.h> |
| to declare \fBsetupterm\fP in curses.h, |
| but ncurses (and Solaris curses) do not. |
| .IP |
| AIX curses includes <term.h> and <termios.h>. |
| Again, ncurses (and Solaris curses) do not. |
| .bP |
| X/Open says that <curses.h> \fImay\fP include <term.h>, |
| but there is no requirement that it do that. |
| .IP |
| Some programs use functions declared in both <curses.h> and <term.h>, |
| and must include both headers in the same module. |
| Very old versions of AIX curses required including <curses.h> |
| before including <term.h>. |
| .IP |
| Because ncurses header files include the headers needed to |
| define datatypes used in the headers, |
| ncurses header files can be included in any order. |
| But for portability, you should include <curses.h> before <term.h>. |
| .bP |
| X/Open Curses says \fI"may make visible"\fP |
| because including a header file does not necessarily make all symbols |
| in it visible (there are ifdef's to consider). |
| .IP |
| For instance, in ncurses <wchar.h> \fImay\fP be included if |
| the proper symbol is defined, and if ncurses is configured for |
| wide-character support. |
| If the header is included, its symbols may be made visible. |
| That depends on the value used for \fB_XOPEN_SOURCE\fP |
| feature test macro. |
| .bP |
| X/Open Curses documents one required header, |
| in a special case: <stdarg.h> before <curses.h> to prototype |
| the \fBvw_printw\fP and \fBvw_scanw\fP functions |
| (as well as the obsolete |
| the \fBvwprintw\fP and \fBvwscanw\fP functions). |
| Each of those uses a \fBva_list\fP parameter. |
| .IP |
| The two obsolete functions were introduced in SVr3. |
| The other functions were introduced in X/Open Curses. |
| In between, SVr4 curses provided for the possibility that |
| an application might include either <varargs.h> or <stdarg.h>. |
| Initially, that was done by using \fBvoid*\fP for the \fBva_list\fP |
| parameter. |
| Later, a special type (defined in <stdio.h>) was introduced, |
| to allow for compiler type-checking. |
| That special type is always available, |
| because <stdio.h> is always included by <curses.h>. |
| .IP |
| None of the X/Open Curses implementations require an application |
| to include <stdarg.h> before <curses.h> because they either |
| have allowed for a special type, or (like ncurses) include <stdarg.h> |
| directly to provide a portable interface. |
| .SH NOTES |
| .PP |
| If standard output from a \fBncurses\fR program is re-directed to something |
| which is not a tty, screen updates will be directed to standard error. |
| This was an undocumented feature of AT&T System V Release 3 curses. |
| .SH AUTHORS |
| Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. |
| Based on pcurses by Pavel Curtis. |