.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: terminfo.tail,v 1.132 2023/09/30 21:38:11 Branden.Robinson Exp $
+.\" $Id: terminfo.tail,v 1.133 2023/10/07 20:53:54 tom Exp $
.ps +1
.SS User-Defined Capabilities
.
The following entry, describing an ANSI-standard terminal, is representative
of what a \fBterminfo\fP entry for a modern terminal typically looks like.
.PP
-.nf
-.ft \*(CW
-\s-2ansi|ansi/pc-term compatible with color,
+.EX
+\s-2ansi|ansi/pc\-term compatible with color,
am, mc5i, mir, msgr,
colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
- acsc=+\\020\\,\\021-\\030.^Y0\\333`\\004a\\261f\\370g\\361h\\260
- j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303
- u\\264v\\301w\\302x\\263y\\363z\\362{\\343|\\330}\\234~\\376,
- bel=^G, blink=\\E[5m, bold=\\E[1m, cbt=\\E[Z, clear=\\E[H\\E[J,
- cr=^M, cub=\\E[%p1%dD, cub1=\\E[D, cud=\\E[%p1%dB, cud1=\\E[B,
- cuf=\\E[%p1%dC, cuf1=\\E[C, cup=\\E[%i%p1%d;%p2%dH,
- cuu=\\E[%p1%dA, cuu1=\\E[A, dch=\\E[%p1%dP, dch1=\\E[P,
- dl=\\E[%p1%dM, dl1=\\E[M, ech=\\E[%p1%dX, ed=\\E[J, el=\\E[K,
- el1=\\E[1K, home=\\E[H, hpa=\\E[%i%p1%dG, ht=\\E[I, hts=\\EH,
- ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L, ind=^J,
- indn=\\E[%p1%dS, invis=\\E[8m, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D,
- kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, khome=\\E[H, kich1=\\E[L,
- mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[39;49m,
- rep=%p1%c\\E[%p2%{1}%-%db, rev=\\E[7m, rin=\\E[%p1%dT,
- rmacs=\\E[10m, rmpch=\\E[10m, rmso=\\E[m, rmul=\\E[m,
- s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B,
- setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
- sgr=\\E[0;10%?%p1%t;7%;
+ acsc=+\e020\e,\e021\-\e030.\*^Y0\e333\(ga\e004a\e261f\e370g\e361h\e260
+ j\e331k\e277l\e332m\e300n\e305o\*~p\e304q\e304r\e304s_t\e303
+ u\e264v\e301w\e302x\e263y\e363z\e362{\e343|\e330}\e234\*~\e376,
+ bel=\*^G, blink=\eE[5m, bold=\eE[1m, cbt=\eE[Z, clear=\eE[H\eE[J,
+ cr=\*^M, cub=\eE[%p1%dD, cub1=\eE[D, cud=\eE[%p1%dB, cud1=\eE[B,
+ cuf=\eE[%p1%dC, cuf1=\eE[C, cup=\eE[%i%p1%d;%p2%dH,
+ cuu=\eE[%p1%dA, cuu1=\eE[A, dch=\eE[%p1%dP, dch1=\eE[P,
+ dl=\eE[%p1%dM, dl1=\eE[M, ech=\eE[%p1%dX, ed=\eE[J, el=\eE[K,
+ el1=\eE[1K, home=\eE[H, hpa=\eE[%i%p1%dG, ht=\eE[I, hts=\eEH,
+ ich=\eE[%p1%d@, il=\eE[%p1%dL, il1=\eE[L, ind=\*^J,
+ indn=\eE[%p1%dS, invis=\eE[8m, kbs=\*^H, kcbt=\eE[Z, kcub1=\eE[D,
+ kcud1=\eE[B, kcuf1=\eE[C, kcuu1=\eE[A, khome=\eE[H, kich1=\eE[L,
+ mc4=\eE[4i, mc5=\eE[5i, nel=\er\eE[S, op=\eE[39;49m,
+ rep=%p1%c\eE[%p2%{1}%\-%db, rev=\eE[7m, rin=\eE[%p1%dT,
+ rmacs=\eE[10m, rmpch=\eE[10m, rmso=\eE[m, rmul=\eE[m,
+ s0ds=\eE(B, s1ds=\eE)B, s2ds=\eE*B, s3ds=\eE+B,
+ setab=\eE[4%p1%dm, setaf=\eE[3%p1%dm,
+ sgr=\eE[0;10%?%p1%t;7%;
%?%p2%t;4%;
%?%p3%t;7%;
%?%p4%t;5%;
%?%p6%t;1%;
%?%p7%t;8%;
%?%p9%t;11%;m,
- sgr0=\\E[0;10m, smacs=\\E[11m, smpch=\\E[11m, smso=\\E[7m,
- smul=\\E[4m, tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n,
- u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%i%p1%dd,
-.fi
-.ft R
+ sgr0=\eE[0;10m, smacs=\eE[11m, smpch=\eE[11m, smso=\eE[7m,
+ smul=\eE[4m, tbc=\eE[3g, u6=\eE[%i%d;%dR, u7=\eE[6n,
+ u8=\eE[?%[;0123456789]c, u9=\eE[c, vpa=\eE[%i%p1%dd,
+.EE
.PP
Entries may continue onto multiple lines by placing white space at
the beginning of each line except the first.
Both \fB\eE\fP and \fB\ee\fP
map to an \s-1ESCAPE\s0 character,
.bP
-\fB^x\fP maps to a control-x for any appropriate \fIx\fP, and
+\fB\*^\f(BIx\fR maps to a control-\fIx\fP for any appropriate \fIx\fP,
+and
.bP
the sequences
.RS 6
.PP
X/Open Curses does not say what \*(``appropriate \fIx\fP\*('' might be.
In practice, that is a printable ASCII graphic character.
-The special case \*(``^?\*('' is interpreted as DEL (127).
+The special case \*(``\*^?\*('' is interpreted as DEL (127).
In all other cases, the character value is AND'd with 0x1f,
mapping to ASCII control codes in the range 0 through 31.
.PP
Other escapes include
.bP
-\fB\e^\fP for \fB^\fP,
+\fB\e\*^\fP for \fB\*^\fP,
.bP
\fB\e\e\fP for \fB\e\fP,
.bP
hard-copy and \*(``glass-tty\*('' terminals.
Thus the model 33 teletype is described as
.PP
-.DT
-.nf
-.ft \*(CW
+.EX
.\".in -2
\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
- bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+ bel=\*^G, cols#72, cr=\*^M, cud1=\*^J, hc, ind=\*^J, os,\s+1
.\".in +2
-.ft R
-.fi
+.EE
.PP
while the Lear Siegler \s-1ADM-3\s0 is described as
.PP
-.DT
-.nf
-.ft \*(CW
+.EX
.\".in -2
\s-1adm3\||\|3\||\|lsi adm3,
- am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
- ind=^J, lines#24,\s+1
+ am, bel=\*^G, clear=\*^Z, cols#80, cr=\*^M, cub1=\*^H, cud1=\*^J,
+ ind=\*^J, lines#24,\s+1
.\".in +2
-.ft R
-.fi
+.EE
.SS Parameterized Strings
Cursor addressing and other strings requiring parameters
in the terminal are described by a
Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag,
avoiding interpreting \*(``%\-\*('' as an operator.
.TP
-\f\*(CW%c\fP
+\fB%c\fP
print \fIpop()\fP like %c in \fBprintf\fP
.TP
\fB%s\fP
.RE
.RE
.TP
-\fB%\(aq\fIc\fB\(aq\fR
+\fB%\*'\fIc\fB\*'\fR
char constant \fIc\fP
.TP
\fB%{\fInn\fB}\fR
\fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP
arithmetic (%m is \fImod\fP): \fIpush(pop() op pop())\fP
.TP
-\fB%&\fP, \fB%|\fP, \fB%^\fP
+\fB%&\fP, \fB%|\fP, \fB%\*^\fP
bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP
.TP
\fB%=\fP, \fB%>\fP, \fB%<\fP
\fB%A\fP, \fB%O\fP
logical AND and OR operations (for conditionals)
.TP
-\fB%!\fP, \fB%~\fP
+\fB%!\fP, \fB%\*~\fP
unary operations (logical and bit complement): \fIpush(op pop())\fP
.TP
\fB%i\fP
.RE
.PP
The Microterm \s-1ACT-IV\s0 needs the current row and column sent
-preceded by a \fB^T\fP, with the row and column simply encoded in binary,
+preceded by a \fB\*^T\fP, with the row and column simply encoded in binary,
.RS
-cup=^T%p1%c%p2%c
+cup=\*^T%p1%c%p2%c
.RE
.PP
Terminals which use \*(``%c\*('' need to be able to
backspace the cursor (\fBcub1\fP),
and to move the cursor up one line on the screen (\fBcuu1\fP).
This is necessary because it is not always safe to transmit \fB\en\fP
-\fB^D\fP and \fB\er\fP, as the system may change or discard them.
+\fB\*^D\fP and \fB\er\fP, as the system may change or discard them.
(The library routines dealing with terminfo set tty modes so that
tabs are never expanded, so \et is safe to send.
This turns out to be essential for the Ann Arbor 4080.)
A final example is the \s-1LSI ADM\s0-3a, which uses row and column
offset by a blank character, thus
.RS
-cup=\eE=%p1%\(aq \(aq%+%c%p2%\(aq \(aq%+%c
+cup=\eE=%p1%\*' \*'%+%c%p2%\*' \*'%+%c
.RE
.PP
After sending \*(``\eE=\*('', this pushes the first parameter, pushes the
an entry with \fBcsr\fP).
.PP
Yet another way to construct insert and delete might be to use a combination of
-index with the memory-lock feature found on some terminals (like the HP\-700/90
+index with the memory-lock feature found on some terminals (like the HP-700/90
series, which however also has insert/delete).
.PP
Inserting lines at the top or bottom of the screen can also be
p6 bold \eE[0;1m
p7 invis \eE[0;8m
p8 protect not used
-p9 altcharset ^O (off) ^N (on)
+p9 altcharset \*^O (off) \*^N (on)
.TE
.PP
We begin each escape sequence by turning off any existing modes, since
The vt220 terminal has a protect mode,
though it is not commonly used in sgr
because it protects characters on the screen from the host's erasures.
-The altcharset mode also is different in that it is either ^O or ^N,
+The altcharset mode also is different in that it is either \*^O or \*^N,
depending on whether it is off or on.
-If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N.
+If all modes are turned on, the resulting sequence is \eE[0;1;4;5;7;8m\*^N.
.PP
Some sequences are common to different modes.
For example, ;7 is output when either p1 or p3 is true, that is, if
l l l .
Sequence When to Output terminfo Translation
_
-\\E[0 always \\E[0
+\eE[0 always \eE[0
;1 if p1 or p6 %?%p1%p6%|%t;1%;
;4 if p2 %?%p2%|%t;4%;
;5 if p4 %?%p4%|%t;5%;
.PP
Putting this all together into the sgr sequence gives:
.PP
-.ft \*(CW
-.nf
- sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
- %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
-.fi
-.ft R
+.EX
+ sgr=\eE[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
+ %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\e016%e\e017%;,
+.EE
.PP
Remember that if you specify sgr, you must also specify sgr0.
Also, some implementations rely on sgr being given if sgr0 is,
after certain cursor motions and screen changes.
.PP
If the terminal uses xon/xoff handshaking for flow control (that is,
-it automatically emits ^S back to the host when its input buffers are
+it automatically emits \*^S back to the host when its input buffers are
close to full), set
.BR xon .
This capability suppresses the emission of padding.
arrow pointing up ACS_UARROW \*^ \- 0x2d
arrow pointing down ACS_DARROW v . 0x2e
solid square block ACS_BLOCK # 0 0x30
-diamond ACS_DIAMOND + ` 0x60
+diamond ACS_DIAMOND + \(ga 0x60
checker board (stipple) ACS_CKBOARD : a 0x61
degree symbol ACS_DEGREE \e f 0x66
plus/minus ACS_PLMINUS # g 0x67
.BR rep .
The first parameter is the character to be repeated and the second
is the number of times to repeat it.
-Thus, tparm(repeat_char, \(aqx\(aq, 10) is the same as \*(``xxxxxxxxxx\*(''.
+Thus, tparm(repeat_char, \*'x\*', 10) is the same as \*(``xxxxxxxxxx\*(''.
.PP
If the terminal has a settable command character,
such as the \s-1TEKTRONIX\s+1 4025,
is in effect.
.SS Glitches and Braindamage
Hazeltine terminals,
-which do not allow \*(``~\*('' characters to be displayed should
+which do not allow \*(``\*~\*('' characters to be displayed should
indicate \fBhz\fP.
.PP
Terminals which ignore a line-feed immediately after an \fBam\fP wrap,