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 the GNU
23 distribution site [1]ftp://prep.ai.mit.edu/pub/gnu. It is also
24 available at [2]ftp://ftp.clark.net/pub/dickey/ncurses.
28 The ncurses package is fully compatible with SVr4 (System V Release 4)
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 SVr4 panels library, supporting a stack of
37 windows with backing store, is included.
38 * An emulation of the SVr4 menus library, supporting a uniform but
39 flexible interface for menu programming, is included.
40 * An emulation of the SVr4 form library, supporting data collection
41 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 * Ada95 and C++ bindings.
64 * Support for mouse event reporting under xterm.
65 * Extended mouse support via Alessandro Rubini's gpm package.
66 * The function wresize() allows you to resize windows, preserving
68 * The function use_default_colors() allows you to use the terminal's
69 default colors for the default color pair, achieving the effect of
71 * The functions keyok() and define_key() allow you to better control
72 the use of function keys, e.g., disabling the ncurses KEY_MOUSE,
73 or by defining more than one control sequence to map to a given
75 * Support for 16-color terminals, such as aixterm and XFree86 xterm.
76 * Better cursor-movement optimization. The package now features a
77 cursor-local-movement computation more efficient than either BSD's
79 * Super hardware scrolling support. The screen-update code
80 incorporates a novel, simple, and cheap algorithm that enables it
81 to make optimal use of hardware scrolling, line-insertion, and
82 line-deletion for screen-line movements. This algorithm is more
83 powerful than the 4.4BSD curses quickch() routine.
84 * Real support for terminals with the magic-cookie glitch. The
85 screen-update code will refrain from drawing a highlight if the
86 magic- cookie unattributed spaces required just before the
87 beginning and after the end would step on a non-space character.
88 It will automatically shift highlight boundaries when doing so
89 would make it possible to draw the highlight without changing the
90 visual appearance of the screen.
91 * It is possible to generate the library with a list of pre-loaded
92 fallback entries linked to it so that it can serve those terminal
93 types even when no terminfo tree or termcap file is accessible
94 (this may be useful for support of screen-oriented programs that
95 must run in single-user mode).
96 * The tic(1)/captoinfo utility provided with ncurses has the ability
97 to translate many termcaps from the XENIX, IBM and AT&T extension
99 * A BSD-like tset(1) utility is provided.
100 * The ncurses library and utilities will automatically read terminfo
101 entries from $HOME/.terminfo if it exists, and compile to that
102 directory if it exists and the user has no write access to the
103 system directory. This feature makes it easier for users to have
104 personal terminfo entries without giving up access to the system
106 * You may specify a path of directories to search for compiled
107 descriptions with the environment variable TERMINFO_DIRS (this
108 generalizes the feature provided by TERMINFO under stock System
110 * In terminfo source files, use capabilities may refer not just to
111 other entries in the same source file (as in System V) but also to
112 compiled entries in either the system terminfo directory or the
113 user's $HOME/.terminfo directory.
114 * A script (capconvert) is provided to help BSD users transition
115 from termcap to terminfo. It gathers the information in a TERMCAP
116 environment variable and/or a ~/.termcap local entries file and
117 converts it to an equivalent local terminfo tree under
119 * Automatic fallback to the /etc/termcap file can be compiled in
120 when it is not possible to build a terminfo tree. This feature is
121 neither fast nor cheap, you don't want to use it unless you have
123 * The table-of-entries utility toe makes it easy for users to see
124 exactly what terminal types are available on the system.
125 * The library meets the XSI requirement that every macro entry point
126 have a corresponding function which may be linked (and will be
127 prototype-checked) if the macro definition is disabled with
129 * An HTML "Introduction to Programming with NCURSES" document
130 provides a narrative introduction to the curses programming
135 Numerous bugs present in earlier versions have been fixed; the library
136 is far more reliable than it used to be. Bounds checking in many
137 `dangerous' entry points has been improved. The code is now type-safe
138 according to gcc -Wall. The library has been checked for malloc leaks
139 and arena corruption by the Purify memory-allocation tester.
141 The ncurses code has been tested with a wide variety of applications
145 directory-editor [3]ftp://ftp.clark.net/pub/dickey/ded.
148 the underlying application used in Slackware's setup, and the
149 basis for similar applications on Linux.
152 the character-screen WWW browser
154 Midnight Commander 4.1
161 file-transfer utility
164 New vi versions 1.50 are able to use ncurses versions 1.9.7 and
171 Volks-Hypertext browser for the Jargon File
173 as well as some that use ncurses for the terminfo support alone:
179 tin 1.4 newsreader, supporting color, MIME
180 [4]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
183 vi-like-emacs [5]ftp://ftp.clark.net/pub/dickey/vile.
185 The ncurses distribution includes a selection of test programs
186 (including a few games).
188 Who's Who and What's What
190 The original developers of ncurses are [6]Zeyd Ben-Halim and [7]Eric
191 S. Raymond. Ongoing work is being done by [8]Thomas Dickey and
192 [9]Jürgen Pfeifer. [10]Florian La Roche acts as the maintainer for the
193 Free Software Foundation, which holds the copyright on ncurses.
194 Contact the current maintainers at [11]bug-ncurses@gnu.org.
196 To join the ncurses mailing list, please write email to
197 bug-ncurses-request@gnu.org containing the line:
198 subscribe <name>@<host.domain>
200 This list is open to anyone interested in helping with the development
201 and testing of this package.
203 Beta versions of ncurses and patches to the current release are made
204 available at [12]ftp://ftp.clark.net/pub/dickey/ncurses.
208 * Extended-level XPG4 conformance, with internationalization
210 * Ports to more systems, including DOS and Windows.
212 We need people to help with these projects. If you are interested in
213 working on them, please join the ncurses list.
215 Other Related Resources
217 The distribution includes and uses a version of the terminfo-format
218 terminal description file maintained by Eric Raymond.
219 [13]http://earthspace.net/~esr/terminfo.
221 You can find lots of information on terminal-related topics not
222 covered in the terminfo file at [14]Richard Shuford's archive.
226 1. ftp://prep.ai.mit.edu/pub/gnu
227 2. ftp://ftp.clark.net/pub/dickey/ncurses
228 3. ftp://ftp.clark.net/pub/dickey/ded
229 4. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
230 5. ftp://ftp.clark.net/pub/dickey/vile
231 6. mailto:zmbenhal@netcom.com
232 7. http://www.ccil.org/~esr/home.html
233 8. mailto:dickey@clark.net
234 9. mailto:Juergen.Pfeifer@T-Online.de
235 10. mailto:florian@gnu.org
236 11. mailto:bug-ncurses@gnu.org
237 12. ftp://ftp.clark.net/pub/dickey/ncurses
238 13. http://earthspace.net/~esr/terminfo
239 14. http://www.cs.utk.edu/~shuford/terminal_index.html