X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=man%2Fcurs_util.3x;h=ac92fa8af40556189c079e29ef0e3985f32a7ae6;hb=fc11bff62abb32a3e7724180a94c1068c148ea6c;hp=dfa78951e3e297cbaa5210187199b1e80215ecbf;hpb=894a177fd5228cdbe790bd1dc9435bd435c29681;p=ncurses.git diff --git a/man/curs_util.3x b/man/curs_util.3x index dfa78951..ac92fa8a 100644 --- a/man/curs_util.3x +++ b/man/curs_util.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright 2018-2022,2023 Thomas E. Dickey * +.\" Copyright 2018-2023,2024 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * @@ -28,8 +28,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_util.3x,v 1.86 2023/10/07 21:19:07 tom Exp $ -.TH curs_util 3X 2023-10-07 "ncurses 6.4" "Library calls" +.\" $Id: curs_util.3x,v 1.102 2024/05/11 20:39:53 tom Exp $ +.TH curs_util 3X 2024-05-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq @@ -63,15 +63,15 @@ miscellaneous \fIcurses\fR utility routines .nf \fB#include .PP -\fBconst char *unctrl(chtype \fIc\fP); -\fBwchar_t *wunctrl(cchar_t *\fIc\fP); +\fBconst char *unctrl(chtype \fIch\fP); +\fBwchar_t *wunctrl(cchar_t *\fIwch\fP); .PP \fBconst char *keyname(int \fIc\fP); -\fBconst char *key_name(wchar_t \fIw\fP); +\fBconst char *key_name(wchar_t \fIwc\fP); .PP \fBvoid filter(void); .PP -\fBvoid use_env(bool \fIf\fP); +\fBvoid use_env(bool \fIbf\fP); .PP \fBint putwin(WINDOW *\fIwin\fP, FILE *\fIfilep\fP); \fBWINDOW *getwin(FILE *\fIfilep\fP); @@ -81,12 +81,12 @@ miscellaneous \fIcurses\fR utility routines .PP \fI/* extensions */ \fBvoid nofilter(void); -\fBvoid use_tioctl(bool \fIf\fP); +\fBvoid use_tioctl(bool \fIbf\fP); .fi .SH DESCRIPTION .SS unctrl The \fBunctrl\fP routine returns a character string which is a printable -representation of the character \fIc\fP: +representation of the character \fIch\fP: .bP Printable characters are displayed as themselves, e.g., a one-character string containing the key. @@ -106,11 +106,11 @@ In the latter case, the values may not be printable; this follows the X/Open specification. .PP The corresponding \fBwunctrl\fP returns a printable representation of -a complex character \fIc\fP. +a complex character \fIwch\fP. .PP In both \fBunctrl\fP and \fBwunctrl\fP the attributes and color associated with the character parameter are ignored. -.SS keyname/key_name +.SS "keyname, key_name" The \fBkeyname\fP routine returns a character string corresponding to the key \fIc\fP. Key codes are different from character codes. @@ -135,7 +135,7 @@ do not return the same set of strings: \fBkeyname\fP returns null where \fBkey_name\fP would display a meta character. .bP \fBkey_name\fP does not return the name of a function key. -.SS filter/nofilter +.SS "filter, nofilter" The \fBfilter\fP routine, if used, must be called before \fBinitscr\fP or \fBnewterm\fP are called. Calling \fBfilter\fP causes these changes in initialization: @@ -167,10 +167,11 @@ The \fBuse_env\fP routine, if used, should be called before \fBinitscr\fP or \fBnewterm\fP are called (because those compute the screen size). -It modifies the way \fIncurses\fP treats environment variables +It modifies the way \fI\%ncurses\fP treats environment variables when determining the screen size. .bP -Normally \fIncurses\fP looks first at the terminal database for the screen size. +Normally \fI\%ncurses\fP looks first at the terminal database for the +screen size. .IP If \fBuse_env\fP was called with \fBFALSE\fP for parameter, it stops here unless @@ -181,29 +182,32 @@ If successful, it overrides the values from the terminal database. .bP Finally (unless \fBuse_env\fP was called with \fBFALSE\fP parameter), -\fBncurses\fP examines the \fBLINES\fP or \fBCOLUMNS\fP environment variables, +\fI\%ncurses\fP examines the \fILINES\fP or \fI\%COLUMNS\fP environment +variables, using a value in those to override the results from the operating system or terminal database. .IP -\fBNcurses\fP also updates the screen size in response to \fBSIGWINCH\fP, -unless overridden by the \fBLINES\fP or \fBCOLUMNS\fP environment variables, +\fI\%curses\fP also updates the screen size in response to +\fBSIGWINCH\fP, +unless overridden by the \fILINES\fP or \fI\%COLUMNS\fP environment +variables, .SS use_tioctl The \fBuse_tioctl\fP routine, if used, should be called before \fBinitscr\fP or \fBnewterm\fP are called (because those compute the screen size). After \fBuse_tioctl\fP is called with \fBTRUE\fP as an argument, -\fBncurses\fP modifies the last step in its computation +\fI\%ncurses\fP modifies the last step in its computation of screen size as follows: .bP -checks if the \fBLINES\fP and \fBCOLUMNS\fP environment variables +checks if the \fILINES\fP and \fI\%COLUMNS\fP environment variables are set to a number greater than zero. .bP -for each, \fBncurses\fP updates the corresponding environment variable +for each, \fI\%ncurses\fP updates the corresponding environment variable with the value that it has obtained via operating system call or from the terminal database. .bP -\fBncurses\fP re-fetches the value of the environment variables so that -it is still the environment variables which set the screen size. +\fI\%ncurses\fP re-fetches the value of the environment variables so +that it is still the environment variables which set the screen size. .PP The \fB\%use_env\fP and \fB\%use_tioctl\fP routines combine as follows. .IP @@ -213,22 +217,21 @@ lB lB lx. use_env use_tioctl Summary _ TRUE FALSE T{ -This is the default behavior. -\fIncurses\fP uses operating system calls -unless overridden by \fBLINES\fP or \fB\%COLUMNS\fP environment +\fI\%ncurses\fP uses operating system calls +unless overridden by \fILINES\fP or \fI\%COLUMNS\fP environment variables; default. T} TRUE TRUE T{ -\fIncurses\fP updates \fBLINES\fP and \fB\%COLUMNS\fP based on operating -system calls. +\fI\%ncurses\fP updates \fILINES\fP and \fI\%COLUMNS\fP based on +operating system calls. T} FALSE TRUE T{ -\fIncurses\fP ignores \fBLINES\fP and \fB\%COLUMNS\fP, +\fI\%ncurses\fP ignores \fILINES\fP and \fI\%COLUMNS\fP, using operating system calls to obtain size. T} .TE -.SS putwin/getwin +.SS "putwin, getwin" The \fBputwin\fP routine writes all data associated with window (or pad) \fIwin\fP into the file to which \fIfilep\fP points. @@ -242,10 +245,10 @@ data. It returns a pointer to the new window. There are a few caveats: .bP -the data written is a copy of the \fBWINDOW\fP structure, +the data written is a copy of the \fI\%WINDOW\fP structure, and its associated character cells. -The format differs between the wide-character (\fBncursesw\fP) and -non-wide (\fBncurses\fP) libraries. +The format differs between the wide-character (\fI\%ncursesw\fP) and +non-wide (\fI\%ncurses\fP) libraries. You can transfer data between the two, however. .bP the retrieved window is always created as a top-level window (or pad), @@ -259,10 +262,21 @@ they will not be colored when the window is refreshed. .SS delay_output The \fBdelay_output\fP routine inserts an \fIms\fP millisecond pause in output. -This routine should not be used extensively because -padding characters are used rather than a CPU pause. -If no padding character is specified, -this uses \fBnapms\fP to perform the delay. +Employ this function judiciously when terminal output uses padding, +because \fI\%ncurses\fP transmits null characters +(consuming CPU and I/O resources) +instead of sleeping and requesting resumption from the operating system. +Padding is used unless: +.bP +the terminal description has \fBnpc\fP (\fBno_pad_char\fP) capability, or +.bP +the environment variable \fB\%NCURSES_NO_PADDING\fP is set. +.PP +If padding is not in use, +\fI\%ncurses\fP uses \fBnapms\fP to perform the delay. +If the value of \fIms\fP exceeds 30,000 +(thirty seconds), +it is capped at that value. .SS flushinp The \fBflushinp\fP routine throws away any typeahead that has been typed by the user and has not yet been read by the program. @@ -273,7 +287,7 @@ upon failure and \fBOK\fP (SVr4 specifies only "an integer value other than .PP Routines that return pointers return \fBNULL\fP on error. .PP -X/Open does not define any error conditions. +X/Open Curses does not specify any error conditions. In this implementation .RS 3 .TP 5 @@ -287,8 +301,19 @@ returns an error if the associated \fBfwrite\fP calls return an error. .SS filter The SVr4 documentation describes the action of \fBfilter\fP only in the vaguest terms. -The description here is adapted from the XSI Curses standard (which +The description here is adapted from X/Open Curses (which erroneously fails to describe the disabling of \fBcuu\fP). +.SS "delay_output padding" +The limitation to 30 seconds +and the use of \fBnapms\fP +differ from other implementations. +.bP +SVr4 curses does not delay if no padding character is available. +.bP +NetBSD curses uses \fBnapms\fP when no padding character is available, +but does not take timing into account when using the padding character. +.PP +Neither limits the delay. .SS keyname The \fBkeyname\fP function may return the names of user-defined string capabilities which are defined in the terminfo entry via the \fB\-x\fP @@ -300,12 +325,13 @@ the same value for different runs because user-defined codes are merged from all terminal descriptions which have been loaded. The \fBuse_extended_names\fP(3X) function controls whether this data is loaded when the terminal description is read by the library. -.SS nofilter/use_tioctl -The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to \fBncurses\fP. +.SS "nofilter, use_tioctl" +The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to +\fI\%ncurses\fP. They were not supported on Version 7, BSD or System V implementations. -It is recommended that any code depending on \fBncurses\fP extensions +It is recommended that any code depending on \fI\%ncurses\fP extensions be conditioned using \fBNCURSES_VERSION\fP. -.SS putwin/getwin file-format +.SS "putwin/getwin file-format" The \fBputwin\fP and \fBgetwin\fP functions have several issues with portability: .bP @@ -320,9 +346,10 @@ the University of California, Berkeley (in 1982) and were later (in 1988) incorporated into SVr4. Oddly, there are no such functions in the 4.3BSD curses sources. .bP -Most implementations simply dump the binary \fBWINDOW\fP structure to the file. +Most implementations simply dump the binary \fI\%WINDOW\fP structure +to the file. These include SVr4 curses, NetBSD and PDCurses, -as well as older \fBncurses\fP versions. +as well as older \fI\%ncurses\fP versions. This implementation (as well as the X/Open variant of Solaris curses, dated 1995) uses textual dumps. @@ -335,8 +362,8 @@ these functions. Doing that can run into problems mixing block- and buffered-I/O. This implementation reduces the problem on writes by flushing the output. However, reading from a file written using mixed schemes may not be successful. -.SS unctrl/wunctrl -The XSI Curses standard, Issue 4 describes these functions. +.SS "unctrl, wunctrl" +X/Open Curses, Issue 4 describes these functions. It states that \fBunctrl\fP and \fBwunctrl\fP will return a null pointer if unsuccessful, but does not define any error conditions. This implementation checks for three cases: @@ -385,12 +412,12 @@ When treating them as \*(``meta\*('' keys this implementation returns strings \*(``M\-^@\*('', \*(``M\-^A\*('', etc. .PP X/Open Curses documents \fBunctrl\fP as declared in \fB\fP, -which \fBncurses\fP does. -However, \fBncurses\fP' \fB\fP includes \fB\fP, +which \fI\%ncurses\fP does. +However, \fI\%ncurses\fP' \fB\fP includes \fB\fP, matching the behavior of SVr4 curses. Other implementations may not do that. -.SS use_env/use_tioctl -If \fBncurses\fP is configured to provide the sp-functions extension, +.SS "use_env, use_tioctl" +If \fI\%ncurses\fP is configured to provide the sp-functions extension, the state of \fBuse_env\fP and \fBuse_tioctl\fP may be updated before creating each \fIscreen\fP rather than once only (\fBcurs_sp_funcs\fP(3X)).