MirBSD manpage: cbreak(3), curs_inopts(3), echo(3), halfdelay(3), intrflush(3), keypad(3), meta(3), nocbreak(3), nodelay(3), noecho(3), noqiflush(3), noraw(3), notimeout(3), qiflush(3), raw(3), timeout(3), typeahead(3), wtimeout(3)


curs_inopts(3)      UNIX Programmer's Manual       curs_inopts(3)

NAME

     cbreak, nocbreak, echo, noecho, halfdelay, intrflush,
     keypad, meta, nodelay, notimeout, raw, noraw, noqiflush,
     qiflush, timeout, wtimeout, typeahead - curses input options

SYNOPSIS

     #include <curses.h>

     int cbreak(void);
     int nocbreak(void);
     int echo(void);
     int noecho(void);
     int halfdelay(int tenths);
     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 raw(void);
     int noraw(void);
     void noqiflush(void);
     void qiflush(void);
     int notimeout(WINDOW *win, bool bf);
     void timeout(int delay);
     void wtimeout(WINDOW *win, int delay);
     int typeahead(int fd);

DESCRIPTION

     Normally, the tty 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), mak-
     ing 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 over-
     rides raw. [See curs_getch(3) for a discussion of how  these
     routines interact with echo and noecho.]

     The echo and  noecho  routines  control  whether  characters
     typed  by  the  user  are echoed by getch as they are typed.
     Echoing by the tty driver is always disabled, but  initially
     getch  is in echo mode, so characters typed are echoed.  Au-
     thors 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
     curs_getch(3)  for  a  discussion  of how these routines in-
     teract with cbreak and nocbreak.]

MirBSD #10-current     Printed 2022-12-23                       1

curs_inopts(3)      UNIX Programmer's Manual       curs_inopts(3)

     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.

     If the intrflush option is enabled, (bf is  TRUE),  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 curses to have the wrong idea  of  what  is  on  the
     screen.   Disabling  (bf  is FALSE), the option prevents the
     flush.  The default for the option is inherited from the tty
     driver settings. The window argument is ignored.

     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  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 it-
     self.  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 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 termio(7)]. 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  re-
     turned,  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 capabili-
     ties 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.

     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.

     While interpreting an input escape sequence, wgetch  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 differentiate
     between sequences received from a  function  key  and  those
     typed by a user.

MirBSD #10-current     Printed 2022-12-23                       2

curs_inopts(3)      UNIX Programmer's Manual       curs_inopts(3)

     The raw and noraw routines place the terminal into or out of
     raw mode.  Raw mode is similar to cbreak mode, in that char-
     acters typed are immediately passed through to the user pro-
     gram.   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 curses.

     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 termio(7)].   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.

     The timeout and  wtimeout  routines  set  blocking  or  non-
     blocking  read  for  a  given window.  If delay is negative,
     blocking read is used (i.e., waits indefinitely for  input).
     If delay is zero, then 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 capabili-
     ty of being able to block for only delay milliseconds (where
     delay is positive).

     The curses 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 refresh 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  imple-
     mentation,  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

MirBSD #10-current     Printed 2022-12-23                       3

curs_inopts(3)      UNIX Programmer's Manual       curs_inopts(3)

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

PORTABILITY

     These functions are described in the  XSI  Curses  standard,
     Issue 4.

     The ncurses library obeys the XPG4 standard and the histori-
     cal practice of the AT&T curses implementations, in that the
     echo bit is cleared when  curses  initializes  the  terminal
     state.   BSD curses differed from this slightly; it left the
     echo bit on at initialization, but the BSD 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.

NOTES

     Note that echo, noecho, halfdelay, intrflush, meta, nodelay,
     notimeout,  noqiflush, qiflush, timeout, and wtimeout may be
     macros.

     The noraw and nocbreak 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 recommend-
     ed.

SEE ALSO

     curses(3), curs_getch(3), curs_initscr(3), termio(7)

MirBSD #10-current     Printed 2022-12-23                       4

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung