diff options
Diffstat (limited to 'doc/html/man/curs_inopts.3x.html')
-rw-r--r-- | doc/html/man/curs_inopts.3x.html | 407 |
1 files changed, 228 insertions, 179 deletions
diff --git a/doc/html/man/curs_inopts.3x.html b/doc/html/man/curs_inopts.3x.html index 533d6709f8c5..149b2b82be28 100644 --- a/doc/html/man/curs_inopts.3x.html +++ b/doc/html/man/curs_inopts.3x.html @@ -1,6 +1,7 @@ -<!-- +<!-- + * t **************************************************************************** - * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2018-2023,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -27,29 +28,30 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: curs_inopts.3x,v 1.33 2020/12/05 19:38:18 Benno.Schulenberg Exp @ + * @Id: curs_inopts.3x,v 1.66 2024/04/13 22:20:29 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</TITLE> +<TITLE>curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</TITLE> <link rel="author" href="mailto:bug-ncurses@gnu.org"> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + </HEAD> <BODY> -<H1 class="no-header">curs_inopts 3x</H1> +<H1 class="no-header">curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</H1> <PRE> -<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> +<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-NAME">NAME</a></H2><PRE> - <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, - <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>timeout</STRONG>, - <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input options + <STRONG>cbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>is_cbreak</STRONG>, <STRONG>is_echo</STRONG>, <STRONG>is_nl</STRONG>, <STRONG>is_raw</STRONG>, + <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>noecho</STRONG>, <STRONG>nonl</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>noraw</STRONG>, + <STRONG>notimeout</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>raw</STRONG>, <STRONG>timeout</STRONG>, <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - get and set + <EM>curses</EM> terminal input options </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> @@ -82,227 +84,272 @@ <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <EM>fd</EM><STRONG>);</STRONG> + <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM> + <STRONG>int</STRONG> <STRONG>is_cbreak(void);</STRONG> + <STRONG>int</STRONG> <STRONG>is_echo(void);</STRONG> + <STRONG>int</STRONG> <STRONG>is_nl(void);</STRONG> + <STRONG>int</STRONG> <STRONG>is_raw(void);</STRONG> + </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> - The <STRONG>ncurses</STRONG> 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. Win- - dow-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 charac- - ters 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. + <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. Initially the terminal may or may not be in <STRONG>cbreak</STRONG> mode, as the mode is - inherited; therefore, a program should call <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> explic- - itly. Most interactive programs using <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode. - Note that <STRONG>cbreak</STRONG> overrides <STRONG>raw</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion - of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.] + inherited; therefore, a program should call <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> + explicitly. Most interactive programs using <EM>curses</EM> set the <STRONG>cbreak</STRONG> + mode. Note that <STRONG>cbreak</STRONG> overrides <STRONG>raw</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a + 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> - 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 pre- - fer 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-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 + 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> - The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to - <STRONG>cbreak</STRONG> mode in that characters typed by the user are immediately avail- - able to the program. However, after blocking for <EM>tenths</EM> tenths of sec- - onds, <STRONG>ERR</STRONG> is returned if nothing has been typed. The value of <EM>tenths</EM> - must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave half-delay - mode. + The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to + <STRONG>cbreak</STRONG> mode in that characters typed by the user are immediately + available to the program. However, after blocking for <EM>tenths</EM> tenths of + seconds, <STRONG>ERR</STRONG> is returned if nothing has been typed. The value of + <EM>tenths</EM> must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave half- + delay mode. </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 - to the interrupt, but causing <STRONG>curses</STRONG> 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. + 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 + 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 terminal driver + settings. The <EM>win</EM> argument is ignored. </PRE><H3><a name="h3-keypad">keypad</a></H3><PRE> - The <STRONG>keypad</STRONG> option enables the keypad of the user's terminal. If en- - abled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a function key (such as an arrow - key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> returns a single value representing the function - key, as in <STRONG>KEY_LEFT</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>curses</STRONG> does not treat - function keys specially and the program has to interpret the escape se- - quences itself. If the keypad in the terminal can be turned on (made - to transmit) and off (made to work locally), turning on this option - causes the terminal keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is called. - The default value for keypad is <STRONG>FALSE</STRONG>. + The <STRONG>keypad</STRONG> option enables the keypad of the user's terminal. If + enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a function key (such as an + arrow key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> returns a single value representing the + function key, as in <STRONG>KEY_LEFT</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <EM>curses</EM> does + not treat function keys specially and the program has to interpret the + escape sequences itself. If the keypad in the terminal can be turned + on (made to transmit) and off (made to work locally), turning on this + option causes the terminal keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is + called. The default value for keypad is <STRONG>FALSE</STRONG>. </PRE><H3><a name="h3-meta">meta</a></H3><PRE> - Initially, whether the terminal returns 7 or 8 significant bits on in- - put 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 equiva- - lent, 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 termi- - nal 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 + Initially, whether the terminal returns 7 or 8 significant bits on + 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. </PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE> The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call. If no input - is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits + is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits until a key is pressed. </PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE> - 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. - - -</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 imme- - diately 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 <STRONG>curses</STRONG>. - - -</PRE><H3><a name="h3-qiflush_noqiflush">qiflush/noqiflush</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 - flushed when these control characters are read. You may want to call - <STRONG>noqiflush</STRONG> in a signal handler if you want output to continue as though + 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 + 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> + 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 + terminal driver that are not set by <EM>curses</EM>. + + +</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 + flushed when these control characters are read. You may want to call + <STRONG>noqiflush</STRONG> in a signal handler if you want output to continue as though 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> - if there is still no input. Hence, these routines provide the same - functionality as <STRONG>nodelay</STRONG>, plus the additional capability of being able + 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 <STRONG>curses</STRONG> library does "line-breakout optimization" by looking for ty- - peahead periodically while updating the screen. If input is found, and - it is coming from a tty, the current update is postponed until <STRONG>re-</STRONG> - <STRONG><A HREF="refresh.3x.html">fresh(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 - <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> is - -1, then no typeahead checking is done. + <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 <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> + is -1, then no typeahead checking is done. </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> - All routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> + All routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful - completion, unless otherwise noted in the preceding routine descrip- - tions. + completion, unless otherwise noted in the preceding routine + descriptions. + + X/Open Curses does not specify any error conditions. In this + implementation, functions with a window parameter will return an error + if it is null. Any function will also return an error if the terminal + was not initialized. Also, + + <STRONG>halfdelay</STRONG> + returns an error if its parameter is outside the range 1..255. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + <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. + + <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. + - X/Open does not define any error conditions. In this implementation, - functions with a window parameter will return an error if it is null. - Any function will also return an error if the terminal was not initial- - ized. Also, +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + <EM>ncurses</EM> provides four "is_" functions that may be used to detect if the + corresponding flags were set or reset. - <STRONG>halfdelay</STRONG> - returns an error if its parameter is outside the range - 1..255. + <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, + + 0 if the flag is reset, or + + -1 if the library is not initialized. + + 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> - These functions are described in the XSI Curses standard, Issue 4. - - The ncurses library obeys the XPG4 standard and the historical practice - of the AT&T curses implementations, in that the echo bit is cleared - when curses initializes the terminal state. BSD curses 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 pro- - gram 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 - curses did turn off these translations; AT&T curses (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, ncurses loads the key-definitions for the - current terminal description. If the terminal description includes ex- - tended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>, then - ncurses also defines keys for the capabilities whose names begin with - "k". The corresponding keycodes are generated and (depending on previ- - ous loads of terminal descriptions) may differ from one execution of a - program to the next. The generated keycodes are recognized by the <STRONG>key-</STRONG> - <STRONG>name</STRONG> function (which will then return a name beginning with "k" denot- - ing the terminfo capability name rather than "K", used for curses key- - names). On the other hand, an application can use <STRONG>define_key</STRONG> to estab- - lish 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. + 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><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 - curses <STRONG>wgetch</STRONG> and similar functions to return keycodes rely upon 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. - Most curses implementations (including ncurses) load key definitions in + 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 - ncurses, you may also have extended capabilities interpreted as key - definitions. These are loaded after the predefined keys, and if a ca- - pability's value is the same as a previously-loaded key definition, the - later definition is the one used. + <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-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. - - 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 - recommended. +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + Formerly, <EM>ncurses</EM> used <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> to control the conversion of + newlines to carriage return/line feed on output as well as input. + X/Open Curses documents the use of these functions only for input. + This difference arose from converting the <EM>pcurses</EM> source (1986), which + used <STRONG>ioctl(2)</STRONG> calls and the <EM>sgttyb</EM> structure, to <EM>termios</EM> (the POSIX + terminal API). In the former, both input and output were controlled + via a single option <STRONG>CRMOD</STRONG>, while the latter separates these features. + Because that conversion interferes with output optimization, <EM>ncurses</EM> + 6.2 (2020) amended <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> to eliminate their effect on output. </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>de-</STRONG> - <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>, <STRONG>termios(3)</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> - <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> +ncurses 6.5 2024-04-13 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> </PRE> <div class="nav"> <ul> @@ -310,24 +357,26 @@ <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> <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> -<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> <li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> </ul> </div> |