1262629Sdelphij Announcing ncurses 5.9 250276Speter 3166124Srafan The ncurses (new curses) library is a free software emulation of 4166124Srafan curses in System V Release 4.0, and more. It uses terminfo format, 5166124Srafan supports pads and color and multiple highlights and forms characters 6166124Srafan and function-key mapping, and has all the other SYSV-curses 750276Speter enhancements over BSD curses. 862449Speter 9166124Srafan In mid-June 1995, the maintainer of 4.4BSD curses declared that he 10166124Srafan considered 4.4BSD curses obsolete, and encouraged the keepers of Unix 11166124Srafan releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. 1262449Speter 13166124Srafan The ncurses code was developed under GNU/Linux. It has been in use for 14166124Srafan some time with OpenBSD as the system curses library, and on FreeBSD 15166124Srafan and NetBSD as an external package. It should port easily to any 16166124Srafan ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp! 1762449Speter 1850276Speter The distribution includes the library and support utilities, including 19166124Srafan a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), 20166124Srafan tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full 2150276Speter manual pages are provided for the library and tools. 2262449Speter 23166124Srafan The ncurses distribution is available via anonymous FTP at the GNU 24166124Srafan distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ . 25166124Srafan It is also available at [2]ftp://invisible-island.net/ncurses/ . 2662449Speter 2750276Speter Release Notes 2862449Speter 29166124Srafan This release is designed to be upward compatible from ncurses 5.0 30262629Sdelphij through 5.8; very few applications will require recompilation, 31166124Srafan depending on the platform. These are the highlights from the 32262629Sdelphij change-log since ncurses 5.8 release. 3362449Speter 34262629Sdelphij This is a bug-fix release, correcting a small number of urgent 35262629Sdelphij problems in the ncurses library from the 5.8 release. 3662449Speter 37262629Sdelphij It also improves the Ada95 binding: 38262629Sdelphij * fixes a longstanding portability problem with its use of the 39262629Sdelphij [3]set_field_type function. Because that function uses 40262629Sdelphij variable-length argument lists, its interface with gnat does not 41262629Sdelphij work with certain platforms. 42262629Sdelphij * improves configurability and portability, particularly when built 43262629Sdelphij separately from the main ncurses tree. The 5.8 release introduced 44262629Sdelphij scripts which can be used to construct separate tarballs for the 45262629Sdelphij Ada95 and ncurses examples. 46262629Sdelphij Those were a proof of concept. For the 5.9 release, those scripts 47262629Sdelphij are augmented with rpm- and dpkg-scripts used in test builds 48262629Sdelphij against a variety of gnat- and system ncurses versions as old as 49262629Sdelphij gnat 3.15 and ncurses 5.4 (see snapshots and systems tested 50262629Sdelphij [4]here. 51262629Sdelphij * additional improvements were made for portability of the ncurses 52262629Sdelphij examples, adding rpm- and dpkg-scripts for test-builds. See 53262629Sdelphij [5]this page for snapshots and other information. 5462449Speter 5550276Speter Features of Ncurses 5662449Speter 5750276Speter The ncurses package is fully compatible with SVr4 (System V Release 4) 5850276Speter curses: 59166124Srafan * All 257 of the SVr4 calls have been implemented (and are 6050276Speter documented). 61166124Srafan * Full support for SVr4 curses features including keyboard mapping, 62166124Srafan color, forms-drawing with ACS characters, and automatic 6350276Speter recognition of keypad and function keys. 64166124Srafan * An emulation of the SVr4 panels library, supporting a stack of 6550276Speter windows with backing store, is included. 66166124Srafan * An emulation of the SVr4 menus library, supporting a uniform but 6750276Speter flexible interface for menu programming, is included. 68166124Srafan * An emulation of the SVr4 form library, supporting data collection 6950276Speter through on-screen forms, is included. 70166124Srafan * Binary terminfo entries generated by the ncurses tic(1) 71166124Srafan implementation are bit-for-bit-compatible with the entry format 7250276Speter SVr4 curses uses. 7350276Speter * The utilities have options to allow you to filter terminfo entries 74166124Srafan for use with less capable curses/terminfo versions such as the 7550276Speter HP/UX and AIX ports. 7662449Speter 7750276Speter The ncurses package also has many useful extensions over SVr4: 78166124Srafan * The API is 8-bit clean and base-level conformant with the X/OPEN 79166124Srafan curses specification, XSI curses (that is, it implements all BASE 80166124Srafan level features, and most EXTENDED features). It includes many 81166124Srafan function calls not supported under SVr4 curses (but portability of 82166124Srafan all calls is documented so you can use the SVr4 subset only). 83166124Srafan * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 84166124Srafan corner of the screen if your terminal has an insert-character 8550276Speter capability. 8650276Speter * Ada95 and C++ bindings. 87166124Srafan * Support for mouse event reporting with X Window xterm and FreeBSD 88166124Srafan and OS/2 console windows. 8950276Speter * Extended mouse support via Alessandro Rubini's gpm package. 90262629Sdelphij * The function wresize allows you to resize windows, preserving 9150276Speter their data. 92262629Sdelphij * The function use_default_colors allows you to use the terminal's 9350276Speter default colors for the default color pair, achieving the effect of 9450276Speter transparent colors. 95262629Sdelphij * The functions keyok and define_key allow you to better control the 96262629Sdelphij use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by 97262629Sdelphij defining more than one control sequence to map to a given key 98262629Sdelphij code. 99184989Srafan * Support for 256-color terminals, such as modern xterm, when 100184989Srafan configured using the --enable-ext-colors option. 101166124Srafan * Support for 16-color terminals, such as aixterm and modern xterm. 102166124Srafan * Better cursor-movement optimization. The package now features a 10350276Speter cursor-local-movement computation more efficient than either BSD's 10450276Speter or System V's. 105166124Srafan * Super hardware scrolling support. The screen-update code 106166124Srafan incorporates a novel, simple, and cheap algorithm that enables it 107166124Srafan to make optimal use of hardware scrolling, line-insertion, and 108166124Srafan line-deletion for screen-line movements. This algorithm is more 109262629Sdelphij powerful than the 4.4BSD curses quickch routine. 110166124Srafan * Real support for terminals with the magic-cookie glitch. The 111166124Srafan screen-update code will refrain from drawing a highlight if the 112166124Srafan magic- cookie unattributed spaces required just before the 113166124Srafan beginning and after the end would step on a non-space character. 114166124Srafan It will automatically shift highlight boundaries when doing so 115166124Srafan would make it possible to draw the highlight without changing the 11650276Speter visual appearance of the screen. 117166124Srafan * It is possible to generate the library with a list of pre-loaded 118166124Srafan fallback entries linked to it so that it can serve those terminal 119166124Srafan types even when no terminfo tree or termcap file is accessible 120166124Srafan (this may be useful for support of screen-oriented programs that 12150276Speter must run in single-user mode). 12250276Speter * The tic(1)/captoinfo utility provided with ncurses has the ability 123166124Srafan to translate many termcaps from the XENIX, IBM and AT&T extension 12450276Speter sets. 12550276Speter * A BSD-like tset(1) utility is provided. 12650276Speter * The ncurses library and utilities will automatically read terminfo 127166124Srafan entries from $HOME/.terminfo if it exists, and compile to that 128166124Srafan directory if it exists and the user has no write access to the 129166124Srafan system directory. This feature makes it easier for users to have 130166124Srafan personal terminfo entries without giving up access to the system 13150276Speter terminfo directory. 132166124Srafan * You may specify a path of directories to search for compiled 133166124Srafan descriptions with the environment variable TERMINFO_DIRS (this 134166124Srafan generalizes the feature provided by TERMINFO under stock System 13550276Speter V.) 136166124Srafan * In terminfo source files, use capabilities may refer not just to 13750276Speter other entries in the same source file (as in System V) but also to 138166124Srafan compiled entries in either the system terminfo directory or the 13950276Speter user's $HOME/.terminfo directory. 140166124Srafan * A script (capconvert) is provided to help BSD users transition 141166124Srafan from termcap to terminfo. It gathers the information in a TERMCAP 142166124Srafan environment variable and/or a ~/.termcap local entries file and 143166124Srafan converts it to an equivalent local terminfo tree under 14450276Speter $HOME/.terminfo. 145166124Srafan * Automatic fallback to the /etc/termcap file can be compiled in 146166124Srafan when it is not possible to build a terminfo tree. This feature is 147166124Srafan neither fast nor cheap, you don't want to use it unless you have 14850276Speter to, but it's there. 149166124Srafan * The table-of-entries utility toe makes it easy for users to see 15050276Speter exactly what terminal types are available on the system. 15150276Speter * The library meets the XSI requirement that every macro entry point 152166124Srafan have a corresponding function which may be linked (and will be 153166124Srafan prototype-checked) if the macro definition is disabled with 15450276Speter #undef. 155166124Srafan * An HTML "Introduction to Programming with NCURSES" document 156166124Srafan provides a narrative introduction to the curses programming 15750276Speter interface. 15862449Speter 15950276Speter State of the Package 16062449Speter 16150276Speter Numerous bugs present in earlier versions have been fixed; the library 162166124Srafan is far more reliable than it used to be. Bounds checking in many 163166124Srafan `dangerous' entry points has been improved. The code is now type-safe 164166124Srafan according to gcc -Wall. The library has been checked for malloc leaks 16550276Speter and arena corruption by the Purify memory-allocation tester. 16662449Speter 167166124Srafan The ncurses code has been tested with a wide variety of applications 16850276Speter including (versions starting with those noted): 16962449Speter 17056639Speter cdk 17162449Speter Curses Development Kit 172262629Sdelphij [6]http://invisible-island.net/cdk/ 173262629Sdelphij [7]http://www.vexus.ca/products/CDK/ 17462449Speter 17550276Speter ded 17662449Speter directory-editor 177262629Sdelphij [8]http://invisible-island.net/ded/ 17862449Speter 17950276Speter dialog 180166124Srafan the underlying application used in Slackware's setup, and the 18150276Speter basis for similar applications on GNU/Linux. 182262629Sdelphij [9]http://invisible-island.net/dialog/ 18362449Speter 18456639Speter lynx 18550276Speter the character-screen WWW browser 186262629Sdelphij [10]http://lynx.isc.org/release/ 18762449Speter 188166124Srafan Midnight Commander 18950276Speter file manager 190262629Sdelphij [11]http://www.midnight-commander.org/ 19162449Speter 19256639Speter mutt 19350276Speter mail utility 194262629Sdelphij [12]http://www.mutt.org/ 19562449Speter 19656639Speter ncftp 19750276Speter file-transfer utility 198262629Sdelphij [13]http://www.ncftp.com/ 19962449Speter 20050276Speter nvi 20150276Speter New vi versions 1.50 are able to use ncurses versions 1.9.7 and 20250276Speter later. 203262629Sdelphij [14]https://sites.google.com/a/bostic.com/keithbostic/nvi 20462449Speter 205166124Srafan pinfo 206166124Srafan Lynx-like info browser. 207262629Sdelphij [15]https://alioth.debian.org/projects/pinfo/ 208166124Srafan 20956639Speter tin 210262629Sdelphij newsreader, supporting color, MIME [16]http://www.tin.org/ 21162449Speter 21250276Speter as well as some that use ncurses for the terminfo support alone: 21362449Speter 21456639Speter minicom 21550276Speter terminal emulator 216262629Sdelphij [17]http://alioth.debian.org/projects/minicom/ 21762449Speter 21850276Speter vile 21962449Speter vi-like-emacs 220262629Sdelphij [18]http://invisible-island.net/vile/ 22162449Speter 222166124Srafan The ncurses distribution includes a selection of test programs 22350276Speter (including a few games). 22462449Speter 22550276SpeterWho's Who and What's What 22650276Speter 227166124Srafan Zeyd Ben-Halim started it from a previous package pcurses, written by 228262629Sdelphij Pavel Curtis. Eric S. Raymond continued development. Juergen Pfeifer 229166124Srafan wrote most of the form and menu libraries. Ongoing work is being done 230262629Sdelphij by [19]Thomas Dickey. Thomas Dickey acts as the maintainer for the 231166124Srafan Free Software Foundation, which holds the copyright on ncurses. 232262629Sdelphij Contact the current maintainers at [20]bug-ncurses@gnu.org. 23362449Speter 234166124Srafan To join the ncurses mailing list, please write email to 23550276Speter bug-ncurses-request@gnu.org containing the line: 23650276Speter subscribe <name>@<host.domain> 23750276Speter 23850276Speter This list is open to anyone interested in helping with the development 23950276Speter and testing of this package. 24062449Speter 241166124Srafan Beta versions of ncurses and patches to the current release are made 242262629Sdelphij available at [21]ftp://invisible-island.net/ncurses/ . 24362449Speter 24450276SpeterFuture Plans 24550276Speter 246166124Srafan * Extended-level XPG4 conformance, with internationalization 24750276Speter support. 24850276Speter * Ports to more systems, including DOS and Windows. 24962449Speter 250166124Srafan We need people to help with these projects. If you are interested in 25150276Speter working on them, please join the ncurses list. 25262449Speter 25350276SpeterOther Related Resources 25450276Speter 255166124Srafan The distribution provides a newer version of the terminfo-format 256262629Sdelphij terminal description file once maintained by [22]Eric Raymond . Unlike 257166124Srafan the older version, the termcap and terminfo data are provided in the 258166124Srafan same file, and provides several user-definable extensions beyond the 259166124Srafan X/Open specification. 26062449Speter 261166124Srafan You can find lots of information on terminal-related topics not 262262629Sdelphij covered in the terminfo file at [23]Richard Shuford's archive . 26350276Speter 26450276SpeterReferences 26550276Speter 266166124Srafan 1. ftp://ftp.gnu.org/gnu/ncurses/ 267166124Srafan 2. ftp://invisible-island.net/ncurses/ 268262629Sdelphij 3. http://invisible-island.net/ncurses/man/form_fieldtype.3x 269262629Sdelphij 4. http://invisible-island.net/ncurses/ncurses-Ada95.html 270262629Sdelphij 5. http://invisible-island.net/ncurses/ncurses-examples.html 271262629Sdelphij 6. http://invisible-island.net/cdk/ 272262629Sdelphij 7. http://www.vexus.ca/products/CDK/ 273262629Sdelphij 8. http://invisible-island.net/ded/ 274262629Sdelphij 9. http://invisible-island.net/dialog/ 275262629Sdelphij 10. http://lynx.isc.org/release/ 276262629Sdelphij 11. http://www.midnight-commander.org/ 277262629Sdelphij 12. http://www.mutt.org/ 278262629Sdelphij 13. http://www.ncftp.com/ 279262629Sdelphij 14. https://sites.google.com/a/bostic.com/keithbostic/nvi 280262629Sdelphij 15. https://alioth.debian.org/projects/pinfo/ 281262629Sdelphij 16. http://www.tin.org/ 282262629Sdelphij 17. http://alioth.debian.org/projects/minicom/ 283262629Sdelphij 18. http://invisible-island.net/vile/ 284262629Sdelphij 19. mailto:dickey@invisible-island.net 285262629Sdelphij 20. mailto:bug-ncurses@gnu.org 286262629Sdelphij 21. ftp://invisible-island.net/ncurses/ 287262629Sdelphij 22. http://www.catb.org/~esr/terminfo/ 288262629Sdelphij 23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal 289