X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fncurses.3x.html;h=d280efe5467ec9377ed2d89b783c694b44e95b22;hp=52c3eac5303256acb309b75dab496811b746dbdc;hb=dcfe712cb3492636e8d50c9867cf05aec089a576;hpb=092f1e4b79bca1d1cd3e24baa7abc3ad4cea8420 diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index 52c3eac5..d280efe5 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -1,7 +1,7 @@ @@ -60,7 +60,7 @@ 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 20160402). + ncurses version 6.0 (patch 20170304). The ncurses library emulates the curses library of System V Release 4 UNIX, and XPG4 (X/Open Portability Guide) @@ -98,37 +98,34 @@ The library uses the locale which the calling program has initialized. That is normally done with setlocale: - setlocale(LC_ALL, ""); - - If the locale is not initialized, the library assumes that - characters are printable as in ISO-8859-1, to work with - certain legacy programs. You should initialize the locale - and not rely on specific details of the library when the - locale has not been setup. + 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. 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 + with windows and screens are used. The routine endwin(3x) must be called before exiting. To get character-at-a-time input without echoing (most interactive, screen oriented programs want this), the fol- lowing sequence should be used: - initscr(); cbreak(); noecho(); - - 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 ter- - minal 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.] + 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.]
@@ -153,12 +150,12 @@ names beginning with w, allowing the user to specify a 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. These are windows which are not constrained to the size of @@ -191,96 +188,92 @@ TERM is set to att4424, then the compiled terminal defini- tion is found in - /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 + /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. + /usr/share/terminfo/a/att4424. + This is useful for developing experimental definitions or when + write permission in /usr/share/terminfo is not available. - This is useful for developing experimental definitions or - when write permission in /usr/share/terminfo is not avail- - able. - - The integer variables LINES and COLS are defined in - <curses.h> and will be filled in by initscr with the size + 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 val- ues 1 and 0, respectively. - The curses routines also define the WINDOW * variable + The curses routines also define the WINDOW * variable curscr which is used for certain low-level operations like - clearing and redrawing a screen containing garbage. The + clearing and redrawing a screen containing garbage. The curscr can be used in only a few routines.
- Many curses routines have two or more versions. The rou- + 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 - mv routines imply a call to move before the call to the - other routine. The coordinate y always refers to the row - (of the window), and x always refers to the column. The + to move to before performing the appropriate action. The + mv routines imply a call to move before the call to the + other routine. The coordinate y always refers to the row + (of the window), and x always refers to the column. The upper left-hand corner is always (0,0), not (1,1). The routines prefixed with mvw take both a window argument - and x and y coordinates. The window argument is always + and x and y coordinates. The window argument is always specified before the coordinates. - In each case, win is the window affected, and pad is the + In each case, win is the window affected, and pad is the 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. 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 + 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 + 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- + 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 + 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 + In either case, the data is stored in something like an integer. - Each cell (row and column) in a WINDOW is stored + 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 + 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 + 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 + Each cell (row and column) in a WINDOW is stored as a cchar_t. wchar_t @@ -288,21 +281,21 @@ may be an integer. wint_t - stores a wchar_t or WEOF - not the same, + 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" + 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 + 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 @@ -315,11 +308,11 @@ _traceattr curs_trace(3x)* _traceattr2 curs_trace(3x)* _tracechar curs_trace(3x)* - _tracechtype curs_trace(3x)* _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) @@ -382,10 +375,10 @@ erasewchar curs_termattrs(3x) filter curs_util(3x) flash curs_beep(3x) - 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)* @@ -449,9 +442,9 @@ 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)* @@ -516,8 +509,8 @@ mvscanw curs_scanw(3x) 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) @@ -649,8 +642,8 @@ tputs curs_termcap(3x) tputs curs_terminfo(3x) trace curs_trace(3x)* - typeahead curs_inopts(3x) + typeahead curs_inopts(3x) unctrl curs_util(3x) unget_wch curs_get_wch(3x) ungetch curs_getch(3x) @@ -715,9 +708,9 @@ 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) win_wch curs_in_wch(3x) win_wchnstr curs_in_wchstr(3x) @@ -759,17 +752,17 @@
- 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- + 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 + All macros return the value of the w version, except setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx. The - return values of setscrreg, wsetscrreg, getyx, getbegyx, + return values of setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx are undefined (i.e., these should not be used as the right-hand side of assignment statements). @@ -782,80 +775,80 @@ important ones have been already discussed in detail. CC - When set, change occurrences of the command_character + 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 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 + 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 + 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 + 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 + 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 + 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 + 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- + 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 + 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 + 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 + 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 + 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 + 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 + 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. @@ -870,95 +863,95 @@
- Like COLUMNS, specify the height of the screen in charac- + 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 + 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 + 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- + 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 + 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 + 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- + 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 + contents. Setting the environment variable NCGDB has the same effect.
- This applies only to ncurses configured to use the GPM + 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 + 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". + 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 + 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- + 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 + 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 + 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 + 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 @@ -973,49 +966,49 @@ 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 + 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 + 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 + 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- + 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 + 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 + 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 + 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. + 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 @@ -1028,18 +1021,18 @@ 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 + 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 + 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 + 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. @@ -1047,57 +1040,101 @@
- Denotes your terminal type. Each terminal type is dis- + 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 + 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, + 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 + emulators which allow you to specify TERM as a parameter + or configuration value do not change their behavior to match that setting.
- 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 + 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- + 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.
- 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: + 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: - o the last directory to which ncurses wrote, if any, - is searched first + o Normally these are stored in a directory tree, using + subdirectories named by the first letter of the termi- + nal names therein. - o the directory specified by the TERMINFO environment + 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. + + 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 + + rather than + + /usr/share/terminfo/ + + 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. + + 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. + + 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): + + TERMINFO="$(infocmp -0 -Q2 -q)" + export TERMINFO + + 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: + + o the last terminal database to which ncurses wrote, + if any, is searched first + + o the location specified by the TERMINFO environment variable o $HOME/.terminfo - o directories listed in the TERMINFO_DIRS environment + o locations listed in the TERMINFO_DIRS environment variable - o one or more directories whose names are configured + o one or more locations whose names are configured and compiled into the ncurses library, i.e., o /usr/local/ncurses/share/ter- @@ -1109,69 +1146,64 @@
- 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. - Normally these are stored in a directory tree, using sub- - directories named by the first letter of the terminal - names therein. - - If ncurses is built with a hashed database, then each - entry in this list can also be the path of the correspond- - ing database file. + 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. - 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. + 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 + 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. + 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), + 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. + $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 + 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- + 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, + 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 + 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 + 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., + library names have a "w" appended to them, i.e., instead of -lncurses @@ -1181,16 +1213,16 @@ -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 + 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 + 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 @@ -1198,10 +1230,10 @@ 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 + 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 @@ -1211,29 +1243,29 @@ --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 + 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 + The trace function normally resides in the debug library, but it is sometimes useful to configure this - in the shared library. Configure scripts should + 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 + 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_" + terminfo(5) and related pages whose names begin "curs_" for detailed routine descriptions. curs_variables(3x) @@ -1242,116 +1274,116 @@ 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 + 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 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 + 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. + 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- + 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. + 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 + 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- + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + mentary support for multi-threaded applications. See curs_threads(3x) for details. - o This implementation can also be configured to provide + 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- + 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 + 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 + 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 + 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. + Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses by Pavel Curtis.