4 The ncurses (new curses) library is a freeware emulation of System V
5 Release 4.0 curses. It uses terminfo format, supports pads and color
6 and multiple highlights and forms characters and function-key mapping,
7 and has all the other SYSV-curses enhancements over BSD curses.
9 In mid-June 1995, the maintainer of 4.4BSD curses declared that he
10 considered 4.4BSD curses obsolete, and is encouraging the keepers of
11 Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
14 The ncurses code was developed under Linux. It should port easily to
15 any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
17 The distribution includes the library and support utilities, including
18 a terminfo compiler tic(1), a decompiler infocmp(1), clear(1),
19 tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
20 manual pages are provided for the library and tools.
22 The ncurses distribution is available via anonymous FTP at:
23 [1]ftp://ftp.clark.net/pub/dickey/ncurses. and
24 [2]ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses. It is also carried on
25 the GNU distribution site at [3]ftp://prep.ai.mit.edu/pub/gnu.
29 The ncurses package is fully compatible with SVr4 curses:
31 * All 257 of the SVr4 calls have been implemented (and are
33 * Full support for SVr4 curses features including keyboard mapping,
34 color, forms-drawing with ACS characters, and automatic
35 recognition of keypad and function keys.
36 * An emulation of the System V Release 4 panels library, supporting
37 a stack of windows with backing store, is included.
38 * An emulation of the System V Release 4 menus library, supporting a
39 uniform but flexible interface for menu programming, is included.
40 * An emulation of the System V Release 4 form library, supporting
41 data collection through on-screen forms, is included.
42 * Binary terminfo entries generated by the ncurses tic(1)
43 implementation are bit-for-bit-compatible with the entry format
45 * The utilities have options to allow you to filter terminfo entries
46 for use with less capable curses/terminfo versions such as the
49 The ncurses package also has many useful extensions over SVr4:
51 * The API is 8-bit clean and base-level conformant with the X/OPEN
52 curses specification, XSI Curses (that is, it implements all BASE
53 level features, but not all EXTENDED features). Most
54 EXTENDED-level features not directly concerned with wide-character
55 support are implemented, including many function calls not
56 supported under SVr4 curses (but portability of all calls is
57 documented so you can use the SVr4 subset only).
58 * Unlike SVr4 curses, ncurses can write to the rightmost-bottommost
59 corner of the screen if your terminal has an insert-character
61 * (PC-clone boxes only) Support for access to the IBM PC ROM
62 characters 0-32 through the highlight A_ALTCHARSET.
63 * Support for mouse event reporting under xterm.
64 * The function wresize() allows you to resize windows, preserving
66 * Better cursor-movement optimization. The package now features a
67 cursor-local-movement computation more efficient than either BSD's
69 * Super hardware scrolling support. The screen-update code
70 incorporates a novel, simple, and cheap algorithm that enables it
71 to make optimal use of hardware scrolling, line-insertion, and
72 line-deletion for screen-line movements. This algorithm is more
73 powerful than the 4.4BSD curses quickch() routine.
74 * Real support for terminals with the magic-cookie glitch. The
75 screen-update code will refrain from drawing a highlight if the
76 magic- cookie unattributed spaces required just before the
77 beginning and after the end would step on a non-space character.
78 It will automatically shift highlight boundaries when doing so
79 would make it possible to draw the highlight without changing the
80 visual appearance of the screen.
81 * It is possible to generate the library with a list of pre-loaded
82 fallback entries linked to it so that it can serve those terminal
83 types even when no terminfo tree or termcap file is accessible
84 (this may be useful for support of screen-oriented programs that
85 must run in single-user mode).
86 * The tic(1)/captoinfo utility provided with ncurses has the ability
87 to translate many termcaps from the XENIX, IBM and AT&T extension
89 * A BSD-like tset(1) utility is provided.
90 * The ncurses library and utilities will automatically read terminfo
91 entries from $HOME/.terminfo if it exists, and compile to that
92 directory if it exists and the user has no write access to the
93 system directory. This feature makes it easier for users to have
94 personal terminfo entries without giving up access to the system
96 * You may specify a path of directories to search for compiled
97 descriptions with the environment variable TERMINFO_DIRS (this
98 generalizes the feature provided by TERMINFO under stock System
100 * In terminfo source files, use capabilities may refer not just to
101 other entries in the same source file (as in System V) but also to
102 compiled entries in either the system terminfo directory or the
103 user's $HOME/.terminfo directory.
104 * A script (capconvert) is provided to help BSD users transition
105 from termcap to terminfo. It gathers the information in a TERMCAP
106 environment variable and/or a ~/.termcap local entries file and
107 converts it to an equivalent local terminfo tree under
109 * Automatic fallback to the /etc/termcap file can be compiled in
110 when it is not possible to build a terminfo tree. This feature is
111 neither fast nor cheap, you don't want to use it unless you have
113 * The table-of-entries utility toe makes it easy for users to see
114 exactly what terminal types are available on the system.
115 * The library meets the XSI requirement that every macro entry point
116 have a corresponding function which may be linked (and will be
117 prototype-checked) if the macro definition is disabled with
119 * An HTML "Introduction to Programming with NCURSES" document
120 provides a narrative introduction to the curses programming
125 Numerous bugs present in earlier versions have been fixed; the library
126 is far more reliable than it used to be. Bounds checking in many
127 `dangerous' entry points has been improved. The code is now type-safe
128 according to gcc -Wall. The library has been checked for malloc leaks
129 and arena corruption by the Purify memory-allocation tester.
131 The ncurses code has been tested with a wide variety of applications
135 directory-editor [4]ftp://ftp.clark.net/pub/dickey/ded.
138 the underlying application used in Slackware's setup, and the
139 basis for similar applications on Linux.
142 the character-screen WWW browser
145 file-transfer utility
148 New vi versions 1.50 are able to use ncurses versions 1.9.7 and
155 Volks-Hypertext browser for the Jargon File
157 as well as some that use ncurses for the terminfo support alone:
163 tin (unofficial) newsreader, supporting color, MIME
164 [5]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
167 vi-like-emacs [6]ftp://ftp.clark.net/pub/dickey/vile.
169 The ncurses distribution includes a selection of test programs
170 (including a few games).
172 Who's Who and What's What
174 The original maintainer of ncurses is [7]Zeyd Ben-Halim.
175 Unfortunately, he can only work on the package part time. As a result,
176 since 1.8.1, much of the enhancement work and documentation has been
177 done by [8]Eric S. Raymond. The current primary maintainers are
178 [9]Thomas Dickey and [10]Juergen Pfeifer.
180 There is an ncurses mailing list. It is a majordomo list; to join,
181 write to ncurses-request@mailgate.bsdi.com with a message containing
184 subscribe <name>@<host.domain>
186 This list is open to anyone interested in helping with the development
187 and testing of this package.
189 Beta versions of ncurses and patches to the current release are made
190 available at [11]ftp://ftp.clark.net/pub/dickey/ncurses.
194 * Extended mouse support via Alessandro Rubini's gpm package.
195 * Extended-level XPG4 conformance, with internationalization
197 * Ports to more systems, including DOS and Windows.
199 We need people to help with these projects. If you are interested in
200 working on them, please join the ncurses list.
202 The terminfo/termcap Database
204 The distribution includes and uses a copy of the terminfo-format
205 terminal description file maintained by Eric Raymond. You can download
206 either the [12]termcap or [13]terminfo versions of the terminal-type
207 database from Eric's ncurses page,
208 [14]http://www.ccil.org/~esr/ncurses.html.
210 Other Related Resources
212 You can find lots of information on terminal-related topics not
213 covered in the terminfo file at [15]Richard Shuford's archive.
217 1. ftp://ftp.clark.net/pub/dickey/ncurses
218 2. ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses
219 3. ftp://prep.ai.mit.edu/pub/gnu
220 4. ftp://ftp.clark.net/pub/dickey/ded
221 5. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
222 6. ftp://ftp.clark.net/pub/dickey/vile
223 7. mailto:zmbenhal@netcom.com
224 8. http://www.ccil.org/~esr/home.html
225 9. mailto:dickey@clark.net
226 10. mailto:Juergen.Pfeifer@T-Online.de
227 11. ftp://ftp.clark.net/pub/dickey/ncurses
228 12. http://www.ccil.org/~esr/terminfo/termtypes.tc.gz
229 13. http://www.ccil.org/~esr/terminfo/termtypes.ti.gz
230 14. http://www.ccil.org/~esr/ncurses.html
231 15. http://www.cs.utk.edu/~shuford/terminal_index.html