1*06bfebdeSXin LI Announcing ncurses 5.9 20e3d5408SPeter Wemm 30e3d5408SPeter Wemm The ncurses (new curses) library is a free software emulation of 40e3d5408SPeter Wemm curses in System V Release 4.0, and more. It uses terminfo format, 50e3d5408SPeter Wemm supports pads and color and multiple highlights and forms characters 60e3d5408SPeter Wemm and function-key mapping, and has all the other SYSV-curses 70e3d5408SPeter Wemm enhancements over BSD curses. 80e3d5408SPeter Wemm 90e3d5408SPeter Wemm In mid-June 1995, the maintainer of 4.4BSD curses declared that he 104a1a9510SRong-En Fan considered 4.4BSD curses obsolete, and encouraged the keepers of Unix 114a1a9510SRong-En Fan releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. 120e3d5408SPeter Wemm 134a1a9510SRong-En Fan The ncurses code was developed under GNU/Linux. It has been in use for 144a1a9510SRong-En Fan some time with OpenBSD as the system curses library, and on FreeBSD 154a1a9510SRong-En Fan and NetBSD as an external package. It should port easily to any 164a1a9510SRong-En Fan ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp! 170e3d5408SPeter Wemm 180e3d5408SPeter Wemm The distribution includes the library and support utilities, including 190e3d5408SPeter Wemm a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), 200e3d5408SPeter Wemm tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full 210e3d5408SPeter Wemm manual pages are provided for the library and tools. 220e3d5408SPeter Wemm 230e3d5408SPeter Wemm The ncurses distribution is available via anonymous FTP at the GNU 244a1a9510SRong-En Fan distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ . 254a1a9510SRong-En Fan It is also available at [2]ftp://invisible-island.net/ncurses/ . 260e3d5408SPeter Wemm 270e3d5408SPeter Wemm Release Notes 280e3d5408SPeter Wemm 294a1a9510SRong-En Fan This release is designed to be upward compatible from ncurses 5.0 30*06bfebdeSXin LI through 5.8; very few applications will require recompilation, 314a1a9510SRong-En Fan depending on the platform. These are the highlights from the 32*06bfebdeSXin LI change-log since ncurses 5.8 release. 330e3d5408SPeter Wemm 34*06bfebdeSXin LI This is a bug-fix release, correcting a small number of urgent 35*06bfebdeSXin LI problems in the ncurses library from the 5.8 release. 360e3d5408SPeter Wemm 37*06bfebdeSXin LI It also improves the Ada95 binding: 38*06bfebdeSXin LI * fixes a longstanding portability problem with its use of the 39*06bfebdeSXin LI [3]set_field_type function. Because that function uses 40*06bfebdeSXin LI variable-length argument lists, its interface with gnat does not 41*06bfebdeSXin LI work with certain platforms. 42*06bfebdeSXin LI * improves configurability and portability, particularly when built 43*06bfebdeSXin LI separately from the main ncurses tree. The 5.8 release introduced 44*06bfebdeSXin LI scripts which can be used to construct separate tarballs for the 45*06bfebdeSXin LI Ada95 and ncurses examples. 46*06bfebdeSXin LI Those were a proof of concept. For the 5.9 release, those scripts 47*06bfebdeSXin LI are augmented with rpm- and dpkg-scripts used in test builds 48*06bfebdeSXin LI against a variety of gnat- and system ncurses versions as old as 49*06bfebdeSXin LI gnat 3.15 and ncurses 5.4 (see snapshots and systems tested 50*06bfebdeSXin LI [4]here. 51*06bfebdeSXin LI * additional improvements were made for portability of the ncurses 52*06bfebdeSXin LI examples, adding rpm- and dpkg-scripts for test-builds. See 53*06bfebdeSXin LI [5]this page for snapshots and other information. 540e3d5408SPeter Wemm 550e3d5408SPeter Wemm Features of Ncurses 560e3d5408SPeter Wemm 570e3d5408SPeter Wemm The ncurses package is fully compatible with SVr4 (System V Release 4) 580e3d5408SPeter Wemm curses: 590e3d5408SPeter Wemm * All 257 of the SVr4 calls have been implemented (and are 600e3d5408SPeter Wemm documented). 610e3d5408SPeter Wemm * Full support for SVr4 curses features including keyboard mapping, 620e3d5408SPeter Wemm color, forms-drawing with ACS characters, and automatic 630e3d5408SPeter Wemm recognition of keypad and function keys. 640e3d5408SPeter Wemm * An emulation of the SVr4 panels library, supporting a stack of 650e3d5408SPeter Wemm windows with backing store, is included. 660e3d5408SPeter Wemm * An emulation of the SVr4 menus library, supporting a uniform but 670e3d5408SPeter Wemm flexible interface for menu programming, is included. 680e3d5408SPeter Wemm * An emulation of the SVr4 form library, supporting data collection 690e3d5408SPeter Wemm through on-screen forms, is included. 700e3d5408SPeter Wemm * Binary terminfo entries generated by the ncurses tic(1) 710e3d5408SPeter Wemm implementation are bit-for-bit-compatible with the entry format 720e3d5408SPeter Wemm SVr4 curses uses. 730e3d5408SPeter Wemm * The utilities have options to allow you to filter terminfo entries 740e3d5408SPeter Wemm for use with less capable curses/terminfo versions such as the 750e3d5408SPeter Wemm HP/UX and AIX ports. 760e3d5408SPeter Wemm 770e3d5408SPeter Wemm The ncurses package also has many useful extensions over SVr4: 780e3d5408SPeter Wemm * The API is 8-bit clean and base-level conformant with the X/OPEN 790e3d5408SPeter Wemm curses specification, XSI curses (that is, it implements all BASE 804a1a9510SRong-En Fan level features, and most EXTENDED features). It includes many 814a1a9510SRong-En Fan function calls not supported under SVr4 curses (but portability of 824a1a9510SRong-En Fan all calls is documented so you can use the SVr4 subset only). 831759abf3SPeter Wemm * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 840e3d5408SPeter Wemm corner of the screen if your terminal has an insert-character 850e3d5408SPeter Wemm capability. 860e3d5408SPeter Wemm * Ada95 and C++ bindings. 874a1a9510SRong-En Fan * Support for mouse event reporting with X Window xterm and FreeBSD 884a1a9510SRong-En Fan and OS/2 console windows. 890e3d5408SPeter Wemm * Extended mouse support via Alessandro Rubini's gpm package. 90*06bfebdeSXin LI * The function wresize allows you to resize windows, preserving 910e3d5408SPeter Wemm their data. 92*06bfebdeSXin LI * The function use_default_colors allows you to use the terminal's 930e3d5408SPeter Wemm default colors for the default color pair, achieving the effect of 940e3d5408SPeter Wemm transparent colors. 95*06bfebdeSXin LI * The functions keyok and define_key allow you to better control the 96*06bfebdeSXin LI use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by 97*06bfebdeSXin LI defining more than one control sequence to map to a given key 98*06bfebdeSXin LI code. 995d08fb1fSRong-En Fan * Support for 256-color terminals, such as modern xterm, when 1005d08fb1fSRong-En Fan configured using the --enable-ext-colors option. 1014a1a9510SRong-En Fan * Support for 16-color terminals, such as aixterm and modern xterm. 1020e3d5408SPeter Wemm * Better cursor-movement optimization. The package now features a 1030e3d5408SPeter Wemm cursor-local-movement computation more efficient than either BSD's 1040e3d5408SPeter Wemm or System V's. 1050e3d5408SPeter Wemm * Super hardware scrolling support. The screen-update code 1060e3d5408SPeter Wemm incorporates a novel, simple, and cheap algorithm that enables it 1070e3d5408SPeter Wemm to make optimal use of hardware scrolling, line-insertion, and 1080e3d5408SPeter Wemm line-deletion for screen-line movements. This algorithm is more 109*06bfebdeSXin LI powerful than the 4.4BSD curses quickch routine. 1100e3d5408SPeter Wemm * Real support for terminals with the magic-cookie glitch. The 1110e3d5408SPeter Wemm screen-update code will refrain from drawing a highlight if the 1120e3d5408SPeter Wemm magic- cookie unattributed spaces required just before the 1130e3d5408SPeter Wemm beginning and after the end would step on a non-space character. 1140e3d5408SPeter Wemm It will automatically shift highlight boundaries when doing so 1150e3d5408SPeter Wemm would make it possible to draw the highlight without changing the 1160e3d5408SPeter Wemm visual appearance of the screen. 1170e3d5408SPeter Wemm * It is possible to generate the library with a list of pre-loaded 1180e3d5408SPeter Wemm fallback entries linked to it so that it can serve those terminal 1190e3d5408SPeter Wemm types even when no terminfo tree or termcap file is accessible 1200e3d5408SPeter Wemm (this may be useful for support of screen-oriented programs that 1210e3d5408SPeter Wemm must run in single-user mode). 1220e3d5408SPeter Wemm * The tic(1)/captoinfo utility provided with ncurses has the ability 1230e3d5408SPeter Wemm to translate many termcaps from the XENIX, IBM and AT&T extension 1240e3d5408SPeter Wemm sets. 1250e3d5408SPeter Wemm * A BSD-like tset(1) utility is provided. 1260e3d5408SPeter Wemm * The ncurses library and utilities will automatically read terminfo 1270e3d5408SPeter Wemm entries from $HOME/.terminfo if it exists, and compile to that 1280e3d5408SPeter Wemm directory if it exists and the user has no write access to the 1290e3d5408SPeter Wemm system directory. This feature makes it easier for users to have 1300e3d5408SPeter Wemm personal terminfo entries without giving up access to the system 1310e3d5408SPeter Wemm terminfo directory. 1320e3d5408SPeter Wemm * You may specify a path of directories to search for compiled 1330e3d5408SPeter Wemm descriptions with the environment variable TERMINFO_DIRS (this 1340e3d5408SPeter Wemm generalizes the feature provided by TERMINFO under stock System 1350e3d5408SPeter Wemm V.) 1360e3d5408SPeter Wemm * In terminfo source files, use capabilities may refer not just to 1370e3d5408SPeter Wemm other entries in the same source file (as in System V) but also to 1380e3d5408SPeter Wemm compiled entries in either the system terminfo directory or the 1390e3d5408SPeter Wemm user's $HOME/.terminfo directory. 1400e3d5408SPeter Wemm * A script (capconvert) is provided to help BSD users transition 1410e3d5408SPeter Wemm from termcap to terminfo. It gathers the information in a TERMCAP 1420e3d5408SPeter Wemm environment variable and/or a ~/.termcap local entries file and 1430e3d5408SPeter Wemm converts it to an equivalent local terminfo tree under 1440e3d5408SPeter Wemm $HOME/.terminfo. 1450e3d5408SPeter Wemm * Automatic fallback to the /etc/termcap file can be compiled in 1460e3d5408SPeter Wemm when it is not possible to build a terminfo tree. This feature is 1470e3d5408SPeter Wemm neither fast nor cheap, you don't want to use it unless you have 1480e3d5408SPeter Wemm to, but it's there. 1490e3d5408SPeter Wemm * The table-of-entries utility toe makes it easy for users to see 1500e3d5408SPeter Wemm exactly what terminal types are available on the system. 1510e3d5408SPeter Wemm * The library meets the XSI requirement that every macro entry point 1520e3d5408SPeter Wemm have a corresponding function which may be linked (and will be 1530e3d5408SPeter Wemm prototype-checked) if the macro definition is disabled with 1540e3d5408SPeter Wemm #undef. 1550e3d5408SPeter Wemm * An HTML "Introduction to Programming with NCURSES" document 1560e3d5408SPeter Wemm provides a narrative introduction to the curses programming 1570e3d5408SPeter Wemm interface. 1580e3d5408SPeter Wemm 1590e3d5408SPeter Wemm State of the Package 1600e3d5408SPeter Wemm 1610e3d5408SPeter Wemm Numerous bugs present in earlier versions have been fixed; the library 1620e3d5408SPeter Wemm is far more reliable than it used to be. Bounds checking in many 1630e3d5408SPeter Wemm `dangerous' entry points has been improved. The code is now type-safe 1640e3d5408SPeter Wemm according to gcc -Wall. The library has been checked for malloc leaks 1650e3d5408SPeter Wemm and arena corruption by the Purify memory-allocation tester. 1660e3d5408SPeter Wemm 1670e3d5408SPeter Wemm The ncurses code has been tested with a wide variety of applications 1680e3d5408SPeter Wemm including (versions starting with those noted): 1690e3d5408SPeter Wemm 1701759abf3SPeter Wemm cdk 17115589c42SPeter Wemm Curses Development Kit 172*06bfebdeSXin LI [6]http://invisible-island.net/cdk/ 173*06bfebdeSXin LI [7]http://www.vexus.ca/products/CDK/ 1741759abf3SPeter Wemm 1750e3d5408SPeter Wemm ded 17615589c42SPeter Wemm directory-editor 177*06bfebdeSXin LI [8]http://invisible-island.net/ded/ 1780e3d5408SPeter Wemm 1790e3d5408SPeter Wemm dialog 1800e3d5408SPeter Wemm the underlying application used in Slackware's setup, and the 1810e3d5408SPeter Wemm basis for similar applications on GNU/Linux. 182*06bfebdeSXin LI [9]http://invisible-island.net/dialog/ 1830e3d5408SPeter Wemm 1841759abf3SPeter Wemm lynx 1850e3d5408SPeter Wemm the character-screen WWW browser 186*06bfebdeSXin LI [10]http://lynx.isc.org/release/ 1870e3d5408SPeter Wemm 1884a1a9510SRong-En Fan Midnight Commander 1890e3d5408SPeter Wemm file manager 190*06bfebdeSXin LI [11]http://www.midnight-commander.org/ 1910e3d5408SPeter Wemm 1921759abf3SPeter Wemm mutt 1930e3d5408SPeter Wemm mail utility 194*06bfebdeSXin LI [12]http://www.mutt.org/ 1950e3d5408SPeter Wemm 1961759abf3SPeter Wemm ncftp 1970e3d5408SPeter Wemm file-transfer utility 198*06bfebdeSXin LI [13]http://www.ncftp.com/ 1990e3d5408SPeter Wemm 2000e3d5408SPeter Wemm nvi 2010e3d5408SPeter Wemm New vi versions 1.50 are able to use ncurses versions 1.9.7 and 2020e3d5408SPeter Wemm later. 203*06bfebdeSXin LI [14]https://sites.google.com/a/bostic.com/keithbostic/nvi 2044a1a9510SRong-En Fan 2054a1a9510SRong-En Fan pinfo 2064a1a9510SRong-En Fan Lynx-like info browser. 207*06bfebdeSXin LI [15]https://alioth.debian.org/projects/pinfo/ 2080e3d5408SPeter Wemm 2091759abf3SPeter Wemm tin 210*06bfebdeSXin LI newsreader, supporting color, MIME [16]http://www.tin.org/ 2110e3d5408SPeter Wemm 2120e3d5408SPeter Wemm as well as some that use ncurses for the terminfo support alone: 2130e3d5408SPeter Wemm 2141759abf3SPeter Wemm minicom 2150e3d5408SPeter Wemm terminal emulator 216*06bfebdeSXin LI [17]http://alioth.debian.org/projects/minicom/ 2170e3d5408SPeter Wemm 2180e3d5408SPeter Wemm vile 21915589c42SPeter Wemm vi-like-emacs 220*06bfebdeSXin LI [18]http://invisible-island.net/vile/ 2210e3d5408SPeter Wemm 2220e3d5408SPeter Wemm The ncurses distribution includes a selection of test programs 2230e3d5408SPeter Wemm (including a few games). 2240e3d5408SPeter Wemm 2250e3d5408SPeter WemmWho's Who and What's What 2260e3d5408SPeter Wemm 2274a1a9510SRong-En Fan Zeyd Ben-Halim started it from a previous package pcurses, written by 228*06bfebdeSXin LI Pavel Curtis. Eric S. Raymond continued development. Juergen Pfeifer 2294a1a9510SRong-En Fan wrote most of the form and menu libraries. Ongoing work is being done 230*06bfebdeSXin LI by [19]Thomas Dickey. Thomas Dickey acts as the maintainer for the 2310e3d5408SPeter Wemm Free Software Foundation, which holds the copyright on ncurses. 232*06bfebdeSXin LI Contact the current maintainers at [20]bug-ncurses@gnu.org. 2330e3d5408SPeter Wemm 2340e3d5408SPeter Wemm To join the ncurses mailing list, please write email to 2350e3d5408SPeter Wemm bug-ncurses-request@gnu.org containing the line: 2360e3d5408SPeter Wemm subscribe <name>@<host.domain> 2370e3d5408SPeter Wemm 2380e3d5408SPeter Wemm This list is open to anyone interested in helping with the development 2390e3d5408SPeter Wemm and testing of this package. 2400e3d5408SPeter Wemm 2410e3d5408SPeter Wemm Beta versions of ncurses and patches to the current release are made 242*06bfebdeSXin LI available at [21]ftp://invisible-island.net/ncurses/ . 2430e3d5408SPeter Wemm 2440e3d5408SPeter WemmFuture Plans 2450e3d5408SPeter Wemm 2460e3d5408SPeter Wemm * Extended-level XPG4 conformance, with internationalization 2470e3d5408SPeter Wemm support. 2480e3d5408SPeter Wemm * Ports to more systems, including DOS and Windows. 2490e3d5408SPeter Wemm 2500e3d5408SPeter Wemm We need people to help with these projects. If you are interested in 2510e3d5408SPeter Wemm working on them, please join the ncurses list. 2520e3d5408SPeter Wemm 2530e3d5408SPeter WemmOther Related Resources 2540e3d5408SPeter Wemm 2554a1a9510SRong-En Fan The distribution provides a newer version of the terminfo-format 256*06bfebdeSXin LI terminal description file once maintained by [22]Eric Raymond . Unlike 2574a1a9510SRong-En Fan the older version, the termcap and terminfo data are provided in the 2584a1a9510SRong-En Fan same file, and provides several user-definable extensions beyond the 2594a1a9510SRong-En Fan X/Open specification. 2600e3d5408SPeter Wemm 2610e3d5408SPeter Wemm You can find lots of information on terminal-related topics not 262*06bfebdeSXin LI covered in the terminfo file at [23]Richard Shuford's archive . 2630e3d5408SPeter Wemm 2640e3d5408SPeter WemmReferences 2650e3d5408SPeter Wemm 2664a1a9510SRong-En Fan 1. ftp://ftp.gnu.org/gnu/ncurses/ 2674a1a9510SRong-En Fan 2. ftp://invisible-island.net/ncurses/ 268*06bfebdeSXin LI 3. http://invisible-island.net/ncurses/man/form_fieldtype.3x 269*06bfebdeSXin LI 4. http://invisible-island.net/ncurses/ncurses-Ada95.html 270*06bfebdeSXin LI 5. http://invisible-island.net/ncurses/ncurses-examples.html 271*06bfebdeSXin LI 6. http://invisible-island.net/cdk/ 272*06bfebdeSXin LI 7. http://www.vexus.ca/products/CDK/ 273*06bfebdeSXin LI 8. http://invisible-island.net/ded/ 274*06bfebdeSXin LI 9. http://invisible-island.net/dialog/ 275*06bfebdeSXin LI 10. http://lynx.isc.org/release/ 276*06bfebdeSXin LI 11. http://www.midnight-commander.org/ 277*06bfebdeSXin LI 12. http://www.mutt.org/ 278*06bfebdeSXin LI 13. http://www.ncftp.com/ 279*06bfebdeSXin LI 14. https://sites.google.com/a/bostic.com/keithbostic/nvi 280*06bfebdeSXin LI 15. https://alioth.debian.org/projects/pinfo/ 281*06bfebdeSXin LI 16. http://www.tin.org/ 282*06bfebdeSXin LI 17. http://alioth.debian.org/projects/minicom/ 283*06bfebdeSXin LI 18. http://invisible-island.net/vile/ 284*06bfebdeSXin LI 19. mailto:dickey@invisible-island.net 285*06bfebdeSXin LI 20. mailto:bug-ncurses@gnu.org 286*06bfebdeSXin LI 21. ftp://invisible-island.net/ncurses/ 287*06bfebdeSXin LI 22. http://www.catb.org/~esr/terminfo/ 288*06bfebdeSXin LI 23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal 289