- Announcing ncurses 4.1
+ Announcing ncurses 5.0
- The ncurses (new curses) library is a freeware emulation of System V
- Release 4.0 curses. It uses terminfo format, supports pads and color
- and multiple highlights and forms characters and function-key mapping,
- and has all the other SYSV-curses enhancements over BSD curses.
+ The ncurses (new curses) library is a free software emulation of
+ curses in System V Release 4.0, and more. It uses terminfo format,
+ supports pads and color and multiple highlights and forms characters
+ and function-key mapping, and has all the other SYSV-curses
+ enhancements over BSD curses.
In mid-June 1995, the maintainer of 4.4BSD curses declared that he
considered 4.4BSD curses obsolete, and is encouraging the keepers of
Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
ncurses.
- The ncurses code was developed under Linux. It should port easily to
- any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
+ The ncurses code was developed under GNU/Linux. It should port easily
+ to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2
+ Warp!
The distribution includes the library and support utilities, including
a terminfo compiler tic(1), a decompiler infocmp(1), clear(1),
tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
manual pages are provided for the library and tools.
- The ncurses distribution is available via anonymous FTP at:
- [1]ftp://ftp.clark.net/pub/dickey/ncurses. and
- [2]ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses. It is also carried on
- the GNU distribution site at [3]ftp://prep.ai.mit.edu/pub/gnu.
+ The ncurses distribution is available via anonymous FTP at the GNU
+ distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. It is also
+ available at [2]ftp://ftp.clark.net/pub/dickey/ncurses.
- Features of ncurses
+ Release Notes
- The ncurses package is fully compatible with SVr4 curses:
+ We decided to release ncurses as a new whole number release (5.0)
+ because it incorporates several interface changes, including some that
+ would invalidate existing shared libraries. These are the highlights
+ from the change-log since ncurses 4.2 release.
+ Interface changes:
+ * The principal source of changes to the interface comes from the
+ release of X/Open Curses in 1997. Earlier versions of ncurses (4.0
+ and before) were based on a draft version of the specification.
+ The release version adds parameters to some functions to support
+ the evolving internationalization of curses. These summarize the
+ impact:
+ + modified several prototypes to correspond with 1997 version
+ of X/Open Curses (affects ABI since developers have used
+ attr_get).
+ + corrected prototypes for slk_* functions, using chtype rather
+ than attr_t.
+ + the slk_attr_{set,off,on} functions need an additional void*
+ parameter according to XSI.
+ + correct macros for wattr_set, wattr_get, separate wattrset
+ macro from these to preserve behavior that allows attributes
+ to be combined with color pair numbers.
+ + reviewed/updated curses.h, term.h against X/Open Curses Issue
+ 4 Version 2. This includes making some parameters
+ NCURSES_CONST rather than const, e.g., in termcap.h.
+ + reviewed/corrected macros in curses.h as per XSI document.
+ + add set_a_attributes and set_pglen_inch to terminfo
+ structure, as per XSI and Solaris 2.5.
+ * The newest version of the X/Open Curses is implemented on Solaris
+ and other vendor's systems. It adds new features to the terminfo
+ descriptions:
+ + implement tparm %l format.
+ + implement tparm printf-style width and precision for %s, %d,
+ %x, %o as per XSI.
+ * We made additional changes to reduce impact by future interface
+ changes:
+ + rename key_names[] array to _nc_key_names since it is not
+ part of the curses interface.
+ + move macro winch to a function, to hide details of struct
+ ldat
+ * modify configure script to embed ABI in shared libraries for HP-UX
+ 10.x (detailed request by Tim Mooney).
+ * modify configuration of shared libraries on Digital Unix so that
+ versioning is embedded in the library, rather than implied by
+ links (patch by Tim Mooney).
+
+ New features:
+ * enable sigwinch handler by default.
+ * turn on hashmap scrolling code by default
+ * improved support for termcap applications
+ + modify tput to accept termcap names as an alternative to
+ terminfo names.
+ + provide support for termcap PC variable by copying it from
+ terminfo data and using it as the padding character in tputs.
+ + provide support for termcap ospeed variable by copying it
+ from the internal cur_term member, and using ospeed as the
+ baudrate reference for the delay_output and tputs functions.
+ + change name-comparisons in lib_termcap to compare no more
+ than 2 characters.
+ + add configure option --enable-tcap-names, which essentially
+ allows users to define new capabilities as in termcap.
+ * add mouse support to ncurses menus.
+ * add mouse and dll support for OS/2 EMX
+ * modify terminfo parsing to accept octal and hexadecimal constants
+ * add configure option --enable-no-padding, to allow environment
+ variable $NCURSES_NO_PADDING to eliminate non-mandatory padding,
+ thereby making terminal emulators (e.g., for vt100) a little more
+ efficient.
+ * modify lib_color.c to eliminate dependency on orig_colors and
+ orig_pair, since SVr4 curses does not require these either, but
+ uses them when they are available.
+ * add -f option to infocmp and tic, which formats the terminfo
+ if/then/else/endif so that they are readable (with newlines and
+ tabs).
+ * modify tic to compile into %'char' form in preference to
+ %{number}, since that is a little more efficient.
+
+ Major bug fixes:
+ * modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
+ problem where ncurses applications which were run via a shell
+ script would hang when given a ^Z. Also, check if the terminal's
+ process group is consistent, i.e., a shell has not taken ownership
+ of it, before deciding to save the current terminal settings in
+ the SIGTSTP handler.
+ * suppress sc/rc capabilities from terminal description if they
+ appear in smcup/rmcup. This affects only scrolling optimization,
+ to fix a problem reported by several people with xterm's alternate
+ screen, though the problem is more general.
+ * modify relative_move and tputs to avoid an interaction with the
+ BSD-style padding. The relative_move function could produce a
+ string to replace on the screen which began with a numeric
+ character, which was then interpreted by tputs as padding.
+ * modify setupterm so that cancelled strings are treated the same as
+ absent strings, cancelled and absent booleans false (does not
+ affect tic, infocmp).
+ * modify lib_vidattr.c to allow for terminal types (e.g.,
+ xterm-color) which may reset all attributes in the 'op'
+ capability, so that colors are set before turning on bold and
+ other attributes, but still after turning attributes off.
+ * use 'access()' to check if ncurses library should be permitted to
+ open or modify files with fopen/open/link/unlink/remove calls, in
+ case the calling application is running in setuid mode.
+ * correction to doupdate, for case where terminal does not support
+ insert/delete character. The logic did not check that there was a
+ difference in alignment of changes to old/new screens before
+ repainting the whole non-blank portion of the line. Modified to
+ fall through into logic that reduces by the portion which does not
+ differ.
+
+ Features of Ncurses
+
+ The ncurses package is fully compatible with SVr4 (System V Release 4)
+ curses:
* All 257 of the SVr4 calls have been implemented (and are
documented).
* Full support for SVr4 curses features including keyboard mapping,
color, forms-drawing with ACS characters, and automatic
recognition of keypad and function keys.
- * An emulation of the System V Release 4 panels library, supporting
- a stack of windows with backing store, is included.
- * An emulation of the System V Release 4 menus library, supporting a
- uniform but flexible interface for menu programming, is included.
- * An emulation of the System V Release 4 form library, supporting
- data collection through on-screen forms, is included.
+ * An emulation of the SVr4 panels library, supporting a stack of
+ windows with backing store, is included.
+ * An emulation of the SVr4 menus library, supporting a uniform but
+ flexible interface for menu programming, is included.
+ * An emulation of the SVr4 form library, supporting data collection
+ through on-screen forms, is included.
* Binary terminfo entries generated by the ncurses tic(1)
implementation are bit-for-bit-compatible with the entry format
SVr4 curses uses.
HP/UX and AIX ports.
The ncurses package also has many useful extensions over SVr4:
-
* The API is 8-bit clean and base-level conformant with the X/OPEN
- curses specification, XSI Curses (that is, it implements all BASE
+ curses specification, XSI curses (that is, it implements all BASE
level features, but not all EXTENDED features). Most
EXTENDED-level features not directly concerned with wide-character
support are implemented, including many function calls not
supported under SVr4 curses (but portability of all calls is
documented so you can use the SVr4 subset only).
- * Unlike SVr4 curses, ncurses can write to the rightmost-bottommost
+ * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
corner of the screen if your terminal has an insert-character
capability.
- * (PC-clone boxes only) Support for access to the IBM PC ROM
- characters 0-32 through the highlight A_ALTCHARSET.
- * Support for mouse event reporting under xterm.
+ * Ada95 and C++ bindings.
+ * Support for mouse event reporting with X Window xterm and OS/2
+ console windows.
+ * Extended mouse support via Alessandro Rubini's gpm package.
* The function wresize() allows you to resize windows, preserving
their data.
+ * The function use_default_colors() allows you to use the terminal's
+ default colors for the default color pair, achieving the effect of
+ transparent colors.
+ * The functions keyok() and define_key() allow you to better control
+ the use of function keys, e.g., disabling the ncurses KEY_MOUSE,
+ or by defining more than one control sequence to map to a given
+ key code.
+ * Support for 16-color terminals, such as aixterm and XFree86 xterm.
* Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
or System V's.
and arena corruption by the Purify memory-allocation tester.
The ncurses code has been tested with a wide variety of applications
- including:
+ including (versions starting with those noted):
+ cdk
+ Curses Development Kit [3]Curses Development Kit
+ [4]ftp://ftp.clark.net/pub/dickey/cdk.
+
ded
- directory-editor [4]ftp://ftp.clark.net/pub/dickey/ded.
+ directory-editor [5]ftp://ftp.clark.net/pub/dickey/ded.
dialog
the underlying application used in Slackware's setup, and the
- basis for similar applications on Linux.
+ basis for similar applications on GNU/Linux.
- lynx-2.7
+ lynx
the character-screen WWW browser
- ncftp 2.0
+ Midnight Commander 4.1
+ file manager
+
+ mutt
+ mail utility
+
+ ncftp
file-transfer utility
nvi
New vi versions 1.50 are able to use ncurses versions 1.9.7 and
later.
+ tin
+ newsreader, supporting color, MIME
+ [6]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
+
taper
tape archive utility
as well as some that use ncurses for the terminfo support alone:
- minicom-1.75
+ minicom
terminal emulator
- tin-unoff
- tin (unofficial) newsreader, supporting color, MIME
- [5]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
-
vile
- vi-like-emacs [6]ftp://ftp.clark.net/pub/dickey/vile.
+ vi-like-emacs [7]ftp://ftp.clark.net/pub/dickey/vile.
The ncurses distribution includes a selection of test programs
(including a few games).
Who's Who and What's What
- The original maintainer of ncurses is [7]Zeyd Ben-Halim.
- Unfortunately, he can only work on the package part time. As a result,
- since 1.8.1, much of the enhancement work and documentation has been
- done by [8]Eric S. Raymond. The current primary maintainers are
- [9]Thomas Dickey and [10]Juergen Pfeifer.
+ The original developers of ncurses are [8]Zeyd Ben-Halim and [9]Eric
+ S. Raymond. Ongoing work is being done by [10]Thomas Dickey and
+ [11]Jürgen Pfeifer. [12]Thomas Dickey acts as the maintainer for the
+ Free Software Foundation, which holds the copyright on ncurses.
+ Contact the current maintainers at [13]bug-ncurses@gnu.org.
- There is an ncurses mailing list. It is a majordomo list; to join,
- write to ncurses-request@mailgate.bsdi.com with a message containing
- the line:
-
+ To join the ncurses mailing list, please write email to
+ bug-ncurses-request@gnu.org containing the line:
subscribe <name>@<host.domain>
This list is open to anyone interested in helping with the development
and testing of this package.
Beta versions of ncurses and patches to the current release are made
- available at [11]ftp://ftp.clark.net/pub/dickey/ncurses.
+ available at [14]ftp://ftp.clark.net/pub/dickey/ncurses.
Future Plans
- * Extended mouse support via Alessandro Rubini's gpm package.
* Extended-level XPG4 conformance, with internationalization
support.
* Ports to more systems, including DOS and Windows.
We need people to help with these projects. If you are interested in
working on them, please join the ncurses list.
-The terminfo/termcap Database
-
- The distribution includes and uses a copy of the terminfo-format
- terminal description file maintained by Eric Raymond. You can download
- either the [12]termcap or [13]terminfo versions of the terminal-type
- database from Eric's ncurses page,
- [14]http://www.ccil.org/~esr/ncurses.html.
-
Other Related Resources
+ The distribution includes and uses a version of the terminfo-format
+ terminal description file maintained by Eric Raymond.
+ [15]http://earthspace.net/~esr/terminfo.
+
You can find lots of information on terminal-related topics not
- covered in the terminfo file at [15]Richard Shuford's archive.
+ covered in the terminfo file at [16]Richard Shuford's archive.
References
- 1. ftp://ftp.clark.net/pub/dickey/ncurses
- 2. ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses
- 3. ftp://prep.ai.mit.edu/pub/gnu
- 4. ftp://ftp.clark.net/pub/dickey/ded
- 5. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
- 6. ftp://ftp.clark.net/pub/dickey/vile
- 7. mailto:zmbenhal@netcom.com
- 8. http://www.ccil.org/~esr/home.html
- 9. mailto:dickey@clark.net
- 10. mailto:Juergen.Pfeifer@T-Online.de
- 11. ftp://ftp.clark.net/pub/dickey/ncurses
- 12. http://www.ccil.org/~esr/terminfo/termtypes.tc.gz
- 13. http://www.ccil.org/~esr/terminfo/termtypes.ti.gz
- 14. http://www.ccil.org/~esr/ncurses.html
- 15. http://www.cs.utk.edu/~shuford/terminal_index.html
+ 1. ftp://ftp.gnu.org/pub/gnu/ncurses
+ 2. ftp://ftp.clark.net/pub/dickey/ncurses
+ 3. http://www.vexus.ca/CDK.html
+ 4. ftp://ftp.clark.net/pub/dickey/cdk
+ 5. ftp://ftp.clark.net/pub/dickey/ded
+ 6. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
+ 7. ftp://ftp.clark.net/pub/dickey/vile
+ 8. mailto:zmbenhal@netcom.com
+ 9. http://www.ccil.org/~esr/home.html
+ 10. mailto:dickey@clark.net
+ 11. mailto:juergen.pfeifer@gmx.net
+ 12. mailto:dickey@clark.net
+ 13. mailto:bug-ncurses@gnu.org
+ 14. ftp://ftp.clark.net/pub/dickey/ncurses
+ 15. http://earthspace.net/~esr/terminfo
+ 16. http://www.cs.utk.edu/~shuford/terminal_index.html