Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1 | ------------------------------------------------------------------------------- |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 2 | -- Copyright 2020-2021,2023 Thomas E. Dickey -- |
| 3 | -- Copyright 1998-2012,2018 Free Software Foundation, Inc. -- |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 4 | -- -- |
| 5 | -- Permission is hereby granted, free of charge, to any person obtaining a -- |
| 6 | -- copy of this software and associated documentation files (the -- |
| 7 | -- "Software"), to deal in the Software without restriction, including -- |
| 8 | -- without limitation the rights to use, copy, modify, merge, publish, -- |
| 9 | -- distribute, distribute with modifications, sublicense, and/or sell copies -- |
| 10 | -- of the Software, and to permit persons to whom the Software is furnished -- |
| 11 | -- to do so, subject to the following conditions: -- |
| 12 | -- -- |
| 13 | -- The above copyright notice and this permission notice shall be included -- |
| 14 | -- in all copies or substantial portions of the Software. -- |
| 15 | -- -- |
| 16 | -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- |
| 17 | -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- |
| 18 | -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- |
| 19 | -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- |
| 20 | -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- |
| 21 | -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- |
| 22 | -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- |
| 23 | -- -- |
| 24 | -- Except as contained in this notice, the name(s) of the above copyright -- |
| 25 | -- holders shall not be used in advertising or otherwise to promote the -- |
| 26 | -- sale, use or other dealings in this Software without prior written -- |
| 27 | -- authorization. -- |
| 28 | ------------------------------------------------------------------------------- |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 29 | -- $Id: README,v 1.31 2023/10/28 14:49:04 tom Exp $ |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 30 | ------------------------------------------------------------------------------- |
| 31 | README file for the ncurses package |
| 32 | |
| 33 | See the file ANNOUNCE for a summary of ncurses features and ports. |
| 34 | See the file INSTALL for instructions on how to build and install ncurses. |
| 35 | See the file NEWS for a release history and bug-fix notes. |
| 36 | See the file TO-DO for things that still need doing, including known bugs. |
| 37 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 38 | Browse the file doc/html/ncurses-intro.html for narrative descriptions of how |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 39 | to use ncurses and the panel, menu, and form libraries. |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 40 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 41 | Browse the file doc/html/hackguide.html for a tour of the package internals. |
| 42 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 43 | Find plain text versions of both of these documents in doc/. |
| 44 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 45 | ROADMAP AND PACKAGE OVERVIEW: |
| 46 | |
| 47 | You should be reading this file in a directory called: ncurses-d.d, where d.d |
| 48 | is the current version number (see the dist.mk file in this directory for |
| 49 | that). There should be a number of subdirectories, including `c++', `form', |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 50 | `man', `menu', `misc', `ncurses', `panel', `progs', `test', and `Ada95'. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 51 | |
| 52 | A full build/install of this package typically installs several libraries, a |
| 53 | handful of utilities, and a database hierarchy. Here is an inventory of the |
| 54 | pieces: |
| 55 | |
| 56 | The libraries are: |
| 57 | |
| 58 | libncurses.a (normal) |
| 59 | libncurses.so (shared) |
| 60 | libncurses_g.a (debug and trace code enabled) |
| 61 | libncurses_p.a (profiling enabled) |
| 62 | |
| 63 | libpanel.a (normal) |
| 64 | libpanel.so (shared) |
| 65 | libpanel_g.a (debug and trace code enabled) |
| 66 | |
| 67 | libmenu.a (normal) |
| 68 | libmenu.so (shared) |
| 69 | libmenu_g.a (debug enabled) |
| 70 | |
| 71 | libform.a (normal) |
| 72 | libform.so (shared) |
| 73 | libform_g.a (debug enabled) |
| 74 | |
| 75 | If you configure using the --enable-widec option, a "w" is appended to the |
| 76 | library names (e.g., libncursesw.a), and the resulting libraries support |
| 77 | wide-characters, e.g., via a UTF-8 locale. The corresponding header files |
| 78 | are compatible with the non-wide-character configuration; wide-character |
| 79 | features are provided by ifdef's in the header files. The wide-character |
| 80 | library interfaces are not binary-compatible with the non-wide-character |
| 81 | version. |
| 82 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 83 | If you configure using the --enable-reentrant option, a "t" is appended to the |
| 84 | library names (e.g., libncursest.a) and the resulting libraries have a |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 85 | different binary interface, making the ncurses interface more opaque. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 86 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 87 | The ncurses libraries implement the curses API. The panel, menu and forms |
| 88 | libraries implement clones of the SVr4 panel, menu and forms APIs. The source |
| 89 | code for these lives in the `ncurses', `panel', `menu', and `form' directories |
| 90 | respectively. |
| 91 | |
| 92 | In the `c++' directory, you'll find code that defines an interface to the |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 93 | curses, forms, menus and panels library packaged as C++ classes, and a demo |
| 94 | program in C++ to test it. These class definition modules are not installed |
| 95 | by the 'make install.libs' rule as libncurses++. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 96 | |
| 97 | In the `Ada95' directory, you'll find code and documentation for an |
| 98 | Ada95 binding of the curses API, to be used with the GNAT compiler. |
| 99 | This binding is built by a normal top-level `make' if configure detects |
| 100 | an usable version of GNAT (3.11 or above). It is not installed automatically. |
| 101 | See the Ada95 directory for more build and installation instructions and |
| 102 | for documentation of the binding. |
| 103 | |
| 104 | To do its job, the ncurses code needs your terminal type to be set in the |
| 105 | environment variable TERM (normally set by your OS; under UNIX, getty(1) |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 106 | typically does this, but you can override it in your .profile); and, it needs |
| 107 | a database of terminal descriptions in which to look up your terminal type's |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 108 | capabilities. |
| 109 | |
| 110 | In older (V7/BSD) versions of curses, the database was a flat text file, |
| 111 | /etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of |
| 112 | fast-loading binary description blocks under /usr/lib/terminfo. These binary |
| 113 | blocks are compiled from an improved editable text representation called |
| 114 | `terminfo' format (documented in man/terminfo.5). The ncurses library can use |
| 115 | either /etc/termcap or the compiled binary terminfo blocks, but prefers the |
| 116 | second form. |
| 117 | |
| 118 | In the `misc' directory, there is a text file terminfo.src, in editable |
| 119 | terminfo format, which can be used to generate the terminfo binaries (that's |
| 120 | what make install.data does). If the package was built with the |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 121 | --enable-termcap option enabled, and the ncurses library cannot find a |
| 122 | terminfo description for your terminal, it will fall back to the termcap file |
| 123 | supplied with your system (which the ncurses package installation leaves |
| 124 | strictly alone). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 125 | |
| 126 | The utilities are as follows: |
| 127 | |
| 128 | tic -- terminfo source to binary compiler |
| 129 | infocmp -- terminfo binary to source decompiler/comparator |
| 130 | clear -- emits clear-screen for current terminal |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 131 | tabs -- set tabs on a terminal |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 132 | tput -- shell-script access to terminal capabilities. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 133 | toe -- table of entries utility |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 134 | tset -- terminal-initialization utility |
| 135 | |
| 136 | The first two (tic and infocmp) are used for manipulating terminfo |
| 137 | descriptions; the next two (clear and tput) are for use in shell scripts. The |
| 138 | last (tset) is provided for 4.4BSD compatibility. The source code for all of |
| 139 | these lives in the `progs' directory. |
| 140 | |
| 141 | Detailed documentation for all libraries and utilities can be found in the |
| 142 | `man' and `doc' directories. An HTML introduction to ncurses, panels, and |
| 143 | menus programming lives in the `doc/html' directory. Manpages in HTML format |
| 144 | are under `doc/html/man'. |
| 145 | |
| 146 | The `test' directory contains programs that can be used to verify or |
| 147 | demonstrate the functions of the ncurses libraries. See test/README for |
| 148 | descriptions of these programs. Notably, the `ncurses' utility is designed to |
| 149 | help you systematically exercise the library functions. |
| 150 | |
| 151 | AUTHORS: |
| 152 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 153 | Pavel Curtis: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 154 | wrote the original ncurses |
| 155 | |
| 156 | Zeyd M. Ben-Halim: |
| 157 | port of original to Linux and many enhancements. |
| 158 | |
| 159 | Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0): |
| 160 | configuration scripts, porting, mods to adhere to XSI Curses in the |
| 161 | areas of background color, terminal modes. Also memory leak testing, |
| 162 | the wresize, default colors and key definition extensions and numerous |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 163 | bug fixes -- more than half of those enumerated in NEWS beginning with |
| 164 | the internal release 1.8.9, see |
| 165 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 166 | https://invisible-island.net/personal/changelogs.html |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 167 | |
| 168 | Florian La Roche (official maintainer for FSF's ncurses 4.2) |
| 169 | Beginning with release 4.2, ncurses is distributed under an MIT-style |
| 170 | license. |
| 171 | |
| 172 | Eric S. Raymond: |
| 173 | the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1), |
| 174 | toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and |
| 175 | many other entry points, the cursor-movement optimization, the |
| 176 | scroll-pack optimizer for vertical motions, the mouse interface and |
| 177 | xterm mouse support, and the ncurses test program. |
| 178 | |
| 179 | Juergen Pfeifer |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 180 | The menu and form libraries, C++ bindings for ncurses, menus, forms |
| 181 | and panels, as well as the Ada95 binding. Ongoing support for panel. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 182 | |
| 183 | CONTRIBUTORS: |
| 184 | |
| 185 | Alexander V. Lukyanov |
| 186 | for numerous fixes and improvements to the optimization logic. |
| 187 | |
| 188 | David MacKenzie |
| 189 | for first-class bug-chasing and methodical testing. |
| 190 | |
| 191 | Ross Ridge |
| 192 | for the code that hacks termcap parameterized strings into terminfo. |
| 193 | |
| 194 | Warren Tucker and Gerhard Fuernkranz, |
| 195 | for writing and sending the panel library. |
| 196 | |
| 197 | Hellmuth Michaelis, |
| 198 | for many patches and testing the optimization code. |
| 199 | |
| 200 | Eric Newton, Ulrich Drepper, and Anatoly Ivasyuk: |
| 201 | the C++ code. |
| 202 | |
| 203 | Jonathan Ross, |
| 204 | for lessons in using sed. |
| 205 | |
| 206 | Keith Bostic (maintainer of 4.4BSD curses) |
| 207 | for help, criticism, comments, bug-finding, and being willing to |
| 208 | deep-six BSD curses for this one when it grew up. |
| 209 | |
| 210 | Richard Stallman, |
| 211 | for his commitment to making ncurses free software. |
| 212 | |
| 213 | Countless other people have contributed by reporting bugs, sending fixes, |
| 214 | suggesting improvements, and generally whining about ncurses :-) |
| 215 | |
| 216 | BUGS: |
| 217 | See the INSTALL file for bug and developer-list addresses. |
| 218 | The Hacker's Guide in the doc directory includes some guidelines |
| 219 | on how to report bugs in ways that will get them fixed most quickly. |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 220 | |
| 221 | -- vile:txtmode fc=78 |