+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions. It states that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a
+ null pointer if unsuccessful, but does not define any er-
+ ror conditions. This implementation checks for three cas-
+ es:
+
+ <STRONG>o</STRONG> the parameter is a 7-bit US-ASCII code. This is
+ the case that X/Open Curses documented.
+
+ <STRONG>o</STRONG> the parameter is in the range 128-159, i.e., a C1
+ control code. If <STRONG>use_legacy_coding</STRONG> has been called
+ with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> 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 con-
+ trols.
+
+ X/Open Curses does not document whether <STRONG>unctrl</STRONG> can
+ be called before initializing curses. This imple-
+ mentation permits that, and returns the ``~@'',
+ etc., values in that case.
+
+ <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unc-</STRONG>
+ <STRONG>trl</STRONG> returns a null pointer.
+
+ The SVr4 documentation describes the action of <STRONG>filter</STRONG> only
+ in the vaguest terms. The description here is adapted
+ from the XSI Curses standard (which erroneously fails to
+ describe the disabling of <STRONG>cuu</STRONG>).
+
+ The strings returned by <STRONG>unctrl</STRONG> 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 print-
+ able. This implementation uses 8 bits but does not modify
+ the string to reflect locale. The <STRONG>use_legacy_coding</STRONG> func-
+ tion allows the caller to change the output of <STRONG>unctrl</STRONG>.
+
+ Likewise, the <STRONG>meta</STRONG> function allows the caller to change
+ the output of <STRONG>keyname</STRONG>, i.e., it determines whether to use
+ the `M-' prefix for ``meta'' keys (codes in the range 128
+ to 255). Both <STRONG>use_legacy_coding</STRONG> and <STRONG>meta</STRONG> succeed only af-
+ ter curses is initialized. X/Open Curses does not docu-
+ ment the treatment of codes 128 to 159. When treating
+ them as ``meta'' keys (or if <STRONG>keyname</STRONG> is called before ini-
+ tializing curses), this implementation returns strings
+ ``M-^@'', ``M-^A'', etc.
+
+ The <STRONG>keyname</STRONG> function may return the names of user-defined
+ string capabilities which are defined in the terminfo en-
+ try via the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>. This implementation auto-
+ matically 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
+ <STRONG>use_extended_names</STRONG> function controls whether this data is
+ loaded when the terminal description is read by the li-
+ brary.
+
+ The <STRONG>nofilter</STRONG> 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 ex-
+ tensions be conditioned using NCURSES_VERSION.