curses —
screen functions with “optimal” cursor
  motion
Curses Library (libcurses, -lcurses)
  
    | cc | [flags] files -lcurses[libraries] | 
These routines give the user a method of updating screens with reasonable
  optimization. They keep an image of the current screen, and the user sets up
  an image of a new one. Then the refresh() tells the
  routines to make the current screen look like the new one. In order to
  initialize the routines, the routine initscr() must be
  called before any of the other routines that deal with windows and screens are
  used. The routine endwin() should be called before
  exiting. The routine start_color() must be called
  before any of the other routines that deal with color are used.
  - COLUMNS
- The number of columns in the terminal if set. This is usually
      automatically configured by querying the kernel.
- CURSES_TRACE_MASK
- An integer mask that enables specific debugging traces. Enabled only in
      the debug build of curses.
- CURSES_TRACE_FILE
- A file where to output debugging information. Enabled only in the debug
      build of curses.
- ESCDELAY
- The maximum delay in milliseconds between characters in multi-character
      keystrokes (such are arrow keys) where the adjacent characters are
      considered part of the same multi-character sequence. The default is 300
      milliseconds.
- LINES
- The number of lines in the terminal if set. is usually automatically
      configured by querying the kernel.
- TABSIZE
- The number of spaces making up a tab. The default is 8 if not specified by
      the terminal description.
- TERM
- The terminal type of the current terminal.
The NetBSD Curses library complies with the X/Open
  Curses specification, part of the Single Unix Specification.
The Curses package appeared in 4.0BSD.
Ken Arnold
Julian Coleman
Brett Lymn
Roy Marples