*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> curses (3)              
Title
Content
Arch
Section
 

curses(3)

Contents


NAME    [Toc]    [Back]

       curses - Terminal screen-handling and optimization package

SYNOPSIS    [Toc]    [Back]

       c89 [flag...] file -l curses [library...]

       cc [flag...] file -lcurses [-llibrary...]

       #include <curses.h>


DESCRIPTION    [Toc]    [Back]

       The Curses library routines give the user a terminal-independent
  method of updating character screens with reasonable
 optimization. A C program using these  routines  must
       be  compiled  with  the -l curses operand. (The cc command
       supports only -lcurses as an operand. The c89 command supports
 -lcurses in addition to the space-separated format.)
       See NOTES for information about compiling in the different
       definition  environments  required  for  the  standard and
       backward compatible  subsets  of  functions,  macros,  and
       other definitions that the library supports.

       The Curses package allows: overall screen, window, and pad
       manipulation; output to windows and pads; reading terminal
       input;  control  over terminal and Curses input and output
       options; environment query routines;  color  manipulation;
       use  of  soft  label  keys;  terminfo database access; and
       access to low-level Curses routines.

   Screen, Windows, and Terminals
       A screen is the physical output device  of  the  terminal.
       In Curses, a SCREEN data type is an opaque data type associated
 with a terminal.  Each window (described later)  is
       associated with a SCREEN.

       The  Curses  library  permits  manipulation of data structures,
 called windows, which can be  thought  of  as  twodimensional
 arrays of characters and their renditions representing
 all or part of  a  terminal's  physical  screen.
       Windows do not have to correspond to the entire screen. It
       is possible to create smaller windows and also to indicate
       that  a window is only partially visible on the screen. It
       is possible to create windows  larger  than  the  terminal
       screen  by  using  pads.  A  default window called stdscr,
       which is the size of the  terminal  screen,  is  supplied.
       Other  windows  may  be created with the newterm or newwin
       function.

       Windows are referred to by variables declared as WINDOW *.
       These   data  structures  are  manipulated  with  routines
       described on Section 3 reference pages whose  names  begin
       "curs_".   Among  the  most  basic  routines  are move and
       addch, which manipulate the  default  window  stdscr,  and
       refresh,  which tells Curses to update the user's terminal
       screen from stdscr. More general versions  of  these  routines
  enable  specific  windows  to  be  manipulated  and
       refreshed.

       Each window has a flag to indicate whether the information
       in  the window could differ from the information displayed
       on the terminal device. Making any change to the  contents
       of  the window, moving or modifying the window, or setting
       the window's cursor position  sets  this  flag  (in  other
       words,  touches the window).  Refreshing the window clears
       this flag.

       A subwindow is a window,  created  within  another  window
       called  the  parent window, and positioned relative to the
       parent window.  A subwindow can be created by calling derwin,
  subpad, or subwin. Changes to either the parent window
 or the subwindow affect both. Window clipping is not a
       property of subwindows.

       The term ancestor refers to a window's parent, or its parent,
 or so on.

       Derived windows are subwindows whose position  is  defined
       by  reference to the parent window rather than in absolute
       screen coordinates.  Otherwise,  derived  windows  are  no
       different from subwindows.

       Special windows called pads may also be manipulated.  Pads
       are windows that are not  necessarily  associated  with  a
       viewable  part  of the screen. Pads can be larger than the
       size of the screen. Use a  pad  whenever  the  application
       requires a window that is larger than the terminal screen.
       A subpad is a specialized  case  of  a  subwindow  created
       within a pad. See curs_pad(3) for more information.

       A  terminal is the logical input and output device through
       which character-based applications interact with the user.
       TERMINAL  is  an opaque data type associated with a terminal.
  A TERMINAL data structure primarily contains  information
  about the capabilities of the terminal, as defined
       by the terminfo database. A TERMINAL data  structure  also
       contains  information about the terminal modes and current
       state for input and output  operations.   Each  screen  is
       associated with a TERMINAL data structure.

       In  addition to drawing characters on the screen, applications
 can include video attributes and colors, causing the
       characters to show up in such modes as underlined, reverse
       video, or color on terminals  that  support  such  display
       enhancements.  Applications  can also specify line-drawing
       characters as output.   On  input,  Curses  can  translate
       arrow  and  function  keys  that transmit escape sequences
       into single values.  The  video  attributes,  line-drawing
       characters, and input values use names, such as A_REVERSE,
       WA_UNDERLINE, ACS_VLINE, ACS_HLINE, and KEY_LEFT, that are
       defined  in <curses.h>. If the environment variables LINES
       and COLUMNS are set, or if the program is executing  in  a
       window  environment,  line  and  column information in the
       environment overrides information read from  the  terminfo
       database.  This would affect a program running in a window
       environment, for example, where the size of  a  screen  is
       changeable.

       If  the  environment  variable TERMINFO is defined, Curses
       checks for a local terminal definition before checking  in
       the  standard  place.  For  example,  if  TERM  is  set to
       wyse150, then the standard pathname of the compiled terminal
  definition is /usr/share/lib/terminfo/w/wyse150. (The
       w in this path is copied from the first letter of  wyse150
       to  avoid creation of huge directories.)  However, if TERMINFO
 is set to $HOME/myterms,  Curses  first  checks  for
       $HOME/myterms/w/wyse150  and,  if  no definition is found,
       then  checks  for  /usr/share/lib/terminfo/w/wyse150.  The
       search  path beginning with $HOME is useful for developing
       and testing experimental definitions or when write permission
 in /usr/share/lib/terminfo is not available.

       The  integer  variables  LINES  and  COLS  are  defined in
       <curses.h> and are filled in by initscr with the  size  of
       the screen. The constants TRUE and FALSE have the values 1
       and 0, respectively.

       The Curses routines also  define  the  WINDOW  *  variable
       curscr,  which  is  used  for certain low-level operations
       like clearing and redrawing a screen  containing  garbage.
       The curscr variable can be used in only a few routines.

   Multicolumn Characters    [Toc]    [Back]
       Some  character  sets  define  multicolumn characters that
       occupy more than one column position when displayed on the
       screen.

       Writing  a character whose width is greater than the width
       of the destination window is an error.

   Attributes    [Toc]    [Back]
       Each character can be displayed with attributes,  such  as
       underlining,  reverse  video,  or  color on terminals that
       support such display enhancements. Current attributes of a
       window are applied to all characters that are written into
       the window by waddch, wadd_wch, waddstr, waddchstr, waddwstr,
  waddwchstr, or wprintw.  Attributes can be combined.

       The <curses.h> file defines  constants  that  applications
       use  to specify attributes. Names of these constants start
       with A_. The A_ constants manipulate attributes in objects
       of  type int. Additional attributes can be specified using
       constants with the WA_ prefix. The WA_  constants  manipulate
 attributes in objects of type attr_t.

       Two  constants  that begin with A_ and WA_ and that represent
 the  same  terminal  capability  refer  to  the  same
       attribute  in the terminfo database and in the window data
       structure. The effect on a window does not differ  depending
  on  whether  the application specifies A_ or WA_ constants.
  For example, when an application  updates  window
       attributes  using  the interfaces that support the A_ values,
 a query of the window attribute  using  the  function
       that  returns  WA_  values  reflects  this update. When it
       updates window attributes using the interfaces  that  support
  the  WA_  values,  for which corresponding A_ values
       exist, a query of the window attribute using the  function
       that returns A_ values reflects this update.

   Rendition    [Toc]    [Back]
       The  rendition  of  a character displayed on the screen is
       its attributes and a color pair.

       The rendition of a character written to the screen becomes
       a  property  of the character and moves with the character
       through any of the following operations: Scrolling Line or
       character insertion Line or character deletion

       To the extent possible on a particular terminal, a character's
 rendition corresponds to the  graphic  rendition  of
       the character put on the screen.

       If  a  given terminal does not support a rendition that an
       application program is trying to use, Curses  may  substitute
 a different rendition.

       Colors  are  always  used  in pairs (referred to as colorpairs).
  A color-pair consists of a foreground color  (for
       characters) and a background color (for the field on which
       the characters are displayed).

   Nonspacing Characters    [Toc]    [Back]
       Some character sets  may  contain  nonspacing  characters.
       Nonspacing  characters are those for which wcwidth returns
       a width of zero.  The  application  may  write  nonspacing
       characters  to  a window.  Every nonspacing character in a
       window is associated with a spacing character and modifies
       the  spacing character.  Nonspacing characters in a window
       cannot be addressed separately.  A nonspacing character is
       implicitly  addressed  whenever a Curses operation affects
       the spacing character with which the nonspacing  character
       is associated.

       Nonspacing  characters  do  not  support  attributes.  For
       interfaces that use wide characters  and  attributes,  the
       attributes are ignored if the wide character is a nonspacing
 character.  Multicolumn characters have a  single  set
       of  attributes  for  all columns.  The association of nonspacing
 characters with spacing  characters  can  be  controlled
 by the application using the wide character interfaces.
  The wide-character string functions provide  codeset-dependent
 association.

       Two  typical  effects of a nonspacing character associated
       with a spacing character called c,  are  as  follows:  The
       nonspacing  character  may modify the appearance of c. For
       instance, there may be nonspacing characters that add diacritical
  marks to characters.  However, there may also be
       spacing characters with built-in diacritical  marks.   The
       nonspacing character may bridge c to the character following
 c.  Examples of this usage are the formation of  ligatures
  and the conversion of characters into compound display
 forms, words, or ideograms.

   Complex Characters    [Toc]    [Back]
       A complex character is a  set  of  associated  characters,
       which  may  include  a  spacing  character, any nonspacing
       characters associated with it, or both.  A spacing complex
       character  is  a spacing character followed by its associated
 nonspacing characters. A nonspacing complex character
       is one or more nonspacing characters without an associated
       spacing character. An example of  a  coded  character  set
       that has complex characters is ISO/IEC 10646-1:1993.

       A  complex  character can be written to the screen. If the
       complex character does not include  a  spacing  character,
       any  nonspacing characters are associated with the spacing
       complex character that  exists  at  the  specified  screen
       position.   When  the  application  reads information back
       from the screen, it obtains spacing complex characters.

       The cchar_t data type represents a complex  character  and
       its  rendition.  When cchar_t represents a complex character
 without a spacing character, then its rendition is not
       used; when it is written to the screen, it uses the rendition
 specified by the spacing character already displayed.

       An  object  of  type  cchar_t  can be initialized by using
       setcchar and the object's contents  can  be  extracted  by
       using  getcchar.   The  behavior  of functions that take a
       cchar_t input argument is  undefined  if  the  application
       provides  a cchar_t value that was not initialized in this
       way.

   Window Properties    [Toc]    [Back]
       Windows have the  following  properties  that  affect  the
       placing  of  characters  in  the window: Each window has a
       rendition, which is combined with the rendition  component
       of  the  window's  background  property  (described next).
       Each window has a  background  property.   The  background
       property  specifies the following: A spacing complex character
 (the background character) that will be  used  in  a
       variety of situations where visible information is deleted
       from the screen.  A rendition to  use  in  displaying  the
       background  character  in  those  situations, and in other
       situations.

   Screen Addressing    [Toc]    [Back]
       Many Curses functions use a  coordinate  pair  for  screen
       addressing.   In the DESCRIPTION, coordinate locations are
       represented as (y, x) since the y argument always precedes
       the  x  argument  in the function call.  These coordinates
       denote a line/column position, not a character position.

       The coordinate y always refers to the row (of the window),
       and  x always refers to the column.  The first row and the
       first column are numbered 0, not 1.  The position  (0,  0)
       is the window's origin.

       For  example,  for  terminals  that display the ISO 8859-1
       character set (with left-to-right writing), (0, 0)  represents
 the upper left-hand corner of the screen.

       Functions that start with mv take arguments that specify a
       (y, x) position and move the cursor (as though  move  were
       called)  before  performing the requested action.  As part
       of the requested action, further cursor movement may occur
       as specified on the respective reference page.

   Adding (Overwriting) Characters    [Toc]    [Back]
       The  Curses  functions  that contain the word add, such as
       addch, specify one or more characters  to  replace  (overwrite)
  characters  already  in the window. If these functions
  specify  only  nonspacing  characters,   they   are
       appended to a spacing character already in the window.

       When  replacing  a  multicolumn character with a character
       that requires fewer columns, the new  character  is  added
       starting at the specified or implied column position.  All
       columns that the  former  multicolumn  character  occupied
       that  the  new  character  does  not  require are orphaned
       columns, which are filled using the  background  character
       and window rendition.

       Replacing  a character with a character that requires more
       columns also replaces one or more subsequent characters on
       the line.  This process may also produce orphaned columns.









   Truncation, Wrapping, and Scrolling
       If the application specifies a character or  a  string  of
       characters such that writing them to a window would extend
       beyond the end of the line (for example, if  the  application
  tries  to  deposit  any multicolumn character at the
       last column in a line), the behavior  depends  on  whether
       the  function supports line wrapping: If the function does
       not wrap, it fails.  If the function wraps, then it places
       one  or  more characters in the window at the start of the
       next line, beginning with the first character  that  would
       not completely fit on the original line.

              If the final character on the line is a multicolumn
              character that does not completely fit on the line,
              the  entire  character  wraps to the next line, and
              columns at the end of  the  original  line  may  be
              orphaned.

              If  the original line was the last line in the window,
 the wrap may cause a scroll to occur  as  follows:
 If scrolling is enabled, a scroll occurs. The
              contents of the first line of the window are  lost.
              The  contents  of each remaining line in the window
              move to the previous line.  The last  line  of  the
              window  is filled with any characters that wrapped.
              Any remaining space on the last line is filled with
              the   background   character   and  rendition.   If
              scrolling is disabled, any  characters  that  would
              extend  beyond the last column of the last line are
              truncated.  The scrollok function enables and  disables
 scrolling.

       Some  add functions move the cursor just beyond the end of
       the last character added.  If this position is beyond  the
       end of a line, wrapping and scrolling occur under the conditions
 specified in the preceding list.

   Inserting Characters    [Toc]    [Back]
       Insertion functions  (such  as  insch)  insert  characters
       immediately  before the character at the specified or current
 cursor position.

       The insertion shifts all characters that were formerly  at
       or  beyond  the  cursor position on the cursor line toward
       the end of that line.  The disposition of  the  characters
       that  would thus extend beyond the end of the line depends
       on whether the function supports wrapping: If the function
       does  not wrap, those characters are removed from the window.
  This may produce orphaned columns.  If the  function
       supports wrapping, the effect is as described earlier.

       If multicolumn characters are displayed, some cursor positions
 are within a multicolumn character but  not  at  the
       beginning  of a character. Any request to insert data at a
       position that is not the beginning of a multicolumn  character
  will be adjusted so that the actual cursor position
       is at the beginning of the multicolumn character in  which
       the requested position occurs.

       There  are no warning indications relative to cursor relocation.
 The application should not maintain  an  image  of
       the cursor position, since this constitutes placing terminal-specific
 information in the  application  and  defeats
       the purpose of using Curses.

       Portable applications cannot assume that a cursor position
       specified in an insert function is a  reusable  indication
       of the actual cursor position.

   Deleting Characters    [Toc]    [Back]
       Deletion  functions  (such  as delch) delete the simple or
       complex character at the specified or implied cursor position.
 Regardless of which column of the character on which
       the  cursor  is  positioned,  all  column  positions   are
       replaced by the background character and window rendition.
       The cursor is  not  relocated.   If  a  character-deletion
       operation  would cause a previous wrapping operation to be
       undone, then the results are unspecified.

   Window Operations    [Toc]    [Back]
       Overlapping a window (that is, placing one window  on  top
       of another) and overwriting a window (that is, copying the
       contents of one window into another) follows the operation
       of  overwriting  multicolumn  glyphs around its edge.  Any
       orphaned columns are handled as described in the preceding
       sections on character operations.

   Characters that Straddle the Subwindow Border    [Toc]    [Back]
       A  subwindow  can be defined such that multicolumn characters
 straddle the subwindow border.  The character  operations
  deal  with  these straddling characters as follows:
       Reading the subwindow with a function such as in_wch reads
       the  entire  straddling  character.  Adding, inserting, or
       deleting characters in the subwindow  deletes  the  entire
       straddling character before the requested operation begins
       and does not relocate the cursor.  Scrolling lines in  the
       subwindow  has the following effects: A straddling character
 at the start of the line is completely  erased  before
       the  scroll  operation  begins.  A straddling character at
       the end of the line moves in the direction of  the  scroll
       and  continues  to  straddle the subwindow border.  Column
       positions outside the subwindow at the straddling  character's
  former  position are orphaned unless another straddling
 character scrolls into those positions.

       If the application calls a function such  as  border,  the
       preceding situations do not occur because writing the border
 on the subwindow deletes any straddling characters.

       In the preceding cases involving  multicolumn  characters,
       operations  confined  to a subwindow can modify the screen
       outside the subwindow.   Therefore,  saving  a  subwindow,
       performing  operations  within  the  subwindow,  and  then
       restoring the subwindow may disturb the appearance of  the
       screen.   To overcome these effects (for example, for popup
 windows), the application  should  refresh  the  entire
       screen.

   Special Characters    [Toc]    [Back]
       The following table describes cursor movement that results
       from processing of special characters.

       In Curses functions that do not move the cursor  based  on
       the  information  placed in the window, special characters
       are used only within a string to affect the  placement  of
       subsequent  characters.  In this case, the cursor movement
       described in the table does not  persist  in  the  visible
       cursor beyond the end of the operation.

       In  functions that do move the cursor, the special characters
 can be used to affect  the  placement  of  subsequent
       characters  and to achieve movement of the visible cursor.

       ---------------------------------------------------------------------------
       Special Character   Effect on Cursor
       ---------------------------------------------------------------------------
       backspace           Unless the cursor was already in column  0,  backspace
                           moves  the  cursor  one column toward the start of the
                           current line; any characters after the  backspace  are
                           added or inserted starting there.
       carriage return     Unless  the  cursor  was already in column 0, carriage
                           return moves the cursor to the start  of  the  current
                           line.   Any  characters  after the carriage return are
                           added or inserted starting there.
       newline             In an add operation, Curses adds the background  character
  into  successive columns until reaching the end
                           of the line.  Scrolling occurs as  described  earlier.
                           Any   characters   after  the  newline  character  are
                           inserted starting at the start of the new line.

                           In an insert operation, newline moves  the  cursor  to
                           the  start  of  a  new line.  Any characters after the
                           newline character are placed at the start of  the  new
                           line.

                           The filter function may inhibit this processing.
       tab                 Tab  characters  in text move subsequent characters to
                           the next horizontal tab stop.  By default,  tab  stops
                           are in column 0, 8, 16, and so on.

                           In an insert or add operation, Curses inserts or adds,
                           respectively, the background character into successive
                           columns until reaching the next tab stop. If there are
                           no more tab stops in the current  line,  wrapping  and
                           scrolling occur as described earlier.
       ---------------------------------------------------------------------------


   Control Characters    [Toc]    [Back]
       The  Curses  functions that perform special-character processing
 conceptually convert  control  characters  to  the
       caret (^) character, followed by a second character (which
       is an uppercase letter if it  is  alphabetic),  and  write
       this  string to the window in place of the control character.
  The functions that retrieve text from the window  do
       not retrieve the original control character.

   Rendition of Characters Placed into a Window    [Toc]    [Back]
       When  the  application  adds  or inserts characters into a
       window, assuming the character is not the space character,
       then the window receives the following: The character that
       the application specifies The color that  the  application
       specifies  or the window color if the application does not
       specify a color The attributes specified

              In this case, a logically  inclusive  OR  operation
              combines  the  specified attributes with the window
              attributes.

       If the character that the application adds or inserts into
       a window is the space character, then the window receives:
       The background character The color  that  the  application
       specifies, or the window color if the application does not
       specify a color The attributes specified

              In this case, a logically  inclusive  OR  operation
              combines  the  specified attributes with the window
              attributes.

   Input Processing    [Toc]    [Back]
       The Curses input model  provides  a  variety  of  ways  to
       obtain input from the keyboard.

   Keypad Processing    [Toc]    [Back]
       The  application  can enable or disable keypad translation
       by calling keypad.  When translation  is  enabled,  Curses
       attempts  to  translate  a sequence of terminal input that
       represents the pressing of a function key  into  a  single
       key  code.   When  translation  is disabled, Curses passes
       terminal input to the application  without  such  translation,
 and the application must interpret the input.

       The  complete set of key codes for keypad keys that Curses
       can process is  specified  by  the  constants  defined  in
       <curses.h> whose names begin with KEY_. Each terminal type
       described in the terminfo database may support some or all
       of  these  key  codes. The terminfo database specifies the
       sequence of input characters from the terminal  type  that
       correspond to each key code.

       Curses  cannot  translate  keypad  keys on terminals where
       pressing the keys does not transmit a unique sequence.

       When translation is enabled and a character that could  be
       the  beginning  of  a  function  key  (such  as escape) is
       received, Curses notes the time  and  begins  accumulating
       characters.  If Curses receives additional characters that
       represent the pressing of a keypad key, within an unspecified
  interval  from  the  time  the  first  character was
       received, then Curses converts this input to  a  key  code
       for  presentation  to the application.  If such characters
       are not received during this interval, translation of this
       input  does  not  occur  and the individual characters are
       presented to the application separately.  (Because  Curses
       waits  for  this  interval  to accumulate a key code, many
       terminals experience a  delay  between  the  time  a  user
       presses the escape key and the time the escape is returned
       to the application.)

       In addition, No Timeout Mode provides  that  in  any  case
       where Curses has received part of a function key sequence,
       Curses waits indefinitely for the complete  key  sequence.
       The  "unspecified  interval"  in  the  previous  paragraph
       becomes infinite in No  Timeout  Mode.   No  Timeout  Mode
       allows  the  use  of function keys over slow communication
       lines.  No Timeout Mode not only lets the  user  type  the
       individual  characters of a function key sequence but also
       delays application response when the user types a  character
  (not  a  function  key)  that begins the function key
       sequence.  For this reason, in No Timeout Mode, many  terminals
 will appear to hang between the time a user presses
       the escape key and the time another key  is  pressed.   No
       Timeout Mode is switchable by calling notimeout.

       If  any  special characters are defined or redefined to be
       characters that are members of a  function  key  sequence,
       then  Curses  will  be  unable  to recognize and translate
       those function keys.

       Several of the modes discussed in  the  next  section  are
       described  in  terms  of availability of input.  If keypad
       translation is enabled, then input is not  available  from
       the  time  Curses begins receiving a keypad sequence until
       the sequence is completely received or until the  interval
       has elapsed.

   Input Modes    [Toc]    [Back]
       Four  mutually-exclusive Curses input modes let the application
 control the effect of certain  characters.  In  the
       following  table, the term "special characters" represents
       flow-control  characters,  the  interrupt  character,  the
       erase character, and the kill character:

       -------------------------------------------------------------------------
       Input Mode        Effect
       -------------------------------------------------------------------------
       Cooked Mode       This  mode  achieves  normal line-at-a-time processing
                         with all special characters handled outside the application.
 Cooked mode achieves the same effect as canonical-mode
 input processing as  specified  in  the  XBD
                         specification.  The state of the ISIG and IXON options
                         are not changed upon entering  this  mode  by  calling
                         cbreak, and are set upon entering this mode by calling
                         noraw.
       cbreak Mode       Characters typed by the user are immediately available
                         to the application and Curses does not perform special
                         processing on either the erase character or  the  kill
                         character.   An  application can select cbreak mode to
                         do its own line editing but to let the abort character
                         be  used  to  abort  the task.  This mode achieves the
                         same effect as noncanonical mode, Case  B  input  processing
 (with MIN set to 1 and ICRNL cleared) as specified
 in the XBD specification.  The state of the ISIG
                         and  IXON  options  are not changed upon entering this
                         mode.
       Half-Delay Mode   The effect is the same as  cbreak  Mode,  except  that
                         input functions wait until a character is available or
                         an  interval  defined  by  the  application   elapses,
                         whichever  comes  first.   This mode achieves the same
                         effect as noncanonical mode, Case C  input  processing
                         (with  TIME set to the value specified by the application)
 as specified  in  the  XBD  specification.   The
                         state  of  the  ISIG  and IXON options are not changed
                         upon entering this mode.
       Raw Mode          Raw mode gives the application  maximum  control  over
                         terminal input. The application sees each character as
                         it is typed.  This achieves the same  effect  as  noncanonical
  mode,  Case D input processing as specified
                         in the XBD specification.  The ISIG and  IXON  options
                         are cleared upon entering this mode.
       -------------------------------------------------------------------------

       The terminal interface settings are recorded when the process
 calls initscr or newterm  to  initialize  Curses  and
       restores  these  settings when endwin is called.  The initial
 input mode for Curses operations is cbreak mode.

       The behavior of the Break key depends on other bits in the
       display driver that are not set by Curses.

   Delay Modes    [Toc]    [Back]
       Two  mutually-exclusive  delay  modes  specify how quickly
       certain Curses functions return to  the  application  when
       there  is  no  terminal input waiting when the function is
       called:




       No Delay   The function fails.
       Delay      The application waits until the implementation  passes
                  text  through  to  the  application.  If cbreak or Raw
                  Mode is set, the application  waits  until  after  one
                  character  is passed. Otherwise, the application waits
                  until after the first newline, end-of-line, or end-offile
 character.

       The  effect of No Delay Mode on function key processing is
       unspecified.

   Echo Processing    [Toc]    [Back]
       Echo mode determines whether Curses echoes  typed  characters
  to the screen.  The effect of Echo mode is analogous
       to the effect of the ECHO flag in the local mode field  of
       the  termios structure associated with the terminal device
       connected to the window.  However,  Curses  always  clears
       the  ECHO flag while it is operating, to inhibit the operating
 system from performing echoing.  The method of echoing
  characters is not identical to the operating system's
       method of echoing characters because Curses performs additional
 processing of terminal input.

       If in Echo mode, Curses performs its own echoing. Any visible
 input character is stored in the current or specified
       window  by the input function that the application called,
       at that window's cursor position,  as  though  addch  were
       called,  with  all consequent effects such as cursor movement
 and wrapping.

       If not in Echo mode,  the  application  must  perform  any
       echoing  of input.  Applications usually disable Echo Mode
       because they often perform their own  echoing  in  a  controlled
 area of the screen or do not echo at all.

   Initializing the Curses Environment    [Toc]    [Back]
       To initialize the Curses environment, the application must
       call the initscr or newterm routine before  using  any  of
       the other routines that deal with windows and screens. The
       application must call the endwin routine  before  exiting.
       To  get  character-at-a-time  input  without echoing (most
       interactive, screen-oriented programs want this), applications
 should use the following sequence:

       initscr(); cbreak(); noecho();

       Most applications also use the following sequence:

       nonl(); intrflush(stdscr,FALSE); keypad(stdscr,TRUE);

       Before  a Curses program is run, the tab stops of the terminal
 should be set and  its  initialization  strings,  if
       defined,  must be output. Applications can do this by executing
 the tput init command  after  exporting  the  shell
       environment  variable  TERM.  (See terminfo(4) for further
       details.)

   Function Name Conventions    [Toc]    [Back]
       The reference pages often present families of Curses functions.
  The  names  of  different functions in each family
       include a basic name, which is combined with prefixes  and
       infixes  to  indicate  specific  programming options.  The
       following list explains the naming conventions for  Curses
       functions:  A function with the basic name operates on the
       window stdscr.  A function with the same name plus  the  w
       prefix operates on a window specified by the win argument.

              When the  reference  page  for  a  function  family
              refers  to  the "current or specified window," this
              means stdscr for the functions  whose  names  begin
              with the basic name and the window specified by win
              for the functions whose names begin with w.

              Functions whose names have the p prefix require  an
              argument  that  is  a  pad  instead of a window.  A
              function with the basic name operates based on  the
              current  cursor  position (of the current or specified
 window, as described above).  A function  with
              the  same  name plus the mv prefix moves the cursor
              to a position specified by the y  and  x  arguments
              before performing the specified operation.

              When  the  reference  page  for  a  function family
              refers to the "current or specified position," this
              means  the  cursor position for the functions whose
              names begin with the basic name  and  the  position
              (y, x) for functions whose names begin with mv.

              The  mvw  prefix  also  exists  and combines the mv
              semantics discussed here with the w semantics  discussed
 in the preceding list item.  In the function
              argument list, the window argument is always specified
 before the arguments for coordinates.  A function
 with the basic name is often provided for historical
  compatibility and operates only on singlebyte
 characters.  A function  with  the  same  name
              plus the w infix operates on wide (multibyte) characters.
  A function with the same name plus the  _w
              infix operates on complex characters and their renditions.
  A  particular  reference  page  discusses
              functions  in  only  one of these three categories.
              When a function with the basic name operates  on  a
              single character or a null-terminated string, there
              is sometimes a function with the same name plus the
              n infix that operates on a specific number of characters.
  In this case, the function includes  an  n
              argument that specifies the number of characters to
              process.  The respective reference  page  specifies
              the outcome if the value of n is inappropriate.

   Function Families    [Toc]    [Back]
       The following table lists each family of Curses functions.
       The "s", "w", and "c"  columns,  whose  entries  are  more
       fully  explained  in the Legend following the table, indicate
 whether the function  processes  special  characters,
       performs wrapping, and advances the cursor.

       Function families include most, but not all, the functions
       in the Curses library. See the  section  titled  Index  of
       Routine  Names  for  a complete and alphabetically ordered
       list of Curses functions, along with the  reference  pages
       where they are described.

       ---------------------------------------------------------------------------
       Function Names         Description                         s     w     c
       ---------------------------------------------------------------------------
                              Add (Overwrite) Family
       [mv][w]addch           Add a character                     Y     Y     Y
       [mv][w]addch[n]str     Add a character string              N     N     N
       [mv][w]add[n]str       Add a string                        Y     Y     Y
       [mv][w]add[n]wstr      Add a wide character string         Y     Y     Y

       [mv][w]add_wch         Add  a  wide character and rendi-   Y     Y     Y
                              tion
       [mv][w]add_wch[n]str   Add an array of  wide  characters   ?     N     N
                              and renditions
                              Change Renditions Family
       [mv][w]chgat           Change  renditions  of characters   -     N     N
                              in a window
                              Delete Family
       [mv][w]delch           Delete a character                  -     -     N
                              Get Family (Get Input  from  Keyboard
 to Window)
       [mv][w]getch           Get a character                     Y     Y     Y
       [mv][w]get[n]str       Get a character string              Y     Y     Y
       [mv][w]get_wch         Get a wide character                Y     Y     Y
       [mv][w]get[n]_wstr     Get  an  array of wide characters   Y     Y     Y
                              and key codes
                              Explicit Cursor Movement Family
       [w]move                Move the cursor                     -     -     -
                              Input Family (Read Back From Window)

       [mv][w]inch            Input a character                   -     -     -
       [mv][w]inch[n]str      Input  an array of characters and   -     -     -
                              attributes
       [mv][w]in[n]str        Input a string                      -     -     -
       [mv][w]in[n]wstr       Input a string of wide characters   -     -     -
       [mv][w]in_wch          Input a wide character and rendi-   -     -     -
                              tion
       [mv][w]in_wch[n]str    Input an array of wide characters   -     -     -
                              and renditions
                              Insert Family
       [mv][w]insch           Insert a character                  Y     N     N
       [mv][w]ins[n]str       Insert a character string           Y     N     N
       [mv][w]ins_[n]wstr     Insert a wide-character string      Y     N     N
       [mv][w]ins_wch         Insert a wide character             Y     N     N
                              Print and Scan Family
       [mv][w]printw          Print formatted output              -     -     -
       [mv][w]scanw           Convert formatted output            -     -     -
       ---------------------------------------------------------------------------

       Legend    [Toc]    [Back]

       The following notation indicates the effect  when  characters
  are  moved to the screen.  (For functions in the Get
       family, this effect applies only when echoing is enabled.)

       s   Y  means these functions perform special-character processing.


           N means they do not.

           ? means the results are unspecified  when  these  functions
           are applied to special characters.

           - means this attribute does not apply to these functions.
       w   Y means these functions perform wrapping.

           N means they do not.

           - means this attribute does not apply to these functions.
       c   Y means these functions advance the cursor.

           N means they do not.

           - means this attribute does not apply to these functions.



   Index of Routine Names    [Toc]    [Back]
       The following index lists each Curses routine and the name
       of the reference page on which the routine  is  described.
       An  asterisk  following the routine name indicates that it
       conforms to the X/Open UNIX standard (Version 4.2  of  the
       X/Open   Curses   CAE   specification).    curs_add_wch(3)
       curs_add_wchstr(3)    curs_add_wchstr(3)     curs_addch(3)
       curs_addchstr(3)      curs_addchstr(3)      curs_addstr(3)
       curs_addwstr(3) curs_addstr(3) curs_addwch(3) curs_addwchstr(3)  curs_addwchstr(3) curs_addwstr(3) curs_attr_get(3)
       curs_attr_get(3)     curs_attr_get(3)     curs_attr_get(3)
       curs_attr(3)  curs_attr(3)  curs_attr(3) curs_termattrs(3)
       curs_beep(3)  curs_bkgd(3)   curs_bkgd(3)   curs_bkgrnd(3)
       curs_bkgrnd(3) curs_border(3) curs_border_set(3) curs_border(3)  curs_border_set(3)  curs_color(3)   curs_inopts(3)
       curs_chgat(3)  curs_clear(3) curs_outopts(3) curs_clear(3)
       curs_clear(3) curs_color(3) curs_color(3) curs_attr_get(3)
       curs_overlay(3)  curs_kernel(3)  curs_kernel(3)  curs_kernel(3)   curs_terminfo(3)    curs_util(3)    curs_delch(3)
       curs_deleteln(3)  curs_initscr(3) curs_window(3) curs_window(3)   curs_refresh(3)    curs_util(3)    curs_window(3)
       curs_inopts(3)        curs_add_wch(3)        curs_addch(3)
       curs_addwch(3) curs_initscr(3) curs_clear(3)  curs_termattrs(3)    curs_termattrs(3)    curs_util(3)   curs_beep(3)
       curs_util(3)       curs_get_wch(3)        curs_get_wstr(3)
       curs_getyx(3)   curs_bkgrnd(3)   curs_getch(3)  curs_getcchar(3)  curs_getyx(3)   curs_get_wstr(3)   curs_getstr(3)
       curs_getwstr(3)        curs_getyx(3)        curs_getstr(3)
       curs_getwch(3) curs_util(3) curs_getwstr(3)  curs_getyx(3)
       curs_inopts(3)  curs_color(3)  curs_termattrs(3) curs_termattrs(3)  curs_border(3)   curs_border_set(3)   curs_outopts(3)   curs_outopts(3)  curs_outopts(3)  curs_in_wch(3)
       curs_in_wchstr(3)      curs_in_wchstr(3)      curs_inch(3)
       curs_inchstr(3)        curs_inchstr(3)       curs_color(3)
       curs_color(3) curs_initscr(3) curs_instr(3) curs_inwstr(3)
       curs_ins_wstr(3)      curs_ins_wch(3)     curs_ins_wstr(3)
       curs_insch(3)      curs_deleteln(3)       curs_deleteln(3)
       curs_insstr(3)        curs_inswstr(3)       curs_insstr(3)
       curs_instr(3)        curs_inswch(3)        curs_inswstr(3)
       curs_inopts(3)  curs_inwch(3) curs_inwchstr(3) curs_inwchstr(3)    curs_inwstr(3)    curs_touch(3)    curs_touch(3)
       curs_initscr(3)  curs_util(3)  curs_util(3) curs_inopts(3)
       curs_termattrs(3)    curs_outopts(3)     curs_termattrs(3)
       curs_inopts(3)  curs_move(3) curs_add_wch(3) curs_add_wchstr(3) curs_add_wchstr(3)  curs_addch(3)  curs_addchstr(3)
       curs_addchstr(3)       curs_addstr(3)      curs_addwstr(3)
       curs_addstr(3)      curs_addwch(3)       curs_addwchstr(3)
       curs_addwchstr(3)  curs_addwstr(3) curs_chgat(3) curs_terminfo(3)  curs_delch(3)   curs_window(3)   curs_get_wch(3)
       curs_get_wstr(3)  curs_getch(3) curs_get_wstr(3) curs_getstr(3)   curs_getwstr(3)   curs_getstr(3)   curs_getwch(3)
       curs_getwstr(3)      curs_border(3)     curs_border_set(3)
       curs_in_wch(3)     curs_in_wchstr(3)     curs_in_wchstr(3)
       curs_inch(3) curs_inchstr(3) curs_inchstr(3) curs_instr(3)
       curs_inwstr(3)      curs_ins_wstr(3)       curs_ins_wch(3)
       curs_insch(3)        curs_insstr(3)        curs_inswstr(3)
       curs_insstr(3)  curs_instr(3)  curs_inswch(3)   curs_inswstr(3)   curs_inwch(3)  curs_inwchstr(3)  curs_inwchstr(3)
       curs_inwstr(3) curs_printw(3) curs_scanw(3) curs_border(3)
       curs_border_set(3)    curs_add_wch(3)   curs_add_wchstr(3)
       curs_add_wchstr(3)     curs_addch(3)      curs_addchstr(3)
       curs_addchstr(3)       curs_addstr(3)      curs_addwstr(3)
       curs_addstr(3)      curs_addwch(3)       curs_addwchstr(3)
       curs_addwchstr(3)       curs_addwstr(3)      curs_chgat(3)
       curs_delch(3)       curs_get_wch(3)       curs_get_wstr(3)
       curs_getch(3)  curs_get_wstr(3)  curs_getstr(3) curs_getwstr(3)   curs_getstr(3)   curs_getwch(3)   curs_getwstr(3)
       curs_border(3)      curs_border_set(3)      curs_window(3)
       curs_in_wch(3)     curs_in_wchstr(3)     curs_in_wchstr(3)
       curs_inch(3) curs_inchstr(3) curs_inchstr(3) curs_instr(3)
       curs_inwstr(3)      curs_ins_wstr(3)       curs_ins_wch(3)
       curs_ins_wstr(3)        curs_insch(3)       curs_insstr(3)
       curs_insstr(3)  curs_instr(3)  curs_inswch(3)   curs_inswstr(3)  curs_inwch(3)  curs_inwchstr(3)  curs_in_wchstr(3)
       curs_inwstr(3) curs_printw(3) curs_scanw(3) curs_borde

 Similar pages
Name OS Title
ncurses FreeBSD CRT screen handling and optimization package
ncurses OpenBSD CRT screen handling and optimization package
curses FreeBSD CRT screen handling and optimization package
curses OpenBSD CRT screen handling and optimization package
curses IRIX CRT screen handling and optimization package
dselect Linux console Debian package handling frontend
apt-cache Linux APT package handling utility -- cache manipulator
apt-get Linux APT package handling utility -- command-line interface
clear Tru64 Clears terminal screen
clear IRIX clear terminal screen
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service