Provided by: ncurses-doc_6.4+20240113-1ubuntu2_all bug

NAME

       cbreak,  echo,  halfdelay,  intrflush,  is_cbreak,  is_echo,  is_nl,  is_raw, keypad, meta, nl, nocbreak,
       nodelay, noecho, nonl, noqiflush, noraw, notimeout, qiflush, raw, timeout, wtimeout, typeahead - get  and
       set curses terminal input options

SYNOPSIS

       #include <curses.h>

       int cbreak(void);
       int nocbreak(void);

       int echo(void);
       int noecho(void);

       int intrflush(WINDOW *win, bool bf);
       int keypad(WINDOW *win, bool bf);
       int meta(WINDOW *win, bool bf);
       int nodelay(WINDOW *win, bool bf);
       int notimeout(WINDOW *win, bool bf);

       int nl(void);
       int nonl(void);

       int raw(void);
       int noraw(void);

       void qiflush(void);
       void noqiflush(void);

       int halfdelay(int tenths);
       void timeout(int delay);
       void wtimeout(WINDOW *win, int delay);

       int typeahead(int fd);

       /* extensions */
       int is_cbreak(void);
       int is_echo(void);
       int is_nl(void);
       int is_raw(void);

DESCRIPTION

       ncurses  provides  several  functions  that  let an application change the way input from the terminal is
       handled.  Some are global, applying to all windows.  Others apply only to  a  specific  window.   Window-
       specific  settings  are  not  automatically applied to new or derived windows.  An application must apply
       these to each window if the same behavior is desired.

   cbreak, nocbreak
       Normally, the terminal driver buffers typed characters until a newline or carriage return is typed.   The
       cbreak  routine  disables  line buffering and erase/kill character-processing (interrupt and flow control
       characters are unaffected), making characters typed by the user immediately  available  to  the  program.
       The nocbreak routine returns the terminal to normal (cooked) mode.

       Initially  the  terminal may or may not be in cbreak mode, as the mode is inherited; therefore, a program
       should call cbreak or nocbreak explicitly.  Most interactive programs using curses set the  cbreak  mode.
       Note  that  cbreak  overrides  raw.  [See getch(3NCURSES) for a discussion of how these routines interact
       with echo and noecho.]

   echo, noecho
       The echo and noecho routines control whether characters typed by the user are echoed  by  getch(3NCURSES)
       as  they  are  typed.   Echoing by the terminal driver is always disabled, but initially getch 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
       noecho.  [See getch(3NCURSES) for a discussion of how these routines interact with cbreak and nocbreak.]

   halfdelay
       The halfdelay routine is used for half-delay mode, which is similar to cbreak  mode  in  that  characters
       typed by the user are immediately available to the program.  However, after blocking for tenths tenths of
       seconds,  ERR  is returned if nothing has been typed.  The value of tenths must be a number between 1 and
       255.  Use nocbreak to leave half-delay mode.

   intrflush
       If the intrflush option is enabled (bf is TRUE),  and  an  interrupt  key  is  pressed  on  the  keyboard
       (interrupt, break, quit), all output in the terminal driver queue is flushed, giving the effect of faster
       response to the interrupt, but causing curses to have the wrong idea of what is on the screen.  Disabling
       the  option (bf is FALSE), prevents the flush.  The default for the option is inherited from the terminal
       driver settings.  The win argument is ignored.

   keypad
       The keypad option enables the keypad of the user's terminal.  If enabled (bf is TRUE), the user can press
       a function key (such as an arrow key) and  wgetch(3NCURSES)  returns  a  single  value  representing  the
       function  key,  as in KEY_LEFT.  If disabled (bf is FALSE), curses does not treat function keys specially
       and the program has to interpret the escape sequences itself.  If the  keypad  in  the  terminal  can  be
       turned  on  (made to transmit) and off (made to work locally), turning on this option causes the terminal
       keypad to be turned on when wgetch(3NCURSES) is called.  The default value for keypad is FALSE.

   meta
       Initially, whether the terminal returns 7 or 8 significant bits on input depends on the control  mode  of
       the  terminal  driver  [see termios(3)].  To force 8 bits to be returned, invoke meta(win, TRUE); this is
       equivalent, under POSIX, to setting the CS8 flag on the terminal.  To force 7 bits to be returned, invoke
       meta(win, FALSE); this is equivalent, under POSIX, to setting the CS7 flag on the terminal.   The  window
       argument,  win,  is  always  ignored.   If the terminfo capabilities smm (meta_on) and rmm (meta_off) are
       defined for the terminal, smm is sent to the terminal when meta(win, TRUE) is called and rmm is sent when
       meta(win, FALSE) is called.

   nl, nonl
       The nl and nonl routines control whether the underlying display device translates  the  return  key  into
       newline on input.

   nodelay
       The  nodelay option causes getch to be a non-blocking call.  If no input is ready, getch returns ERR.  If
       disabled (bf is FALSE), getch waits until a key is pressed.

   notimeout
       When interpreting an escape sequence, wgetch(3NCURSES) sets a timer while waiting for the next character.
       If notimeout(win, TRUE) is called, then wgetch does not set a timer.  The purpose of the  timeout  is  to
       distinguish sequences produced by a function key from those typed by a user.

   raw, noraw
       The  raw  and  noraw  routines place the terminal into or out of raw mode.  Raw mode is similar to cbreak
       mode, in that characters typed are immediately passed through to the user program.  The  differences  are
       that  in  raw  mode,  the  interrupt,  quit,  suspend, and flow control characters are all passed through
       uninterpreted, instead of generating a signal.  The behavior of the BREAK key depends on  other  bits  in
       the terminal driver that are not set by curses.

   qiflush, nqiflush
       When  the  noqiflush  routine  is used, normal flush of input and output queues associated with the INTR,
       QUIT and SUSP characters will not be done [see termios(3)].  When qiflush is called, the queues  will  be
       flushed  when  these  control characters are read.  You may want to call noqiflush in a signal handler if
       you want output to continue as though the interrupt had not occurred, after the handler exits.

   timeout, wtimeout
       The timeout and wtimeout routines set blocking or non-blocking read for a  given  window.   If  delay  is
       negative,  a  blocking  read is used (i.e., waits indefinitely for input).  If delay is zero, then a non-
       blocking read is used (i.e., read returns ERR if no input is waiting).  If delay is positive,  then  read
       blocks for delay milliseconds, and returns ERR if there is still no input.  Hence, these routines provide
       the  same  functionality as nodelay, plus the additional capability of being able to block for only delay
       milliseconds (where delay is positive).

   typeahead
       curses does “line-breakout optimization” by looking for typeahead periodically while updating the screen.
       If input  is  found,  and  it  is  coming  from  a  terminal,  the  current  update  is  postponed  until
       refresh(3NCURSES) or doupdate is called again.  This allows faster response to commands typed in advance.
       Normally,  the  input FILE pointer passed to newterm, or stdin in the case that initscr was used, will be
       used to do this typeahead checking.  The typeahead routine specifies that the file descriptor fd is to be
       used to check for typeahead instead.  If fd is -1, then no typeahead checking is done.

