- Announcing ncurses 5.5
+ Announcing ncurses 5.6
The ncurses (new curses) library is a free software emulation of
curses in System V Release 4.0, and more. It uses terminfo format,
Release Notes
This release is designed to be upward compatible from ncurses 5.0
- through 5.4; very few applications will require recompilation,
+ through 5.5; very few applications will require recompilation,
depending on the platform. These are the highlights from the
- change-log since ncurses 5.4 release.
+ change-log since ncurses 5.5 release.
Interface changes:
- * terminfo installs "xterm-new" as "xterm" entry rather than
- "xterm-old" (aka xterm-r6).
- * terminfo data is installed using the tic -x option (few systems
- still use ncurses 4.2).
- * modify C++ binding to work with newer C++ compilers by providing
- initializers and using modern casts. Old-style header names are
- still used in this release to allow compiling with not-so-old
- compilers.
- * modify parameter type in c++ binding for insch() and mvwinsch() to
- be consistent with underlying ncurses library (was char, is
- chtype).
- * change NCursesWindow::err_handler() to a virtual function.
- * form and menu libraries now work with wide-character data.
- Applications which bypassed the form library and manipulated the
- FIELD.buf data directly will not work properly with libformw,
- since that no longer points to an array of char. The
- set_field_buffer() and field_buffer() functions translate to/from
- the actual field data.
- * add symbol to curses.h which can be used to suppress include of
- stdbool.h, e.g.,
- #define NCURSES_ENABLE_STDBOOL_H 0
- #include <curses.h>
-
- * change SP->_current_attr to a pointer, adjust ifdef's to ensure
- that libtinfo.so and libtinfow.so have the same ABI. The reason
- for this is that the corresponding data which belongs to the
- upper-level ncurses library has a different size in each model.
- * winnstr() now returns multibyte character strings for the
- wide-character configuration.
- * assume_default_colors() no longer requires that
- use_default_colors() be called first.
- * data_ahead() now works with wide-characters.
- * slk_set() and slk_wset() now accept and store multibyte or
- multicolumn characters.
- * start_color() now returns OK if colors have already been started.
- start_color() also returns ERR if it cannot allocate memory.
- * pair_content() now returns -1 for consistency with init_pair() if
- it corresponds to the default-color.
- * unctrl() now returns null if its parameter does not correspond to
- an unsigned char.
+ * generate linkable stubs for some macros:
+ getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
+ getpary, getpary,
+ and (for libncursesw)
+ wgetbkgrnd
New features and improvements:
* library
- + environment variable NCURSES_NO_UTF8_ACS supports
- miscellaneous terminal emulators which ignore alternate
- character set escape sequences when in UTF-8 mode.
- + modify initialization of key lookup table so that if an
- extended capability (tic -x) string is defined, and its name
- begins with 'k', ncurses will automatically treat it as a
- key.
- + change GPM initialization, using dl library to load it
- dynamically at runtime.
- + form, menu and panel libraries support debug-tracing.
- * add NCURSES-Programming-HOWTO.html by Pradeep Padala (see
- http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/).
+ + support hashed databases for the terminal descriptions. This
+ uses the Berkeley database, has been tested for several
+ versions on different platforms.
+ + add use_legacy_coding() function to support lynx's
+ font-switching feature.
+ + add extension nofilter(), to cancel a prior filter() call.
+ + add/install a package config script, e.g., ncurses5-config or
+ ncursesw5-config, according to configuration options.
+ + provide ifdef for NCURSES_NOMACROS which suppresses most
+ macro definitions from curses.h, i.e., where a macro is
+ defined to override a function to improve performance.
+ + make ifdef's consistent in curses.h for the extended colors
+ so the header file can be used for the normal curses library.
+ The header file installed for extended colors is a variation
+ of the wide-character configuration.
+ + improve tgetstr() by making the return value point into the
+ user's buffer, if provided.
+ + add ifdef's allowing ncurses to be built with tparm() using
+ either varargs (the existing status), or using a
+ fixed-parameter list (to match X/Open).
+ + widen the test for xterm kmous a little to allow for other
+ strings than "\E[M", e.g., for xterm-sco functionality in
+ xterm.
+ + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs.
+ + move prototypes for wide-character trace functions from
+ curses.tail to curses.wide to avoid accidental reference to
+ those if _XOPEN_SOURCE_EXTENDED is defined without ensuring
+ that <wchar.h> is included.
+ + change the way shared libraries (other than libtool) are
+ installed. Rather than copying the build-tree's libraries,
+ link the shared objects into the install directory. This
+ makes the --with-rpath option work except with $(DESTDIR).
+ + several improvements for rendering in hpterm. These are only
+ available if the library is configured using
+ --enable-xmc-glitch.
+ + Add NCURSES_NO_HARD_TABS and NCURSES_NO_MAGIC_COOKIE
+ environment variables to allow runtime suppression of the
+ related hard-tabs and xmc-glitch features.
* programs:
- * infocmp:
- + The -i option now matches 8-bit controls against its table
- entries, e.g., so it can analyze the xterm-8bit entry.
- + add "-x" option to infocmp like tic's "-x", for use in "-F"
- comparisons. This modifies infocmp to only report extended
- capabilities if the -x option is given, making this more
- consistent with tic. Some scripts may break, since infocmp
- previous gave this information without an option.
- * tic:
- + modify termcap-parsing to retain 2-character aliases at the
- beginning of an entry if the "-x" option is used in tic.
- + filter out long extended names when translating to termcap
- format. Only two characters are permissible for termcap
- capability names.
- + correct translation of "%%" in terminfo format to termcap,
- e.g., using "tic -C".
- + modify the "-c -v" options to ignore delays when comparing
- strings. Also modify it to ignore a canceled sgr string,
- e.g., for terminals which cannot properly combine attributes
- in one control sequence.
- + add a check for improperly ended strings, i.e., where a
- following line begins in column 1.
- + add a check in tic for terminfo entries having an sgr0 but no
- sgr string. This confuses Tru64 and HPUX curses when combined
- with color, e.g., making them leave line-drawing characters
- in odd places.
- + add check (with debug configuration) that provides about the
- runtime changes that would be made to sgr0 for termcap
- applications.
- * tset:
- + add -c and -w options to allow user to suppress ncurses'
- resizing of the terminal emulator window in the special case
- where it is not able to detect the true size.
+ + add new test programs: chgat.c, demo_altkeys.c, echochar.c,
+ foldkeys.c, movewindow.c, redraw.c, (noting that existing
+ test programs also were modified to test additional
+ features).
+ + modify tack to test extended capability function-key strings.
+ + modify toe to access termcap data, e.g., via cgetent()
+ functions, or as a text file if those are not available.
+ + improve infocmp/tic -f option formatting.
+ + add toe -a option, to show all databases. This uses new
+ private interfaces in the ncurses library for iterating
+ through the list of databases.
+ + modify MKfallback.sh to use tic -x when constructing fallback
+ tables to allow extended capabilities to be retrieved from a
+ fallback entry.
+ * terminal database
+ + add terminfo entries for xfce terminal (xfce) and multi gnome
+ terminal (mgt)
+ + add nsterm-16color entry
+ + updated mlterm terminfo entry
+ + add kon, kon2 and jfbterm terminfo entry
+ + remove invis capability from klone+sgr, mainly used by linux
+ entry, since it does not really do this
+ + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
+ + add shifted up/down arrow codes to xterm-new as kind/kri
+ strings
+ + add hpterm-color terminfo entry
+ + add 256color variants of terminfo entries for programs which
+ are reported to implement this feature
+ + correct order of use-clauses in rxvt-basic entry which made
+ codes for f1-f4 vt100-style rather than vt220-style.
Major bug fixes:
- * improve logic in tgetent() which adjusts the termcap "me" string
- to work with ISO-2022 string used in xterm-new. This is a feature
- that was incompletely implemented in ncurses 5.3. ncurses attempts
- to provide termcap clients with the portion of the sgr0 (termcap
- "me") string that does not reset line-drawing.
- * cells in the WINDOW which are continuations of a multicolumn
- character are encoded differently, making repainting more
- reliable.
- * amend change to setupterm() in ncurses 5.4 (20030405) which would
- reuse the value of cur_term if the same output was selected. This
- now reuses it only when setupterm() is called from tgetent(),
- which has no notion of separate SCREENs. Note that tgetent() must
- be called after initscr() or newterm() to use this feature.
- * make setcchar() now works when its wchar_t* parameter is pointing
- to a string which contains more data than can be converted.
- * win_wchnstr() now works for more than one cell.
- * resizeterm() now processes all levels of window hierarchy.
- * disable GPM mouse support when $TERM happens to be prefixed with
- "xterm". Gpm_Open() would otherwise assert that it can deal with
- mouse events in this case.
- * add SP->_screen_acs_map[], used to ensure that mapping of missing
- line-drawing characters is handled properly. For example,
- ACS_DARROW is absent from xterm-new, and it was coincidentally
- displayed the same as ACS_BTEE.
+ * correct a typo in configure --with-bool option for the case where
+ --without-cxx is used.
+ * move assignment from environment variable ESCDELAY from initscr()
+ down to newterm() so the environment variable affects timeouts for
+ terminals opened with newterm() as well.
+ * modify werase to clear multicolumn characters that extend into a
+ derived window.
+ * modify wchgat() to mark updated cells as changed so a refresh will
+ repaint those cells.
+ * correct logic in wadd_wch() and wecho_wch(), which did not guard
+ against passing the multi-column attribute into a call on
+ waddch(), e.g., using data returned by win_wch()
+ * fix redrawing of windows other than stdscr using wredrawln() by
+ touching the corresponding rows in curscr.
+ * reduce memory leaks in repeated calls to tgetent() by remembering
+ the last TERMINAL* value allocated to hold the corresponding data
+ and freeing that if the tgetent() result buffer is the same as the
+ previous call.
+ * modify read_termtype() so the term_names data is always allocated
+ as part of the str_table, a better fix for a memory leak.
+ * fix wins_nwstr(), which did not handle single-column non-8bit
+ codes.
+ * modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits
+ since those record the state of multicolumn characters.
+ * improve SIGWINCH handling by postponing its effect during
+ newterm(), etc., when allocating screens.
+ * remove 970913 feature for copying subwindows as they are moved in
+ mvwin().
+ * add checks in waddchnstr() and wadd_wchnstr() to stop copying when
+ a null character is found.
+ * add some checks to ensure current position is within scrolling
+ region before scrolling on a new line.
+ * add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding.
Portability:
* configure script:
+ new options:
- --enable-largefile
- set compiler and linker flags to use largefile
- support.
-
- --enable-ext-colors
- Allow encoding of 256 foreground and background
- colors, e.g., with the xterm-256color or
- xterm-88color terminfo entries. This requires ABI 6
- because it changes the size of cchar_t.
-
- --enable-ext-mouse
- This defines NCURSES_MOUSE_VERSION 2, and modifies
- the encoding of mouse events to support wheel mice,
- which may transmit buttons 4 and 5. This works with
- xterm and similar terminal emulators. This requires
- ABI 6 because it changes the encoding of mouse
- events.
-
- --with-chtype
- overriding of the non-LP64 model's use of chtype
-
- --with-mmask-t
- overriding of the non-LP64 model's use of mmask_t
-
- --without-xterm-new
- Installs "xterm-old" as the "xterm" entry of the
- terminfo database.
-
- + The --with-termlib option now accepts a value which sets the
- name of the terminfo library. This would allow a packager to
- build libtinfow.so renamed to coincide with libtinfo.so
- + fixes/improvements for cross-compiling:
- o suppress $suffix in misc/run_tic.sh when
- cross-compiling. This allows cross-compiles to use the
- host's tic program to handle the "make install.data"
- step.
- o correct BUILD_CPPFLAGS substitution in
- ncurses/Makefile.in, to allow cross-compiling from a
- separate directory tree.
+ --with-hashed-db
+ Use Berkeley hashed database for storing terminfo
+ data rather than storing each compiled entry in a
+ separate binary file within a directory tree.
+
+ --without-dlsym
+ Do not use dlsym() to load GPM dynamically.
+
+ --with-valgrind
+ Simplify building for testing with valgrind.
+
+ --enable-wgetch-events
+ Compile with experimental wgetch-events code.
+
+ --enable-signed-char
+ Store booleans in "signed char" rather than "char".
+
+ + improved options:
+
+ --disable-largefile
+ make the option work both ways.
+
+ --with-gpm
+ The option now accepts a parameter, i.e., the name
+ of the dynamic GPM library to load via dlopen()
+
+ --disable-symlinks
+ The option now allows one to disable symlink() in
+ tic even when link() does not work.
+
+ * other configure/build issues:
+ + remove special case for Darwin in CF_XOPEN_SOURCE configure
+ macro.
+ + add configure check to ensure that SIGWINCH is defined on
+ platforms such as OS X which exclude that when _XOPEN_SOURCE,
+ etc., are defined
+ + use ld's -search_paths_first option on Darwin to work around
+ odd search rules on that platform.
+ + improve ifdef's for _POSIX_VDISABLE in tset to work with Mac
+ OS X.
+ + modify configure script to ensure that if the C compiler is
+ used rather than the loader in making shared libraries, the
+ $(CFLAGS) variable is also used.
+ + use ${CC} rather than ${LD} in shared library rules for
+ IRIX64, Solaris to help ensure that initialization sections
+ are provided for extra linkage requirements, e.g., of C++
+ applications.
+ + improve some shared-library configure scripting for Linux,
+ FreeBSD and NetBSD to make --with-shlib-version work.
+ + split up dependency of names.c and codes.c in
+ ncurses/Makefile to work with parallel make.
+ + modify MKlib_gen.sh to change preprocessor-expanded _Bool
+ back to bool.
+ + modify progs/Makefile.in to make tput init work properly with
+ cygwin, i.e., do not pass a .exe in the reference string used
+ in check_aliases.
* library:
- + add ifdef's for _LP64 in curses.h to avoid using wasteful
- 64-bits for chtype and mmask_t, but add configure option
- --disable-lp64 in case anyone used that configuration.
- + modify C++ binding to use some C internal functions to make
- it compile properly on Solaris (and other platforms).
- + remove check in newwin() that prevents allocating windows
- that extend beyond the screen (Solaris does this).
- + check for nl_langinfo(CODESET), use it if available. This
- replaces ad hoc tests of environment variables to check if
- the terminal is setup for UTF-8 encoding. Applications which
- do not call setlocale() should be corrected, to make them
- work properly with UTF-8 encoding.
- In particular, applications which assume (and do not call
- setlocale()) that Latin-1 codes are printable will no longer
- work in a UTF-8 locale since the ad hoc check of environment
- variables to see if the locale was UTF-8 is not used when
- nl_langinfo(CODESET) is available.
- + use setlocale() to query the program's current locale rather
- than using getenv(). This supports applications which rely
- upon legacy treatment of 8-bit characters when the locale is
- not initialized.
+ + ignore wide-acs line-drawing characters that wcwidth() claims
+ are not one-column. This is a workaround for Solaris' broken
+ locale support.
+ + reduce name-pollution in term.h by removing #define's for
+ HAVE_xxx symbols.
+ + fix #ifdef in c++/internal.h for QNX 6.1
+ * test programs:
+ + modify test/configure script to allow building test programs
+ with PDCurses/X11.
+ + modified test programs to allow some to work with NetBSD
+ curses. Several do not because NetBSD curses implements a
+ subset of X/Open curses, and also lacks much of SVr4
+ additions. But it is enough for comparison.
+ + improved test/configure to build test/ncurses on HPUX 11
+ using the vendor curses.
+ + change configure script to produce test/Makefile from data
+ file.
Features of Ncurses
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).
+ 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
their data.
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.
+ * 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.
minicom
terminal emulator
- [15]http://www.netsonic.fi/~walker/minicom.html
+ [15]http://alioth.debian.org/projects/minicom/
vile
vi-like-emacs
Who's Who and What's What
Zeyd Ben-Halim started it from a previous package pcurses, written by
- Pavel Curtis. Eric S. Raymond continued development. Jürgen Pfeifer
+ Pavel Curtis. Eric S. Raymond continued development. Juergen Pfeifer
wrote most of the form and menu libraries. Ongoing work is being done
by [17]Thomas Dickey. Thomas Dickey acts as the maintainer for the
Free Software Foundation, which holds the copyright on ncurses.
Other Related Resources
The distribution provides a newer version of the terminfo-format
- terminal description file maintained by [20]Eric Raymond . Unlike the
- older version, the termcap and terminfo data are provided in the same
- file.
+ terminal description file once maintained by [20]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.
You can find lots of information on terminal-related topics not
covered in the terminfo file at [21]Richard Shuford's archive .
12. http://dione.ids.pl/~pborys/software/pinfo/
13. http://www.tin.org/
14. http://www.debian.org/Packages/unstable/text/vh.html
- 15. http://www.netsonic.fi/~walker/minicom.html
+ 15. http://alioth.debian.org/projects/minicom/
16. http://invisible-island.net/vile/
17. mailto:dickey@invisible-island.net
18. mailto:bug-ncurses@gnu.org