diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/opensuse-leap-15-6/man3/ncurses.3ncurses | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/opensuse-leap-15-6/man3/ncurses.3ncurses')
-rw-r--r-- | upstream/opensuse-leap-15-6/man3/ncurses.3ncurses | 1388 |
1 files changed, 1388 insertions, 0 deletions
diff --git a/upstream/opensuse-leap-15-6/man3/ncurses.3ncurses b/upstream/opensuse-leap-15-6/man3/ncurses.3ncurses new file mode 100644 index 00000000..4e8a30df --- /dev/null +++ b/upstream/opensuse-leap-15-6/man3/ncurses.3ncurses @@ -0,0 +1,1388 @@ +'\" t +.\"*************************************************************************** +.\" Copyright (c) 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.136 2017/11/18 23:48:44 tom Exp $ +.hy 0 +.TH ncurses 3NCURSES "" +.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 +.in -4 +.. +.ds n 5 +.ds d /usr/share/terminfo +.SH NAME +\fBncurses\fR \- CRT screen handling and optimization package +.SH SYNOPSIS +\fB#include <ncursesw/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 6.1 (patch 20180317). +.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 +\fBnonl();\fR +\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 \fBtput init\fR command +after the shell environment variable \fBTERM\fR has been exported. +\fBtset(1)\fR is usually responsible for doing this. +[See \fBterminfo\fR(\*n) for further details.] +.SS Datatypes +.PP +Beware: the terminal your program is running may or may not have +the features you expect. Ncurses makes no attempt to check available +features in advance. This is upon the programmer. +.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(3CURSES) 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 \fBpad\fR(3NCURSES) 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. +.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 each \fBcurses\fR routine and the name of +the manual page on which it is 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/\fBcolor\fR(3NCURSES) +PAIR_NUMBER/\fBattr\fR(3NCURSES) +_nc_free_and_exit/\fBmemleaks\fR(3NCURSES)* +_nc_freeall/\fBmemleaks\fR(3NCURSES)* +_nc_tracebits/\fBtrace\fR(3NCURSES)* +_traceattr/\fBtrace\fR(3NCURSES)* +_traceattr2/\fBtrace\fR(3NCURSES)* +_tracechar/\fBtrace\fR(3NCURSES)* +_tracechtype/\fBtrace\fR(3NCURSES)* +_tracechtype2/\fBtrace\fR(3NCURSES)* +_tracedump/\fBtrace\fR(3NCURSES)* +_tracef/\fBtrace\fR(3NCURSES)* +_tracemouse/\fBtrace\fR(3NCURSES)* +add_wch/\fBadd_wch\fR(3NCURSES) +add_wchnstr/\fBadd_wchstr\fR(3NCURSES) +add_wchstr/\fBadd_wchstr\fR(3NCURSES) +addch/\fBaddch\fR(3NCURSES) +addchnstr/\fBaddchstr\fR(3NCURSES) +addchstr/\fBaddchstr\fR(3NCURSES) +addnstr/\fBaddstr\fR(3NCURSES) +addnwstr/\fBaddwstr\fR(3NCURSES) +addstr/\fBaddstr\fR(3NCURSES) +addwstr/\fBaddwstr\fR(3NCURSES) +alloc_pair/\fBnew_pair\fR(3NCURSES)* +assume_default_colors/\fBdefault_colors\fR(3NCURSES)* +attr_get/\fBattr\fR(3NCURSES) +attr_off/\fBattr\fR(3NCURSES) +attr_on/\fBattr\fR(3NCURSES) +attr_set/\fBattr\fR(3NCURSES) +attroff/\fBattr\fR(3NCURSES) +attron/\fBattr\fR(3NCURSES) +attrset/\fBattr\fR(3NCURSES) +baudrate/\fBtermattrs\fR(3NCURSES) +beep/\fBbeep\fR(3NCURSES) +bkgd/\fBbkgd\fR(3NCURSES) +bkgdset/\fBbkgd\fR(3NCURSES) +bkgrnd/\fBbkgrnd\fR(3NCURSES) +bkgrndset/\fBbkgrnd\fR(3NCURSES) +border/\fBborder\fR(3NCURSES) +border_set/\fBborder_set\fR(3NCURSES) +box/\fBborder\fR(3NCURSES) +box_set/\fBborder_set\fR(3NCURSES) +can_change_color/\fBcolor\fR(3NCURSES) +cbreak/\fBinopts\fR(3NCURSES) +chgat/\fBattr\fR(3NCURSES) +clear/\fBclear\fR(3NCURSES) +clearok/\fBoutopts\fR(3NCURSES) +clrtobot/\fBclear\fR(3NCURSES) +clrtoeol/\fBclear\fR(3NCURSES) +color_content/\fBcolor\fR(3NCURSES) +color_set/\fBattr\fR(3NCURSES) +copywin/\fBoverlay\fR(3NCURSES) +curs_set/\fBkernel\fR(3NCURSES) +curses_version/\fBextensions\fR(3NCURSES)* +def_prog_mode/\fBkernel\fR(3NCURSES) +def_shell_mode/\fBkernel\fR(3NCURSES) +define_key/\fBdefine_key\fR(3NCURSES)* +del_curterm/\fBterminfo\fR(3NCURSES) +delay_output/\fButil\fR(3NCURSES) +delch/\fBdelch\fR(3NCURSES) +deleteln/\fBdeleteln\fR(3NCURSES) +delscreen/\fBinitscr\fR(3NCURSES) +delwin/\fBwindow\fR(3NCURSES) +derwin/\fBwindow\fR(3NCURSES) +doupdate/\fBrefresh\fR(3NCURSES) +dupwin/\fBwindow\fR(3NCURSES) +echo/\fBinopts\fR(3NCURSES) +echo_wchar/\fBadd_wch\fR(3NCURSES) +echochar/\fBaddch\fR(3NCURSES) +endwin/\fBinitscr\fR(3NCURSES) +erase/\fBclear\fR(3NCURSES) +erasechar/\fBtermattrs\fR(3NCURSES) +erasewchar/\fBtermattrs\fR(3NCURSES) +extended_color_content/\fBcolor\fR(3NCURSES)* +extended_pair_content/\fBcolor\fR(3NCURSES)* +extended_slk_color/\fBslk\fR(3NCURSES)* +filter/\fButil\fR(3NCURSES) +find_pair/\fBnew_pair\fR(3NCURSES)* +flash/\fBbeep\fR(3NCURSES) +flushinp/\fButil\fR(3NCURSES) +free_pair/\fBnew_pair\fR(3NCURSES)* +get_wch/\fBget_wch\fR(3NCURSES) +get_wstr/\fBget_wstr\fR(3NCURSES) +getattrs/\fBattr\fR(3NCURSES) +getbegx/\fBlegacy\fR(3NCURSES)* +getbegy/\fBlegacy\fR(3NCURSES)* +getbegyx/\fBgetyx\fR(3NCURSES) +getbkgd/\fBbkgd\fR(3NCURSES) +getbkgrnd/\fBbkgrnd\fR(3NCURSES) +getcchar/\fBgetcchar\fR(3NCURSES) +getch/\fBgetch\fR(3NCURSES) +getcurx/\fBlegacy\fR(3NCURSES)* +getcury/\fBlegacy\fR(3NCURSES)* +getmaxx/\fBlegacy\fR(3NCURSES)* +getmaxy/\fBlegacy\fR(3NCURSES)* +getmaxyx/\fBgetyx\fR(3NCURSES) +getmouse/\fBmouse\fR(3NCURSES)* +getn_wstr/\fBget_wstr\fR(3NCURSES) +getnstr/\fBgetstr\fR(3NCURSES) +getparx/\fBlegacy\fR(3NCURSES)* +getpary/\fBlegacy\fR(3NCURSES)* +getparyx/\fBgetyx\fR(3NCURSES) +getstr/\fBgetstr\fR(3NCURSES) +getsyx/\fBkernel\fR(3NCURSES) +getwin/\fButil\fR(3NCURSES) +getyx/\fBgetyx\fR(3NCURSES) +halfdelay/\fBinopts\fR(3NCURSES) +has_colors/\fBcolor\fR(3NCURSES) +has_ic/\fBtermattrs\fR(3NCURSES) +has_il/\fBtermattrs\fR(3NCURSES) +has_key/\fBgetch\fR(3NCURSES)* +hline/\fBborder\fR(3NCURSES) +hline_set/\fBborder_set\fR(3NCURSES) +idcok/\fBoutopts\fR(3NCURSES) +idlok/\fBoutopts\fR(3NCURSES) +immedok/\fBoutopts\fR(3NCURSES) +in_wch/\fBin_wch\fR(3NCURSES) +in_wchnstr/\fBin_wchstr\fR(3NCURSES) +in_wchstr/\fBin_wchstr\fR(3NCURSES) +inch/\fBinch\fR(3NCURSES) +inchnstr/\fBinchstr\fR(3NCURSES) +inchstr/\fBinchstr\fR(3NCURSES) +init_color/\fBcolor\fR(3NCURSES) +init_extended_color/\fBcolor\fR(3NCURSES)* +init_extended_pair/\fBcolor\fR(3NCURSES)* +init_pair/\fBcolor\fR(3NCURSES) +initscr/\fBinitscr\fR(3NCURSES) +innstr/\fBinstr\fR(3NCURSES) +innwstr/\fBinwstr\fR(3NCURSES) +ins_nwstr/\fBins_wstr\fR(3NCURSES) +ins_wch/\fBins_wch\fR(3NCURSES) +ins_wstr/\fBins_wstr\fR(3NCURSES) +insch/\fBinsch\fR(3NCURSES) +insdelln/\fBdeleteln\fR(3NCURSES) +insertln/\fBdeleteln\fR(3NCURSES) +insnstr/\fBinsstr\fR(3NCURSES) +insstr/\fBinsstr\fR(3NCURSES) +instr/\fBinstr\fR(3NCURSES) +intrflush/\fBinopts\fR(3NCURSES) +inwstr/\fBinwstr\fR(3NCURSES) +is_cleared/\fBopaque\fR(3NCURSES)* +is_idcok/\fBopaque\fR(3NCURSES)* +is_idlok/\fBopaque\fR(3NCURSES)* +is_immedok/\fBopaque\fR(3NCURSES)* +is_keypad/\fBopaque\fR(3NCURSES)* +is_leaveok/\fBopaque\fR(3NCURSES)* +is_linetouched/\fBtouch\fR(3NCURSES) +is_nodelay/\fBopaque\fR(3NCURSES)* +is_notimeout/\fBopaque\fR(3NCURSES)* +is_pad/\fBopaque\fR(3NCURSES)* +is_scrollok/\fBopaque\fR(3NCURSES)* +is_subwin/\fBopaque\fR(3NCURSES)* +is_syncok/\fBopaque\fR(3NCURSES)* +is_term_resized/\fBresizeterm\fR(3NCURSES)* +is_wintouched/\fBtouch\fR(3NCURSES) +isendwin/\fBinitscr\fR(3NCURSES) +key_defined/\fBkey_defined\fR(3NCURSES)* +key_name/\fButil\fR(3NCURSES) +keybound/\fBkeybound\fR(3NCURSES)* +keyname/\fButil\fR(3NCURSES) +keyok/\fBkeyok\fR(3NCURSES)* +keypad/\fBinopts\fR(3NCURSES) +killchar/\fBtermattrs\fR(3NCURSES) +killwchar/\fBtermattrs\fR(3NCURSES) +leaveok/\fBoutopts\fR(3NCURSES) +longname/\fBtermattrs\fR(3NCURSES) +mcprint/\fBprint\fR(3NCURSES)* +meta/\fBinopts\fR(3NCURSES) +mouse_trafo/\fBmouse\fR(3NCURSES)* +mouseinterval/\fBmouse\fR(3NCURSES)* +mousemask/\fBmouse\fR(3NCURSES)* +move/\fBmove\fR(3NCURSES) +mvadd_wch/\fBadd_wch\fR(3NCURSES) +mvadd_wchnstr/\fBadd_wchstr\fR(3NCURSES) +mvadd_wchstr/\fBadd_wchstr\fR(3NCURSES) +mvaddch/\fBaddch\fR(3NCURSES) +mvaddchnstr/\fBaddchstr\fR(3NCURSES) +mvaddchstr/\fBaddchstr\fR(3NCURSES) +mvaddnstr/\fBaddstr\fR(3NCURSES) +mvaddnwstr/\fBaddwstr\fR(3NCURSES) +mvaddstr/\fBaddstr\fR(3NCURSES) +mvaddwstr/\fBaddwstr\fR(3NCURSES) +mvchgat/\fBattr\fR(3NCURSES) +mvcur/\fBterminfo\fR(3NCURSES) +mvdelch/\fBdelch\fR(3NCURSES) +mvderwin/\fBwindow\fR(3NCURSES) +mvget_wch/\fBget_wch\fR(3NCURSES) +mvget_wstr/\fBget_wstr\fR(3NCURSES) +mvgetch/\fBgetch\fR(3NCURSES) +mvgetn_wstr/\fBget_wstr\fR(3NCURSES) +mvgetnstr/\fBgetstr\fR(3NCURSES) +mvgetstr/\fBgetstr\fR(3NCURSES) +mvhline/\fBborder\fR(3NCURSES) +mvhline_set/\fBborder_set\fR(3NCURSES) +mvin_wch/\fBin_wch\fR(3NCURSES) +mvin_wchnstr/\fBin_wchstr\fR(3NCURSES) +mvin_wchstr/\fBin_wchstr\fR(3NCURSES) +mvinch/\fBinch\fR(3NCURSES) +mvinchnstr/\fBinchstr\fR(3NCURSES) +mvinchstr/\fBinchstr\fR(3NCURSES) +mvinnstr/\fBinstr\fR(3NCURSES) +mvinnwstr/\fBinwstr\fR(3NCURSES) +mvins_nwstr/\fBins_wstr\fR(3NCURSES) +mvins_wch/\fBins_wch\fR(3NCURSES) +mvins_wstr/\fBins_wstr\fR(3NCURSES) +mvinsch/\fBinsch\fR(3NCURSES) +mvinsnstr/\fBinsstr\fR(3NCURSES) +mvinsstr/\fBinsstr\fR(3NCURSES) +mvinstr/\fBinstr\fR(3NCURSES) +mvinwstr/\fBinwstr\fR(3NCURSES) +mvprintw/\fBprintw\fR(3NCURSES) +mvscanw/\fBscanw\fR(3NCURSES) +mvvline/\fBborder\fR(3NCURSES) +mvvline_set/\fBborder_set\fR(3NCURSES) +mvwadd_wch/\fBadd_wch\fR(3NCURSES) +mvwadd_wchnstr/\fBadd_wchstr\fR(3NCURSES) +mvwadd_wchstr/\fBadd_wchstr\fR(3NCURSES) +mvwaddch/\fBaddch\fR(3NCURSES) +mvwaddchnstr/\fBaddchstr\fR(3NCURSES) +mvwaddchstr/\fBaddchstr\fR(3NCURSES) +mvwaddnstr/\fBaddstr\fR(3NCURSES) +mvwaddnwstr/\fBaddwstr\fR(3NCURSES) +mvwaddstr/\fBaddstr\fR(3NCURSES) +mvwaddwstr/\fBaddwstr\fR(3NCURSES) +mvwchgat/\fBattr\fR(3NCURSES) +mvwdelch/\fBdelch\fR(3NCURSES) +mvwget_wch/\fBget_wch\fR(3NCURSES) +mvwget_wstr/\fBget_wstr\fR(3NCURSES) +mvwgetch/\fBgetch\fR(3NCURSES) +mvwgetn_wstr/\fBget_wstr\fR(3NCURSES) +mvwgetnstr/\fBgetstr\fR(3NCURSES) +mvwgetstr/\fBgetstr\fR(3NCURSES) +mvwhline/\fBborder\fR(3NCURSES) +mvwhline_set/\fBborder_set\fR(3NCURSES) +mvwin/\fBwindow\fR(3NCURSES) +mvwin_wch/\fBin_wch\fR(3NCURSES) +mvwin_wchnstr/\fBin_wchstr\fR(3NCURSES) +mvwin_wchstr/\fBin_wchstr\fR(3NCURSES) +mvwinch/\fBinch\fR(3NCURSES) +mvwinchnstr/\fBinchstr\fR(3NCURSES) +mvwinchstr/\fBinchstr\fR(3NCURSES) +mvwinnstr/\fBinstr\fR(3NCURSES) +mvwinnwstr/\fBinwstr\fR(3NCURSES) +mvwins_nwstr/\fBins_wstr\fR(3NCURSES) +mvwins_wch/\fBins_wch\fR(3NCURSES) +mvwins_wstr/\fBins_wstr\fR(3NCURSES) +mvwinsch/\fBinsch\fR(3NCURSES) +mvwinsnstr/\fBinsstr\fR(3NCURSES) +mvwinsstr/\fBinsstr\fR(3NCURSES) +mvwinstr/\fBinstr\fR(3NCURSES) +mvwinwstr/\fBinwstr\fR(3NCURSES) +mvwprintw/\fBprintw\fR(3NCURSES) +mvwscanw/\fBscanw\fR(3NCURSES) +mvwvline/\fBborder\fR(3NCURSES) +mvwvline_set/\fBborder_set\fR(3NCURSES) +napms/\fBkernel\fR(3NCURSES) +newpad/\fBpad\fR(3NCURSES) +newterm/\fBinitscr\fR(3NCURSES) +newwin/\fBwindow\fR(3NCURSES) +nl/\fBoutopts\fR(3NCURSES) +nocbreak/\fBinopts\fR(3NCURSES) +nodelay/\fBinopts\fR(3NCURSES) +noecho/\fBinopts\fR(3NCURSES) +nofilter/\fButil\fR(3NCURSES)* +nonl/\fBoutopts\fR(3NCURSES) +noqiflush/\fBinopts\fR(3NCURSES) +noraw/\fBinopts\fR(3NCURSES) +notimeout/\fBinopts\fR(3NCURSES) +overlay/\fBoverlay\fR(3NCURSES) +overwrite/\fBoverlay\fR(3NCURSES) +pair_content/\fBcolor\fR(3NCURSES) +pechochar/\fBpad\fR(3NCURSES) +pnoutrefresh/\fBpad\fR(3NCURSES) +prefresh/\fBpad\fR(3NCURSES) +printw/\fBprintw\fR(3NCURSES) +putp/\fBterminfo\fR(3NCURSES) +putwin/\fButil\fR(3NCURSES) +qiflush/\fBinopts\fR(3NCURSES) +raw/\fBinopts\fR(3NCURSES) +redrawwin/\fBrefresh\fR(3NCURSES) +refresh/\fBrefresh\fR(3NCURSES) +reset_prog_mode/\fBkernel\fR(3NCURSES) +reset_shell_mode/\fBkernel\fR(3NCURSES) +resetty/\fBkernel\fR(3NCURSES) +resize_term/\fBresizeterm\fR(3NCURSES)* +resizeterm/\fBresizeterm\fR(3NCURSES)* +restartterm/\fBterminfo\fR(3NCURSES) +ripoffline/\fBkernel\fR(3NCURSES) +savetty/\fBkernel\fR(3NCURSES) +scanw/\fBscanw\fR(3NCURSES) +scr_dump/\fBscr_dump\fR(3NCURSES) +scr_init/\fBscr_dump\fR(3NCURSES) +scr_restore/\fBscr_dump\fR(3NCURSES) +scr_set/\fBscr_dump\fR(3NCURSES) +scrl/\fBscroll\fR(3NCURSES) +scroll/\fBscroll\fR(3NCURSES) +scrollok/\fBoutopts\fR(3NCURSES) +set_curterm/\fBterminfo\fR(3NCURSES) +set_term/\fBinitscr\fR(3NCURSES) +setcchar/\fBgetcchar\fR(3NCURSES) +setscrreg/\fBoutopts\fR(3NCURSES) +setsyx/\fBkernel\fR(3NCURSES) +setterm/\fBterminfo\fR(3NCURSES) +setupterm/\fBterminfo\fR(3NCURSES) +slk_attr/\fBslk\fR(3NCURSES)* +slk_attr_off/\fBslk\fR(3NCURSES) +slk_attr_on/\fBslk\fR(3NCURSES) +slk_attr_set/\fBslk\fR(3NCURSES) +slk_attroff/\fBslk\fR(3NCURSES) +slk_attron/\fBslk\fR(3NCURSES) +slk_attrset/\fBslk\fR(3NCURSES) +slk_clear/\fBslk\fR(3NCURSES) +slk_color/\fBslk\fR(3NCURSES) +slk_init/\fBslk\fR(3NCURSES) +slk_label/\fBslk\fR(3NCURSES) +slk_noutrefresh/\fBslk\fR(3NCURSES) +slk_refresh/\fBslk\fR(3NCURSES) +slk_restore/\fBslk\fR(3NCURSES) +slk_set/\fBslk\fR(3NCURSES) +slk_touch/\fBslk\fR(3NCURSES) +standend/\fBattr\fR(3NCURSES) +standout/\fBattr\fR(3NCURSES) +start_color/\fBcolor\fR(3NCURSES) +subpad/\fBpad\fR(3NCURSES) +subwin/\fBwindow\fR(3NCURSES) +syncok/\fBwindow\fR(3NCURSES) +term_attrs/\fBtermattrs\fR(3NCURSES) +termattrs/\fBtermattrs\fR(3NCURSES) +termname/\fBtermattrs\fR(3NCURSES) +tgetent/\fBtermcap\fR(3NCURSES) +tgetflag/\fBtermcap\fR(3NCURSES) +tgetnum/\fBtermcap\fR(3NCURSES) +tgetstr/\fBtermcap\fR(3NCURSES) +tgoto/\fBtermcap\fR(3NCURSES) +tigetflag/\fBterminfo\fR(3NCURSES) +tigetnum/\fBterminfo\fR(3NCURSES) +tigetstr/\fBterminfo\fR(3NCURSES) +timeout/\fBinopts\fR(3NCURSES) +tiparm/\fBterminfo\fR(3NCURSES)* +touchline/\fBtouch\fR(3NCURSES) +touchwin/\fBtouch\fR(3NCURSES) +tparm/\fBterminfo\fR(3NCURSES) +tputs/\fBtermcap\fR(3NCURSES) +tputs/\fBterminfo\fR(3NCURSES) +trace/\fBtrace\fR(3NCURSES)* +typeahead/\fBinopts\fR(3NCURSES) +unctrl/\fButil\fR(3NCURSES) +unget_wch/\fBget_wch\fR(3NCURSES) +ungetch/\fBgetch\fR(3NCURSES) +ungetmouse/\fBmouse\fR(3NCURSES)* +untouchwin/\fBtouch\fR(3NCURSES) +use_default_colors/\fBdefault_colors\fR(3NCURSES)* +use_env/\fButil\fR(3NCURSES) +use_extended_names/\fBextensions\fR(3NCURSES)* +use_legacy_coding/\fBlegacy_coding\fR(3NCURSES)* +use_tioctl/\fButil\fR(3NCURSES) +vid_attr/\fBterminfo\fR(3NCURSES) +vid_puts/\fBterminfo\fR(3NCURSES) +vidattr/\fBterminfo\fR(3NCURSES) +vidputs/\fBterminfo\fR(3NCURSES) +vline/\fBborder\fR(3NCURSES) +vline_set/\fBborder_set\fR(3NCURSES) +vw_printw/\fBprintw\fR(3NCURSES) +vw_scanw/\fBscanw\fR(3NCURSES) +vwprintw/\fBprintw\fR(3NCURSES) +vwscanw/\fBscanw\fR(3NCURSES) +wadd_wch/\fBadd_wch\fR(3NCURSES) +wadd_wchnstr/\fBadd_wchstr\fR(3NCURSES) +wadd_wchstr/\fBadd_wchstr\fR(3NCURSES) +waddch/\fBaddch\fR(3NCURSES) +waddchnstr/\fBaddchstr\fR(3NCURSES) +waddchstr/\fBaddchstr\fR(3NCURSES) +waddnstr/\fBaddstr\fR(3NCURSES) +waddnwstr/\fBaddwstr\fR(3NCURSES) +waddstr/\fBaddstr\fR(3NCURSES) +waddwstr/\fBaddwstr\fR(3NCURSES) +wattr_get/\fBattr\fR(3NCURSES) +wattr_off/\fBattr\fR(3NCURSES) +wattr_on/\fBattr\fR(3NCURSES) +wattr_set/\fBattr\fR(3NCURSES) +wattroff/\fBattr\fR(3NCURSES) +wattron/\fBattr\fR(3NCURSES) +wattrset/\fBattr\fR(3NCURSES) +wbkgd/\fBbkgd\fR(3NCURSES) +wbkgdset/\fBbkgd\fR(3NCURSES) +wbkgrnd/\fBbkgrnd\fR(3NCURSES) +wbkgrndset/\fBbkgrnd\fR(3NCURSES) +wborder/\fBborder\fR(3NCURSES) +wborder_set/\fBborder_set\fR(3NCURSES) +wchgat/\fBattr\fR(3NCURSES) +wclear/\fBclear\fR(3NCURSES) +wclrtobot/\fBclear\fR(3NCURSES) +wclrtoeol/\fBclear\fR(3NCURSES) +wcolor_set/\fBattr\fR(3NCURSES) +wcursyncup/\fBwindow\fR(3NCURSES) +wdelch/\fBdelch\fR(3NCURSES) +wdeleteln/\fBdeleteln\fR(3NCURSES) +wecho_wchar/\fBadd_wch\fR(3NCURSES) +wechochar/\fBaddch\fR(3NCURSES) +wenclose/\fBmouse\fR(3NCURSES)* +werase/\fBclear\fR(3NCURSES) +wget_wch/\fBget_wch\fR(3NCURSES) +wget_wstr/\fBget_wstr\fR(3NCURSES) +wgetbkgrnd/\fBbkgrnd\fR(3NCURSES) +wgetch/\fBgetch\fR(3NCURSES) +wgetdelay/\fBopaque\fR(3NCURSES)* +wgetn_wstr/\fBget_wstr\fR(3NCURSES) +wgetnstr/\fBgetstr\fR(3NCURSES) +wgetparent/\fBopaque\fR(3NCURSES)* +wgetscrreg/\fBopaque\fR(3NCURSES)* +wgetstr/\fBgetstr\fR(3NCURSES) +whline/\fBborder\fR(3NCURSES) +whline_set/\fBborder_set\fR(3NCURSES) +win_wch/\fBin_wch\fR(3NCURSES) +win_wchnstr/\fBin_wchstr\fR(3NCURSES) +win_wchstr/\fBin_wchstr\fR(3NCURSES) +winch/\fBinch\fR(3NCURSES) +winchnstr/\fBinchstr\fR(3NCURSES) +winchstr/\fBinchstr\fR(3NCURSES) +winnstr/\fBinstr\fR(3NCURSES) +winnwstr/\fBinwstr\fR(3NCURSES) +wins_nwstr/\fBins_wstr\fR(3NCURSES) +wins_wch/\fBins_wch\fR(3NCURSES) +wins_wstr/\fBins_wstr\fR(3NCURSES) +winsch/\fBinsch\fR(3NCURSES) +winsdelln/\fBdeleteln\fR(3NCURSES) +winsertln/\fBdeleteln\fR(3NCURSES) +winsnstr/\fBinsstr\fR(3NCURSES) +winsstr/\fBinsstr\fR(3NCURSES) +winstr/\fBinstr\fR(3NCURSES) +winwstr/\fBinwstr\fR(3NCURSES) +wmouse_trafo/\fBmouse\fR(3NCURSES)* +wmove/\fBmove\fR(3NCURSES) +wnoutrefresh/\fBrefresh\fR(3NCURSES) +wprintw/\fBprintw\fR(3NCURSES) +wredrawln/\fBrefresh\fR(3NCURSES) +wrefresh/\fBrefresh\fR(3NCURSES) +wresize/\fBwresize\fR(3NCURSES)* +wscanw/\fBscanw\fR(3NCURSES) +wscrl/\fBscroll\fR(3NCURSES) +wsetscrreg/\fBoutopts\fR(3NCURSES) +wstandend/\fBattr\fR(3NCURSES) +wstandout/\fBattr\fR(3NCURSES) +wsyncdown/\fBwindow\fR(3NCURSES) +wsyncup/\fBwindow\fR(3NCURSES) +wtimeout/\fBinopts\fR(3NCURSES) +wtouchln/\fBtouch\fR(3NCURSES) +wunctrl/\fButil\fR(3NCURSES) +wvline/\fBborder\fR(3NCURSES) +wvline_set/\fBborder_set\fR(3NCURSES) +.TE +.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 +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(3NCURSES)). +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 \fBtic\ \-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 +no default value (corresponding to the TERMINFO_DIRS variable) +.bP +/usr/share/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 <ncursesw/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 define \fB_XOPEN_SOURCE_EXTENDED\fP when compiling for the +wide-character library to use the extended (wide-character) functions. +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. +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\-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 +/usr/share/tabset +directory containing initialization files for the terminal capability database +/usr/share/terminfo +terminal capability database +.SH SEE ALSO +\fBterminfo\fR(\*n) and related pages whose names begin +"curs_" for detailed routine descriptions. +.br +\fBcurses_variables\fR(3NCURSES) +.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 \fBmouse\fR(3NCURSES) +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(3NCURSES) +and \fBwresize\fR(3NCURSES) 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(3NCURSES) +\fBkey_defined\fR(3NCURSES), +and \fBkeyok\fR(3NCURSES) 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(3NCURSES) 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 \fBprint\fR(3NCURSES) 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. +.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. +.PP +This implementation also contains several extensions: +.bP +The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4. +See the \fBgetch\fR(3NCURSES) manual page for details. +.bP +The routine \fBslk_attr\fR is not part of XPG4, nor is it present in SVr4. +See the \fBslk\fR(3NCURSES) 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 \fBmouse\fR(3NCURSES) manual page for details. +.bP +The routine \fBmcprint\fR was not present in any previous curses implementation. +See the \fBprint\fR(3NCURSES) manual page for details. +.bP +The routine \fBwresize\fR is not part of XPG4, nor is it present in SVr4. +See the \fBwresize\fR(3NCURSES) manual page for details. +.bP +The WINDOW structure's internal details can be hidden from application +programs. +See \fBopaque\fR(3NCURSES) for the discussion of \fBis_scrollok\fR, etc. +.bP +This implementation can be configured to provide rudimentary support +for multi-threaded applications. +See \fBthreads\fR(3NCURSES) for details. +.bP +This implementation can also be configured to provide a set of functions which +improve the ability to manage multiple screens. +See \fBsp_funcs\fR(3NCURSES) for details. +.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. +.SH NOTES +The header file \fB<curses.h>\fR automatically includes the header files +\fB<stdio.h>\fR and \fB<unctrl.h>\fR. +.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. |