]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_inopts.3x.html
ncurses 6.4 - patch 20240420
[ncurses.git] / doc / html / man / curs_inopts.3x.html
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.4 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.4 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
352 ncurses 6.4                       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>