1curs_util(3X)                                                    curs_util(3X)
2
3
4

NAME

6       delay_output, filter, flushinp, getwin, key_name, keyname, nofilter,
7       putwin, unctrl, use_env, wunctrl - miscellaneous curses utility
8       routines
9

SYNOPSIS

11       #include <curses.h>
12
13       char *unctrl(chtype c);
14       wchar_t *wunctrl(cchar_t *c);
15       char *keyname(int c);
16       char *key_name(wchar_t w);
17       void filter(void);
18       void nofilter(void);
19       void use_env(bool f);
20       int putwin(WINDOW *win, FILE *filep);
21       WINDOW *getwin(FILE *filep);
22       int delay_output(int ms);
23       int flushinp(void);
24

DESCRIPTION

26       The unctrl routine returns a character string which is a printable rep‐
27       resentation of the character c, ignoring attributes.   Control  charac‐
28       ters  are  displayed  in the ^X notation.  Printing characters are dis‐
29       played as is.  The corresponding wunctrl returns a printable  represen‐
30       tation of a wide-character.
31
32       The keyname routine returns a character string corresponding to the key
33       c:
34
35          -  Printable characters are displayed as themselves,  e.g.,  a  one-
36             character string containing the key.
37
38          -  Control characters are displayed in the ^X notation.
39
40          -  DEL (character 127) is displayed as ^?.
41
42          -  Values  above  128  are either meta characters (if the screen has
43             not been initialized, or if meta has been called with a TRUE  pa‐
44             rameter),  shown  in  the M-X notation, or are displayed as them‐
45             selves.  In the latter case, the values  may  not  be  printable;
46             this follows the X/Open specification.
47
48          -  Values above 256 may be the names of the names of function keys.
49
50          -  Otherwise  (if  there  is no corresponding name) the function re‐
51             turns null, to denote an error.  X/Open also  lists  an  "UNKNOWN
52             KEY"  return value, which some implementations return rather than
53             null.
54
55       The corresponding key_name returns a character string corresponding  to
56       the  wide-character  value w.  The two functions do not return the same
57       set of strings; the latter returns null where the former would  display
58       a meta character.
59
60       The  filter  routine, if used, must be called before initscr or newterm
61       are called.  The effect is that, during those calls, LINES is set to 1;
62       the  capabilities  clear,  cup, cud, cud1, cuu1, cuu, vpa are disabled;
63       and the home string is set to the value of cr.
64
65       The nofilter routine cancels the effect of  a  preceding  filter  call.
66       That  allows  the  caller to initialize a screen on a different device,
67       using a different value of $TERM.  The limitation  arises  because  the
68       filter routine modifies the in-memory copy of the terminal information.
69
70       The  use_env  routine, if used, is called before initscr or newterm are
71       called.  When called with FALSE as an argument, the values of lines and
72       columns  specified in the terminfo database will be used, even if envi‐
73       ronment variables LINES and COLUMNS (used by default) are  set,  or  if
74       curses  is running in a window (in which case default behavior would be
75       to use the window size if LINES and COLUMNS are not  set).   Note  that
76       setting  LINES or COLUMNS overrides the corresponding size which may be
77       obtained from the operating system.
78
79       The putwin routine writes all data associated with window win into  the
80       file  to  which  filep points.  This information can be later retrieved
81       using the getwin function.
82
83       The getwin routine reads window related data  stored  in  the  file  by
84       putwin.   The  routine  then creates and initializes a new window using
85       that data.  It returns a pointer to the new window.
86
87       The delay_output routine inserts an ms  millisecond  pause  in  output.
88       This  routine should not be used extensively because padding characters
89       are used rather than a CPU pause.  If no padding  character  is  speci‐
90       fied, this uses napms to perform the delay.
91
92       The  flushinp  routine throws away any typeahead that has been typed by
93       the user and has not yet been read by the program.
94

RETURN VALUE

