• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2  * t
3  ****************************************************************************
4  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
5  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
6  *                                                                          *
7  * Permission is hereby granted, free of charge, to any person obtaining a  *
8  * copy of this software and associated documentation files (the            *
9  * "Software"), to deal in the Software without restriction, including      *
10  * without limitation the rights to use, copy, modify, merge, publish,      *
11  * distribute, distribute with modifications, sublicense, and/or sell       *
12  * copies of the Software, and to permit persons to whom the Software is    *
13  * furnished to do so, subject to the following conditions:                 *
14  *                                                                          *
15  * The above copyright notice and this permission notice shall be included  *
16  * in all copies or substantial portions of the Software.                   *
17  *                                                                          *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
19  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
21  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
22  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
23  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
24  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
25  *                                                                          *
26  * Except as contained in this notice, the name(s) of the above copyright   *
27  * holders shall not be used in advertising or otherwise to promote the     *
28  * sale, use or other dealings in this Software without prior written       *
29  * authorization.                                                           *
30  ****************************************************************************
31  * @Id: curs_inopts.3x,v 1.66 2024/04/13 22:20:29 tom Exp @
32-->
33<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
34<HTML>
35<HEAD>
36<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
37<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
38<TITLE>curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</TITLE>
39<link rel="author" href="mailto:bug-ncurses@gnu.org">
40
41</HEAD>
42<BODY>
43<H1 class="no-header">curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</H1>
44<PRE>
45<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>
46
47
48
49
50</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
51       <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>,
52       <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>,
53       <STRONG>notimeout</STRONG>,  <STRONG>qiflush</STRONG>,  <STRONG>raw</STRONG>,  <STRONG>timeout</STRONG>,  <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - get and set
54       <EM>curses</EM> terminal input options
55
56
57</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
58       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
59
60       <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
61       <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG>
62
63       <STRONG>int</STRONG> <STRONG>echo(void);</STRONG>
64       <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG>
65
66       <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
67       <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
68       <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
69       <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
70       <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
71
72       <STRONG>int</STRONG> <STRONG>nl(void);</STRONG>
73       <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG>
74
75       <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
76       <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
77
78       <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
79       <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
80
81       <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <EM>tenths</EM><STRONG>);</STRONG>
82       <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <EM>delay</EM><STRONG>);</STRONG>
83       <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>delay</EM><STRONG>);</STRONG>
84
85       <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <EM>fd</EM><STRONG>);</STRONG>
86
87       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
88       <STRONG>int</STRONG> <STRONG>is_cbreak(void);</STRONG>
89       <STRONG>int</STRONG> <STRONG>is_echo(void);</STRONG>
90       <STRONG>int</STRONG> <STRONG>is_nl(void);</STRONG>
91       <STRONG>int</STRONG> <STRONG>is_raw(void);</STRONG>
92
93
94</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
95       <EM>ncurses</EM> provides several functions that let an application  change  the
96       way  input  from the terminal is handled.  Some are global, applying to
97       all windows.  Others apply only to a specific window.   Window-specific
98       settings  are  not automatically applied to new or derived windows.  An
99       application must apply these to each window if  the  same  behavior  is
100       desired.
101
102
103</PRE><H3><a name="h3-cbreak_nocbreak">cbreak, nocbreak</a></H3><PRE>
104       Normally,  the terminal driver buffers typed characters until a newline
105       or  carriage  return  is  typed.   The  <STRONG>cbreak</STRONG>  routine  disables  line
106       buffering  and  erase/kill  character-processing  (interrupt  and  flow
107       control characters are unaffected), making characters typed by the user
108       immediately available to the program.  The <STRONG>nocbreak</STRONG> routine returns the
109       terminal to normal (cooked) mode.
110
111       Initially the terminal may or may not be in <STRONG>cbreak</STRONG> mode, as the mode is
112       inherited;   therefore,  a  program  should  call  <STRONG>cbreak</STRONG>  or  <STRONG>nocbreak</STRONG>
113       explicitly.  Most interactive programs  using  <EM>curses</EM>  set  the  <STRONG>cbreak</STRONG>
114       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
115       discussion of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
116
117
118</PRE><H3><a name="h3-echo_noecho">echo, noecho</a></H3><PRE>
119       The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters  typed  by  the
120       user  are  echoed  by  <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>  as  they  are  typed.  Echoing by the
121       terminal driver is always disabled, but  initially  <STRONG>getch</STRONG>  is  in  echo
122       mode,  so  characters  typed  are  echoed.  Authors of most interactive
123       programs prefer to do their own echoing in a  controlled  area  of  the
124       screen,  or  not  to  echo  at  all, so they disable echoing by calling
125       <STRONG>noecho</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion  of  how  these  routines
126       interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
127
128
129</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
130       The  <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to
131       <STRONG>cbreak</STRONG> mode in that  characters  typed  by  the  user  are  immediately
132       available to the program.  However, after blocking for <EM>tenths</EM> tenths of
133       seconds, <STRONG>ERR</STRONG> is returned if nothing  has  been  typed.   The  value  of
134       <EM>tenths</EM> must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave half-
135       delay mode.
136
137
138</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
139       If the <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and an  interrupt  key
140       is  pressed on the keyboard (interrupt, break, quit), all output in the
141       terminal driver queue is flushed, giving the effect of faster  response
142       to  the interrupt, but causing <EM>curses</EM> to have the wrong idea of what is
143       on the screen.  Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>), prevents the flush.
144       The  default  for  the  option  is  inherited  from the terminal driver
145       settings.  The <EM>win</EM> argument is ignored.
146
147
148</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
149       The <STRONG>keypad</STRONG> option enables  the  keypad  of  the  user's  terminal.   If
150       enabled  (<EM>bf</EM>  is  <STRONG>TRUE</STRONG>),  the user can press a function key (such as an
151       arrow key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  returns  a  single  value  representing  the
152       function  key,  as in <STRONG>KEY_LEFT</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <EM>curses</EM> does
153       not treat function keys specially and the program has to interpret  the
154       escape  sequences  itself.  If the keypad in the terminal can be turned
155       on (made to transmit) and off (made to work locally), turning  on  this
156       option  causes  the  terminal keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is
157       called.  The default value for keypad is <STRONG>FALSE</STRONG>.
158
159
160</PRE><H3><a name="h3-meta">meta</a></H3><PRE>
161       Initially, whether the terminal returns 7  or  8  significant  bits  on
162       input  depends  on  the  control  mode  of  the  terminal  driver  [see
163       <STRONG>termios(3)</STRONG>].  To force 8 bits to be returned, invoke  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>);
164       this  is  equivalent,  under  POSIX,  to  setting  the  CS8 flag on the
165       terminal.  To force 7 bits to be  returned,  invoke  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>FALSE</STRONG>);
166       this  is  equivalent,  under  POSIX,  to  setting  the  CS7 flag on the
167       terminal.  The  window  argument,  <EM>win</EM>,  is  always  ignored.   If  the
168       terminfo  capabilities <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are defined for
169       the terminal, <STRONG>smm</STRONG> is sent to  the  terminal  when  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>)  is
170       called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>) is called.
171
172
173</PRE><H3><a name="h3-nl_nonl">nl, nonl</a></H3><PRE>
174       The  <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control whether the underlying display device
175       translates the return key into newline on input.
176
177
178</PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE>
179       The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call.  If no input
180       is  ready,  <STRONG>getch</STRONG>  returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits
181       until a key is pressed.
182
183
184</PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE>
185       When interpreting an escape sequence, <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  sets  a  timer  while
186       waiting  for  the  next  character.  If <STRONG>notimeout(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called,
187       then <STRONG>wgetch</STRONG> does not set a timer.  The purpose of  the  timeout  is  to
188       distinguish  sequences produced by a function key from those typed by a
189       user.
190
191
192</PRE><H3><a name="h3-raw_noraw">raw, noraw</a></H3><PRE>
193       The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw  mode.
194       Raw  mode  is  similar  to  <STRONG>cbreak</STRONG>  mode,  in that characters typed are
195       immediately passed through to the user program.   The  differences  are
196       that  in  raw  mode,  the  interrupt,  quit,  suspend, and flow control
197       characters are all passed through uninterpreted, instead of  generating
198       a  signal.   The behavior of the BREAK key depends on other bits in the
199       terminal driver that are not set by <EM>curses</EM>.
200
201
202</PRE><H3><a name="h3-qiflush_nqiflush">qiflush, nqiflush</a></H3><PRE>
203       When the <STRONG>noqiflush</STRONG> routine is used, normal flush of  input  and  output
204       queues  associated  with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG> characters will not be
205       done [see <STRONG>termios(3)</STRONG>].  When <STRONG>qiflush</STRONG> is  called,  the  queues  will  be
206       flushed  when  these control characters are read.  You may want to call
207       <STRONG>noqiflush</STRONG> in a signal handler if you want output to continue as  though
208       the interrupt had not occurred, after the handler exits.
209
210
211</PRE><H3><a name="h3-timeout_wtimeout">timeout, wtimeout</a></H3><PRE>
212       The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines set blocking or non-blocking read for
213       a given window.  If <EM>delay</EM> is negative, a blocking read is  used  (i.e.,
214       waits  indefinitely  for input).  If <EM>delay</EM> is zero, then a non-blocking
215       read is used (i.e., <EM>read</EM> returns <STRONG>ERR</STRONG> if no input is waiting).  If <EM>delay</EM>
216       is  positive,  then <EM>read</EM> blocks for <EM>delay</EM> milliseconds, and returns <STRONG>ERR</STRONG>
217       if there is still no input.  Hence, these  routines  provide  the  same
218       functionality  as <STRONG>nodelay</STRONG>, plus the additional capability of being able
219       to block for only <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive).
220
221
222</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
223       <EM>curses</EM> does  "line-breakout  optimization"  by  looking  for  typeahead
224       periodically  while  updating the screen.  If input is found, and it is
225       coming  from  a  terminal,  the  current  update  is  postponed   until
226       <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  or  <STRONG>doupdate</STRONG> is called again.  This allows faster response
227       to commands typed in advance.  Normally, the input <EM>FILE</EM> pointer  passed
228       to <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used, will be used to
229       do this typeahead checking.  The <STRONG>typeahead</STRONG> routine specifies  that  the
230       file descriptor <EM>fd</EM> is to be used to check for typeahead instead.  If <EM>fd</EM>
231       is -1, then no typeahead checking is done.
232
233
234</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
235       All routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure  and  <STRONG>OK</STRONG>
236       (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful
237       completion,  unless  otherwise   noted   in   the   preceding   routine
238       descriptions.
239
240       X/Open   Curses  does  not  specify  any  error  conditions.   In  this
241       implementation, functions with a window parameter will return an  error
242       if  it is null.  Any function will also return an error if the terminal
243       was not initialized.  Also,
244
245          <STRONG>halfdelay</STRONG>
246               returns an error if its parameter is outside the range 1..255.
247
248
249</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
250       <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>,
251       <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be implemented as macros.
252
253       <STRONG>noraw</STRONG>  and  <STRONG>nocbreak</STRONG> follow historical practice in that they attempt to
254       restore normal ("cooked") mode from raw and cbreak modes  respectively.
255       Mixing  <STRONG>raw</STRONG>/<STRONG>noraw</STRONG>  and  <STRONG>cbreak</STRONG>/<STRONG>nocbreak</STRONG>  calls leads to terminal driver
256       control states that are hard to predict or understand; doing so is  not
257       recommended.
258
259
260</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
261       <EM>ncurses</EM> provides four "is_" functions that may be used to detect if the
262       corresponding flags were set or reset.
263
264                            <STRONG>Query</STRONG>       <STRONG>Set</STRONG>      <STRONG>Reset</STRONG>
265                            ------------------------------
266                            is_cbreak   cbreak   nocbreak
267                            is_echo     echo     noecho
268                            is_nl       nl       nonl
269                            is_raw      raw      noraw
270
271       In each case, the function returns
272
273       1   if the flag is set,
274
275       0   if the flag is reset, or
276
277       -1  if the library is not initialized.
278
279       They were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not found in  SVr4  <EM>curses</EM>,
280       4.4BSD <EM>curses</EM>, or any other previous <EM>curses</EM> implementation.
281
282
283</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
284       Applications employing <EM>ncurses</EM> extensions should condition their use on
285       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
286
287       Except as noted in section "EXTENSIONS" above, X/Open Curses, Issue  4,
288       Version 2 describes these functions.
289
290       <EM>ncurses</EM>  follows  X/Open  Curses  and  the  historical practice of AT&amp;T
291       <EM>curses</EM> implementations, in that the echo bit  is  cleared  when  <EM>curses</EM>
292       initializes   the  terminal  state.   BSD  <EM>curses</EM>  differed  from  this
293       slightly; it left the echo bit on at initialization, but  the  BSD  <STRONG>raw</STRONG>
294       call turned it off as a side effect.  For best portability, set <STRONG>echo</STRONG> or
295       <STRONG>noecho</STRONG> explicitly just  after  initialization,  even  if  your  program
296       remains in cooked mode.
297
298       X/Open  Curses  is  ambiguous  regarding whether <STRONG>raw</STRONG> should disable the
299       CR/LF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>.  BSD <EM>curses</EM> did turn  off
300       these  translations;  AT&amp;T  <EM>curses</EM>  (at least as late as SVr1) did not.
301       <EM>ncurses</EM> does so, on the assumption that  a  programmer  requesting  raw
302       input  wants  a  clean  (ideally,  8-bit  clean)  connection  that  the
303       operating system will not alter.
304
305       When <STRONG>keypad</STRONG> is first enabled, <EM>ncurses</EM> loads the key definitions for the
306       current  terminal  description.   If  the terminal description includes
307       extended string capabilities, e.g., from using the <STRONG>-x</STRONG>  option  of  <STRONG>tic</STRONG>,
308       then  <EM>ncurses</EM>  also defines keys for the capabilities whose names begin
309       with "k".  The corresponding keycodes are generated and  (depending  on
310       previous  loads of terminal descriptions) may differ from one execution
311       of a program to the next.  The generated keycodes are recognized by the
312       <STRONG><A HREF="curs_util.3x.html">keyname(3x)</A></STRONG>  function (which will then return a name beginning with "k"
313       denoting the terminfo capability name rather than "K", used for  <EM>curses</EM>
314       key  names).   On the other hand, an application can use <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
315       to establish a specific keycode for a  given  string.   This  makes  it
316       possible  for  an  application  to  check  for an extended capability's
317       presence with <STRONG>tigetstr</STRONG>, and reassign  the  keycode  to  match  its  own
318       needs.
319
320       Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the definition of any
321       particular string capability.  Higher-level applications which use  the
322       <EM>curses</EM>  <STRONG>wgetch</STRONG>  and  similar functions to return keycodes rely upon the
323       order in which the strings are loaded.  If more than one key definition
324       has  the  same  string  value, then <STRONG>wgetch</STRONG> can return only one keycode.
325       Most <EM>curses</EM> implementations (including <EM>ncurses</EM>) load key definitions in
326       the  order  defined  by the array of string capability names.  The last
327       key to be loaded determines the keycode which  will  be  returned.   In
328       <EM>ncurses</EM>,  you  may  also  have extended capabilities interpreted as key
329       definitions.  These are loaded after the  predefined  keys,  and  if  a
330       capability's  value  is the same as a previously-loaded key definition,
331       the later definition is the one used.
332
333
334</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
335       Formerly, <EM>ncurses</EM> used  <STRONG>nl</STRONG>  and  <STRONG>nonl</STRONG>  to  control  the  conversion  of
336       newlines  to  carriage  return/line  feed  on  output as well as input.
337       X/Open Curses documents the use of  these  functions  only  for  input.
338       This  difference arose from converting the <EM>pcurses</EM> source (1986), which
339       used <STRONG>ioctl(2)</STRONG> calls and the <EM>sgttyb</EM> structure,  to  <EM>termios</EM>  (the  POSIX
340       terminal  API).   In  the former, both input and output were controlled
341       via a single option <STRONG>CRMOD</STRONG>, while the latter separates  these  features.
342       Because  that  conversion  interferes with output optimization, <EM>ncurses</EM>
343       6.2 (2020) amended <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> to eliminate their effect on output.
344
345
346</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
347       <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>,
348       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
349
350
351
352ncurses 6.5                       2024-04-13                   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
353</PRE>
354<div class="nav">
355<ul>
356<li><a href="#h2-NAME">NAME</a></li>
357<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
358<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
359<ul>
360<li><a href="#h3-cbreak_nocbreak">cbreak, nocbreak</a></li>
361<li><a href="#h3-echo_noecho">echo, noecho</a></li>
362<li><a href="#h3-halfdelay">halfdelay</a></li>
363<li><a href="#h3-intrflush">intrflush</a></li>
364<li><a href="#h3-keypad">keypad</a></li>
365<li><a href="#h3-meta">meta</a></li>
366<li><a href="#h3-nl_nonl">nl, nonl</a></li>
367<li><a href="#h3-nodelay">nodelay</a></li>
368<li><a href="#h3-notimeout">notimeout</a></li>
369<li><a href="#h3-raw_noraw">raw, noraw</a></li>
370<li><a href="#h3-qiflush_nqiflush">qiflush, nqiflush</a></li>
371<li><a href="#h3-timeout_wtimeout">timeout, wtimeout</a></li>
372<li><a href="#h3-typeahead">typeahead</a></li>
373</ul>
374</li>
375<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
376<li><a href="#h2-NOTES">NOTES</a></li>
377<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
378<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
379<li><a href="#h2-HISTORY">HISTORY</a></li>
380<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
381</ul>
382</div>
383</BODY>
384</HTML>
385