RETURN VALUE

       All routines that return an integer return ERR upon failure and OK (SVr4 specifies only “an integer value
       other  than  ERR”)  upon  successful  completion,  unless  otherwise  noted  in  the  preceding   routine
       descriptions.

       X/Open  does  not define any error conditions.  In this implementation, functions with a window parameter
       will return an error if it is null.  Any function will also return an  error  if  the  terminal  was  not
       initialized.  Also,

          halfdelay
               returns an error if its parameter is outside the range 1..255.

NOTES

       echo,  noecho, halfdelay, intrflush, meta, nl, nonl, nodelay, notimeout, noqiflush, qiflush, timeout, and
       wtimeout may be implemented as macros.

       noraw and nocbreak follow historical practice in that they attempt to restore normal (“cooked”) mode from
       raw and cbreak modes respectively.  Mixing raw/noraw and cbreak/nocbreak calls leads to  terminal  driver
       control states that are hard to predict or understand; doing so is not recommended.

EXTENSIONS

       ncurses  provides  four “is_” functions that may be used to detect if the corresponding flags were set or
       reset.

                                             Query       Set      Reset
                                             ──────────────────────────────
                                             is_cbreak   cbreak   nocbreak
                                             is_echo     echo     noecho
                                             is_nl       nl       nonl
                                             is_raw      raw      noraw

       In each case, the function returns

       1   if the flag is set,

       0   if the flag is reset, or

       -1  if the library is not initialized.

       They were designed for ncurses(3NCURSES), and are not found in SVr4 curses, 4.4BSD curses, or  any  other
       previous curses implementation.

PORTABILITY

       Applications  employing  ncurses  extensions  should  condition  their  use  on  the  visibility  of  the
       NCURSES_VERSION preprocessor macro.

       Except as noted in section “EXTENSIONS”  above,  X/Open  Curses,  Issue  4,  Version  2  describes  these
       functions.

       ncurses  follows  X/Open  Curses  and the historical practice of AT&T curses implementations, in that the
       echo bit is cleared when curses initializes the terminal state.  BSD curses differed from this  slightly;
       it left the echo bit on at initialization, but the BSD raw call turned it off as a side effect.  For best
       portability,  set  echo  or  noecho explicitly just after initialization, even if your program remains in
       cooked mode.

       X/Open Curses is ambiguous regarding whether raw should disable the CR/LF translations controlled  by  nl
       and  nonl.   BSD  curses did turn off these translations; AT&T curses (at least as late as SVr1) did not.
       ncurses 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 keypad is first enabled, ncurses loads the key definitions for the current terminal description.  If
       the  terminal  description  includes extended string capabilities, e.g., from using the -x option of tic,
       then ncurses also defines keys for the capabilities  whose  names  begin  with  “k”.   The  corresponding
       keycodes  are  generated  and  (depending on previous loads of terminal descriptions) may differ from one
       execution of a program to the next.  The generated  keycodes  are  recognized  by  the  keyname(3NCURSES)
       function  (which  will then return a name beginning with “k” denoting the terminfo capability name rather
       than “K”, used for curses key names).  On the other hand, an application can use define_key(3NCURSES)  to
       establish  a specific keycode for a given string.  This makes it possible for an application to check for
       an extended capability's presence with tigetstr, and reassign the keycode to match its own needs.

       Low-level applications can use tigetstr to obtain the definition of  any  particular  string  capability.
       Higher-level  applications which use the curses wgetch and similar functions to return keycodes rely upon
       the order in which the strings are loaded.  If more than one key definition has the  same  string  value,
       then  wgetch  can  return  only  one  keycode.   Most curses implementations (including ncurses) load key
       definitions in the order defined by the array of string capability names.  The  last  key  to  be  loaded
       determines  the  keycode  which  will  be  returned.  In ncurses, you may also have extended capabilities
       interpreted as key definitions.  These are loaded after the predefined keys, and if a capability's  value
       is the same as a previously-loaded key definition, the later definition is the one used.

SEE ALSO

       ncurses(3NCURSES), getch(3NCURSES), initscr(3NCURSES), util(3NCURSES), define_key(3NCURSES), termios(3)

ncurses 6.4                                        2023-12-23                                   inopts(3NCURSES)