1 2 Announcing ncurses 5.1 3 4 The ncurses (new curses) library is a free software emulation of 5 curses in System V Release 4.0, and more. It uses terminfo format, 6 supports pads and color and multiple highlights and forms characters 7 and function-key mapping, and has all the other SYSV-curses 8 enhancements over BSD curses. 9 10 In mid-June 1995, the maintainer of 4.4BSD curses declared that he 11 considered 4.4BSD curses obsolete, and is encouraging the keepers of 12 Unix releases such as BSD/OS, freeBSD and netBSD to switch over to 13 ncurses. 14 15 The ncurses code was developed under GNU/Linux. It should port easily 16 to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 17 Warp! 18 19 The distribution includes the library and support utilities, including 20 a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), 21 tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full 22 manual pages are provided for the library and tools. 23 24 The ncurses distribution is available via anonymous FTP at the GNU 25 distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. 26 It is also available at [2]ftp://dickey.his.com/ncurses. 27 28 Release Notes 29 30 This release is designed to be upward compatible from ncurses 5.0; 31 very few applications will require recompilation, depending on the 32 platform. These are the highlights from the change-log since ncurses 33 5.0 release. 34 35 Interface changes: 36 * made the extended terminal capabilities 37 (configure --enable-tcap-names) a standard feature (though the 38 configure script can disable it, it is built by default). 39 * removed the trace() function and related trace support from the 40 production library. This is the only interface change that may 41 cause problems with existing applications linked to shared 42 libraries, since not all platforms use the minor version number. 43 * explicitly initialized to zero several data items which were 44 implicitly initialized, e.g., cur_term. If not explicitly 45 initialized, their storage type is C (common), and causes problems 46 linking on some platforms. 47 * modified curses.h.in, undef'ing some symbols to avoid conflict 48 with C++ STL. 49 50 New features: 51 * added a new extension, assume_default_colors() to provide better 52 control over the use of default colors. This is the principal 53 visible difference between ncurses 5.1 and preceding versions. The 54 new extension allows an application to specify what colors pair 0 55 uses. 56 NOTE: Pair 0 defaults to white on black unless you have invoked 57 use_default_colors() or set it via assume_default_colors(). An 58 application that calls start_colors() without setting the 59 background color will consistently have a black background no 60 matter what color your terminal's background actually is. 61 * made several fixes to the terminfo-to-termcap conversion, and have 62 been using the generated termcaps without further hand-tuning. 63 This builds on the extension use_extended_names() by adding 64 "obsolete" termcap strings to terminfo.src 65 + modified tic so that if extended names (i.e., 66 configure --enable-tcap-names) are active, then tic -x will 67 also write "obsolete" capabilities that are present in the 68 terminfo source. 69 + added screen's AX capability (for ECMA SGR 39 and 49) to 70 applicable terminfo entries, use presence of this as a check 71 for a small improvement in setting default colors. 72 + add -a option to tic and infocmp, which retains commented-out 73 capabilities during source translation/comparison, e.g., 74 captoinfo and infotocap. 75 * implemented limited support for UTF-8, useful with XFree86 xterm: 76 + if the configure --enable-widec option is given, append 'w' 77 to names of the generated libraries (e.g., libncursesw.so) to 78 avoid conflict with existing ncurses libraries. 79 + add a simple UTF-8 output driver to the experimental 80 wide-character support. If any of the environment variables 81 LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this 82 driver will be used to translate the output to UTF-8. 83 + modified view.c to make a rudimentary viewer of UTF-8 text. 84 * modify raw() and noraw() to clear/restore IEXTEN flag which 85 affects stty lnext on systems such as FreeBSD 86 * reordered tests during mouse initialization to allow for gpm to 87 run in xterm, or for xterm to be used under OS/2 EMX. Also dropped 88 test for $DISPLAY in favor of the terminfo capability kmous=\E[M 89 or if $TERM environment variable contains "xterm". 90 * added configure option --with-manpage-symlinks, which provides for 91 fully indexing manpage entries by making symbolic links for the 92 aliases. 93 * changed unctrl() to render C1 characters (128-159) as ~@, ~A, etc. 94 * add experimental configure option --enable-colorfgbg to check for 95 $COLORTERM variable as set by rxvt/aterm/Eterm. 96 * made the infocmp -F option less verbose. 97 * dropped support for gnat 3.10 (gnat 3.12 is current). 98 99 Major bug fixes: 100 * modified infocmp -e, -E options to ensure that generated 101 fallback.c type for Booleans agrees with term.h 102 * documented a special case of incompatiblity between ncurses 4.2 103 and 5.0, added a section for this in INSTALL. 104 * corrected tests for file-descriptors in OS/2 EMX mouse support. A 105 negative value could be used by FD_SET, causing the select() call 106 to wait indefinitely. 107 * made 'tput flash' work properly for xterm by flushing output in 108 delay_output() when using napms(), and modifying xterm's terminfo 109 to specify no padding character. Otherwise, xterm's reported baud 110 rate could mislead ncurses into producing too few padding 111 characters. 112 * modified lib_addch.c to allow repeated update to the lower-right 113 corner, rather than displaying only the first character written 114 until the cursor is moved. Recent versions of SVr4 curses can 115 update the lower-right corner, and behave this way. 116 * modified echo() behavior of getch() to match Solaris curses for 117 carriage return and backspace (reported by Neil Zanella). 118 * corrected offsets used for subwindows in wresize() 119 * modified configure script so AC_MSG_ERROR is temporarily defined 120 to a warning in AC_PROG_CXX to make it recover from a missing C++ 121 compiler without requiring user to add --without-cxx option 122 * corrected logic in lib_twait.c as used by lib_mouse.c for GPM 123 mouse support when poll() is used rather than select(). 124 * made several fixes for buffer overflows, unchecked recursion, 125 improvements in performance, etc. See the NEWS file for details. 126 127 Features of Ncurses 128 129 The ncurses package is fully compatible with SVr4 (System V Release 4) 130 curses: 131 * All 257 of the SVr4 calls have been implemented (and are 132 documented). 133 * Full support for SVr4 curses features including keyboard mapping, 134 color, forms-drawing with ACS characters, and automatic 135 recognition of keypad and function keys. 136 * An emulation of the SVr4 panels library, supporting a stack of 137 windows with backing store, is included. 138 * An emulation of the SVr4 menus library, supporting a uniform but 139 flexible interface for menu programming, is included. 140 * An emulation of the SVr4 form library, supporting data collection 141 through on-screen forms, is included. 142 * Binary terminfo entries generated by the ncurses tic(1) 143 implementation are bit-for-bit-compatible with the entry format 144 SVr4 curses uses. 145 * The utilities have options to allow you to filter terminfo entries 146 for use with less capable curses/terminfo versions such as the 147 HP/UX and AIX ports. 148 149 The ncurses package also has many useful extensions over SVr4: 150 * The API is 8-bit clean and base-level conformant with the X/OPEN 151 curses specification, XSI curses (that is, it implements all BASE 152 level features, but not all EXTENDED features). Most 153 EXTENDED-level features not directly concerned with wide-character 154 support are implemented, including many function calls not 155 supported under SVr4 curses (but portability of all calls is 156 documented so you can use the SVr4 subset only). 157 * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 158 corner of the screen if your terminal has an insert-character 159 capability. 160 * Ada95 and C++ bindings. 161 * Support for mouse event reporting with X Window xterm and OS/2 162 console windows. 163 * Extended mouse support via Alessandro Rubini's gpm package. 164 * The function wresize() allows you to resize windows, preserving 165 their data. 166 * The function use_default_colors() allows you to use the terminal's 167 default colors for the default color pair, achieving the effect of 168 transparent colors. 169 * The functions keyok() and define_key() allow you to better control 170 the use of function keys, e.g., disabling the ncurses KEY_MOUSE, 171 or by defining more than one control sequence to map to a given 172 key code. 173 * Support for 16-color terminals, such as aixterm and XFree86 xterm. 174 * Better cursor-movement optimization. The package now features a 175 cursor-local-movement computation more efficient than either BSD's 176 or System V's. 177 * Super hardware scrolling support. The screen-update code 178 incorporates a novel, simple, and cheap algorithm that enables it 179 to make optimal use of hardware scrolling, line-insertion, and 180 line-deletion for screen-line movements. This algorithm is more 181 powerful than the 4.4BSD curses quickch() routine. 182 * Real support for terminals with the magic-cookie glitch. The 183 screen-update code will refrain from drawing a highlight if the 184 magic- cookie unattributed spaces required just before the 185 beginning and after the end would step on a non-space character. 186 It will automatically shift highlight boundaries when doing so 187 would make it possible to draw the highlight without changing the 188 visual appearance of the screen. 189 * It is possible to generate the library with a list of pre-loaded 190 fallback entries linked to it so that it can serve those terminal 191 types even when no terminfo tree or termcap file is accessible 192 (this may be useful for support of screen-oriented programs that 193 must run in single-user mode). 194 * The tic(1)/captoinfo utility provided with ncurses has the ability 195 to translate many termcaps from the XENIX, IBM and AT&T extension 196 sets. 197 * A BSD-like tset(1) utility is provided. 198 * The ncurses library and utilities will automatically read terminfo 199 entries from $HOME/.terminfo if it exists, and compile to that 200 directory if it exists and the user has no write access to the 201 system directory. This feature makes it easier for users to have 202 personal terminfo entries without giving up access to the system 203 terminfo directory. 204 * You may specify a path of directories to search for compiled 205 descriptions with the environment variable TERMINFO_DIRS (this 206 generalizes the feature provided by TERMINFO under stock System 207 V.) 208 * In terminfo source files, use capabilities may refer not just to 209 other entries in the same source file (as in System V) but also to 210 compiled entries in either the system terminfo directory or the 211 user's $HOME/.terminfo directory. 212 * A script (capconvert) is provided to help BSD users transition 213 from termcap to terminfo. It gathers the information in a TERMCAP 214 environment variable and/or a ~/.termcap local entries file and 215 converts it to an equivalent local terminfo tree under 216 $HOME/.terminfo. 217 * Automatic fallback to the /etc/termcap file can be compiled in 218 when it is not possible to build a terminfo tree. This feature is 219 neither fast nor cheap, you don't want to use it unless you have 220 to, but it's there. 221 * The table-of-entries utility toe makes it easy for users to see 222 exactly what terminal types are available on the system. 223 * The library meets the XSI requirement that every macro entry point 224 have a corresponding function which may be linked (and will be 225 prototype-checked) if the macro definition is disabled with 226 #undef. 227 * An HTML "Introduction to Programming with NCURSES" document 228 provides a narrative introduction to the curses programming 229 interface. 230 231 State of the Package 232 233 Numerous bugs present in earlier versions have been fixed; the library 234 is far more reliable than it used to be. Bounds checking in many 235 `dangerous' entry points has been improved. The code is now type-safe 236 according to gcc -Wall. The library has been checked for malloc leaks 237 and arena corruption by the Purify memory-allocation tester. 238 239 The ncurses code has been tested with a wide variety of applications 240 including (versions starting with those noted): 241 242 cdk 243 Curses Development Kit 244 [3]http://www.vexus.ca/CDK.html 245 [4]http://dickey.his.com/cdk. 246 247 ded 248 directory-editor 249 [5]http://dickey.his.com/ded. 250 251 dialog 252 the underlying application used in Slackware's setup, and the 253 basis for similar applications on GNU/Linux. 254 [6]http://dickey.his.com/dialog. 255 256 lynx 257 the character-screen WWW browser 258 [7]http://lynx.isc.org/release. 259 260 Midnight Commander 4.1 261 file manager 262 [8]www.gnome.org/mc/. 263 264 mutt 265 mail utility 266 [9]http://www.mutt.org. 267 268 ncftp 269 file-transfer utility 270 [10]http://www.ncftp.com. 271 272 nvi 273 New vi versions 1.50 are able to use ncurses versions 1.9.7 and 274 later. 275 [11]http://www.bostic.com/vi/. 276 277 tin 278 newsreader, supporting color, MIME 279 [12]http://www.tin.org. 280 281 taper 282 tape archive utility 283 [13]http://members.iinet.net.au/~yusuf/taper/. 284 285 vh-1.6 286 Volks-Hypertext browser for the Jargon File 287 [14]http://www.bg.debian.org/Packages/unstable/text/vh.html. 288 289 as well as some that use ncurses for the terminfo support alone: 290 291 minicom 292 terminal emulator 293 [15]http://www.pp.clinet.fi/~walker/minicom.html. 294 295 vile 296 vi-like-emacs 297 [16]http://dickey.his.com/vile. 298 299 The ncurses distribution includes a selection of test programs 300 (including a few games). 301 302Who's Who and What's What 303 304 The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric 305 S. Raymond. Ongoing work is being done by [19]Thomas Dickey and 306 [20]J�rgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the 307 Free Software Foundation, which holds the copyright on ncurses. 308 Contact the current maintainers at [22]bug-ncurses@gnu.org. 309 310 To join the ncurses mailing list, please write email to 311 bug-ncurses-request@gnu.org containing the line: 312 subscribe <name>@<host.domain> 313 314 This list is open to anyone interested in helping with the development 315 and testing of this package. 316 317 Beta versions of ncurses and patches to the current release are made 318 available at [23]ftp://dickey.his.com/ncurses. 319 320Future Plans 321 322 * Extended-level XPG4 conformance, with internationalization 323 support. 324 * Ports to more systems, including DOS and Windows. 325 326 We need people to help with these projects. If you are interested in 327 working on them, please join the ncurses list. 328 329Other Related Resources 330 331 The distribution includes and uses a version of the terminfo-format 332 terminal description file maintained by Eric Raymond. 333 [24]http://earthspace.net/~esr/terminfo. 334 335 You can find lots of information on terminal-related topics not 336 covered in the terminfo file at [25]Richard Shuford's archive. 337 338References 339 340 1. ftp://ftp.gnu.org/pub/gnu/ncurses 341 2. ftp://dickey.his.com/ncurses 342 3. http://www.vexus.ca/CDK.html 343 4. http://dickey.his.com/cdk/cdk.html 344 5. http://dickey.his.com/ded/ded.html 345 6. http://dickey.his.com/dialog/dialog.html 346 7. http://lynx.isc.org/release/ 347 8. file://localhost/usr/build/ncurses/ncurses-5.1-20000704/doc/html/www.gnome.org/mc/ 348 9. http://www.mutt.org/ 349 10. http://www.ncftp.com/ 350 11. http://www.bostic.com/vi/ 351 12. http://www.tin.org/ 352 13. http://members.iinet.net.au/~yusuf/taper/ 353 14. http://www.bg.debian.org/Packages/unstable/text/vh.html 354 15. http://www.pp.clinet.fi/~walker/minicom.html 355 16. http://dickey.his.com/vile/vile.html 356 17. mailto:zmbenhal@netcom.com 357 18. http://www.ccil.org/~esr/home.html 358 19. mailto:dickey@herndon4.his.com 359 20. mailto:juergen.pfeifer@gmx.net 360 21. mailto:dickey@herndon4.his.com 361 22. mailto:bug-ncurses@gnu.org 362 23. ftp://dickey.his.com/ncurses 363 24. http://earthspace.net/~esr/terminfo 364 25. http://www.cs.utk.edu/~shuford/terminal_index.html 365