+</PRE>
+<H3><a name="h3-unctrl_wunctrl">unctrl/wunctrl</a></H3><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 con-
+ trol 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 controls.
+
+ X/Open Curses does not document whether <STRONG>unctrl</STRONG> can be
+ called before initializing curses. This implementa-
+ tion permits that, and returns the "~@", etc., values
+ in that case.
+
+ <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unctrl</STRONG>
+ returns a null pointer.
+
+ 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 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 <STRONG>keyname</STRONG> is called before initializing
+ curses), this implementation returns strings "M-^@",
+ "M-^A", etc.