1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 $Id: announce.html,v 1.54 2011/02/25 23:24:46 tom Exp $
4 ****************************************************************************
5 * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
7 * Permission is hereby granted, free of charge, to any person obtaining a *
8 * copy of this software and associated documentation files (the *
9 * "Software"), to deal in the Software without restriction, including *
10 * without limitation the rights to use, copy, modify, merge, publish, *
11 * distribute, distribute with modifications, sublicense, and/or sell *
12 * copies of the Software, and to permit persons to whom the Software is *
13 * furnished to do so, subject to the following conditions: *
15 * The above copyright notice and this permission notice shall be included *
16 * in all copies or substantial portions of the Software. *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
21 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
24 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
26 * Except as contained in this notice, the name(s) of the above copyright *
27 * holders shall not be used in advertising or otherwise to promote the *
28 * sale, use or other dealings in this Software without prior written *
30 ****************************************************************************
35 <meta name="generator" content=
36 "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
38 <title>Announcing ncurses 5.8</title>
39 <link rev="made" href="mailto:bug-ncurses@gnu.org">
40 <meta http-equiv="Content-Type" content=
41 "text/html; charset=us-ascii">
45 <h1>Announcing ncurses 5.8</h1>The ncurses (new curses)
46 library is a free software emulation of curses in System V
47 Release 4.0, and more. It uses terminfo format, supports pads and
48 color and multiple highlights and forms characters and
49 function-key mapping, and has all the other SYSV-curses
50 enhancements over BSD curses.
52 <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
53 that he considered 4.4BSD curses obsolete, and encouraged the
54 keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
55 switch over to ncurses.</p>
57 <p>The ncurses code was developed under GNU/Linux. It has been in
58 use for some time with OpenBSD as the system curses library, and
59 on FreeBSD and NetBSD as an external package. It should port
60 easily to any ANSI/POSIX-conforming UNIX. It has even been ported
63 <p>The distribution includes the library and support utilities,
64 including a terminfo compiler tic(1), a decompiler infocmp(1),
65 clear(1), tput(1), tset(1), and a termcap conversion tool
66 captoinfo(1). Full manual pages are provided for the library and
69 <p>The ncurses distribution is available via anonymous FTP at the
70 GNU distribution site <a href=
71 "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a> .<br>
73 It is also available at <a href=
74 "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
76 <h1>Release Notes</h1>This release is designed to be upward
77 compatible from ncurses 5.0 through 5.7; very few applications
78 will require recompilation, depending on the platform. These are
79 the highlights from the change-log since ncurses 5.7 release.
81 <h2>Interface changes</h2>
84 <li>turn on <code>_XOPEN_CURSES</code> definition in
85 <code>curses.h</code>.</li>
87 <li>change <code>_nc_has_mouse</code> to
88 <code>has_mouse</code>, reflect its use in C++ and Ada95.</li>
90 <li>add <code>is_pad</code> and <code>is_subwin</code>
91 functions for opaque access to the WINDOW structure.</li>
93 <li>add <code>tiparm</code>, based on review of X/Open Curses
97 <h2>New features and improvements</h2>
99 <h3>Library Improvements</h3>
102 <li>add a terminal driver for Windows console, which supports a
103 MinGW port to Windows.</li>
105 <li>add extended functions which specify the
106 <code>SCREEN</code> pointer for several curses functions which
107 use the global <code>SP</code>.</li>
109 <li>improve the <code>NCURSES_NO_UTF8_ACS</code> feature by
110 adding a check for an extended terminfo capability
111 <code>U8</code>.</li>
113 <li>improve performance of <code>tigetstr</code>, etc., by
114 using hashing code from tic.</li>
116 <li>add WACS_<em>xxx</em> definitions to wide-character
117 configuration for thick- and double-lines.</li>
119 <li>modify init_pair to allow caller to create extra color
120 pairs beyond the color_pairs limit, which use default
124 <h3>Improvements to Programs</h3>
127 <li>add <code>tabs</code> program.</li>
129 <li>modify tic's -I/-C dump to reformat acsc strings into
130 canonical form (sorted, unique mapping).</li>
132 <li>add checks in tic for inconsistent cursor-movement
133 controls, and for inconsistent printer-controls.</li>
135 <li>add special case to <code>_nc_infotocap</code> (used by tic
136 and infocmp) to recognize the
137 <code>setaf</code>/<code>setab</code> strings from
138 <code>xterm+256color</code> and <code>xterm+88color,</code> and
139 provide a reduced version which works with termcap.</li>
142 <h3>Terminal Database</h3>
148 <li><code>bterm</code> terminfo entry, based on bogl
151 <li><code>cons25-debian</code> entry</li>
153 <li><code>eterm-color</code> entry</li>
155 <li><code>linux-16color</code></li>
157 <li><code>mlterm+256color</code> entry, for mlterm
160 <li>several screen-bce.<em>xxx</em> entries</li>
162 <li><code>screen.Eterm</code> terminfo entry</li>
164 <li><code>vwmterm</code> entry</li>
166 <li><code>xterm-utf8</code> entry as a demo of the
167 <code>U8</code> feature</li>
171 <li>updated/improved entries:
174 <li>use extended capabilities:
177 <li>add <code>U8</code> feature to denote entries for
178 terminal emulators which do not support VT100 SI/SO
179 when processing UTF-8 encoding</li>
181 <li>add <code>XT</code> capability to entries for
182 terminals that support both xterm-style mouse- and
183 title-controls, for <code>screen</code> which
184 special-cases TERM beginning with <code>xterm</code> or
185 <code>rxvt</code></li>
189 <li>improvements based on new checks in tic:</li>
191 <li style="list-style: none; display: inline">
193 <li>fill in no-parameter forms of cursor-movement where
194 a parameterized form is available</li>
196 <li>fill in missing cursor controls where the form of
197 the controls is ANSI</li>
199 <li>add parameterized cursor-controls to
202 <li>modify <code>nsterm,</code> <code>xnuppc</code> and
203 <code>tek4115</code> to make
204 <code>sgr</code>/<code>sgr0</code> consistent</li>
206 <li>change several terminfo entries to make consistent
207 use of ANSI clear-all-tabs</li>
211 <li>extend <code>ansi.sys</code> <code>pfkey</code>
212 capability from kf1-kf10 to kf1-kf48, moving function key
213 definitions from <code>emx-base</code> for
216 <li>correct missing final 'p' in <code>pfkey</code>
217 capability of <code>ansi.sys-old</code>.</li>
219 <li>rename <code>atari</code> and <code>st52</code>
220 terminfo entries to atari-old, st52-old, use newer entries
223 <li>repurpose <code>gnome</code> terminfo entries as
224 <code>vte</code>, retaining <code>gnome</code> variants for
225 compatibility, but generally deprecating those since the
226 VTE library is what actually defines the behavior of
227 "gnome", etc., since 2003.</li>
229 <li>improve <code>interix</code> <code>smso</code> terminfo
230 capability by using reverse rather than bold.</li>
232 <li>correct <code>initc</code> capability of
233 <code>linux-c-nc</code> end-of-range, make similar change
234 for <code>dg+ccc</code> and <code>dgunix+ccc</code>.</li>
236 <li>update <code>minix</code> terminfo entry.</li>
238 <li>updated <code>nsterm*</code> entries.</li>
240 <li>remove unnecessary <code>kcan</code> assignment to
241 <code>^C</code> from <code>putty</code>.</li>
243 <li>suppress <code>ncv</code> in <code>screen</code> and
244 <code>konsole-base</code> entries, allowing underline.</li>
246 <li>change ncv and op capabilities in
247 <code>sun-color</code> terminfo entry to match Sun's entry
250 <li>fix typo in <code>rmso</code> for <code>tek4106</code>
253 <li>improve <code>acsc</code> string for <code>vt52</code>,
254 show arrow keys.</li>
256 <li>add hard-reset for <code>rs2</code> to
257 <code>wsvt25</code> to help ensure that reset ends the
258 alternate character set.</li>
260 <li>add <code>ccc</code> and <code>initc</code>
261 capabilities to <code>xterm-16color</code>.</li>
266 <h2>Major bug fixes</h2>
272 <li>wide character support
275 <li>modify length returned by <code>getcchar</code> to
276 count the trailing null which is documented in
279 <li>fix an infinite recursion when adding a
280 legacy-coding 8-bit value using
281 <code>insch</code>.</li>
283 <li>improve a workaround in adding wide-characters,
284 when a control character is found. The library uses
285 <code>unctrl</code> to obtain a printable version of
286 the control character, but was not passing color or
287 video attributes.</li>
289 <li>modify <code>waddch_literal</code>, updating
290 line-pointer after a multicolumn character is found to
291 not fit on the current row, and wrapping is done. Since
292 the line-pointer was not updated, the wrapped
293 multicolumn character was written to the beginning of
294 the current row.</li>
296 <li>fixes in <code>wins_nwstr</code> and related
297 functions to ensure that special characters, i.e.,
298 control characters are handled properly with the
299 wide-character configuration.</li>
301 <li>correct internal <code>_nc_insert_ch</code> to use
302 <code>_nc_insert_wch</code> when inserting wide
303 characters, since the <code>wins_wch</code> function
304 that it used did not update the cursor position.</li>
311 <li>add check if <code>Gpm_Open</code> returns a -2,
312 e.g., for "xterm". This is normally suppressed but can
313 be overridden using <code>$NCURSES_GPM_TERMS</code>.
314 Ensure that <code>Gpm_Close</code> is called in this
317 <li>add check in mouse-driver to disable connection if
318 GPM returns a zero, indicating that the connection is
321 <li>modify <code>getmouse</code> to act as its
322 documentation implied, returning on each call the
323 preceding event until none are left. When no more
324 events remain, it will return <code>ERR</code>.</li>
331 <li>improve handling of color-pairs embedded in
332 attributes for the extended-colors configuration.</li>
334 <li>add check for failure to open hashed-database
335 needed for db4.6.</li>
337 <li>modify use of <code>$CC</code> environment variable
338 which is defined by X/Open as a curses feature, to
339 ignore it if it is not a single character.</li>
341 <li>modify declaration of <code>cur_term</code> when
342 broken-linker is used, but enable-reentrant is not, to
345 <li>correct limit-checks in <code>derwin</code>.</li>
347 <li>remove old check in <code>mvderwin</code> which
348 prevented moving a derived window whose origin happened
349 to coincide with its parent's origin.</li>
351 <li>correct limit-checks in <code>newwin</code>, to
352 ensure that windows have nonzero size.</li>
354 <li>modify <code>set_curterm</code> to make
355 broken-linker configuration work with changes from
358 <li>modify <code>wgetch</code> to ensure it checks
359 <code>SIGWINCH</code> when it gets an error in
360 non-blocking mode.</li>
362 <li>correct limit-check in <code>wredrawln</code>,
363 accounting for <code>begy</code>/<code>begx</code>
366 <li>fix a null-pointer check in
367 <code>_nc_format_slks</code> in lib_slk.c, from
368 20070704 changes.</li>
370 <li>correct translation of "^" in
371 <code>_nc_infotocap</code>, used to transform terminfo
372 to termcap strings.</li>
374 <li>modify <code>_nc_wgetch</code> to check for a -1 in
375 the fifo, e.g., after a <code>SIGWINCH</code>, and
376 discard that value, to avoid confusing
386 <li>correct transfer of multicolumn characters in multirow
387 <code>field_buffer</code>, which stopped at the end of the
388 first row due to filling of unused entries in a cchar_t
389 array with nulls.</li>
391 <li>correct buffer-size after internal resizing of
392 wide-character <code>set_field_buffer</code>, broken in
393 20081018 changes.</li>
395 <li>correct layout of working window used to extract data
396 in wide-character configured by
397 <code>set_field_buffer</code></li>
405 <li>configure script:
411 <dt>--disable-libtool-version</dt>
413 <dd>use the "-version-number" feature which was added
414 in libtool 1.5. The default value for the option uses
415 the newer feature, which makes libraries generated
416 using libtool compatible with the standard builds of
419 <dt>--disable-rpath-hack</dt>
421 <dd>disable a feature which adds rpath options for
422 libraries in unusual places.</dd>
424 <dt>--enable-interop</dt>
426 <dd>integrate changes for generic/interop support to
429 <dt>--enable-pc-files</dt>
431 <dd>generate ".pc" files for each of the libraries, and
432 install them in <code>pkg-config</code>'s library
435 <dt>--enable-pthreads-eintr</dt>
437 <dd>control whether to allow <code>EINTR</code> to
438 interrupt a read operation in <code>wgetch</code>. This
439 applies only to the pthread configuration</dd>
441 <dt>--enable-sp-funcs</dt>
443 <dd>compile-in support for extended functions which
444 accept a <code>SCREEN</code> pointer, reducing the need
445 for juggling the global <code>SP</code> value with
446 <code>set_term</code> and <code>delscreen</code>.</dd>
448 <dt>--enable-term-driver</dt>
450 <dd>compile with terminal-driver. That is used in the
451 MinGW port, and (being somewhat more complicated) is an
452 experimental alternative to the conventional termlib
453 internals. Currently, it requires the sp-funcs feature
456 <dt>--with-ncurses-wrap-prefix</dt>
458 <dd>allows setting the prefix for functions used to
459 wrap global variables to something other than
460 "<code>_nc_</code>".</dd>
462 <dt>--with-pkg-config=[DIR]</dt>
464 <dd>check for <code>pkg-config</code>, optionally
465 specifying its path.</dd>
467 <dt>--without-manpages</dt>
469 <dd>tells the configure script to suppress the install
470 of ncurses' manpages.</dd>
472 <dt>--without-tests</dt>
474 <dd>suppress building test programs.</dd>
478 <li>improved options:
481 <li>correct logic for <code>--with-database</code>,
482 which was coded as an enable-type switch.</li>
484 <li>omit the opaque-functions from
485 <code>lib_gen.o</code> when
486 <code>--disable-ext-funcs</code> is used.</li>
495 <li>*-config scripts:
498 <li>modify <code>adacurses-config</code> to look for
499 ".ali" files in the adalib directory.</li>
501 <li>correct install for the Ada95 tree, which omitted
502 <code>libAdaCurses.a</code> used in
503 <code>adacurses-config</code>.</li>
505 <li>change install for <code>adacurses-config</code> to
506 provide additional flavors such as
507 <code>adacursesw-config</code>, for ncursesw.</li>
509 <li>modify scripts to generate
510 <code>ncurses*-config</code> and pc-files to add
511 dependency for tinfo library.</li>
513 <li>use <code>ncurses*-config</code> scripts if
514 available for test/configure.</li>
516 <li>correct name for termlib in
517 <code>ncurses*-config</code>, e.g., if it is renamed to
518 provide a single file for ncurses/ncursesw
521 <li>generate manpages for the *-config scripts, adapted
522 from <code>help2man</code>.</li>
524 <li>modify install-rule for manpages so that *-config
525 manpages will install when building with
526 <code>--srcdir</code>.</li>
528 <li>build-fixes for OpenSolaris aka Solaris 11, for
529 wide-character configuration as well as for rpath
530 feature in *-config scripts.</li>
532 <li>use <code>$includedir</code> symbol in
533 <code>misc/ncurses-config.in</code>, add
534 <code>--includedir</code> option.</li>
536 <li>improve install-rules for pc-files.</li>
538 <li>create the <code>pkg-config</code> library
539 directory if needed.</li>
541 <li>fix typo "<code>==</code>" where "<code>=</code>"
542 is needed in <code>ncurses-config.in</code> and
543 <code>gen-pkgconfig.in</code> files.</li>
545 <li>modify <code>gen-pkgconfig.in</code> to eliminate a
546 dependency on rpath when deciding whether to add
547 <code>$LIBS</code> to <code>--libs</code> output; that
548 should be shown for the ncurses and tinfo libraries
549 without taking rpath into account.</li>
551 <li>modify handling of <code>$PKG_CONFIG_LIBDIR</code>
552 to use only the first item in a possibly
553 colon-separated list.</li>
557 <li>other packaging issues
560 <li>add <code>make-tar.sh</code> scripts to Ada95 and
561 test subdirectories to help with making those
562 separately distributable.</li>
564 <li>add <code>Ada95/configure</code> script, to use in
566 <code>Ada95/make-tar.sh</code>.</li>
568 <li>remove <code>tar-copy.sh</code> and related
569 <code>configure/Makefile</code> chunks, since the Ada95
570 binding is now installed using rules in
571 <code>Ada95/src</code>.</li>
580 <li>improve configure checks for location of tic and
581 infocmp programs used for installing database and for
582 generating fallback data, e.g., for cross-compiling.</li>
584 <li>modify #define's for build-compiler to suppress cchar_t
585 symbol from compile of <code>make_hash</code> and
586 <code>make_keys</code>, improving cross-compilation of
589 <li>simplify include-dependencies of <code>make_hash</code>
590 and <code>make_keys</code>, to reduce the need for setting
591 BUILD_CPPFLAGS in cross-compiling when the build- and
592 target-machines differ.</li>
594 <li>correct cross-compiling configure check for
595 <code>CF_MKSTEMP</code> macro, by adding a check cache
596 variable set by <code>AC_CHECK_FUNC</code>.</li>
600 <li>library dependencies:
603 <li>revise <code>wadd_wch</code> and
604 <code>wecho_wchar</code> to eliminate dependency on
605 <code>unctrl</code>.</li>
607 <li>adjust configure script so that "t" is not added to
608 library suffix when weak-symbols are used, allowing the
609 pthread configuration to more closely match the non-thread
614 <li>building the Ada95 tree:
617 <li>changes to use gnatmake project files in the Ada95
620 <li>add/use configure check to turn on project rules for
621 <code>Ada95/src</code>.</li>
623 <li>old gnatmake (3.15) does not produce libraries using
624 project-file; work around by adding script to generate
625 alternate makefile.</li>
627 <li>add configure --with-ada-sharedlib option, for the
630 <li>move Ada95-related logic into aclocal.m4, since
631 additional checks will be needed to distinguish old/new
632 implementations of gnat.</li>
634 <li>add test_make / test_clean / test_install rules in
637 <li>change install-path for adainclude directory to
638 /usr/share/ada (was /usr/lib/ada).</li>
642 <li>other configure/build issues:
645 <li>make <code>CCHARW_MAX</code> value configurable, noting
646 that changing this would change the size of
647 <code>cchar_t</code>, and would be ABI-incompatible.</li>
649 <li>improve comparison of program-names when checking for
650 linked flavors such as "reset" by ignoring the executable
653 <li>drop <code>mkdirs.sh</code>, use
654 "<code>mkdir -p</code>".</li>
656 <li>drop <code>misc/ncu-indent</code> and
657 <code>misc/jpf-indent</code>; they are provided by an
658 external package <a href=
659 "http://invisible-island.net/cindent/cindent.html">cindent</a>.</li>
661 <li>change makefiles to use <code>$ARFLAGS</code> rather
662 than <code>$AR_OPTS</code>, provide a configure check to
663 detect whether a "-" is needed before "ar" options.</li>
665 <li>modify <code>CF_DISABLE_LEAKS</code> configure macro so
666 that the --enable-leaks option is not the same as
667 --disable-leaks.</li>
669 <li>improve configure script macros
670 <code>CF_HEADER_PATH</code> and
671 <code>CF_LIBRARY_PATH</code> by adding <code>CFLAGS</code>,
672 <code>CPPFLAGS</code> and <code>LDFLAGS</code>,
673 <code>LIBS</code> values to the search-lists.</li>
675 <li>improve configure macros <code>CF_GCC_VERSION</code>
676 and <code>CF_GCC_WARNINGS</code> to work with gcc 4.x's c89
677 alias, which gives warning messages for cases where older
678 versions would produce an error.</li>
680 <li>modify <code>CF_WITH_LIBTOOL</code> configure check to
681 allow unreleased libtool version numbers (e.g. which
682 include alphabetic chars, as well as digits, after the
685 <li>improve use of symbolic links in makefiles by using
686 "<code>-f</code>" option if it is supported, to eliminate
687 temporary removal of the target</li>
689 <li>add a configure-time check to pick a suitable value for
690 <code>CC_SHARED_OPTS</code> for Solaris.</li>
692 <li>add -shared option to <code>MK_SHARED_LIB</code> when
693 -Bsharable is used, for *BSD's, without which "main" might
694 be one of the shared library's dependencies.</li>
696 <li>modify configure script to allow building shared
697 libraries with gcc on AIX 5 or 6.</li>
699 <li>suppress configure check for static/dynamic linker
700 flags for gcc on Solaris 10, since gcc is confused by
701 absence of static libc, and does not switch back to dynamic
702 mode before finishing the libraries.</li>
704 <li>suppress configure check for static/dynamic linker
705 flags for gcc on Darwin.</li>
707 <li>modify <code>misc/run_tic.in</code> to create parent
708 directory, in case this is a new install of hashed
711 <li>modify configure check for tic program, used for
712 fallbacks, to a warning if not found. This makes it simpler
713 to use additonal scripts to bootstrap the fallbacks code
714 using tic from the build tree.</li>
721 <li>add test/demo_terminfo, for comparison with
724 <li>improve test/ncurses.c 'F' test, show combining
725 characters in color.</li>
727 <li>fix logic for 'V' in test/ncurses.c tests f/F.</li>
729 <li>improve test/ncurses.c 'a test to put mouse droppings
730 in the proper window.</li>
732 <li>modify ncurses 'F' test to demo wborder_set with
735 <li>modify ncurses 'f' test to demo wborder with colored
738 <li>improve test/ncurses.c 'a' test, using unctrl more
739 consistently to display meta-characters.</li>
741 <li>correct use of <code>key_name</code> in test/ncurses.c
742 'A' test, which only displays wide-characters, not
743 key-codes since 20070612.</li>
745 <li>add test/clip_printw.c to illustrate how to use printw
746 without wrapping.</li>
748 <li>modify test-programs, e.g,. test/view.c, to address
749 subtle differences between Tru64/Solaris and HPUX/AIX
750 getcchar return values.</li>
752 <li>add some test programs (and make these use the same
753 special keys by sharing <code>linedata.h</code> functions):
754 test/test_addstr.c test/test_addwstr.c test/test_addchstr.c
755 test/test_add_wchstr.c</li>
757 <li>add test/xterm-256color.dat</li>
759 <li>modify test programs to allow them to be built with
762 <li>fixes for test programs to build/work on HPUX and AIX,
768 <h1>Features of Ncurses</h1>The ncurses package is fully
769 compatible with SVr4 (System V Release 4) curses:
772 <li>All 257 of the SVr4 calls have been implemented (and are
775 <li>Full support for SVr4 curses features including keyboard
776 mapping, color, forms-drawing with ACS characters, and
777 automatic recognition of keypad and function keys.</li>
779 <li>An emulation of the SVr4 panels library, supporting a stack
780 of windows with backing store, is included.</li>
782 <li>An emulation of the SVr4 menus library, supporting a
783 uniform but flexible interface for menu programming, is
786 <li>An emulation of the SVr4 form library, supporting data
787 collection through on-screen forms, is included.</li>
789 <li>Binary terminfo entries generated by the ncurses tic(1)
790 implementation are bit-for-bit-compatible with the entry format
791 SVr4 curses uses.</li>
793 <li>The utilities have options to allow you to filter terminfo
794 entries for use with less capable
795 <strong>curses</strong>/<strong>terminfo</strong> versions such
796 as the HP/UX and AIX ports.</li>
797 </ul>The ncurses package also has many useful extensions over
801 <li>The API is 8-bit clean and base-level conformant with the
802 X/OPEN curses specification, XSI curses (that is, it implements
803 all BASE level features, and most EXTENDED features). It
804 includes many function calls not supported under SVr4 curses
805 (but portability of all calls is documented so you can use the
806 SVr4 subset only).</li>
808 <li>Unlike SVr3 curses, ncurses can write to the
809 rightmost-bottommost corner of the screen if your terminal has
810 an insert-character capability.</li>
812 <li>Ada95 and C++ bindings.</li>
814 <li>Support for mouse event reporting with X Window xterm and
815 FreeBSD and OS/2 console windows.</li>
817 <li>Extended mouse support via Alessandro Rubini's gpm
820 <li>The function <code>wresize</code> allows you to resize
821 windows, preserving their data.</li>
823 <li>The function <code>use_default_colors</code> allows you to
824 use the terminal's default colors for the default color pair,
825 achieving the effect of transparent colors.</li>
827 <li>The functions <code>keyok</code> and
828 <code>define_key</code> allow you to better control the use of
829 function keys, e.g., disabling the ncurses KEY_MOUSE, or by
830 defining more than one control sequence to map to a given key
833 <li>Support for 256-color terminals, such as modern xterm, when
834 configured using the <code>--enable-ext-colors</code>
837 <li>Support for 16-color terminals, such as <em>aixterm</em>
838 and <em>modern xterm</em>.</li>
840 <li>Better cursor-movement optimization. The package now
841 features a cursor-local-movement computation more efficient
842 than either BSD's or System V's.</li>
844 <li>Super hardware scrolling support. The screen-update code
845 incorporates a novel, simple, and cheap algorithm that enables
846 it to make optimal use of hardware scrolling, line-insertion,
847 and line-deletion for screen-line movements. This algorithm is
848 more powerful than the 4.4BSD curses <code>quickch</code>
851 <li>Real support for terminals with the magic-cookie glitch.
852 The screen-update code will refrain from drawing a highlight if
853 the magic- cookie unattributed spaces required just before the
854 beginning and after the end would step on a non-space
855 character. It will automatically shift highlight boundaries
856 when doing so would make it possible to draw the highlight
857 without changing the visual appearance of the screen.</li>
859 <li>It is possible to generate the library with a list of
860 pre-loaded fallback entries linked to it so that it can serve
861 those terminal types even when no terminfo tree or termcap file
862 is accessible (this may be useful for support of
863 screen-oriented programs that must run in single-user
866 <li>The tic(1)/captoinfo utility provided with ncurses has the
867 ability to translate many termcaps from the XENIX, IBM and
868 AT&T extension sets.</li>
870 <li>A BSD-like tset(1) utility is provided.</li>
872 <li>The ncurses library and utilities will automatically read
873 terminfo entries from $HOME/.terminfo if it exists, and compile
874 to that directory if it exists and the user has no write access
875 to the system directory. This feature makes it easier for users
876 to have personal terminfo entries without giving up access to
877 the system terminfo directory.</li>
879 <li>You may specify a path of directories to search for
880 compiled descriptions with the environment variable
881 TERMINFO_DIRS (this generalizes the feature provided by
882 TERMINFO under stock System V.)</li>
884 <li>In terminfo source files, use capabilities may refer not
885 just to other entries in the same source file (as in System V)
886 but also to compiled entries in either the system terminfo
887 directory or the user's $HOME/.terminfo directory.</li>
889 <li>A script (<strong>capconvert</strong>) is provided to help
890 BSD users transition from termcap to terminfo. It gathers the
891 information in a TERMCAP environment variable and/or a
892 ~/.termcap local entries file and converts it to an equivalent
893 local terminfo tree under $HOME/.terminfo.</li>
895 <li>Automatic fallback to the /etc/termcap file can be compiled
896 in when it is not possible to build a terminfo tree. This
897 feature is neither fast nor cheap, you don't want to use it
898 unless you have to, but it's there.</li>
900 <li>The table-of-entries utility <strong>toe</strong> makes it
901 easy for users to see exactly what terminal types are available
904 <li>The library meets the XSI requirement that every macro
905 entry point have a corresponding function which may be linked
906 (and will be prototype-checked) if the macro definition is
907 disabled with <code>#undef</code>.</li>
909 <li>An HTML "Introduction to Programming with NCURSES" document
910 provides a narrative introduction to the curses programming
914 <h1>State of the Package</h1>Numerous bugs present in earlier
915 versions have been fixed; the library is far more reliable than
916 it used to be. Bounds checking in many `dangerous' entry points
917 has been improved. The code is now type-safe according to gcc
918 -Wall. The library has been checked for malloc leaks and arena
919 corruption by the Purify memory-allocation tester.
921 <p>The ncurses code has been tested with a wide variety of
922 applications including (versions starting with those noted):</p>
927 <dd>Curses Development Kit<br>
929 "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>
932 "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>
936 <dd>directory-editor<br>
938 "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>
942 <dd>the underlying application used in Slackware's setup, and
943 the basis for similar applications on GNU/Linux.<br>
945 "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>
949 <dd>the character-screen WWW browser<br>
951 "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>
953 <dt>Midnight Commander</dt>
957 "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>
962 <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>
966 <dd>file-transfer utility<br>
967 <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>
971 <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
974 "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
979 <dd>Lynx-like info browser. <a href=
980 "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>
984 <dd>newsreader, supporting color, MIME <a href=
985 "http://www.tin.org/">http://www.tin.org/</a></dd>
986 </dl>as well as some that use ncurses for the terminfo support
992 <dd>terminal emulator<br>
994 "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>
998 <dd>vi-like-emacs<br>
1000 "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
1003 <p>The ncurses distribution includes a selection of test programs
1004 (including a few games).</p>
1006 <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
1007 a previous package pcurses, written by Pavel Curtis. Eric S.
1008 Raymond continued development. Jürgen Pfeifer wrote most of
1009 the form and menu libraries. Ongoing work is being done by
1010 <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
1011 Thomas Dickey acts as the maintainer for the Free Software
1012 Foundation, which holds the copyright on ncurses. Contact the
1013 current maintainers at <a href=
1014 "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
1016 <p>To join the ncurses mailing list, please write email to
1017 <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
1019 subscribe <name>@<host.domain>
1022 <p>This list is open to anyone interested in helping with the
1023 development and testing of this package.</p>
1025 <p>Beta versions of ncurses and patches to the current release
1026 are made available at <a href=
1027 "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a> .</p>
1029 <h2>Future Plans</h2>
1032 <li>Extended-level XPG4 conformance, with internationalization
1035 <li>Ports to more systems, including DOS and Windows.</li>
1036 </ul>We need people to help with these projects. If you are
1037 interested in working on them, please join the ncurses list.
1039 <h2>Other Related Resources</h2>The distribution provides a newer
1040 version of the terminfo-format terminal description file once
1041 maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
1042 Raymond</a> . Unlike the older version, the termcap and
1043 terminfo data are provided in the same file, and provides several
1044 user-definable extensions beyond the X/Open specification.
1046 <p>You can find lots of information on terminal-related topics
1047 not covered in the terminfo file at <a href=
1048 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
1049 Richard Shuford's archive</a> .</p>