* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_inopts.3x,v 1.59 2023/12/16 20:32:22 tom Exp @
+ * @Id: curs_inopts.3x,v 1.60 2023/12/23 16:36:18 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_inopts 3x 2023-12-16 ncurses 6.4 Library calls</TITLE>
+<TITLE>curs_inopts 3x 2023-12-23 ncurses 6.4 Library calls</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
</HEAD>
<BODY>
-<H1 class="no-header">curs_inopts 3x 2023-12-16 ncurses 6.4 Library calls</H1>
+<H1 class="no-header">curs_inopts 3x 2023-12-23 ncurses 6.4 Library calls</H1>
<PRE>
<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
- The <EM>ncurses</EM> library provides several functions which let an application
- change the way input from the terminal is handled. Some are global,
- applying to all windows. Others apply only to a specific window.
- Window-specific settings are not automatically applied to new or
- derived windows. An application must apply these to each window, if
- the same behavior is needed.
-
-
-</PRE><H3><a name="h3-cbreak_nocbreak">cbreak/nocbreak</a></H3><PRE>
- Normally, the tty driver buffers typed characters until a newline or
- carriage return is typed. The <STRONG>cbreak</STRONG> routine disables line buffering
- and erase/kill character-processing (interrupt and flow control
- characters are unaffected), making characters typed by the user
+ <EM>ncurses</EM> provides several functions that let an application change the
+ way input from the terminal is handled. Some are global, applying to
+ all windows. Others apply only to a specific window. Window-specific
+ settings are not automatically applied to new or derived windows. An
+ application must apply these to each window if the same behavior is
+ desired.
+
+
+</PRE><H3><a name="h3-cbreak_nocbreak">cbreak, nocbreak</a></H3><PRE>
+ Normally, the terminal driver buffers typed characters until a newline
+ or carriage return is typed. The <STRONG>cbreak</STRONG> routine disables line
+ buffering and erase/kill character-processing (interrupt and flow
+ control characters are unaffected), making characters typed by the user
immediately available to the program. The <STRONG>nocbreak</STRONG> routine returns the
terminal to normal (cooked) mode.
discussion of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
-</PRE><H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE>
+</PRE><H3><a name="h3-echo_noecho">echo, noecho</a></H3><PRE>
The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters typed by the
- user are echoed by <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG> as they are typed. Echoing by the tty
- driver is always disabled, but initially <STRONG>getch</STRONG> is in echo mode, so
- characters typed are echoed. Authors of most interactive programs
- prefer to do their own echoing in a controlled area of the screen, or
- not to echo at all, so they disable echoing by calling <STRONG>noecho</STRONG>. [See
- <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how these routines interact with
- <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
+ user are echoed by <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG> as they are typed. Echoing by the
+ terminal driver is always disabled, but initially <STRONG>getch</STRONG> is in echo
+ mode, so characters typed are echoed. Authors of most interactive
+ programs prefer to do their own echoing in a controlled area of the
+ screen, or not to echo at all, so they disable echoing by calling
+ <STRONG>noecho</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how these routines
+ interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
If the <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and an interrupt key
is pressed on the keyboard (interrupt, break, quit), all output in the
- tty driver queue will be flushed, giving the effect of faster response
+ terminal driver queue is flushed, giving the effect of faster response
to the interrupt, but causing <EM>curses</EM> to have the wrong idea of what is
- on the screen. Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>) prevents the flush.
- The default for the option is inherited from the tty driver settings.
- The window argument is ignored.
+ on the screen. Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>), prevents the flush.
+ The default for the option is inherited from the terminal driver
+ settings. The <EM>win</EM> argument is ignored.
</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
</PRE><H3><a name="h3-meta">meta</a></H3><PRE>
Initially, whether the terminal returns 7 or 8 significant bits on
- input depends on the control mode of the tty driver [see <STRONG>termios(3)</STRONG>].
- To force 8 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is
- equivalent, under POSIX, to setting the CS8 flag on the terminal. To
- force 7 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this is
- equivalent, under POSIX, to setting the CS7 flag on the terminal. The
- window argument, <EM>win</EM>, is always ignored. If the terminfo capabilities
- <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are defined for the terminal, <STRONG>smm</STRONG> is
- sent to the terminal when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>) is called and <STRONG>rmm</STRONG> is sent
- when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>) is called.
-
-
-</PRE><H3><a name="h3-nl_nonl">nl/nonl</a></H3><PRE>
+ input depends on the control mode of the terminal driver [see
+ <STRONG>termios(3)</STRONG>]. To force 8 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>);
+ this is equivalent, under POSIX, to setting the CS8 flag on the
+ terminal. To force 7 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>);
+ this is equivalent, under POSIX, to setting the CS7 flag on the
+ terminal. The window argument, <EM>win,</EM> is always ignored. If the
+ terminfo capabilities <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are defined for
+ the terminal, <STRONG>smm</STRONG> is sent to the terminal when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>) is
+ called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>) is called.
+
+
+</PRE><H3><a name="h3-nl_nonl">nl, nonl</a></H3><PRE>
The <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control whether the underlying display device
translates the return key into newline on input.
When interpreting an escape sequence, <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> sets a timer while
waiting for the next character. If <STRONG>notimeout(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called,
then <STRONG>wgetch</STRONG> does not set a timer. The purpose of the timeout is to
- differentiate between sequences received from a function key and those
- typed by a user.
+ distinguish sequences produced by a function key from those typed by a
+ user.
-</PRE><H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE>
+</PRE><H3><a name="h3-raw_noraw">raw, noraw</a></H3><PRE>
The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw mode.
Raw mode is similar to <STRONG>cbreak</STRONG> mode, in that characters typed are
immediately passed through to the user program. The differences are
that in raw mode, the interrupt, quit, suspend, and flow control
characters are all passed through uninterpreted, instead of generating
a signal. The behavior of the BREAK key depends on other bits in the
- tty driver that are not set by <EM>curses</EM>.
+ terminal driver that are not set by <EM>curses.</EM>
-</PRE><H3><a name="h3-qiflush_noqiflush">qiflush/noqiflush</a></H3><PRE>
+</PRE><H3><a name="h3-qiflush_nqiflush">qiflush, nqiflush</a></H3><PRE>
When the <STRONG>noqiflush</STRONG> routine is used, normal flush of input and output
queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG> characters will not be
done [see <STRONG>termios(3)</STRONG>]. When <STRONG>qiflush</STRONG> is called, the queues will be
the interrupt had not occurred, after the handler exits.
-</PRE><H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE>
+</PRE><H3><a name="h3-timeout_wtimeout">timeout, wtimeout</a></H3><PRE>
The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines set blocking or non-blocking read for
- a given window. If <EM>delay</EM> is negative, blocking read is used (i.e.,
- waits indefinitely for input). If <EM>delay</EM> is zero, then non-blocking
- read is used (i.e., read returns <STRONG>ERR</STRONG> if no input is waiting). If <EM>delay</EM>
- is positive, then read blocks for <EM>delay</EM> milliseconds, and returns <STRONG>ERR</STRONG>
+ a given window. If <EM>delay</EM> is negative, a blocking read is used (i.e.,
+ waits indefinitely for input). If <EM>delay</EM> is zero, then a non-blocking
+ read is used (i.e., <EM>read</EM> returns <STRONG>ERR</STRONG> if no input is waiting). If <EM>delay</EM>
+ is positive, then <EM>read</EM> blocks for <EM>delay</EM> milliseconds, and returns <STRONG>ERR</STRONG>
if there is still no input. Hence, these routines provide the same
functionality as <STRONG>nodelay</STRONG>, plus the additional capability of being able
to block for only <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive).
</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
- The <EM>curses</EM> library does "line-breakout optimization" by looking for
- typeahead periodically while updating the screen. If input is found,
- and it is coming from a tty, the current update is postponed until
+ <EM>curses</EM> does "line-breakout optimization" by looking for typeahead
+ periodically while updating the screen. If input is found, and it is
+ coming from a terminal, the current update is postponed until
<STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> or <STRONG>doupdate</STRONG> is called again. This allows faster response
- to commands typed in advance. Normally, the input FILE pointer passed
+ to commands typed in advance. Normally, the input <EM>FILE</EM> pointer passed
to <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used, will be used to
do this typeahead checking. The <STRONG>typeahead</STRONG> routine specifies that the
file descriptor <EM>fd</EM> is to be used to check for typeahead instead. If <EM>fd</EM>
</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
- Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>,
- <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be macros.
+ <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>,
+ <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be implemented as macros.
- The <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> calls follow historical practice in that they
- attempt to restore to normal ("cooked") mode from raw and cbreak modes
- respectively. Mixing raw/noraw and cbreak/nocbreak calls leads to tty
- driver control states that are hard to predict or understand; it is not
+ <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> follow historical practice in that they attempt to
+ restore normal ("cooked") mode from raw and cbreak modes respectively.
+ Mixing <STRONG>raw</STRONG>/<STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG>/<STRONG>nocbreak</STRONG> calls leads to terminal driver
+ control states that are hard to predict or understand; doing so is not
recommended.
</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
- This implementation provides four functions which may be used to detect
- if the corresponding flags were set or reset:
+ <EM>ncurses</EM> provides four "is_" functions that may be used to detect if the
+ corresponding flags were set or reset.
- <STRONG>Query</STRONG> <STRONG>Set</STRONG> <STRONG>Reset</STRONG>
- ------------------------------
- is_cbreak cbreak nocbreak
- is_echo echo noecho
- is_nl nl nonl
- is_raw raw noraw
+ <STRONG>Query</STRONG> <STRONG>Set</STRONG> <STRONG>Reset</STRONG>
+ ------------------------------
+ is_cbreak cbreak nocbreak
+ is_echo echo noecho
+ is_nl nl nonl
+ is_raw raw noraw
In each case, the function returns
- 1 if the flag is set,
+ 1 if the flag is set,
- 0 if the flag is reset, or
+ 0 if the flag is reset, or
- -1 if the <EM>curses</EM> library was not initialized.
+ -1 if the library is not initialized.
- These routines are specific to <EM>ncurses</EM>. They were not supported on
- Version 7, BSD or System V implementations. It is recommended that any
- code depending on <EM>ncurses</EM> extensions be conditioned using
- NCURSES_VERSION.
+ They were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not found in SVr4 <EM>curses</EM>,
+ 4.4BSD <EM>curses</EM>, or any other previous <EM>curses</EM> implementation.
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- Except as noted in the section on extensions, these functions are
- described in the XSI Curses standard, Issue 4.
-
- The <EM>ncurses</EM> library obeys the XPG4 standard and the historical practice
- of the AT&T <EM>curses</EM> implementations, in that the echo bit is cleared
- when <EM>curses</EM> initializes the terminal state. BSD <EM>curses</EM> differed from
- this slightly; it left the echo bit on at initialization, but the BSD
- <STRONG>raw</STRONG> call turned it off as a side-effect. For best portability, set
- <STRONG>echo</STRONG> or <STRONG>noecho</STRONG> explicitly just after initialization, even if your
- program remains in cooked mode.
-
- The XSI Curses standard is ambiguous on the question of whether <STRONG>raw</STRONG>
- should disable the CRLF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>. BSD
- <EM>curses</EM> did turn off these translations; AT&T <EM>curses</EM> (at least as late
- as SVr1) did not. We chose to do so, on the theory that a programmer
- requesting raw input wants a clean (ideally 8-bit clean) connection
- that the operating system will not alter.
-
- When <STRONG>keypad</STRONG> is first enabled, <EM>ncurses</EM> loads the key-definitions for the
- current terminal description. If the terminal description includes
- extended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>,
- then <EM>ncurses</EM> also defines keys for the capabilities whose names begin
- with "k". The corresponding keycodes are generated and (depending on
- previous loads of terminal descriptions) may differ from one execution
+ Applications employing <EM>ncurses</EM> extensions should condition their use on
+ the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+ Except as noted in section "EXTENSIONS" above, X/Open Curses, Issue 4,
+ Version 2 describes these functions.
+
+ <EM>ncurses</EM> follows X/Open Curses and the historical practice of AT&T
+ <EM>curses</EM> implementations, in that the echo bit is cleared when <EM>curses</EM>
+ initializes the terminal state. BSD <EM>curses</EM> differed from this
+ slightly; it left the echo bit on at initialization, but the BSD <STRONG>raw</STRONG>
+ call turned it off as a side effect. For best portability, set <STRONG>echo</STRONG> or
+ <STRONG>noecho</STRONG> explicitly just after initialization, even if your program
+ remains in cooked mode.
+
+ X/Open Curses is ambiguous regarding whether <STRONG>raw</STRONG> should disable the
+ CR/LF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>. BSD <EM>curses</EM> did turn off
+ these translations; AT&T <EM>curses</EM> (at least as late as SVr1) did not.
+ <EM>ncurses</EM> does so, on the assumption that a programmer requesting raw
+ input wants a clean (ideally, 8-bit clean) connection that the
+ operating system will not alter.
+
+ When <STRONG>keypad</STRONG> is first enabled, <EM>ncurses</EM> loads the key definitions for the
+ current terminal description. If the terminal description includes
+ extended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>,
+ then <EM>ncurses</EM> also defines keys for the capabilities whose names begin
+ with "k". The corresponding keycodes are generated and (depending on
+ previous loads of terminal descriptions) may differ from one execution
of a program to the next. The generated keycodes are recognized by the
- <STRONG>keyname</STRONG> function (which will then return a name beginning with "k"
- denoting the terminfo capability name rather than "K", used for <EM>curses</EM>
- key-names). On the other hand, an application can use <STRONG>define_key</STRONG> to
- establish a specific keycode for a given string. This makes it
- possible for an application to check for an extended capability's
- presence with <STRONG>tigetstr</STRONG>, and reassign the keycode to match its own
+ <STRONG><A HREF="curs_util.3x.html">keyname(3x)</A></STRONG> function (which will then return a name beginning with "k"
+ denoting the terminfo capability name rather than "K", used for <EM>curses</EM>
+ key names). On the other hand, an application can use <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+ to establish a specific keycode for a given string. This makes it
+ possible for an application to check for an extended capability's
+ presence with <STRONG>tigetstr</STRONG>, and reassign the keycode to match its own
needs.
Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the definition of any
- particular string capability. Higher-level applications which use the
- <EM>curses</EM> <STRONG>wgetch</STRONG> and similar functions to return keycodes rely upon the
+ particular string capability. Higher-level applications which use the
+ <EM>curses</EM> <STRONG>wgetch</STRONG> and similar functions to return keycodes rely upon the
order in which the strings are loaded. If more than one key definition
- has the same string value, then <STRONG>wgetch</STRONG> can return only one keycode.
+ has the same string value, then <STRONG>wgetch</STRONG> can return only one keycode.
Most <EM>curses</EM> implementations (including <EM>ncurses</EM>) load key definitions in
- the order defined by the array of string capability names. The last
- key to be loaded determines the keycode which will be returned. In
- <EM>ncurses</EM>, you may also have extended capabilities interpreted as key
- definitions. These are loaded after the predefined keys, and if a
- capability's value is the same as a previously-loaded key definition,
+ the order defined by the array of string capability names. The last
+ key to be loaded determines the keycode which will be returned. In
+ <EM>ncurses,</EM> you may also have extended capabilities interpreted as key
+ definitions. These are loaded after the predefined keys, and if a
+ capability's value is the same as a previously-loaded key definition,
the later definition is the one used.
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
+ <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
-ncurses 6.4 2023-12-16 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+ncurses 6.4 2023-12-23 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
</PRE>
<div class="nav">
<ul>
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
-<li><a href="#h3-cbreak_nocbreak">cbreak/nocbreak</a></li>
-<li><a href="#h3-echo_noecho">echo/noecho</a></li>
+<li><a href="#h3-cbreak_nocbreak">cbreak, nocbreak</a></li>
+<li><a href="#h3-echo_noecho">echo, noecho</a></li>
<li><a href="#h3-halfdelay">halfdelay</a></li>
<li><a href="#h3-intrflush">intrflush</a></li>
<li><a href="#h3-keypad">keypad</a></li>
<li><a href="#h3-meta">meta</a></li>
-<li><a href="#h3-nl_nonl">nl/nonl</a></li>
+<li><a href="#h3-nl_nonl">nl, nonl</a></li>
<li><a href="#h3-nodelay">nodelay</a></li>
<li><a href="#h3-notimeout">notimeout</a></li>
-<li><a href="#h3-raw_noraw">raw/noraw</a></li>
-<li><a href="#h3-qiflush_noqiflush">qiflush/noqiflush</a></li>
-<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li>
+<li><a href="#h3-raw_noraw">raw, noraw</a></li>
+<li><a href="#h3-qiflush_nqiflush">qiflush, nqiflush</a></li>
+<li><a href="#h3-timeout_wtimeout">timeout, wtimeout</a></li>
<li><a href="#h3-typeahead">typeahead</a></li>
</ul>
</li>