+ Announcing ncurses 6.0
- Announcing ncurses 5.1
+Overview
- 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.
+ The ncurses (new curses) library is a free software emulation of
+ curses in System V Release 4.0 (SVr4), 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 SVr4-curses
+ enhancements over BSD curses. SVr4 curses is better known today as
+ X/Open 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.
+ In mid-June 1995, the maintainer of 4.4BSD curses declared that he
+ considered 4.4BSD curses obsolete, and encouraged the keepers of unix
+ releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
- 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!
+ Since 1995, ncurses has been ported to many systems:
+ * It is used in almost every system based on the Linux kernel (aside
+ from some embedded applications).
+ * It is used as the system curses library on OpenBSD, FreeBSD and
+ OSX.
+ * It is used in environments such as Cygwin and MinGW. The first of
+ these was EMX on OS/2 Warp.
+ * It is used (though usually not as the system curses) on all of the
+ vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris,
+ Tru64.
+ * It should work readily on any ANSI/POSIX-conforming unix.
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 the GNU
- distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
- It is also available at [2]ftp://dickey.his.com/ncurses.
-
- Release Notes
-
- This release is designed to be upward compatible from ncurses 5.0;
- very few applications will require recompilation, depending on the
- platform. These are the highlights from the change-log since ncurses
- 5.0 release.
-
- Interface changes:
- * made the extended terminal capabilities
- (configure --enable-tcap-names) a standard feature (though the
- configure script can disable it, it is built by default).
- * removed the trace() function and related trace support from the
- production library. This is the only interface change that may
- cause problems with existing applications linked to shared
- libraries, since not all platforms use the minor version number.
- * explicitly initialized to zero several data items which were
- implicitly initialized, e.g., cur_term. If not explicitly
- initialized, their storage type is C (common), and causes problems
- linking on some platforms.
- * modified curses.h.in, undef'ing some symbols to avoid conflict
- with C++ STL.
-
- New features:
- * added a new extension, assume_default_colors() to provide better
- control over the use of default colors. This is the principal
- visible difference between ncurses 5.1 and preceding versions. The
- new extension allows an application to specify what colors pair 0
- uses.
- NOTE: Pair 0 defaults to white on black unless you have invoked
- use_default_colors() or set it via assume_default_colors(). An
- application that calls start_colors() without setting the
- background color will consistently have a black background no
- matter what color your terminal's background actually is.
- * made several fixes to the terminfo-to-termcap conversion, and have
- been using the generated termcaps without further hand-tuning.
- This builds on the extension use_extended_names() by adding
- "obsolete" termcap strings to terminfo.src
- + modified tic so that if extended names (i.e.,
- configure --enable-tcap-names) are active, then tic -x will
- also write "obsolete" capabilities that are present in the
- terminfo source.
- + added screen's AX capability (for ECMA SGR 39 and 49) to
- applicable terminfo entries, use presence of this as a check
- for a small improvement in setting default colors.
- + add -a option to tic and infocmp, which retains commented-out
- capabilities during source translation/comparison, e.g.,
- captoinfo and infotocap.
- * implemented limited support for UTF-8, useful with XFree86 xterm:
- + if the configure --enable-widec option is given, append 'w'
- to names of the generated libraries (e.g., libncursesw.so) to
- avoid conflict with existing ncurses libraries.
- + add a simple UTF-8 output driver to the experimental
- wide-character support. If any of the environment variables
- LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this
- driver will be used to translate the output to UTF-8.
- + modified view.c to make a rudimentary viewer of UTF-8 text.
- * modify raw() and noraw() to clear/restore IEXTEN flag which
- affects stty lnext on systems such as FreeBSD
- * reordered tests during mouse initialization to allow for gpm to
- run in xterm, or for xterm to be used under OS/2 EMX. Also dropped
- test for $DISPLAY in favor of the terminfo capability kmous=\E[M
- or if $TERM environment variable contains "xterm".
- * added configure option --with-manpage-symlinks, which provides for
- fully indexing manpage entries by making symbolic links for the
- aliases.
- * changed unctrl() to render C1 characters (128-159) as ~@, ~A, etc.
- * add experimental configure option --enable-colorfgbg to check for
- $COLORTERM variable as set by rxvt/aterm/Eterm.
- * made the infocmp -F option less verbose.
- * dropped support for gnat 3.10 (gnat 3.12 is current).
-
- Major bug fixes:
- * modified infocmp -e, -E options to ensure that generated
- fallback.c type for Booleans agrees with term.h
- * documented a special case of incompatiblity between ncurses 4.2
- and 5.0, added a section for this in INSTALL.
- * corrected tests for file-descriptors in OS/2 EMX mouse support. A
- negative value could be used by FD_SET, causing the select() call
- to wait indefinitely.
- * made 'tput flash' work properly for xterm by flushing output in
- delay_output() when using napms(), and modifying xterm's terminfo
- to specify no padding character. Otherwise, xterm's reported baud
- rate could mislead ncurses into producing too few padding
- characters.
- * modified lib_addch.c to allow repeated update to the lower-right
- corner, rather than displaying only the first character written
- until the cursor is moved. Recent versions of SVr4 curses can
- update the lower-right corner, and behave this way.
- * modified echo() behavior of getch() to match Solaris curses for
- carriage return and backspace (reported by Neil Zanella).
- * corrected offsets used for subwindows in wresize()
- * modified configure script so AC_MSG_ERROR is temporarily defined
- to a warning in AC_PROG_CXX to make it recover from a missing C++
- compiler without requiring user to add --without-cxx option
- * corrected logic in lib_twait.c as used by lib_mouse.c for GPM
- mouse support when poll() is used rather than select().
- * made several fixes for buffer overflows, unchecked recursion,
- improvements in performance, etc. See the NEWS file for details.
-
- 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 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.
- * The utilities have options to allow you to filter terminfo entries
- for use with less capable curses/terminfo versions such as the
- HP/UX and AIX ports.
+ * [1]captoinfo, a termcap conversion tool
+ * [2]clear, utility for clearing the screen
+ * [3]infocmp, the terminfo decompiler
+ * [4]tabs, set tabs on a terminal
+ * [5]tic, the terminfo compiler
+ * [6]toe, list (table of) terminfo entries
+ * [7]tput, utility for retrieving terminal capabilities in shell
+ scripts
+ * [8]tset, to initialize the terminal
+
+ Full manual pages are provided for the library and tools.
+
+ The ncurses distribution is available via anonymous FTP at the GNU
+ distribution site
+
+ [9]ftp://ftp.gnu.org/gnu/ncurses/ .
+
+ It is also available at
+
+ [10]ftp://invisible-island.net/ncurses/ .
+
+Release Notes
+
+ These notes are for ncurses 6.0, released August 8, 2015.
+
+ This release is designed to be source-compatible with ncurses 5.0
+ through 5.9; providing a new application binary interface (ABI).
+ Although the source can still be configured to support the ncurses 5
+ ABI, the intent of the release is to provide extensions which are
+ generally useful, but binary-incompatible with ncurses 5:
+ * Extend the cchar_t structure to allow more than 16 colors to be
+ encoded.
+ * Modify the encoding of mouse state to make room for a 5th mouse
+ button. That allows one to use ncurses with a wheel mouse with
+ xterm or similar X terminal emulators.
+
+ There are, of course, numerous other improvements, including
+ * fixes made based on the Clang and Coverity static analyzers.
+ * memory leak fixes using Valgrind
+
+ The release notes mention some bug-fixes, but are focused on new
+ features and improvements to existing features log since ncurses 5.9
+ release.
+
+ While the intent of the release is to provide a new stable ABI, there
+ are other development activities which are summarized below.
+ * The original release plan, e.g., for "5.10" was to improve the
+ MinGW port. Ultimately that was completed (wide-character support,
+ mouse, etc), but was deferred to focus on termcap support and
+ performance issues. Also, pinpointing the problems with Console2
+ took a while.
+ * A review of termcap compatibility in 2011 led to several minor
+ fixes in the library and improvements to utilities. To do this
+ properly, a review of the various extent termcap implementations
+ was needed.
+ The [11]termcap library checker (tctest) (not part of ncurses) was
+ one result. A followup review of performance using
+ [12]ncurses-examples in 2014 led to additional improvements.
+ * Output buffering provided a further, but worthwhile distraction. A
+ bug report in 2012 regarding the use of signal handlers in
+ ncurses) pointed out [13]a problem with the use of unsafe
+ functions for handling SIGTSTP. Other signals could be addressed
+ with workarounds; repairing SIGTSTP required a different approach.
+ The solution required changing internal behavior of the library:
+ how it handles output buffering.
+ Now ncurses buffers its own output, independently of the standard
+ output. A few applications relied upon the library's direct reuse
+ of the standard output buffering; however that is unspecified
+ behavior and has never been a recommended practice. Identifying
+ these applications as well as refining the change to permit
+ low-level applications to work consistently took time.
+ * Since the introduction of the experimental support for 256 colors
+ early in [14]2005 (released in [15]ncurses 5.5), there has been
+ increased user interest. Almost all packagers continue providing
+ the ncurses ABI 5 which cannot support 256 colors.
+ * Symbol versioning, or the lack of it in ncurses, is the main
+ reason why packagers would be reluctant to add a new ncurses ABI.
+ This release provides the new ABI along with script-generated
+ lists of versioned symbols which can be used for both ABI 5 and 6
+ (with distinct names to keep the two separate). This took time to
+ development, as reported in [16]Symbol versioning in ncurses.
+
+ Library improvements
+
+ Output buffering
+
+ X/Open curses provides more than one initialization function:
+ * [17]initscr (the simplest) accepts no parameters.
+ * [18]newterm accepts parameters for the stream input and output
+ * [19]setupterm (the low-level function) accepts a parameter for the
+ file descriptor of the output.
+
+ They are documented in X/Open as if initscr calls newterm using stdout
+ for output stream, and in turn newterm calls setupterm using
+ fileno(stdout) for the file descriptor. As long as an implementation
+ acts as if it does this, it conforms. In practice, implementations do
+ what is implied. This creates a problem: the low-level setupterm
+ function's file descriptor is unbuffered, while newterm implies
+ buffered output. X/Open Curses says that all output is done through
+ the file descriptor, and does not say how the output stream is
+ actually used.
+
+ Initially, ncurses used the file descriptor (obtained from the output
+ stream passed to newterm) for changing the terminal modes, and relied
+ upon the output parameter of newterm for buffered output. Later (to
+ avoid using unsafe buffered I/O in signal handlers), ncurses was
+ modified to use the file descriptor (unbuffered output) when cleaning
+ up on receipt of a signal. Otherwise (when not handling a signal), it
+ continued to use the buffered output.
+
+ That approach worked reasonably well and as a side effect, using the
+ same buffered output as an application might use for printf meant that
+ no flushing was needed when switching between normal- and
+ screen-modes.
+
+ There were a couple of problems:
+ * to get good performance, curses (not only ncurses, but SVr4 curses
+ in general) set an output buffer using setbuf or similar function.
+ There is no standard (or portable) way to turn that output buffer
+ off, and revert to line-buffering. The [20]NCURSES_NO_SETBUF
+ environment variable did make it optional.
+ * to handle SIGTSTP (the "stop" signal), ncurses relied upon unsafe
+ functions. That is, due to the complexity of the feature, it
+ relied upon reusing existing functions which should not have been
+ called via the signal handler.
+
+ Conveniently, solving the second problem (by making ncurses do its own
+ output buffering) also fixed the first one. But there were special
+ cases to resolve: [21]low-level functions such as mvcur, putp, vidattr
+ explicitly use the standard output. Those functions were reused
+ internally, and required modification to distinguish whether they were
+ used by the high-level or low-level interfaces.
+
+ Finally, there may still be a few programs which should be modified to
+ improve their portability, e.g., adding an
+
+fflush(stdout);
+
+ when switching from "[22]shell" mode to "[23]program" (curses) mode.
+ Those are fairly rare because most programmers have learned not to mix
+ printf and [24]printw.
+
+ Symbol versioning
+
+ This release introduces symbol-versioning to ncurses because without
+ it, the change of ABI would be less successful. A lengthy discussion
+ will be presented in [25]Symbol versioning in ncurses. These notes
+ summarize what has changed, and what can be done with the new release.
+
+ Symbol-versioning allows the developers of a library to mark each
+ public symbol (both data and functions) with an identifier denoting
+ the library name and the version for which it was built. By doing
+ this, users of the library have a way to help ensure that applications
+ do not accidentally load an incompatible library. In addition, private
+ symbols can be hidden entirely.
+
+ This release provides sample files for the four principal
+ configurations of ncurses libraries: ncurses, ncursesw, ncursest and
+ ncursestw. Each sample is given in two forms:
+
+ ".map"
+ These list all public symbols, together with version names.
+
+ ".sym"
+ These list all public symbols, without version names.
+
+ The sample files are generated by scripts which take into account a
+ few special cases such as [26]tack to omit many of the ncurses private
+ symbols (beginning with "_nc_"). Here are counts of globals versus
+ locals:
+
+ Config Symbols Globals Locals "_nc_"
+ ncurses 976 796 180 332
+ ncursesw 1089 905 184 343
+ ncursest 979 804 175 358
+ ncursestw 1098 914 184 372
+
+ Although only four sample configurations are presented, each is formed
+ by merging symbols from several combinations of configure-script
+ options, taking into account advice from downstream packagers. Because
+ they are formed by merging, the sample files may list a symbol which
+ is not in a given package. That is expected. The samples have been
+ tested and are working with systems (such as Fedora, FreeBSD and
+ Debian) which fully support this feature. There are other systems
+ which do not support the feature, and a few (such as Solaris) which
+ provide incomplete support.
+
+ The version-naming convention used allows these sample files to build
+ distinct libraries for ABI 5 and 6. Version names consist of
+ * configuration name, e.g., "NCURSESW" for the wide-character
+ libraries
+ * ABI version (if not 5)
+ * library name for two special cases which have the same interface
+ across configurations: "TINFO" and "TIC"
+ * release version
+ * patch date (for the release version)
+
+ For example, running nm -D on the libraries in the ncurses6 test
+ package shows these symbol-versions:
+
+0000000000000000 A NCURSES6_TIC_5.0.19991023
+0000000000000000 A NCURSES6_TIC_5.1.20000708
+0000000000000000 A NCURSES6_TIC_5.5.20051010
+0000000000000000 A NCURSES6_TIC_5.7.20081102
+0000000000000000 A NCURSES6_TIC_5.9.20150530
+0000000000000000 A NCURSES6_TINFO_5.0.19991023
+0000000000000000 A NCURSES6_TINFO_5.1.20000708
+0000000000000000 A NCURSES6_TINFO_5.2.20001021
+0000000000000000 A NCURSES6_TINFO_5.3.20021019
+0000000000000000 A NCURSES6_TINFO_5.4.20040208
+0000000000000000 A NCURSES6_TINFO_5.5.20051010
+0000000000000000 A NCURSES6_TINFO_5.6.20061217
+0000000000000000 A NCURSES6_TINFO_5.7.20081102
+0000000000000000 A NCURSES6_TINFO_5.8.20110226
+0000000000000000 A NCURSES6_TINFO_5.9.20150530
+0000000000000000 A NCURSESW6_5.1.20000708
+0000000000000000 A NCURSESW6_5.3.20021019
+0000000000000000 A NCURSESW6_5.4.20040208
+0000000000000000 A NCURSESW6_5.5.20051010
+0000000000000000 A NCURSESW6_5.6.20061217
+0000000000000000 A NCURSESW6_5.7.20081102
+0000000000000000 A NCURSESW6_5.8.20110226
+0000000000000000 A NCURSESW6_5.9.20150530
+
+ As a special case, this release (which makes the final change for ABI
+ 5) is marked with release version 5.9 and patch date 20150530.
+
+ Miscellaneous
+
+ The new release has several improvements for performance and building.
+ For instance:
+ * several files in ncurses- and progs-directories were modified to
+ allow const data used in internal tables to be put by the linker
+ into the readonly text segment.
+ * various improvements were made to building the Ada95 binding, both
+ in simplifying the generated files as well as improving the way it
+ uses gnatmake
+
+ There are also new features in the libraries:
+ * added [27]use_tioctl function
+ * added [28]wgetdelay to retrieve _delay member of WINDOW if it
+ happens to be opaque, e.g., in the pthread configuration.
+ * added [29]A_ITALIC extension.
+ * added form library extension [30]O_DYNAMIC_JUSTIFY option which
+ can be used to override the different treatment of justification
+ for static versus dynamic fields .
+ * rewrote [31]putwin and [32]getwin, making an extended version
+ which is capable of reading screen-dumps between the wide/normal
+ ncurses configurations. These are text files, except for a magic
+ code at the beginning:
+
+0 string \210\210 Screen-dump (ncurses)
+
+ * several changes to mouse support include:
+ + added decoder for xterm SGR 1006 mouse mode.
+ + added experimental support for "%u" format to terminfo.
+ + improved behavior of wheel-mice for xterm protocol: noting
+ that there are only button-presses for buttons "4" and "5",
+ so there is no need to wait to combine events into
+ double-clicks .
+
+ There are a few new configure options dealing with library
+ customization:
+ * add "--enable-ext-putwin" configure option to turn on the extended
+ putwin/getwin. By default, this is enabled for ABI 6 and disabled
+ with ABI 5.
+ * add "--enable-string-hacks" option to control whether strlcat and
+ strlcpy may be used. Because ncurses already does the requisite
+ buffer-limit checks, this feature is mainly of interest to quiet
+ compiler-warnings on a few systems.
+ * add configure option "--with-tparm-arg" to allow [33]tparm's
+ parameters to be something more likely to be the same size as a
+ pointer, e.g., intptr_t (again, the default is set for ABI 6).
+
+ Program improvements
+
+ Utilities
+
+ Most of the termcap-related changes based on development of [34]tctest
+ (termcap library checker) are implemented in the tic and infocmp
+ programs rather than affecting the library. As noted in the
+ [35]discussion of tctest, ncurses's ability to translate between
+ terminfo and termcap formats has been improved at different times, but
+ subject to feedback from "real" termcap users. There are very few of
+ those. Nowadays, virtually all termcap users are using ncurses (or
+ NetBSD, with its own terminfo library) and their programs are actually
+ using terminfo rather than termcap data.
+
+ Still, there are a few. A comment about the translation of the ASCII
+ NUL character prompted a review:
+ * Both terminfo and termcap store string capabilities as
+ NUL-terminated strings.
+ * In terminfo, a \0 in a terminal description is stored as \200.
+ * There are no (known) terminals which would behave differently when
+ sent \0 or \200.
+ * When translating to terminfo format (or displaying a printable
+ version of an entry using infocmp), ncurses shows \200 as \0.
+ * It has done this since 1998 (quoting from the NEWS file):
+
+[36]980103
+...
+ + modify _nc_tic_expand() to generate \0 rather than \200.
+...
+ + correct translation of terminfo "^@", to \200, like \0.
+
+ * However, the _nc_tic_expand function (which optionally produces
+ terminfo or termcap format) did not address this special case for
+ termcap. Even the later 4.4BSD [37]cgetstr interprets a \0
+ literally, ending that string (rather than using the terminfo
+ improvement).
+
+ As a result of the review, several improvements were made to ncurses
+ translation to/from termcap format -- and improving the checks made in
+ tic for consistency of entries. Most of these are not of general
+ interest, except for two new command-line options for tic and infocmp:
+ * the "-0" option generates termcap/terminfo source on a single
+ line.
+ * the "-K" option provides stricter BSD-compatibility for termcap
+ output.
+
+ Other user-visible improvements and new features include:
+ * added "-D" option to tic and infocmp, to show the database
+ locations that it could use.
+ * added "-s" option to toe, to sort its output.
+ * extended "-c" and "-n" options of infocmp to allow comparing more
+ than two entries.
+ * modified toe's report when "-a" and "-s" options are combined, to
+ add a column showing which entries belong to a given database.
+ * modified the clear program to take into account the "E3" extended
+ capability to clear the terminal's scrollback buffer.
+
+ Examples
+
+ Along with the library and utilities, many improvements were made to
+ the [38]ncurses-examples. Some were made to allow building (and
+ comparison-testing) against NetBSD curses and PDCurses. Both lack some
+ of the X/Open Curses features, necessitating customization. But this
+ activity was useful because it showed some remaining performance
+ issues (which have been resolved in this release).
+
+ These changes were made to verify compatibility or compare performance
+ of ncurses:
+ * made workarounds for compiling test-programs with NetBSD curses,
+ though it lacks some common functions such as [39]use_env.
+ * added dots_termcap test-program
+ * added dots_curses test-program, for comparison with the low-level
+ examples.
+ * added test_setupterm test-proram to demonstrate normal/error
+ returns from the setupterm and restartterm functions.
+ * added "-d", "-e" and "-q" options to the demo_terminfo and
+ demo_termcap test-programs.
+ * added "-y" option to demo_termcap and test/demo_terminfo
+ test-programs to demonstrate behavior with/without extended
+ capabilities.
+ * modified demo_termcap and demo_terminfo test-programs to make
+ their options more directly comparable, and add "-i" option to
+ specify a terminal description filename to parse for names to
+ lookup.
+ * rewrote the tests for [40]mvderwin and test for recursive
+ [41]mvwin in the movewindow test-program.
+
+ These changes were made to help with the MinGW port:
+ * added test-screens to the ncurses test-program to show
+ 256-characters at a time, to help with MinGW port.
+ * modified the view test-program to load UTF-8 when built with MinGW
+ by using regular win32 API because the MinGW functions mblen and
+ mbtowc do not work.
+ * added "-s" option to the view test-program to allow it to start in
+ single-step mode, reducing size of trace files when it is used for
+ debugging MinGW changes.
+
+ These changes were made to verify new extensions in ncurses:
+ * added [42]form_driver_w entrypoint to wide-character forms
+ library, as well as form_driver_w test-program.
+ * modified ncurses test-program's b/B tests to display lines only
+ for the attributes which a given terminal supports, to make room
+ for an italics test.
+ * modified ncurses test-program, adding "-E" and "-T" options to
+ demonstrate use_env versus use_tioctl.
+ * modified ncurses test-program's c/C tests to cycle through subsets
+ of the total number of colors, to better illustrate
+ 8/16/88/256-colors by providing directly comparable screens.
+ * modified the ncurses test-program to also show position reports in
+ 'a' test.
+
+ These changes were made to make the examples more useful:
+ * added scripts for building dpkg and rpm test-packages
+ * modified the hanoi test-program to show the minimum number of
+ moves possible for the given number of tiles.
+ * modified the knight test-program to show the number of choices
+ possible for each position in automove option, e.g., to allow user
+ to follow Warnsdorff's rule to solve the puzzle.
+
+ Terminal database
+
+ This release provides improvements to tic's "-c" checking option,
+ which was used for example to
+ * make sgr in several entries agree with other caps.
+ * correct padding in some entries where earlier versions had
+ miscounted the number of octal digits.
+
+ There are several new terminal descriptions:
+ * [43]mlterm is now aliased to mlterm3
+ * [44]nsterm is now derived from nsterm-256color
+ * [45]putty-sco
+ * [46]teken is FreeBSD's "xterm" console.
+ * [47]terminator
+ * [48]terminology
+ * [49]tmux is derived from screen.
+ * several screen.XXX entries support the respective variations for
+ 256 colors.
+ * [50]simpleterm is now 0.5
+ * [51]vte is aliased to vte-2012
+ * [52]vt520ansi
+
+ A few entries use extensions (user-defined terminal capabilities):
+ * E3, used in linux, putty and xterm-basic is tested in the
+ [53]clear program to erase a terminal's scrollback.
+ * TS is used in the [54]xterm+sl building block to help deprecate
+ the misuse of tsl for xterm's title-string.
+ * XT is used in some terminfo entries to improve usefulness for
+ other applications than screen, which would like to pretend that
+ xterm's title is a status-line.
+ * xm is used in examples [55]xterm-1005 and [56]xterm-1006 to
+ illustrate a way to make mouse handling more general
+
+ A few terminals support italics and/or dim capabilities. In
+ particular, screen does not. Documented that, and accommodated the
+ terminals where this feature works with the A_ITALIC extension.
+ * konsole, mlterm3 (italics)
+ * nsterm (dim)
+ * screen (dim)
+ * vte (dim, italics)
+ * xterm (dim, italics)
+
+ Documentation
+
+ As usual, this release
+ * improves documentation by describing new features,
+ * attempts to improve the description of features which users have
+ found confusing
+ * fills in overlooked descriptions of features which were described
+ in the [57]NEWS file but treated sketchily in manual pages.
+
+ In addition, the mechanism for producing HTML versions of the
+ documentation has been improved:
+ * use an improved version of [58]man2html to generate html manpages.
+ * regenerated [59]NCURSES-Programming-HOWTO.html to fix some of the
+ broken html emitted by docbook.
+
+ Interesting bug-fixes
+
+ * Ada95 binding:
+ + modify makefile rules to ensure that the PIC option is not
+ used when building a static library
+ + make Ada95 build-fix for big-endian architectures such as
+ sparc. This undoes one of the fixes from [60]20110319, which
+ added an "Unused" member to representation clauses, replacing
+ that with pragmas to suppress warnings about unused bits.
+ * Color and attributes:
+ + parenthesize parameter of COLOR_PAIR and PAIR_NUMBER in
+ curses.h in case it happens to be a comma-expression.
+ + improve [61]20021221 workaround for broken acs, handling a
+ case where that ACS_xxx character is not in the acsc string
+ but there is a known wide-character which can be used.
+ + modify [62]init_pair to accept -1's for color value after
+ [63]assume_default_colors has been called.
+ + add a check in [64]start_color to limit color-pairs to 256
+ when extended colors are not supported.
+ * Resizing the screen:
+ + propagate error-returns from wresize, i.e., the internal
+ increase_size and decrease_size functions through
+ [65]resize_term.
+ + add check for zero/negative dimensions for resizeterm and
+ resize_term.
+ + modify resizeterm to always push a KEY_RESIZE onto the fifo,
+ even if screensize is unchanged. Modify library to push a
+ KEY_RESIZE if there was a SIGWINCH, even if it does not call
+ resizeterm). These changes eliminate the case where a
+ SIGWINCH is received, but ERR is returned from wgetch or
+ wgetnstr because the screen dimensions did not change.
+ * Low-level interfaces
+ + fix an old bug in the termcap emulation; "%i" was ignored in
+ tparm because the parameters to be incremented were already
+ on the internal stack.
+ + change "%l" behavior in tparm to push the string length onto
+ the stack rather than saving the formatted length into the
+ output buffer.
+ + modify name-comparison for tgetstr, etc., to accommodate
+ legacy applications as well as to improve compatbility with
+ BSD 4.2 termcap implementations (see note for [66]980725).
+ * High-level interfaces
+ + modify internal recursion in wgetch which handles cooked mode
+ to check if the call to wgetnstr returned an error. This can
+ happen when both nocbreak and nodelay are set, for instance
+ (see note for [67]960418).
+ + add a check in internal function waddch_nosync to ensure that
+ tab characters are treated as control characters; some broken
+ locales claim they are printable.
+ + modify menu library to ensure that a menu's top-row is
+ adjusted as needed to ensure that the current item is on the
+ screen
+ + fix special case where double-width character overwrites a
+ single- width character in the first column.
+
+ Configuration changes
+
+ Major changes
+
+ The ncurses 6.0 configure script makes changes to the default value of
+ several configure options, depending on the --with-abi-version option
+ (i.e., whether its value is "5" or "6"):
+
+ --enable-const
+ Feature introduced in [68]970405 supports the use of const
+ where X/Open Curses should have, but did not. NetBSD curses
+ does something similar with const.
+
+ --enable-ext-colors
+ Extends the cchar_t structure to allow more than 16 colors to
+ be encoded. This applies only to the wide-character
+ (--enable-widec) configuration.
+
+ --enable-ext-mouse
+ Modifies the encoding of mouse state to make room for a 5th
+ mouse button. That allows one to use ncurses with a wheel mouse
+ with xterm or similar X terminal emulators.
+
+ --enable-ext-putwin
+ Modifies the file-format written by putwin to use printable
+ text rather than binary files, allowing getwin to read screen
+ dumps written by differently-configured ncurses libraries. The
+ extended getwin can still read binary screen dumps from the
+ same configuration of ncurses. This does not change the ABI
+ (the binary interface seen by calling applications).
+
+ --enable-interop
+ Modifies the FIELDTYPE structure used for the form library to
+ make it more generic.
+
+ --enable-lp64
+ Allows an application to define _LP64 to declare chtype and
+ mmask_t as simply "unsigned" rather than the configured types
+ using the --with-chtype and --with-mmask_t options.
+
+ --enable-sp-funcs
+ Compile-in support for extended functions which accept a SCREEN
+ pointer, reducing the need for juggling the global SP value
+ with [69]set_term and [70]delscreen.
+
+ --with-chtype=uint32_t
+ Makes chtype explicitly a 32-bit unsigned value.
+
+ --with-mmask_t=uint32_t
+ Makes mmask_t explicitly a 32-bit unsigned value.
+
+ --with-tparm-arg=intptr_t
+ X/Open Curses declares [71]tparm using long for each of the
+ parameters aside from the formatting string, presuming that
+ long and char* are the same size. This configure option uses
+ intptr_t which provides a better guarantee of the sizes.
+
+ The configure script no longer checks for antique compilers; c89 is
+ assumed as a minimum. There are a few features from later revisions
+ which are used when available. The configure script makes checks to
+ turn on useful warnings from clang, gcc and icc. You should be able to
+ build ncurses 6.0 with any of the current (or not so current) C
+ compilers available in 2015.
+
+ The configure script, by the way, makes changes which do not work with
+ systems whose /bin/sh is non-POSIX. This mainly affects Solaris (the
+ other vendor unix systems have followed the POSIX guidelines for the
+ past twenty years). If you must build on Solaris, its [72]xpg4
+ binaries suffice, e.g.,
+
+ #!/bin/sh
+ WHAT=`hostname|sed -e 's/\..*//'`
+ OUT=configure.out
+ cat >>$OUT <<EOF/
+ ** `date`
+ ** node: $WHAT
+ ** user: `id`
+ ** conf: $*
+ EOF/
+
+ SHELL=/bin/sh
+ if test -f /usr/xpg4/bin/sh
+ then
+ CONFIG_SHELL=/usr/xpg4/bin/sh
+ export CONFIG_SHELL
+ SHELL=$CONFIG_SHELL
+ fi
+
+ rm -f config.status config.cache
+ TOP=$HOME/$WHAT
+ $SHELL ./configure --verbose \
+ --disable-echo \
+ --disable-overwrite \
+ --enable-warnings \
+ --with-warnings \
+ --prefix=$TOP $* 2>&1 | tee -a $OUT
+
+ Other major changes to the configure script include:
+ * ABI 6 is now the default, intending that the existing ABI 5 should
+ build as before using the "--with-abi-version=5" option.
+ * added --with-extra-suffix option to help with installing
+ nonconflicting ncurses6 packages, e.g., avoiding header- and
+ library-conflicts.
+ NOTE: as a side-effect, this renames
+
+ adacurses-config to adacurses5-config and
+ adacursesw-config to adacursesw5-config
+ * the configure script looks for gnatgcc if the Ada95 binding is
+ built, in preference to the default gcc/cc. The script also
+ ensures that the Ada95 binding is built with the level of
+ optimization as the C libraries.
+ * the configure script captures define's related to -D_XOPEN_SOURCE
+ from the configure check and adds those to the *-config and *.pc
+ files, to simplify use for the wide-character libraries.
+
+ Configuration options
+
+ There are several new (or extended) configure options:
+
+ --disable-db-install
+ Do not install the terminal database. This is used to omit
+ features for packages, as done with --without-progs. The option
+ simplifies building cross-compile support packages.
+
+ --disable-gnat-projects
+ This option is used for regression testing
+
+ --disable-lib-suffixes
+ Suppress the "w", "t" or "tw" suffixes which normally would be
+ added to the library names for the --enable-widec and
+ --with-pthread options.
+
+ --with-cxx-shared
+ When --with-shared is set, build libncurses++ as a shared
+ library. This implicitly relies upon building with gcc/g++,
+ since other compiler suites may have differences in the way
+ shared libraries are built. libtool by the way has similar
+ limitations.
+
+ --with-hashed-db
+ Extended this configure option to simplify building with
+ different versions of Berkeley database using FreeBSD ports.
+
+ --with-pc-suffix
+ If ".pc" files are installed, optionally add a suffix to the
+ files and corresponding package names to separate unusual
+ configurations. If no option value is given (or if it is
+ "none"), no suffix is added. This option is used in the test
+ package for ncurses6.
+
+ --with-xterm-kbs
+ Configure xterm's terminfo entries to use either BS (^H, i.e.,
+ ASCII backspace) or DEL (^?, or 127).
+
+ Portability
+
+ MinGW
+
+ Most of the portability-related work since [73]ncurses 5.9 extended
+ and improved the MinGW port introduced in [74]ncurses 5.8.
+
+ The MinGW port can be readily cross-compiled:
+ * modified configure script to allow creating dll's for MinGW when
+ cross-compiling.
+ * enforced Windows-style path-separator if cross-compiling,
+ * added scripts for test-builds of cross-compiled packages for
+ ncurses6 to MinGW.
+ * added pc-files to the MinGW cross-compiling test-packages.
+ * added script for building test-packages of binaries cross-compiled
+ to MinGW using NSIS.
+ * added nc_mingw.h to installed headers for MinGW port; this is
+ needed for cross-compiling [75]ncurses-examples.
+ * added test-packages for cross-compiling ncurses-examples using the
+ MinGW test-packages.
+
+ The MinGW-specific Windows driver accounts for several changes:
+ * wide-character display is made usable by replacing MinGW's
+ non-working wcrtomb and wctomb functions.
+ * implemented some display features: [76]beep, [77]flash,
+ [78]curs_set.
+ * the driver handles repainting on endwin/refresh combination.
+ * modified treatment of TERM variable for MinGW port to allow
+ explicit use of the Windows console driver by checking if $TERM is
+ set to "#win32console" or an abbreviation of that.
+ * the Windows driver also matches the special TERM value "unknown"
+ * the driver now returns characters for special keys, (like ansi.sys
+ does), when keypad mode is off, rather than returning nothing at
+ all.
+ * the driver checks a new environment variable [79]NCURSES_CONSOLE2
+ to optionally work around a deficiency in Console2 (and its
+ descendent ConsoleZ) which hang when an application creates a
+ console buffer.
+
+ Finally, there are other improvements:
+ * MinGW is one of the configurations where ncurses installs by
+ default into /usr
+ * configuration for cross-compiling uses AC_CHECK_TOOLS in
+ preference to AC_PATH_PROGS when searching for ncurses*-config,
+ e.g., in Ada95/configure and test/configure.
+ * extend Windows support to work with MSYS2;
+ + this works with a scenario where there is an ANSI-escape
+ handler such as ansicon running in the console window.
+ + wrap isatty calls with a macro, provide a corresponding set
+ of support routines to address differences between MinGW and
+ MSYS2.
+ * ensure WINVER is defined in makefiles rather than using headers.
+ * add check for the gnatprep "-T" option.
+ * work around a bug introduced by [80]gcc 4.8.1 in MinGW which
+ breaks "trace" feature.
+ * add a driver-name method to each of the drivers.
+
+ Other ports
+
+ These changes affect certain platforms (ports):
+ * the configure script knows how to build shared libraries with
+ DragonFlyBSD and Interix.
+ * support for AIX shared libraries is improved, tested with AIX 5.3,
+ 6.1 and 7.1 with both gcc 4.2.4 and cc:
+ + the shared-library suffix for AIX 5 and 6 is now ".so"
+ + the -brtl option is used with AIX 5-7; it is needed to link
+ with the shared libraries.
+ * the configure --enable-pc-files option takes into account the
+ [81]PKG_CONFIG_PATH variable.
+ * the configure option --with-pkg-config-libdir provides control
+ over the actual directory into which pc-files are installed.
+ * the build scripts add explicit -ltinfo, etc., to the generated
+ ".pc" file when ld option "--as-needed" is used, or when ncurses
+ and tinfo are installed without using rpath.
+ * the configure script disallows conflicting options
+ "--with-termlib" and "--enable-term-driver".
+ * the check for missing c++ compiler to work when no error is
+ reported, and no variables set is improved (see note for
+ [82]20021206).
+ * the misc/gen_edit.sh script selects a "linux" entry which works
+ with the current kernel rather than assuming it is always
+ "linux3.0"
+ * the test/configure script makes it simpler to override names of
+ curses-related libraries, to help with linking with pdcurses in
+ MinGW environment.
+ * the configure-script/ifdef's allow the BSD OLD_TTY feature to be
+ suppressed if the type of ospeed is configured using the option
+ --with-ospeed to not be a short. By default, it is a short for
+ termcap-compatibility.
+ * the MKlib_gen.sh script works around a recent change in gcc 5
+ (released [83]mid-2015) which essentially emits multiple #line
+ statements for the same position in a file.
+ * the configure script works with Minix3.2 (see [84]note on
+ portability)
+ * OS/2 redux:
+ + the configure script supports OS/2 kLIBC.
+ + the --with-lib-prefix option allows configuring for old/new
+ flavors of OS/2 EMX.
+ * improved configure-script checks for _XOPEN_SOURCE:
+ + the definition works starting with Solaris 10.
+ + the definition is suppressed for IRIX64, since its header
+ files have a conflict versus _SGI_SOURCE.
+ _________________________________________________________________
+
+Features of ncurses
+
+ The ncurses package is fully upward-compatible with SVr4 (System V
+ Release 4) curses:
+ * All of the SVr4 calls have been implemented (and are documented).
+ * ncurses supports all of the for SVr4 curses features including
+ keyboard mapping, color, forms-drawing with ACS characters, and
+ automatic recognition of keypad and function keys.
+ * ncurses provides these SVr4 add-on libraries (not part of X/Open
+ Curses):
+ + the panels library, supporting a stack of windows with
+ backing store.
+ + the menus library, supporting a uniform but flexible
+ interface for menu programming.
+ + the form library, supporting data collection through
+ on-screen forms.
+ * ncurses's terminal database is fully compatible with that used by
+ SVr4 curses.
+ + ncurses supports user-defined capabilities which it can see,
+ but which are hidden from SVr4 curses applications using the
+ same terminal database.
+ + It can be optionally configured to match the format used in
+ related systems such as AIX and Tru64.
+ + Alternatively, ncurses can be configured to use hashed
+ databases rather than the directory of files used by SVr4
+ curses.
+ * The ncurses utilities have options to allow you to filter terminfo
+ entries for use with less capable curses/terminfo versions such as
+ the 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
- 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 SVr3 curses, ncurses can write to the rightmost-bottommost
- corner of the screen if your terminal has an insert-character
+ * The API is 8-bit clean and base-level conformant with the X/OPEN
+ curses specification, XSI curses (that is, it implements all BASE
+ level features, and most EXTENDED features). It includes many
+ function calls not supported under SVr4 curses (but portability of
+ all calls is documented so you can use the SVr4 subset only).
+ * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
+ corner of the screen if your terminal has an insert-character
capability.
* Ada95 and C++ bindings.
- * Support for mouse event reporting with X Window xterm and OS/2
- console windows.
+ * Support for mouse event reporting with X Window xterm and FreeBSD
+ and OS/2 console windows.
* Extended mouse support via Alessandro Rubini's gpm package.
- * The function wresize() allows you to resize windows, preserving
+ * The function wresize allows you to resize windows, preserving
their data.
- * The function use_default_colors() allows you to use the terminal's
+ * 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
+ * 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 256-color terminals, such as modern xterm.
+ * Support for 16-color terminals, such as aixterm and modern xterm.
+ * Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
or System V's.
- * Super hardware scrolling support. The screen-update code
- incorporates a novel, simple, and cheap algorithm that enables it
- to make optimal use of hardware scrolling, line-insertion, and
- line-deletion for screen-line movements. This algorithm is more
- powerful than the 4.4BSD curses quickch() routine.
- * Real support for terminals with the magic-cookie glitch. The
- screen-update code will refrain from drawing a highlight if the
- magic- cookie unattributed spaces required just before the
- beginning and after the end would step on a non-space character.
- It will automatically shift highlight boundaries when doing so
- would make it possible to draw the highlight without changing the
+ * Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that enables it
+ to make optimal use of hardware scrolling, line-insertion, and
+ line-deletion for screen-line movements. This algorithm is more
+ powerful than the 4.4BSD curses quickch routine.
+ * Real support for terminals with the magic-cookie glitch. The
+ screen-update code will refrain from drawing a highlight if the
+ magic- cookie unattributed spaces required just before the
+ beginning and after the end would step on a non-space character.
+ It will automatically shift highlight boundaries when doing so
+ would make it possible to draw the highlight without changing the
visual appearance of the screen.
- * It is possible to generate the library with a list of pre-loaded
- fallback entries linked to it so that it can serve those terminal
- types even when no terminfo tree or termcap file is accessible
- (this may be useful for support of screen-oriented programs that
+ * It is possible to generate the library with a list of pre-loaded
+ fallback entries linked to it so that it can serve those terminal
+ types even when no terminfo tree or termcap file is accessible
+ (this may be useful for support of screen-oriented programs that
must run in single-user mode).
- * The tic(1)/captoinfo utility provided with ncurses has the ability
- to translate many termcaps from the XENIX, IBM and AT&T extension
- sets.
- * A BSD-like tset(1) utility is provided.
+ * The [85]tic/[86]captoinfo utility provided with ncurses has the
+ ability to translate many termcaps from the XENIX, IBM and AT&T
+ extension sets.
+ * A BSD-like [87]tset utility is provided.
* The ncurses library and utilities will automatically read terminfo
- entries from $HOME/.terminfo if it exists, and compile to that
- directory if it exists and the user has no write access to the
- system directory. This feature makes it easier for users to have
- personal terminfo entries without giving up access to the system
+ entries from $HOME/.terminfo if it exists, and compile to that
+ directory if it exists and the user has no write access to the
+ system directory. This feature makes it easier for users to have
+ personal terminfo entries without giving up access to the system
terminfo directory.
- * You may specify a path of directories to search for compiled
- descriptions with the environment variable TERMINFO_DIRS (this
- generalizes the feature provided by TERMINFO under stock System
+ * You may specify a path of directories to search for compiled
+ descriptions with the environment variable TERMINFO_DIRS (this
+ generalizes the feature provided by TERMINFO under stock System
V.)
- * In terminfo source files, use capabilities may refer not just to
+ * In terminfo source files, use capabilities may refer not just to
other entries in the same source file (as in System V) but also to
- compiled entries in either the system terminfo directory or the
+ compiled entries in either the system terminfo directory or the
user's $HOME/.terminfo directory.
- * A script (capconvert) is provided to help BSD users transition
- from termcap to terminfo. It gathers the information in a TERMCAP
- environment variable and/or a ~/.termcap local entries file and
- converts it to an equivalent local terminfo tree under
- $HOME/.terminfo.
- * Automatic fallback to the /etc/termcap file can be compiled in
- when it is not possible to build a terminfo tree. This feature is
- neither fast nor cheap, you don't want to use it unless you have
- to, but it's there.
- * The table-of-entries utility toe makes it easy for users to see
- exactly what terminal types are available on the system.
+ * The table-of-entries utility [88]toe makes it easy for users to
+ see exactly what terminal types are available on the system.
* The library meets the XSI requirement that every macro entry point
- have a corresponding function which may be linked (and will be
- prototype-checked) if the macro definition is disabled with
+ have a corresponding function which may be linked (and will be
+ prototype-checked) if the macro definition is disabled with
#undef.
- * An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
- interface.
+ * Extensive documentation is provided (see the [89]Additional
+ Reading section of the [90]ncurses FAQ for online documentation).
- State of the Package
+Applications using ncurses
- Numerous bugs present in earlier versions have been fixed; the library
- is far more reliable than it used to be. Bounds checking in many
- `dangerous' entry points has been improved. The code is now type-safe
- according to gcc -Wall. The library has been checked for malloc leaks
- and arena corruption by the Purify memory-allocation tester.
+ The ncurses distribution includes a selection of test programs
+ (including a few games). These are available separately as
+ [91]ncurses-examples
- The ncurses code has been tested with a wide variety of applications
- including (versions starting with those noted):
+ The ncurses library has been tested with a wide variety of
+ applications including:
cdk
Curses Development Kit
- [3]http://www.vexus.ca/CDK.html
- [4]http://dickey.his.com/cdk.
+
+ [92]http://invisible-island.net/cdk/
ded
directory-editor
- [5]http://dickey.his.com/ded.
+
+ [93]http://invisible-island.net/ded/
dialog
- the underlying application used in Slackware's setup, and the
- basis for similar applications on GNU/Linux.
- [6]http://dickey.his.com/dialog.
+ the underlying application used in Slackware's setup, and the
+ basis for similar install/configure applications on many
+ systems.
+
+ [94]http://invisible-island.net/dialog/
lynx
- the character-screen WWW browser
- [7]http://lynx.isc.org/release.
+ the text WWW browser
- Midnight Commander 4.1
+ [95]http://lynx.isc.org/
+
+ Midnight Commander
file manager
- [8]www.gnome.org/mc/.
+
+ [96]http://www.midnight-commander.org/
mutt
mail utility
- [9]http://www.mutt.org.
+
+ [97]http://www.mutt.org/
ncftp
file-transfer utility
- [10]http://www.ncftp.com.
+
+ [98]http://www.ncftp.com/
nvi
- New vi versions 1.50 are able to use ncurses versions 1.9.7 and
- later.
- [11]http://www.bostic.com/vi/.
+ New vi uses ncurses.
+
+ [99]https://sites.google.com/a/bostic.com/keithbostic/nvi
tin
newsreader, supporting color, MIME
- [12]http://www.tin.org.
-
- taper
- tape archive utility
- [13]http://members.iinet.net.au/~yusuf/taper/.
- vh-1.6
- Volks-Hypertext browser for the Jargon File
- [14]http://www.bg.debian.org/Packages/unstable/text/vh.html.
+ [100]http://www.tin.org/
as well as some that use ncurses for the terminfo support alone:
minicom
- terminal emulator
- [15]http://www.pp.clinet.fi/~walker/minicom.html.
+ terminal emulator for serial modem connections
+
+ [101]http://alioth.debian.org/projects/minicom/
+
+ mosh
+ a replacement for ssh.
+
+ [102]https://mosh.mit.edu/
+
+ tack
+ terminfo action checker
+
+ [103]http://invisible-island.net/ncurses/tack.html
+
+ tmux
+ terminal multiplexor
+
+ [104]http://tmux.github.io/
vile
- vi-like-emacs
- [16]http://dickey.his.com/vile.
+ vi-like-emacs may be built to use the terminfo, termcap or
+ curses interfaces.
+
+ [105]http://invisible-island.net/vile/
+
+ and finally, those which use only the termcap interface:
+
+ emacs
+ text editor
+
+ [106]http://www.gnu.org/software/emacs/
+
+ screen
+ terminal multiplexor
+
+ [107]http://www.gnu.org/software/screen/
+
+ vim
+ text editor
- The ncurses distribution includes a selection of test programs
- (including a few games).
+ [108]http://www.vim.org/
-Who's Who and What's What
+Development activities
- The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
- S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
- [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
- Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [22]bug-ncurses@gnu.org.
+ Zeyd Ben-Halim started ncurses from a previous package pcurses,
+ written by Pavel Curtis. Eric S. Raymond continued development.
+ Juergen Pfeifer wrote most of the form and menu libraries. Ongoing
+ development work is done by [109]Thomas Dickey. Thomas Dickey also
+ acts as the maintainer for the Free Software Foundation, which holds
+ the [110]copyright on ncurses.
+
+ Contact the current maintainers at
+
+ [111]bug-ncurses@gnu.org
To join the ncurses mailing list, please write email to
- bug-ncurses-request@gnu.org containing the line:
- subscribe <name>@<host.domain>
+
+ [112]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 [23]ftp://dickey.his.com/ncurses.
+ Beta versions of ncurses and patches to the current release are made
+ available at
+
+ [113]ftp://invisible-island.net/ncurses/ .
+
+ There is an archive of the mailing list here:
+
+ [114]http://lists.gnu.org/archive/html/bug-ncurses (also
+ [115]https)
-Future Plans
+Related resources
- * Extended-level XPG4 conformance, with internationalization
- support.
- * Ports to more systems, including DOS and Windows.
+ The release notes make scattered references to these pages, which may
+ be interesting by themselves:
+ * [116]man2html
+ * [117]ncurses licensing
+ * [118]Symbol versioning in ncurses
+ * [119]The MinGW port of ncurses
+ * [120]tack - terminfo action checker
+ * [121]tar versus portability
+ * [122]tctest - termcap library checker
+ * [123]Terminal Database
- We need people to help with these projects. If you are interested in
- working on them, please join the ncurses list.
+Other resources
-Other Related Resources
+ The distribution provides a newer version of the terminfo-format
+ terminal description file once maintained by [124]Eric Raymond .
+ Unlike the older version, the termcap and terminfo data are provided
+ in the same file, and provides several user-definable extensions
+ beyond the X/Open specification.
- The distribution includes and uses a version of the terminfo-format
- terminal description file maintained by Eric Raymond.
- [24]http://earthspace.net/~esr/terminfo.
+ You can find lots of information on terminal-related topics not
+ covered in the terminfo file at [125]Richard Shuford's archive .
- You can find lots of information on terminal-related topics not
- covered in the terminfo file at [25]Richard Shuford's archive.
+ * [126]Overview
+ * [127]Release Notes
+ + [128]Library improvements
+ o [129]Output buffering
+ o [130]Symbol versioning
+ o [131]Miscellaneous
+ + [132]Program improvements
+ o [133]Utilities
+ o [134]Examples
+ + [135]Terminal database
+ + [136]Documentation
+ + [137]Interesting bug-fixes
+ + [138]Configuration changes
+ o [139]Major changes
+ o [140]Configuration options
+ + [141]Portability
+ o [142]MinGW
+ o [143]Other ports
+ * [144]Features of ncurses
+ * [145]Applications using ncurses
+ * [146]Development activities
+ * [147]Related resources
+ * [148]Other resources
References
- 1. ftp://ftp.gnu.org/pub/gnu/ncurses
- 2. ftp://dickey.his.com/ncurses
- 3. http://www.vexus.ca/CDK.html
- 4. http://dickey.his.com/cdk/cdk.html
- 5. http://dickey.his.com/ded/ded.html
- 6. http://dickey.his.com/dialog/dialog.html
- 7. http://lynx.isc.org/release/
- 8. file://localhost/usr/build/ncurses/ncurses-5.1-20000704/doc/html/www.gnome.org/mc/
- 9. http://www.mutt.org/
- 10. http://www.ncftp.com/
- 11. http://www.bostic.com/vi/
- 12. http://www.tin.org/
- 13. http://members.iinet.net.au/~yusuf/taper/
- 14. http://www.bg.debian.org/Packages/unstable/text/vh.html
- 15. http://www.pp.clinet.fi/~walker/minicom.html
- 16. http://dickey.his.com/vile/vile.html
- 17. mailto:zmbenhal@netcom.com
- 18. http://www.ccil.org/~esr/home.html
- 19. mailto:dickey@herndon4.his.com
- 20. mailto:juergen.pfeifer@gmx.net
- 21. mailto:dickey@herndon4.his.com
- 22. mailto:bug-ncurses@gnu.org
- 23. ftp://dickey.his.com/ncurses
- 24. http://earthspace.net/~esr/terminfo
- 25. http://www.cs.utk.edu/~shuford/terminal_index.html
+ 1. http://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 2. http://invisible-island.net/ncurses/man/clear.1.html
+ 3. http://invisible-island.net/ncurses/man/infocmp.1m.html
+ 4. http://invisible-island.net/ncurses/man/tabs.1.html
+ 5. http://invisible-island.net/ncurses/man/tic.1m.html
+ 6. http://invisible-island.net/ncurses/man/toe.1m.html
+ 7. http://invisible-island.net/ncurses/man/tput.1.html
+ 8. http://invisible-island.net/ncurses/man/tset.1.html
+ 9. ftp://ftp.gnu.org/gnu/ncurses/
+ 10. ftp://invisible-island.net/ncurses/
+ 11. http://invisible-island.net/ncurses/tctest.html
+ 12. http://invisible-island.net/ncurses/ncurses-examples.html
+ 13. http://lists.gnu.org/archive/html/bug-ncurses/2012-07/msg00029.html
+ 14. http://invisible-island.net/ncurses/NEWS.html#t20050101
+ 15. http://invisible-island.net/ncurses/announce-5.5.html
+ 16. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 17. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-initscr
+ 18. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-newterm
+ 19. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Initialization
+ 20. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_NO_SETBUF
+ 21. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html
+ 22. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
+ 23. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-reset_prog_mode_-reset_shell_mode
+ 24. http://invisible-island.net/ncurses/man/curs_printw.3x.html
+ 25. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 26. http://invisible-island.net/ncurses/tack.html
+ 27. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_tioctl
+ 28. http://invisible-island.net/ncurses/man/curs_opaque.3x.html
+ 29. http://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY
+ 30. http://invisible-island.net/ncurses/man/form_field_opts.3x.html
+ 31. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
+ 32. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-putwin_getwin
+ 33. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
+ 34. http://invisible-island.net/ncurses/tctest.html
+ 35. http://invisible-island.net/ncurses/tctest.html#my-better-translation
+ 36. http://invisible-island.net/ncurses/NEWS.html#t980103
+ 37. https://svnweb.freebsd.org/base/head/lib/libc/gen/getcap.c?revision=244092&view=markup#l784
+ 38. http://invisible-island.net/ncurses/ncurses-examples.html
+ 39. http://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env
+ 40. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-derwin
+ 41. http://invisible-island.net/ncurses/man/curs_window.3x.html#h3-mvwin
+ 42. http://invisible-island.net/ncurses/man/form_driver.3x.html#h3-form_driver_w
+ 43. http://invisible-island.net/ncurses/terminfo.src.html#toc-_M_L_T_E_R_M
+ 44. http://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm
+ 45. http://invisible-island.net/ncurses/terminfo.src.html#tic-putty-sco
+ 46. http://invisible-island.net/ncurses/terminfo.src.html#tic-teken
+ 47. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_A_T_O_R
+ 48. http://invisible-island.net/ncurses/terminfo.src.html#toc-_T_E_R_M_I_N_O_L_O_G_Y
+ 49. http://invisible-island.net/ncurses/terminfo.src.html#tic-tmux
+ 50. http://invisible-island.net/ncurses/terminfo.src.html#toc-_S_I_M_P_L_E_T_E_R_M
+ 51. http://invisible-island.net/ncurses/terminfo.src.html#tic-vte
+ 52. http://invisible-island.net/ncurses/terminfo.src.html#tic-vt520ansi
+ 53. http://aerie.jexium-island.net/ncurses/man/clear.1.html
+ 54. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_sl
+ 55. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1005
+ 56. http://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-1006
+ 57. http://invisible-island.net/ncurses/NEWS.html
+ 58. http://invisible-island.net/scripts/man2html.html
+ 59. http://invisible-island.net/ncurses/NCURSES-Programming-HOWTO.html
+ 60. http://invisible-island.net/ncurses/NEWS.html#t20110319
+ 61. http://invisible-island.net/ncurses/NEWS.html#t20021221
+ 62. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
+ 63. http://invisible-island.net/ncurses/man/default_colors.3x.html
+ 64. http://invisible-island.net/ncurses/man/curs_color.3x.html#h3-Routine-Descriptions
+ 65. http://invisible-island.net/ncurses/man/resizeterm.3x.html
+ 66. http://invisible-island.net/ncurses/NEWS.html#t980725
+ 67. http://invisible-island.net/ncurses/NEWS.html#t960418
+ 68. http://invisible-island.net/ncurses/NEWS.html#t970405
+ 69. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-set_term
+ 70. http://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-delscreen
+ 71. http://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output
+ 72. http://docs.oracle.com/cd/E19253-01/html/817-0552/fhkpy.html
+ 73. http://invisible-island.net/ncurses/announce-5.9.html
+ 74. http://invisible-island.net/ncurses/announce-5.8.html
+ 75. http://invisible-island.net/ncurses/ncurses-examples.html
+ 76. http://invisible-island.net/ncurses/man/curs_beep.3x.html
+ 77. http://invisible-island.net/ncurses/man/curs_beep.3x.html
+ 78. http://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-curs_set
+ 79. http://invisible-island.net/ncurses/man/ncurses.3x.html#h3-NCURSES_CONSOLE2
+ 80. http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual
+ 81. http://linux.die.net/man/1/pkg-config
+ 82. http://invisible-island.net/ncurses/NEWS.html#t20021206
+ 83. https://gcc.gnu.org/gcc-5/
+ 84. http://invisible-island.net/autoconf/portability-test.html
+ 85. http://invisible-island.net/ncurses/man/tic.1m.html
+ 86. http://invisible-island.net/ncurses/man/captoinfo.1m.html
+ 87. http://invisible-island.net/ncurses/man/tset.1.html
+ 88. http://invisible-island.net/ncurses/man/toe.1m.html
+ 89. http://invisible-island.net/ncurses/ncurses.faq.html#additional_reading
+ 90. http://invisible-island.net/ncurses/ncurses.faq.html
+ 91. http://invisible-island.net/ncurses/ncurses-examples.html
+ 92. http://invisible-island.net/cdk/
+ 93. http://invisible-island.net/ded/
+ 94. http://invisible-island.net/dialog/
+ 95. http://lynx.isc.org/
+ 96. http://www.midnight-commander.org/
+ 97. http://www.mutt.org/
+ 98. http://www.ncftp.com/
+ 99. https://sites.google.com/a/bostic.com/keithbostic/nvi
+ 100. http://www.tin.org/
+ 101. http://alioth.debian.org/projects/minicom/
+ 102. https://mosh.mit.edu/
+ 103. http://invisible-island.net/ncurses/tack.html
+ 104. http://tmux.github.io/
+ 105. http://invisible-island.net/vile/
+ 106. http://www.gnu.org/software/emacs/
+ 107. http://www.gnu.org/software/screen/
+ 108. http://www.vim.org/
+ 109. mailto:dickey@invisible-island.net
+ 110. http://invisible-island.net/ncurses/ncurses-license.html
+ 111. mailto:bug-ncurses@gnu.org
+ 112. mailto:bug-ncurses-request@gnu.org
+ 113. ftp://invisible-island.net/ncurses/
+ 114. http://lists.gnu.org/archive/html/bug-ncurses
+ 115. https://lists.gnu.org/archive/html/bug-ncurses
+ 116. http://invisible-island.net/scripts/man2html.html
+ 117. http://invisible-island.nethttp://invisible-island.net/ncurses/ncurses-license.html
+ 118. http://invisible-island.net/ncurses/ncurses-mapsyms.html
+ 119. http://invisible-island.net/ncurses/ncurses-mingw.html
+ 120. http://invisible-island.net/ncurses/tack.html
+ 121. http://invisible-island.net/autoconf/portability-tar.html
+ 122. http://invisible-island.net/ncurses/tctest.html
+ 123. http://invisible-island.net/ncurses/ncurses.html#download_database
+ 124. http://www.catb.org/~esr/terminfo/
+ 125. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
+ 126. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-overview
+ 127. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-release-notes
+ 128. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-library
+ 129. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-setbuf
+ 130. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-versioning
+ 131. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-lib-other
+ 132. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-programs
+ 133. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-utilities
+ 134. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-examples
+ 135. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-database
+ 136. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-documentation
+ 137. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-bug-fixes
+ 138. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-config-config
+ 139. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-major
+ 140. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-config-options
+ 141. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h3-portability
+ 142. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-mingw
+ 143. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h4-port-systems
+ 144. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-features
+ 145. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-who-uses
+ 146. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-development
+ 147. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-this-stuff
+ 148. file:///usr/build/ncurses/ncurses-6.0-20150808/doc/html/announce.html#h2-other-stuff