micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1 | <!-- |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2 | * t |
| 3 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 4 | * Copyright 2018-2023,2024 Thomas E. Dickey * |
| 5 | * Copyright 1998-2015,2017 Free Software Foundation, Inc. * |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 6 | * * |
| 7 | * Permission is hereby granted, free of charge, to any person obtaining a * |
| 8 | * copy of this software and associated documentation files (the * |
| 9 | * "Software"), to deal in the Software without restriction, including * |
| 10 | * without limitation the rights to use, copy, modify, merge, publish, * |
| 11 | * distribute, distribute with modifications, sublicense, and/or sell * |
| 12 | * copies of the Software, and to permit persons to whom the Software is * |
| 13 | * furnished to do so, subject to the following conditions: * |
| 14 | * * |
| 15 | * The above copyright notice and this permission notice shall be included * |
| 16 | * in all copies or substantial portions of the Software. * |
| 17 | * * |
| 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| 21 | * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| 22 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| 23 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| 24 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| 25 | * * |
| 26 | * Except as contained in this notice, the name(s) of the above copyright * |
| 27 | * holders shall not be used in advertising or otherwise to promote the * |
| 28 | * sale, use or other dealings in this Software without prior written * |
| 29 | * authorization. * |
| 30 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 31 | * @Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp @ |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 32 | --> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 33 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 34 | <HTML> |
| 35 | <HEAD> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 36 | <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 37 | <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> |
| 38 | <TITLE>ncurses 3x 2024-04-27 ncurses 6.5 Library calls</TITLE> |
| 39 | <link rel="author" href="mailto:bug-ncurses@gnu.org"> |
| 40 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 41 | </HEAD> |
| 42 | <BODY> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 43 | <H1 class="no-header">ncurses 3x 2024-04-27 ncurses 6.5 Library calls</H1> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 44 | <PRE> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 45 | <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> Library calls <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 46 | |
| 47 | |
| 48 | |
| 49 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 50 | </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> |
| 51 | <STRONG>ncurses</STRONG> - character-cell terminal interface with optimized output |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 52 | |
| 53 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 54 | </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 55 | <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> |
| 56 | |
| 57 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 58 | </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> |
| 59 | The "new curses" library offers the programmer a terminal-independent |
| 60 | means of reading keyboard and mouse input and updating character-cell |
| 61 | terminals with output optimized to minimize screen updates. <EM>ncurses</EM> |
| 62 | replaces the <EM>curses</EM> libraries from System V Release 4 Unix ("SVr4") and |
| 63 | 4.4BSD Unix, the development of which ceased in the 1990s. This |
| 64 | document describes <EM>ncurses</EM> version 6.5 (patch 20240427). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 65 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 66 | <EM>ncurses</EM> permits control of the terminal screen's contents; abstraction |
| 67 | and subdivision thereof with <EM>windows</EM> and <EM>pads</EM>; the reading of terminal |
| 68 | input; control of terminal input and output options; environment query |
| 69 | routines; color manipulation; the definition and use of <EM>soft</EM> <EM>label</EM> |
| 70 | keys; <EM>terminfo</EM> capability access; a <EM>termcap</EM> compatibility interface; |
| 71 | and an abstraction of the system's API for manipulating the terminal |
| 72 | (such as <STRONG>termios(3)</STRONG>). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 73 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 74 | <EM>ncurses</EM> implements the standard interface described by X/Open Curses |
| 75 | Issue 7. In many behavioral details not standardized by X/Open, |
| 76 | <EM>ncurses</EM> emulates the <EM>curses</EM> library of SVr4 and provides numerous |
| 77 | useful extensions. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 78 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 79 | <EM>ncurses</EM> man pages employ several sections to clarify matters of usage |
| 80 | and interoperability with other <EM>curses</EM> implementations. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 81 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 82 | <STRONG>o</STRONG> "NOTES" describes issues and caveats of which any user of the |
| 83 | <EM>ncurses</EM> API should be aware, such as limitations on the size of an |
| 84 | underlying integral type or the availability of a preprocessor |
| 85 | macro exclusive of a function definition (which prevents its |
| 86 | address from being taken). This section also describes |
| 87 | implementation details that will be significant to the programmer |
| 88 | but which are not standardized. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 89 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 90 | <STRONG>o</STRONG> "EXTENSIONS" presents <EM>ncurses</EM> innovations beyond the X/Open Curses |
| 91 | standard and/or the SVr4 <EM>curses</EM> implementation. They are termed |
| 92 | <EM>extensions</EM> to indicate that they cannot be implemented solely by |
| 93 | using the library API, but require access to the library's internal |
| 94 | state. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 95 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 96 | <STRONG>o</STRONG> "PORTABILITY" discusses matters (beyond the exercise of extensions) |
| 97 | that should be considered when writing to a <EM>curses</EM> standard, or for |
| 98 | multiple implementations. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 99 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 100 | <STRONG>o</STRONG> "HISTORY" examines points of detail in <EM>ncurses</EM> and other <EM>curses</EM> |
| 101 | implementations over the decades of their development, particularly |
| 102 | where precedent or inertia have frustrated better design (and, in a |
| 103 | few cases, where such inertia has been overcome). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 104 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 105 | A <EM>curses</EM> application must be linked with the library; use the <STRONG>-lncurses</STRONG> |
| 106 | option to your compiler or linker. A debugging version of the library |
| 107 | may be available; if so, link with it using <STRONG>-lncurses_g</STRONG>. (Your system |
| 108 | integrator may have installed these libraries such that you can use the |
| 109 | options <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>, respectively.) The <EM>ncurses</EM><STRONG>_</STRONG><EM>g</EM> library |
| 110 | generates trace logs (in a file called <EM>trace</EM> in the current directory) |
| 111 | that describe <EM>ncurses</EM> actions. See section "ALTERNATE CONFIGURATIONS" |
| 112 | below. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 113 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 114 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 115 | </PRE><H3><a name="h3-Application-Structure">Application Structure</a></H3><PRE> |
| 116 | A <EM>curses</EM> application uses information from the system locale; |
| 117 | <STRONG>setlocale(3)</STRONG> prepares it for <EM>curses</EM> library calls. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 118 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 119 | setlocale(LC_ALL, ""); |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 120 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 121 | If the locale is not thus initialized, the library assumes that |
| 122 | characters are printable as in ISO 8859-1, to work with certain legacy |
| 123 | programs. You should initialize the locale; do not expect consistent |
| 124 | behavior from the library when the locale has not been set up. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 125 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 126 | <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> must be called to initialize <EM>curses</EM> before |
| 127 | use of any functions that deal with windows and screens. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 128 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 129 | To get character-at-a-time input without echoing--most interactive, |
| 130 | screen-oriented programs want this--use the following sequence. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 131 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 132 | initscr(); cbreak(); noecho(); |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 133 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 134 | Most applications perform further setup as follows. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 135 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 136 | intrflush(stdscr, FALSE); |
| 137 | keypad(stdscr, TRUE); |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 138 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 139 | A <EM>curses</EM> program then often enters an event loop of some sort. Call |
| 140 | <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> before exiting. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 141 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 142 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 143 | </PRE><H3><a name="h3-Overview">Overview</a></H3><PRE> |
| 144 | A <EM>curses</EM> library abstracts the terminal screen by representing all or |
| 145 | part of it as a <EM>WINDOW</EM> data structure. A <EM>window</EM> is a rectangular grid |
| 146 | of character cells, addressed by row and column coordinates (<EM>y</EM>, <EM>x</EM>), |
| 147 | with the upper left corner as (0, 0). A window called <STRONG>stdscr</STRONG>, the same |
| 148 | size as the terminal screen, is always available. Create others with |
| 149 | <STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 150 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 151 | A <EM>curses</EM> library does not manage overlapping windows (but see below). |
| 152 | You can either use <STRONG>stdscr</STRONG> to manage one screen-filling window, or tile |
| 153 | the screen into non-overlapping windows and not use <STRONG>stdscr</STRONG> at all. |
| 154 | Mixing the two approaches will result in unpredictable and undesired |
| 155 | effects. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 156 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 157 | Functions permit manipulation of a window and the <EM>cursor</EM> identifying |
| 158 | the cell within it at which the next output operation will occur. |
| 159 | Among those, the most basic are <STRONG><A HREF="curs_move.3x.html">move(3x)</A></STRONG> and <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>: these place the |
| 160 | cursor and write a character to <STRONG>stdscr</STRONG>, respectively. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 161 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 162 | Frequent changes to the terminal screen can cause unpleasant flicker or |
| 163 | inefficient use of the communication channel to the device, so the |
| 164 | library does not generally update it automatically. Therefore, after |
| 165 | using <EM>curses</EM> functions to accumulate a set of desired updates that make |
| 166 | sense to present together, call <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> to tell the library to make |
| 167 | the user's screen look like <STRONG>stdscr</STRONG>. The library <EM>optimizes</EM> its output |
| 168 | by computing a minimal number of operations to mutate the screen from |
| 169 | its state at the previous refresh to the new one. Effective |
| 170 | optimization demands accurate information about the terminal device: |
| 171 | the management of such information is the province of the <STRONG><A HREF="curs_terminfo.3x.html">terminfo(3x)</A></STRONG> |
| 172 | API, a feature of every standard <EM>curses</EM> implementation. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 173 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 174 | Special windows called <EM>pads</EM> may also be manipulated. These are windows |
| 175 | that are not constrained to the size of the terminal screen and whose |
| 176 | contents need not be completely displayed. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 177 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 178 | In addition to drawing characters on the screen, rendering attributes |
| 179 | and colors may be supported, causing the characters to show up in such |
| 180 | modes as underlined, in reverse video, or in color on terminals that |
| 181 | support such display enhancements. See <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 182 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 183 | <EM>curses</EM> predefines constants for a small set of forms-drawing graphics |
| 184 | corresponding to the DEC Alternate Character Set (ACS), a feature of |
| 185 | VT100 and other terminals. See <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 186 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 187 | <EM>curses</EM> is implemented using the operating system's terminal driver; |
| 188 | keystroke events are received not as scan codes but as byte sequences. |
| 189 | Graphical keycaps (alphanumeric and punctuation keys, and the space) |
| 190 | appear as-is. Everything else, including the tab, enter/return, |
| 191 | keypad, arrow, and function keys, appears as a control character or a |
| 192 | multibyte <EM>escape</EM> <EM>sequence.</EM> <EM>curses</EM> translates these into unique <EM>key</EM> |
| 193 | <EM>codes.</EM> See <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 194 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 195 | <EM>ncurses</EM> provides reimplementations of the SVr4 <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, and |
| 196 | <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> libraries to ease construction of user interfaces with <EM>curses</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 197 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 198 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 199 | </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE> |
| 200 | The selection of an appropriate value of <EM>TERM</EM> in the process |
| 201 | environment is essential to correct <EM>curses</EM> and <EM>terminfo</EM> library |
| 202 | operation. A well-configured system selects a correct <EM>TERM</EM> value |
| 203 | automatically; <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> may assist with troubleshooting exotic |
| 204 | situations. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 205 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 206 | If you change the terminal type, export the <EM>TERM</EM> environment variable |
| 207 | in the shell, then run <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> or the "<STRONG>tput</STRONG> <STRONG>init</STRONG>" command. See |
| 208 | subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 209 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 210 | If the environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> are set, or if the |
| 211 | <EM>curses</EM> program is executing in a graphical windowing environment, the |
| 212 | information obtained thence overrides that obtained by <EM>terminfo</EM>. An |
| 213 | <EM>ncurses</EM> extension supports resizable terminals; see <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 214 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 215 | If the environment variable <EM>TERMINFO</EM> is defined, a <EM>curses</EM> program |
| 216 | checks first for a terminal type description in the location it |
| 217 | identifies. <EM>TERMINFO</EM> is useful for developing experimental type |
| 218 | descriptions or when write permission to <EM>/usr/share/terminfo</EM> is not |
| 219 | available. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 220 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 221 | See section "ENVIRONMENT" below. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 222 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 223 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 224 | </PRE><H3><a name="h3-Naming-Conventions">Naming Conventions</a></H3><PRE> |
| 225 | <EM>curses</EM> offers many functions in variant forms using a regular set of |
| 226 | alternatives to the name of an elemental one. Those prefixed with "w" |
| 227 | require a <EM>WINDOW</EM> pointer argument; those with a "mv" prefix first |
| 228 | perform cursor movement using <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>; a "mvw" prefix indicates both. |
| 229 | The "w" function is typically the elemental one; the removal of this |
| 230 | prefix usually indicates operation on <STRONG>stdscr</STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 231 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 232 | Four functions prefixed with "p" require a pad argument. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 233 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 234 | In function synopses, <EM>ncurses</EM> man pages apply the following names to |
| 235 | parameters. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 236 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 237 | <EM>bf</EM> <EM>bool</EM> (<STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>) |
| 238 | <EM>c</EM> a <EM>char</EM> or <EM>int</EM> |
| 239 | <EM>ch</EM> a <EM>chtype</EM> |
| 240 | <EM>wc</EM> a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or <EM>wint</EM><STRONG>_</STRONG><EM>t</EM> |
| 241 | <EM>wch</EM> a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> |
| 242 | <EM>win</EM> pointer to a <EM>WINDOW</EM> |
| 243 | <EM>pad</EM> pointer to a <EM>WINDOW</EM> that is a pad |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 244 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 245 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 246 | </PRE><H3><a name="h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></H3><PRE> |
| 247 | This manual page describes functions that appear in any configuration |
| 248 | of the library. There are two common configurations; see section |
| 249 | "ALTERNATE CONFIGURATIONS" below. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 250 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 251 | <EM>ncurses</EM> is the library in its "non-wide" configuration, handling only |
| 252 | eight-bit characters. It stores a character combined with |
| 253 | attributes in a <EM>chtype</EM> datum, which is often an alias of <EM>int</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 254 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 255 | Attributes alone (with no corresponding character) can be |
| 256 | stored in variables of <EM>chtype</EM> or <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> type. In either |
| 257 | case, they are represented as an integral bit mask. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 258 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 259 | Each cell of a <EM>WINDOW</EM> is stored as a <EM>chtype</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 260 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 261 | <EM>ncursesw</EM> is the library in its "wide" configuration, which handles |
| 262 | character encodings requiring a larger data type than <EM>char</EM> (a |
| 263 | byte-sized type) can represent. It adds about one third more |
| 264 | calls using additional data types that can store such |
| 265 | <EM>multibyte</EM> characters. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 266 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 267 | <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> corresponds to the non-wide configuration's <EM>chtype</EM>. |
| 268 | It always a structure type, because it stores more |
| 269 | data than fit into a standard scalar type. A |
| 270 | character code may not be representable as a <EM>char</EM>, |
| 271 | and moreover more than one character may occupy a |
| 272 | cell (as with accent marks and other diacritics). |
| 273 | Each character is of type <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>; a complex |
| 274 | character contains one spacing character and zero or |
| 275 | more non-spacing characters (see below). Attributes |
| 276 | and color data are stored in separate fields of the |
| 277 | structure, not combined as in <EM>chtype</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 278 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 279 | Each cell of a <EM>WINDOW</EM> is stored as a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 280 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 281 | <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG> and <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG> store and retrieve <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> |
| 282 | data. The wide library API of <EM>ncurses</EM> depends on two data |
| 283 | types standardized by ISO C95. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 284 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 285 | <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> stores a wide character. Like <EM>chtype</EM>, it may be an |
| 286 | alias of <EM>int</EM>. Depending on the character encoding, |
| 287 | a wide character may be <EM>spacing</EM>, meaning that it |
| 288 | occupies a character cell by itself and typically |
| 289 | accompanies cursor advancement, or <EM>non-spacing</EM>, |
| 290 | meaning that it occupies the same cell as a spacing |
| 291 | character, is often regarded as a "modifier" of the |
| 292 | base glyph with which it combines, and typically |
| 293 | does not advance the cursor. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 294 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 295 | <EM>wint</EM><STRONG>_</STRONG><EM>t</EM> can store a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or the constant <STRONG>WEOF</STRONG>, |
| 296 | analogously to the <EM>int</EM>-sized character manipulation |
| 297 | functions of ISO C and its constant <STRONG>EOF</STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 298 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 299 | The wide library provides additional functions that |
| 300 | complement those in the non-wide library where the size of |
| 301 | the underlying character type is significant. A somewhat |
| 302 | regular naming convention relates many of the wide variants |
| 303 | to their non-wide counterparts; where a non-wide function |
| 304 | name contains "ch" or "str", prefix it with "_w" to obtain |
| 305 | the wide counterpart. For example, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>. |
| 306 | (Exceptions that add only "w" comprise <STRONG>addwstr</STRONG>, <STRONG>inwstr</STRONG>, and |
| 307 | their variants.) |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 308 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 309 | This convention is inapplicable to some non-wide function |
| 310 | names, so other transformations are used for the wide |
| 311 | configuration: the window background management function |
| 312 | "bkgd" becomes "bkgrnd"; the window border-drawing and |
| 313 | -clearing functions are suffixed with "_set"; and character |
| 314 | attribute manipulation functions like "attron" become |
| 315 | "attr_on". |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 316 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 317 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 318 | </PRE><H3><a name="h3-Function-Name-Index">Function Name Index</a></H3><PRE> |
| 319 | The following table lists the <EM>curses</EM> functions provided in the non-wide |
| 320 | and wide APIs and the corresponding man pages that describe them. |
| 321 | Those flagged with "*" are <EM>ncurses</EM>-specific, neither described by |
| 322 | X/Open Curses nor present in SVr4. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 323 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 324 | <STRONG><EM>curses</EM></STRONG> Function Name Man Page |
| 325 | --------------------------------------------- |
| 326 | COLOR_PAIR <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 327 | PAIR_NUMBER <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 328 | add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 329 | add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 330 | add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 331 | addch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 332 | addchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 333 | addchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 334 | addnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 335 | addnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 336 | addstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 337 | addwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 338 | alloc_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* |
| 339 | assume_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>* |
| 340 | attr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 341 | attr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 342 | attr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 343 | attr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 344 | attroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 345 | attron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 346 | attrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 347 | baudrate <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 348 | beep <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> |
| 349 | bkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> |
| 350 | bkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> |
| 351 | bkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 352 | bkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 353 | border <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 354 | border_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 355 | box <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 356 | box_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 357 | can_change_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 358 | cbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 359 | chgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 360 | clear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 361 | clearok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 362 | clrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 363 | clrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 364 | color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 365 | color_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 366 | copywin <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> |
| 367 | curs_set <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 368 | curses_trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>* |
| 369 | curses_version <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>* |
| 370 | def_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 371 | def_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 372 | define_key <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>* |
| 373 | del_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 374 | delay_output <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 375 | delch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> |
| 376 | deleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 377 | delscreen <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 378 | delwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 379 | derwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 380 | doupdate <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 381 | dupwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 382 | echo <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 383 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 384 | echo_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 385 | echochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 386 | endwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 387 | erase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 388 | erasechar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 389 | erasewchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 390 | exit_curses <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>* |
| 391 | exit_terminfo <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>* |
| 392 | extended_color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* |
| 393 | extended_pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* |
| 394 | extended_slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>* |
| 395 | filter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 396 | find_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* |
| 397 | flash <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> |
| 398 | flushinp <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 399 | free_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* |
| 400 | get_escdelay <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>* |
| 401 | get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> |
| 402 | get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 403 | getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 404 | getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 405 | getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 406 | getbegyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> |
| 407 | getbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> |
| 408 | getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 409 | getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> |
| 410 | getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> |
| 411 | getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 412 | getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 413 | getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 414 | getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 415 | getmaxyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> |
| 416 | getmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 417 | getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 418 | getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 419 | getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 420 | getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* |
| 421 | getparyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> |
| 422 | getstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 423 | getsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 424 | getwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 425 | getyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> |
| 426 | halfdelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 427 | has_colors <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 428 | has_ic <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 429 | has_il <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 430 | has_key <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>* |
| 431 | has_mouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 432 | hline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 433 | hline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 434 | idcok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 435 | idlok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 436 | immedok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 437 | in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> |
| 438 | in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 439 | in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 440 | inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> |
| 441 | inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 442 | inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 443 | init_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 444 | init_extended_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* |
| 445 | init_extended_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* |
| 446 | init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 447 | initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 448 | innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 449 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 450 | innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 451 | ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 452 | ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> |
| 453 | ins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 454 | insch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> |
| 455 | insdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 456 | insertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 457 | insnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 458 | insstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 459 | instr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 460 | intrflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 461 | inwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 462 | is_cbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>* |
| 463 | is_cleared <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 464 | is_echo <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>* |
| 465 | is_idcok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 466 | is_idlok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 467 | is_immedok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 468 | is_keypad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 469 | is_leaveok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 470 | is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 471 | is_nl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>* |
| 472 | is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 473 | is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 474 | is_pad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 475 | is_raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>* |
| 476 | is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 477 | is_subwin <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 478 | is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 479 | is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* |
| 480 | is_wintouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 481 | isendwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 482 | key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>* |
| 483 | key_name <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 484 | keybound <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>* |
| 485 | keyname <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 486 | keyok <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>* |
| 487 | keypad <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 488 | killchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 489 | killwchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 490 | leaveok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 491 | longname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 492 | mcprint <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>* |
| 493 | meta <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 494 | mouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 495 | mouseinterval <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 496 | mousemask <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 497 | move <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> |
| 498 | mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 499 | mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 500 | mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 501 | mvaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 502 | mvaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 503 | mvaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 504 | mvaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 505 | mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 506 | mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 507 | mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 508 | mvchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 509 | mvcur <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 510 | mvdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> |
| 511 | mvderwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 512 | mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> |
| 513 | mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 514 | mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 515 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 516 | mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 517 | mvgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 518 | mvgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 519 | mvhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 520 | mvhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 521 | mvin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> |
| 522 | mvin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 523 | mvin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 524 | mvinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> |
| 525 | mvinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 526 | mvinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 527 | mvinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 528 | mvinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 529 | mvins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 530 | mvins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> |
| 531 | mvins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 532 | mvinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> |
| 533 | mvinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 534 | mvinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 535 | mvinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 536 | mvinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 537 | mvprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 538 | mvscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 539 | mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 540 | mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 541 | mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 542 | mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 543 | mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 544 | mvwaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 545 | mvwaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 546 | mvwaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 547 | mvwaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 548 | mvwaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 549 | mvwaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 550 | mvwaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 551 | mvwchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 552 | mvwdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> |
| 553 | mvwget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> |
| 554 | mvwget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 555 | mvwgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> |
| 556 | mvwgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 557 | mvwgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 558 | mvwgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 559 | mvwhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 560 | mvwhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 561 | mvwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 562 | mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> |
| 563 | mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 564 | mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 565 | mvwinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> |
| 566 | mvwinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 567 | mvwinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 568 | mvwinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 569 | mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 570 | mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 571 | mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> |
| 572 | mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 573 | mvwinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> |
| 574 | mvwinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 575 | mvwinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 576 | mvwinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 577 | mvwinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 578 | mvwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 579 | mvwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 580 | mvwvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 581 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 582 | mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 583 | napms <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 584 | newpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 585 | newterm <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 586 | newwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 587 | nl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 588 | nocbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 589 | nodelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 590 | noecho <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 591 | nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>* |
| 592 | nonl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 593 | noqiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 594 | noraw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 595 | notimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 596 | overlay <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> |
| 597 | overwrite <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> |
| 598 | pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 599 | pecho_wchar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 600 | pechochar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 601 | pnoutrefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 602 | prefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 603 | printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 604 | putp <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 605 | putwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 606 | qiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 607 | raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 608 | redrawwin <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 609 | refresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 610 | reset_color_pairs <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* |
| 611 | reset_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 612 | reset_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 613 | resetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 614 | resize_term <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* |
| 615 | resizeterm <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* |
| 616 | restartterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 617 | ripoffline <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 618 | savetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 619 | scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 620 | scr_dump <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> |
| 621 | scr_init <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> |
| 622 | scr_restore <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> |
| 623 | scr_set <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> |
| 624 | scrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> |
| 625 | scroll <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> |
| 626 | scrollok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 627 | set_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 628 | set_escdelay <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>* |
| 629 | set_tabsize <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>* |
| 630 | set_term <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> |
| 631 | setcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> |
| 632 | setscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
| 633 | setsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> |
| 634 | setupterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 635 | slk_attr <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>* |
| 636 | slk_attr_off <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 637 | slk_attr_on <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 638 | slk_attr_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 639 | slk_attroff <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 640 | slk_attron <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 641 | slk_attrset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 642 | slk_clear <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 643 | slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 644 | slk_init <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 645 | slk_label <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 646 | slk_noutrefresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 647 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 648 | slk_refresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 649 | slk_restore <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 650 | slk_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 651 | slk_touch <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 652 | slk_wset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> |
| 653 | standend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 654 | standout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 655 | start_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> |
| 656 | subpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> |
| 657 | subwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 658 | syncok <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 659 | term_attrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 660 | termattrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 661 | termname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> |
| 662 | tgetent <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 663 | tgetflag <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 664 | tgetnum <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 665 | tgetstr <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 666 | tgoto <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 667 | tigetflag <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 668 | tigetnum <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 669 | tigetstr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 670 | timeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 671 | tiparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 672 | tiparm_s <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>* |
| 673 | tiscan_s <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>* |
| 674 | touchline <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 675 | touchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 676 | tparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 677 | tputs <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> |
| 678 | tputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 679 | trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>* |
| 680 | typeahead <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 681 | unctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 682 | unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> |
| 683 | ungetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> |
| 684 | ungetmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 685 | untouchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 686 | use_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>* |
| 687 | use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 688 | use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>* |
| 689 | use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>* |
| 690 | use_screen <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>* |
| 691 | use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>* |
| 692 | use_window <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>* |
| 693 | vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 694 | vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 695 | vidattr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 696 | vidputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> |
| 697 | vline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 698 | vline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 699 | vw_printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 700 | vw_scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 701 | vwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 702 | vwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 703 | wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 704 | wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 705 | wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> |
| 706 | waddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 707 | waddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 708 | waddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> |
| 709 | waddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 710 | waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
| 711 | waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> |
| 712 | waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 713 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 714 | wattr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 715 | wattr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 716 | wattr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 717 | wattr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 718 | wattroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 719 | wattron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 720 | wattrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 721 | wbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> |
| 722 | wbkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> |
| 723 | wbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 724 | wbkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 725 | wborder <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 726 | wborder_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 727 | wchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 728 | wclear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 729 | wclrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 730 | wclrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 731 | wcolor_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 732 | wcursyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 733 | wdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> |
| 734 | wdeleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 735 | wecho_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> |
| 736 | wechochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> |
| 737 | wenclose <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 738 | werase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> |
| 739 | wget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> |
| 740 | wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 741 | wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> |
| 742 | wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> |
| 743 | wgetdelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 744 | wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> |
| 745 | wgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 746 | wgetparent <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 747 | wgetscrreg <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* |
| 748 | wgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> |
| 749 | whline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 750 | whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
| 751 | win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> |
| 752 | win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 753 | win_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> |
| 754 | winch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> |
| 755 | winchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 756 | winchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> |
| 757 | winnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 758 | winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 759 | wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 760 | wins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> |
| 761 | wins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> |
| 762 | winsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> |
| 763 | winsdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 764 | winsertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> |
| 765 | winsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 766 | winsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> |
| 767 | winstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> |
| 768 | winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> |
| 769 | wmouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* |
| 770 | wmove <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> |
| 771 | wnoutrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 772 | wprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> |
| 773 | wredrawln <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 774 | wrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> |
| 775 | wresize <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>* |
| 776 | wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> |
| 777 | wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> |
| 778 | wsetscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 779 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 780 | wstandend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 781 | wstandout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> |
| 782 | wsyncdown <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 783 | wsyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> |
| 784 | wtimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| 785 | wtouchln <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> |
| 786 | wunctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> |
| 787 | wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> |
| 788 | wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 789 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 790 | <EM>ncurses</EM>'s <EM>screen-pointer</EM> <EM>extension</EM> adds additional functions |
| 791 | corresponding to many of the above, each with an "_sp" suffix; see |
| 792 | <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 793 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 794 | The availability of some extensions is configurable when <EM>ncurses</EM> is |
| 795 | compiled; see sections "ALTERNATE CONFIGURATIONS" and "EXTENSIONS" |
| 796 | below. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 797 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 798 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 799 | </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> |
| 800 | Unless otherwise noted, functions that return an integer return <STRONG>OK</STRONG> on |
| 801 | success and <STRONG>ERR</STRONG> on failure. Functions that return pointers return <STRONG>NULL</STRONG> |
| 802 | on failure. Typically, <EM>ncurses</EM> treats a null pointer passed as a |
| 803 | function parameter as a failure. Functions prefixed with "mv" first |
| 804 | perform cursor movement and fail if the position (<EM>y</EM>, <EM>x</EM>) is outside the |
| 805 | window boundaries. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 806 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 807 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 808 | </PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE> |
| 809 | The following symbols from the process environment customize the |
| 810 | runtime behavior of <EM>ncurses</EM> applications. The library may be |
| 811 | configured to disregard the variables <EM>TERMINFO</EM>, <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>, |
| 812 | <EM>TERMPATH</EM>, and <EM>HOME</EM>, if the user is the superuser (root), or the |
| 813 | application uses <STRONG>setuid(2)</STRONG> or <STRONG>setgid(2)</STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 814 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 815 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 816 | </PRE><H3><a name="h3-BAUDRATE"><EM>BAUDRATE</EM></a></H3><PRE> |
| 817 | The debugging library checks this variable when the application has |
| 818 | redirected output to a file. Its integral value is used for the baud |
| 819 | rate. If that value is absent or invalid, <EM>ncurses</EM> uses 9600. This |
| 820 | feature allows testers to construct repeatable test cases that take |
| 821 | into account optimization decisions that depend on baud rate. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 822 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 823 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 824 | </PRE><H3><a name="h3-CC-_command-character_"><EM>CC</EM> (command character)</a></H3><PRE> |
| 825 | When set, the <STRONG>command_character</STRONG> (<STRONG>cmdch</STRONG>) capability value of loaded |
| 826 | <EM>terminfo</EM> entries changes to the value of this variable. Very few <EM>term-</EM> |
| 827 | <EM>info</EM> entries provide this feature. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 828 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 829 | Because this name is also used in development environments to represent |
| 830 | the C compiler's name, <EM>ncurses</EM> ignores its value if it is not one |
| 831 | character in length. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 832 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 833 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 834 | </PRE><H3><a name="h3-COLUMNS"><EM>COLUMNS</EM></a></H3><PRE> |
| 835 | This variable specifies the width of the screen in characters. |
| 836 | Applications running in a windowing environment usually are able to |
| 837 | obtain the width of the window in which they are executing. If <EM>COLUMNS</EM> |
| 838 | is not defined and the terminal's screen size is not available from the |
| 839 | terminal driver, <EM>ncurses</EM> uses the size specified by the <STRONG>columns</STRONG> (<STRONG>cols</STRONG>) |
| 840 | capability of the terminal type's entry in the <EM>terminfo</EM> database, if |
| 841 | any. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 842 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 843 | It is important that your application use the correct screen size. |
| 844 | Automatic detection thereof is not always possible because an |
| 845 | application may be running on a host that does not honor NAWS |
| 846 | (Negotiations About Window Size) or as a different user ID than the |
| 847 | owner of the terminal device file. Setting <EM>COLUMNS</EM> and/or <EM>LINES</EM> |
| 848 | overrides the library's use of the screen size obtained from the |
| 849 | operating system. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 850 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 851 | The <EM>COLUMNS</EM> and <EM>LINES</EM> variables may be specified independently. This |
| 852 | property is useful to circumvent misfeatures of legacy terminal type |
| 853 | descriptions; <STRONG>xterm(1)</STRONG> descriptions specifying 65 lines were once |
| 854 | notorious. For best results, avoid specifying <STRONG>cols</STRONG> and <STRONG>lines</STRONG> |
| 855 | capability codes in <EM>terminfo</EM> descriptions of terminal emulators. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 856 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 857 | <STRONG><A HREF="curs_util.3x.html">use_env(3x)</A></STRONG> can disable use of the process environment in determining |
| 858 | the screen size. <STRONG><A HREF="curs_util.3x.html">use_tioctl(3x)</A></STRONG> can update <EM>COLUMNS</EM> and <EM>LINES</EM> to match |
| 859 | the screen size obtained from system calls or the terminal database. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 860 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 861 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 862 | </PRE><H3><a name="h3-ESCDELAY"><EM>ESCDELAY</EM></a></H3><PRE> |
| 863 | For <EM>curses</EM> to distinguish the ESC character resulting from a user's |
| 864 | press of the "Escape" key on the input device from one beginning an |
| 865 | <EM>escape</EM> <EM>sequence</EM> (as commonly produced by function keys), it waits after |
| 866 | receiving the escape character to see if further characters are |
| 867 | available on the input stream within a short interval. A global |
| 868 | variable <STRONG>ESCDELAY</STRONG> stores this interval in milliseconds. The default |
| 869 | value of 1000 (one second) is adequate for most uses. This environment |
| 870 | variable overrides it. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 871 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 872 | The most common instance where you may wish to change this value is to |
| 873 | work with a remote host over a slow communication channel. If the host |
| 874 | running a <EM>curses</EM> application does not receive the characters of an |
| 875 | escape sequence in a timely manner, the library can interpret them as |
| 876 | multiple key stroke events. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 877 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 878 | <STRONG>xterm(1)</STRONG> mouse events are a form of escape sequence; therefore, if your |
| 879 | application makes heavy use of multiple-clicking, you may wish to |
| 880 | lengthen the default value because the delay applies to the composite |
| 881 | multi-click event as well as the individual clicks. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 882 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 883 | Portable applications should not rely upon the presence of <STRONG>ESCDELAY</STRONG> in |
| 884 | either form, but setting the environment variable rather than the |
| 885 | global variable does not create problems when compiling an application. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 886 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 887 | If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the <EM>curses</EM> window receiving input, a |
| 888 | program must disambiguate escape sequences itself. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 889 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 890 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 891 | </PRE><H3><a name="h3-HOME"><EM>HOME</EM></a></H3><PRE> |
| 892 | <EM>ncurses</EM> may read and write auxiliary terminal descriptions in <EM>.termcap</EM> |
| 893 | and <EM>.terminfo</EM> files in the user's home directory. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 894 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 895 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 896 | </PRE><H3><a name="h3-LINES"><EM>LINES</EM></a></H3><PRE> |
| 897 | This counterpart to <EM>COLUMNS</EM> specifies the height of the screen in |
| 898 | characters. The corresponding <EM>terminfo</EM> capability and code is <STRONG>lines</STRONG>. |
| 899 | See the description of the <EM>COLUMNS</EM> variable above. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 900 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 901 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 902 | </PRE><H3><a name="h3-MOUSE_BUTTONS_123"><EM>MOUSE_BUTTONS_123</EM></a></H3><PRE> |
| 903 | (OS/2 EMX port only) OS/2 numbers a three-button mouse inconsistently |
| 904 | with other platforms, such that 1 is the left button, 2 the right, and |
| 905 | 3 the middle. This variable customizes the mouse button numbering. |
| 906 | Its value must be three digits 1-3 in any order. By default, <EM>ncurses</EM> |
| 907 | assumes a numbering of "132". |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 908 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 909 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 910 | </PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS"><EM>NCURSES_ASSUMED_COLORS</EM></a></H3><PRE> |
| 911 | If set, this variable overrides the <EM>ncurses</EM> library's compiled-in |
| 912 | assumption that the terminal's default colors are white on black; see |
| 913 | <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>. Set the foreground and background color values |
| 914 | with this environment variable by assigning it two integer values |
| 915 | separated by a comma, indicating foregound and background color |
| 916 | numbers, respectively. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 917 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 918 | For example, to tell <EM>ncurses</EM> not to assume anything about the colors, |
| 919 | use a value of "-1,-1". To make the default color scheme green on |
| 920 | black, use "2,0". <EM>ncurses</EM> accepts integral values from -1 up to the |
| 921 | value of the <EM>terminfo</EM> <STRONG>max_colors</STRONG> (<STRONG>colors</STRONG>) capability. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 922 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 923 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 924 | </PRE><H3><a name="h3-NCURSES_CONSOLE2"><EM>NCURSES_CONSOLE2</EM></a></H3><PRE> |
| 925 | (MinGW port only) The <EM>Console2</EM> program defectively handles the |
| 926 | Microsoft Console API call <EM>CreateConsoleScreenBuffer</EM>. Applications |
| 927 | that use it will hang. However, it is possible to simulate the action |
| 928 | of this call by mapping coordinates, explicitly saving and restoring |
| 929 | the original screen contents. Setting the environment variable <EM>NCGDB</EM> |
| 930 | has the same effect. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 931 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 932 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 933 | </PRE><H3><a name="h3-NCURSES_GPM_TERMS"><EM>NCURSES_GPM_TERMS</EM></a></H3><PRE> |
| 934 | (Linux only) When <EM>ncurses</EM> is configured to use the GPM interface, this |
| 935 | variable may list one or more terminal names against which the <EM>TERM</EM> |
| 936 | variable (see below) is matched. An empty value disables the GPM |
| 937 | interface, using <EM>ncurses</EM>'s built-in support for <STRONG>xterm(1)</STRONG> mouse |
| 938 | protocols instead. If the variable is absent, <EM>ncurses</EM> attempts to open |
| 939 | GPM if <EM>TERM</EM> contains "linux". |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 940 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 941 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 942 | </PRE><H3><a name="h3-NCURSES_NO_HARD_TABS"><EM>NCURSES_NO_HARD_TABS</EM></a></H3><PRE> |
| 943 | <EM>ncurses</EM> may use tab characters in cursor movement optimization. In |
| 944 | some cases, your terminal driver may not handle them properly. Set |
| 945 | this environment variable to any value to disable the feature. You can |
| 946 | also adjust your <STRONG>stty(1)</STRONG> settings to avoid the problem. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 947 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 948 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 949 | </PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE"><EM>NCURSES_NO_MAGIC_COOKIE</EM></a></H3><PRE> |
| 950 | Many terminals store video attributes as a property of a character |
| 951 | cell, as <EM>curses</EM> does. Historically, some recorded changes in video |
| 952 | attributes as data that logically <EM>occupies</EM> character cells on the |
| 953 | display, switching attributes on or off, similarly to tags in a markup |
| 954 | language; these are termed "magic cookies", and must be subsequently |
| 955 | overprinted. If the <EM>terminfo</EM> entry for your terminal type does not |
| 956 | adequately describe its handling of magic cookies, set this variable to |
| 957 | any value to instruct <EM>ncurses</EM> to disable attributes entirely. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 958 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 959 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 960 | </PRE><H3><a name="h3-NCURSES_NO_PADDING"><EM>NCURSES_NO_PADDING</EM></a></H3><PRE> |
| 961 | Most terminal type descriptions in the <EM>terminfo</EM> database detail |
| 962 | hardware devices. Many people use <EM>curses</EM>-based applications in |
| 963 | terminal emulator programs that run in a windowing environment. These |
| 964 | programs can duplicate all of the important features of a hardware |
| 965 | terminal, but often lack their limitations. Chief among these absent |
| 966 | drawbacks is the problem of data flow management; that is, limiting the |
| 967 | speed of communication to what the hardware could handle. Unless a |
| 968 | hardware terminal is interfaced into a terminal concentrator (which |
| 969 | does flow control), an application must manage flow control itself to |
| 970 | prevent overruns and data loss. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 971 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 972 | A solution that comes at no hardware cost is for an application to |
| 973 | pause after directing a terminal to execute an operation that it |
| 974 | performs slowly, such as clearing the display. Many terminal type |
| 975 | descriptions, including that for the VT100, embed delay specifications |
| 976 | in capabilities. You may wish to use these terminal descriptions |
| 977 | without paying the performance penalty. Set <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>PADDING</EM> to any |
| 978 | value to disable all but mandatory padding. Mandatory padding is used |
| 979 | by such terminal capabilities as <STRONG>flash_screen</STRONG> (<STRONG>flash</STRONG>). |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 980 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 981 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 982 | </PRE><H3><a name="h3-NCURSES_NO_SETBUF"><EM>NCURSES_NO_SETBUF</EM></a></H3><PRE> |
| 983 | (Obsolete) Prior to internal changes developed in <EM>ncurses</EM> 5.9 (patches |
| 984 | 20120825 through 20130126), the library used <STRONG>setbuf(3)</STRONG> to enable fully |
| 985 | buffered output when initializing the terminal. This was done, as in |
| 986 | SVr4 <EM>curses</EM>, to increase performance. For testing purposes, both of |
| 987 | <EM>ncurses</EM> and of certain applications, this feature was made optional. |
| 988 | Setting this variable disabled output buffering, leaving the output |
| 989 | stream in the original (usually line-buffered) mode. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 990 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 991 | Nowadays, <EM>ncurses</EM> performs its own buffering and does not require this |
| 992 | workaround; it does not modify the buffering of the standard output |
| 993 | stream. This approach makes signal handling, as for interrupts, more |
| 994 | robust. A drawback is that certain unconventional programs mixed |
| 995 | <STRONG>stdio(3)</STRONG> calls with <EM>ncurses</EM> calls and (usually) got the behavior they |
| 996 | expected. This is no longer the case; <EM>ncurses</EM> does not write to the |
| 997 | standard output file descriptor through a <EM>stdio</EM>-buffered stream. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 998 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 999 | As a special case, low-level API calls such as <STRONG><A HREF="curs_terminfo.3x.html">putp(3x)</A></STRONG> still use the |
| 1000 | standard output stream. High-level <EM>curses</EM> calls such as <STRONG><A HREF="curs_printw.3x.html">printw(3x)</A></STRONG> do |
| 1001 | not. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1002 | |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1003 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1004 | </PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS"><EM>NCURSES_NO_UTF8_ACS</EM></a></H3><PRE> |
| 1005 | At initialization, <EM>ncurses</EM> inspects the <EM>TERM</EM> environment variable for |
| 1006 | special cases where VT100 forms-drawing characters (and the |
| 1007 | corresponding alternate character set <EM>terminfo</EM> capabilities) are known |
| 1008 | to be unsupported by terminal types that otherwise claim VT100 |
| 1009 | compatibility. Specifically, when running in a UTF-8 locale, the Linux |
| 1010 | virtual console device and the GNU <STRONG>screen(1)</STRONG> program ignore them. Set |
| 1011 | this variable to a nonzero value to instruct <EM>ncurses</EM> that the |
| 1012 | terminal's ACS support is broken; the library then outputs Unicode code |
| 1013 | points that correspond to the forms-drawing characters. Set it to zero |
| 1014 | (or a non-integer) to disable the special check for terminal type names |
| 1015 | matching "linux" or "screen", directing <EM>ncurses</EM> to assume that the ACS |
| 1016 | feature works if the terminal type description advertises it. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1017 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1018 | As an alternative to use of this variable, <EM>ncurses</EM> checks for an |
| 1019 | extended <EM>terminfo</EM> numeric capability <STRONG>U8</STRONG> that can be compiled using "<STRONG>tic</STRONG> |
| 1020 | <STRONG>-x</STRONG>". Examples follow. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1021 | |
| 1022 | # linux console, if patched to provide working |
| 1023 | # VT100 shift-in/shift-out, with corresponding font. |
| 1024 | linux-vt100|linux console with VT100 line-graphics, |
| 1025 | U8#0, use=linux, |
| 1026 | |
| 1027 | # uxterm with vt100Graphics resource set to false |
| 1028 | xterm-utf8|xterm relying on UTF-8 line-graphics, |
| 1029 | U8#1, use=xterm, |
| 1030 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1031 | The two-character name "U8" was chosen to permit its use via <EM>ncurses</EM>'s |
| 1032 | <EM>termcap</EM> interface. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1033 | |
| 1034 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1035 | </PRE><H3><a name="h3-NCURSES_TRACE"><EM>NCURSES_TRACE</EM></a></H3><PRE> |
| 1036 | At initialization, <EM>ncurses</EM> (in its debugging configuration) checks for |
| 1037 | this variable's presence. If defined with an integral value, the |
| 1038 | library calls <STRONG><A HREF="curs_trace.3x.html">curses_trace(3x)</A></STRONG> with that value as the argument. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1039 | |
| 1040 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1041 | </PRE><H3><a name="h3-TERM"><EM>TERM</EM></a></H3><PRE> |
| 1042 | The <EM>TERM</EM> variable denotes the terminal type. Each is distinct, though |
| 1043 | many are similar. It is commonly set by terminal emulators to help |
| 1044 | applications find a workable terminal description. Some choose a |
| 1045 | popular approximation such as "ansi", "vt100", or "xterm" rather than |
| 1046 | an exact fit to their capabilities. Not infrequently, an application |
| 1047 | will have problems with that approach; for example, a key stroke may |
| 1048 | not operate correctly, or produce no effect but seeming garbage |
| 1049 | characters on the screen. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1050 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1051 | Setting <EM>TERM</EM> has no effect on hardware operation; it affects the way |
| 1052 | applications communicate with the terminal. Likewise, as a general |
| 1053 | rule (<STRONG>xterm(1)</STRONG> being a rare exception), terminal emulators that allow |
| 1054 | you to specify <EM>TERM</EM> as a parameter or configuration value do not change |
| 1055 | their behavior to match that setting. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1056 | |
| 1057 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1058 | </PRE><H3><a name="h3-TERMCAP"><EM>TERMCAP</EM></a></H3><PRE> |
| 1059 | If <EM>ncurses</EM> is configured with <EM>termcap</EM> support, it checks for a terminal |
| 1060 | type description in <EM>termcap</EM> format if one in <EM>terminfo</EM> format is not |
| 1061 | available. Setting this variable directs <EM>ncurses</EM> to ignore the usual |
| 1062 | <EM>termcap</EM> database location, <EM>/etc/termcap</EM>; see <EM>TERMPATH</EM> below. <EM>TERMCAP</EM> |
| 1063 | should contain either a terminal description (with newlines stripped |
| 1064 | out), or a file name indicating where the information required by the |
| 1065 | <EM>TERM</EM> environment variable is stored. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1066 | |
| 1067 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1068 | </PRE><H3><a name="h3-TERMINFO"><EM>TERMINFO</EM></a></H3><PRE> |
| 1069 | <EM>ncurses</EM> can be configured to read terminal type description databases |
| 1070 | in various locations using different formats. This variable overrides |
| 1071 | the default location. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1072 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1073 | <STRONG>o</STRONG> Descriptions in <EM>terminfo</EM> format are normally stored in a directory |
| 1074 | tree using subdirectories named by the common first letters of the |
| 1075 | terminal types named therein. This is the scheme used in System V. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1076 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1077 | <STRONG>o</STRONG> If <EM>ncurses</EM> is configured to use hashed databases, then <EM>TERMINFO</EM> may |
| 1078 | name its location, such as <EM>/usr/share/terminfo.db</EM>, rather than |
| 1079 | <EM>/usr/share/terminfo/</EM>. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1080 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1081 | The hashed database uses less disk space and is a little faster than |
| 1082 | the directory tree. However, some applications assume the existence of |
| 1083 | the directory tree, and read it directly rather than using the <EM>terminfo</EM> |
| 1084 | API. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1085 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1086 | <STRONG>o</STRONG> If <EM>ncurses</EM> is configured with <EM>termcap</EM> support, this variable may |
| 1087 | contain the location of a <EM>termcap</EM> file. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1088 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1089 | <STRONG>o</STRONG> If the value of <EM>TERMINFO</EM> begins with "hex:" or "b64:", <EM>ncurses</EM> uses |
| 1090 | the remainder of the value as a compiled <EM>terminfo</EM> description. You |
| 1091 | might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1092 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1093 | TERMINFO=$(infocmp -0 -Q2 -q) |
| 1094 | export TERMINFO |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1095 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1096 | The compiled description is used only if it corresponds to the |
| 1097 | terminal type identified by <EM>TERM</EM>. |
| 1098 | |
| 1099 | Setting <EM>TERMINFO</EM> is the simplest, but not the only, way to direct |
| 1100 | <EM>ncurses</EM> to a terminal database. The search path is as follows. |
| 1101 | |
| 1102 | <STRONG>o</STRONG> the last terminal database to which the running <EM>ncurses</EM> application |
| 1103 | wrote, if any |
| 1104 | |
| 1105 | <STRONG>o</STRONG> the location specified by the <EM>TERMINFO</EM> environment variable |
| 1106 | |
| 1107 | <STRONG>o</STRONG> <EM>$HOME/.terminfo</EM> |
| 1108 | |
| 1109 | <STRONG>o</STRONG> locations listed in the <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variable |
| 1110 | |
| 1111 | <STRONG>o</STRONG> location(s) configured and compiled into <EM>ncurses</EM> |
| 1112 | |
| 1113 | <STRONG>o</STRONG> <EM>/usr/share/terminfo</EM> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1114 | |
| 1115 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1116 | </PRE><H3><a name="h3-TERMINFO_DIRS"><EM>TERMINFO_DIRS</EM></a></H3><PRE> |
| 1117 | This variable specifies a list of locations, akin to <EM>PATH</EM>, in which |
| 1118 | <EM>ncurses</EM> searches for the terminal type descriptions described by |
| 1119 | <EM>TERMINFO</EM> above. The list items are separated by colons on Unix and |
| 1120 | semicolons on OS/2 EMX. System V <EM>terminfo</EM> lacks a corresponding |
| 1121 | feature; <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is an <EM>ncurses</EM> extension. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1122 | |
| 1123 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1124 | </PRE><H3><a name="h3-TERMPATH"><EM>TERMPATH</EM></a></H3><PRE> |
| 1125 | If <EM>TERMCAP</EM> does not hold a terminal type description or file name, then |
| 1126 | <EM>ncurses</EM> checks the contents of <EM>TERMPATH</EM>, a list of locations, akin to |
| 1127 | <EM>PATH</EM>, in which it searches for <EM>termcap</EM> terminal type descriptions. The |
| 1128 | list items are separated by colons on Unix and semicolons on OS/2 EMX. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1129 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1130 | If both <EM>TERMCAP</EM> and <EM>TERMPATH</EM> are unset or invalid, <EM>ncurses</EM> searches for |
| 1131 | the files <EM>/etc/termcap</EM>, <EM>/usr/share/misc/termcap</EM>, and <EM>$HOME/.termcap</EM>, in |
| 1132 | that order. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1133 | |
| 1134 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1135 | </PRE><H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE> |
| 1136 | Many different <EM>ncurses</EM> configurations are possible, determined by the |
| 1137 | options given to the <EM>configure</EM> script when building the library. Run |
| 1138 | the script with the <STRONG>--help</STRONG> option to peruse them all. A few are of |
| 1139 | particular significance to the application developer employing <EM>ncurses</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1140 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1141 | <STRONG>--disable-overwrite</STRONG> |
| 1142 | The standard include for <EM>ncurses</EM> is as noted in <STRONG>SYNOPSIS</STRONG>: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1143 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1144 | <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1145 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1146 | This option is used to avoid filename conflicts when <EM>ncurses</EM> is |
| 1147 | not the main implementation of curses of the computer. If <EM>ncurses</EM> |
| 1148 | is installed disabling overwrite, it puts its headers in a |
| 1149 | subdirectory, e.g., |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1150 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1151 | <STRONG>#include</STRONG> <STRONG><ncurses/curses.h></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1152 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1153 | It also omits a symbolic link which would allow you to use |
| 1154 | <STRONG>-lcurses</STRONG> to build executables. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1155 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1156 | <STRONG>--enable-widec</STRONG> |
| 1157 | The configure script renames the library and (if the |
| 1158 | <STRONG>--disable-overwrite</STRONG> option is used) puts the header files in a |
| 1159 | different subdirectory. All of the library names have a "w" |
| 1160 | appended to them, i.e., instead of |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1161 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1162 | <STRONG>-lncurses</STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1163 | |
| 1164 | you link with |
| 1165 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1166 | <STRONG>-lncursesw</STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1167 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1168 | You must also enable the wide-character features in the header |
| 1169 | file when compiling for the wide-character library to use the |
| 1170 | extended (wide-character) functions. The symbol which enables |
| 1171 | these features has changed since X/Open Curses, Issue 4: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1172 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1173 | <STRONG>o</STRONG> Originally, the wide-character feature required the symbol |
| 1174 | <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> but that was only valid for XPG4 |
| 1175 | (1996). |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1176 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1177 | <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined |
| 1178 | to 500. |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1179 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1180 | <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation |
| 1181 | require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However, |
| 1182 | X/Open Curses, Issue 7 (2009) recommends defining it to 700. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1183 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1184 | <STRONG>o</STRONG> Alternatively, you can enable the feature by defining |
| 1185 | <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file |
| 1186 | than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG> |
| 1187 | (or a system-specific symbol). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1188 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1189 | The <EM>curses.h</EM> header file installed for the wide-character library |
| 1190 | is designed to be compatible with the non-wide library's header. |
| 1191 | Only the size of the <EM>WINDOW</EM> structure differs; few applications |
| 1192 | require more than pointers to <EM>WINDOW</EM>s. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1193 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1194 | If the headers are installed allowing overwrite, the wide- |
| 1195 | character library's headers should be installed last, to allow |
| 1196 | applications to be built using either library from the same set of |
| 1197 | headers. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1198 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1199 | <STRONG>--with-pthread</STRONG> |
| 1200 | The configure script renames the library. All of the library |
| 1201 | names have a "t" appended to them (before any "w" added by |
| 1202 | <STRONG>--enable-widec</STRONG>). |
| 1203 | |
| 1204 | The global variables such as <STRONG>LINES</STRONG> are replaced by macros to allow |
| 1205 | read-only access. At the same time, setter-functions are provided |
| 1206 | to set these values. Some applications (very few) may require |
| 1207 | changes to work with this convention. |
| 1208 | |
| 1209 | <STRONG>--with-shared</STRONG> |
| 1210 | <STRONG>--with-normal</STRONG> |
| 1211 | <STRONG>--with-debug</STRONG> |
| 1212 | <STRONG>--with-profile</STRONG> |
| 1213 | The shared and normal (static) library names differ by their |
| 1214 | suffixes, e.g., <STRONG>libncurses.so</STRONG> and <STRONG>libncurses.a</STRONG>. The debug and |
| 1215 | profiling libraries add a "_g" and a "_p" to the root names |
| 1216 | respectively, e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>. |
| 1217 | |
| 1218 | <STRONG>--with-termlib</STRONG> |
| 1219 | Low-level functions which do not depend upon whether the library |
| 1220 | supports wide-characters, are provided in the tinfo library. |
| 1221 | |
| 1222 | By doing this, it is possible to share the tinfo library between |
| 1223 | wide/normal configurations as well as reduce the size of the |
| 1224 | library when only low-level functions are needed. |
| 1225 | |
| 1226 | Those functions are described in these pages: |
| 1227 | |
| 1228 | <STRONG>o</STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> - miscellaneous <EM>curses</EM> extensions |
| 1229 | |
| 1230 | <STRONG>o</STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> - <EM>curses</EM> input options |
| 1231 | |
| 1232 | <STRONG>o</STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> - low-level <EM>curses</EM> routines |
| 1233 | |
| 1234 | <STRONG>o</STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> - <EM>curses</EM> environment query routines |
| 1235 | |
| 1236 | <STRONG>o</STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> - <EM>curses</EM> emulation of <EM>termcap</EM> |
| 1237 | |
| 1238 | <STRONG>o</STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> - <EM>curses</EM> interface to <EM>terminfo</EM> database |
| 1239 | |
| 1240 | <STRONG>o</STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <EM>curses</EM> utility routines |
| 1241 | |
| 1242 | <STRONG>--with-trace</STRONG> |
| 1243 | The <STRONG>trace</STRONG> function normally resides in the debug library, but it |
| 1244 | is sometimes useful to configure this in the shared library. |
| 1245 | Configure scripts should check for the function's existence rather |
| 1246 | than assuming it is always in the debug library. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1247 | |
| 1248 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1249 | </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> |
| 1250 | <EM>/usr/share/tabset</EM> |
| 1251 | tab stop initialization database |
| 1252 | |
| 1253 | <EM>/usr/share/terminfo</EM> |
| 1254 | compiled terminal capability database |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1255 | |
| 1256 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1257 | </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> |
| 1258 | X/Open Curses permits most functions it specifies to be made available |
| 1259 | as macros as well. <EM>ncurses</EM> does so |
| 1260 | |
| 1261 | <STRONG>o</STRONG> for functions that return values via their parameters, |
| 1262 | |
| 1263 | <STRONG>o</STRONG> to support obsolete features, |
| 1264 | |
| 1265 | <STRONG>o</STRONG> to reuse functions (for example, those that move the cursor before |
| 1266 | another operation), and |
| 1267 | |
| 1268 | <STRONG>o</STRONG> a few special cases. |
| 1269 | |
| 1270 | If the standard output file descriptor of an <EM>ncurses</EM> program is |
| 1271 | redirected to something that is not a terminal device, the library |
| 1272 | writes screen updates to the standard error file descriptor. This was |
| 1273 | an undocumented feature of SVr3 <EM>curses</EM>. |
| 1274 | |
| 1275 | See subsection "Header Files" below regarding symbols exposed by |
| 1276 | inclusion of <EM>curses.h</EM>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1277 | |
| 1278 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1279 | </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> |
| 1280 | <EM>ncurses</EM> enables an application to capture mouse events on certain |
| 1281 | terminals, including <STRONG>xterm(1)</STRONG>; see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1282 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1283 | <EM>ncurses</EM> provides a means of responding to window resizing events, as |
| 1284 | when running in a GUI terminal emulator application such as <EM>xterm</EM>; see |
| 1285 | <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1286 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1287 | <EM>ncurses</EM> allows an application to query the terminal for the presence of |
| 1288 | a wide variety of special keys; see <STRONG><A HREF="curs_getch.3x.html">has_key(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1289 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1290 | <EM>ncurses</EM> extends the fixed set of function key capabilities specified by |
| 1291 | X/Open Curses by allowing the application programmer to define |
| 1292 | additional key events at runtime; see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>, |
| 1293 | <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1294 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1295 | <EM>ncurses</EM> can exploit the capabilities of terminals implementing |
| 1296 | ISO 6429/ECMA-48 SGR 39 and SGR 49 sequences, which allow an |
| 1297 | application to reset the terminal to its original foreground and |
| 1298 | background colors. From a user's perspective, the application is able |
| 1299 | to draw colored text on a background whose color is set independently, |
| 1300 | providing better control over color contrasts. See <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1301 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1302 | An <EM>ncurses</EM> application can eschew knowledge of <EM>WINDOW</EM> structure |
| 1303 | internals, instead using accessor functions such as <STRONG><A HREF="curs_opaque.3x.html">is_scrollok(3x)</A></STRONG>. |
| 1304 | |
| 1305 | <EM>ncurses</EM> enables an application to direct application output to a |
| 1306 | printer attached to the terminal device; see <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>. |
| 1307 | |
| 1308 | <EM>ncurses</EM> offers <STRONG><A HREF="curs_slk.3x.html">slk_attr(3x)</A></STRONG> as a counterpart of <STRONG><A HREF="curs_attr.3x.html">attr_get(3x)</A></STRONG> for soft- |
| 1309 | label key lines, and <STRONG><A HREF="curs_slk.3x.html">extended_slk_color(3x)</A></STRONG> as a form of <STRONG><A HREF="curs_slk.3x.html">slk_color(3x)</A></STRONG> |
| 1310 | that can gather color information from them when many colors are |
| 1311 | supported. |
| 1312 | |
| 1313 | Some extensions are available only if <EM>ncurses</EM> permits modification of |
| 1314 | <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>'s behavior; see <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>. <EM>ncurses</EM> is compiled |
| 1315 | to support them; section "ALTERNATE CONFIGURATIONS" describes how. |
| 1316 | |
| 1317 | <STRONG>o</STRONG> Rudimentary support for multi-threaded applications may be |
| 1318 | available; see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>. |
| 1319 | |
| 1320 | <STRONG>o</STRONG> Functions that ease the management of multiple screens can be |
| 1321 | exposed; see <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>. |
| 1322 | |
| 1323 | <STRONG>o</STRONG> To aid applications to debug their memory usage, <EM>ncurses</EM> optionally |
| 1324 | offers functions to more aggressively free memory it dynamically |
| 1325 | allocates itself; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>. |
| 1326 | |
| 1327 | <STRONG>o</STRONG> The library facilitates auditing and troubleshooting of its |
| 1328 | behavior; see <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>. |
| 1329 | |
| 1330 | <STRONG>o</STRONG> The compiler option <STRONG>-DUSE_GETCAP</STRONG> causes the library to fall back to |
| 1331 | reading <EM>/etc/termcap</EM> if the terminal setup code cannot find a <EM>term-</EM> |
| 1332 | <EM>info</EM> entry corresponding to <EM>TERM</EM>. Use of this feature is not |
| 1333 | recommended, as it essentially includes an entire <EM>termcap</EM> compiler |
| 1334 | in the <EM>ncurses</EM> startup code, at a cost in memory usage and |
| 1335 | application launch latency. |
| 1336 | |
| 1337 | <EM>PDCurses</EM> and NetBSD <EM>curses</EM> incorporate some <EM>ncurses</EM> extensions. |
| 1338 | Individual man pages indicate where this is the case. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1339 | |
| 1340 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1341 | </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> |
| 1342 | X/Open Curses defines two levels of conformance, "base" and "enhanced". |
| 1343 | The latter includes several additional features, such as wide-character |
| 1344 | and color support. <EM>ncurses</EM> intends base-level conformance with X/Open |
| 1345 | Curses, and supports all features of its enhanced level except the |
| 1346 | <STRONG>untic</STRONG> utility. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1347 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1348 | Differences between X/Open Curses and <EM>ncurses</EM> are documented in the |
| 1349 | "PORTABILITY" sections of applicable man pages. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1350 | |
| 1351 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1352 | </PRE><H3><a name="h3-Error-Checking">Error Checking</a></H3><PRE> |
| 1353 | In many cases, X/Open Curses is vague about error conditions, omitting |
| 1354 | some of the SVr4 documentation. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1355 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1356 | Unlike other implementations, <EM>ncurses</EM> checks pointer parameters, such |
| 1357 | as those to <EM>WINDOW</EM> structures, to ensure that they are not null. This |
| 1358 | is done primarily to guard against programmer error. The standard |
| 1359 | interface does not provide a way for the library to tell an application |
| 1360 | which of several possible errors occurred. Relying on this (or some |
| 1361 | other) extension adversely affects the portability of <EM>curses</EM> |
| 1362 | applications. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1363 | |
| 1364 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1365 | </PRE><H3><a name="h3-Padding-Differences">Padding Differences</a></H3><PRE> |
| 1366 | In historical <EM>curses</EM> implementations, delays embedded in the <EM>terminfo</EM> |
| 1367 | capabilities <STRONG>carriage_return</STRONG> (<STRONG>cr</STRONG>), <STRONG>scroll_forward</STRONG> (<STRONG>ind</STRONG>), <STRONG>cursor_left</STRONG> |
| 1368 | (<STRONG>cub1</STRONG>), <STRONG>form_feed</STRONG> (<STRONG>ff</STRONG>), and <STRONG>tab</STRONG> (<STRONG>ht</STRONG>) activated corresponding delay bits |
| 1369 | in the Unix terminal driver. <EM>ncurses</EM> performs all padding by sending |
| 1370 | NUL bytes to the device. This method is slightly more expensive, but |
| 1371 | narrows the interface to the Unix kernel significantly and |
| 1372 | correspondingly increases the package's portability. |
| 1373 | |
| 1374 | |
| 1375 | </PRE><H3><a name="h3-Header-Files">Header Files</a></H3><PRE> |
| 1376 | The header file <EM>curses.h</EM> itself includes the header files <EM>stdio.h</EM> and |
| 1377 | <EM>unctrl.h</EM>. |
| 1378 | |
| 1379 | X/Open Curses has more to say, |
| 1380 | |
| 1381 | The inclusion of <EM>curses.h</EM> may make visible all symbols from the |
| 1382 | headers <EM>stdio.h</EM>, <EM>term.h</EM>, <EM>termios.h</EM>, and <EM>wchar.h</EM>. |
| 1383 | |
| 1384 | but does not finish the story. A more complete account follows. |
| 1385 | |
| 1386 | <STRONG>o</STRONG> Starting with 4BSD <EM>curses</EM> (1980) all implementations have provided |
| 1387 | a <EM>curses.h</EM> file. |
| 1388 | |
| 1389 | BSD <EM>curses</EM> code included <EM>curses.h</EM> and <EM>unctrl.h</EM> from an internal |
| 1390 | header file <EM>curses.ext</EM>, where "ext" abbreviated "externs". |
| 1391 | |
| 1392 | The implementations of <EM>printw</EM> and <EM>scanw</EM> used undocumented internal |
| 1393 | functions of the standard I/O library (<STRONG>_</STRONG><EM>doprnt</EM> and <STRONG>_</STRONG><EM>doscan</EM>), but |
| 1394 | nothing in <EM>curses.h</EM> itself relied upon <EM>stdio.h</EM>. |
| 1395 | |
| 1396 | <STRONG>o</STRONG> SVr2 <EM>curses</EM> added <EM>newterm</EM>, which relies upon <EM>stdio.h</EM> because its |
| 1397 | function prototype employs the <EM>FILE</EM> type. |
| 1398 | |
| 1399 | SVr4 <EM>curses</EM> added <EM>putwin</EM> and <EM>getwin</EM>, which also use <EM>stdio.h</EM>. |
| 1400 | |
| 1401 | X/Open Curses specifies all three of these functions. |
| 1402 | |
| 1403 | SVr4 <EM>curses</EM> and X/Open Curses do not require the developer to |
| 1404 | include <EM>stdio.h</EM> before <EM>curses.h</EM>. Both document use of <EM>curses</EM> as |
| 1405 | requiring only <EM>curses.h</EM>. |
| 1406 | |
| 1407 | As a result, standard <EM>curses.h</EM> always includes <EM>stdio.h</EM>. |
| 1408 | |
| 1409 | <STRONG>o</STRONG> X/Open Curses and SVr4 <EM>curses</EM> are inconsistent with respect to |
| 1410 | <EM>unctrl.h</EM>. |
| 1411 | |
| 1412 | As noted in <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <EM>ncurses</EM> includes <EM>unctrl.h</EM> from <EM>curses.h</EM> |
| 1413 | (as SVr4 does). |
| 1414 | |
| 1415 | <STRONG>o</STRONG> X/Open Curses's comments about <EM>term.h</EM> and <EM>termios.h</EM> may refer to |
| 1416 | HP-UX and AIX. |
| 1417 | |
| 1418 | HP-UX <EM>curses</EM> includes <EM>term.h</EM> from <EM>curses.h</EM> to declare <EM>setupterm</EM> in |
| 1419 | <EM>curses.h</EM>, but <EM>ncurses</EM> and Solaris <EM>curses</EM> do not. |
| 1420 | |
| 1421 | AIX <EM>curses</EM> includes <EM>term.h</EM> and termios.h<EM>.</EM> Again, <EM>ncurses</EM> and |
| 1422 | Solaris <EM>curses</EM> do not. |
| 1423 | |
| 1424 | <STRONG>o</STRONG> X/Open Curses says that <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>term.h</EM>, but does not |
| 1425 | require it to do so. |
| 1426 | |
| 1427 | Some programs use functions declared in both <EM>curses.h</EM> and <EM>term.h</EM>, |
| 1428 | and must include both header files in the same module. Very old |
| 1429 | versions of AIX <EM>curses</EM> required inclusion of <EM>curses.h</EM> before |
| 1430 | <EM>term.h</EM>. |
| 1431 | |
| 1432 | The header files supplied by <EM>ncurses</EM> include the standard library |
| 1433 | headers required for its declarations, so <EM>ncurses</EM>'s own header |
| 1434 | files can be included in any order. But for portability, you |
| 1435 | should include <EM>curses.h</EM> before <EM>term.h</EM>. |
| 1436 | |
| 1437 | <STRONG>o</STRONG> X/Open Curses says "may make visible" because including a header |
| 1438 | file does not necessarily make visible all of the symbols in it |
| 1439 | (consider <STRONG>#ifdef</STRONG> and similar). |
| 1440 | |
| 1441 | For instance, <EM>ncurses</EM>'s <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>wchar.h</EM> if the proper |
| 1442 | symbol is defined, and if <EM>ncurses</EM> is configured for wide-character |
| 1443 | support. If <EM>wchar.h</EM> is included, its symbols <STRONG>may</STRONG> be made visible |
| 1444 | depending on the value of the <STRONG>_XOPEN_SOURCE</STRONG> feature test macro. |
| 1445 | |
| 1446 | <STRONG>o</STRONG> X/Open Curses mandates an application's inclusion of one standard C |
| 1447 | library header in a special case: <EM>stdarg.h</EM> before <EM>curses.h</EM> to |
| 1448 | prototype the functions <EM>vw</EM><STRONG>_</STRONG><EM>printw</EM> and <EM>vw</EM><STRONG>_</STRONG><EM>scanw</EM> (as well as the |
| 1449 | obsolete <EM>vwprintw</EM> and <EM>vwscanw</EM>). Each of these takes a variadic |
| 1450 | argument list, a <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter, like that of <STRONG>printf(3)</STRONG>. |
| 1451 | |
| 1452 | SVr3 <EM>curses</EM> introduced the two obsolete functions, and X/Open |
| 1453 | Curses the others. In between, SVr4 <EM>curses</EM> provided for the |
| 1454 | possibility that an application might include either <EM>varargs.h</EM> or |
| 1455 | <EM>stdarg.h</EM>. These represented contrasting approaches to handling |
| 1456 | variadic argument lists. The older interface, <EM>varargs.h</EM>, used a |
| 1457 | pointer to <EM>char</EM> for variadic functions' <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter. Later, |
| 1458 | the list acquired its own standard data type, <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, defined in |
| 1459 | <EM>stdarg.h</EM>, empowering the compiler to check the types of a function |
| 1460 | call's actual parameters against the formal ones declared in its |
| 1461 | prototype. |
| 1462 | |
| 1463 | No conforming implementations of X/Open Curses require an |
| 1464 | application to include <EM>stdarg.h</EM> before <EM>curses.h</EM> because they either |
| 1465 | have allowed for a special type, or, like <EM>ncurses</EM>, they include |
| 1466 | <EM>stdarg.h</EM> themselves to provide a portable interface. |
| 1467 | |
| 1468 | |
| 1469 | </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> |
| 1470 | Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on <EM>pcurses</EM> |
| 1471 | by Pavel Curtis. |
| 1472 | |
| 1473 | |
| 1474 | </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> |
| 1475 | <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1476 | |
| 1477 | |
| 1478 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1479 | ncurses 6.5 2024-04-27 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1480 | </PRE> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1481 | <div class="nav"> |
| 1482 | <ul> |
| 1483 | <li><a href="#h2-NAME">NAME</a></li> |
| 1484 | <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> |
| 1485 | <li><a href="#h2-DESCRIPTION">DESCRIPTION</a> |
| 1486 | <ul> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1487 | <li><a href="#h3-Application-Structure">Application Structure</a></li> |
| 1488 | <li><a href="#h3-Overview">Overview</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1489 | <li><a href="#h3-Initialization">Initialization</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1490 | <li><a href="#h3-Naming-Conventions">Naming Conventions</a></li> |
| 1491 | <li><a href="#h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></li> |
| 1492 | <li><a href="#h3-Function-Name-Index">Function Name Index</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1493 | </ul> |
| 1494 | </li> |
| 1495 | <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> |
| 1496 | <li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a> |
| 1497 | <ul> |
| 1498 | <li><a href="#h3-BAUDRATE">BAUDRATE</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1499 | <li><a href="#h3-CC-_command-character_">CC (command character)</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1500 | <li><a href="#h3-COLUMNS">COLUMNS</a></li> |
| 1501 | <li><a href="#h3-ESCDELAY">ESCDELAY</a></li> |
| 1502 | <li><a href="#h3-HOME">HOME</a></li> |
| 1503 | <li><a href="#h3-LINES">LINES</a></li> |
| 1504 | <li><a href="#h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></li> |
| 1505 | <li><a href="#h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></li> |
| 1506 | <li><a href="#h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></li> |
| 1507 | <li><a href="#h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></li> |
| 1508 | <li><a href="#h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1509 | <li><a href="#h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1510 | <li><a href="#h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></li> |
| 1511 | <li><a href="#h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></li> |
| 1512 | <li><a href="#h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></li> |
| 1513 | <li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li> |
| 1514 | <li><a href="#h3-TERM">TERM</a></li> |
| 1515 | <li><a href="#h3-TERMCAP">TERMCAP</a></li> |
| 1516 | <li><a href="#h3-TERMINFO">TERMINFO</a></li> |
| 1517 | <li><a href="#h3-TERMINFO_DIRS">TERMINFO_DIRS</a></li> |
| 1518 | <li><a href="#h3-TERMPATH">TERMPATH</a></li> |
| 1519 | </ul> |
| 1520 | </li> |
| 1521 | <li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li> |
| 1522 | <li><a href="#h2-FILES">FILES</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1523 | <li><a href="#h2-NOTES">NOTES</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1524 | <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> |
| 1525 | <li><a href="#h2-PORTABILITY">PORTABILITY</a> |
| 1526 | <ul> |
| 1527 | <li><a href="#h3-Error-Checking">Error Checking</a></li> |
| 1528 | <li><a href="#h3-Padding-Differences">Padding Differences</a></li> |
| 1529 | <li><a href="#h3-Header-Files">Header Files</a></li> |
| 1530 | </ul> |
| 1531 | </li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1532 | <li><a href="#h2-AUTHORS">AUTHORS</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1533 | <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 1534 | </ul> |
| 1535 | </div> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 1536 | </BODY> |
| 1537 | </HTML> |