X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fncurses.3x.html;h=b670e16ed2b0ccc0134497db78645239f8964201;hp=0490529778fa0486c0d9d32a0fef90d2a9e39a38;hb=e2d7d0028f4298dca2b0edaf2dc8ce30518d9218;hpb=a8987e73ec254703634802b4f7ee30d3a485524d;ds=sidebyside diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index 04905297..b670e16e 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -2,7 +2,7 @@
@@ -41,7 +41,7 @@-ncurses(3x) ncurses(3x) +ncurses(3x) ncurses(3x) @@ -62,38 +62,59 @@ independent method of updating character screens with rea- sonable 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 sum- - marized under the EXTENSIONS and BUGS sections below and - described in detail in the EXTENSIONS and BUGS sections of + 4.4BSD classic curses, which has been discontinued. This + describes ncurses version 5.9 (patch 20130309). + + 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 direc- - tory) that describe curses actions. + tory) that describe curses actions. See also the section + on ALTERNATE CONFIGURATIONS. - The ncurses package supports: overall screen, window and + 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- + 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. - To initialize the routines, the routine initscr or newterm - must be called before any of the other routines that deal + 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. + + 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 - 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: + 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(); @@ -103,33 +124,33 @@ 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 + 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 + 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 + 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 + 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 + 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 win- - dows and not using stdscr at all. Mixing the two will + 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. - 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.) + These data structures are manipulated with routines + described here and elsewhere in the ncurses manual pages. + 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. After using routines to manipulate a window, refresh is called, telling curses to make the user's CRT screen look @@ -157,7 +178,7 @@ 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 + 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). @@ -215,11 +236,66 @@ DOW. Option setting routines require a Boolean flag bf with the - value TRUE or FALSE; bf is always of type bool. The vari- - ables 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. + 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 + characters. The normal (8-bit) library stores + characters 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 + multibyte characters (see the section on + ALTERNATE CONFIGURATIONS). 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 charac- + ters: + + cchar_t + corresponds to chtype. However it is a + structure, because more data is stored + than can fit into an integer. The char- + acters 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 sepa- + rate 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 "nor- + mal" library. There is a naming convention + which relates many of the normal/wide vari- + ants: a "_w" is inserted into the name. For + example, waddch becomes wadd_wch. Routine Name Index The following table lists each curses routine and the name @@ -231,7 +307,10 @@ -------------------------------------------- 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)* _tracechar curs_trace(3x)* @@ -244,7 +323,6 @@ add_wchnstr curs_add_wchstr(3x) add_wchstr curs_add_wchstr(3x) addch curs_addch(3x) - addchnstr curs_addchstr(3x) addchstr curs_addchstr(3x) addnstr curs_addstr(3x) @@ -298,6 +376,7 @@ echochar curs_addch(3x) endwin curs_initscr(3x) erase curs_clear(3x) + erasechar curs_termattrs(3x) erasewchar curs_termattrs(3x) filter curs_util(3x) @@ -305,16 +384,24 @@ 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) @@ -352,7 +439,19 @@ 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_scrollok 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)* @@ -376,7 +475,6 @@ mvadd_wchstr curs_add_wchstr(3x) mvaddch curs_addch(3x) mvaddchnstr curs_addchstr(3x) - mvaddchstr curs_addchstr(3x) mvaddnstr curs_addstr(3x) mvaddnwstr curs_addwstr(3x) @@ -410,6 +508,7 @@ mvinsstr curs_insstr(3x) mvinstr curs_instr(3x) mvinwstr curs_inwstr(3x) + mvprintw curs_printw(3x) mvscanw curs_scanw(3x) mvvline curs_border(3x) @@ -442,7 +541,6 @@ mvwinchnstr curs_inchstr(3x) mvwinchstr curs_inchstr(3x) mvwinnstr curs_instr(3x) - mvwinnwstr curs_inwstr(3x) mvwins_nwstr curs_ins_wstr(3x) mvwins_wch curs_ins_wch(3x) @@ -464,6 +562,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) @@ -475,6 +574,7 @@ pnoutrefresh curs_pad(3x) prefresh curs_pad(3x) printw curs_printw(3x) + putp curs_terminfo(3x) putwin curs_util(3x) qiflush curs_inopts(3x) @@ -508,7 +608,6 @@ slk_attr_on curs_slk(3x) slk_attr_set curs_slk(3x) slk_attroff curs_slk(3x) - slk_attron curs_slk(3x) slk_attrset curs_slk(3x) slk_clear curs_slk(3x) @@ -541,6 +640,7 @@ touchline curs_touch(3x) touchwin curs_touch(3x) tparm curs_terminfo(3x) + tputs curs_termcap(3x) tputs curs_terminfo(3x) trace curs_trace(3x)* @@ -553,6 +653,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) @@ -574,7 +676,6 @@ waddstr curs_addstr(3x) waddwstr curs_addwstr(3x) wattr_get curs_attr(3x) - wattr_off curs_attr(3x) wattr_on curs_attr(3x) wattr_set curs_attr(3x) @@ -605,6 +706,7 @@ wgetch curs_getch(3x) wgetn_wstr curs_get_wstr(3x) wgetnstr curs_getstr(3x) + wgetstr curs_getstr(3x) whline curs_border(3x) whline_set curs_border_set(3x) @@ -640,7 +742,6 @@ wstandout curs_attr(3x) wsyncdown curs_window(3x) wsyncup curs_window(3x) - wtimeout curs_inopts(3x) wtouchln curs_touch(3x) wunctrl curs_util(3x) @@ -655,9 +756,12 @@ pletion, unless otherwise noted in the routine descrip- tions. - All macros return the value of the w version, except + 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, 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). @@ -671,43 +775,56 @@ 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. + The debugging library checks this environment vari- + able 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. 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 ter- + entries to the value of this variable. Very few ter- minfo entries provide this feature. + Because this name is also used in development envi- + ronments to represent the C compiler's name, ncurses + ignores it if it does not happen to be a single char- + acter. + COLUMNS Specify the width of the screen in characters. - Applications running in a windowing environment usu- - ally 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 + Applications running in a windowing environment usu- + ally 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., + 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 + 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 + 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. + Use the use_env function to disable all use of exter- + nal environment (but not including system calls) to + determine the screen size. Use the use_tioctl func- + tion to update COLUMNS or LINES to match the screen + size obtained from system calls or the terminal data- + base. ESCDELAY Specifies the total time, in milliseconds, for which @@ -730,6 +847,14 @@ timeout applies to the composed multi-click event as well as the individual clicks. + In addition to the environment variable, this imple- + mentation provides a global variable with the same + name. Portable applications should not rely upon the + presence of ESCDELAY in either form, but setting the + environment variable rather than the global variable + does not create problems when compiling an applica- + tion. + HOME Tells ncurses where your home directory is. That is where it may read and write auxiliary terminal descriptions: @@ -739,152 +864,333 @@ LINES Like COLUMNS, specify the height of the screen in - characters. See COLUMNS for a detailed description. + 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 + 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. + 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. NCURSES_ASSUMED_COLORS - Override the compiled-in assumption that the termi- - nal's default colors are white-on-black (see - assume_default_colors(3x)). You may set the fore- - ground and background color values with this environ- - ment variable by proving a 2-element list: fore- - ground,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_col- - ors value is allowed. + Override the compiled-in assumption that the termi- + nal's default colors are white-on-black (see + default_colors(3x)). You may set the foreground and + background color values with this environment vari- + able by proving a 2-element list: foreground,back- + ground. 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 posi- + tive value from zero to the terminfo max_colors value + is allowed. + + NCURSES_GPM_TERMS + 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 envi- + ronment variable is matched. Setting it to an empty + value disables 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_NO_HARD_TABS + Ncurses may use tabs as part of the cursor movement + optimization. In some cases, your terminal driver + may not handle these properly. Set this environment + variable to disable the feature. You can also adjust + your stty settings to avoid the problem. + + NCURSES_NO_MAGIC_COOKIES + Some terminals use a magic-cookie feature which + requires special handling to make highlighting and + other video attributes display properly. You can + suppress the highlighting entirely for these termi- + nals by setting this environment variable. 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 applica- - tions. Terminal emulators can duplicate all of the + 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 applica- + tions. 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 con- - trol), it (or your application) must manage dataflow, - preventing overruns. The cheapest solution (no hard- - ware 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 + 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., tim- + ing. Unless a hardware terminal is interfaced into a + terminal concentrator (which does flow control), it + (or your application) must manage dataflow, prevent- + ing 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. + 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. NCURSES_NO_SETBUF - Normally ncurses enables buffered output during ter- - minal initialization. This is done (as in SVr4 - curses) for performance reasons. For testing pur- - poses, 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. + 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 ini- + tialization. This was done (as in SVr4 curses) for + performance reasons. For testing purposes, both of + ncurses and certain applications, this feature was + made optional. Setting the NCURSES_NO_SETBUF vari- + able 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 out- + put. + + 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. + + NCURSES_NO_UTF8_ACS + During initialization, the ncurses library checks for + special cases where VT100 line-drawing (and the cor- + responding alternate character set capabilities) + described in the terminfo are known to be missing. + Specifically, when running in a UTF-8 locale, the + Linux console emulator and the GNU screen program + ignore these. Ncurses checks the 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 termi- + nal emulators. + + When setting this variable, you should set it to a + nonzero value. Setting it to zero (or to a nonnum- + ber) 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 com- + piled 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 per- + mit it to be used by applications that use ncurses' + termcap interface. 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 + During initialization, the ncurses debugging library + checks the NCURSES_TRACE environment variable. 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 + TERM Denotes your terminal type. Each terminal type is distinct, though many are similar. TERMCAP If the ncurses library has been configured with term- - cap support, ncurses will check for a terminal's + cap 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. + The TERMCAP environment variable contains either a + terminal 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 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. + 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 + o the last directory to which ncurses wrote, if + any, is searched first - - the directory specified by the TERMINFO symbol + o the directory specified by the TERMINFO environ- + ment variable - - $HOME/.terminfo + o $HOME/.terminfo - - directories listed in the TERMINFO_DIRS symbol + o directories listed in the TERMINFO_DIRS environ- + ment variable - - one or more directories whose names are configured - and compiled into the ncurses library, e.g., - /usr/share/terminfo + o one or more directories whose names are config- + ured 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 + TERMINFO variable) TERMINFO_DIRS - Specifies a list of directories to search for termi- - nal 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. + Specifies a list of directories to search for termi- + nal 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 subdirectories 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 corre- + sponding database file. + + If ncurses is built with a support for reading term- + cap files directly, then an entry in this list may be + the path of a termcap file. TERMPATH - If TERMCAP does not hold a file name then ncurses - checks the TERMPATH symbol. This is a list of file- - names 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 + 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. + 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-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 + 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)@@ -892,79 +1198,103 @@ 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 - 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 indepen- - dently, providing better control over color contrasts. + 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 + 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 the XSI Curses standard. The EXTENDED XSI - Curses functionality (including color support) is sup- - ported. + 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. - The routine has_key is not part of XPG4, nor is it present - in SVr4. See the curs_getch(3x) manual page for details. + 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. - The routine slk_attr is not part of XPG4, nor is it pre- - sent in SVr4. See the curs_slk(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. - The routines getmouse, mousemask, ungetmouse, mouseinter- - val, 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 WINDOW structure's internal details can be hidden + from application programs. See curs_opaque(3x) for + the discussion of is_scrollok, etc. - The routine mcprint was not present in any previous curses - implementation. See the curs_print(3x) manual page for - details. + o This implementation can be configured to provide rudi- + mentary support for multi-threaded applications. See + curs_threads(3x) for details. - The routine wresize is not part of XPG4, nor is it present - in SVr4. See the wresize(3x) manual page 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 NUL sends. This method is - slightly more expensive, but narrows the interface to the - UNIX kernel significantly and increases the package's - portability correspondingly. + 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.@@ -985,7 +1315,7 @@ - ncurses(3x) + ncurses(3x)