X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fncurses.3x.html;h=504ac48a0ade730a1258eedca75405e013f77ca0;hp=83995f9e1407afe0068f2bec6000c2e003870510;hb=ce4803687b821efbc5fb2c5a5f06d69cd4dc2656;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index 83995f9e..504ac48a 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -1,8 +1,7 @@ - +
+ +- +ncurses(3x) ncurses(3x) --
+ + + +
ncurses - CRT screen handling and optimization package --
+
#include <curses.h> --
+
The ncurses 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. - - The ncurses routines emulate the curses(3x) library of - System V Release 4 UNIX, and the XPG4 curses standard (XSI - curses) but the ncurses library is freely redistributable - in source form. Differences from the SVr4 curses are - summarized under the EXTENSIONS and BUGS sections below - and described in detail in the EXTENSIONS and BUGS - sections of individual man pages. + independent method of updating character screens with rea- + sonable optimization. This implementation is "new curses" + (ncurses) and is the approved replacement for 4.4BSD clas- + sic curses, which has been discontinued. This describes + ncurses version 6.0 (patch 20170218). + + The ncurses 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 ncurses library is + freely redistributable in source form. Differences from + the SVr4 curses are summarized under the EXTENSIONS and + PORTABILITY sections below and described in detail in the + respective EXTENSIONS, PORTABILITY and BUGS sections of + individual man pages. + + The ncurses 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. A program using these routines must be linked with the -lncurses option, or (if it has been generated) with the debugging library -lncurses_g. (Your system integrator may also have installed these libraries under the names -lcurses and -lcurses_g.) The ncurses_g library generates - trace logs (in a file called 'trace' in the current - directory) that describe curses actions. + trace logs (in a file called 'trace' in the current direc- + tory) that describe curses actions. See also the section + on ALTERNATE CONFIGURATIONS. + + The ncurses package supports: overall screen, window and + pad manipulation; output to windows and pads; reading ter- + minal input; control over terminal and curses input and + output options; environment query routines; color manipu- + lation; use of soft label keys; terminfo capabilities; and + access to low-level terminal-manipulation routines. + + +
+ The library uses the locale which the calling program has + initialized. That is normally done with setlocale: - The ncurses package supports: overall screen, window and - pad manipulation; output to windows and pads; reading - terminal input; control over terminal and curses input and - output options; environment query routines; color - manipulation; use of soft label keys; terminfo - capabilities; and access to low-level terminal- - manipulation routines. + setlocale(LC_ALL, ""); + If the locale is not initialized, the library assumes that + characters are printable as in ISO-8859-1, to work with cer- + tain legacy programs. You should initialize the locale and + not rely on specific details of the library when the locale + has not been setup. - To initialize the routines, the routine initscr or newterm - must be called before any of the other routines that deal - with windows and screens are used. The routine endwin - must be called before exiting. To get character-at-a-time - input without echoing (most interactive, screen oriented - programs want this), the following sequence should be - used: + The function initscr or newterm must be called to initial- + ize the library before any of the other routines that deal + with windows and screens are used. The routine endwin(3x) + must be called before exiting. - initscr(); cbreak(); noecho(); + To get character-at-a-time input without echoing (most + interactive, screen oriented programs want this), the fol- + lowing sequence should be used: - Most programs would additionally use the sequence: + initscr(); cbreak(); noecho(); + Most programs would additionally use the sequence: nonl(); intrflush(stdscr, FALSE); keypad(stdscr, TRUE); - - Before a curses 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 tput init command after the shell environment variable - TERM has been exported. tset(1) is usually responsible - for doing this. [See terminfo(5) for further details.] - - The ncurses library permits manipulation of data - structures, called windows, which can be thought of as - two-dimensional arrays of characters representing all or - part of a CRT screen. A default window called stdscr, - which is the size of the terminal screen, is supplied. - Others may be created with newwin. + Before a curses 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 tput init com- + mand after the shell environment variable TERM has been + exported. tset(1) is usually responsible for doing this. + [See terminfo(5) for further details.] + + +
+ The ncurses library permits manipulation of data struc- + tures, called windows, which can be thought of as two- + dimensional arrays of characters representing all or part + of a CRT screen. A default window called stdscr, which is + the size of the terminal screen, is supplied. Others may + be created with newwin. Note that curses does not handle overlapping windows, - that's done by the panel(3x) library. This means that you - can either use stdscr or divide the screen into tiled - windows and not using stdscr at all. Mixing the two will + that's done by the panel(3x) library. This means that you + can either use stdscr or divide the screen into tiled win- + dows and not using stdscr at all. Mixing the two will result in unpredictable, and undesired, effects. Windows are referred to by variables declared as WINDOW *. These data structures are manipulated with routines described here and elsewhere in the ncurses manual pages. - Among which the most basic routines are move and addch. + Among those, the most basic routines are move and addch. More general versions of these routines are included with names beginning with w, allowing the user to specify a - window. The routines not beginning with w affect stdscr.) + window. The routines not beginning with w affect stdscr. - After using routines to manipulate a window, refresh is - called, telling curses to make the user's CRT screen look - like stdscr. The characters in a window are actually of - type chtype, (character and attribute data) so that other - information about the character may also be stored with - each character. + After using routines to manipulate a window, refresh(3x) + is called, telling curses to make the user's CRT screen + look like stdscr. The characters in a window are actually + of type chtype, (character and attribute data) so that + other information about the character may also be stored + with each character. - Special windows called pads may also be manipulated. + Special windows called pads 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 curs_pad(3x) for more information. - - 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, curses 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 + the screen and whose contents need not be completely dis- + played. See curs_pad(3x) for more information. + + In addition to drawing characters on the screen, video + attributes and colors may be supported, causing the char- + acters 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, curses 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 <curses.h>, such as A_REVERSE, ACS_HLINE, and KEY_LEFT. + +
If the environment variables LINES and COLUMNS are set, or - if the program is executing in a window environment, line - and column information in the environment will override - information read by terminfo. This would effect a program - running in an AT&T 630 layer, for example, where the size + if the program is executing in a window environment, line + and column information in the environment will override + information read by terminfo. This would affect a program + running in an AT&T 630 layer, for example, where the size of a screen is changeable (see ENVIRONMENT). - If the environment variable TERMINFO is defined, any - program using curses checks for a local terminal - definition before checking in the standard place. For - example, if TERM is set to att4424, then the compiled - terminal definition is found in - - /usr/share/terminfo/a/att4424. + If the environment variable TERMINFO is defined, any pro- + gram using curses checks for a local terminal definition + before checking in the standard place. For example, if + TERM is set to att4424, then the compiled terminal defini- + tion is found in - (The a is copied from the first letter of att4424 to avoid - creation of huge directories.) However, if TERMINFO is - set to $HOME/myterms, curses first checks + /usr/share/terminfo/a/att4424. + (The a is copied from the first letter of att4424 to avoid + creation of huge directories.) However, if TERMINFO is set + to $HOME/myterms, curses first checks $HOME/myterms/a/att4424, + and if that fails, it then checks - and if that fails, it then checks - - /usr/share/terminfo/a/att4424. - - This is useful for developing experimental definitions or - when write permission in /usr/share/terminfo is not - available. + /usr/share/terminfo/a/att4424. + This is useful for developing experimental definitions or when + write permission in /usr/share/terminfo is not available. The integer variables LINES and COLS are defined in <curses.h> and will be filled in by initscr with the size - of the screen. The constants TRUE and FALSE have the - values 1 and 0, respectively. + of the screen. The constants TRUE and FALSE have the val- + ues 1 and 0, respectively. The curses routines also define the WINDOW * variable curscr which is used for certain low-level operations like @@ -191,11 +211,11 @@ curscr can be used in only a few routines. - Routine and Argument Names - Many curses routines have two or more versions. The - routines prefixed with w require a window argument. The - routines prefixed with p require a pad argument. Those - without a prefix generally use stdscr. +
+ Many curses routines have two or more versions. The rou- + tines prefixed with w require a window argument. The rou- + tines prefixed with p require a pad argument. Those with- + out a prefix generally use stdscr. The routines prefixed with mv require a y and x coordinate to move to before performing the appropriate action. The @@ -209,27 +229,81 @@ specified before the coordinates. In each case, win is the window affected, and pad is the - pad affected; win and pad are always pointers to type - WINDOW. + pad affected; win and pad are always pointers to type WIN- + DOW. Option setting routines require a Boolean flag bf with the - value TRUE or FALSE; bf is always of type bool. The - variables ch and attrs below are always of type chtype. - The types WINDOW, SCREEN, bool, and chtype are defined in - <curses.h>. The type TERMINAL is defined in <term.h>. - All other arguments are integers. - - - Routine Name Index + value TRUE or FALSE; bf is always of type bool. Most of + the data types used in the library routines, such as WIN- + DOW, SCREEN, bool, and chtype are defined in <curses.h>. + Types used for the terminfo routines such as TERMINAL are + defined in <term.h>. + + This manual page describes functions which may appear in + any configuration of the library. There are two common + configurations of the library: + + ncurses + the "normal" library, which handles 8-bit charac- + ters. The normal (8-bit) library stores charac- + ters combined with attributes in chtype data. + + Attributes alone (no corresponding character) may + be stored in chtype or the equivalent attr_t data. + In either case, the data is stored in something + like an integer. + + Each cell (row and column) in a WINDOW is stored + as a chtype. + + ncursesw + the so-called "wide" library, which handles multi- + byte characters (see the section on ALTERNATE CON- + FIGURATIONS). 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: + + cchar_t + corresponds to chtype. 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. + + Each cell (row and column) in a WINDOW is + stored as a cchar_t. + + wchar_t + stores a "wide" character. Like chtype, this + may be an integer. + + wint_t + stores a wchar_t or WEOF - not the same, + though both may have the same size. + + 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, waddch + becomes wadd_wch. + + +
The following table lists each curses routine and the name - of the manual page on which it is described. Routines - flagged with `*' are ncurses-specific, not described by + of the manual page on which it is described. Routines + flagged with "*" are ncurses-specific, not described by XPG4 or present in SVr4. curses Routine Name Manual Page Name -------------------------------------------- COLOR_PAIR curs_color(3x) PAIR_NUMBER curs_attr(3x) + _nc_free_and_exit curs_memleaks(3x)* + _nc_freeall curs_memleaks(3x)* _nc_tracebits curs_trace(3x)* _traceattr curs_trace(3x)* _traceattr2 curs_trace(3x)* @@ -238,6 +312,7 @@ _tracechtype2 curs_trace(3x)* _tracedump curs_trace(3x)* _tracef curs_trace(3x)* + _tracemouse curs_trace(3x)* add_wch curs_add_wch(3x) add_wchnstr curs_add_wchstr(3x) @@ -262,7 +337,6 @@ bkgd curs_bkgd(3x) bkgdset curs_bkgd(3x) bkgrnd curs_bkgrnd(3x) - bkgrndset curs_bkgrnd(3x) border curs_border(3x) border_set curs_border_set(3x) @@ -304,19 +378,28 @@ flushinp curs_util(3x) get_wch curs_get_wch(3x) get_wstr curs_get_wstr(3x) + + getattrs curs_attr(3x) + getbegx curs_legacy(3x)* + getbegy curs_legacy(3x)* getbegyx curs_getyx(3x) getbkgd curs_bkgd(3x) getbkgrnd curs_bkgrnd(3x) getcchar curs_getcchar(3x) getch curs_getch(3x) + getcurx curs_legacy(3x)* + getcury curs_legacy(3x)* + getmaxx curs_legacy(3x)* + getmaxy curs_legacy(3x)* getmaxyx curs_getyx(3x) getmouse curs_mouse(3x)* getn_wstr curs_get_wstr(3x) getnstr curs_getstr(3x) + getparx curs_legacy(3x)* + getpary curs_legacy(3x)* getparyx curs_getyx(3x) getstr curs_getstr(3x) getsyx curs_kernel(3x) - getwin curs_util(3x) getyx curs_getyx(3x) halfdelay curs_inopts(3x) @@ -351,9 +434,24 @@ instr curs_instr(3x) intrflush curs_inopts(3x) inwstr curs_inwstr(3x) + is_cleared curs_opaque(3x)* + is_idcok curs_opaque(3x)* + is_idlok curs_opaque(3x)* + is_immedok curs_opaque(3x)* + is_keypad curs_opaque(3x)* + is_leaveok curs_opaque(3x)* is_linetouched curs_touch(3x) + is_nodelay curs_opaque(3x)* + is_notimeout curs_opaque(3x)* + is_pad curs_opaque(3x)* + + is_scrollok curs_opaque(3x)* + is_subwin curs_opaque(3x)* + is_syncok curs_opaque(3x)* + is_term_resized resizeterm(3x)* is_wintouched curs_touch(3x) isendwin curs_initscr(3x) + key_defined key_defined(3x)* key_name curs_util(3x) keybound keybound(3x)* keyname curs_util(3x) @@ -370,7 +468,6 @@ mousemask curs_mouse(3x)* move curs_move(3x) mvadd_wch curs_add_wch(3x) - mvadd_wchnstr curs_add_wchstr(3x) mvadd_wchstr curs_add_wchstr(3x) mvaddch curs_addch(3x) @@ -413,6 +510,7 @@ mvvline curs_border(3x) mvvline_set curs_border_set(3x) mvwadd_wch curs_add_wch(3x) + mvwadd_wchnstr curs_add_wchstr(3x) mvwadd_wchstr curs_add_wchstr(3x) mvwaddch curs_addch(3x) @@ -424,7 +522,6 @@ mvwaddwstr curs_addwstr(3x) mvwchgat curs_attr(3x) mvwdelch curs_delch(3x) - mvwget_wch curs_get_wch(3x) mvwget_wstr curs_get_wstr(3x) mvwgetch curs_getch(3x) @@ -462,6 +559,7 @@ nocbreak curs_inopts(3x) nodelay curs_inopts(3x) noecho curs_inopts(3x) + nofilter curs_util(3x)* nonl curs_outopts(3x) noqiflush curs_inopts(3x) noraw curs_inopts(3x) @@ -483,6 +581,7 @@ reset_prog_mode curs_kernel(3x) reset_shell_mode curs_kernel(3x) resetty curs_kernel(3x) + resize_term resizeterm(3x)* resizeterm resizeterm(3x)* restartterm curs_terminfo(3x) ripoffline curs_kernel(3x) @@ -532,10 +631,10 @@ tgetnum curs_termcap(3x) tgetstr curs_termcap(3x) tgoto curs_termcap(3x) - tigetflag curs_terminfo(3x) tigetnum curs_terminfo(3x) tigetstr curs_terminfo(3x) + tiparm curs_terminfo(3x)* timeout curs_inopts(3x) touchline curs_touch(3x) touchwin curs_touch(3x) @@ -543,6 +642,7 @@ tputs curs_termcap(3x) tputs curs_terminfo(3x) trace curs_trace(3x)* + typeahead curs_inopts(3x) unctrl curs_util(3x) unget_wch curs_get_wch(3x) @@ -552,6 +652,8 @@ use_default_colors default_colors(3x)* use_env curs_util(3x) use_extended_names curs_extend(3x)* + use_legacy_coding legacy_coding(3x)* + use_tioctl curs_util(3x) vid_attr curs_terminfo(3x) vid_puts curs_terminfo(3x) vidattr curs_terminfo(3x) @@ -586,7 +688,6 @@ wborder curs_border(3x) wborder_set curs_border_set(3x) wchgat curs_attr(3x) - wclear curs_clear(3x) wclrtobot curs_clear(3x) wclrtoeol curs_clear(3x) @@ -602,8 +703,12 @@ wget_wstr curs_get_wstr(3x) wgetbkgrnd curs_bkgrnd(3x) wgetch curs_getch(3x) + wgetdelay curs_opaque(3x)* wgetn_wstr curs_get_wstr(3x) wgetnstr curs_getstr(3x) + wgetparent curs_opaque(3x)* + wgetscrreg curs_opaque(3x)* + wgetstr curs_getstr(3x) whline curs_border(3x) whline_set curs_border_set(3x) @@ -640,407 +745,696 @@ wsyncdown curs_window(3x) wsyncup curs_window(3x) wtimeout curs_inopts(3x) - wtouchln curs_touch(3x) wunctrl curs_util(3x) wvline curs_border(3x) wvline_set curs_border_set(3x) --
- Routines that return an integer return ERR upon failure - and an integer value other than ERR upon successful - completion, unless otherwise noted in the routine - descriptions. +
+ Routines that return an integer return ERR upon failure + and an integer value other than ERR upon successful com- + pletion, unless otherwise noted in the routine descrip- + tions. + + As a general rule, routines check for null pointers passed + as parameters, and handle this as an error. All macros return the value of the w version, except - setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx. The + setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx. The return values of setscrreg, wsetscrreg, getyx, getbegyx, - and getmaxyx are undefined (i.e., these should not be used + and getmaxyx are undefined (i.e., these should not be used as the right-hand side of assignment statements). Routines that return pointers return NULL on error. --
- The following environment symbols are useful for - customizing the runtime behavior of the ncurses library. - The most important ones have been already discussed in - detail. - - BAUDRATE - The debugging library checks this environment symbol - when the application has redirected output to a file. - The symbol's numeric value is used for the baudrate. - If no value is found ncurses uses 9600. This allows - testers to construct repeatable test-cases that take - into account costs that depend on baudrate. - - CC When set, change occurrences of the command_character - (i.e., the cmdch capability) of the loaded terminfo - entries to the value of this symbol. Very few - terminfo entries provide this feature. - - COLUMNS - 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 $COLUMNS - value nor the terminal's screen size is available, - ncurses uses the size which may be specified in the - terminfo database (i.e., the cols capability). - - It is important that your application use a correct - size for the screen. However, 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. - - Either COLUMNS or LINES 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, lines and cols should not be specified - in a terminal description for terminals which are run - as emulations. - - Use the use_env function to disable this feature. - - ESCDELAY - 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. - - 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. - - 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. - - HOME Tells ncurses where your home directory is. That is - where it may read and write auxiliary terminal - descriptions: - - $HOME/.termcap - $HOME/.terminfo - - LINES - Like COLUMNS, specify the height of the screen in - characters. See COLUMNS for a detailed description. - - MOUSE_BUTTONS_123 - 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: - - 1 = left - 2 = right - 3 = middle. - - This symbol lets you customize the mouse. The symbol - must be three numeric digits 1-3 in any order, e.g., - 123 or 321. If it is not specified, ncurses uses - 132. - - NCURSES_ASSUMED_COLORS - Override the compiled-in assumption that the - terminal's default colors are white-on-black (see - assume_default_colors(3x)). You may set the - foreground and background color values with this - environment variable by proving a 2-element list: - foreground,background. For example, to tell ncurses - to not assume anything about the colors, set this to - "-1,-1". To make it green-on-black, set it to "2,0". - Any positive value from zero to the terminfo - max_colors value is allowed. - - NCURSES_NO_PADDING - 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. - - 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. - - Set the NCURSES_NO_PADDING symbol to disable all but - mandatory padding. Mandatory padding is used as a - part of special control sequences such as flash. - - NCURSES_NO_SETBUF - Normally ncurses enables buffered output during - terminal initialization. This is done (as in SVr4 - curses) for performance reasons. For testing - purposes, both of ncurses and certain applications, - this feature is made optional. Setting the - NCURSES_NO_SETBUF variable disables output buffering, - leaving the output in the original (usually line - buffered) mode. - - NCURSES_TRACE - During initialization, the ncurses debugging library - checks the NCURSES_TRACE symbol. If it is defined, - to a numeric value, ncurses calls the trace function, - using that value as the argument. - - The argument values, which are defined in curses.h, - provide several types of information. When running - with traces enabled, your application will write the - file trace to the current directory. - - TERM Denotes your terminal type. Each terminal type is - distinct, though many are similar. - - TERMCAP - If the ncurses library has been configured with - termcap support, ncurses will check for a terminal's - description in termcap form if it is not available in - the terminfo database. - - The TERMCAP symbol contains either a terminal - description (with newlines stripped out), or a file - name telling where the information denoted by the - TERM symbol exists. In either case, setting it - directs ncurses to ignore the usual place for this - information, e.g., /etc/termcap. - - TERMINFO - Overrides the directory in which ncurses searches for - your terminal description. This is the simplest, but - not the only way to change the list of directories. - The complete list of directories in order follows: - - - the last directory to which ncurses wrote, if any, - is searched first. - - - the directory specified by the TERMINFO symbol - - - $HOME/.terminfo - - - directories listed in the TERMINFO_DIRS symbol - - - one or more directories whose names are configured - and compiled into the ncurses library, e.g., - /usr/share/terminfo - - TERMINFO_DIRS - Specifies a list of directories to search for - terminal descriptions. The list is separated by - colons (i.e., ":") on Unix, semicolons on OS/2 EMX. - All of the terminal descriptions are in terminfo - form, which makes a subdirectory named for the first - letter of the terminal names therein. - - TERMPATH - If TERMCAP does not hold a file name then ncurses - checks the TERMPATH symbol. This is a list of - filenames separated by spaces or colons (i.e., ":") - on Unix, semicolons on OS/2 EMX. If the TERMPATH - symbol is not set, ncurses looks in the files - /etc/termcap, /usr/share/misc/termcap and - $HOME/.termcap, in that order. - - 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: - $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. - +
+ The following environment symbols are useful for customiz- + ing the runtime behavior of the ncurses library. The most + important ones have been already discussed in detail. + + CC + When set, change occurrences of the command_character + (i.e., the cmdch capability) of the loaded terminfo + entries to the value of this variable. Very few terminfo + entries provide this feature. + + Because this name is also used in development environments + to represent the C compiler's name, ncurses ignores it if + it does not happen to be a single character. + + +
+ 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, ncurses uses 9600. This allows testers to + construct repeatable test-cases that take into account + costs that depend on baudrate. + + +
+ Specify the width of the screen in characters. Applica- + tions running in a windowing environment usually are able + to obtain the width of the window in which they are exe- + cuting. If neither the COLUMNS value nor the terminal's + screen size is available, ncurses uses the size which may + be specified in the terminfo database (i.e., the cols + capability). + + 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 + COLUMNS and/or LINES overrides the library's use of the + screen size obtained from the operating system. + + Either COLUMNS or LINES symbols may be specified indepen- + dently. This is mainly useful to circumvent legacy mis- + features of terminal descriptions, e.g., xterm which com- + monly specifies a 65 line screen. For best results, lines + and cols should not be specified in a terminal description + for terminals which are run as emulations. + + Use the use_env function to disable all use of external + environment (but not including system calls) to determine + the screen size. Use the use_tioctl function to update + COLUMNS or LINES to match the screen size obtained from + system calls or the terminal database. + + +
+ 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. + + The most common instance where you may wish to change this + value is to work with slow hosts, e.g., running on a net- + work. 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. + + 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. + + In addition to the environment variable, this implementa- + tion provides a global variable with the same name. Por- + table applications should not rely upon the presence of + ESCDELAY in either form, but setting the environment vari- + able rather than the global variable does not create prob- + lems when compiling an application. + + +
+ Tells ncurses where your home directory is. That is where + it may read and write auxiliary terminal descriptions: + + $HOME/.termcap + $HOME/.terminfo + + +
+ Like COLUMNS, specify the height of the screen in charac- + ters. See COLUMNS for a detailed description. + + +
+ 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: + + 1 = left + 2 = right + 3 = middle. + + 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, ncurses uses 132. + + +
+ Override the compiled-in assumption that the terminal's + default colors are white-on-black (see default_col- + ors(3x)). You may set the foreground and background color + values with this environment variable by proving a 2-ele- + ment 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 max_colors + value is allowed. + + +
+ This applies only to the MinGW port of ncurses. + + The Console2 program's handling of the Microsoft Console + API call CreateConsoleScreenBuffer is defective. Applica- + tions which use this will hang. However, it is possible + to simulate the action of this call by mapping coordi- + nates, explicitly saving and restoring the original screen + contents. Setting the environment variable NCGDB has the + same effect. + + +
+ This applies only to ncurses configured to use the GPM + interface. + + If present, the environment variable is a list of one or + more terminal names against which the TERM environment + variable is matched. Setting it to an empty value dis- + ables the GPM interface; using the built-in support for + xterm, etc. + + If the environment variable is absent, ncurses will + attempt to open GPM if TERM contains "linux". + + +
+ Ncurses may use tabs as part of the cursor movement opti- + mization. In some cases, your terminal driver may not + handle these properly. Set this environment variable to + disable the feature. You can also adjust your stty set- + tings to avoid the problem. NCURSES_NO_MAGIC_COOKIE Some + terminals use a magic-cookie feature which requires spe- + cial handling to make highlighting and other video + attributes display properly. You can suppress the high- + lighting entirely for these terminals by setting this + environment variable. + + +
+ 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 environ- + ment and use curses-based applications. Terminal emula- + tors can duplicate all of the important aspects of a hard- + ware 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. + + 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. + + 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 flash. + + +
+ This setting is obsolete. Before changes + + o started with 5.9 patch 20120825 and + + o continued though 5.9 patch 20130126 + + ncurses enabled buffered output during terminal initial- + ization. This was done (as in SVr4 curses) for perfor- + mance reasons. For testing purposes, both of ncurses 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. + + 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. + + 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 putp still use the standard output. But high- + level curses calls do not. + + +
+ During initialization, the ncurses library checks for spe- + cial cases where VT100 line-drawing (and the corresponding + alternate character set capabilities) described in the + terminfo are known to be missing. Specifically, when run- + ning in a UTF-8 locale, the Linux console emulator and the + GNU screen program ignore these. Ncurses checks the TERM + 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. + + 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". + + As an alternative to the environment variable, ncurses + checks for an extended terminfo capability U8. This is a + numeric capability which can be compiled using tic -x. + For example + + # 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, + + The name "U8" is chosen to be two characters, to permit it + to be used by applications that use ncurses' termcap + interface. + + +
+ During initialization, the ncurses debugging library + checks the NCURSES_TRACE environment variable. If it is + defined, to a numeric value, ncurses calls the trace func- + tion, using that value as the argument. + + The argument values, which are defined in curses.h, pro- + vide several types of information. When running with + traces enabled, your application will write the file trace + to the current directory. + + See curs_trace(3x) for more information. + + +
+ Denotes your terminal type. Each terminal type is dis- + tinct, though many are similar. + + TERM is commonly set by terminal emulators to help appli- + cations find a workable terminal description. Some of + those choose a popular approximation, e.g., "ansi", + "vt100", "xterm" rather than an exact fit. Not infre- + quently, your application will have problems with that + approach, e.g., incorrect function-key definitions. + + If you set TERM 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 (xterm being a rare exception), terminal + emulators which allow you to specify TERM as a parameter + or configuration value do not change their behavior to + match that setting. --
- /usr/share/tabset - directory containing initialization files for the - terminal capability database /usr/share/terminfo - terminal capability database +
+ If the ncurses library has been configured with termcap + support, ncurses will check for a terminal's description + in termcap form if it is not available in the terminfo + database. + + The TERMCAP environment variable contains either a termi- + nal description (with newlines stripped out), or a file + name telling where the information denoted by the TERM + environment variable exists. In either case, setting it + directs ncurses to ignore the usual place for this infor- + mation, e.g., /etc/termcap. --
- terminfo(5) and related pages whose names begin "curs_" - for detailed routine descriptions. +
+ ncurses can be configured to read from multiple terminal + databases. The TERMINFO variable overrides the location + for the default terminal database. Terminal descriptions + (in terminal format) are stored in terminal databases: --
- The ncurses library can be compiled with an option - (-DUSE_GETCAP) that falls back to the old-style - /etc/termcap file if the terminal setup code cannot find a - terminfo entry corresponding to TERM. Use of this feature - is not recommended, as it essentially includes an entire - termcap compiler in the ncurses startup code, at - significant cost in core and startup cycles. - - The ncurses library includes facilities for capturing - mouse events on certain terminals (including xterm). See - the curs_mouse(3x) manual page for details. + o Normally these are stored in a directory tree, using + subdirectories named by the first letter of the termi- + nal names therein. - The ncurses library includes facilities for responding to - window resizing events, e.g., when running in an xterm. - See the resizeterm(3x) and wresize(3x) manual pages for - details. In addition, the library may be configured with - a SIGWINCH handler. - - The ncurses 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 define_key(3x) and keyok(3x) manual pages for - details. - - The ncurses 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 default_colors(3x) manual page for - details. + This is the scheme used in System V, which legacy Unix + systems use, and the TERMINFO variable is used by + curses applications on those systems to override the + default location of the terminal database. - The ncurses library includes a function for directing - application output to a printer attached to the terminal - device. See the curs_print(3x) manual page for details. + o If ncurses is built to use hashed databases, then each + entry in this list may be the path of a hashed data- + base file, e.g., + /usr/share/terminfo.db --
- The ncurses library is intended to be BASE-level - conformant with the XSI Curses standard. Certain portions - of the EXTENDED XSI Curses functionality (including color - support) are supported. The following EXTENDED XSI Curses - calls in support of wide (multibyte) characters are not - yet implemented: pecho_wchar, slk_wset. - - A small number of local differences (that is, individual - differences between the XSI Curses and ncurses calls) are - described in PORTABILITY sections of the library man - pages. + rather than - The routine has_key is not part of XPG4, nor is it present - in SVr4. See the curs_getch(3x) manual page for details. + /usr/share/terminfo/ - The routine slk_attr is not part of XPG4, nor is it - present in SVr4. See the curs_slk(3x) manual page for - details. + The hashed database uses less disk-space and is a lit- + tle faster than the directory tree. However, some + applications assume the existence of the directory + tree, reading it directly rather than using the ter- + minfo library calls. - The routines getmouse, mousemask, ungetmouse, - mouseinterval, and wenclose relating to mouse interfacing - are not part of XPG4, nor are they present in SVr4. See - the curs_mouse(3x) manual page for details. + o If ncurses is built with a support for reading termcap + files directly, then an entry in this list may be the + path of a termcap file. - The routine mcprint was not present in any previous curses - implementation. See the curs_print(3x) manual page for - details. + o If the TERMINFO variable begins with "hex:" or "b64:", + ncurses uses the remainder of that variable as a com- + piled terminal description. You might produce the + base64 format using infocmp(1m): - The routine wresize is not part of XPG4, nor is it present - in SVr4. See the wresize(3x) manual page for details. + TERMINFO="$(infocmp -0 -Q2 -q)" + export TERMINFO - In historic curses versions, delays embedded in the - capabilities cr, ind, cub1, ff and tab activated - corresponding delay bits in the UNIX tty driver. In this - implementation, all padding is done by NUL sends. This - method is slightly more expensive, but narrows the - interface to the UNIX kernel significantly and increases - the package's portability correspondingly. + The compiled description is used if it corresponds to + the terminal identified by the TERM variable. + Setting TERMINFO is the simplest, but not the only way to + set location of the default terminal database. The com- + plete list of database locations in order follows: --
- The header file <curses.h> automatically includes the - header files <stdio.h> and <unctrl.h>. + o the last terminal database to which ncurses wrote, + if any, is searched first - If standard output from a ncurses 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. + o the location specified by the TERMINFO environment + variable + o $HOME/.terminfo --
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. - Based on pcurses by Pavel Curtis. + o locations listed in the TERMINFO_DIRS environment + variable + o one or more locations whose names are configured + and compiled into the ncurses library, i.e., + o /usr/local/ncurses/share/ter- + minfo:/usr/share/terminfo (corresponding to the + TERMINFO_DIRS variable) + o /usr/share/terminfo (corresponding to the TER- + MINFO variable) +
+ 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 TERMINFO vari- + able. The list is separated by colons (i.e., ":") on + Unix, semicolons on OS/2 EMX. + There is no corresponding feature in System V terminfo; it + is an extension developed for ncurses. +
+ If TERMCAP does not hold a file name then ncurses checks + the TERMPATH environment variable. This is a list of + filenames separated by spaces or colons (i.e., ":") on + Unix, semicolons on OS/2 EMX. + If the TERMPATH environment variable is not set, ncurses + looks in the files + /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, + in that order. + 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: + $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. +
+ Several different configurations are possible, depending + on the configure script options used when building + ncurses. There are a few main options whose effects are + visible to the applications developer using ncurses: + --disable-overwrite + The standard include for ncurses is as noted in SYN- + OPSIS: + #include <curses.h> + This option is used to avoid filename conflicts when + ncurses is not the main implementation of curses of + the computer. If ncurses is installed disabling + overwrite, it puts its headers in a subdirectory, + e.g., + #include <ncurses/curses.h> + It also omits a symbolic link which would allow you + to use -lcurses to build executables. + --enable-widec + The configure script renames the library and (if the + --disable-overwrite 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 + -lncurses + you link with + -lncursesw + You must also define _XOPEN_SOURCE_EXTENDED when com- + piling for the wide-character library to use the + extended (wide-character) functions. The curses.h + 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 WINDOW struc- + ture differs, and very few applications require more + than a pointer to WINDOWs. 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. + --with-pthread + The configure script renames the library. All of the + library names have a "t" appended to them (before any + "w" added by --enable-widec). + The global variables such as LINES 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. + --with-shared + --with-normal + --with-debug + --with-profile + The shared and normal (static) library names differ + by their suffixes, e.g., libncurses.so and libn- + curses.a. The debug and profiling libraries add a + "_g" and a "_p" to the root names respectively, e.g., + libncurses_g.a and libncurses_p.a. + --with-trace + The trace 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 assum- + ing it is always in the debug library. +
+ /usr/share/tabset + directory containing initialization files for the + terminal capability database /usr/share/terminfo ter- + minal capability database +
+ terminfo(5) and related pages whose names begin "curs_" + for detailed routine descriptions. + curs_variables(3x) +
+ The ncurses library can be compiled with an option + (-DUSE_GETCAP) that falls back to the old-style /etc/term- + cap file if the terminal setup code cannot find a terminfo + entry corresponding to TERM. Use of this feature is not + recommended, as it essentially includes an entire termcap + compiler in the ncurses startup code, at significant cost + in core and startup cycles. + + The ncurses library includes facilities for capturing + mouse events on certain terminals (including xterm). See + the curs_mouse(3x) manual page for details. + The ncurses library includes facilities for responding to + window resizing events, e.g., when running in an xterm. + See the resizeterm(3x) and wresize(3x) manual pages for + details. In addition, the library may be configured with + a SIGWINCH handler. + The ncurses 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 define_key(3x) key_defined(3x), and keyok(3x) man- + ual pages for details. + + The ncurses library can exploit the capabilities of termi- + nals which implement the ISO-6429 SGR 39 and SGR 49 con- + trols, 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 col- + ored text on a background whose color is set indepen- + dently, providing better control over color contrasts. + See the default_colors(3x) manual page for details. + The ncurses library includes a function for directing + application output to a printer attached to the terminal + device. See the curs_print(3x) manual page for details. +
+ The ncurses library is intended to be BASE-level confor- + mant with XSI Curses. The EXTENDED XSI Curses functional- + ity (including color support) is supported. + A small number of local differences (that is, individual + differences between the XSI Curses and ncurses calls) are + described in PORTABILITY sections of the library man + pages. + 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 applica- + tion which of several possible errors were detected. + Relying on this (or some other) extension will adversely + affect the portability of curses applications. + + This implementation also contains several extensions: + + o The routine has_key is not part of XPG4, nor is it + present in SVr4. See the curs_getch(3x) manual page + for details. + + o The routine slk_attr is not part of XPG4, nor is it + present in SVr4. See the curs_slk(3x) manual page for + details. + + o The routines getmouse, mousemask, ungetmouse, mousein- + terval, and wenclose relating to mouse interfacing are + not part of XPG4, nor are they present in SVr4. See + the curs_mouse(3x) manual page for details. + + o The routine mcprint was not present in any previous + curses implementation. See the curs_print(3x) manual + page for details. + + o The routine wresize is not part of XPG4, nor is it + present in SVr4. See the wresize(3x) manual page for + details. + + o The WINDOW structure's internal details can be hidden + from application programs. See curs_opaque(3x) for + the discussion of is_scrollok, etc. + + o This implementation can be configured to provide rudi- + mentary support for multi-threaded applications. See + curs_threads(3x) for details. + + o This implementation can also be configured to provide + a set of functions which improve the ability to manage + multiple screens. See curs_sp_funcs(3x) for details. + + In historic curses versions, delays embedded in the capa- + bilities cr, ind, cub1, ff and tab activated corresponding + delay bits in the UNIX tty driver. In this implementa- + tion, all padding is done by sending NUL bytes. This + method is slightly more expensive, but narrows the inter- + face to the UNIX kernel significantly and increases the + package's portability correspondingly. + + +
+ The header file <curses.h> automatically includes the + header files <stdio.h> and <unctrl.h>. + If standard output from a ncurses program is re-directed + to something which is not a tty, screen updates will be + directed to standard error. This was an undocumented fea- + ture of AT&T System V Release 3 curses. +
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. + Based on pcurses by Pavel Curtis. + ncurses(3x)-