'\" te .\" Copyright 1989 AT&T .\" Portions Copyright (c) 2001, Sun Microsystems, Inc. All Rights Reserved. .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH CURSES 3CURSES "Oct 23, 2001" .SH NAME curses \- CRT screen handling and optimization package .SH SYNOPSIS .LP .nf cc [ \fIflag\fR... ] \fIfile\fR.. .-lcurses [ \fIlibrary\fR... ] #include .fi .SH DESCRIPTION .sp .LP The \fBcurses\fR library routines give the user a terminal-independent method of updating character screens with reasonable optimization. .sp .LP The \fBcurses\fR package allows: overall screen, window and pad manipulation; output to windows and pads; reading terminal input; control over terminal and \fBcurses\fR input and output options; environment query routines; color manipulation; use of soft label keys; terminfo access; and access to low-level \fBcurses\fR routines. .sp .LP To initialize the routines, the routine \fBinitscr()\fR or \fBnewterm()\fR must be called before any of the other routines that deal with windows and screens are used. The routine \fBendwin()\fR must be called before exiting. To get character-at-a-time input without echoing (most interactive, screen oriented programs want this), the following sequence should be used: .sp .LP \fBinitscr,cbreak,noecho;\fR .sp .LP Most programs would additionally use the sequence: .sp .LP \fBnonl,intrflush(stdscr,FALSE),keypad(stdscr,TRUE);\fR .sp .LP Before a \fBcurses\fR program is run, the tab stops of the terminal should be set and its initialization strings, if defined, must be output. This can be done by executing the \fBtput init\fR command after the shell environment variable \fBTERM\fR has been exported. (See \fBterminfo\fR(5) for further details.) .sp .LP The \fBcurses\fR library permits manipulation of data structures, called \fIwindows\fR, which can be thought of as two-dimensional arrays of characters representing all or part of a \fBCRT\fR screen. A default window called \fBstdscr\fR, which is the size of the terminal screen, is supplied. Others may be created with \fBnewwin\fR(3CURSES). .sp .LP Windows are referred to by variables declared as \fBWINDOW *\fR. These data structures are manipulated with routines described on 3CURSES pages (whose names begin "curs_"). Among which the most basic routines are \fBmove\fR(3CURSES) and \fBaddch\fR(3CURSES). More general versions of these routines are included with names beginning with \fBw\fR, allowing the user to specify a window. The routines not beginning with \fBw\fR affect \fBstdscr\fR. .sp .LP After using routines to manipulate a window, \fBrefresh\fR(3CURSES) is called, telling \fBcurses\fR to make the user's \fBCRT\fR screen look like \fBstdscr\fR. The characters in a window are actually of type \fBchtype\fR, (character and attribute data) so that other information about the character may also be stored with each character. .sp .LP Special windows called \fIpads\fR may also be manipulated. These are windows which are not constrained to the size of the screen and whose contents need not be completely displayed. See \fBcurs_pad\fR(3CURSES) for more information. .sp .LP In addition to drawing characters on the screen, video attributes and colors may be included, causing the characters to show up in such modes as underlined, in reverse video, or in color on terminals that support such display enhancements. Line drawing characters may be specified to be output. On input, \fBcurses\fR is also able to translate arrow and function keys that transmit escape sequences into single values. The video attributes, line drawing characters, and input values use names, defined in <\fBcurses.h\fR>, such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR. .sp .LP If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the program is executing in a window environment, line and column information in the environment will override information read by \fIterminfo\fR. This would effect a program running in an AT&T 630 layer, for example, where the size of a screen is changeable. .sp .LP If the environment variable \fBTERMINFO\fR is defined, any program using \fBcurses\fR checks for a local terminal definition before checking in the standard place. For example, if \fBTERM\fR is set to \fBatt4424\fR, then the compiled terminal definition is found in .sp .LP \fB/usr/share/lib/terminfo/a/att4424\fR. .sp .LP (The `\fBa\fR' is copied from the first letter of \fBatt4424\fR to avoid creation of huge directories.) However, if \fBTERMINFO\fR is set to \fB$HOME/myterms\fR, \fBcurses\fR first checks .sp .LP \fB$HOME/myterms/a/att4424\fR, .sp .LP and if that fails, it then checks .sp .LP \fB/usr/share/lib/terminfo/a/att4424\fR. .sp .LP This is useful for developing experimental definitions or when write permission in \fB/usr/share/lib/terminfo\fR is not available. .sp .LP The integer variables \fBLINES\fR and \fBCOLS\fR are defined in \fB\fR and will be filled in by \fBinitscr\fR with the size of the screen. The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and \fB0\fR, respectively. .sp .LP The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR which is used for certain low-level operations like clearing and redrawing a screen containing garbage. The \fBcurscr\fR can be used in only a few routines. .SS "International Functions" .sp .LP The number of bytes and the number of columns to hold a character from the supplementary character set is locale-specific (locale category \fBLC_CTYPE\fR) and can be specified in the character class table. .sp .LP For editing, operating at the character level is entirely appropriate. For screen formatting, arbitrary movement of characters on screen is not desirable. .sp .LP Overwriting characters (\fBaddch\fR, for example) operates on a screen level. Overwriting a character by a character that requires a different number of columns may produce \fIorphaned columns\fR. These orphaned columns are filled with background characters. .sp .LP Inserting characters (\fBinsch\fR, for example) operates on a character level (that is, at the character boundaries). The specified character is inserted right before the character, regardless of which column of a character the cursor points to. Before insertion, the cursor position is adjusted to the first column of the character. .sp .LP As with inserting characters, deleting characters (\fBdelch\fR, for example) operates on a character level (that is, at the character boundaries). The character at the cursor is deleted whichever column of the character the cursor points to. Before deletion, the cursor position is adjusted to the first column of the character. .sp .LP A \fImulti-column\fR character cannot be put on the last column of a line. When such attempts are made, the last column is set to the background character. In addition, when such an operation creates orphaned columns, the orphaned columns are filled with background characters. .sp .LP Overlapping and overwriting a window follows the operation of overwriting characters around its edge. The orphaned columns, if any, are handled as in the character operations. .sp .LP The cursor is allowed to be placed anywhere in a window. If the insertion or deletion is made when the cursor points to the second or later column position of a character that holds multiple columns, the cursor is adjusted to the first column of the character before the insertion or deletion. .SS "Routine and Argument Names" .sp .LP Many \fBcurses\fR routines have two or more versions. The routines prefixed with \fBw\fR require a window argument. The routines prefixed with \fBp\fR require a pad argument. Those without a prefix generally use \fBstdscr\fR. .sp .LP The routines prefixed with \fBmv\fR require an \fIx\fR and \fIy\fR coordinate to move to before performing the appropriate action. The \fBmv\fR routines imply a call to \fBmove\fR(3CURSES) before the call to the other routine. The coordinate \fIy\fR always refers to the row (of the window), and \fIx\fR always refers to the column. The upper left-hand corner is always (0,0), not (1,1). .sp .LP The routines prefixed with \fBmvw\fR take both a window argument and \fIx\fR and \fIy\fR coordinates. The window argument is always specified before the coordinates. .sp .LP In each case, \fIwin\fR is the window affected, and \fIpad\fR is the pad affected; \fIwin\fR and \fIpad\fR are always pointers to type \fBWINDOW\fR .sp .LP Option setting routines require a Boolean flag \fIbf\fR with the value \fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR. The variables \fIch\fR and \fIattrs\fR below are always of type \fBchtype\fR. The types \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and \fBchtype\fR are defined in \fB\fR\&. The type \fBTERMINAL\fR is defined in \fB\fR\&. All other arguments are integers. .SS "Routine Name Index" .sp .LP The following table lists each \fBcurses\fR routine and the name of the manual page on which it is described. .sp .ne 2 .na \fBcurses Routine Name\fR .ad .RS 23n Manual Page Name .RE .sp .ne 2 .na \fBaddch\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBaddchnstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBaddchstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBaddnstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBaddnwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBaddstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBaddwch\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBaddwchnstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBaddwchstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBaddwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBadjcurspos\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBattroff\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBattron\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBattrset\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBbaudrate\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBbeep\fR .ad .RS 23n .BR curs_beep (3CURSES) .RE .sp .ne 2 .na \fBbkgd\fR .ad .RS 23n .BR curs_bkgd (3CURSES) .RE .sp .ne 2 .na \fBbkgdset\fR .ad .RS 23n .BR curs_bkgd (3CURSES) .RE .sp .ne 2 .na \fBborder\fR .ad .RS 23n .BR curs_border (3CURSES) .RE .sp .ne 2 .na \fBbox\fR .ad .RS 23n .BR curs_border (3CURSES) .RE .sp .ne 2 .na \fBcan_change_color\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBcbreak\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBclear\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBclearok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBclrtobot\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBclrtoeol\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBcolor_content\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBcopywin\fR .ad .RS 23n .BR curs_overlay (3CURSES) .RE .sp .ne 2 .na \fBcurs_set\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBdef_prog_mode\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBdef_shell_mode\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBdel_curterm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBdelay_output\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBdelch\fR .ad .RS 23n .BR curs_delch (3CURSES) .RE .sp .ne 2 .na \fBdeleteln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBdelscreen\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBdelwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBderwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBdoupdate\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBdupwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBecho\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBechochar\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBechowchar\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBendwin\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBerase\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBerasechar\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBfilter\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBflash\fR .ad .RS 23n .BR curs_beep (3CURSES) .RE .sp .ne 2 .na \fBflushinp\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBgetbegyx\fR .ad .RS 23n .BR curs_getyx (3CURSES) .RE .sp .ne 2 .na \fBgetch\fR .ad .RS 23n .BR curs_getch (3CURSES) .RE .sp .ne 2 .na \fBgetmaxyx\fR .ad .RS 23n .BR curs_getyx (3CURSES) .RE .sp .ne 2 .na \fBgetnwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBgetparyx\fR .ad .RS 23n .BR curs_getyx (3CURSES) .RE .sp .ne 2 .na \fBgetstr\fR .ad .RS 23n .BR curs_getstr (3CURSES) .RE .sp .ne 2 .na \fBgetsyx\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBgetwch\fR .ad .RS 23n .BR curs_getwch (3CURSES) .RE .sp .ne 2 .na \fBgetwin\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBgetwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBgetyx\fR .ad .RS 23n .BR curs_getyx (3CURSES) .RE .sp .ne 2 .na \fBhalfdelay\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBhas_colors\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBhas_ic\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBhas_il\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBidcok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBidlok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBimmedok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBinch\fR .ad .RS 23n .BR curs_inch (3CURSES) .RE .sp .ne 2 .na \fBinchnstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBinchstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBinit_color\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBinit_pair\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBinitscr\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBinnstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBinnwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBinsch\fR .ad .RS 23n .BR curs_insch (3CURSES) .RE .sp .ne 2 .na \fBinsdelln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBinsertln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBinsnstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBinsnwstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBinsstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBinstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBinswch\fR .ad .RS 23n .BR curs_inswch (3CURSES) .RE .sp .ne 2 .na \fBinswstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBintrflush\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBinwch\fR .ad .RS 23n .BR curs_inwch (3CURSES) .RE .sp .ne 2 .na \fBinwchnstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBinwchstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBinwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBis_linetouched\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBis_wintouched\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBisendwin\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBkeyname\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBkeypad\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBkillchar\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBleaveok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBlongname\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBmeta\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBmove\fR .ad .RS 23n .BR curs_move (3CURSES) .RE .sp .ne 2 .na \fBmovenextch\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBmoveprevch\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBmvaddch\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBmvaddchnstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddchstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddnstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddnwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddwch\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBmvaddwchnstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddwchstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvaddwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBmvcur\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBmvdelch\fR .ad .RS 23n .BR curs_delch (3CURSES) .RE .sp .ne 2 .na \fBmvderwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBmvgetch\fR .ad .RS 23n .BR curs_getch (3CURSES) .RE .sp .ne 2 .na \fBmvgetnwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBmvgetstr\fR .ad .RS 23n .BR curs_getstr (3CURSES) .RE .sp .ne 2 .na \fBmvgetwch\fR .ad .RS 23n .BR curs_getwch (3CURSES) .RE .sp .ne 2 .na \fBmvgetwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBmvinch\fR .ad .RS 23n .BR curs_inch (3CURSES) .RE .sp .ne 2 .na \fBmvinchnstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBmvinchstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBmvinnstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBmvinnwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBmvinsch\fR .ad .RS 23n .BR curs_insch (3CURSES) .RE .sp .ne 2 .na \fBmvinsnstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBmvinsnwstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBmvinsstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBmvinstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBmvinswch\fR .ad .RS 23n .BR curs_inswch (3CURSES) .RE .sp .ne 2 .na \fBmvinswstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBmvinwch\fR .ad .RS 23n .BR curs_inwch (3CURSES) .RE .sp .ne 2 .na \fBmvinwchnstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvinwchstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvinwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBmvprintw\fR .ad .RS 23n .BR curs_printw (3CURSES) .RE .sp .ne 2 .na \fBmvscanw\fR .ad .RS 23n .BR curs_scanw (3CURSES) .RE .sp .ne 2 .na \fBmvwaddch\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBmvwaddchnstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddchstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddnstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddnwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddwch\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBmvwaddwchnstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddwchstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwaddwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwdelch\fR .ad .RS 23n .BR curs_delch (3CURSES) .RE .sp .ne 2 .na \fBmvwgetch\fR .ad .RS 23n .BR curs_getch (3CURSES) .RE .sp .ne 2 .na \fBmvwgetnwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwgetstr\fR .ad .RS 23n .BR curs_getstr (3CURSES) .RE .sp .ne 2 .na \fBmvwgetwch\fR .ad .RS 23n .BR curs_getwch (3CURSES) .RE .sp .ne 2 .na \fBmvwgetwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBmvwinch\fR .ad .RS 23n .BR curs_inch (3CURSES) .RE .sp .ne 2 .na \fBmvwinchnstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinchstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinnstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBmvwinnwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinsch\fR .ad .RS 23n .BR curs_insch (3CURSES) .RE .sp .ne 2 .na \fBmvwinsnstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinsstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBmvwinswch\fR .ad .RS 23n .BR curs_inswch (3CURSES) .RE .sp .ne 2 .na \fBmvwinswstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinwch\fR .ad .RS 23n .BR curs_inwch (3CURSES) .RE .sp .ne 2 .na \fBmvwinwchnstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinwchstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBmvwinwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBmvwprintw\fR .ad .RS 23n .BR curs_printw (3CURSES) .RE .sp .ne 2 .na \fBmvwscanw\fR .ad .RS 23n .BR curs_scanw (3CURSES) .RE .sp .ne 2 .na \fBnapms\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBnewpad\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBnewterm\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBnewwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBnl\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBnocbreak\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBnodelay\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBnoecho\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBnonl\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBnoqiflush\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBnoraw\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBnotimeout\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBoverlay\fR .ad .RS 23n .BR curs_overlay (3CURSES) .RE .sp .ne 2 .na \fBoverwrite\fR .ad .RS 23n .BR curs_overlay (3CURSES) .RE .sp .ne 2 .na \fBpair_content\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBpechochar\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBpechowchar\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBpnoutrefresh\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBprefresh\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBprintw\fR .ad .RS 23n .BR curs_printw (3CURSES) .RE .sp .ne 2 .na \fBputp\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBputwin\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBqiflush\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBraw\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBredrawwin\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBrefresh\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBreset_prog_mode\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBreset_shell_mode\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBresetty\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBrestartterm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBripoffline\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBsavetty\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBscanw\fR .ad .RS 23n .BR curs_scanw (3CURSES) .RE .sp .ne 2 .na \fBscr_dump\fR .ad .RS 23n .BR curs_scr_dump (3CURSES) .RE .sp .ne 2 .na \fBscr_init\fR .ad .RS 23n .BR curs_scr_dump (3CURSES) .RE .sp .ne 2 .na \fBscr_restore\fR .ad .RS 23n .BR curs_scr_dump (3CURSES) .RE .sp .ne 2 .na \fBscr_set\fR .ad .RS 23n .BR curs_scr_dump (3CURSES) .RE .sp .ne 2 .na \fBscroll\fR .ad .RS 23n .BR curs_scroll (3CURSES) .RE .sp .ne 2 .na \fBscrollok\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBset_curterm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBset_term\fR .ad .RS 23n .BR curs_initscr (3CURSES) .RE .sp .ne 2 .na \fBsetscrreg\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBsetsyx\fR .ad .RS 23n .BR curs_kernel (3CURSES) .RE .sp .ne 2 .na \fBsetterm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBsetupterm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBslk_attroff\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_attron\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_attrset\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_clear\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_init\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_label\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_noutrefresh\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_refresh\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_restore\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_set\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBslk_touch\fR .ad .RS 23n .BR curs_slk (3CURSES) .RE .sp .ne 2 .na \fBsrcl\fR .ad .RS 23n .BR curs_scroll (3CURSES) .RE .sp .ne 2 .na \fBstandend\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBstandout\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBstart_color\fR .ad .RS 23n .BR curs_color (3CURSES) .RE .sp .ne 2 .na \fBsubpad\fR .ad .RS 23n .BR curs_pad (3CURSES) .RE .sp .ne 2 .na \fBsubwin\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBsyncok\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBtermattrs\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBtermname\fR .ad .RS 23n .BR curs_termattrs (3CURSES) .RE .sp .ne 2 .na \fBtgetent\fR .ad .RS 23n .BR curs_termcap (3CURSES) .RE .sp .ne 2 .na \fBtgetflag\fR .ad .RS 23n .BR curs_termcap (3CURSES) .RE .sp .ne 2 .na \fBtgetnum\fR .ad .RS 23n .BR curs_termcap (3CURSES) .RE .sp .ne 2 .na \fBtgetstr\fR .ad .RS 23n .BR curs_termcap (3CURSES) .RE .sp .ne 2 .na \fBtgoto\fR .ad .RS 23n .BR curs_termcap (3CURSES) .RE .sp .ne 2 .na \fBtigetflag\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBtigetnum\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBtigetstr\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBtimeout\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBtouchline\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBtouchwin\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBtparm\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBtputs\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBtypeahead\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBunctrl\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBungetch\fR .ad .RS 23n .BR curs_getch (3CURSES) .RE .sp .ne 2 .na \fBungetwch\fR .ad .RS 23n .BR curs_getwch (3CURSES) .RE .sp .ne 2 .na \fBuntouchwin\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBuse_env\fR .ad .RS 23n .BR curs_util (3CURSES) .RE .sp .ne 2 .na \fBvidattr\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBvidputs\fR .ad .RS 23n .BR curs_terminfo (3CURSES) .RE .sp .ne 2 .na \fBvwprintw\fR .ad .RS 23n .BR curs_printw (3CURSES) .RE .sp .ne 2 .na \fBvwscanw\fR .ad .RS 23n .BR curs_scanw (3CURSES) .RE .sp .ne 2 .na \fBwaddch\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBwaddchnstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBwaddchstr\fR .ad .RS 23n .BR curs_addchstr (3CURSES) .RE .sp .ne 2 .na \fBwaddnstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBwaddnwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBwaddstr\fR .ad .RS 23n .BR curs_addstr (3CURSES) .RE .sp .ne 2 .na \fBwaddwch\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBwaddwchnstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBwaddwchstr\fR .ad .RS 23n .BR curs_addwchstr (3CURSES) .RE .sp .ne 2 .na \fBwaddwstr\fR .ad .RS 23n .BR curs_addwstr (3CURSES) .RE .sp .ne 2 .na \fBwadjcurspos\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBwattroff\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBwattron\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBwattrset\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBwbkgd\fR .ad .RS 23n .BR curs_bkgd (3CURSES) .RE .sp .ne 2 .na \fBwbkgdset\fR .ad .RS 23n .BR curs_bkgd (3CURSES) .RE .sp .ne 2 .na \fBwborder\fR .ad .RS 23n .BR curs_border (3CURSES) .RE .sp .ne 2 .na \fBwclear\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBwclrtobot\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBwclrtoeol\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBwcursyncup\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBwdelch\fR .ad .RS 23n .BR curs_delch (3CURSES) .RE .sp .ne 2 .na \fBwdeleteln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBwechochar\fR .ad .RS 23n .BR curs_addch (3CURSES) .RE .sp .ne 2 .na \fBwechowchar\fR .ad .RS 23n .BR curs_addwch (3CURSES) .RE .sp .ne 2 .na \fBwerase\fR .ad .RS 23n .BR curs_clear (3CURSES) .RE .sp .ne 2 .na \fBwgetch\fR .ad .RS 23n .BR curs_getch (3CURSES) .RE .sp .ne 2 .na \fBwgetnstr\fR .ad .RS 23n .BR curs_getstr (3CURSES) .RE .sp .ne 2 .na \fBwgetnwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBwgetstr\fR .ad .RS 23n .BR curs_getstr (3CURSES) .RE .sp .ne 2 .na \fBwgetwch\fR .ad .RS 23n .BR curs_getwch (3CURSES) .RE .sp .ne 2 .na \fBwgetwstr\fR .ad .RS 23n .BR curs_getwstr (3CURSES) .RE .sp .ne 2 .na \fBwhline\fR .ad .RS 23n .BR curs_border (3CURSES) .RE .sp .ne 2 .na \fBwinch\fR .ad .RS 23n .BR curs_inch (3CURSES) .RE .sp .ne 2 .na \fBwinchnstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBwinchstr\fR .ad .RS 23n .BR curs_inchstr (3CURSES) .RE .sp .ne 2 .na \fBwinnstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBwinnwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBwinsch\fR .ad .RS 23n .BR curs_insch (3CURSES) .RE .sp .ne 2 .na \fBwinsdelln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBwinsertln\fR .ad .RS 23n .BR curs_deleteln (3CURSES) .RE .sp .ne 2 .na \fBwinsnstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBwinsnwstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBwinsstr\fR .ad .RS 23n .BR curs_insstr (3CURSES) .RE .sp .ne 2 .na \fBwinstr\fR .ad .RS 23n .BR curs_instr (3CURSES) .RE .sp .ne 2 .na \fBwinswch\fR .ad .RS 23n .BR curs_inswch (3CURSES) .RE .sp .ne 2 .na \fBwinswstr\fR .ad .RS 23n .BR curs_inswstr (3CURSES) .RE .sp .ne 2 .na \fBwinwch\fR .ad .RS 23n .BR curs_inwch (3CURSES) .RE .sp .ne 2 .na \fBwinwchnstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBwinwchstr\fR .ad .RS 23n .BR curs_inwchstr (3CURSES) .RE .sp .ne 2 .na \fBwinwstr\fR .ad .RS 23n .BR curs_inwstr (3CURSES) .RE .sp .ne 2 .na \fBwmove\fR .ad .RS 23n .BR curs_move (3CURSES) .RE .sp .ne 2 .na \fBwmovenextch\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBwmoveprevch\fR .ad .RS 23n .BR curs_alecompat (3CURSES) .RE .sp .ne 2 .na \fBwnoutrefresh\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBwprintw\fR .ad .RS 23n .BR curs_printw (3CURSES) .RE .sp .ne 2 .na \fBwredrawln\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBwrefresh\fR .ad .RS 23n .BR curs_refresh (3CURSES) .RE .sp .ne 2 .na \fBwscanw\fR .ad .RS 23n .BR curs_scanw (3CURSES) .RE .sp .ne 2 .na \fBwscrl\fR .ad .RS 23n .BR curs_scroll (3CURSES) .RE .sp .ne 2 .na \fBwsetscrreg\fR .ad .RS 23n .BR curs_outopts (3CURSES) .RE .sp .ne 2 .na \fBwstandend\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBwstandout\fR .ad .RS 23n .BR curs_attr (3CURSES) .RE .sp .ne 2 .na \fBwsyncdown\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBwsyncup\fR .ad .RS 23n .BR curs_window (3CURSES) .RE .sp .ne 2 .na \fBwtimeout\fR .ad .RS 23n .BR curs_inopts (3CURSES) .RE .sp .ne 2 .na \fBwtouchln\fR .ad .RS 23n .BR curs_touch (3CURSES) .RE .sp .ne 2 .na \fBwvline\fR .ad .RS 23n .BR curs_border (3CURSES) .RE .SH RETURN VALUES .sp .LP Routines that return an integer return \fBERR\fR upon failure and an integer value other than \fBERR\fR upon successful completion, unless otherwise noted in the routine descriptions. .sp .LP All macros return the value of the \fBw\fR version, except \fBsetscrreg()\fR, \fBwsetscrreg()\fR, \fBgetyx()\fR, \fBgetbegyx()\fR, and \fBgetmaxyx()\fR. The return values of \fBsetscrreg()\fR, \fBwsetscrreg()\fR, \fBgetyx()\fR, \fBgetbegyx()\fR, and \fBgetmaxyx()\fR are undefined (that is, these should not be used as the right-hand side of assignment statements). .sp .LP Routines that return pointers return \fINULL\fR on error. .SH ATTRIBUTES .sp .LP See \fBattributes\fR(7) for descriptions of the following attributes: .sp .sp .TS box; c | c l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE _ MT-Level Unsafe .TE .SH SEE ALSO .sp .LP .BR libcurses (3LIB), .BR curses (3XCURSES), .BR libcurses (3XCURSES), .BR terminfo (5), .BR attributes (7) .SH NOTES .sp .LP The header <\fBcurses.h\fR> automatically includes the headers <\fBstdio.h\fR> and <\fBunctrl.h\fR>.