96       Except for flushinp, routines that return an integer  return  ERR  upon
97       failure  and OK (SVr4 specifies only "an integer value other than ERR")
98       upon successful completion.
99
100       Routines that return pointers return NULL on error.
101
102       X/Open does not define any error conditions.  In this implementation
103
104          flushinp
105               returns an error if the terminal was not initialized.
106
107          meta returns an error if the terminal was not initialized.
108
109          putwin
110               returns an error if the associated fwrite calls return  an  er‐
111               ror.
112

PORTABILITY

114       The  XSI Curses standard, Issue 4 describes these functions.  It states
115       that unctrl and wunctrl will return a null pointer if unsuccessful, but
116       does  not  define any error conditions.  This implementation checks for
117       three cases:
118
119              -    the parameter is a 7-bit US-ASCII code.  This is  the  case
120                   that X/Open Curses documented.
121
122              -    the  parameter  is in the range 128-159, i.e., a C1 control
123                   code.  If use_legacy_coding has been called with a 2 param‐
124                   eter,  unctrl  returns the parameter, i.e., a one-character
125                   string with the parameter as the first  character.   Other‐
126                   wise, it returns ``~@'', ``~A'', etc., analogous to ``^@'',
127                   ``^A'', C0 controls.
128
129                   X/Open Curses does  not  document  whether  unctrl  can  be
130                   called  before  initializing  curses.   This implementation
131                   permits that, and returns the ``~@'', etc., values in  that
132                   case.
133
134              -    parameter  values  outside  the 0 to 255 range.  unctrl re‐
135                   turns a null pointer.
136
137       The SVr4 documentation describes the  action  of  filter  only  in  the
138       vaguest  terms.   The  description  here is adapted from the XSI Curses
139       standard (which erroneously fails to describe the disabling of cuu).
140
141       The strings returned by unctrl in this implementation are determined at
142       compile  time,  showing C1 controls from the upper-128 codes with a `~'
143       prefix rather than `^'.  Other implementations have  different  conven‐
144       tions.  For example, they may show both sets of control characters with
145       `^', and strip the parameter to 7 bits.  Or they may ignore C1 controls
146       and treat all of the upper-128 codes as printable.  This implementation
147       uses 8 bits but does not modify the  string  to  reflect  locale.   The
148       use_legacy_coding  function  allows  the caller to change the output of
149       unctrl.
150
151       Likewise, the meta function allows the caller to change the  output  of
152       keyname,  i.e.,  it  determines  whether  to  use  the  `M-' prefix for
153       ``meta'' keys (codes in the range 128 to 255).  Both  use_legacy_coding
154       and  meta succeed only after curses is initialized.  X/Open Curses does
155       not document the treatment of codes 128 to 159.  When treating them  as
156       ``meta''  keys  (or  if  keyname is called before initializing curses),
157       this implementation returns strings ``M-^@'', ``M-^A'', etc.
158
159       The keyname function may return the names of user-defined string  capa‐
160       bilities  which  are defined in the terminfo entry via the -x option of
161       tic.  This implementation automatically assigns at run-time keycodes to
162       user-defined  strings  which  begin  with  "k".   The keycodes start at
163       KEY_MAX, but are not guaranteed to be the same value for different runs
164       because  user-defined  codes  are merged from all terminal descriptions
165       which have  been  loaded.   The  use_extended_names  function  controls
166       whether  this  data  is loaded when the terminal description is read by
167       the library.
168
169       The nofilter routine is specific to ncurses.  It was not  supported  on
170       Version 7, BSD or System V implementations.  It is recommended that any
171       code depending on ncurses extensions be conditioned using  NCURSES_VER‐
172       SION.
173

SEE ALSO

175       legacy_coding(3X),   curses(3X),   curs_initscr(3X),   curs_kernel(3X),
176       curs_scr_dump(3X), legacy_coding(3X).
177
178
179
180                                                                 curs_util(3X)
Impressum