| .\"*************************************************************************** |
| .\" 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: |