+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+ The following environment symbols are useful for customiz-
+ ing the runtime behavior of the <STRONG>ncurses</STRONG> library. The most
+ important ones have been already discussed in detail.
+
+ <STRONG>CC</STRONG>
+ When set, change occurrences of the command_character
+ (i.e., the <STRONG>cmdch</STRONG> 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, <STRONG>ncurses</STRONG> ignores it if
+ it does not happen to be a single character.
+
+
+</PRE><H3><a name="h3-BAUDRATE">BAUDRATE</a></H3><PRE>
+ 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, <STRONG>ncurses</STRONG> uses 9600. This allows testers to
+ construct repeatable test-cases that take into account
+ costs that depend on baudrate.
+
+
+</PRE><H3><a name="h3-COLUMNS">COLUMNS</a></H3><PRE>
+ 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 <STRONG>COLUMNS</STRONG> value nor the terminal's
+ screen size is available, <STRONG>ncurses</STRONG> uses the size which may
+ be specified in the terminfo database (i.e., the <STRONG>cols</STRONG>
+ 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
+ <STRONG>COLUMNS</STRONG> and/or <STRONG>LINES</STRONG> overrides the library's use of the
+ screen size obtained from the operating system.
+
+ Either <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> 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, <STRONG>lines</STRONG>
+ and <STRONG>cols</STRONG> should not be specified in a terminal description
+ for terminals which are run as emulations.
+
+ Use the <STRONG>use_env</STRONG> function to disable all use of external
+ environment (but not including system calls) to determine
+ the screen size. Use the <STRONG>use_tioctl</STRONG> function to update
+ <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen size obtained from
+ system calls or the terminal database.
+
+
+</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+ 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.
+
+
+</PRE><H3><a name="h3-HOME">HOME</a></H3><PRE>
+ Tells <STRONG>ncurses</STRONG> where your home directory is. That is where
+ it may read and write auxiliary terminal descriptions:
+
+ $HOME/.termcap
+ $HOME/.terminfo
+
+
+</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
+ Like COLUMNS, specify the height of the screen in charac-
+ ters. See COLUMNS for a detailed description.
+
+
+</PRE><H3><a name="h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></H3><PRE>
+ 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, <STRONG>ncurses</STRONG> uses 132.
+
+
+</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></H3><PRE>
+ Override the compiled-in assumption that the terminal's
+ default colors are white-on-black (see <STRONG>default_col-</STRONG>
+ <STRONG><A HREF="default_colors.3x.html">ors(3x)</A></STRONG>). 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 <STRONG>max_colors</STRONG>
+ value is allowed.
+
+
+</PRE><H3><a name="h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></H3><PRE>
+ This applies only to the MinGW port of ncurses.
+
+ The <STRONG>Console2</STRONG> program's handling of the Microsoft Console
+ API call <STRONG>CreateConsoleScreenBuffer</STRONG> 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 <STRONG>NCGDB</STRONG> has the
+ same effect.
+
+
+</PRE><H3><a name="h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></H3><PRE>
+ 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".
+
+
+</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></H3><PRE>
+ <STRONG>Ncurses</STRONG> 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 <STRONG>stty</STRONG> 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.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></H3><PRE>
+ 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 <EM>flash</EM>.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></H3><PRE>
+ This setting is obsolete. Before changes
+
+ <STRONG>o</STRONG> started with 5.9 patch 20120825 and
+
+ <STRONG>o</STRONG> continued though 5.9 patch 20130126
+
+ <STRONG>ncurses</STRONG> enabled buffered output during terminal initial-
+ ization. This was done (as in SVr4 curses) for perfor-
+ mance reasons. For testing purposes, both of <STRONG>ncurses</STRONG> 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 <STRONG>putp</STRONG> still use the standard output. But high-
+ level curses calls do not.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></H3><PRE>
+ During initialization, the <STRONG>ncurses</STRONG> 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 <STRONG>U8</STRONG>. This is a
+ numeric capability which can be compiled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>.
+ 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.
+
+
+</PRE><H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE>
+ During initialization, the <STRONG>ncurses</STRONG> debugging library
+ checks the NCURSES_TRACE environment variable. If it is
+ defined, to a numeric value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> func-
+ tion, using that value as the argument.
+
+ The argument values, which are defined in <STRONG>curses.h</STRONG>, pro-
+ vide several types of information. When running with
+ traces enabled, your application will write the file <STRONG>trace</STRONG>
+ to the current directory.
+
+ See <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> for more information.
+
+
+</PRE><H3><a name="h3-TERM">TERM</a></H3><PRE>
+ Denotes your terminal type. Each terminal type is dis-
+ tinct, though many are similar.
+
+ <STRONG>TERM</STRONG> 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 <STRONG>TERM</STRONG> 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 (<STRONG>xterm</STRONG> being a rare exception), terminal
+ emulators which allow you to specify <STRONG>TERM</STRONG> as a parameter
+ or configuration value do not change their behavior to
+ match that setting.