diff options
Diffstat (limited to 'upstream/opensuse-tumbleweed/man3/ncurses.3ncurses')
-rw-r--r-- | upstream/opensuse-tumbleweed/man3/ncurses.3ncurses | 1805 |
1 files changed, 1805 insertions, 0 deletions
diff --git a/upstream/opensuse-tumbleweed/man3/ncurses.3ncurses b/upstream/opensuse-tumbleweed/man3/ncurses.3ncurses new file mode 100644 index 00000000..36f4f12b --- /dev/null +++ b/upstream/opensuse-tumbleweed/man3/ncurses.3ncurses @@ -0,0 +1,1805 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2023,2024 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.200 2024/02/24 20:03:50 tom Exp $ +.TH ncurses 3NCURSES 2024-02-24 "ncurses 6.4" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +. +.ds d /usr/share/terminfo +.SH NAME +\fB\%ncurses\fP \- +character-cell terminal interface with optimized output +.SH SYNOPSIS +.nf +\fB#include <ncursesw/curses.h> +.fi +.SH DESCRIPTION +The \fI\%ncurses\fP library routines give the user a +terminal-independent method of updating character screens with +reasonable optimization. +This implementation is \*(``new curses\*('' (\fI\%ncurses\fP) and +is the approved replacement for +4.4BSD classic curses, which has been discontinued. +This describes \fI\%ncurses\fP +version 6.4 (patch 20240224). +.PP +The \fI\%ncurses\fP library emulates the curses library of +System V Release 4 Unix (\*(``SVr4\*(''), +and XPG4 (X/Open Portability Guide) curses (also known as XSI curses). +XSI stands for X/Open System Interfaces Extension. +The \fI\%ncurses\fP library is freely redistributable in source form. +.PP +\fI\%ncurses\fP man pages employ several sections to clarify matters of +usage and interoperability with other \fIcurses\fP implementations. +.bP +\*(``NOTES\*('' describes matters and caveats of which any user of the +\fI\%ncurses\fP API should be aware, +such as limitations on the size of an underlying integral type or the +availability of a preprocessor macro exclusive of a function definition +(which prevents its address from being taken). +This section also describes implementation details that will be +significant to the programmer but which are not standardized. +.bP +\*(``EXTENSIONS\*('' presents \fI\%ncurses\fP innovations beyond the +X/Open Curses standard and/or the SVr4 \fIcurses\fP implementation. +They are termed \fIextensions\fP to indicate that they cannot be +implemented solely by using the library API, but require access to the +library's internal state. +.bP +\*(``PORTABILITY\*('' discusses matters +(beyond the exercise of extensions) +that should be considered when writing to a \fIcurses\fP standard, +or to multiple implementations. +.bP +\*(``HISTORY\*('' examines points of detail in \fI\%ncurses\fP and other +\fIcurses\fP implementations over the decades of their development, +particularly where precedent or inertia have frustrated better design +(and, +in a few cases, +where such inertia has been overcome). +.PP +A program using these routines must be linked with the \fB\-lncurses\fP option, +or (if it has been generated) with the debugging library \fB\-lncurses_g\fP. +(Your system integrator may also have installed these libraries under +the names \fB\-lcurses\fP and \fB\-lcurses_g\fP.) +The ncurses_g library generates trace logs +(in a file called \*(``trace\*('' in the current directory) +that describe curses actions. +See section \*(``ALTERNATE CONFIGURATIONS\*('' below. +.PP +The \fI\%ncurses\fP package supports: overall screen, window and pad +manipulation; output to windows and pads; reading terminal input; control over +terminal and \fBcurses\fP 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 +The library uses the locale which the calling program has initialized. +That is normally done with \fBsetlocale\fP(3): +.PP +.RS 4 +.EX +\fBsetlocale(LC_ALL, "");\fP +.EE +.RE +.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 set up. +.PP +The function \fBinitscr\fP or \fBnewterm\fP +must be called to initialize the library +before any of the other routines that deal with windows +and screens are used. +The routine \fB\%endwin\fP(3NCURSES) 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: +.PP +.RS 4 +.EX +\fBinitscr(); cbreak(); noecho();\fP +.EE +.RE +.PP +Most programs would additionally use the sequence: +.PP +.RS 4 +.EX +\fBintrflush(stdscr, FALSE);\fP +\fBkeypad(stdscr, TRUE);\fP +.EE +.RE +.PP +Before a \fBcurses\fP 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\fP command +after the shell environment variable \fITERM\fP has been exported. +(The BSD-style \fB\%tset\fP(1) utility also performs this function.) +See subsection \*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5). +.SS Overview +A +.I curses +library abstracts the terminal screen by representing all or part of it +as a +.I \%WINDOW +data structure. +A +.I window +is a rectangular grid of character cells, +addressed by row and column coordinates +.RI ( y , +.IR x ), +with the upper left corner as (0, 0). +A window called \fB\%stdscr\fP, +the same size as the terminal screen, +is always available. +Create others with \fB\%newwin\fP(3NCURSES). +.PP +A +.I curses +library does not manage overlapping windows. +(See \fB\%panel\fP(3NCURSES) if you desire this.) +You can either use \fB\%stdscr\fP to manage one screen-filling window, +or tile the screen into non-overlapping windows and not use +\fB\%stdscr\fP at all. +Mixing the two approaches will result in unpredictable, +and undesired, +effects. +.PP +Functions permit manipulation of a window and the +.I cursor +identifying the cell within it at which the next output operation will +occur. +Among those, +the most basic are \fB\%move\fP(3NCURSES) and \fB\%addch\fP(3NCURSES): +these place the cursor and write a character to +.BR \%stdscr , +respectively. +As a rule, +window-addressing functions feature names prefixed +(or infixed, +see below) +with \*(``w\*(''; +these allow the user to specify a pointer to a +.I \%WINDOW. +Counterparts not thus prefixed +(or infixed) +affect \fB\%stdscr\fP. +Because moving the cursor prior to another operation is so common, +.I curses +generally also provides functions with a \*(``mv\*('' prefix as a +convenience. +Thus, +the library defines all of +\fB\%addch\fP, +\fB\%waddch\fP, +\fB\%mvaddch\fP, +and +\fB\%mvwaddch\fP. +When both prefixes are present, +the order of arguments is a +.I \%WINDOW +pointer first, +then a +.I y +and +.I x +coordinate pair. +.PP +Updating the terminal screen with every +.I curses +call can cause unpleasant flicker or inefficient use of the +communications channel to the device. +Therefore, +after using +.I curses +functions to accumulate a set of desired updates that make sense to +present together, +call \fB\%refresh\fP(3NCURSES) to tell the library to make the user's screen +look like \fBstdscr\fP. +.I \%ncurses +.\" X/Open Curses Issue 7 assumes some optimization will be done, but +.\" does not mandate it in any way. +.I optimizes +its output by computing a minimal number of operations to mutate the +screen from its state at the previous refresh to the new one. +Effective optimization demands accurate information about the terminal +device: +the management of such information is the province of the +\fB\%terminfo\fP(3NCURSES) API, +a feature of every standard +.I curses +implementation. +.PP +Special windows called \fIpads\fP may also be manipulated. +These are windows that are not constrained to the size of the terminal +screen and whose contents need not be completely displayed. +See \fB\%pad\fP(3NCURSES). +.PP +In addition to drawing characters on the screen, +rendering 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. +See \fB\%attr\fP(3NCURSES). +.PP +.I curses +predefines constants for a small set of line-drawing and other graphics +corresponding to the DEC Alternate Character Set (ACS), +a feature of VT100 and other terminals. +See +\fB\%waddch\fP(3NCURSES) and +\fB\%wadd_wch\fP(3NCURSES). +.PP +.I curses +is implemented using the operating system's terminal driver; +keystroke events are received not as scan codes but as byte sequences. +Graphical keycaps +(alphanumeric and punctuation keys, +and the space) +appear as-is. +Everything else, +including the tab, +enter/return, +keypad, +arrow, +and function keys, +appears as a control character or a multibyte +.I "escape sequence." +.I curses +translates these into unique +.I "key codes." +See \fB\%getch\fP(3NCURSES). +.SS "Effects of GUIs and Environment Variables" +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 user. +.PP +The selection of an appropriate value of +.I TERM +in the process environment is essential to correct +.I curses +and +.I \%term\%info +library operation. +A well-configured system selects a correct +.I TERM +value automatically; +\fB\%tset\fP(1) may assist with troubleshooting exotic situations. +.PP +If the environment variables \fILINES\fP and \fI\%COLUMNS\fP are set, +or if the +.I curses +program is executing in a graphical windowing environment, +the information obtained thence overrides that obtained by +.IR \%term\%info . +An +.I \%ncurses +extension supports resizable terminals; +see \fB\%wresize\fP(3NCURSES). +.PP +If the environment variable \fI\%TERMINFO\fP is defined, +a +.I curses +program checks first for a terminal type description in the location it +identifies. +.I \%TERMINFO +is useful for developing experimental type descriptions or when write +permission to \fI\*d\fP is not available. +.PP +See section \*(``ENVIRONMENT\*('' below. +.SS "Naming Conventions" +Many +.I curses +functions have two or more versions. +Those prefixed with \*(``w\*('' require a window argument. +Four functions prefixed with \*(``p\*('' require a pad argument. +Those without a prefix generally operate on \fB\%stdscr\fP. +.PP +In function synopses, +.I \%ncurses +man pages apply the following names to parameters. +.PP +.TS +center; +Li L. +bf \fIbool\fP (\fBTRUE\fP or \fBFALSE\fP) +win pointer to \fIWINDOW\fP +pad pointer to \fIWINDOW\fP that is a pad +.TE +.SS "Wide and Non-wide Character Configurations" +This manual page describes functions that appear in any configuration +of the library. +There are two common configurations; +see section \*(``ALTERNATE CONFIGURATIONS\*('' below. +.TP 10 \" "ncursesw" + 2n +.I \%ncurses +is the library in its \*(``non-wide\*('' configuration, +handling only eight-bit characters. +It stores a character combined with attributes in a +.I \%chtype +datum, +which is often an alias of +.I int. +.IP +Attributes alone +(with no corresponding character) +can be stored in variables of +.I \%chtype +or +.I \%attr_t +type. +In either case, +they are represented as an integral bit mask. +.IP +Each cell of a +.I \%WINDOW +is stored as a +.I \%chtype. +.TP 10 +.I \%ncursesw +is the library in its \*(``wide\*('' configuration, +which handles character encodings requiring a larger data type than +.I \%char +(a byte-sized type) +can represent. +It adds about one third more calls using additional data types that +can store such +.I multibyte +characters. +.RS 10 \" same as foregoing tag width +.TP 9 \" "cchar_t" + 2n +.I \%cchar_t +corresponds to the non-wide configuration's +.I \%chtype. +It always a structure type, +because it stores more data than fits into an integral type. +A character code may not be representable as a +.I \%char, +and moreover more than one character may occupy a cell +(as with accent marks and other diacritics). +Each character is of type +.I \%wchar_t; +a complex character contains one spacing character and zero or more +non-spacing characters +(see below). +Attributes and color data are stored in separate fields of the +structure, +not combined as in +.I \%chtype. +.PP +Each cell of a +.I \%WINDOW +is stored as a +.I \%cchar_t. +.PP +The \fB\%setcchar\fP(3NCURSES) and \fB\%getcchar\fP(3NCURSES) +functions store and retrieve the data from a +.I \%cchar_t +structure. +The wide library API of +.I \%ncurses +depends on two data types standardized by ISO C95. +.TP 9 +.I \%wchar_t +stores a wide character. +Like +.I \%chtype, +it may be an alias of +.I int. +Depending on the character encoding, +a wide character may be +.I spacing, +meaning that it occupies a character cell by itself and typically +accompanies cursor advancement, +or +.I non-spacing, +meaning that it occupies the same cell as a spacing character, +is often regarded as a \*(``modifier\*('' of the base glyph with which +it combines, +and typically does not advance the cursor. +.TP 9 +.I \%wint_t +can store a +.I \%wchar_t +or the constant +.BR \%WEOF , +analogously to the +.IR int -sized +character manipulation functions of ISO C and its constant +.BR \%EOF . +.RE +.IP +The wide library provides additional functions that complement those in +the non-wide library where the size of the underlying character type is +significant. +A somewhat regular naming convention relates many of the wide variants +to their non-wide counterparts; +where a non-wide function name contains \*(``ch\*('' or \*(``str\*('', +prefix it with \*(``_w\*('' to obtain the wide counterpart. +For example, +\fB\%waddch\fP becomes \fB\%wadd_wch\fP. +.IP +This convention is inapplicable to some non-wide function names, +so other transformations are used for the wide configuration: +in the window background management functions, +\*(``bkgd\*('' becomes \*(``bkgrnd\*(''; +the window border-drawing and -clearing functions are suffixed with +\*(``_set\*(''. +.\" +.SS "Function Name Index" +The following table lists the +.I curses +functions provided in the non-wide and wide APIs and the corresponding +man pages that describe them. +Those flagged with \*(``*\*('' +are +.IR \%ncurses -specific, +neither described by X/Open Curses nor present in SVr4. +.PP +.TS +center tab(/); +l l . +\f(BIcurses\fP Function Name/Man Page +_ +COLOR_PAIR/\fB\%color\fP(3NCURSES) +PAIR_NUMBER/\fB\%color\fP(3NCURSES) +add_wch/\fB\%add_wch\fP(3NCURSES) +add_wchnstr/\fB\%add_wchstr\fP(3NCURSES) +add_wchstr/\fB\%add_wchstr\fP(3NCURSES) +addch/\fB\%addch\fP(3NCURSES) +addchnstr/\fB\%addchstr\fP(3NCURSES) +addchstr/\fB\%addchstr\fP(3NCURSES) +addnstr/\fB\%addstr\fP(3NCURSES) +addnwstr/\fB\%addwstr\fP(3NCURSES) +addstr/\fB\%addstr\fP(3NCURSES) +addwstr/\fB\%addwstr\fP(3NCURSES) +alloc_pair/\fB\%new_pair\fP(3NCURSES)* +assume_default_colors/\fB\%default_colors\fP(3NCURSES)* +attr_get/\fB\%attr\fP(3NCURSES) +attr_off/\fB\%attr\fP(3NCURSES) +attr_on/\fB\%attr\fP(3NCURSES) +attr_set/\fB\%attr\fP(3NCURSES) +attroff/\fB\%attr\fP(3NCURSES) +attron/\fB\%attr\fP(3NCURSES) +attrset/\fB\%attr\fP(3NCURSES) +baudrate/\fB\%termattrs\fP(3NCURSES) +beep/\fB\%beep\fP(3NCURSES) +bkgd/\fB\%bkgd\fP(3NCURSES) +bkgdset/\fB\%bkgd\fP(3NCURSES) +bkgrnd/\fB\%bkgrnd\fP(3NCURSES) +bkgrndset/\fB\%bkgrnd\fP(3NCURSES) +border/\fB\%border\fP(3NCURSES) +border_set/\fB\%border_set\fP(3NCURSES) +box/\fB\%border\fP(3NCURSES) +box_set/\fB\%border_set\fP(3NCURSES) +can_change_color/\fB\%color\fP(3NCURSES) +cbreak/\fB\%inopts\fP(3NCURSES) +chgat/\fB\%attr\fP(3NCURSES) +clear/\fB\%clear\fP(3NCURSES) +clearok/\fB\%outopts\fP(3NCURSES) +clrtobot/\fB\%clear\fP(3NCURSES) +clrtoeol/\fB\%clear\fP(3NCURSES) +color_content/\fB\%color\fP(3NCURSES) +color_set/\fB\%attr\fP(3NCURSES) +copywin/\fB\%overlay\fP(3NCURSES) +curs_set/\fB\%kernel\fP(3NCURSES) +curses_trace/\fB\%trace\fP(3NCURSES)* +curses_version/\fB\%extensions\fP(3NCURSES)* +def_prog_mode/\fB\%kernel\fP(3NCURSES) +def_shell_mode/\fB\%kernel\fP(3NCURSES) +define_key/\fB\%define_key\fP(3NCURSES)* +del_curterm/\fB\%terminfo\fP(3NCURSES) +delay_output/\fB\%util\fP(3NCURSES) +delch/\fB\%delch\fP(3NCURSES) +deleteln/\fB\%deleteln\fP(3NCURSES) +delscreen/\fB\%initscr\fP(3NCURSES) +delwin/\fB\%window\fP(3NCURSES) +derwin/\fB\%window\fP(3NCURSES) +doupdate/\fB\%refresh\fP(3NCURSES) +dupwin/\fB\%window\fP(3NCURSES) +echo/\fB\%inopts\fP(3NCURSES) +echo_wchar/\fB\%add_wch\fP(3NCURSES) +echochar/\fB\%addch\fP(3NCURSES) +endwin/\fB\%initscr\fP(3NCURSES) +erase/\fB\%clear\fP(3NCURSES) +erasechar/\fB\%termattrs\fP(3NCURSES) +erasewchar/\fB\%termattrs\fP(3NCURSES) +exit_curses/\fB\%memleaks\fP(3NCURSES)* +exit_terminfo/\fB\%memleaks\fP(3NCURSES)* +extended_color_content/\fB\%color\fP(3NCURSES)* +extended_pair_content/\fB\%color\fP(3NCURSES)* +extended_slk_color/\fB\%slk\fP(3NCURSES)* +filter/\fB\%util\fP(3NCURSES) +find_pair/\fB\%new_pair\fP(3NCURSES)* +flash/\fB\%beep\fP(3NCURSES) +flushinp/\fB\%util\fP(3NCURSES) +free_pair/\fB\%new_pair\fP(3NCURSES)* +get_wch/\fB\%get_wch\fP(3NCURSES) +get_wstr/\fB\%get_wstr\fP(3NCURSES) +getattrs/\fB\%attr\fP(3NCURSES) +getbegx/\fB\%legacy\fP(3NCURSES)* +getbegy/\fB\%legacy\fP(3NCURSES)* +getbegyx/\fB\%getyx\fP(3NCURSES) +getbkgd/\fB\%bkgd\fP(3NCURSES) +getbkgrnd/\fB\%bkgrnd\fP(3NCURSES) +getcchar/\fB\%getcchar\fP(3NCURSES) +getch/\fB\%getch\fP(3NCURSES) +getcurx/\fB\%legacy\fP(3NCURSES)* +getcury/\fB\%legacy\fP(3NCURSES)* +getmaxx/\fB\%legacy\fP(3NCURSES)* +getmaxy/\fB\%legacy\fP(3NCURSES)* +getmaxyx/\fB\%getyx\fP(3NCURSES) +getmouse/\fB\%mouse\fP(3NCURSES)* +getn_wstr/\fB\%get_wstr\fP(3NCURSES) +getnstr/\fB\%getstr\fP(3NCURSES) +getparx/\fB\%legacy\fP(3NCURSES)* +getpary/\fB\%legacy\fP(3NCURSES)* +getparyx/\fB\%getyx\fP(3NCURSES) +getstr/\fB\%getstr\fP(3NCURSES) +getsyx/\fB\%kernel\fP(3NCURSES) +getwin/\fB\%util\fP(3NCURSES) +getyx/\fB\%getyx\fP(3NCURSES) +halfdelay/\fB\%inopts\fP(3NCURSES) +has_colors/\fB\%color\fP(3NCURSES) +has_ic/\fB\%termattrs\fP(3NCURSES) +has_il/\fB\%termattrs\fP(3NCURSES) +has_key/\fB\%getch\fP(3NCURSES)* +has_mouse/\fB\%mouse\fP(3NCURSES)* +hline/\fB\%border\fP(3NCURSES) +hline_set/\fB\%border_set\fP(3NCURSES) +idcok/\fB\%outopts\fP(3NCURSES) +idlok/\fB\%outopts\fP(3NCURSES) +immedok/\fB\%outopts\fP(3NCURSES) +in_wch/\fB\%in_wch\fP(3NCURSES) +in_wchnstr/\fB\%in_wchstr\fP(3NCURSES) +in_wchstr/\fB\%in_wchstr\fP(3NCURSES) +inch/\fB\%inch\fP(3NCURSES) +inchnstr/\fB\%inchstr\fP(3NCURSES) +inchstr/\fB\%inchstr\fP(3NCURSES) +init_color/\fB\%color\fP(3NCURSES) +init_extended_color/\fB\%color\fP(3NCURSES)* +init_extended_pair/\fB\%color\fP(3NCURSES)* +init_pair/\fB\%color\fP(3NCURSES) +initscr/\fB\%initscr\fP(3NCURSES) +innstr/\fB\%instr\fP(3NCURSES) +innwstr/\fB\%inwstr\fP(3NCURSES) +ins_nwstr/\fB\%ins_wstr\fP(3NCURSES) +ins_wch/\fB\%ins_wch\fP(3NCURSES) +ins_wstr/\fB\%ins_wstr\fP(3NCURSES) +insch/\fB\%insch\fP(3NCURSES) +insdelln/\fB\%deleteln\fP(3NCURSES) +insertln/\fB\%deleteln\fP(3NCURSES) +insnstr/\fB\%insstr\fP(3NCURSES) +insstr/\fB\%insstr\fP(3NCURSES) +instr/\fB\%instr\fP(3NCURSES) +intrflush/\fB\%inopts\fP(3NCURSES) +inwstr/\fB\%inwstr\fP(3NCURSES) +is_cbreak/\fB\%inopts\fP(3NCURSES)* +is_cleared/\fB\%opaque\fP(3NCURSES)* +is_echo/\fB\%inopts\fP(3NCURSES)* +is_idcok/\fB\%opaque\fP(3NCURSES)* +is_idlok/\fB\%opaque\fP(3NCURSES)* +is_immedok/\fB\%opaque\fP(3NCURSES)* +is_keypad/\fB\%opaque\fP(3NCURSES)* +is_leaveok/\fB\%opaque\fP(3NCURSES)* +is_linetouched/\fB\%touch\fP(3NCURSES) +is_nl/\fB\%inopts\fP(3NCURSES)* +is_nodelay/\fB\%opaque\fP(3NCURSES)* +is_notimeout/\fB\%opaque\fP(3NCURSES)* +is_pad/\fB\%opaque\fP(3NCURSES)* +is_raw/\fB\%inopts\fP(3NCURSES)* +is_scrollok/\fB\%opaque\fP(3NCURSES)* +is_subwin/\fB\%opaque\fP(3NCURSES)* +is_syncok/\fB\%opaque\fP(3NCURSES)* +is_term_resized/\fB\%resizeterm\fP(3NCURSES)* +is_wintouched/\fB\%touch\fP(3NCURSES) +isendwin/\fB\%initscr\fP(3NCURSES) +key_defined/\fB\%key_defined\fP(3NCURSES)* +key_name/\fB\%util\fP(3NCURSES) +keybound/\fB\%keybound\fP(3NCURSES)* +keyname/\fB\%util\fP(3NCURSES) +keyok/\fB\%keyok\fP(3NCURSES)* +keypad/\fB\%inopts\fP(3NCURSES) +killchar/\fB\%termattrs\fP(3NCURSES) +killwchar/\fB\%termattrs\fP(3NCURSES) +leaveok/\fB\%outopts\fP(3NCURSES) +longname/\fB\%termattrs\fP(3NCURSES) +mcprint/\fB\%print\fP(3NCURSES)* +meta/\fB\%inopts\fP(3NCURSES) +mouse_trafo/\fB\%mouse\fP(3NCURSES)* +mouseinterval/\fB\%mouse\fP(3NCURSES)* +mousemask/\fB\%mouse\fP(3NCURSES)* +move/\fB\%move\fP(3NCURSES) +mvadd_wch/\fB\%add_wch\fP(3NCURSES) +mvadd_wchnstr/\fB\%add_wchstr\fP(3NCURSES) +mvadd_wchstr/\fB\%add_wchstr\fP(3NCURSES) +mvaddch/\fB\%addch\fP(3NCURSES) +mvaddchnstr/\fB\%addchstr\fP(3NCURSES) +mvaddchstr/\fB\%addchstr\fP(3NCURSES) +mvaddnstr/\fB\%addstr\fP(3NCURSES) +mvaddnwstr/\fB\%addwstr\fP(3NCURSES) +mvaddstr/\fB\%addstr\fP(3NCURSES) +mvaddwstr/\fB\%addwstr\fP(3NCURSES) +mvchgat/\fB\%attr\fP(3NCURSES) +mvcur/\fB\%terminfo\fP(3NCURSES) +mvdelch/\fB\%delch\fP(3NCURSES) +mvderwin/\fB\%window\fP(3NCURSES) +mvget_wch/\fB\%get_wch\fP(3NCURSES) +mvget_wstr/\fB\%get_wstr\fP(3NCURSES) +mvgetch/\fB\%getch\fP(3NCURSES) +mvgetn_wstr/\fB\%get_wstr\fP(3NCURSES) +mvgetnstr/\fB\%getstr\fP(3NCURSES) +mvgetstr/\fB\%getstr\fP(3NCURSES) +mvhline/\fB\%border\fP(3NCURSES) +mvhline_set/\fB\%border_set\fP(3NCURSES) +mvin_wch/\fB\%in_wch\fP(3NCURSES) +mvin_wchnstr/\fB\%in_wchstr\fP(3NCURSES) +mvin_wchstr/\fB\%in_wchstr\fP(3NCURSES) +mvinch/\fB\%inch\fP(3NCURSES) +mvinchnstr/\fB\%inchstr\fP(3NCURSES) +mvinchstr/\fB\%inchstr\fP(3NCURSES) +mvinnstr/\fB\%instr\fP(3NCURSES) +mvinnwstr/\fB\%inwstr\fP(3NCURSES) +mvins_nwstr/\fB\%ins_wstr\fP(3NCURSES) +mvins_wch/\fB\%ins_wch\fP(3NCURSES) +mvins_wstr/\fB\%ins_wstr\fP(3NCURSES) +mvinsch/\fB\%insch\fP(3NCURSES) +mvinsnstr/\fB\%insstr\fP(3NCURSES) +mvinsstr/\fB\%insstr\fP(3NCURSES) +mvinstr/\fB\%instr\fP(3NCURSES) +mvinwstr/\fB\%inwstr\fP(3NCURSES) +mvprintw/\fB\%printw\fP(3NCURSES) +mvscanw/\fB\%scanw\fP(3NCURSES) +mvvline/\fB\%border\fP(3NCURSES) +mvvline_set/\fB\%border_set\fP(3NCURSES) +mvwadd_wch/\fB\%add_wch\fP(3NCURSES) +mvwadd_wchnstr/\fB\%add_wchstr\fP(3NCURSES) +mvwadd_wchstr/\fB\%add_wchstr\fP(3NCURSES) +mvwaddch/\fB\%addch\fP(3NCURSES) +mvwaddchnstr/\fB\%addchstr\fP(3NCURSES) +mvwaddchstr/\fB\%addchstr\fP(3NCURSES) +mvwaddnstr/\fB\%addstr\fP(3NCURSES) +mvwaddnwstr/\fB\%addwstr\fP(3NCURSES) +mvwaddstr/\fB\%addstr\fP(3NCURSES) +mvwaddwstr/\fB\%addwstr\fP(3NCURSES) +mvwchgat/\fB\%attr\fP(3NCURSES) +mvwdelch/\fB\%delch\fP(3NCURSES) +mvwget_wch/\fB\%get_wch\fP(3NCURSES) +mvwget_wstr/\fB\%get_wstr\fP(3NCURSES) +mvwgetch/\fB\%getch\fP(3NCURSES) +mvwgetn_wstr/\fB\%get_wstr\fP(3NCURSES) +mvwgetnstr/\fB\%getstr\fP(3NCURSES) +mvwgetstr/\fB\%getstr\fP(3NCURSES) +mvwhline/\fB\%border\fP(3NCURSES) +mvwhline_set/\fB\%border_set\fP(3NCURSES) +mvwin/\fB\%window\fP(3NCURSES) +mvwin_wch/\fB\%in_wch\fP(3NCURSES) +mvwin_wchnstr/\fB\%in_wchstr\fP(3NCURSES) +mvwin_wchstr/\fB\%in_wchstr\fP(3NCURSES) +mvwinch/\fB\%inch\fP(3NCURSES) +mvwinchnstr/\fB\%inchstr\fP(3NCURSES) +mvwinchstr/\fB\%inchstr\fP(3NCURSES) +mvwinnstr/\fB\%instr\fP(3NCURSES) +mvwinnwstr/\fB\%inwstr\fP(3NCURSES) +mvwins_nwstr/\fB\%ins_wstr\fP(3NCURSES) +mvwins_wch/\fB\%ins_wch\fP(3NCURSES) +mvwins_wstr/\fB\%ins_wstr\fP(3NCURSES) +mvwinsch/\fB\%insch\fP(3NCURSES) +mvwinsnstr/\fB\%insstr\fP(3NCURSES) +mvwinsstr/\fB\%insstr\fP(3NCURSES) +mvwinstr/\fB\%instr\fP(3NCURSES) +mvwinwstr/\fB\%inwstr\fP(3NCURSES) +mvwprintw/\fB\%printw\fP(3NCURSES) +mvwscanw/\fB\%scanw\fP(3NCURSES) +mvwvline/\fB\%border\fP(3NCURSES) +mvwvline_set/\fB\%border_set\fP(3NCURSES) +napms/\fB\%kernel\fP(3NCURSES) +newpad/\fB\%pad\fP(3NCURSES) +newterm/\fB\%initscr\fP(3NCURSES) +newwin/\fB\%window\fP(3NCURSES) +nl/\fB\%inopts\fP(3NCURSES) +nocbreak/\fB\%inopts\fP(3NCURSES) +nodelay/\fB\%inopts\fP(3NCURSES) +noecho/\fB\%inopts\fP(3NCURSES) +nofilter/\fB\%util\fP(3NCURSES)* +nonl/\fB\%inopts\fP(3NCURSES) +noqiflush/\fB\%inopts\fP(3NCURSES) +noraw/\fB\%inopts\fP(3NCURSES) +notimeout/\fB\%inopts\fP(3NCURSES) +overlay/\fB\%overlay\fP(3NCURSES) +overwrite/\fB\%overlay\fP(3NCURSES) +pair_content/\fB\%color\fP(3NCURSES) +pecho_wchar/\fB\%pad\fP(3NCURSES) +pechochar/\fB\%pad\fP(3NCURSES) +pnoutrefresh/\fB\%pad\fP(3NCURSES) +prefresh/\fB\%pad\fP(3NCURSES) +printw/\fB\%printw\fP(3NCURSES) +putp/\fB\%terminfo\fP(3NCURSES) +putwin/\fB\%util\fP(3NCURSES) +qiflush/\fB\%inopts\fP(3NCURSES) +raw/\fB\%inopts\fP(3NCURSES) +redrawwin/\fB\%refresh\fP(3NCURSES) +refresh/\fB\%refresh\fP(3NCURSES) +reset_color_pairs/\fB\%color\fP(3NCURSES)* +reset_prog_mode/\fB\%kernel\fP(3NCURSES) +reset_shell_mode/\fB\%kernel\fP(3NCURSES) +resetty/\fB\%kernel\fP(3NCURSES) +resize_term/\fB\%resizeterm\fP(3NCURSES)* +resizeterm/\fB\%resizeterm\fP(3NCURSES)* +restartterm/\fB\%terminfo\fP(3NCURSES) +ripoffline/\fB\%kernel\fP(3NCURSES) +savetty/\fB\%kernel\fP(3NCURSES) +scanw/\fB\%scanw\fP(3NCURSES) +scr_dump/\fB\%scr_dump\fP(3NCURSES) +scr_init/\fB\%scr_dump\fP(3NCURSES) +scr_restore/\fB\%scr_dump\fP(3NCURSES) +scr_set/\fB\%scr_dump\fP(3NCURSES) +scrl/\fB\%scroll\fP(3NCURSES) +scroll/\fB\%scroll\fP(3NCURSES) +scrollok/\fB\%outopts\fP(3NCURSES) +set_curterm/\fB\%terminfo\fP(3NCURSES) +set_term/\fB\%initscr\fP(3NCURSES) +setcchar/\fB\%getcchar\fP(3NCURSES) +setscrreg/\fB\%outopts\fP(3NCURSES) +setsyx/\fB\%kernel\fP(3NCURSES) +setupterm/\fB\%terminfo\fP(3NCURSES) +slk_attr/\fB\%slk\fP(3NCURSES)* +slk_attr_off/\fB\%slk\fP(3NCURSES) +slk_attr_on/\fB\%slk\fP(3NCURSES) +slk_attr_set/\fB\%slk\fP(3NCURSES) +slk_attroff/\fB\%slk\fP(3NCURSES) +slk_attron/\fB\%slk\fP(3NCURSES) +slk_attrset/\fB\%slk\fP(3NCURSES) +slk_clear/\fB\%slk\fP(3NCURSES) +slk_color/\fB\%slk\fP(3NCURSES) +slk_init/\fB\%slk\fP(3NCURSES) +slk_label/\fB\%slk\fP(3NCURSES) +slk_noutrefresh/\fB\%slk\fP(3NCURSES) +slk_refresh/\fB\%slk\fP(3NCURSES) +slk_restore/\fB\%slk\fP(3NCURSES) +slk_set/\fB\%slk\fP(3NCURSES) +slk_touch/\fB\%slk\fP(3NCURSES) +slk_wset/\fB\%slk\fP(3NCURSES) +standend/\fB\%attr\fP(3NCURSES) +standout/\fB\%attr\fP(3NCURSES) +start_color/\fB\%color\fP(3NCURSES) +subpad/\fB\%pad\fP(3NCURSES) +subwin/\fB\%window\fP(3NCURSES) +syncok/\fB\%window\fP(3NCURSES) +term_attrs/\fB\%termattrs\fP(3NCURSES) +termattrs/\fB\%termattrs\fP(3NCURSES) +termname/\fB\%termattrs\fP(3NCURSES) +tgetent/\fB\%termcap\fP(3NCURSES) +tgetflag/\fB\%termcap\fP(3NCURSES) +tgetnum/\fB\%termcap\fP(3NCURSES) +tgetstr/\fB\%termcap\fP(3NCURSES) +tgoto/\fB\%termcap\fP(3NCURSES) +tigetflag/\fB\%terminfo\fP(3NCURSES) +tigetnum/\fB\%terminfo\fP(3NCURSES) +tigetstr/\fB\%terminfo\fP(3NCURSES) +timeout/\fB\%inopts\fP(3NCURSES) +tiparm/\fB\%terminfo\fP(3NCURSES) +tiparm_s/\fB\%terminfo\fP(3NCURSES)* +tiscan_s/\fB\%terminfo\fP(3NCURSES)* +touchline/\fB\%touch\fP(3NCURSES) +touchwin/\fB\%touch\fP(3NCURSES) +tparm/\fB\%terminfo\fP(3NCURSES) +tputs/\fB\%termcap\fP(3NCURSES) +tputs/\fB\%terminfo\fP(3NCURSES) +trace/\fB\%trace\fP(3NCURSES)* +typeahead/\fB\%inopts\fP(3NCURSES) +unctrl/\fB\%util\fP(3NCURSES) +unget_wch/\fB\%get_wch\fP(3NCURSES) +ungetch/\fB\%getch\fP(3NCURSES) +ungetmouse/\fB\%mouse\fP(3NCURSES)* +untouchwin/\fB\%touch\fP(3NCURSES) +use_default_colors/\fB\%default_colors\fP(3NCURSES)* +use_env/\fB\%util\fP(3NCURSES) +use_extended_names/\fB\%extensions\fP(3NCURSES)* +use_legacy_coding/\fB\%legacy_coding\fP(3NCURSES)* +use_tioctl/\fB\%util\fP(3NCURSES)* +vid_attr/\fB\%terminfo\fP(3NCURSES) +vid_puts/\fB\%terminfo\fP(3NCURSES) +vidattr/\fB\%terminfo\fP(3NCURSES) +vidputs/\fB\%terminfo\fP(3NCURSES) +vline/\fB\%border\fP(3NCURSES) +vline_set/\fB\%border_set\fP(3NCURSES) +vw_printw/\fB\%printw\fP(3NCURSES) +vw_scanw/\fB\%scanw\fP(3NCURSES) +vwprintw/\fB\%printw\fP(3NCURSES) +vwscanw/\fB\%scanw\fP(3NCURSES) +wadd_wch/\fB\%add_wch\fP(3NCURSES) +wadd_wchnstr/\fB\%add_wchstr\fP(3NCURSES) +wadd_wchstr/\fB\%add_wchstr\fP(3NCURSES) +waddch/\fB\%addch\fP(3NCURSES) +waddchnstr/\fB\%addchstr\fP(3NCURSES) +waddchstr/\fB\%addchstr\fP(3NCURSES) +waddnstr/\fB\%addstr\fP(3NCURSES) +waddnwstr/\fB\%addwstr\fP(3NCURSES) +waddstr/\fB\%addstr\fP(3NCURSES) +waddwstr/\fB\%addwstr\fP(3NCURSES) +wattr_get/\fB\%attr\fP(3NCURSES) +wattr_off/\fB\%attr\fP(3NCURSES) +wattr_on/\fB\%attr\fP(3NCURSES) +wattr_set/\fB\%attr\fP(3NCURSES) +wattroff/\fB\%attr\fP(3NCURSES) +wattron/\fB\%attr\fP(3NCURSES) +wattrset/\fB\%attr\fP(3NCURSES) +wbkgd/\fB\%bkgd\fP(3NCURSES) +wbkgdset/\fB\%bkgd\fP(3NCURSES) +wbkgrnd/\fB\%bkgrnd\fP(3NCURSES) +wbkgrndset/\fB\%bkgrnd\fP(3NCURSES) +wborder/\fB\%border\fP(3NCURSES) +wborder_set/\fB\%border_set\fP(3NCURSES) +wchgat/\fB\%attr\fP(3NCURSES) +wclear/\fB\%clear\fP(3NCURSES) +wclrtobot/\fB\%clear\fP(3NCURSES) +wclrtoeol/\fB\%clear\fP(3NCURSES) +wcolor_set/\fB\%attr\fP(3NCURSES) +wcursyncup/\fB\%window\fP(3NCURSES) +wdelch/\fB\%delch\fP(3NCURSES) +wdeleteln/\fB\%deleteln\fP(3NCURSES) +wecho_wchar/\fB\%add_wch\fP(3NCURSES) +wechochar/\fB\%addch\fP(3NCURSES) +wenclose/\fB\%mouse\fP(3NCURSES)* +werase/\fB\%clear\fP(3NCURSES) +wget_wch/\fB\%get_wch\fP(3NCURSES) +wget_wstr/\fB\%get_wstr\fP(3NCURSES) +wgetbkgrnd/\fB\%bkgrnd\fP(3NCURSES) +wgetch/\fB\%getch\fP(3NCURSES) +wgetdelay/\fB\%opaque\fP(3NCURSES)* +wgetn_wstr/\fB\%get_wstr\fP(3NCURSES) +wgetnstr/\fB\%getstr\fP(3NCURSES) +wgetparent/\fB\%opaque\fP(3NCURSES)* +wgetscrreg/\fB\%opaque\fP(3NCURSES)* +wgetstr/\fB\%getstr\fP(3NCURSES) +whline/\fB\%border\fP(3NCURSES) +whline_set/\fB\%border_set\fP(3NCURSES) +win_wch/\fB\%in_wch\fP(3NCURSES) +win_wchnstr/\fB\%in_wchstr\fP(3NCURSES) +win_wchstr/\fB\%in_wchstr\fP(3NCURSES) +winch/\fB\%inch\fP(3NCURSES) +winchnstr/\fB\%inchstr\fP(3NCURSES) +winchstr/\fB\%inchstr\fP(3NCURSES) +winnstr/\fB\%instr\fP(3NCURSES) +winnwstr/\fB\%inwstr\fP(3NCURSES) +wins_nwstr/\fB\%ins_wstr\fP(3NCURSES) +wins_wch/\fB\%ins_wch\fP(3NCURSES) +wins_wstr/\fB\%ins_wstr\fP(3NCURSES) +winsch/\fB\%insch\fP(3NCURSES) +winsdelln/\fB\%deleteln\fP(3NCURSES) +winsertln/\fB\%deleteln\fP(3NCURSES) +winsnstr/\fB\%insstr\fP(3NCURSES) +winsstr/\fB\%insstr\fP(3NCURSES) +winstr/\fB\%instr\fP(3NCURSES) +winwstr/\fB\%inwstr\fP(3NCURSES) +wmouse_trafo/\fB\%mouse\fP(3NCURSES)* +wmove/\fB\%move\fP(3NCURSES) +wnoutrefresh/\fB\%refresh\fP(3NCURSES) +wprintw/\fB\%printw\fP(3NCURSES) +wredrawln/\fB\%refresh\fP(3NCURSES) +wrefresh/\fB\%refresh\fP(3NCURSES) +wresize/\fB\%wresize\fP(3NCURSES)* +wscanw/\fB\%scanw\fP(3NCURSES) +wscrl/\fB\%scroll\fP(3NCURSES) +wsetscrreg/\fB\%outopts\fP(3NCURSES) +wstandend/\fB\%attr\fP(3NCURSES) +wstandout/\fB\%attr\fP(3NCURSES) +wsyncdown/\fB\%window\fP(3NCURSES) +wsyncup/\fB\%window\fP(3NCURSES) +wtimeout/\fB\%inopts\fP(3NCURSES) +wtouchln/\fB\%touch\fP(3NCURSES) +wunctrl/\fB\%util\fP(3NCURSES) +wvline/\fB\%border\fP(3NCURSES) +wvline_set/\fB\%border_set\fP(3NCURSES) +.TE +.PP +Depending on the configuration, +additional sets of functions may be available: +.RS 3 +.TP 5 +\fB\%memleaks\fP(3NCURSES) - curses memory-leak checking +.TP 5 +\fB\%sp_funcs\fP(3NCURSES) - curses screen-pointer extension +.TP 5 +\fB\%threads\fP(3NCURSES) - curses thread support +.TP 5 +\fB\%trace\fP(3NCURSES) - curses debugging routines +.RE +.SH RETURN VALUE +Unless otherwise noted, +functions that return an integer return \fBOK\fP on success and +\fBERR\fP on failure. +Functions that return pointers return \fBNULL\fP on failure. +Typically, +.I \%ncurses +treats a null pointer passed as a function parameter as a failure. +.PP +Functions with a \*(``mv\*('' prefix first perform cursor movement using +\fB\%wmove\fP and fail if the position is outside the window, +or +(for \*(``mvw\*('' functions) +if the +.I \%WINDOW +pointer is null. +.SH ENVIRONMENT +The following environment symbols are useful for customizing the +runtime behavior of the \fI\%ncurses\fP library. +The most important ones have been already discussed in detail. +.SS "\fICC\fP (command character)" +When set, +change the +.B \%command_character +.RB ( \%cmdch ) +capability value of loaded +.I \%term\%info +entries to the value of this variable. +Very few +.I \%term\%info +entries provide this feature. +.PP +Because this name is also used in development environments to represent +the C compiler's name, +\fI\%ncurses\fP ignores it if it does not happen to be a single +character. +.SS "\fIBAUDRATE\fP" +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 baud rate. +If no value is found, \fI\%ncurses\fP uses 9600. +This allows testers to construct repeatable test-cases +that take into account costs that depend on baud rate. +.SS "\fICOLUMNS\fP" +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 \fI\%COLUMNS\fP value +nor the terminal's screen size is available, +\fI\%ncurses\fP uses the size which may be specified in the terminfo +database +(i.e., the \fBcols\fP 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 \fI\%COLUMNS\fP and/or \fILINES\fP overrides the library's use +of the screen size obtained from the operating system. +.PP +Either \fI\%COLUMNS\fP or \fILINES\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\fP and \fBcols\fP should not be specified in +a terminal description for terminals which are run as emulations. +.PP +Use the \fBuse_env\fP function to disable all use of external environment +(but not including system calls) to determine the screen size. +Use the \fBuse_tioctl\fP function to update \fI\%COLUMNS\fP or +\fILINES\fP to match the screen size obtained from system calls or the +terminal database. +.SS "\fIESCDELAY\fP" +Specifies the total time, +in milliseconds, +for which \fI\%ncurses\fP 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 \fB\%ESCDELAY\fP +in either form, +but setting the environment variable rather than the global variable +does not create problems when compiling an application. +.SS "\fIHOME\fP" +Tells \fI\%ncurses\fP where your home directory is. +That is where it may read and write auxiliary terminal descriptions: +.PP +.RS 4 +.EX +$HOME/.termcap +$HOME/.terminfo +.EE +.RE +.SS "\fILINES\fP" +Like \fI\%COLUMNS\fP, specify the height of the screen in characters. +See \fI\%COLUMNS\fP for a detailed description. +.SS "\fIMOUSE_BUTTONS_123\fP" +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: +.PP +.RS 4 +.EX +1 = left +2 = right +3 = middle. +.EE +.RE +.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, \fI\%ncurses\fP uses 132. +.SS "\fINCURSES_ASSUMED_COLORS\fP" +Override the compiled-in assumption that the +terminal's default colors are white-on-black +(see \fB\%default_colors\fP(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 \fI\%ncurses\fP 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\fP value is allowed. +.SS "\fINCURSES_CONSOLE2\fP" +This applies only to the MinGW port of \fI\%ncurses\fP. +.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 "\fINCURSES_GPM_TERMS\fP" +This applies only to \fI\%ncurses\fP configured to use the GPM +interface. +.PP +If present, +the environment variable is a list of one or more terminal names +against which the \fITERM\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, +\fI\%ncurses\fP will attempt to open GPM if \fITERM\fP contains +\*(``linux\*(''. +.SS "\fINCURSES_NO_HARD_TABS\fP" +\fI\%ncurses\fP may use tabs as part of cursor movement optimization. +In some cases, +your terminal driver may not handle these properly. +Set this environment variable to any value to disable the feature. +You can also adjust your \fBstty\fP(1) settings to avoid the problem. +.SS "\fINCURSES_NO_MAGIC_COOKIE\fP" +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 to any value. +.SS "\fINCURSES_NO_PADDING\fP" +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 \fI\%NCURSES_NO_PADDING\fP environment variable +to disable all but mandatory padding. +Mandatory padding is used as a part of special control +sequences such as \fBflash\fP. +.SS "\fINCURSES_NO_SETBUF\fP" +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 +\fI\%ncurses\fP enabled buffered output during terminal initialization. +This was done (as in SVr4 curses) for performance reasons. +For testing purposes, both of \fI\%ncurses\fP and certain applications, +this feature was made optional. +Setting the \fI\%NCURSES_NO_SETBUF\fP variable +disabled output buffering, leaving the output in the original (usually +line buffered) mode. +.PP +In the current implementation, +\fI\%ncurses\fP 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 \fI\%stdio\fP(3) calls with \fI\%ncurses\fP calls and (usually) +work. +This is no longer possible since \fI\%ncurses\fP 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 "\fINCURSES_NO_UTF8_ACS\fP" +During initialization, the \fI\%ncurses\fP 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. +\fI\%ncurses checks the \fITERM\fP environment variable for these. +For other special cases, you should set this environment variable. +Doing this tells \fI\%ncurses\fP 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, +\fI\%ncurses\fP checks for an extended terminfo capability \fBU8\fP. +This is a numeric capability which can be compiled using \fBtic\ \-x\fP. +For example +.PP +.RS 3 +.EX +# 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, + +# uxterm with vt100Graphics resource set to false +xterm\-utf8|xterm relying on UTF\-8 line\-graphics, + U8#1, use=xterm, +.EE +.RE +.PP +The name \*(``U8\*('' is chosen to be two characters, +to permit it to be used by applications that use \fI\%ncurses\fP' +termcap interface. +.SS "\fINCURSES_TRACE\fP" +During initialization, the \fI\%ncurses\fP debugging library +checks the \fI\%NCURSES_TRACE\fP environment variable. +If it is defined, +to a numeric value, +\fI\%ncurses\fP calls the \fBtrace\fP function, +using that value as the argument. +.PP +The argument values, which are defined in \fBcurses.h\fP, provide several +types of information. +When running with traces enabled, your application will write the +file \fBtrace\fP to the current directory. +.PP +See \fB\%trace\fP(3NCURSES) for more information. +.SS "\fITERM\fP" +Denotes your terminal type. +Each terminal type is distinct, though many are similar. +.PP +\fITERM\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 \fITERM\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(1) being a rare exception), +terminal emulators which allow you to +specify \fITERM\fP as a parameter or configuration value do +not change their behavior to match that setting. +.SS "\fITERMCAP\fP" +If the \fI\%ncurses\fP library has been configured with \fItermcap\fP +support, \fI\%ncurses\fP will check for a terminal's description in +termcap form if it is not available in the terminfo database. +.PP +The \fI\%TERMCAP\fP environment variable contains +either a terminal description (with newlines stripped out), +or a file name telling where the information denoted by +the \fITERM\fP environment variable exists. +In either case, setting it directs \fI\%ncurses\fP to ignore +the usual place for this information, e.g., /etc/termcap. +.SS "\fITERMINFO\fP" +\fI\%ncurses\fP can be configured to read from multiple terminal +databases. +The \fI\%TERMINFO\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 \fI\%TERMINFO\fP variable is used by \fIcurses\fP applications +on those +systems to override the default location of the terminal database. +.IP \(bu 4 +If \fI\%ncurses\fP is built to use hashed databases, +then each entry in this list may be the path of a hashed database file, e.g., +.RS 4 +.PP +.RS 4 +.EX +/usr/share/terminfo.db +.EE +.RE +.PP +rather than +.PP +.RS 4 +.EX +/usr/share/terminfo/ +.EE +.RE +.PP +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. +.RE +.bP +If \fI\%ncurses\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. +.IP \(bu 4 +If the \fI\%TERMINFO\fP variable begins with +\*(``hex:\*('' or \*(``b64:\*('', +\fI\%ncurses\fP uses the remainder of that variable as a compiled +terminal description. +You might produce the base64 format using \fB\%infocmp\fP(1): +.RS 4 +.PP +.RS 4 +.EX +TERMINFO="$(infocmp \-0 \-Q2 \-q)" +export TERMINFO +.EE +.RE +.PP +The compiled description is used if it corresponds to the terminal identified +by the \fITERM\fP variable. +.RE +.PP +Setting \fI\%TERMINFO\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 \fI\%ncurses\fP wrote, +if any, is searched first +.bP +the location specified by the \fI\%TERMINFO\fP environment variable +.bP +$HOME/.terminfo +.bP +locations listed in the \fI\%TERMINFO_DIRS\fP environment variable +.bP +one or more locations whose names are configured and compiled into the +\fI\%ncurses\fP library, i.e., +.RS 3 +.bP +/etc/terminfo:/usr/share/terminfo (corresponding to the \fI\%TERMINFO_DIRS\fP variable) +.bP +/usr/share/terminfo (corresponding to the \fITERMINFO\fP variable) +.RE +.RE +.SS "\fITERMINFO_DIRS\fP" +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 \fI\%TERMINFO\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 \fI\%ncurses\fP. +.SS "\fITERMPATH\fP" +If \fI\%TERMCAP\fP does not hold a file name then \fI\%ncurses\fP checks +the \fI\%TERMPATH\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 \fI\%TERMPATH\fP environment variable is not set, +\fI\%ncurses\fP looks in the files +.PP +.RS 4 +.EX +/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, +.EE +.RE +.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: +.PP +.RS 4 +.EX +$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. +.EE +.RE +.SH "ALTERNATE CONFIGURATIONS" +Many different +.I \%ncurses +configurations are possible, +determined by the options given to the +.I \%configure +script when building the library. +Run the script with the +.B \-\-help +option to peruse them all. +A few are of particular significance to the application developer +employing +.I \%ncurses. +.TP 5 +\-\-disable\-overwrite +The standard include for \fI\%ncurses\fP is as noted in \fBSYNOPSIS\fP: +.RS 5 +.PP +.RS 4 +.EX +\fB#include <ncursesw/curses.h>\fP +.EE +.RE +.PP +This option is used to avoid filename conflicts when \fI\%ncurses\fP +is not the main implementation of curses of the computer. +If \fI\%ncurses\fP is installed disabling overwrite, +it puts its headers in a subdirectory, +e.g., +.PP +.RS 4 +.EX +\fB#include <ncurses/curses.h>\fP +.EE +.RE +.PP +It also omits a symbolic link which would allow you to use \fB\-lcurses\fP +to build executables. +.RE +.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 +.RS 5 +.PP +.RS 4 +.EX +\fB\-lncurses\fP +.EE +.RE +.PP +you link with +.PP +.RS 4 +.EX +\fB\-lncursesw\fP +.EE +.RE +.PP +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: +.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). +.PP +The \fI\%curses.h\fP header file installed for the wide-character +library is designed to be compatible with the non-wide library's header. +Only the size of the \fI\%WINDOW\fP structure differs; +few applications require more than pointers to \fI\%WINDOW\fPs. +.PP +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. +.RE +.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 +\fB\%extensions\fP(3NCURSES) \- miscellaneous \fIcurses\fP extensions +.bP +\fB\%inopts\fP(3NCURSES) \- \fIcurses\fP input options +.bP +\fB\%kernel\fP(3NCURSES) \- low-level \fIcurses\fP routines +.bP +\fB\%termattrs\fP(3NCURSES) \- \fIcurses\fP environment query routines +.bP +\fB\%termcap\fP(3NCURSES) \- \fIcurses\fP emulation of \fItermcap\fP +.bP +\fB\%terminfo\fP(3NCURSES) \- \fIcurses\fP interface to \fIterminfo\fP +database +.bP +\fB\%util\fP(3NCURSES) \- miscellaneous \fIcurses\fP 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 +.I /usr/share/tabset +tab stop initialization database +.TP +.I \*d +compiled terminal capability database +.SH NOTES +X/Open Curses permits most functions it specifies to be made available +as macros as well. +.\" See X/Open Curses Issue 4, Version 2, pp. 227-234. +.\" See X/Open Curses Issue 7, pp. 311-318. +\fI\%ncurses\fP does so +.bP +for functions that return values via their parameters, +.bP +to support obsolete features, +.bP +to reuse functions +(for example, +those that move the cursor before another operation), +and +.bP +a few special cases. +.PP +If the standard output file descriptor of an +.I \%ncurses +program is redirected to something that is not a terminal device, +the library writes screen updates to the standard error file descriptor. +This was an undocumented feature of SVr3. +.PP +See subsection \*(``Header files\*('' below regarding symbols exposed by +inclusion of \fI\%curses.h\fP. +.SH EXTENSIONS +.I \%ncurses +enables an application to capture mouse events on certain terminals, +including +.I \%xterm; +see \fB\%mouse\fP(3NCURSES). +.PP +.I \%ncurses +provides a means of responding to window resizing events, +as when running in a GUI terminal emulator application such as +.I \%xterm; +see \fB\%resizeterm\fP(3NCURSES) and \fB\%wresize\fP(3NCURSES). +.PP +.I \%ncurses +allows an application to query the terminal for the presence of a wide +variety of special keys; +see \fB\%has_key\fP(3NCURSES). +.PP +.I \%ncurses +extends the fixed set of function key capabilities specified by X/Open +Curses by allowing the application programmer to define additional key +sequences at runtime; +see +\fB\%define_key\fP(3NCURSES), +\fB\%key_defined\fP(3NCURSES), +and +\fB\%keyok\fP(3NCURSES). +.PP +.I \%ncurses +can exploit the capabilities of terminals implementing ISO\ 6429/ECMA-48 +SGR\ 39 and SGR\ 49 sequences, +which allow an application to reset the terminal to its original +foreground and background colors. +From a user's perspective, +the application is able to draw colored text on a background whose color +is set independently, +providing better control over color contrasts. +See \fB\%default_colors\fP(3NCURSES). +.PP +An +.I \%ncurses +application can choose to hide the internal details of +.I \%WINDOW +structures, +instead using accessor functions such as +\fB\%is_scrollok\fP(3NCURSES). +.PP +.I \%ncurses +enables an application to direct application output to a printer +attached to the terminal device; +see \fB\%print\fP(3NCURSES). +.PP +.I \%ncurses +offers \fB\%slk_attr\fP(3NCURSES) as a counterpart of \fB\%attr_get\fP(3NCURSES) for +soft-label key lines, +and \fB\%extended_slk_color\fP(3NCURSES) as a form of \fB\%slk_color\fP(3NCURSES) +that can gather color information from them when many colors are +supported. +.PP +Some extensions are only available if +.I \%ncurses +is compiled to support them; +see section \*(``ALTERNATE CONFIGURATIONS\*('' above. +.bP +Rudimentary support for multi-threaded applications may be available; +see \fB\%threads\fP(3NCURSES). +.bP +Functions that ease the management of multiple screens can be exposed; +see \fB\%sp_funcs\fP(3NCURSES). +.bP +The compiler option +.B \%\-DUSE_GETCAP +causes the library to fall back to reading +.I \%/etc/termcap +if the terminal setup code cannot find a +.I \%term\%info +entry corresponding to +.I TERM. +Use of this feature is not recommended, +as it essentially includes an entire +.I termcap +compiler in the +.I \%ncurses +startup code, +at a cost in memory usage and application launch latency. +.PP +.I \%PDCurses +and NetBSD +.I curses +incorporate some +.I \%ncurses +extensions. +Individual man pages indicate where this is the case. +.SH PORTABILITY +X/Open Curses defines two levels of conformance, +\*(``base\*('' and \*(``enhanced\*(''. +The latter includes several additional features, +such as wide-character and color support. +.I \%ncurses +intends base-level conformance with X/Open Curses, +and supports nearly all its enhanced features. +.\" XXX: What's missing? GBR counts untic(1), and that's all. +.PP +Differences between X/Open Curses and +.I \%ncurses +are documented in the \*(``PORTABILITY\*('' sections of applicable man +pages. +.SS "Error Checking" +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 \fI\%WINDOW\fP 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 "Padding Differences" +In historic curses versions, delays embedded in the capabilities \fBcr\fP, +\fBind\fP, \fBcub1\fP, \fBff\fP and \fBtab\fP 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 \fI\%curses.h\fP itself includes the header files +\fI\%stdio.h\fP and \fI\%unctrl.h\fP. +.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 +file +.I \%curses.ext +(\*(``ext\*('' abbreviated \*(``externs\*(''). +.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 \fB\%newterm\fP(3NCURSES), 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 \fB\%util\fP(3NCURSES), +\fI\%ncurses\fP 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 \fI\%ncurses\fP (and Solaris curses) do not. +.IP +AIX curses includes <term.h> and <termios.h>. +Again, \fI\%ncurses\fP (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 \fI\%ncurses\fP header files include the headers needed to +define datatypes used in the headers, +\fI\%ncurses\fP 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 \fI\%ncurses\fP <wchar.h> \fImay\fP be included if +the proper symbol is defined, and if \fI\%ncurses\fP 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 \fI\%ncurses\fP) +include <stdarg.h> directly to provide a portable interface. +.SH AUTHORS +Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. +Based on \fIpcurses\fP by Pavel Curtis. +.SH SEE ALSO +\fB\%curses_variables\fP(3NCURSES), +\fB\%terminfo\fP(5), +\fB\%user_caps\fP(5) |