123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- .\"***************************************************************************
- .\" Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
- .\" *
- .\" Permission is hereby granted, free of charge, to any person obtaining a *
- .\" copy of this software and associated documentation files (the *
- .\" "Software"), to deal in the Software without restriction, including *
- .\" without limitation the rights to use, copy, modify, merge, publish, *
- .\" distribute, distribute with modifications, sublicense, and/or sell *
- .\" copies of the Software, and to permit persons to whom the Software is *
- .\" furnished to do so, subject to the following conditions: *
- .\" *
- .\" The above copyright notice and this permission notice shall be included *
- .\" in all copies or substantial portions of the Software. *
- .\" *
- .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- .\" *
- .\" Except as contained in this notice, the name(s) of the above copyright *
- .\" holders shall not be used in advertising or otherwise to promote the *
- .\" sale, use or other dealings in this Software without prior written *
- .\" authorization. *
- .\"***************************************************************************
- .\"
- .\" $Id: curs_util.3x,v 1.27 2008/10/25 23:45:41 tom Exp $
- .TH curs_util 3X ""
- .na
- .hy 0
- .SH NAME
- \fBdelay_output\fR,
- \fBfilter\fR,
- \fBflushinp\fR,
- \fBgetwin\fR,
- \fBkey_name\fR,
- \fBkeyname\fR,
- \fBnofilter\fR,
- \fBputwin\fR,
- \fBunctrl\fR,
- \fBuse_env\fR,
- \fBwunctrl\fR - miscellaneous \fBcurses\fR utility routines
- .ad
- .hy
- .SH SYNOPSIS
- \fB#include <curses.h>\fR
- .sp
- \fBchar *unctrl(chtype c);\fR
- .br
- \fBwchar_t *wunctrl(cchar_t *c);\fR
- .br
- \fBchar *keyname(int c);\fR
- .br
- \fBchar *key_name(wchar_t w);\fR
- .br
- \fBvoid filter(void);\fR
- .br
- \fBvoid nofilter(void);\fR
- .br
- \fBvoid use_env(bool f);\fR
- .br
- \fBint putwin(WINDOW *win, FILE *filep);\fR
- .br
- \fBWINDOW *getwin(FILE *filep);\fR
- .br
- \fBint delay_output(int ms);\fR
- .br
- \fBint flushinp(void);\fR
- .br
- .SH DESCRIPTION
- The \fBunctrl\fR routine returns a character string which is a printable
- representation of the character \fIc\fR, ignoring attributes.
- Control characters are displayed in the \fB^\fR\fIX\fR notation.
- Printing characters are displayed as is.
- The corresponding \fBwunctrl\fR returns a printable representation of
- a wide-character.
- .PP
- The \fBkeyname\fR routine returns a character string corresponding to the key \fIc\fR:
- .RS 3
- .TP 3
- -
- Printable characters are displayed as themselves, e.g., a one-character string containing the key.
- .TP 3
- -
- Control characters are displayed in the \fB^\fR\fIX\fR notation.
- .TP 3
- -
- DEL (character 127) is displayed as \fB^?\fP.
- .TP 3
- -
- Values above 128 are either meta characters
- (if the screen has not been initialized,
- or if \fBmeta\fP has been called with a TRUE parameter),
- shown in the \fBM-\fR\fIX\fR notation,
- or are displayed as themselves.
- In the latter case, the values may not be printable;
- this follows the X/Open specification.
- .TP 3
- -
- Values above 256 may be the names of the names of function keys.
- .TP 3
- -
- Otherwise (if there is no corresponding name) the function returns null,
- to denote an error.
- X/Open also lists an "UNKNOWN KEY" return value, which some implementations
- return rather than null.
- .RE
- .LP
- The corresponding \fBkey_name\fR returns a character string corresponding
- to the wide-character value \fIw\fR.
- The two functions do not return the same set of strings;
- the latter returns null where the former would display a meta character.
- .PP
- The \fBfilter\fR routine, if used, must be called before \fBinitscr\fR or
- \fBnewterm\fR are called. The effect is that, during those calls, \fBLINES\fR
- is set to 1; the capabilities \fBclear\fR, \fBcup\fR, \fBcud\fR, \fBcud1\fR,
- \fBcuu1\fR, \fBcuu\fR, \fBvpa\fR are disabled; and the \fBhome\fR string is
- set to the value of \fBcr\fR.
- .PP
- The \fBnofilter\fP routine cancels the effect of a preceding \fBfilter\fP
- call.
- That allows the caller to initialize a screen on a different device,
- using a different value of \fB$TERM\fP.
- The limitation arises because the \fBfilter\fP routine modifies the
- in-memory copy of the terminal information.
- .PP
- The \fBuse_env\fR routine, if used, is called before \fBinitscr\fR or
- \fBnewterm\fR are called. When called with \fBFALSE\fR as an
- argument, the values of \fBlines\fR and \fBcolumns\fR specified in the
- \fIterminfo\fR database will be used, even if environment variables
- \fBLINES\fR and \fBCOLUMNS\fR (used by default) are set, or if
- \fBcurses\fR is running in a window (in which case default behavior
- would be to use the window size if \fBLINES\fR and \fBCOLUMNS\fR are
- not set).
- Note that setting \fBLINES\fR or \fBCOLUMNS\fR overrides the
- corresponding size which may be obtained from the operating system.
- .PP
- The \fBputwin\fR routine writes all data associated with window \fIwin\fR into
- the file to which \fIfilep\fR points. This information can be later retrieved
- using the \fBgetwin\fR function.
- .PP
- The \fBgetwin\fR routine reads window related data stored in the file by
- \fBputwin\fR. The routine then creates and initializes a new window using that
- data. It returns a pointer to the new window.
- .PP
- The \fBdelay_output\fR routine inserts an \fIms\fR 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\fR to perform the delay.
- .PP
- The \fBflushinp\fR routine throws away any typeahead that has been typed by the
- user and has not yet been read by the program.
- .SH RETURN VALUE
- Except for \fBflushinp\fR, routines that return an integer return \fBERR\fR
- upon failure and \fBOK\fR (SVr4 specifies only "an integer value other than
- \fBERR\fR") upon successful completion.
- .PP
- Routines that return pointers return \fBNULL\fR on error.
- .PP
- X/Open does not define any error conditions.
- In this implementation
- .RS 3
- .TP 5
- \fBflushinp\fR
- returns an error if the terminal was not initialized.
- .TP 5
- \fBmeta\fR
- returns an error if the terminal was not initialized.
- .TP 5
- \fBputwin\fP
- returns an error if the associated \fBfwrite\fP calls return an error.
- .RE
- .SH PORTABILITY
- The XSI Curses standard, Issue 4 describes these functions.
- It states that \fBunctrl\fR and \fBwunctrl\fR will return a null pointer if
- unsuccessful, but does not define any error conditions.
- This implementation checks for three cases:
- .RS
- .TP 5
- -
- the parameter is a 7-bit US-ASCII code.
- This is the case that X/Open Curses documented.
- .TP 5
- -
- the parameter is in the range 128-159, i.e., a C1 control code.
- If \fBuse_legacy_coding\fP has been called with a \fB2\fP parameter,
- \fBunctrl\fP returns the parameter, i.e., a one-character string with
- the parameter as the first character.
- Otherwise, it returns ``~@'', ``~A'', etc., analogous to ``^@'', ``^A'', C0 controls.
- .IP
- X/Open Curses does not document whether \fBunctrl\fP can be called before
- initializing curses.
- This implementation permits that,
- and returns the ``~@'', etc., values in that case.
- .TP 5
- -
- parameter values outside the 0 to 255 range.
- \fBunctrl\fP returns a null pointer.
- .RE
- .PP
- The SVr4 documentation describes the action of \fBfilter\fR only in the vaguest
- terms. The description here is adapted from the XSI Curses standard (which
- erroneously fails to describe the disabling of \fBcuu\fR).
- .PP
- The strings returned by \fBunctrl\fR in this implementation are determined
- at compile time,
- showing C1 controls from the upper-128 codes with a `~' prefix rather than `^'.
- Other implementations have different conventions.
- For example, they may show both sets of control characters with `^',
- and strip the parameter to 7 bits.
- Or they may ignore C1 controls and treat all of the upper-128 codes as
- printable.
- This implementation uses 8 bits but does not modify the string to reflect
- locale.
- The \fBuse_legacy_coding\fP function allows the caller to
- change the output of \fBunctrl\fP.
- .PP
- Likewise, the \fBmeta\fP function allows the caller to change the
- output of \fBkeyname\fP, i.e.,
- it determines whether to use the `M-' prefix
- for ``meta'' keys (codes in the range 128 to 255).
- Both \fBuse_legacy_coding\fP and \fBmeta\fP succeed only after
- curses is initialized.
- X/Open Curses does not document the treatment of codes 128 to 159.
- When treating them as ``meta'' keys
- (or if \fBkeyname\fP is called before initializing curses),
- this implementation returns strings ``M-^@'', ``M-^A'', etc.
- .PP
- 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
- option of \fBtic\fP.
- This implementation automatically assigns at run-time keycodes to
- user-defined strings which begin with "k".
- The keycodes start at KEY_MAX, but are not guaranteed to be
- 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 function controls whether this data is
- loaded when the terminal description is read by the library.
- .PP
- The \fBnofilter\fP routine is specific to ncurses.
- It was not supported on Version 7, BSD or System V implementations.
- It is recommended that any code depending on ncurses extensions
- be conditioned using NCURSES_VERSION.
- .SH SEE ALSO
- \fBlegacy_coding\fR(3X),
- \fBcurses\fR(3X),
- \fBcurs_initscr\fR(3X),
- \fBcurs_kernel\fR(3X),
- \fBcurs_scr_dump\fR(3X),
- \fBlegacy_coding\fR(3X).
- .\"#
- .\"# The following sets edit modes for GNU EMACS
- .\"# Local Variables:
- .\"# mode:nroff
- .\"# fill-column:79
- .\"# End:
|