]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_inopts.3x.html
ncurses 6.5 - patch 20240525
[ncurses.git] / doc / html / man / curs_inopts.3x.html
index 9e8ce06e96e074db36921cdde499f237dc41cd77..f1aa3b0812ea591cd76fcc6f124c9e6aff2f3171 100644 (file)
@@ -1,7 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<!-- 
+<!--
+  * t
   ****************************************************************************
   ****************************************************************************
-  * Copyright (c) 1998,2001 Free Software Foundation, Inc.                   *
+  * 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  *
   * copy of this software and associated documentation files (the            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inopts.3x,v 1.9 2002/08/10 22:29:49 tom Exp @
+  * @Id: curs_inopts.3x,v 1.68 2024/05/25 20:41:48 tom Exp @
 -->
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <HTML>
 <HEAD>
-<TITLE>curs_inopts 3x</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<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 2024-05-25 ncurses 6.5 Library calls</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
 </HEAD>
 <BODY>
 </HEAD>
 <BODY>
-<H1>curs_inopts 3x</H1>
-<HR>
+<H1 class="no-header">curs_inopts 3x 2024-05-25 ncurses 6.5 Library calls</H1>
 <PRE>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
+<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>NAME</H2><PRE>
-       <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>key-</STRONG>
-       <STRONG>pad</STRONG>, <STRONG>meta</STRONG>,  <STRONG>nodelay</STRONG>,  <STRONG>notimeout</STRONG>,  <STRONG>raw</STRONG>,  <STRONG>noraw</STRONG>,  <STRONG>noqiflush</STRONG>,
-       <STRONG>qiflush</STRONG>,  <STRONG>timeout</STRONG>,  <STRONG>wtimeout</STRONG>,  <STRONG>typeahead</STRONG>  -  <STRONG>curses</STRONG>  input
-       options
 
 
 
 
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <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>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>echo(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>echo(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <STRONG>tenths);</STRONG>
-       <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <STRONG>delay);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>delay);</STRONG>
-       <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <STRONG>fd);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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-process-
-       ing  (interrupt  and  flow  control  characters  are unaf-
-       fected), 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> explicitly.  Most interactive  programs
-       using  <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode.  Note that <STRONG>cbreak</STRONG> over-
-       rides <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>.]
-
-       The  <STRONG>echo</STRONG>  and  <STRONG>noecho</STRONG> routines control whether characters
-       typed by the user are echoed by <STRONG>getch</STRONG> as they  are  typed.
-       Echoing  by  the  tty  driver is always disabled, but ini-
-       tially <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>.]
-
-       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,  ERR  is
-       returned  if  nothing has been typed.  The value of <STRONG>tenths</STRONG>
-       must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave
-       half-delay mode.
-
-       If  the <STRONG>intrflush</STRONG> option is enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), when 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  (<EM>bf</EM>  is  <STRONG>FALSE</STRONG>),  the
-       option  prevents the flush.  The default for the option is
-       inherited from the tty driver settings.  The window  argu-
-       ment is ignored.
-
-       The  <STRONG>keypad</STRONG> option enables the keypad of the user's termi-
-       nal.  If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a  func-
-       tion  key (such as an arrow key) and <STRONG>wgetch</STRONG> returns a sin-
-       gle 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
-       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 key-
-       pad to be turned on when <STRONG>wgetch</STRONG> is  called.   The  default
-       value for keypad is false.
-
-       Initially, whether the terminal returns 7 or 8 significant
-       bits on input depends on  the  control  mode  of  the  tty
-       driver  [see  <STRONG><A HREF="termio.7.html">termio(7)</A></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  equiva-
-       lent,  under  POSIX, to setting the CS7 flag on the termi-
-       nal.  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.
-
-       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 until a key is pressed.
-
-       While interpreting an input escape sequence, <STRONG>wgetch</STRONG> sets a
-       timer  while  waiting  for the next character.  If <STRONG>notime-</STRONG>
-       <STRONG>out(</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.
-
-       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 <STRONG>curses</STRONG>.
-
-       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><A HREF="termio.7.html">termio(7)</A></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.
-
-       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  (<EM>i</EM>.<EM>e</EM>.,  waits  indefinitely  for
-       input).   If <EM>delay</EM> is zero, then non-blocking read is used
-       (<EM>i</EM>.<EM>e</EM>., 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 rou-
-       tines  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).
-
-       The  <STRONG>curses</STRONG> 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 <STRONG>refresh</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.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-       The  ncurses  library obeys the XPG4 standard and the his-
-       torical practice of the AT&amp;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  portabil-
-       ity,  set echo or noecho explicitly just after initializa-
-       tion, even if your program remains in cooked mode.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>,  <STRONG>node-</STRONG>
-       <STRONG>lay</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>SEE ALSO</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="termio.7.html">termio(7)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
+       <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM> <EM>/*</EM> <EM>ignored</EM> <EM>*/</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM> <EM>/*</EM> <EM>ignored</EM> <EM>*/</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
 
 
+       <STRONG>int</STRONG> <STRONG>nl(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG>
 
 
+       <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
+       <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
 
 
+       <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
 
 
+       <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <EM>tenths</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <EM>delay</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>delay</EM><STRONG>);</STRONG>
+
+       <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>
+       <EM>curses</EM> offers configurable  parameters  permitting  an  application  to
+       control  the  handling  of  input  from the terminal.  Some are global,
+       applying to all windows; others apply only to a specific  window.   The
+       library  does not automatically apply such parameters to new or derived
+       windows; an application must configure  each  window  for  the  desired
+       behavior.
+
+       Some  descriptions  below  make reference to an <EM>input</EM> <EM>character</EM> <EM>reading</EM>
+       <EM>function</EM>: this is <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> in the non-wide character <EM>curses</EM>  API  and
+       <STRONG><A HREF="curs_get_wch.3x.html">wget_wch(3x)</A></STRONG>  in  the  wide  character API.  In addition to the variant
+       forms  of  these  described  in  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>,  the   <EM>curses</EM>   functions
+       <STRONG><A HREF="curs_getstr.3x.html">wgetstr(3x)</A></STRONG>   and   <STRONG><A HREF="curs_get_wstr.3x.html">wget_wstr(3x)</A></STRONG>  and  their  own  variants  call  the
+       appropriate input character reading function.
+
+
+</PRE><H3><a name="h3-cbreak_nocbreak">cbreak, nocbreak</a></H3><PRE>
+       Normally, the terminal driver buffers typed characters, not  delivering
+       them  to  an application until a line feed or carriage return is typed.
+       <STRONG>cbreak</STRONG> configures the terminal in  <EM>cbreak</EM>  <EM>mode</EM>,  which  disables  line
+       buffering and erase and kill character processing (the interrupt, quit,
+       suspend,  and  flow  control  characters  are  unaffected)  and   makes
+       characters  typed  by  the  user  immediately available to the program.
+       <STRONG>nocbreak</STRONG> returns the terminal to normal ("cooked") mode.
+
+       The state of the terminal is unknown to a <EM>curses</EM>  application  when  it
+       starts; therefore, a program should call <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> explicitly.
+       Most interactive programs using <EM>curses</EM> set cbreak mode.  Calling <STRONG>cbreak</STRONG>
+       overrides  <STRONG>raw</STRONG>.   The man page for the input character reading function
+       discusses how <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG> interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.
+
+
+</PRE><H3><a name="h3-echo_noecho">echo, noecho</a></H3><PRE>
+       <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> determine whether characters  typed  by  the  user  are
+       written to the <EM>curses</EM> window by the input character reading function as
+       they are typed.  <EM>curses</EM>  always  disables  the  terminal  driver's  own
+       echoing.   By  default, a <EM>curses</EM> window has its echo flag set.  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 call
+       <STRONG>noecho</STRONG>.   The  man  page  for  the  input  character  reading  function
+       discusses how <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.
+
+
+</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
+       <STRONG>halfdelay</STRONG>  configures  <EM>half-delay</EM> <EM>mode</EM>, which is similar to cbreak mode
+       in that characters typed by the user are immediately available  to  the
+       program.   However,  after  blocking  for  <EM>tenths</EM> tenths of seconds, an
+       input character reading function returns <STRONG>ERR</STRONG> if no  input  is  pending.
+       The  value  of <EM>tenths</EM> must be between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave
+       half-delay mode.
 
 
 
 
+</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
+       <STRONG>intrflush</STRONG> calls <STRONG>qiflush</STRONG> (see below) if <EM>bf</EM> is <STRONG>TRUE</STRONG>, and <STRONG>noqiflush</STRONG> if  <EM>bf</EM>
+       is <STRONG>FALSE</STRONG>.  It ignores its <EM>win</EM> argument.
+
+
+</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
+       <STRONG>keypad</STRONG>  enables  recognition of a terminal's function keys.  If enabled
+       (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the input character  reading  function  returns  a  value
+       representing  the  function key, such as <STRONG>KEY_LEFT</STRONG>.  (Wide-character API
+       users: <STRONG><A HREF="curs_get_wch.3x.html">wget_wch(3x)</A></STRONG> returns <STRONG>KEY_CODE_YES</STRONG> to indicate  the  availability
+       of  a  function  key  code  in  its <EM>wch</EM> parameter.)  If disabled (<EM>bf</EM> is
+       <STRONG>FALSE</STRONG>), <EM>curses</EM> does not treat function keys specially and  the  program
+       has to interpret escape sequences itself.  If the terminal's keypad can
+       be turned on (made to transmit) and off (made to work locally),  <STRONG>keypad</STRONG>
+       configures  it  consistently  with  the  <EM>bf</EM>  parameter.   By default, a
+       window's keypad mode is off.
+
+
+</PRE><H3><a name="h3-meta">meta</a></H3><PRE>
+       Initially, whether the terminal returns 7- or 8-bit character codes  on
+       input  depends  on  the  configuration  of  the  terminal  driver;  see
+       <STRONG>termios(3)</STRONG>.  To force 8 bits to be returned, call <STRONG>meta(</STRONG>...<STRONG>,</STRONG> <STRONG>TRUE)</STRONG>; this
+       is  equivalent,  on  POSIX  systems,  to  setting  the  CS8 flag on the
+       terminal.  To force 7 bits to be returned, call <STRONG>meta(</STRONG>...<STRONG>,</STRONG> <STRONG>FALSE)</STRONG>;  this
+       is  equivalent,  on  POSIX  systems,  to  setting  the  CS7 flag on the
+       terminal.  The window argument, <EM>win</EM>, is always ignored.  If  the  <EM>term-</EM>
+       <EM>info</EM>  string  capabilities <STRONG>meta_on</STRONG> (<STRONG>smm</STRONG>) and <STRONG>meta_off</STRONG> (<STRONG>rmm</STRONG>) are defined
+       for the terminal type, enabling meta mode sends <STRONG>smm</STRONG> to the terminal and
+       disabling it sends <STRONG>rmm</STRONG> to the terminal.
+
+
+</PRE><H3><a name="h3-nl_nonl">nl, nonl</a></H3><PRE>
+       Initially,  whether  the  terminal  reports a carriage return using the
+       character code for a line feed depends  on  the  configuration  of  the
+       terminal driver; see <STRONG>termios(3)</STRONG>.  <STRONG>nl</STRONG> configures the terminal to perform
+       this translation.  <STRONG>nonl</STRONG> disables it.
 
 
 
 
+</PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE>
+       <STRONG>nodelay</STRONG> configures the input character  reading  function  to  be  non-
+       blocking  for  window  <EM>win</EM>.  If no input is ready, the reading function
+       returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the reading function does  not
+       return until it has input.
+
+
+</PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE>
+       When  the  input  character reading function reads an ESC character, it
+       sets a timer while waiting  for  the  next  character.   <STRONG>notimeout(</STRONG><EM>win</EM><STRONG>,</STRONG>
+       <STRONG>TRUE)</STRONG>   disables  this  timer.   The  purpose  of  the  timeout  is  to
+       distinguish sequences produced by a function key from those typed by  a
+       user.   To configure the timeout rather than disabling it, see <STRONG>wtimeout</STRONG>
+       below.
+
 
 
+</PRE><H3><a name="h3-qiflush_noqiflush">qiflush, noqiflush</a></H3><PRE>
+       <STRONG>qiflush</STRONG> and <STRONG>noqiflush</STRONG> configure the terminal driver's treatment of  its
+       input and output queues when it handles the interrupt, suspend, or quit
+       characters  in  <EM>cbreak</EM>  and  "cooked"  modes;  on  POSIX  systems,  see
+       <STRONG>termios(3)</STRONG>.  The default behavior is inherited from the terminal driver
+       settings.  Calling <STRONG>qiflush</STRONG> configures the terminal to flush the  queues
+       when  any  of  these  events  occurs,  giving  the impression of faster
+       response to user input, but making the library's model  of  the  screen
+       contents  incorrect.   Calling  <STRONG>noqiflush</STRONG>  prevents  such flushing, but
+       might frustrate impatient users on slow connections if a <EM>curses</EM>  update
+       of the screen is in progress when the event occurs; see <STRONG>typeahead</STRONG> below
+       for a mitigation of this problem.  You may want to call <STRONG>noqiflush</STRONG> in  a
+       signal  handler  if you want output to continue after the handler exits
+       as though the interrupt had not occurred.
 
 
 
 
+</PRE><H3><a name="h3-raw_noraw">raw, noraw</a></H3><PRE>
+       <STRONG>raw</STRONG> configures the terminal to read input in <EM>raw</EM> <EM>mode</EM>, which is similar
+       to  cbreak  mode  (see  <STRONG>cbreak</STRONG> above) except that it furthermore passes
+       through the terminal's configured interrupt, quit,  suspend,  and  flow
+       control   characters  uninterpreted  to  the  application,  instead  of
+       generating a signal or  acting  on  I/O  flow.   The  behavior  of  the
+       terminal's   "Break"   key   (if   any)   depends  on  terminal  driver
+       configuration parameters that <EM>curses</EM> does not handle.  <STRONG>noraw</STRONG> exits  raw
+       mode.
 
 
 
 
+</PRE><H3><a name="h3-timeout_wtimeout">timeout, wtimeout</a></H3><PRE>
+       <STRONG>wtimeout</STRONG>  configures  whether a <EM>curses</EM> input character reading function
+       called on window <EM>win</EM> uses blocking or non-blocking reads.  If <EM>delay</EM>  is
+       negative,  a blocking read is used, waiting indefinitely for input.  If
+       <EM>delay</EM> is zero, a non-blocking read is used; an input character  reading
+       function  returns <STRONG>ERR</STRONG> if no input is pending.  If <EM>delay</EM> is positive, an
+       input character reading function blocks  for  <EM>delay</EM>  milliseconds,  and
+       returns  <STRONG>ERR</STRONG>  if the delay elapses and there is still no input pending.
+       <STRONG>timeout</STRONG> calls <STRONG>wtimeout</STRONG> on <STRONG>stdscr</STRONG>.
+
+
+</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
+       Normally, a <EM>curses</EM> library checks the terminal for input while updating
+       the  screen.   If  any is found, the update is postponed until the next
+       <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG> or <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> call, allowing faster response to user key
+       strokes.   The  library  tests the file descriptor corresponding to the
+       <EM>FILE</EM> stream pointer passed to <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> (or <EM>stdin</EM> if <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  was
+       called),  for  pending  input.  <STRONG>typeahead</STRONG> instructs <EM>curses</EM> to test file
+       descriptor <EM>fd</EM> instead.  An <EM>fd</EM> of <STRONG>-1</STRONG> disables the check.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> return no value.
+
+       <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>nodelay</STRONG>,  <STRONG>notimeout</STRONG>,  <STRONG>nl</STRONG>,  <STRONG>nonl</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, and <STRONG>typeahead</STRONG> return <STRONG>OK</STRONG> on
+       success and <STRONG>ERR</STRONG> on failure.
+
+       In <EM>ncurses</EM>, the functions in the previous paragraph return <STRONG>ERR</STRONG> if
+
+       <STRONG>o</STRONG>   the terminal is not initialized or
+
+       <STRONG>o</STRONG>   <EM>win</EM> is <STRONG>NULL</STRONG> (except  for  <STRONG>intrflush</STRONG>  and  <STRONG>meta</STRONG>,  which  ignore  its
+           value).
+
+       Further, <STRONG>halfdelay</STRONG> returns <STRONG>ERR</STRONG> if <EM>delay</EM> is outside the range 1..255.
+
+       See  section  "EXTENSIONS"  below  for  the return values of <STRONG>is_cbreak</STRONG>,
+       <STRONG>is_echo</STRONG>, <STRONG>is_nl</STRONG>, and <STRONG>is_raw</STRONG>.
+
+
+</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>  calls  with  <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>
+       <EM>ncurses</EM>  provides  four  "is_" functions corresponding to <STRONG>cbreak</STRONG>, <STRONG>echo</STRONG>,
+       <STRONG>nl</STRONG>, and <STRONG>raw</STRONG>, permitting their states to be queried by the application.
+
+                            <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
+
+       <STRONG>1</STRONG>    if the flag is set,
+
+       <STRONG>0</STRONG>    if the flag is reset, or
+
+       <STRONG>-1</STRONG>   if the library is not initialized.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       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
+       describes these functions.  It specifies no error conditions for them.
+
+       SVr4 <EM>curses</EM> describes a successful return value  only  as  "an  integer
+       value other than <STRONG>ERR</STRONG>".
+
+       <EM>ncurses</EM>  follows  X/Open Curses and the historical practice of System V
+       <EM>curses</EM>, clearing the terminal driver's "echo"  flag  when  initializing
+       the  screen.  BSD <EM>curses</EM> did not, but its <EM>raw</EM> function turned it off as
+       a side effect.  For best portability, call <STRONG>echo</STRONG>  or  <STRONG>noecho</STRONG>  explicitly
+       just  after  initialization,  even  if  your  program remains in normal
+       ("cooked") mode.
 
 
+       X/Open Curses is ambiguous regarding whether  <EM>raw</EM>  should  disable  the
+       carriage  return and line feed translation feature controlled by <EM>nl</EM> and
+       <EM>nonl</EM>.  BSD <EM>curses</EM> did turn off these translations; System V <EM>curses</EM>  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,  for example, by using the <STRONG>-x</STRONG> option of
+       <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG>, then <EM>ncurses</EM> also defines keys for the capabilities whose names
+       begin  with  "k".  Corresponding key codes 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  then  returns  a  name
+       beginning  with  "k"  denoting the <EM>terminfo</EM> 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  bind  a  specific  key  to  a  string  of  the
+       programmer's choice.  This feature enables an application to check  for
+       an  extended  capability's presence with <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>, and reassign the
+       keycode to match its own needs.
 
 
+       Low-level applications can use <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG> to obtain the definition of
+       any  string  capability.   <EM>curses</EM>  applications use the input character
+       reading function to obtain key codes from input and rely upon the order
+       in  which  the string capabilities are loaded.  Multiple key capability
+       strings can have the  same  value,  but  the  input  character  reading
+       function  can  report  only  one key code.  Most <EM>curses</EM> implementations
+       (including <EM>ncurses</EM>) load key definitions in the order  they  appear  in
+       the <STRONG>strfnames</STRONG> array of string capability names; see <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
+       The last capability read using a particular definition  determines  the
+       key  code  to  be  reported.   In <EM>ncurses</EM>, extended capabilities can be
+       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-HISTORY">HISTORY</a></H2><PRE>
+       4BSD <EM>curses</EM> (1980) introduced <EM>echo</EM>, <EM>noecho</EM>, <EM>nl</EM>, <EM>nonl</EM>, <EM>raw</EM>, and <EM>noraw</EM>.
 
 
+       SVr2 (1984) featured a new terminal driver, extending the <EM>curses</EM> API to
+       support it with <EM>cbreak</EM>, <EM>nocbreak</EM>, <EM>intrflush</EM>, <EM>keypad</EM>, <EM>meta</EM>, <EM>nodelay</EM>, and
+       <EM>typeahead</EM>.
 
 
+       SVr3 (1987) added <EM>halfdelay</EM>,  <EM>notimeout</EM>,  and  <EM>wtimeout</EM>.   <EM>qiflush</EM>  and
+       <EM>noqiflush</EM>  appeared in SVr3.1 (1987), at which point <EM>intrflush</EM> became a
+       wrapper for either of these functions, depending on the  value  of  its
+       Boolean argument.  SVr3.1 also added <EM>timeout</EM>.
+
+       <EM>ncurses</EM> 6.5 (2024) introduced <EM>is</EM><STRONG>_</STRONG><EM>cbreak</EM>, <EM>is</EM><STRONG>_</STRONG><EM>echo</EM>, <EM>is</EM><STRONG>_</STRONG><EM>nl</EM>, and <EM>is</EM><STRONG>_</STRONG><EM>raw</EM>.
 
 
+       Formerly,  <EM>ncurses</EM>  used  <EM>nl</EM>  and  <EM>nonl</EM>  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 "CRMOD", while the latter separates these features.
+       Because that conversion interferes with  output  optimization,  <EM>ncurses</EM>
+       6.2 (2020) amended <EM>nl</EM> and <EM>nonl</EM> 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><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
+
+
+
+ncurses 6.5                       2024-05-25                   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
 </PRE>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<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-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-nodelay">nodelay</a></li>
+<li><a href="#h3-notimeout">notimeout</a></li>
+<li><a href="#h3-qiflush_noqiflush">qiflush, noqiflush</a></li>
+<li><a href="#h3-raw_noraw">raw, noraw</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-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>
 </BODY>
 </HTML>
 </BODY>
 </HTML>