######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
#
# This version of terminfo.src is distributed with ncurses and is maintained
# by Thomas E. Dickey (TD).
#
# Report bugs and new terminal descriptions to
#	bug-ncurses@gnu.org
#
#	$Revision: 1.943 $
#	$Date: 2021/10/14 00:40:38 $
#
# The original header is preserved below for reference.  It is noted that there
# is a "newer" version which differs in some cosmetic details (but actually
# stopped updates several years ago); we have decided to not change the header
# unless there is also a change in content.
#
# To further muddy the waters, it is noted that changes to this file as part of
# maintenance of ncurses (since 1996) are generally conceded to be copyright
# under the ncurses MIT-style license.  That was the effect of the agreement
# which the principal authors of ncurses made in 1998.  However, since much of
# the file itself is of unknown authorship (and the disclaimer below makes it
# obvious that Raymond cannot or will not convey rights over those parts),
# there is no explicit copyright notice on the file itself.
#
# It would also be a nuisance to split the file into unknown/known authorship
# and move pieces as they are maintained, since many of the maintenance changes
# have been small corrections to Raymond's translations to/from termcap format,
# correcting the data but not the accompanying annotations.
#
# In any case, note that almost half of this file is not data but annotations
# which reflect creative effort.  Furthermore, the structure of entries to
# reuse common chunks also is creative (and subject to copyright).  Finally,
# some portions of the data are derivative work under a compatible MIT-style
# license from xterm.
#
#------------------------------------------------------------------------------
# https://invisible-island.net/ncurses/ncurses.faq.html#terminfo_copying
# https://invisible-island.net/personal/copyrights.html#removing_notes
#------------------------------------------------------------------------------
#
#	Version 10.2.1
#	terminfo syntax
#
#	Eric S. Raymond		(current maintainer)
#	John Kunze, Berkeley
#	Craig Leres, Berkeley
#
# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu
# address is no longer valid.  The latest version can always be found at
# <http://www.tuxedo.org/terminfo>.
#
# PURPOSE OF THIS FILE:
#
# This file describes the capabilities of various character-cell terminals,
# as needed by software such as screen-oriented editors.
#
# Other terminfo and termcap files exist, supported by various OS vendors
# or as relics of various older versions of UNIX.  This one is the longest
# and most comprehensive one in existence.  It subsumes not only the entirety
# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL
# termcap file, but also large numbers of vendor-maintained termcap and
# terminfo entries more complete and carefully tested than those in historical
# termcap/terminfo versions.
#
# Pointers to related resources (including the ncurses distribution) may
# be found at <http://www.tuxedo.org/terminfo>.
#
# INTERNATIONALIZATION:
#
# This file uses only the US-ASCII character set (no ISO8859 characters).
#
# This file assumes a US-ASCII character set. If you need to fix this, start
# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers
# for your character set.  \E(A and \E)A enables the British character set
# with the pound sign at position 2/3.
#
# In a Japanese-processing environment using EUC/Japanese or Shift-JIS,
# C1 characters are considered the first-byte set of the Japanese encodings,
# so \E)0 should be avoided in <enacs> and initialization strings.
#
# FILE FORMAT:
#
# The version you are looking at may be in any of three formats: master
# (terminfo with OT capabilities), stock terminfo, or termcap.  You can tell
# which by the format given in the header above.
#
# The master format is accepted and generated by the terminfo tools in the
# ncurses suite; it differs from stock (System V-compatible) terminfo only
# in that it admits a group of capabilities (prefixed `OT') equivalent to
# various obsolete termcap capabilities.  You can, thus, convert from master
# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if
# you have ncurses `tic -I' is nicer (among other things, it automatically
# outputs entries in a canonical form).
#
# The termcap version is generated automatically from the master version
# using tic -C.  This filtering leaves in the OT capabilities under their
# original termcap names.  All translated entries fit within the 1023-byte
# string-table limit of archaic termcap libraries except where explicitly
# noted below.  Note that the termcap translation assumes that your termcap
# library can handle multiple tc capabilities in an entry. 4.4BSD has this
# capability.  Older versions of GNU termcap, through 1.3, do not.
#
# For details on these formats, see terminfo(5) in the ncurses distribution,
# and termcap(5) in the 4.4BSD Unix Programmer's Manual.  Be aware that 4.4BSD
# curses has been declared obsolete by the caretakers of the 4.4BSD sources
# as of June 1995; they are encouraging everyone to migrate to ncurses.
#
# Note: unlike some other distributed terminfo files (Novell Unix & SCO's),
# no entry in this file has embedded comments.  This is so source translation
# to termcap only has to carry over leading comments.  Also, no name field
# contains embedded whitespace (such whitespace confuses rdist).
#
# Further note: older versions of this file were often installed with an editor
# script (reorder) that moved the most common terminal types to the front of
# the file.  This should no longer be necessary, as the file is now ordered
# roughly by type frequency with ANSI/VT100 and other common types up front.
#
# Some information has been merged in from terminfo files distributed by
# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below).  Much information
# comes from vendors who maintain official terminfos for their hardware
# (notably DEC and Wyse).
#
# A detailed change history is included at the end of this file.
#
# FILE ORGANIZATION:
#
# Comments in this file begin with # - they cannot appear in the middle
# of a terminfo/termcap entry (this feature had to be sacrificed in order
# to allow standard terminfo and termcap syntax to be generated cleanly from
# the master format).  Individual capabilities are commented out by
# placing a period between the colon and the capability name.
#
# The file is divided up into major sections (headed by lines beginning with
# the string "########") and minor sections (beginning with "####"); do
#
#	grep "^####" <file> | more
#
# to see a listing of section headings.  The intent of the divisions is
# (a) to make it easier to find things, and (b) to order the database so
# that important and frequently-encountered terminal types are near the
# front (so that you'll get reasonable search efficiency from a linear
# search of the termcap form even if you don't use reorder).  Minor sections
# usually correspond to manufacturers or standard terminal classes.
# Parenthesized words following manufacturer names are type prefixes or
# product line names used by that manufacturers.
#
# HOW TO READ THE ENTRIES:
#
# The first name in an entry is the canonical name for the model or
# type, last entry is a verbose description.  Others are mnemonic synonyms for
# the terminal.
#
# Terminal names look like <manufacturer> <model> - <modes/options>
# The part to the left of the dash, if a dash is present, describes the
# particular hardware of the terminal.  The part to the right may be used
# for flags indicating special ROMs, extra memory, particular terminal modes,
# or user preferences.
#
# All names should be in lower case, for consistency in typing.
#
# The following are conventionally used suffixes:
#	-2p	Has two pages of memory.  Likewise 4p, 8p, etc.
#	-am	Enable auto-margin.
#	-m	Monochrome.  Suppress color support
#	-mc	Magic-cookie.  Some terminals (notably older Wyses) can
#		only support one attribute without magic-cookie lossage.
#		Their base entry is usually paired with another that
#		uses magic cookies to support multiple attributes.
#	-nam	No auto-margin - suppress <am> capability
#	-nl	No labels - suppress soft labels
#	-ns	No status line - suppress status line
#	-rv	Terminal in reverse video mode (black on white)
#	-s	Enable status line.
#	-vb	Use visible bell (<flash>) rather than <bel>.
#	-w	Wide - in 132 column mode.
# If a name has multiple suffixes and one is a line height, that one should
# go first.  Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
#
# Entries with embedded plus signs are designed to be included through use/tc
# capabilities, not used as standalone entries.
#
# To avoid search clashes, some older all-numeric names for terminals have
# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
# All primary names of terminals now have alphanumeric prefixes.
#
# Comments marked "esr" are mostly results of applying the termcap-compiler
# code packaged with ncurses and contemplating the resulting error messages.
# In many cases, these indicated obvious fixes to syntax garbled by the
# composers.  In a few cases, I was able to deduce corrected forms for garbled
# capabilities by looking at context.  All the information in the original
# entries is preserved in the comments.
#
# In the comments, terminfo capability names are bracketed with <> (angle
# brackets).  Termcap capability names are bracketed with :: (colons).
#
# INTERPRETATION OF USER CAPABILITIES
#
# The System V Release 4 and XPG4 terminfo format defines ten string
# capabilities for use by applications, <u0>...<u9>.   In this file, we use
# certain of these capabilities to describe functions which are not covered
# by terminfo.  The mapping is as follows:
#
#	u9	terminal enquire string (equiv. to ANSI/ECMA-48 DA)
#	u8	terminal answerback description
#	u7	cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6)
#	u6	cursor position report (equiv. to ANSI/ECMA-48 CPR)
#
# The terminal enquire string <u9> should elicit an answerback response
# from the terminal.  Common values for <u9> will be ^E (on older ASCII
# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals).
#
# The cursor position request (<u7>) string should elicit a cursor position
# report.  A typical value (for VT100 terminals) is \E[6n.
#
# The terminal answerback description (u8) must consist of an expected
# answerback string.  The string may contain the following scanf(3)-like
# escapes:
#
#	%c	Accept any character
#	%[...]	Accept any number of characters in the given set
#
# The cursor position report (<u6>) string must contain two scanf(3)-style
# %d format elements.  The first of these must correspond to the Y coordinate
# and the second to the %d.  If the string contains the sequence %i, it is
# taken as an instruction to decrement each value after reading it (this is
# the inverse sense from the cup string).  The typical CPR value is
# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
#
# These capabilities are used by tack(1m), the terminfo action checker
# (distributed with ncurses 5.0).
#
# TABSET FILES
#
# All the entries in this file have been edited to assume that the tabset
# files directory is /usr/share/tabset, in conformance with the File Hierarchy
# Standard for Linux and open-source BSD systems.  Some vendors (notably Sun)
# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
#
# No curses package we know of actually uses these files.  If their location
# is an issue, you will have to hand-patch the file locations before compiling
# this file.
#
# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
#
# As the ANSI/ECMA-48 standard and variants take firmer hold, and as
# character-cell terminals are increasingly replaced by X displays, much of
# this file is becoming a historical document (this is part of the reason for
# the new organization, which puts ANSI types, xterm, Unix consoles,
# and vt100 up front in confidence that this will catch 95% of new hardware).
#
# For the terminal types still alive, I'd like to have manufacturer's
# contact data (Internet address and/or snail-mail + phone).
#
# I'm also interested in enriching the comments so that the latter portions of
# the file do in fact become a potted history of VDT technology as seen by
# UNIX hackers.  Ideally, I'd like the headers for each manufacturer to
# include its live/dead/out-of-the-business status, and for as many
# terminal types as possible to be tagged with information like years
# of heaviest use, popularity, and interesting features.
#
# I'm especially interested in identifying the obscure entries listed under
# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal
# wisdom about them gets lost.  If you know a lot about obscure old terminals,
# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
# eyeball it for things you can identify and describe.
#
# If you have been around long enough to contribute, please read the file
# with this in mind and send me your annotations.
#
# COPYRIGHTS AND OTHER DELUSIONS
#
# The BSD ancestor of this file had a standard Regents of the University of
# California copyright with dates from 1980 to 1993.
#
# Some information has been merged in from a terminfo file SCO distributes.
# It has an obnoxious boilerplate copyright which I'm ignoring because they
# took so much of the content from the ancestral BSD versions of this file
# and didn't attribute it, thereby violating the BSD Regents' copyright.
#
# Not that anyone should care.  However many valid functions copyrights may
# serve, putting one on a termcap/terminfo file with hundreds of anonymous
# contributors makes about as much sense as copyrighting a wall-full of
# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
#
# This file deliberately has no copyright.  It belongs to no one and everyone.
# If you claim you own it, you will merely succeed in looking like a fool.
# Use it as you like.  Use it at your own risk.  Copy and redistribute freely.
# There are no guarantees anywhere.  Svaha!
#

######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
#
# This section describes terminal classes and brands that are still
# quite common.
#

#### Specials
#
# Special "terminals".  These are used to label tty lines when you don't
# know what kind of terminal is on it.  The characteristics of an unknown
# terminal are the lowest common denominator - they look about like a ti 700.
#

dumb|80-column dumb tty,
	am,
	cols#80,
	bel=^G, cr=\r, cud1=\n, ind=\n,
unknown|unknown terminal type,
	gn, use=dumb,
lpr|printer|line printer,
	OTbs, hc, os,
	cols#132, lines#66,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ind=\n,
glasstty|classic glass tty interpreting ASCII control characters,
	OTbs, am,
	cols#80,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ht=^I, kcub1=^H,
	kcud1=\n, nel=\r\n, .kbs=^H,

vanilla|dumb tty,
	OTbs,
	bel=^G, cr=\r, cud1=\n, ind=\n,

# This is almost the same as "dumb", but with no prespecified width.
# DEL and ^C are hardcoded to act as kill characters.
# ^D acts as a line break (just like newline).
# It also interprets
#      \033];xxx\007
# for compatibility with xterm -TD
9term|Plan9 terminal emulator for X,
	am,
	OTnl=\n, bel=^G, cud1=\n,

#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
#
# See the end-of-file comment for more on these.
#

# ANSI capabilities are broken up into pieces, so that a terminal
# implementing some ANSI subset can use many of them.
ansi+local1|ANSI normal-mode cursor-keys,
	cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
ansi+local|ANSI normal-mode parameterized cursor-keys,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, use=ansi+local1,
ansi+tabs|ANSI tab-stops,
	cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[3g,
ansi+inittabs|ANSI initial tab-stops,
	it#8, use=ansi+tabs,
ansi+erase|ANSI clear screen/line,
	clear=\E[H\E[J, ed=\E[J, el=\E[K,
ansi+rca|ANSI relative cursor-addressing,
	hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
ansi+rca2|ANSI relative cursor-addressing,
	hpa=\E[%i%p1%dG, vpa=\E[%i%p1%dd,
ansi+cup|ANSI absolute cursor-addressing,
	cup=\E[%i%p1%d;%p2%dH, home=\E[H,
ansi+rep|ANSI repeat-character,
	rep=%p1%c\E[%p2%{1}%-%db,
ansi+idl1|ANSI insert/delete one line,
	dl1=\E[M, il1=\E[L,
ansi+idl|ANSI insert/delete lines,
	dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1,
ansi+idc1|ANSI insert/delete one character,
	dch1=\E[P, ich1=\E[@, rmir=\E[4l, smir=\E[4h,
ansi+idc|ANSI insert/delete characters,
	dch=\E[%p1%dP, ich=\E[%p1%d@, use=ansi+idc1,
ansi+arrows|ANSI normal-mode cursor-keys,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	khome=\E[H,
ansi+sgr|ANSI graphic renditions,
	blink=\E[5m, invis=\E[8m, rev=\E[7m,
	sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E[0m,
ansi+sgrso|ANSI standout only,
	rmso=\E[m, smso=\E[7m,
ansi+sgrul|ANSI underline only,
	rmul=\E[m, smul=\E[4m,
ansi+sgrbold|ANSI graphic renditions; assuming terminal has bold; not dim,
	bold=\E[1m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
	    %;%?%p7%t8;%;m,
	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
ansi+sgrdim|ANSI graphic renditions; assuming terminal has dim; not bold,
	dim=\E[2m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;
	    %;%?%p7%t8;%;m,
	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,

# ECMA-48 does not specify scroll-regions, but most people consider it to be
# "ANSI" because it is widely-supported.  See ecma+index for the standard form.
ansi+csr|ANSI scroll-region plus cursor save & restore,
	csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,

# The normal (ANSI) flavor of "media copy" building block asserts that
# characters sent to the printer do not echo on the screen. DEC terminals
# can also be put into autoprinter mode, where each line is sent to the
# printer as you move off that line, e.g., by a carriage return.
ansi+pp|ANSI printer port,
	mc5i,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
dec+pp|DEC autoprinter mode,
	mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i,

# The IBM PC alternate character set.  Plug this into any Intel console entry.
# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
# ROM graphics for control characters such as the diamond, up- and down-arrow.
# This works with the System V, Linux, and BSDI consoles.  It's a safe bet this
# will work with any Intel console, they all seem to have inherited \E[11m
# from the ANSI.SYS de-facto standard.
klone+acs|alternate character set for ansi.sys displays,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
	     \301w\302x\263y\363z\362{\343|\330}\234~\376,
	rmacs=\E[10m, smacs=\E[11m,

# Highlight controls corresponding to the ANSI.SYS standard.  Most
# console drivers for Intel boxes obey these.  Makes the same assumption
# about \E[11m as klone+acs.  True ANSI/ECMA-48 would have <rmso=\E[27m>,
# <rmul=\E[24m>, but this isn't a documented feature of ANSI.SYS.
klone+sgr|attribute control for ansi.sys displays,
	blink=\E[5m, bold=\E[1m, rev=\E[7m, rmpch=\E[10m,
	rmso=\E[m, rmul=\E[m,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
	    %t;1%;%?%p9%t;11%;m,
	sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
	use=klone+acs,

# Most Intel boxes do not treat "invis" (invisible) text.
klone+sgr8|attribute control for ansi.sys displays,
	invis=\E[8m,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
	    %t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	use=klone+sgr,

# Highlight controls corresponding to the ANSI.SYS standard.  *All*
# console drivers for Intel boxes obey these.  Does not assume \E[11m will
# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
# diamond and arrow characters under curses.
klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
	blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, rmso=\E[m,
	rmul=\E[m,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
	    %t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
	sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
	use=klone+acs,

# KOI8-R (RFC1489) acs (alternate character set)
# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset,
	acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i
	     \220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t
	     \206u\207v\210w\211x\201y\230z\231{\267|\274}L~
	     \225,
	rmacs=\E[10m, smacs=\E[11m,

# ANSI.SYS color control.  The setab/setaf caps depend on the coincidence
# between SVr4/XPG4's color numbers and ANSI.SYS attributes.  Here are longer
# but equivalent strings that don't rely on that coincidence:
# setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
# setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
# They match a subset of ECMA-48.
klone+color|color control for ansi.sys and ISO6429-compatible displays,
	colors#8, ncv#3, pairs#64,
	op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,

# This is better than klone+color, it doesn't assume white-on-black as the
# default color pair,  but many `ANSI' terminals don't grok the <op> cap.
ecma+color|color control for ECMA-48-compatible terminals,
	AX,
	colors#8, ncv#3, pairs#64,
	op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,

ecma+italics|ECMA-48 italics,
	ritm=\E[23m, sitm=\E[3m,

# Attribute control for ECMA-48-compatible terminals
ecma+sgr|attribute capabilities for true ECMA-48 terminals,
	rmso=\E[27m, rmul=\E[24m, use=klone+sgr8,

ecma+strikeout|ECMA-48 strikeout/crossed-out,
	rmxx=\E[29m, smxx=\E[9m,

# ECMA-48 does not include the VT100 indexing and scroll-margins.  It has its
# own variation.
ecma+index|ECMA-48 scroll up/down,
	indn=\E[%p1%dS, rin=\E[%p1%dT,

# For comparison, here are all the capabilities implied by the Intel
# Binary Compatibility Standard (level 2) that fit within terminfo.
# For more detail on this rather pathetic standard, see the comments
# near the end of this file.
ibcs2|Intel Binary Compatibility Standard prescriptions,
	cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cub1=\E[1D,
	cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
	dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
	hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, rc=\E7, rmam=\E[?7l, sc=\E7, smam=\E[?7h,
	tbc=\E[g, vpa=\E[%i%p1%dd, use=ecma+index,

#### ANSI/ECMA-48 terminals and terminal emulators
#
# See near the end of this file for details on ANSI conformance.
# Don't mess with these entries!  Lots of other entries depend on them!
#
# This section lists entries in a least-capable to most-capable order.
# if you're in doubt about what `ANSI' matches yours, try them in that
# order and back off from the first that breaks.

# ansi-mr is for ANSI terminals with ONLY relative cursor addressing
# and more than one page of memory.  It uses local motions instead of
# direct cursor addressing, and makes almost no assumptions. It does
# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen.
ansi-mr|mem rel cup ansi,
	am, xon,
	cols#80, lines#24, use=vanilla, use=ansi+erase,
	use=ansi+local1,

# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
# beware of screen size problems and memory relative cursor addressing.
ansi-mini|any ansi terminal with pessimistic assumptions,
	am, xon,
	cols#80, lines#24, use=vanilla, use=ansi+cup,
	use=ansi+erase,

# ansi-mtabs adds relative addressing and minimal tab support
ansi-mtabs|any ansi terminal with pessimistic assumptions,
	it#8,
	ht=^I, use=ansi-mini, use=ansi+local1,

# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
#
# The following is an entry for the full ANSI 3.64 (1977).  It lacks
# padding, but most terminals using the standard are "fast" enough
# not to require any -- even at 9600 bps.  If you encounter problems,
# try including the padding specifications.
#
# Note: the :as: and :ae: specifications are not implemented here, for
# the available termcap documentation does not make clear WHICH alternate
# character set to specify.  ANSI 3.64 seems to make allowances for several.
# Please make the appropriate adjustments to fit your needs -- that is
# if you will be using alternate character sets.
#
# There are very few terminals running the full ANSI 3.64 standard,
# so I could only test this entry on one verified terminal (Visual 102).
# I would appreciate the results on other terminals sent to me.
#
# Please report comments, changes, and problems to:
#
# U.S. MAIL:   Hugh Hansard
#              Box: 22830
#              Emory University
#              Atlanta, GA. 30322.
#
# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh.
#
# (Added vt100 <rc>,<sc> to quiet a tic warning --esr)
ansi77|ANSI 3.64 standard 1977 version,
	OTbs, am, mir,
	cols#80, it#8, lines#24,
	bel=^G, clear=\E[;H\E[2J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOR, kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

# Procomm and some other ANSI emulations don't recognize all of the ANSI-
# standard capabilities.  This entry deletes <cuu>, <cuf>, <cud>, <cub>, and
# <vpa>/<hpa> capabilities, forcing curses to use repetitions of <cuu1>,
# <cuf1>, <cud1> and <cub1>.  Also deleted <ich> and <ich1>, as QModem up to
# 5.03 doesn't recognize these.  Finally, we delete <rep> and <ri>, which seem
# to confuse many emulators.  On the other hand, we can count on these programs
# doing <rmacs>/<smacs>/<sgr>. Older versions of this entry featured
# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under
# ANSI.SYS influence.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode),
	OTbs, am, mir, msgr,
	cols#80, it#8, lines#24,
	bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=\E[D,
	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	hts=\EH, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g,
	use=klone+sgr-dumb,
pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
	lines#25, use=pcansi-m,
pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode),
	lines#33, use=pcansi-m,
pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode),
	lines#43, use=pcansi-m,
# The color versions.  All PC emulators do color...
pcansi|ibm-pc terminal programs claiming to be ansi,
	use=klone+color, use=pcansi-m,
pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines,
	lines#25, use=pcansi,
pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines,
	lines#33, use=pcansi,
pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines,
	lines#43, use=pcansi,

# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color.
# If you want pound signs rather than dollars, replace `B' with `A'
# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
	mc5i,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
	ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%i%p1%dG, ht=\E[I,
	ich=\E[%p1%d@, il=\E[%p1%dL, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kich1=\E[L, mc4=\E[4i,
	mc5=\E[5i, nel=\r\E[S, rep=%p1%c\E[%p2%{1}%-%db,
	s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g,
	vpa=\E[%i%p1%dd, use=ecma+index, use=pcansi-m,

ansi+enq|ncurses extension for ANSI ENQ,
	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
	u9=\E[c,

# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
# standard terminfo.  Assumes ANSI.SYS-compatible attributes and color.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
ansi|ansi/pc-term compatible with color,
	use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m,

# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
# all the normal ANSI stuff with no extensions. It assumes
# insert/delete line/char is there, so it won't work with
# vt100 clones. It assumes video attributes for bold, blink,
# underline, and reverse, which won't matter much if the terminal
# can't do some of those. Padding is assumed to be zero, which
# shouldn't hurt since xon/xoff is assumed.
ansi-generic|ansiterm|generic ansi standard terminal,
	am, xon,
	cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup,
	use=ansi+rca, use=ansi+erase, use=ansi+tabs,
	use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep,
	use=ansi+sgrbold, use=ansi+arrows,

#### DOS ANSI.SYS variants
#
# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
# documentation (except for the keyboard key reassignment feature, which
# doesn't fit the <pfkey> model well).  The klone+acs sequences were valid
# though undocumented.  The <pfkey> capability is untested but should work for
# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
#
# DOS 2.0 (January 1983) documented these features in
# Chapter 13, "Using Extended Screen and Keyboard Control" -TD
ansi.sys-old|ANSI.SYS under PC-DOS 2.0,
	OTbs, am, mir, msgr, xon,
	cols#80, lines#25,
	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
	is2=\E[m\E[?7h, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
	khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p, rc=\E[u,
	rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR,
	u7=\E[6n, use=klone+color, use=klone+sgr8,

# Keypad:	Home=\0G	Up=\0H	PrPag=\0I
#		ka1,kh		kcuu1		kpp,ka3
#
#		Left=\0K	5=\0L		Right=\0M
#		kcub1		kb2		kcuf1
#
#		End=\0O		Down=\0P	NxPag=\0Q
#		kc1,kend	kcud1		kc3,knp
#
#		Ins=\0R		Del=\0S
#		kich1		kdch1
#
# On keyboard with 12 function keys,
#	shifted f-keys: F13-F24
#	control f-keys: F25-F36
#	alt f-keys:     F37-F48
# The shift/control/alt keys do not modify each other, but alt overrides both,
# and control overrides shift.
#
# <pfkey> capability for F1-F48 -TD
ansi.sys|ANSI.SYS 3.1 and later versions,
	el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q,
	kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H,
	kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205,
	kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W,
	kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\,
	kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_,
	kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d,
	kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212,
	kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l,
	kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q,
	kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B,
	kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I,
	pfkey=\E[0;%?%p1%{11}%<%t%':'%e%p1%{13}%<%t%'z'%e%p1%{23}%<
	      %t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t
	      %'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p,
	use=ansi.sys-old,

#
# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
# This should only be used when the terminal emulator cannot redefine the keys.
# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
# definitions must be restored.  If the terminal emulator is quit while in vi
# or others using <smkx>/<rmkx>, the keypad will not be defined as per PC-DOS.
# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
# (^U and ^D are already defined for tn3270).  The ESC is safe for vi but it
# does "beep".  ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
# Note that <kcub1> is always BS, because PC-dos can tolerate this change.
# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
# Consequently the End keypad key could not be set (it is relatively safe and
# actually useful because it sends ^@ O, which beeps and opens a line above).
ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi,
	is2=U2\sPC-DOS\s3.1\sANSI.SYS\swith\skeypad\sredefined\sfor
	    \svi\s9-29-86\n\E[;75;8p,
	rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;
	     0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p,
	smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p
	     \E[;81;27;4p\E[;82;27;27;105p\E[;83;127p,
	use=ansi.sys,
#
# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS,
	dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
	is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n,
	use=ansi.sys,
#
# See ansi.sysk and nansi.sys above.
nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi,
	dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
	is2=U4\sPC-DOS\sPublic\sDomain\sNANSI.SYS\swith\skeypad
	    \sredefined\sfor\svi\s9-29-86\n\E[;75;8p,
	use=ansi.sysk,

#### Atari ST terminals

# From Guido Flohr <gufl0000@stud.uni-sb.de>.
#
tw52|tw52-color|Toswin window manager with color,
	bce,
	colors#16, pairs#0x100,
	oc=\Eb?\Ec0, op=\Eb?\Ec0,
	setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
	      %{48}%+%c,
	setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
	      %{48}%+%c,
	setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
	     %{48}%+%c,
	setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1
	     %{48}%+%c,
	use=tw52-m,
tw52-m|Toswin window manager monochrome,
	ul,
	ma#999,
	bold=\Eya, dch1=\Ea, dim=\EyB,
	is2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, rev=\EyP, rmso=\EzQ,
	rmul=\EzH, rs2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, sgr0=\Ez_,
	smso=\EyQ, smul=\EyH, use=at-m,
tt52|Atari TT medium and high resolution,
	lines#30, use=at-color,
st52-color|at-color|atari-color|atari_st-color|Atari ST with color,
	bce,
	colors#16, pairs#0x100,
	is2=\Ev\Eq\Ee\Eb1\Ec0, rs2=\Ev\Eq\Ee\Eb1\Ec0,
	setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
	      %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
	      %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e
	      %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}
	      %=%t6%e?,
	setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
	      %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
	      %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e
	      %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}
	      %=%t6%e?,
	setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
	     %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
	     %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e
	     %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=
	     %t6%e?,
	setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}
	     %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1
	     %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e
	     %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=
	     %t6%e?,
	use=st52,
st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST,
	am, eo, mir, npc,
	cols#80, it#8, lines#24,
	bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=\r, cub1=\ED,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I,
	il1=\EL, ind=\n, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=^?,
	kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
	kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ,
	kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW,
	kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea,
	kund=\EK, nel=\r\n, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq,
	rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep,
tw100|Toswin vt100 window manager,
	eo, mir, msgr, xon,
	colors#8, cols#80, it#8, lines#24, pairs#64, vt#3,
	acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef,
	clear=\E[2J\E[H, cnorm=\Ee, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB,
	cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EA, dch1=\Ea, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il1=\EL, ind=\n, is2=\E<\E)0, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=^?,
	kf1=\EOP, kf10=\EOY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
	kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EOQ,
	kf20=\Ey, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
	kf8=\EOW, kf9=\EOX, khlp=\EH, khome=\E\EE, kich1=\EI,
	knp=\Eb, kpp=\E\Ea, kund=\EK, ll=\E[24H, nel=\EE,
	oc=\E[30;47m, op=\E[30;47m, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmcup=\E[?7h, rmir=\Ei, rmkx=\E[?1l\E>,
	rmso=\E[m, rmul=\E[m,
	rs1=\E<\E[20l\E[?3;6;9l\E[r\Eq\E(B\017\E)0\E>,
	sc=\E7,
	setb=\E[4%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=
	     %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'
	     %=%t3%e7%;m,
	setf=\E[3%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=
	     %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'
	     %=%t3%e7%;m,
	sgr0=\E[m, smacs=^N, smcup=\E[?7l, smir=\Eh,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
# The entries for stv52 and stv52pc probably need a revision.
stv52|MiNT virtual console,
	am, msgr,
	cols#80, it#8, lines#30,
	bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
	cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
	dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
	ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
	kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
	kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
	kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
	kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>,
	op=\Eb@\EcO, rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_,
	rmso=\Eq, rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_,
	smcup=\Ev\Ee\Ez_, smso=\Ep, smul=\EyH,
stv52pc|MiNT virtual console with PC charset,
	am, msgr,
	cols#80, it#8, lines#30,
	acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j
	     \331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y
	     \363z\362{\343|\366}\234~\371,
	bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
	cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
	dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
	ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
	kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
	kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
	kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
	kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>,
	rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq,
	rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_,
	smso=\Ep, smul=\EyH,

# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
atari-old|Atari st,
	OTbs, am,
	cols#80, it#8, lines#25,
	clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
# UniTerm terminal program for the Atari ST:  49-line VT220 emulation mode
# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
uniterm|uniterm49|UniTerm VT220 emulator with 49 lines,
	lines#49,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, use=vt220-base,
# MiNT VT52 emulation. 80 columns, 25 rows.
# MiNT is Now TOS, the operating system which comes with all Ataris now
# (mainly Atari Falcon). This termcap is for the VT52 emulation you get
# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode
# From: Per Persson <pp@gnu.ai.mit.edu>, 27 Feb 1996
st52-old|Atari ST with VT52 emulation,
	am, km,
	cols#80, lines#25,
	bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=\r, cub1=\ED,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
	ind=\n, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1,
	kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M,
	kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>,
	kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G,
	kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=\r\n, rc=\Ek,
	ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
	smcup=\Ee, smso=\Ep,

#### BeOS
#
# BeOS entry for Terminal program Seems to be almost ANSI
beterm|BeOS Terminal,
	am, eo, mir, msgr, xenl, xon,
	colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
	kf10=\E[20~, kf11=\E[21~, kf12=\E[22~, kf2=\E[12~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[16~, kf7=\E[17~,
	kf8=\E[18~, kf9=\E[19~, kspd=^Z, nel=\r\n, op=\E[m, rc=\E8,
	rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?4l, rmso=\E[m,
	rmul=\E[24m, rs1=\Ec, sc=\E7, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm, setb=\E[%p1%{40}%+%cm,
	setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smir=\E[4h,
	smkx=\E[?4h, smso=\E[7m, smul=\E[4m,
	u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, vpa=\E[%i%p1%dd,
	use=vt220+pcedit,

#### Linux consoles
#

# This entry is good for the 1.2.13 or later version of the Linux console.
#
# ***************************************************************************
# *                                                                         *
# *                           WARNING:                                      *
# * Linuxes come with a default keyboard mapping kcbt=^I.  This entry, in   *
# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
# * character. Here are the keymap replacement lines that will set this up: *
# *                                                                         *
#	keycode  15 = Tab             Tab
#		alt     keycode  15 = Meta_Tab
#		shift	keycode  15 = F26
#	string F26 ="\033[Z"
# *                                                                         *
# * This has to use a key slot which is unfortunate (any unused one will    *
# * do, F26 is the higher-numbered one).  The change ought to be built      *
# * into the kernel tables.                                                 *
# *                                                                         *
# ***************************************************************************
#
# All linux kernels since 1.2.13 (at least) set the screen size
# themselves; this entry assumes that capability.
#
linux-basic|Linux console,
	am, bce, eo, mir, msgr, xenl, xon,
	it#8, ncv#18, U8#1,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	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,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[[B,
	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kmous=\E[M, kspd=^Z, nel=\r\n,
	rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
	smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd, use=vt220+pcedit, use=vt102+enq,
	use=klone+sgr, use=ecma+color, use=linux+sfkeys,

linux+decid|ncurses extension for Linux console DECID,
	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\EZ,

linux+sfkeys|shifted function-keys for Linux console,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,

linux-m|Linux console no color,
	colors@, pairs@,
	setab@, setaf@, setb@, setf@, use=linux,

# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
# and it matters, turn off <ccc>.  The %02x escape used to implement this is
# not supposedly back-portable to older SV curses (although it has worked fine
# on Solaris for several years) and not supported in ncurses versions before
# 1.9.9.
linux-c-nc|Linux console with color-change,
	ccc,
	initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/
	      %02x%p4%{255}%*%{1000}%/%02x,
	oc=\E]R, use=linux-basic,
# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
linux-c|Linux console 1.3.6+ for older ncurses,
	ccc,
	initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}
	      %*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'
	      %+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'
	      %+%c%e%gx%d%;%p3%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx
	      %{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx
	      %{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p4%{255}%*%{1000}
	      %/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx
	      %d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx
	      %d%;,
	oc=\E]R, use=linux-basic,

# The 2.2.x kernels add a private mode that sets the cursor type; use that to
# get a block cursor for cvvis.
# reported by Frank Heckenbach <frank@g-n-u.de>.
linux2.2|Linux 2.2.x console,
	civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c,
	cvvis=\E[?25h\E[?8c, use=linux-c-nc,

# Linux 2.6.x has a fix for SI/SO to work with UTF-8 encoding added here:
#	http://lkml.iu.edu/hypermail/linux/kernel/0602.2/0738.html
# Although the kernel has mappings for these, they were not in the default
# font (tested with Debian and Fedora):
#	'`' diamond
#	'~' scan line 1
#	'p' scan line 3
#	'r' scan line 7
#	'_' scan line 9
#
# The fix for SI/SO is part of a configurable (i.e., "optional") kernel feature
# misleadingly called CONFIG_CONSOLE_TRANSLATIONS.  Disabling that not only
# omits the line-drawing using SI/SO, but also part/all of the Unicode feature:
#
#    https://cateee.net/lkddb/web-lkddb/CONSOLE_TRANSLATIONS.html
#	"This enables support for font mapping and Unicode translation on virtual consoles."
#
# This mailing list thread in July 2008 illustrates:
#
#    https://marc.info/?t=121734656700005&r=1&w=4
#	"commit a29ccf6f823a84d89e1c7aaaf221cf7282022024 break console on slackware 12.1"
#
# The change which made it configurable was to reduce the size for use in
# embedded systems.  Some background is found in
#
#    https://lwn.net/Articles/284767/
#	"An interview with the new embedded maintainers"
linux2.6|Linux 2.6.x console,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	enacs=\E)0, rmacs=^O,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, use=linux2.2,

# The 3.0 kernel adds support for clearing scrollback buffer (capability E3).
# It is the same as xterm's erase-saved-lines feature.
#
# Linux 3.0 was released in July 2011.  The keyboard utilities (kbd) are
# used for configuring its keyboard mappings.
#
# kbd 1.14 was released before that (January 2008), but due to its placement
# late in the Linux 2.6.x series had no immediate effect for most users.  That
# provided a default mapping for shift-tab to the (misnamed) Meta_Tab, i.e.,
# the same as Alt-Tab.
#
# The suggested mapping for the conventional \E[Z is provided in this entry as
# an extended key to lessen user surprise -TD
linux3.0|Linux 3.0 kernels,
	kcbt=\E^I, E3=\E[3J, kcbt2=\E[Z, use=linux2.6,

# This is Linux console for ncurses.
linux|Linux console,
	use=linux3.0,

# Subject: linux 2.6.26 vt back_color_erase
# Changes to the Linux console driver broke bce model as reported in
#	https://bugzilla.novell.com/show_bug.cgi?id=418613
# apparently from
#	http://lkml.org/lkml/2008/4/26/305
#	http://lkml.org/lkml/2008/10/3/66
linux2.6.26|Linux console w/o bce,
	bce@, use=linux2.6,

# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
linux-nic|Linux with ich/ich1 suppressed for non-curses programs,
	ich@, ich1@, use=linux,

# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts.
# acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997.
linux-koi8|Linux with koi8 alternate character set,
	acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i
	     \276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v
	     \211w\210x\201y\230z\231{\267|\274~\224,
	use=linux, use=klone+koi8acs,

# Another entry for KOI8-r with Qing Long's acsc.
# (which one better complies with the standard?)
linux-koi8r|Linux with koi8-r alternate character set,
	use=linux, use=klone+koi8acs,

# Entry for the latin1 and latin2 fonts
linux-lat|Linux with latin1 or latin2 alternate character set,
	acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i
	     \316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u
	     \215v\301w\302x\205y\363z\362{\343|\330}\234~\376,
	use=linux,

# This uses graphics from VT codeset instead of from cp437.
# reason: cp437 (aka "straight to font") is not functional under luit.
# from: Andrey V Lukyanov <land@long.yar.ru>.
linux-vt|Linux console using VT codes for graphics,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz~~,
	rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
	smpch@, use=linux,

# This is based on the Linux console (relies on the console to perform some
# of the functionality), but does not recognize as many control sequences.
# The program comes bundled with an old (circa 1998) copy of the Linux
# console terminfo.  It recognizes some non-ANSI/VT100 sequences such as
#	\E*	move cursor to home, as as \E[H
#	\E,X	same as \E(X
#	\EE	move cursor to beginning of row
#	\E[y,xf	same as \E[y,xH
#
# Note: The status-line support is buggy (dsl does not work).
kon|kon2|jfbterm|Kanji ON Linux console,
	ccc@, hs,
	civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@,
	initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T,
	use=linux,

# FbTerm
# Another variant.  There are two parts (src, src/lib) with the latter
# comprising the escape-sequence parsing.  The copyright notice on that
# says it is based on GTerm by Timothy Miller.
#
# The original developer "dragchan" has left, but as of March 2017 there is
# (still dead) code from May 2015 here:
#	https://github.com/izmntuk/fbterm
#
# The acsc string may be incorrect.
#
# Not used here, the program recognizes escapes for italic, underline and
# dim, rendering those as green, cyan and gray respectively.
fbterm|FbTerm for Linux with framebuffer,
	colors#0x100, pairs#0x10000,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	initc=\E[3;%p1%d;%p2%d;%p3%d;%p4%d}, rmacs=\E[10m,
	setab=\E[2;%p1%d}, setaf=\E[1;%p1%d},
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
	sgr0=\E[0;10m, smacs=\E[11m, use=linux,

# 16-color linux console entry; this works with a 256-character
# console font but bright background colors turn into dim ones when
# you use a 512-character console font. This uses bold for bright
# foreground colors and blink for bright background colors.
#
# Interestingly, the original version of this entry in 2009 used a documented
# (but nonstandard) SGR 21, which was supported in the Linux console since 1992
# as an equivalent for SGR 22.  Long after (early 2018), someone modified the
# console driver to make it ignore SGR 21 because the ECMA-48 standard
# suggested a different use for that particular code:
#
# https://github.com/torvalds/linux/commit/65d9982d7e523a1a8e7c9af012da0d166f72fc56#diff-7da3c215d12c9f6b88e1a37d38b116f0
#
# Two years later, someone (unfamiliar with ECMA-48 this time) documented it:
#
# https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/man4/console_codes.4?id=a133a6bc03d751a424fe0a4adea2198757599615
#
# For background, refer to the report on bug-ncurses:
#
# https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00059.html
linux-16color|Linux console with 16 colors,
	colors#16, ncv#42, pairs#0x100,
	setab=\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m,
	setaf=\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;22%;m,
	use=linux,

# bterm (bogl 0.1.18)
# Implementation is in bogl-term.c
# Key capabilities from linux terminfo entry
#
# Notes:
# bterm only supports acs using wide-characters, has case for these: qjxamlkut
# bterm does not support sgr, since it only processes one parameter -TD
bterm|bogl virtual terminal,
	am, bce,
	colors#8, cols#80, lines#24, pairs#64,
	acsc=aajjkkllmmqqttuuxx, bold=\E[1m, clear=\E[H\E[2J,
	cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J,
	el=\E[K, home=\E[H, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kmous=\E[M, kspd=^Z, nel=\r\n,
	op=\E[49m\E[39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m,
	rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m,
	use=vt220+pcedit, use=vt220+cvis,

#### Mach
#

# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
mach|Mach console,
	am, km,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n,
	kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
	kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m,
	smso=\E[7m, smul=\E[4m,
mach-bold|Mach console with bold instead of underline,
	rmul=\E[0m, smul=\E[1m, use=mach,
mach-color|Mach console with ANSI color,
	colors#8, pairs#64,
	dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=mach,

# From: Samuel Thibault
# Source: git://git.sv.gnu.org/hurd/gnumach.git
# Files: i386/i386at/kd.c
#
# Added nel, hpa, sgr and removed rmacs, smacs based on source -TD
mach-gnu|GNU Mach,
	acsc=+>\,<-\^.v0\333`+a\261f\370g\361h\260i#j\331k\277l
	     \332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x
	     \263y\363z\362{\343|\330}\234~\376,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
	el1=\E[1K, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@,
	invis=\E[8m, nel=\EE,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
	    2%;%?%p6%t;1%;%?%p7%t;8%;m,
	use=ecma+index, use=mach,

mach-gnu-color|Mach console with ANSI color,
	colors#8, pairs#64,
	op=\E[37;40m, rmso=\E[27m, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm, use=mach-gnu,

# From: Marcus Brinkmann
# http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/
#
# Comments in the original are summarized here:
#
# hurd uses 8-bit characters (km).
#
# Although it doesn't do XON/XOFF, we don't want padding characters (xon).
#
# Regarding compatibility to vt100:  hurd doesn't specify <xenl>, as we don't
# have the eat_newline_glitch.  It doesn't support setting or removing tab
# stops (hts/tbc).
#
# hurd uses ^H instead of \E[D for cub1, as only ^H implements <bw> and it is
# one byte instead three.
#
# <ich1> is not included because hurd has insert mode.
#
# hurd doesn't use ^J for scrolling, because this could put things into the
# scrollback buffer.
#
# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
# This is a GNU extension.
#
# The original has commented-out ncv, but is restored here.
#
# Reading the source, RIS resets cnorm, but not xmous.
hurd|The GNU Hurd console server,
	am, bce, bw, eo, km, mir, msgr, xenl, xon,
	colors#8, it#8, ncv#18, pairs#64,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\Ec, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	el1=\E[1K, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	invis=\E[8m, kb2=\E[G, kbs=^?, kcbt=\E[Z, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	kich1=\E[2~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m,
	rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
	    2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	sgr0=\E[0m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, gsbom=\E[>1h,
	use=vt220+pcedit, use=ecma+index, use=ecma+italics,
	use=vt220+cvis,

#### QNX
#

# QNX 4.0 Console
# Michael's original version of this entry had <am@>, <smcup=\Ei>,
# <rmcup=\Eh\ER>; this was so terminfo applications could write the lower
# right corner without triggering a scroll.  The ncurses terminfo library can
# handle this case with the <ich1> capability, and prefers <am> for better
# optimization.  Bug: The <op> capability resets attributes.
# From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996
# (removed: <sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,>)
qnx|qnx4|QNX console,
	daisy, km, mir, msgr, xhpa, xt,
	colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8,
	acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t
	     \303u\264v\301w\302x\263,
	bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ,
	cnorm=\Ey1, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2,
	dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee,
	il1=\EE, ind=\n, kBEG=\377\356, kCAN=\377\263,
	kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
	kDL=\377\366, kEND=\377\301, kEOL=\377\311,
	kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
	kHOM=\377\260, kIC=\377\340, kLFT=\377\264,
	kMOV=\377\306, kMSG=\377\304, kNXT=\377\272,
	kOPT=\377\372, kPRT=\377\275, kPRV=\377\262,
	kRDO=\377\315, kRES=\377\374, kRIT=\377\266,
	kRPL=\377\373, kSAV=\377\307, kSPD=\377\303,
	kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0,
	kclo=\377\343, kclr=\377\341, kcmd=\377\245,
	kcpy=\377\265, kcrt=\377\305, kctab=\377\237,
	kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246,
	kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274,
	ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320,
	kext=\377\270, kf1=\377\201, kf10=\377\212,
	kf11=\377\256, kf12=\377\257, kf13=\377\213,
	kf14=\377\214, kf15=\377\215, kf16=\377\216,
	kf17=\377\217, kf18=\377\220, kf19=\377\221,
	kf2=\377\202, kf20=\377\222, kf21=\377\223,
	kf22=\377\224, kf23=\377\333, kf24=\377\334,
	kf25=\377\225, kf26=\377\226, kf27=\377\227,
	kf28=\377\230, kf29=\377\231, kf3=\377\203,
	kf30=\377\232, kf31=\377\233, kf32=\377\234,
	kf33=\377\235, kf34=\377\236, kf35=\377\276,
	kf36=\377\277, kf37=\377\321, kf38=\377\322,
	kf39=\377\323, kf4=\377\204, kf40=\377\324,
	kf41=\377\325, kf42=\377\326, kf43=\377\327,
	kf44=\377\330, kf45=\377\331, kf46=\377\332,
	kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206,
	kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346,
	khlp=\377\350, khome=\377\240, khts=\377\342,
	kich1=\377\253, kil1=\377\273, kind=\377\261,
	kmov=\377\351, kmrk=\377\355, kmsg=\377\345,
	knp=\377\252, knxt=\377\312, kopn=\377\357,
	kopt=\377\353, kpp=\377\242, kprt=\377\255,
	kprv=\377\302, krdo=\377\336, kref=\377\354,
	kres=\377\360, krfr=\377\347, kri=\377\271,
	krmir=\377\313, krpl=\377\362, krst=\377\352,
	ksav=\377\361, kslt=\377\247, kspd=\377\335,
	ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER,
	rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER,
	rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d,
	setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei,
	smso=\E(, smul=\E[,
#
#
qnxt|qnxt4|QNX4 terminal,
	crxm, use=qnx4,
#
qnxm|QNX4 with mouse events,
	maddr#1,
	chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h,
	mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l,
	mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l,
	smicm=\E/>2h, use=qnx4,
#
qnxw|QNX4 windows,
	xvpa, use=qnxm,
#
#	Monochrome QNX4 terminal or console. Setting this terminal type will
#	allow an application running on a color console to behave as if it
#	were a monochrome terminal. Output will be through stdout instead of
#	console writes because the term routines will recognize that the
#	terminal name starts with 'qnxt'.
#
qnxtmono|Monochrome QNX4 terminal or console,
	colors@, pairs@,
	scp@, use=qnx4,

# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998
# (esr: commented out <scp> and <rmcup> to avoid warnings.)
# (TD: derive from original qnx4 entry)
qnxt2|QNX 2.15 serial terminal,
	am,
	civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@,
	rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4,

# QNX ANSI terminal definition
qansi-g|QNX ANSI,
	am, eslok, hs, xon,
	colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
	acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, 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$<5>, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l,
	fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
	ind=\E[S, invis=\E[9m,
	is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0,
	kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt,
	kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h,
	kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c,
	kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa,
	kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
	kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
	kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt,
	kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx,
	kf22=\EOy, kf23=\EOz, kf24=\EOa, kf25=\E[1~, kf26=\E[2~,
	kf27=\E[3~, kf28=\E[4~, kf29=\E[5~, kf3=\EOR, kf30=\E[6~,
	kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, kf34=\E[10~,
	kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, kf38=\E[18~,
	kf39=\E[19~, kf4=\EOS, kf40=\E[20~, kf41=\E[21~,
	kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~,
	kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh,
	khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a,
	kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo,
	kopt=\ENk, kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg,
	kri=\E[b, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T,
	ktbc=\ENd, kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m,
	rev=\E[7m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmso=\E[27m,
	rmul=\E[24m, rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
	tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+rep,
	use=att610+cvis0, use=ecma+index,
#
qansi|QNX ansi with console writes,
	daisy, xhpa, use=qansi-g,
#
qansi-t|QNX ansi without console writes,
	crxm, use=qansi,
#
qansi-m|QNX ansi with mouse,
	maddr#1,
	chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h,
	mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l,
	mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l,
	smicm=\E[>2h, use=qansi,
#
qansi-w|QNX ansi for windows,
	xvpa, use=qansi-m,

#### SCO consoles

# SCO console and SOS-Syscons console for 386bsd
# (scoansi: had unknown capabilities
#	:Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
#	:GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:
#	:G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
#	:CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
#	:WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
# on the <smacs>=\E[12m  -- esr)
#
# klone+sgr-dumb is an error since the acsc does not match -TD
#
# In this description based on SCO's keyboard(HW) manpage list of default
# function key values:
#	F13-F24 are shifted F1-F12
#	F25-F36 are control F1-F12
#	F37-F48 are shift+control F1-F12
#
# hpa/vpa work in the console, but not in scoterm:
#	hpa=\E[%p1%dG,
#	vpa=\E[%p1%dd,
#
# SCO's terminfo uses
#	kLFT=\E[d,
#	kRIT=\E[c,
# which do not work (console or scoterm).
#
# Console documents only 3 attributes can be set with SGR (so we don't use sgr).
scoansi-old|SCO Extended ANSI standard crt (5.0.5),
	OTbs, am, bce, eo, xon,
	colors#8, cols#80, it#8, lines#25, pairs#64,
	acsc=+/\,.-\230.\2310[5566778899::;;<<==>>FFGGHHIIJJKKLLMMNN
	     OOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3
	     yszr{c}\034~\207,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E[=14;12C, clear=\E[H\E[2J, cnorm=\E[=10;12C,
	cub=\E[%p1%dD, cub1=^H, 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, cvvis=\E[=0;12C, dch=\E[%p1%dP,
	dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M,
	ed=\E[m\E[J, el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
	ind=\E[S, invis=\E[8m, kbeg=\E[E, kbs=^H, kcbt=\E[Z,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
	kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X,
	kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
	kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
	kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
	kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
	kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
	kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
	kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
	kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
	kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
	knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, rev=\E[7m,
	ri=\E[T, rmacs=\E[10m, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr0=\E[0;10m, smacs=\E[12m, smam=\E[?7h, smso=\E[7m,
	smul=\E[4m, use=ecma+index,
scoansi-new|SCO Extended ANSI standard crt (5.0.6),
	km,
	civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr,
	cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m,
	rep=\E[%p1%d;%p2%db, rmm=\E[=11L,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?
	    %p7%t;8%;%?%p9%t;12%e;10%;m,
	smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm,
	smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m,
	smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m,
	smgtp=\E[=0;%i%p1%dm, smm=\E[=10L,
	wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr,
	use=scoansi-old,
# make this easy to change...
scoansi|SCO Extended ANSI standard crt,
	use=scoansi-old,

#### SGI consoles

# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
# from SGI's terminfo database.  SGI's entry shows F9-F12 with the codes
# for the application keypad mode.  We have added iris-ansi-ap rather than
# change the original to keypad mode.
#
# (iris-ansi: added rmam/smam based on init string -- esr)
#
# This entry, and those derived from it, is used in xwsh (also known as
# winterm).  Some capabilities that do not fit into the terminfo model
# include the shift- and control-functionkeys:
#
# F1-F12 generate different codes when shift or control modifiers are used.
# For example:
#	F1		\E[001q
#	shift F1	\E[013q
#	control-F1	\E[025q
#
# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
# \EOP to \EOS.  The shifted and control modifiers still do the same thing.
#
# The cursor keys also have different codes:
#	control-up	\E[162q
#	control-down	\E[165q
#	control-left	\E[159q
#	control-right	\E[168q
#
#	shift-up	\E[161q
#	shift-down	\E[164q
#	shift-left	\E[158q
#	shift-right	\E[167q
#
#	control-tab	\[072q
#
iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
	am,
	cols#80, it#8, lines#40,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J,
	cnorm=\E[9/y\E[12/y\E[=6l, cr=\r, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P,
	kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q,
	kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[146q,
	kent=\r, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
	kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
	kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
	kf9=\E[009q, khome=\E[H, kich1=\E[139q, knp=\E[154q,
	kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, kspd=\E[217q,
	nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\, rc=\E8,
	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7,
	sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
	tbc=\E[3g,
iris-ansi-ap|IRIS ANSI in application-keypad mode,
	is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
	kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,

# From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
# (T.Dickey 98/1/24)
iris-color|xwsh|IRIX ANSI with color,
	ncv#33,
	csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dP, dim=\E[2m,
	ech=\E[%p1%dX, ich=\E[%p1%d@, rc=\E8, rmul=\E[24m, rs1=\Ec,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	use=ecma+italics, use=vt100+enq, use=klone+color,
	use=iris-ansi-ap,

#### OpenBSD consoles
#
# From: Alexei Malinin <Alexei.Malinin@mail.ru>; October, 2011.
#
# The following terminal descriptions for the  AMD/Intel PC console
# were prepared  based on information contained in  the OpenBSD-4.9
# termtypes.master and wscons(4) & vga(4) manuals (2010, November).
#
# Added bce based on testing with tack -TD
# Added several capabilities to pccon+base, reading wsemul_vt100_subr.c -TD
# Changed kbs to DEL and removed keys that duplicate stty settings -TD
#
# Notes from testing with vttest:
#	fails wrapping test
#	no 8-bit controls
#	identifies as vt200 with selective erase, but does not implement DECSCA
#	no vt52 mode
#	also lacks these:
#		ESC # 8	  DEC Screen Alignment Test (DECALN).
#		CSI ? 5 h Reverse Video (DECSCNM).
#
pccon+keys|OpenBSD PC keyboard keys,
	kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, kend=\E[8~, kent=\r, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[35~,
	kf22=\E[36~, kf23=\E[37~, kf24=\E[38~, kf3=\E[13~,
	kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, khome=\E[7~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	krfr=^R,
pccon+sgr+acs0|sgr and simple ASCII pseudographics for OpenBSD PC console,
	acsc=+>\,<-\^.v0#`+a:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y#
	     z#{*|!}#~o,
	bold=\E[1m, rev=\E[7m, rmso=\E[27m,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p6%t;1%;%?%p2%t;4%;m,
	sgr0=\E[m, smso=\E[7m,
pccon+sgr+acs|sgr and default ASCII pseudographics for OpenBSD PC console,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bold=\E[1m, enacs=\E)0, rev=\E[7m, rmacs=\E(B, rmso=\E[27m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
	    \E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smso=\E[7m,
# underline renders as color
pccon+colors|ANSI colors for OpenBSD PC console,
	bce,
	colors#8, ncv#2, pairs#64,
	op=\E[49;39m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
# OpenBSD uses wscons,
# + which does not implement DECSCNM or anything comparable, so it does not
#   support flash.
# + it renders underline using color.
pccon+base|base capabilities for OpenBSD PC console,
	am, km, mc5i, msgr, npc, nxon, xenl, xon,
	cols#80, it#8, lines#24,
	bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	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, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, nel=\EE, rc=\E8, ri=\EM,
	rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, sc=\E7, smam=\E[?7h,
	smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics,
	use=pccon+sgr+acs0, use=pccon+base, use=pccon+keys,
pccon0|OpenBSD PC console with simple ASCII pseudographics,
	use=pccon0-m, use=pccon+colors,
pccon-m|OpenBSD PC console without colors,
	use=pccon+base, use=pccon+sgr+acs, use=pccon+keys,
	use=ansi+enq, use=vt220+cvis,
pccon|OpenBSD PC console,
	use=pccon-m, use=pccon+colors,

#### NetBSD consoles
#
# pcvt termcap database entries (corresponding to release 3.31)
# Author's last edit-date: [Fri Sep 15 20:29:10 1995]
#
# (For the terminfo master file, I translated these into terminfo syntax.
# Then I dropped all the pseudo-HP entries. we don't want and can't use
# the :Xs: flag. Then I split :is: into a size-independent <is1> and a
# size-dependent <is2>.  Finally, I added <rmam>/<smam> -- esr)

# NOTE: <ich1> has been taken out of this entry. for reference, it should
# be <ich1=\E[@>.  For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below.
# (esr: added <civis> and <cnorm> to resolve NetBSD Problem Report #4583)
pcvtXX|pcvt vt200 emulator (DEC VT220),
	am, km, mir, msgr, xenl,
	it#8, vt#3,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
	khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~,
	nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100,
	ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=ecma+index, use=vt220+cvis,

#	NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
#	termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
#	50 lines entries; 80 columns
pcvt25|DEC vt220 emulation with 25 lines,
	cols#80, lines#25,
	is2=\E[1;25r\E[25;1H, use=pcvtXX,
pcvt28|DEC vt220 emulation with 28 lines,
	cols#80, lines#28,
	is2=\E[1;28r\E[28;1H, use=pcvtXX,
pcvt35|DEC vt220 emulation with 35 lines,
	cols#80, lines#35,
	is2=\E[1;35r\E[35;1H, use=pcvtXX,
pcvt40|DEC vt220 emulation with 40 lines,
	cols#80, lines#40,
	is2=\E[1;40r\E[40;1H, use=pcvtXX,
pcvt43|DEC vt220 emulation with 43 lines,
	cols#80, lines#43,
	is2=\E[1;43r\E[43;1H, use=pcvtXX,
pcvt50|DEC vt220 emulation with 50 lines,
	cols#80, lines#50,
	is2=\E[1;50r\E[50;1H, use=pcvtXX,

#	NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
#	termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
#	50 lines entries; 132 columns
pcvt25w|DEC vt220 emulation with 25 lines and 132 cols,
	cols#132, lines#25,
	is2=\E[1;25r\E[25;1H, use=pcvtXX,
pcvt28w|DEC vt220 emulation with 28 lines and 132 cols,
	cols#132, lines#28,
	is2=\E[1;28r\E[28;1H, use=pcvtXX,
pcvt35w|DEC vt220 emulation with 35 lines and 132 cols,
	cols#132, lines#35,
	is2=\E[1;35r\E[35;1H, use=pcvtXX,
pcvt40w|DEC vt220 emulation with 40 lines and 132 cols,
	cols#132, lines#40,
	is2=\E[1;40r\E[40;1H, use=pcvtXX,
pcvt43w|DEC vt220 emulation with 43 lines and 132 cols,
	cols#132, lines#43,
	is2=\E[1;43r\E[43;1H, use=pcvtXX,
pcvt50w|DEC vt220 emulation with 50 lines and 132 cols,
	cols#132, lines#50,
	is2=\E[1;50r\E[50;1H, use=pcvtXX,

#	OpenBSD implements a color variation
pcvt25-color|DEC vt220 emulation with 25 lines and color,
	cols#80, lines#25,
	is2=\E[1;25r\E[25;1H, kf1=\EOP, kf10=\E[29~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, use=pcvtXX,
	use=ecma+color,

# Terminfo entries to enable the use of the ncurses library in colour on a
# NetBSD-arm32 console (only tested on a RiscPC).
# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98
# modified codes for setf/setb to setaf/setab, then to klone+color, corrected
# typo in invis - TD
arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
	am, bce, msgr, xenl, xon,
	cols#80, it#8, lines#30,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n,
	invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
	kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
	kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v,
	kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>,
	rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr,
	use=klone+color,

arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
	cols#132, lines#50, use=arm100,

# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
# manufactured by Sharp for the Japanese market.
# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
x68k|x68k-ite|NetBSD/x68k ITE,
	cols#96, lines#32,
	kclr=\E[9~, khlp=\E[28~, use=vt220-base,

# <tv@pobox.com>:
# Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
#
# (still unfinished, but good enough so far.)
ofcons|DNARD OpenFirmware console,
	bw,
	cols#80, lines#30,
	bel=^G, blink=\2335m, bold=\2331m, clear=^L, cr=\r,
	cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
	cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
	dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K,
	flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL,
	il1=\233L, ind=\n, invis=\2338m, kbs=^H, kcub1=\233D,
	kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P,
	kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W,
	kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r,
	kf9=\2330p, knp=\233/, kpp=\233?, nel=\r\n, rev=\2337m,
	rmso=\2330m, rmul=\2330m,
	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t2%;%?%p7%t8
	    %;%?%p1%p3%|%t;7%;m,
	sgr0=\2330m, smso=\2337m, smul=\2334m,

# NetBSD "wscons" emulator in vt220 mode.
# This entry is based on the NetBSD termcap entry, correcting the ncv value.
# The emulator renders underlined text in red.  Colors are otherwise usable.
#
# Testing the emulator and reading the source code (NetBSD 2.0), it appears
# that "vt220" is inaccurate.  There are a few vt220-features, but most of the
# vt220 screens in vttest do not work with this emulator.  For instance, it
# identifies itself (primary DA response) as a vt220 with selective erase.  But
# the selective erase feature does not work.  The secondary response is copied
# from Kermit's emulation of vt220, does not correspond to actual vt220.  At
# the level of detail in a termcap, it is a passable emulator, since ECH does
# work.  Don't use it on a VMS system -TD
wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
	bce, msgr,
	colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64,
	is2=\E[r\E[25;1H, kdch1=\E[3~, kend=\E[8~, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[7~, op=\E[m, rs1=\Ec,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt220,

wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
	km, use=wsvt25,

# NetBSD 6.x still uses wscons, with minor changes (2014/02/22) -TD
#
# TERM is by default vt100 for the console, wsvt25 for other ttys.
# Initial testing set TERM=xterm, based on comments by developers, found too
# many differences to continue in that path.  However, test-results may be
# useful to people curious about compatibility with xterm.
#
# Testing with tack:
# -----------------
# Failed: cbt, bel, flash, cvvis, smul (color), blink, invis
# There is color-bleeding in the color-pairs screen.
# Attributes do not work with color
# Failed: vpa/hpa
# Failed: kf1-kf4, kf13-kf48, khome, kend
#	(effectively xterm-r6 for function-keys)
# None of the function or cursor key-modifiers are encoded.
# Console hangs in the smm/rmm test if TERM=xterm, does not show test
#
# Testing with vttest:
# -------------------
# Identifies as vt220 with selective erase
#	(however, selective erase refers to DECSCA, SPA)
# Does not implement vt52
# Uses spaces to simulate double-size characters
# Does not support 8-bit controls
# Does not support VT220 reports
# Does not support send/receive mode
# Supports ECH (like rxvt)
# Does not support DECSCA
# Does not support any of the ISO-6429 cursor-movement
# Does not support any of the ISO-6429 miscellaneous tests
#	(SL/SR also leave unexpected char on screen too)
# Background does not change in menu 11.6.9 (SGR 22-27)
# None of the xterm special features tests work
netbsd6|NetBSD wscons in 25 line DEC VT100 mode,
	kbs=^?, use=wsvt25,

# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
# DECstation/pmax.
rcons|BSD rasterconsole,
	use=sun-il,
# Color version of above. Color currently only provided by NetBSD.
rcons-color|BSD rasterconsole with ANSI color,
	bce,
	colors#8, pairs#64,
	op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons,

# mgterm -- MGL/MGL2, MobileGear Graphic Library
# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k}
# -- the setf/setb are probably incorrect, more likely setaf/setab -TD
# -- compare with cons25w
mgterm|MGL/MGL2 MobileGear Graphic Library,
	OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
	colors#8, cols#80, it#8, lines#18, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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, dim=\E[30;1m, 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%d`, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
	kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q,
	kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
	kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8,
	rev=\E[7m, ri=\E[T, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7,
	setb=\E[4%p1%dm, setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m,
	vpa=\E[%i%p1%dd, use=ecma+index,

#### FreeBSD console entries
#
# From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996
# Andrey Chernov maintains the FreeBSD termcap distributions.
#
# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade
# or comment out the :cb: capability in the console entry.
#
# Alexander Lukyanov reports:
# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there.
# Now el1 clears not only to the line beginning, but also a large chunk
# of previous line. But there is another bug - ech does not work at all.
#

# for syscons
# common entry without semigraphics
# Bug: The <op> capability resets attributes.
# Bug? The ech and el1 attributes appear to move the cursor in some cases; for
# instance el1 does if the cursor is moved to the right margin first.  Removed
# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K)
#
# Setting colors turns off reverse; we cannot guarantee order, so use ncv.
# Note that this disables standout with color.
#
# The emulator sends difference strings based on shift- and control-keys,
# like scoansi:
#	F13-F24 are shifted F1-F12
#	F25-F36 are control F1-F12
#	F37-F48 are shift+control F1-F12
cons25w|ansiw|ansi80x25-raw|FreeBSD console (25-line raw mode),
	am, bce, bw, eo, msgr, npc,
	colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD, cub1=^H, 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,
	cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
	kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a,
	kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N,
	kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j,
	kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o,
	kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s,
	kf34=\E[t, kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x,
	kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[,
	kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`,
	kf48=\E[{, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
	khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E,
	op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rmso=\E[m,
	rs2=\E[x\E[m\Ec, sc=\E7, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?
	    %p6%t;1%;m,
	sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, use=ecma+index,
cons25|ansis|ansi80x25|FreeBSD console (25-line ansi mode),
	acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l
	     \332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~
	     \371,
	use=cons25w,
cons25-debian|FreeBSD console with debian backspace (25-line ansi mode),
	kbs=^?, kdch1=\E[3~, use=cons25,
cons25-m|ansis-mono|ansi80x25-mono|FreeBSD console (25-line mono ansi mode),
	colors@, pairs@,
	bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
	smul=\E[4m, use=cons25,
cons30|ansi80x30|FreeBSD console (30-line ansi mode),
	lines#30, use=cons25,
cons30-m|ansi80x30-mono|FreeBSD console (30-line mono ansi mode),
	lines#30, use=cons25-m,
cons43|ansi80x43|FreeBSD console (43-line ansi mode),
	lines#43, use=cons25,
cons43-m|ansi80x43-mono|FreeBSD console (43-line mono ansi mode),
	lines#43, use=cons25-m,
cons50|ansil|ansi80x50|FreeBSD console (50-line ansi mode),
	lines#50, use=cons25,
cons50-m|ansil-mono|ansi80x50-mono|FreeBSD console (50-line mono ansi mode),
	lines#50, use=cons25-m,
cons60|ansi80x60|FreeBSD console (60-line ansi mode),
	lines#60, use=cons25,
cons60-m|ansi80x60-mono|FreeBSD console (60-line mono ansi mode),
	lines#60, use=cons25-m,
cons25r|pc3r|ibmpc3r|cons25-koi8-r|FreeBSD console w/koi8-r cyrillic,
	acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m
	     \204n\212q\0t\206u\207v\211w\210x\201y\230z\231~
	     \225,
	use=cons25w,
cons25r-m|pc3r-m|ibmpc3r-mono|cons25-koi8r-m|FreeBSD console w/koi8-r cyrillic (mono),
	colors@, pairs@,
	op@, rmul=\E[m, setab@, setaf@,
	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;30;1%;%?%p6%t;1%;m,
	smul=\E[4m, use=cons25r,
cons50r|cons50-koi8r|FreeBSD console w/koi8-r cyrillic (50 lines),
	lines#50, use=cons25r,
cons50r-m|cons50-koi8r-m|FreeBSD console w/koi8-r cyrillic (50-line mono),
	lines#50, use=cons25r-m,
cons60r|cons60-koi8r|FreeBSD console w/koi8-r cyrillic (60 lines),
	lines#60, use=cons25r,
cons60r-m|cons60-koi8r-m|FreeBSD console w/koi8-r cyrillic (60-line mono),
	lines#60, use=cons25r-m,
# ISO 8859-1 FreeBSD console
cons25l1|cons25-iso8859|FreeBSD console w/iso 8859-1 chars,
	acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k
	     \214l\215m\216n\217o\220p\221q\222r\223s\224t\225u
	     \226v\227w\230x\231y\232z\233~\237,
	use=cons25w,
cons25l1-m|cons25-iso-m|FreeBSD console w/iso 8859-1 chars (mono),
	colors@, pairs@,
	bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
	smul=\E[4m, use=cons25l1,
cons50l1|cons50-iso8859|FreeBSD console w/iso 8859-1 chars (50 lines),
	lines#50, use=cons25l1,
cons50l1-m|cons50-iso-m|FreeBSD console w/iso 8859-1 chars (50-line mono),
	lines#50, use=cons25l1-m,
cons60l1|cons60-iso|FreeBSD console w/iso 8859-1 chars (60 lines),
	lines#60, use=cons25l1,
cons60l1-m|cons60-iso-m|FreeBSD console w/iso 8859-1 chars (60-line mono),
	lines#60, use=cons25l1-m,

# Starting with FreeBSD 8, an alternative configuration for syscons is provided,
# which is intended to be xterm-compatible.  See for example
#	http://svnweb.freebsd.org/base/stable/8/sys/dev/syscons/
# in particular scterm-teken.c
#
# For FreeBSD 9 and 10:
# --------------------
# The /etc/ttys entries for console and other ttys are all configured to set
# TERM=xterm.
#
# Testing with tack:
# There is no VT100 line-drawing (uses +'s and -'s)
# Shifted f1-f12 give cons25 codes, rather than xterm function-keys
#
# Testing with vttest:
# Menu 2 diamonds don't work, blink ditto, light background ditto
# The terminal identifies itself as VT100 with AVO
# There is no VT52 support
# There is no doublesize character support
# The terminal supports ECH (like rxvt)
# The terminal does not support send/receive mode
# The terminal supports all of the ISO-6429 cursor-movement
# The terminal supports some of the ISO-6429 miscellaneous tests
#	(SL/SR also leave unexpected char on screen too)
#
# Considering cons25 as a base, the line-drawing mostly works, but is missing
# the cells which happen to have ASCII control-character values:
#	-    ^X    arrow pointing up
#	.    ^Y    arrow pointing down
#	i    ^Y    lantern
#	`    ^D    diamond
#
# Those are removed from this entry's acsc string to avoid confusion.
# The resulting description provides correct line-drawing and function-keys -TD
teken|syscons with teken,
	bw@, mir, xenl,
	acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q
	     \304t\303u\264v\301w\302x\263y\363z\362~\371,
	cvvis@, hpa=\E[%i%p1%dG, hts=\EH, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[F, kent=\r,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\E[2~, knp=\E[6~,
	kpp=\E[5~, rmir=\E[4l, smir=\E[4h, tbc=\E[3g,
	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
	vpa=\E[%i%p1%dd, use=vt220+cvis, use=cons25,

#### 386BSD and BSD/OS Consoles
#

# This was the original 386BSD console entry (I think).
# Some places it's named oldpc3|oldibmpc3.
# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
origpc3|origibmpc3|IBM PC 386BSD console,
	OTbs, am, bw, eo, xon,
	cols#80, lines#25,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x,
	rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x,
	smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x,

# description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
oldpc3|oldibmpc3|old IBM PC BSD/386 console,
	OTbs, km,
	lines#25,
	bel=^G, bold=\E[=15F, cr=\r, cud1=\n, dim=\E[=8F, dl1=\E[M,
	ht=^I, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F,
	knp=\E[G, kpp=\E[I, nel=\r\n, sgr0=\E[=R,

# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
# Note, the emulator supports many of the additional console features
# listed in the iBCS2 (e.g. character-set selection) though not all
# are described here.  This entry really ought to be upgraded.
# Also note, the console will also work with fewer lines after doing
# "stty rows NN", e.g. to use 24 lines.
# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996)
# Bug: The <op> capability resets attributes.
bsdos-pc|IBM PC BSD/OS console,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
	    %t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	use=bsdos-pc-nobold,

bsdos-pc-nobold|BSD/OS PC console w/o bold,
	use=klone+color, use=bsdos-pc-m,

bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono,
	OTbs, am, eo, km, xon,
	cols#80, it#8, lines#25,
	bel=^G, clear=\Ec, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
	kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n, rc=\E8, sc=\E7,
	sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7
	    %t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
	use=klone+sgr8,

# Old names for BSD/OS PC console used in releases before 4.1.
pc3|BSD/OS on the PC console,
	use=bsdos-pc-nobold,
ibmpc3|pc3-bold|BSD/OS on the PC console with bold instead of underline,
	use=bsdos-pc,

# BSD/OS on the SPARC
bsdos-sparc|Sun SPARC BSD/OS console,
	use=sun,

# BSD/OS on the PowerPC
bsdos-ppc|PowerPC BSD/OS console,
	use=bsdos-pc,


#### DEC VT52
# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
#
# Actually (TD pointed this out at the time the acsc string was added):
# vt52 shouldn't define full acsc since most of the cells don't match.
# see vt100 manual page A-31.  This is the list that does match:
#	f degree
#	g plus/minus
#	h right-arrow
#	k down-arrow
#	m scan-1
#	o scan-3
#	q scan-5
#	s scan-7
# The line-drawing happens to work in several terminal emulators, but should
# not be used as a guide to the capabilities of the vt52.  Note in particular
# that vt52 does not support line-drawing characters (the scan-X values refer
# to a crude plotting feature) -TD
vt52|DEC vt52,
	OTbs,
	it#8, lines#24,
	acsc=+h.k0affggolpnqprrss, home=\EH, kbs=^H, nel=\r\n,
	ri=\EI, rmacs=\EG, rmkx=\E>, smacs=\EF, smkx=\E=, u8=\E/[KL],
	use=vt50h,

# This is more likely the "vt52" that you would see in emulation, i.e., no
# keypad, no graphics.
vt52-basic|vt52 for emulators,
	cols#80, it#8, lines#24,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
	home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI,

#### DEC VT100 and compatibles
#
# DEC terminals from the vt100 forward are collected here. Older DEC terminals
# and micro consoles can be found in the `obsolete' section.  More details on
# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be
# found near the end of this file.
#
# Except where noted, these entries are DEC's official terminfos.
# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
# Engineering for more information.  Updated terminfos and termcaps
# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
#
# In October 1995 DEC sold its terminals business, including the VT and Dorio
# line and trademark, to SunRiver Data Systems.  SunRiver has since changed
# its name to Boundless Technologies; see http://www.boundless.com.
#

# NOTE:  Any VT100 emulation, whether in hardware or software, almost
# certainly includes what DEC called the `Level 1 editing extension' codes;
# only the very oldest VT100s lacked these and there probably aren't any of
# those left alive.  To capture these, use one of the VT102 entries.
#
# Note that the <xenl> glitch in vt100 is not quite the same as on the Concept,
# since the cursor is left in a different position while in the
# weird state (concept at beginning of next line, vt100 at end
# of this line) so all versions of vi before 3.7 don't handle
# <xenl> right on vt100. The correct way to handle <xenl> is when
# you output the char in column 80, immediately output CR LF
# and then assume you are in column 1 of the next line. If <xenl>
# is on, am should be on too.
#
# I assume you have smooth scroll off or are at a slow enough baud
# rate that it doesn't matter (1200? or less). Also this assumes
# that you set auto-nl to "on", if you set it off use vt100-nam
# below.
#
# The padding requirements listed here are guesses. It is strongly
# recommended that xon/xoff be enabled, as this is assumed here.
#
# The vt100 uses <rs2> and <rf> rather than <is2>/<tbc>/<hts> because the
# tab settings are in non-volatile memory and don't need to be
# reset upon login. Also setting the number of columns glitches
# the screen annoyingly. You can type "reset" to get them set.
#
# The VT100 series terminals have cursor ("arrows") keys which can operate
# in two different modes: Cursor Mode and Application Mode.  Cursor Mode
# is the reset state, and is assumed to be the normal state.  Application
# Mode is the "set" state.  In Cursor Mode, the cursor keys transmit
# "Esc [ {code}" sequences, conforming to ANSI standards.  In Application
# Mode, the cursor keys transmit "Esc O <code>" sequences.  Application Mode
# was provided primarily as an aid to the porting of VT52 applications.  It is
# assumed that the cursor keys are normally in Cursor Mode, and expected that
# applications such as vi will always transmit the <smkx> string.  Therefore,
# the definitions for the cursor keys are made to match what the terminal
# transmits after the <smkx> string is transmitted.  If the <smkx> string
# is a null string or is not defined, then cursor keys are assumed to be in
# "Cursor Mode", and the cursor keys definitions should match that assumption,
# else the application may fail.  It is also expected that applications will
# always transmit the <rmkx> string to the terminal before they exit.
#
# The VT100 series terminals have an auxiliary keypad, commonly referred to as
# the "Numeric Keypad", because it is a cluster of numeric and function keys.
# The Numeric Keypad which can operate in two different modes: Numeric Mode and
# Application Mode.  Numeric Mode is the reset state, and is assumed to be
# the normal state.  Application Mode is the "set" state.  In Numeric Mode,
# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
# Enter key transmits the same as the Return key (Note: the Return key
# can be configured to send either LF (\015) or CR LF).  In Application Mode,
# all the keypad keys transmit "Esc O {code}" sequences.  The PF1 - PF4 keys
# always send the same "Esc O {code}" sequences.  It is assumed that the keypad
# is normally in Numeric Mode.  If an application requires that the keypad be
# in Application Mode then it is expected that the user, or the application,
# will set the TERM environment variable to point to a terminfo entry which has
# defined the <smkx> string to include the codes that switch the keypad into
# Application Mode, and the terminfo entry will also define function key
# fields to match the Application Mode control codes.  If the <smkx> string
# is a null string or is not defined, then the keypad is assumed to be in
# Numeric Mode.  If the <smkx> string switches the keypad into Application
# Mode, it is expected that the <rmkx> string will contain the control codes
# necessary to reset the keypad to "Normal" mode, and it is also expected that
# applications which transmit the <smkx> string will also always transmit the
# <rmkx> string to the terminal before they exit.
#
# Here's a diagram of the VT100 keypad keys with their bindings.
# The top line is the name of the key (some DEC keyboards have the keys
# labelled somewhat differently, like GOLD instead of PF1, but this is
# the most "official" name).  The second line is the escape sequence it
# generates in Application Keypad mode (where "$" means the ESC
# character).  The third line contains two items, first the mapping of
# the key in terminfo, and then in termcap.
#   _______________________________________
#  |   PF1   |   PF2   |   PF3   |   PF4   |
#  |   $OP   |   $OQ   |   $OR   |   $OS   |
#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
#  |    7         8         9         -    |
#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
#  |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________|
#  |    4    |    5    |    6    |    ,    |
#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
#  |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_|
#  |    1    |    2    |    3    |         |
#  |   $Oq   |   $Or   |   $Os   |  enter  |
#  |_ka1__K1_|_kb2__K2_|_ka3__K3_|  $OM    |
#  |         0         |   .     |         |
#  |        $Op        |  $On    |         |
#  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
#
# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the
# terminfo guidelines.  That is a compromise used to assign the remaining
# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
# support:
vt100+keypad|DEC vt100 numeric keypad no fkeys,
	ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn,
vt100+pfkeys|DEC vt100 numeric keypad,
	kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	use=vt100+keypad,
vt100+fnkeys|DEC vt100 numeric keypad,
	kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl,
	kf9=\EOw, use=vt100+pfkeys,
#
# A better adaptation to modern keyboards such as the PC's, which have a dozen
# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
# use the 5-key arrangement to model the arrow keys as suggested in the
# terminfo guidelines:
#   _______________________________________
#  |   PF1   |   PF2   |   PF3   |   PF4   |
#  |   $OP   |   $OQ   |   $OR   |   $OS   |
#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
#  |    7         8         9         -    |
#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
#  |_ka1__K1_|_________|_ka3__K3_|_________|
#  |    4    |    5    |    6    |    ,    |
#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
#  |_________|_kb2__K2_|_________|_________|
#  |    1    |    2    |    3    |         |
#  |   $Oq   |   $Or   |   $Os   |  enter  |
#  |_kc1__K4_|_________|_kc3__K5_|  $OM    |
#  |         0         |   .     |         |
#  |        $Op        |  $On    |         |
#  |___________________|_________|_kent_@8_|
#
vt220+keypad|DEC vt220 numeric keypad,
	ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt,
	kb3=\EOv, kc2=\EOr,
#
vt100+enq|ncurses extension for vt100-style ENQ,
	u8=\E[?1;2c, use=ansi+enq,
vt102+enq|ncurses extension for vt102-style ENQ,
	u8=\E[?6c, use=ansi+enq,
#
# And here, for those of you with orphaned VT100s lacking documentation, is
# a description of the soft switches invoked when you do `Set Up'.
#
#  Scroll 0-Jump               Shifted 3   0-#
#  |      1-Smooth             |           1-British pound sign
#  | Autorepeat 0-Off          | Wrap Around 0-Off
#  | |          1-On           | |           1-On
#  | | Screen 0-Dark Bkg       | | New Line 0-Off
#  | | |      1-Light Bkg      | | |        1-On
#  | | | Cursor 0-Underline    | | | Interlace 0-Off
#  | | | |      1-Block        | | | |         1-On
#  | | | |                     | | | |
#  1 1 0 1       1 1 1 1       0 1 0 0       0 0 1 0       <--Standard Settings
#                | | | |                     | | | |
#                | | | Auto XON/XOFF 0-Off   | | | Power 0-60 Hz
#                | | |               1-On    | | |       1-50 Hz
#                | | ANSI/VT52 0-VT52        | | Bits Per Char. 0-7 Bits
#                | |           1-ANSI        | |                1-8 Bits
#                | Keyclick 0-Off            | Parity 0-Off
#                |          1-On             |        1-On
#                Margin Bell 0-Off           Parity Sense 0-Odd
#                            1-On                         1-Even
#
# The following SET-UP modes are assumed for normal operation:
#	ANSI_MODE	AUTO_XON/XOFF_ON	NEWLINE_OFF	80_COLUMNS
#	WRAP_AROUND_ON  JUMP_SCROLL_OFF
# Other SET-UP modes may be set for operator convenience or communication
# requirements; I recommend
#	AUTOREPEAT_ON	BLOCK_CURSOR	MARGIN_BELL_OFF    SHIFTED_3_#
# Unless you have a graphics add-on such as Digital Engineering's VT640
# (and even then, whenever it can be arranged!) you should set
#	INTERLACE_OFF
#
# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
vt100|vt100-am|DEC vt100 (w/advanced video),
	OTbs, mc5i, xenl, xon,
	vt#3,
	csr=\E[%i%p1%d;%p2%dr, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;$<2>,
	smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>,
	use=vt100+4bsd, use=vt100+fnkeys,
vt100+4bsd|DEC vt100 from 4.0BSD,
	am, msgr,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmso=\E[m$<2>,
	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smso=\E[1;7m$<2>,
	smul=\E[4m$<2>, tbc=\E[3g,
vt100nam|vt100-nam|vt100 no automargins,
	am@, xenl@,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt100-am,
vt100-vb|DEC vt100 (w/advanced video) & no beep,
	bel@, flash=\E[?5h$<100/>\E[?5l, use=vt100,

# Ordinary vt100 in 132 column ("wide") mode.
vt100-w|vt100-w-am|DEC vt100 132 cols (w/advanced video),
	cols#132, lines#24,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am,
vt100-w-nam|vt100-nam-w|DEC vt100 132 cols (w/advanced video no automargin),
	cols#132, lines#14, vt@,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam,

# vt100 with no advanced video.
vt100-nav|vt100 without advanced video option,
	xmc#1,
	blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m,
	smul@, use=vt100,
vt100-nav-w|vt100-w-nav|DEC vt100 132 cols 14 lines (no advanced video option),
	cols#132, lines#14, use=vt100-nav,

# vt100 with one of the 24 lines used as a status line.
# We put the status line on the top.
vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline,
	eslok, hs,
	lines#23,
	clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr,
	cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8,
	fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8,
	tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am,

# Status line at bottom.
# Clearing the screen will clobber status line.
vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline,
	eslok, hs,
	lines#23,
	dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H,
	tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am,

# Most of the `vt100' emulators out there actually emulate a vt102
# This entry (or vt102-nsgr) is probably the right thing to use for
# these.
vt102|DEC vt102,
	dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h,
	use=vt100,
vt102-w|DEC vt102 in wide mode,
	cols#132,
	rs3=\E[?3h, use=vt102,

# Many brain-dead PC comm programs that pretend to be `vt100-compatible'
# fail to interpret the ^O and ^N escapes properly.  Symptom: the <sgr0>
# string in the canonical vt100 entry above leaves the screen littered
# with little  snowflake or star characters (IBM PC ROM character \017 = ^O)
# after highlight turnoffs.  This entry should fix that, and even leave
# ACS support working, at the cost of making multiple-highlight changes
# slightly more expensive.
# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes),
	sgr@, sgr0=\E[m, use=vt102,

# VT125 Graphics CRT.  Clear screen also erases graphics
# Some vt125's came configured with vt102 support.
vt125|vt125 graphics terminal,
	mir,
	clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100,

# This isn't a DEC entry, it came from University of Wisconsin.
# (vt131: I added <rmam>/<smam> based on the init string, also <OTbs> -- esr)
vt131|DEC vt131,
	OTbs, am, xenl,
	cols#80, it#8, lines#24, vt#3,
	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
	ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>, ri=\EM$<5/>,
	rmam=\E[?7h, rmkx=\E[?1l\E>, rmso=\E[m$<2/>,
	rmul=\E[m$<2/>,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$<2/>, smul=\E[4m$<2/>,

# vt132 - like vt100 but slower and has ins/del line and such.
# I'm told that <smir>/<rmir> are backwards in the terminal from the
# manual and from the ANSI standard, this describes the actual
# terminal. I've never actually used a vt132 myself, so this
# is untested.
#
vt132|DEC vt132,
	xenl,
	dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
	ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100,

# This vt220 description maps F5--F9 to the second block of function keys
# at the top of the keyboard.  The "DO" key is used as F10 to avoid conflict
# with the key marked (ESC) on the vt220.  See vt220d for an alternate mapping.
# PF1--PF4 are used as F1--F4.
#
# added msgr -TD
vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
	OTbs, OTpt, am, mir, msgr, xenl, xon,
	cols#80, lines#24, vt#3,
	OTnl=\n,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>,
	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[29~, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~,
	kf8=\E[20~, kf9=\E[21~, kich1=\E[2~, rc=\E8, rev=\E[7m$<2>,
	rf=/usr/share/tabset/vt100, ri=\EM$<14/>,
	rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
	rmul=\E[24m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, use=vt220+pcedit, use=vt220+cvis,

# Here's a picture of the Sun/PC editing keypad:
#	+--------+--------+--------+
#	| Insert | Home   | PageUp |
#	+--------+--------+--------+
#	| Delete | End    | PageDn |
#	+--------+--------+--------+
#
# VT220 emulators such as xterm, using PC-keyboards use a different layout than
# the VT220 keyboard:
#	VT220		PC
#	-----		--
#	Prev		PageUp
#	Next		PageDn
#	Insert		Insert
#	Remove		Delete
#	Find		Home
#	Select		End
vt220+pcedit|editing-keypad for vt220 using PC keyboard,
	kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~,
	knp=\E[6~, kpp=\E[5~,
vt220+vtedit|editing-keypad for vt220 using DEC keyboard,
	kdch1=\E[3~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~,

# A much better description of the VT200/220; used to be vt220-8
# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1
# designation to accommodate bug in pcvt -TD
#
# Here's a picture of the VT220 editing keypad:
#	+--------+--------+--------+
#	| Find   | Insert | Remove |
#	+--------+--------+--------+
#	| Select | Prev   | Next   |
#	+--------+--------+--------+
#
# Still, this is a "base" entry.  Software emulators commonly leave out the
# DECTCEM feature -TD
vt220-base|DEC VT220 as emulated,
	OTbs, am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, enacs=\E)0,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
	il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E[?7h\E[>\E[?1l\E F\E[?4l, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~,
	krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt220+vtedit,
	use=ansi+pp, use=ansi+enq,
vt220|vt200|DEC vt220,
	use=vt220+cvis, use=vt220-base,
vt220-w|vt200-w|DEC vt220 in wide mode,
	cols#132,
	rs3=\E[?3h, use=vt220,
vt220-8bit|vt220-8|vt200-8bit|vt200-8|DEC vt220/200 in 8-bit mode,
	OTbs, am, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r,
	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
	cud=\233%p1%dB, cud1=\n, cuf=\233%p1%dC, cuf1=\233C,
	cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A,
	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
	ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0,
	flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH,
	ich=\233%p1%d@, if=/usr/share/tabset/vt100,
	il=\233%p1%dL, il1=\233L, ind=\ED,
	is2=\233?7h\233>\233?1l\E F\233?4l, kbs=^H,
	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
	kdch1=\2333~, kf1=\EOP, kf10=\23321~, kf11=\23323~,
	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf17=\23331~,
	kf18=\23332~, kf19=\23333~, kf2=\EOQ, kf20=\23334~,
	kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~, kf8=\23319~,
	kf9=\23320~, kfnd=\2331~, khlp=\23328~, khome=\233H,
	kich1=\2332~, knp=\2336~, kpp=\2335~, krdo=\23329~,
	kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i,
	mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8, rev=\2337m, ri=\EM,
	rmacs=\E(B, rmam=\233?7l, rmir=\2334l, rmso=\23327m,
	rmul=\23324m, rs1=\233?3l, sc=\E7,
	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m
	    %?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, smir=\2334h,
	smso=\2337m, smul=\2334m, tbc=\2333g, use=vt220+cvis8,

# vt220d:
# This vt220 description regards F6--F10 as the second block of function keys
# at the top of the keyboard.  This mapping follows the description given
# in the VT220 Programmer Reference Manual and agrees with the labeling
# on some terminals that emulate the vt220.  There is no support for an F5.
# See vt220 for an alternate mapping.
#
vt220d|DEC VT220 in vt100 mode with DEC function key labeling,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf5@, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old,

vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
	am@,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,

# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko
# (not an official DEC entry!)
# The problem with real vt220 terminals is they don't send escapes when in
# in vt220 mode.  This can be gotten around two ways.  1> don't send
# escapes or 2> put the vt220 into vt100 mode and use all the nifty
# features of vt100 advanced video which it then has.
#
# This entry takes the view of putting a vt220 into vt100 mode so
# you can use the escape key in emacs and everything else which needs it.
#
# You probably don't want to use this on a VMS machine since VMS will think
# it has a vt220 and will get fouled up coming out of emacs
#
# From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996
# (Added vt100 <rc>,<sc> to quiet a tic warning -- esr)
# added msgr -TD
vt200-js|vt220-js|DEC vt200 series with jump scroll,
	am, msgr,
	cols#80,
	bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
	ht=^I, il1=\E[L, ind=\ED,
	is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\E[?5l\E[?6l\E[?7h\E[?8h\E[
	    ?25h\E>\E[m,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8,
	rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
	use=vt220+cvis,

# This was DEC's vt320.  Use the purpose-built one below instead
#vt320|DEC VT320 in vt100 emulation mode,
#	use=vt220,

# Use v320n for SCO's LYRIX.  Otherwise, use Adam Thompson's vt320-nam.
#
vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
	am@,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h,
	use=vt220-base,

# These entries are not DEC's official ones, they were purpose-built for the
# VT320.  Here are the designer's notes:
# <kel> is end on a PC kbd.  Actually 'select' on a VT.  Mapped to
# 'Erase to End of Field'... since nothing seems to use 'end' anyways...
# khome is Home on a PC kbd.  Actually 'FIND' on a VT.
# Things that use <knxt> usually use tab anyways... and things that don't use
# tab usually use <knxt> instead...
# kprv is same as tab - Backtab is useless...
# I left out <sgr> because of its RIDICULOUS complexity,
# and the resulting fact that it causes the termcap translation of the entry
# to SMASH the 1k-barrier...
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
# (vt320: uncommented <fsl> --esr)
vt320|vt300|DEC vt320 7 bit terminal,
	am, hs, mir, msgr, xenl,
	cols#80, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I,
	kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=dec+pp, use=vt220+cvis, use=vt220+keypad, use=dec+sl,
	use=ansi+enq,
vt320-nam|vt300-nam|DEC vt320 7 bit terminal with no am to make SAS happy,
	am@,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320,
# We have to init 132-col mode, not 80-col mode.
vt320-w|vt300-w|DEC vt320 wide 7 bit terminal,
	cols#132, wsl#132,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, use=vt320,
vt320-w-nam|vt300-w-nam|DEC vt320 wide 7 bit terminal with no am,
	am@,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320-w,

# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals
#   which are pretty much a superset of the VT320.  They have the
#   host writable status line, yet another different DRCS matrix size,
#   and such, but they add the DEC Technical character set, Multiple text
#   pages, selectable length pages, and the like.  The difference between
#   the vt330 and vt340 is that the former has only 2 planes and a monochrome
#   monitor, the latter has 4 planes and a color monitor.  These terminals
#   support VT131 and ANSI block mode, but as with much of these things,
#   termcap/terminfo doesn't deal with these features.
#
# Note that this entry is are set up in what was the standard way for GNU
# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
# keys were switched into application mode at the same time the numeric pad
# is switched into application mode.  This changes the definitions of the
# arrow keys.  Emacs v19 is smarter and mines its keys directly out of
# your termcap or terminfo entry,
#
# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
# (vt340: string capability "sb=\E[M" corrected to "sr";
# also, added <rmam>/<smam> based on the init string -- esr)
vt340|dec-vt340|vt330|dec-vt330|DEC vt340 graphics terminal with 24 line page,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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,
	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
	flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
	    \E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
	lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}\E[1;%dH, use=vt220+cvis,

# Left/right margins are supported in xterm since patch #279 (2012/05/10)
vt420+lrmm|VT420 left/right margins,
	mgc=\E[?69l, smglp=\E[?69h\E[%i%p1%ds,
	smglr=\E[?69h\E[%i%p1%d;%p2%ds,
	smgrp=\E[?69h\E[%i;%p1%ds,

# DEC doesn't supply a vt400 description, so we add Daniel Glasser's
# (originally written with vt420 as its primary name, and usable for it).
#
# VT400/420 -- This terminal is a superset of the vt320.  It adds the multiple
#    text pages and long text pages with selectable length of the vt340, along
#    with left and right margins, rectangular area text copy, fill, and erase
#    operations, selected region character attribute change operations,
#    page memory and rectangle checksums, insert/delete column, reception
#    macros, and other features too numerous to remember right now.  TERMCAP
#    can only take advantage of a few of these added features.
#
# Note that this entry is set up in what was the standard way for GNU
# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
# keys were switched into application mode at the same time the numeric pad
# is switched into application mode.  This changes the definitions of the
# arrow keys.  Emacs v19 is smarter and mines its keys directly out of
# your termcap entry,
#
# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:";
# also, added <rmam>/<smam> based on the init string -- esr)
vt400|vt400-24|dec-vt400|DEC vt400 24x80 column autowrap,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J$<10/>, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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,
	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
	el=\E[K$<4/>, flash=\E[?5h$<200/>\E[?5l, fsl=\E[$},
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
	    \E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
	lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E<\E[?3l\E[!p\E[?7h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}\E[1;%dH, use=dec+sl, use=vt220+cvis,

# (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
# a missing <sc> -- esr)
# add msgr and other capabilities from vt220 -TD
vt420|DEC VT420,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<10>,
	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$<50>,
	el=\E[K$<3>, el1=\E[1K, enacs=\E)0,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[1;24r\E[24;1H,
	is3=\E[?67h\E[64;1"p, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[29~, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~,
	kf8=\E[20~, kf9=\E[21~, nel=\EE, rc=\E8, rev=\E[7m$<2>,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B$<4>,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
	smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=vt220+vtedit, use=ansi+pp, use=dec+sl, use=ansi+enq,
	use=vt220+cvis, use=vt420+lrmm,

# DEC VT220 and up support DECUDK (user-defined keys).  DECUDK (i.e., pfx)
# takes two parameters, the key and the string.  Translating the key is
# straightforward (keys 1-5 are not defined on real terminals, though some
# emulators define these):
#
#               if (key < 16) then  value = key;
#               else if (key < 21) then value = key + 1;
#               else if (key < 25) then value = key + 2;
#               else if (key < 27) then value = key + 3;
#               else if (key < 30) then value = key + 4;
#               else value = key + 5;
#
# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT".
# There's no provision in terminfo for emitting a string in this format, so the
# application has to know it.
#
vt420pc|DEC VT420 w/PC keyboard,
	kdch1=^?, kend=\E[4~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~,
	kf16=\E[14;2~, kf17=\E[15;2~, kf18=\E[17;2~,
	kf19=\E[18;2~, kf2=\E[12~, kf20=\E[19;2~, kf21=\E[20;2~,
	kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[23~,
	kf26=\E[24~, kf27=\E[25~, kf28=\E[26~, kf29=\E[28~,
	kf3=\E[13~, kf30=\E[29~, kf31=\E[31~, kf32=\E[32~,
	kf33=\E[33~, kf34=\E[34~, kf35=\E[35~, kf36=\E[36~,
	kf37=\E[23;2~, kf38=\E[24;2~, kf39=\E[25;2~, kf4=\E[14~,
	kf40=\E[26;2~, kf41=\E[28;2~, kf42=\E[29;2~,
	kf43=\E[31;2~, kf44=\E[32;2~, kf45=\E[33;2~,
	kf46=\E[34;2~, kf47=\E[35;2~, kf48=\E[36;2~, kf5=\E[15~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
	pctrm=USR_TERM:vt420pcdos:,
	pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>
	    %t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+
	    %d/%p2%s\E\\,
	use=vt420,

vt420pcdos|DEC VT420 w/PC for DOS Merge,
	lines#25,
	dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1
	      %{127}%=%t\E\177%e%p1%c%;,
	pctrm@,
	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@,
	sgr0=\E[m, smsc=\E[?1;2r\E[34h, use=vt420pc,

vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys,
	kdch1=^?, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, lf1=\EOP, lf2=\EOQ, lf3=\EOR, lf4=\EOS,
	use=vt420,

vt510|DEC VT510,
	use=vt420,
vt510pc|DEC VT510 w/PC keyboard,
	use=vt420pc,
vt510pcdos|DEC VT510 w/PC for DOS Merge,
	use=vt420pcdos,

# VT520/VT525
#
# The VT520 is a monochrome text terminal capable of managing up to
# four independent sessions in the terminal.  It has multiple ANSI
# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console)
# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950,
# 925 910+, ADDS A2).  This terminfo data is for the ANSI emulations only.
#
# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or
# [Alt]/[Print Screen] depending upon which keyboard and which
# terminal mode is being used.  If Set-Up has been disabled or
# assigned to an unknown key, Set-Up may be entered by pressing
# [F3] as the first key after power up, regardless of keyboard type.
vt520|DEC VT520,
	use=ansi+rca, use=vt420, use=ansi+tabs,

vt525|DEC VT525,
	use=vt520,

# I just got a brand new Boundless VT520 with that company's "ANSI 2011"
# Keyboard, which replaces the old LK41R-AA keyboard.
#
# In trying to get the function keys to work, I had to cobble my own
# terminfo.src entry, since the existing vt520 entry doesn't include most of
# the function keys.  If I blend the entries for "vt420f" and "vt220+keypad"
# I seem to get them all -Mike Gran
vt520ansi|Boundless VT520 ANSI,
	use=ansi+rca, use=vt420f, use=vt220+keypad,
	use=ansi+tabs,

#### VT100 emulations

# John Hawkinson <jhawk@MIT.EDU> tells us that the EWAN telnet for Windows
# (the best Windows telnet as of September 1995) presents the name `dec-vt100'
# to telnetd.   Michael Deutschmann <ldeutsch@mail.netshop.net> informs us
# that this works best with a stock vt100 entry.
dec-vt100|EWAN telnet's vt100 emulation,
	use=vt100,

# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996
dec-vt220|DOS tnvt200 terminal emulator,
	am@, use=vt220,

# Zstem340 is an (IMHO) excellent VT emulator for PC's.  I recommend it to
# anyone who needs PC VT340 emulation. (or anything below that level, for
# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's
# RDBM systems, it includes ReGIS and Sixel support!  I'm impressed...
# I can send the address if requested.
# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
z340|ZSTEM vt340 terminal emulator 132col 42line,
	lines#42,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, use=vt320-w,
z340-nam|ZSTEM vt340 terminal emulator 132col 42line (no automatic margins),
	am@,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, use=z340,

# expect-5.44.1.15/example/tkterm
# a minimal subset of a vt100 (compare with "news-unk).
#
# The missing "=" in smkx is not a typo (here), but an error in tkterm.
tt|tkterm|Don Libes' tk text widget terminal emulator,
	clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=\n, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	kf9=\EOX, rmkx=\E[?1l\E>, rmso=\E[m, smkx=\E[?1h\E,
	smso=\E[7m,

######## APPLE

#### Terminal.app

# nsterm*|Apple_Terminal - AppKit Terminal.app
#
# Terminal.app is a Terminal emulator bundled with NeXT's NeXTSTEP and
# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X
# Server and Mac OS X operating systems. There is also a
# "terminal.app" in GNUstep, but I believe it to be an unrelated
# codebase and I have not attempted to describe it here.
#
# For NeXTSTEP, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you
# are pretty much on your own. Use "nsterm-7-m" and hope for the best.
# You might also try "nsterm-7" and "nsterm-old" if you suspect your
# version supports color.
#
# To determine the version of Terminal.app you're using by running:
#
#     echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION"
#
# For Apple_Terminal v309+, use "nsterm-256color" (or "nsterm-bce")
#
# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm")
#
# For Apple_Terminal v71+/v100+, use "nsterm-bce".
#
# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s".
#
# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s".
#
# For all earlier versions (Apple_Terminal), try "nsterm-7-m"
# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s"
# might work too, but really you're on your own here since these
# systems are very obsolete and I can't test them. I do welcome
# patches, though :).

# Other Terminals:
#
# For GNUstep_Terminal, you're probably best off using "linux" or
# writing your own terminfo.

# For MacTelnet, you're on your own. It's a different codebase, and
# seems to be somewhere between "vt102", "ncsa" and "xterm-color".

# For iTerm.app, see "iterm".

#
# The AppKit Terminal.app descriptions all have names beginning with
# "nsterm". Note that the statusline (-s) versions use the window
# titlebar as a phony status line, and may produce warnings during
# compilation as a result ("tsl uses 0 parameters, expected 1".)
# Ignore these warnings, or even ignore these entries entirely. Apps
# which need to position the cursor or do other fancy stuff inside the
# status line won't work with these entries. They're primarily useful
# for programs like Pine which provide simple notifications in the
# status line. Please note that non-ASCII characters don't work right
# in the status line, since Terminal.app incorrectly interprets their
# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X
# versions) or only accepts status lines consisting entirely of
# characters from the first 256 Unicode positions (including C1 but
# not C0 or DEL.)
#
# The Mythology* of AppKit Terminal.app:
#
# In the days of NeXTSTEP 0.x and 1.x there were two incompatible
# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a
# shareware replacement for Terminal called "Stuart" which NeXT bought
# and used as the basis for the Terminal.app in NeXTSTEP 2+,
# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I
# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or
# capabilities for the early versions, but I believe that the
# TERM_PROGRAM_VERSION may have been reset at some point.
#
# The early versions were tailored to the NeXT character set. Sometime
# after the Apple acquisition the encoding was switched to MacRoman
# (initially with serious altcharset bugs due to incomplete conversion
# of the old NeXT code,) and then later to UTF-8. Also sometime during
# or just prior to the early days of Mac OS X, the Terminal grew ANSI
# 8-color support (initially buggy when combined with attributes, but
# that was later fixed.) More recently, around Mac OS X version 10.3
# or so (Terminal.app v100+) xterm-like 16-color support was added. In
# some versions (for instance 133-1 which shipped with Mac OS X
# version 10.4) this suffered from the <bce> bug, but that seems to
# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+).
#
# In the early days of Mac OS X the terminal was fairly buggy and
# would routinely crash under load. Many of these bugs seem to have
# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but
# some may still remain. This change seems to correspond to
# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as
# it did previously.
#
# * This may correspond with what actually happened, but I don't
#   know. It is based on guesswork, hearsay, private correspondence,
#   my faulty memory, and the following online sources and references:
#
# [1] "Three Scotts and a Duane" by Simson L. Garfinkel
# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html
#
# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia
# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep
#
# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
#   "nsterm" to comply with the name length and case conventions and
#   limitations of various software packages [notably Solaris terminfo
#   and UNIX.] A single Apple_Terminal alias is retained for
#   backwards-compatibility.
#
# * Added function key support (F1-F4). These only work in Terminal.app
#   version 51, hopefully the capabilities won't cause problems for people
#   using version 41.
#
# * Added "full color" (-c) entries which support the 16-color mode in
#   version 51.
#
# * By default, version 51 uses UTF-8 encoding with broken altcharset
#   support, so "ASCII" (-7) entries without altcharset support were
#   added.

# nsterm - AppKit Terminal.app
#
# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
# Terminal.app. It is a partial VT100 emulation with some xterm-like
# extensions. This terminfo was written to describe versions 41
# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
# version 10.1) of Terminal.app.
#
# Terminal.app runs under the Mac OS X Quartz windowing system (and
# other AppKit-supported windowing systems.)  On the Mac OS X machine I
# use, the executable for Terminal.app is:
# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
#
# If you're looking for a description of the full-screen system
# console which runs under Apple's Darwin operating system on PowerPC
# platforms, see the "xnuppc" entry instead.
#
# There were no function keys in version 41. In version 51, there are
# four working function keys (F1, F2, F3 and F4.) The function keys
# are included in all of these entries.
#
# It does not support mouse pointer position reporting. Under some
# circumstances the cursor can be positioned using option-click; this
# works by comparing the cursor position and the selected position,
# and simulating enough cursor-key presses to move the cursor to the
# selected position. This technique fails in all but the simplest
# applications.
#
# It provides partial ANSI color support (background colors interacted
# badly with bold in version 41, though, as reflected in :ncv:.) The
# monochrome (-m) entries are useful if you've disabled color support
# or use a monochrome monitor. The full color (-c) entries are useful
# in version 51, which doesn't exhibit the background color bug. They
# also enable an xterm-compatible 16-color mode.
#
# The configurable titlebar is set using xterm-compatible sequences;
# it is used as a status bar in the statusline (-s) entries. Its width
# depends on font sizes and window sizes, but 50 characters seems to
# be the default for an 80x24 window.
#
# The MacRoman character encoding is used for some of the alternate
# characters in the "MacRoman" entries; the "ASCII" (-7) entries
# disable alternate character set support entirely, and the "VT100"
# (-acs) entries rely instead on Terminal.app's own buggy VT100
# graphics emulation, which seems to think the character encoding is
# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
# are useful in Terminal.app version 51, which supports UTF-8 and
# other ASCII-compatible character encodings but does not correctly
# implement VT100 graphics; once VT100 graphics are correctly
# implemented in Terminal.app, the "VT100" (-acs) entries should be
# usable in any ASCII-compatible character encoding [except perhaps
# in UTF-8, where some experts argue for disallowing alternate
# characters entirely.]
#
# Terminal.app reports "vt100" as the terminal type, but exports
# several environment variables which may aid detection in a shell
# profile (i.e. .profile or .login):
#
# TERM=vt100
# TERM_PROGRAM=Apple_Terminal
# TERM_PROGRAM_VERSION=41      # in Terminal.app version 41
# TERM_PROGRAM_VERSION=51      # in Terminal.app version 51
#
# For example, the following Bourne shell script would detect the
# correct terminal type:
#
# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
# then
#     export TERM
#     if [ :"$TERM_PROGRAM_VERSION" = :41 ]
#     then
#         TERM="nsterm-old"
#     else
#         TERM="nsterm-c-7"
#     fi
# fi
#
# In a C shell derivative, this would be accomplished by:
#
# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
#     if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
#          if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
#              setenv TERM "nsterm-old"
#          else
#              setenv TERM "nsterm-c-7"
#          endif
#     endif
# endif

# The '+' entries are building blocks
nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
	am, bw, msgr, xenl, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
	ind=\n, invis=\E[8m, kbs=^?, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,

nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	enacs=\E(B\E)0, rmacs=^O,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, use=nsterm+7,

nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
	acsc=+\335\,\334-\366.\3770#`\327a:f\241g\261h#i
	     \360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{
	     \271|\255}\243~\245,
	enacs=\E(B\E)0, rmacs=^O,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, use=nsterm+7,

# compare with xterm+sl-twm
nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
	wsl#50, use=xterm+sl-twm,

nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
	op=\E[0m, use=ibm+16color,

nsterm+c41|AppKit Terminal.app v41 color support,
	colors#8, ncv#37, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,

# These are different combinations of the building blocks

# ASCII charset (-7)
nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome),
	use=nsterm+7,

nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
	use=nsterm+s, use=nsterm+7,

nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
	use=nsterm+c41, use=nsterm+7,

nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
	use=nsterm+c, use=nsterm+7,

nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
	use=nsterm+s, use=nsterm+c41, use=nsterm+7,

nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
	use=nsterm+s, use=nsterm+c, use=nsterm+7,

# VT100 alternate-charset (-acs)
nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
	use=nsterm+acs,

nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
	use=nsterm+s, use=nsterm+acs,

nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
	use=nsterm+c41, use=nsterm+acs,

nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
	use=nsterm+c, use=nsterm+acs,

nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
	use=nsterm+s, use=nsterm+c41, use=nsterm+acs,

nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
	use=nsterm+s, use=nsterm+c, use=nsterm+acs,

# MacRoman charset
nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
	use=nsterm+mac,

nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
	use=nsterm+s, use=nsterm+mac,

nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color),
	use=nsterm+c41, use=nsterm+mac,

nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
	use=nsterm+c, use=nsterm+mac,

nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
	use=nsterm+s, use=nsterm+c41, use=nsterm+mac,

nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
	use=nsterm+s, use=nsterm+c, use=nsterm+mac,

# In Mac OS X version 10.5 the format of the preferences has changed
# and a new, more complex technique is needed, e.g.,
#
#       python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass(
#       "NSUserDefaults");ud=NSUserDefaults.alloc();
#       ud.init();prefs=ud.persistentDomainForName_(
#       "com.apple.Terminal");prefs["Window Settings"][
#       prefs["Default Window Settings"]]["TerminalType"
#       ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs,
#       "com.apple.Terminal")' nsterm-16color
#
# and it is still not settable from the preferences dialog. This is
# tracked under rdar://problem/7365108 and rdar://problem/7365134
# in Apple's bug reporter.
#
# In OS X 10.5 (Leopard) the TERM which can be set in the preferences dialog
# defaults to xterm-color.  Alternative selections are ansi, dtterm, rxvt,
# vt52, vt100, vt102 and xterm.
nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
	bw@, mir, npc,
	dch=\E[%p1%dP, dch1=\E[P, flash=\E[?5h$<200/>\E[?5l,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~,
	kend=\E[F, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[22~, kf19=\E[33~, kf20=\E[34~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, knp=\E[6~, kpp=\E[5~, rmcup=\E[2J\E[?47l\E8,
	rmir=\E[4l, smcup=\E7\E[?47h, smir=\E[4h,
	vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C,
	use=nsterm-c-s-acs, use=vt220+cvis,

# The versions of Terminal.app in Mac OS X version 10.3.x seem to have
# the background color erase feature. The newer version 240.2 in Mac OS X
# version 10.5 does not.
#
# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
# and D P Schreber comparing to nsterm-c-s-acs.
#
# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM
# can be set in Terminal.app, e.g.,
#
#	defaults write com.apple.Terminal TermCapString nsterm-bce
#
# and that it is not set in Terminal's preferences dialog.
#
# Modified for OS X 10.8, omitting bw based on testing with tack -TD
#
# Notes:
# * The terminal description matches the default settings.
# * The keyboard is configurable via a dialog.
# * By default khome, kend, knext and kprev are honored only with a
#   shift-modifier.
# * There are bindings for control left/right arrow (but not up/down).
#   Added those to nsterm-16color, which is the version used for OS X 10.6
# * "Allow VT100 application keypage mode" is by default disabled.
#   There is no way to press keypad-comma unless application mode is enabled
#   and used.
# * 132-column mode stopped working during vttest's tests.  Consider it broken.
# * CHT, REP, SU, SD are buggy.
# * ECH works (also in Leopard), but is not used here for compatibility.
# * The terminal preferences dialog replaces xterm-color by xterm-16color and
#   xterm-256color.  However, it adds "nsterm", so it is possible to use the
#   nsterm entry from this file to override the MacPorts (20110404) or
#   system (20081102) copy of this file.
# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences
#   dialog defaults to xterm-256color.  Alternative selections are ansi,
#   dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color.  However,
#   the menu says "Declare terminal as" without promising to actually emulate
#   the corresponding terminals.  Indeed, changing TERM does not affect the
#   emulation itself.  This means that
#   + the function-keys do not match for dtterm for kf1-kf4 as well as
#     khome/kend
#   + the color model is the same for each setting of TERM (does not match
#     ansi or dtterm).
#   + the shift/control/meta key modifiers from rxvt and xterm variants are not
#     recognised except for a few special cases, i.e., kRIT5 and kLFT5.
#   + the vt52 emulation does not give a usable shell because screen-clearing
#     does not work as expected.
#   + selecting "xterm" or "xterm-16color" sets TERM to "xterm-256color".
# + OSX 10.9 (Yosemite) added more extended keys in the default configuration
#   as well as unmasking F10 (which had been used in the window manager). Those
#   keys are listed in this entry.
nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce),
	bce, use=nsterm-16color,

# This is tested with OS X 10.8 (Mountain Lion), 2012/08/11
#	TERM_PROGRAM_VERSION=309
# Earlier reports state that these differences also apply to OS X 10.7 (Lion),
#	TERM_PROGRAM_VERSION=303
nsterm-build309|Terminal.app in OS X 10.8,
	use=xterm+256setaf, use=nsterm-bce,

# removed bogus kDC7 -TD
nsterm-build326|Terminal.app in OS X 10.9,
	kDC=\E[3;2~, kLFT=\E[1;2D, kRIT=\E[1;2C, kcbt=\E[Z,
	kf18=\E[32~, kDC5=\E[3;5~, kLFT3=\Eb, kLFT5=\E[1;5D,
	kRIT3=\Ef, kRIT5=\E[1;5C, use=nsterm-build309,

# actually "343.7"
nsterm-build343|Terminal.app in OS X 10.10,
	kend=\EOF, khome=\EOH, use=nsterm-build326,

# reviewed Terminal.app in El Capitan (version 2.6 build 361) -TD
# Using vttest:
# + no vt52 mode for cursor keys, though vt52 screen works in vttest
# + f1-f4 map to pf1-pf4
# + no vt220 support aside from DECTCEM and ECH
# + there are no protected areas.  Forget about anything above vt220.
# + in ECMA-48 cursor movement, VPR and HPR fail.  Others work.
# + vttest color 11.6.4 and 11.6.5 (bce for ED/EL and ECH/indexing) are bce
# + but bce fails for 11.6.7.2 (test repeat).
# + SD (11.6.7.3) also fails, but SL/SR/SU work.
# + 11.6.6 (test insert/delete char/line with bce) has several failures.
# + normal (not X10 or Highlight tracking) mouse now works.
# + mouse any-event works
# + mouse button-event works
# + in alternate screen:
#   mode 47/48 work
#   mode 1047 fails to restore cursor position (do not use)
#   mode 1049 fails to restore screen contents (do not use)
# + dtterm window-modify operations work (some messages are not printed)
# + dtterm window-report gives size of window in characters/pixels as
#   well as state of window.
# Using tack:
# + there is no difference between cnorm/cvvis
# + has dim/invis/blink (no protect of course)
# + most function keys with shift/control modifiers give beep
#   (user can configure, but out-of-the-box is what I record)
# + shift-F5 is \E[25~ through shift-F12 is \E[34~ (skips \E[30~ between
#   F8 and F9).
# + kLFT5/kRIT5 work, but not up/down with control-modifier
# + kLFT/kRIT work, but not up/down with shift-modifier
# + there are a few predefined bindings with Alt, but no clear pattern.
# + uses alt-key as UTF-8 "meta" something like xterm altSendsEscape
# Using ncurses test-program with xterm-new:
# + no italics
# Using xterm's scripts:
# + palette for 256-colors is hardcoded.
# + no support for "dynamic colors"
# + no support for tcap-query.
nsterm-build361|Terminal.app in OS X 10.11,
	XT,
	kmous=\E[M, use=nsterm-build343,

# reviewed Terminal.app in High Sierra (version 2.8 build 400) -TD
# Comparing with build361, little has changed, except that italics work.
# Direct-color is not supported, by the way.
#
# Improved rmso/rmul -TD
nsterm-build400|Terminal.app in OS X 10.13,
	rmso=\E[27m, rmul=\E[24m, use=xterm+sm+1006,
	use=ecma+italics, use=nsterm-build361,

# This is an alias which should always point to the "current" version
nsterm|nsterm-256color|Apple_Terminal|AppKit Terminal.app,
	use=nsterm-build400,

#### iTerm, iTerm2

# iTerm 0.10
#
# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and more
# featureful) terminal emulator for Mac OS X.  It is similar enough in
# capabilities to nsterm-16color that I have derived this description from that
# one, but as far as I know they share no code.  Many of the features are
# user-configurable, but I attempt only to describe the default configuration
# (B. Sittler).
#
# According to its documentation, iTerm uses terminfo to obtain function key
# definitions.  For example, if it is started with TERM=xterm, it uses key
# definitions from that terminal description from the local OSX machine.  Those
# $TERM settings may be augmented using the bookmark and profile dialogs.
# However, the behavior seen with tack does not agree with either the terminfo
# description or the function keys in its "xterm" profile.
#
# NOTES:
# with vttest:
#	reports primary DA as VT100 with AVO: \E[?1;2c
#	reports secondary DA as "\E[>0;95;c"
#	supports blink and underline
#	displays bold text as red
#	recognizes all dtterm controls for modifying/querying window
#	resizing via escape sequence is very slow
#	supports X11R5 mouse (no X10) and XFree86 mouse (button- and event-tracking)
#	supports X11R5 alternate screen and XFree86 1049 (no 1047/1048)
#	supports CHA, VPA, VPR, but no other ECMA-48 cursor movement such as HPA
# with tack:
#	.
# with ncurses test-program:
#	ncurses 'k' has problem in second screen; light background does not fill
# with xterm scripts
#	can display/alter xterm-256color cube
#	can display/alter xterm-88color cube
iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X,
	am, bce, hs, mir, msgr, npc, xenl, xon,
	cols#80, it#8, lines#24, wsl#50,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n, kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\EOH, knp=\E[6~, kpp=\E[5~, op=\E[0m, rc=\E8,
	rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[m, rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
	    %p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, vpa=\E[%i%p1%dd, kEND5=\E[1;5F, kHOM5=\E[1;5H,
	use=ansi+enq, use=xterm+sl-twm, use=vt100+keypad,
	use=xterm+x11mouse, use=xterm+256setaf, use=vt220+cvis,

# iTerm2 3.0.15
#
# https://iterm2.com/
# https://github.com/gnachman/iTerm2
# ~/Library/Preferences/com.googlecode.iterm2.plist
# "iTerm" stalled in 2009.  A different set of developers began "iTerm2".
#
# NOTES:
# with vttest:
#	reports primary DA as VT100 with AVO: \E[?1;2c
#	reports secondary DA as "\E[>0;95;0c"
#	numeric keypad application mode does not work
#	by default, dtterm window-modifications are ignored
#	by default, dtterm window-reports return, but icon as "L", window as "l"
#	supports SD/SU, no REP, SL, SR
#	supports CBT, CHA, VPA, CNL, CPL, VPR (no HPA, CHT, HPR)
#	no improvement to XFree86 1047/1048 modes
# with tack:
#	in meta-mode, imitates xterm, sending UTF-8
#	special-key modifiers based on xterm use incompatible default for alt/meta
# with ncurses test-program:
#	no italics
#	no improvement to ncurses 'k'
# with xterm scripts:
#	acolors.sh works
#
# Italic text did not work initially, apparently because upgrading did not
# add/change that preference (set in Preferences, Profiles, Text).  A new
# install of iTerm 3.0.15 provides italics by default (blinking text is an
# option in the preferences dialog).
#
# 2018/01/21: found xterm+sm+1006 did not work with version 3.1.5
# 2018/05/19: xterm+sm+1006 seems to work with 3.1.6beta -TD
iTerm2.app|iterm2|terminal emulator for Mac OS X,
	blink=\E[5m, cbt=\E[Z, dim=\E[2m, kEND=\E[1;2F,
	kHOM=\E[1;2H, ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf13=\E[1;2P,
	kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
	kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
	kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
	kf24=\E[24;2~, kind=\E[1;2B, kri=\E[1;2A, nel=\EE,
	op=\E[39;49m, rmso=\E[27m, rmul=\E[24m,
	rs2=\E[!p\E[?3;4l\E[4l\E>\E[?1000l,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;m%?%p9%t\016%e\017%;,
	kDN3=\E\E[B, kDN4=\E[1;10B, kDN5=\E[1;5B, kDN6=\E[1;6B,
	kEND3=\E[1;9F, kEND4=\E[1;10F, kEND6=\E[1;6F,
	kEND7=\E[1;13F, kEND8=\E[1;14F, kHOM3=\E[1;9H,
	kHOM4=\E[1;10H, kHOM6=\E[1;6H, kHOM7=\E[1;13H,
	kHOM8=\E[1;14H, kLFT3=\E\E[D, kLFT4=\E[1;10D,
	kLFT5=\E[1;5D, kLFT6=\E[1;6D, kNXT3=\E\E[6~,
	kPRV3=\E\E[5~, kRIT3=\E\E[C, kRIT4=\E[1;10C,
	kRIT5=\E[1;5C, kRIT6=\E[1;6C, kUP3=\E\E[A, kUP4=\E[1;10A,
	kUP5=\E[1;5A, kUP6=\E[1;6A, use=ecma+index,
	use=xterm+alt+title, use=ecma+italics, use=iterm,

# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
#
# On PowerPC platforms, Apple's Darwin operating system uses a
# full-screen system console derived from a NetBSD framebuffer
# console. It is an ANSI-style terminal, and is not really VT-100
# compatible.
#
# Under Mac OS X, this is the system console driver used while in
# single-user mode [reachable by holding down Command-S during the
# boot process] and when logged in using console mode [reachable by
# typing ">console" at the graphical login prompt.]
#
# If you're looking for a description of the Terminal.app terminal
# emulator which runs under the Mac OS X Quartz windowing system (and
# other AppKit-supported windowing systems,) see the "nsterm"
# entry instead.
#
# NOTE: Under Mac OS X version 10.1, the default login window does not
# prompt for user name, instead requiring an icon to be selected from
# a list of known users. Since the special ">console" login is not in
# this list, you must make one of two changes in the Login Window
# panel of the Login section of System Prefs to make the special
# ">console" login accessible. The first option is to enable 'Show
# "Other User" in list for network users', which will add a special
# "Other..." icon to the graphical login panel. Selecting "Other..."
# will present the regular graphical login prompt. The second option
# is to change the 'Display Login Window as:' setting to 'Name and
# password entry fields', which replaces the login panel with a
# graphical login prompt.
#
# There are no function keys, at least not in Darwin 1.3.
#
# It has no mouse support.
#
# It has full ANSI color support, and color combines correctly with
# all three supported attributes: bold, inverse-video and underline.
# However, bold colored text is almost unreadable (bolding is
# accomplished using shifting and or-ing, and looks smeared) so bold
# has been excluded from the list of color-compatible attributes
# [using (ncv)]. The monochrome entry (-m) is useful if you use a
# monochrome monitor.
#
# There is one serious bug with this terminal emulation's color
# support: repositioning the cursor onto a cell with non-matching
# colors obliterates that cell's contents, replacing it with a blank
# and displaying a colored cursor in the "current" colors. There is
# no complete workaround at present [other than using the monochrome
# (-m) entries,] but removing the (msgr) capability seemed to help.
#
# The "standout" chosen was simple reverse-video, although a colorful
# standout might be more aesthetically pleasing. Similarly, the bold
# chosen is the terminal's own smeared bold, although a simple
# color-change might be more readable. The color-bold (-b) entries
# uses magenta colored text for bolding instead. The fancy color (-f
# and -f2) entries use color for bold, standout and underlined text
# (underlined text is still underlined, though.)
#
# Apparently the terminal emulator does support a VT-100-style
# alternate character set, but all the alternate character set
# positions have been left blank in the font. For this reason, no
# alternate character set capabilities have been included in this
# description. The console driver appears to be ASCII-only, so (enacs)
# has been excluded [although the VT-100 sequence does work.]
#
# The default Mac OS X and Darwin installation reports "vt100" as the
# terminal type, and exports no helpful environment variables. To fix
# this, change the "console" entry in /etc/ttys from "vt100" to
# "xnuppc-WxH", where W and H are the character dimensions of your
# console (see below.)
#
# The font used by the terminal emulator is apparently one originally
# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
# file includes descriptions for the following geometries:
#
#     Pixels        Characters   Entry Name (append -m for monochrome)
#    -------------------------------------------------------------------
#     640x400       80x25        xnuppc-80x25
#     640x480       80x30        xnuppc-80x30
#     720x480       90x30        xnuppc-90x30
#     800x600       100x37       xnuppc-100x37
#     896x600       112x37       xnuppc-112x37
#     1024x640      128x40       xnuppc-128x40
#     1024x768      128x48       xnuppc-128x48
#     1152x768      144x48       xnuppc-144x48
#     1280x1024     160x64       xnuppc-160x64
#     1600x1024     200x64       xnuppc-200x64
#     1600x1200     200x75       xnuppc-200x75
#     2048x1536     256x96       xnuppc-256x96
#
# The basic "xnuppc" entry includes no size information, and the
# emulator includes no reporting capability, so you'll be at the mercy
# of the TTY device (which reports incorrectly on my hardware.) The
# color-bold entries do not include size information.

# The '+' entries are building blocks
xnuppc+basic|Darwin PowerPC console basic capabilities,
	am, bce, mir, xenl,
	it#8,
	bold=\E[1m, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	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, dsl=\E]2;\007, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^?,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=vt100+keypad,

xnuppc+c|Darwin PowerPC console ANSI color support,
	colors#8, ncv#32, pairs#64,
	op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,

xnuppc+b|Darwin PowerPC console color-bold support,
	ncv#32,
	bold=\E[35m,
	sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
	use=xnuppc+basic,

xnuppc+f|Darwin PowerPC console fancy color support,
	ncv#35,
	sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;
	    m,
	smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,

xnuppc+f2|Darwin PowerPC console alternate fancy color support,
	ncv#35,
	bold=\E[33m,
	sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
	smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,

# Building blocks for specific screen sizes
xnuppc+80x25|Darwin PowerPC console 80x25 support (640x400 pixels),
	cols#80, lines#25,

xnuppc+80x30|Darwin PowerPC console 80x30 support (640x480 pixels),
	cols#80, lines#30,

xnuppc+90x30|Darwin PowerPC console 90x30 support (720x480 pixels),
	cols#90, lines#30,

xnuppc+100x37|Darwin PowerPC console 100x37 support (800x600 pixels),
	cols#100, lines#37,

xnuppc+112x37|Darwin PowerPC console 112x37 support (896x600 pixels),
	cols#112, lines#37,

xnuppc+128x40|Darwin PowerPC console 128x40 support (1024x640 pixels),
	cols#128, lines#40,

xnuppc+128x48|Darwin PowerPC console 128x48 support (1024x768 pixels),
	cols#128, lines#48,

xnuppc+144x48|Darwin PowerPC console 144x48 support (1152x768 pixels),
	cols#144, lines#48,

xnuppc+160x64|Darwin PowerPC console 160x64 support (1280x1024 pixels),
	cols#160, lines#64,

xnuppc+200x64|Darwin PowerPC console 200x64 support (1600x1024 pixels),
	cols#200, lines#64,

xnuppc+200x75|Darwin PowerPC console 200x75 support (1600x1200 pixels),
	cols#200, lines#75,

xnuppc+256x96|Darwin PowerPC console 256x96 support (2048x1536 pixels),
	cols#0x100, lines#96,

# These are different combinations of the building blocks

xnuppc-m|darwin-m|Darwin PowerPC console (monochrome),
	use=xnuppc+basic,

xnuppc|darwin|Darwin PowerPC console (color),
	use=xnuppc+c, use=xnuppc+basic,

xnuppc-m-b|darwin-m-b|Darwin PowerPC console (monochrome w/color-bold),
	use=xnuppc+b,

xnuppc-b|darwin-b|Darwin PowerPC console (color w/color-bold),
	use=xnuppc+b, use=xnuppc+c,

xnuppc-m-f|darwin-m-f|Darwin PowerPC console (fancy monochrome),
	use=xnuppc+f,

xnuppc-f|darwin-f|Darwin PowerPC console (fancy color),
	use=xnuppc+f, use=xnuppc+c,

xnuppc-m-f2|darwin-m-f2|Darwin PowerPC console (alternate fancy monochrome),
	use=xnuppc+f2,

xnuppc-f2|darwin-f2|Darwin PowerPC console (alternate fancy color),
	use=xnuppc+f2, use=xnuppc+c,

# Combinations for specific screen sizes
xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC console (monochrome) 80x25,
	use=xnuppc+80x25, use=xnuppc+basic,

xnuppc-80x25|darwin-80x25|Darwin PowerPC console (color) 80x25,
	use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,

xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC console (monochrome) 80x30,
	use=xnuppc+80x30, use=xnuppc+basic,

xnuppc-80x30|darwin-80x30|Darwin PowerPC console (color) 80x30,
	use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,

xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC console (monochrome) 90x30,
	use=xnuppc+90x30, use=xnuppc+basic,

xnuppc-90x30|darwin-90x30|Darwin PowerPC console (color) 90x30,
	use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,

xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC console (monochrome) 100x37,
	use=xnuppc+100x37, use=xnuppc+basic,

xnuppc-100x37|darwin-100x37|Darwin PowerPC console (color) 100x37,
	use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,

xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC console (monochrome) 112x37,
	use=xnuppc+112x37, use=xnuppc+basic,

xnuppc-112x37|darwin-112x37|Darwin PowerPC console (color) 112x37,
	use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,

xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC console (monochrome) 128x40,
	use=xnuppc+128x40, use=xnuppc+basic,

xnuppc-128x40|darwin-128x40|Darwin PowerPC console (color) 128x40,
	use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,

xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC console (monochrome) 128x48,
	use=xnuppc+128x48, use=xnuppc+basic,

xnuppc-128x48|darwin-128x48|Darwin PowerPC console (color) 128x48,
	use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,

xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC console (monochrome) 144x48,
	use=xnuppc+144x48, use=xnuppc+basic,

xnuppc-144x48|darwin-144x48|Darwin PowerPC console (color) 144x48,
	use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,

xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC console (monochrome) 160x64,
	use=xnuppc+160x64, use=xnuppc+basic,

xnuppc-160x64|darwin-160x64|Darwin PowerPC console (color) 160x64,
	use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,

xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC console (monochrome) 200x64,
	use=xnuppc+200x64, use=xnuppc+basic,

xnuppc-200x64|darwin-200x64|Darwin PowerPC console (color) 200x64,
	use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,

xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC console (monochrome) 200x75,
	use=xnuppc+200x75, use=xnuppc+basic,

xnuppc-200x75|darwin-200x75|Darwin PowerPC console (color) 200x75,
	use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,

xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC console (monochrome) 256x96,
	use=xnuppc+256x96, use=xnuppc+basic,

xnuppc-256x96|darwin-256x96|Darwin PowerPC console (color) 256x96,
	use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,

######## DOS/WINDOWS
# CRT is shareware.  It implements some xterm features, including mouse.
crt|crt-vt220|CRT 2.3 emulating VT220,
	bce, msgr,
	ncv@,
	hts=\EH, use=vt100+enq, use=vt220-base, use=ecma+color,

# SecureCRT 8.7.3.2279
# 8.7.3 was released 2020/08/11
# (eval 2021/02/05)
# VanDyke Software, Inc.
#
# Advertised features:
#	Xterm 24-bit color
#	Xterm 256-color
#	Double-size characters
#	Xterm extensions for mouse support and changing title bar
#	Emulates VT100, VT102, VT220, VT320, Linux console, SCO ANSI,
#	TN3270, TVI910, TVI925, Wyse 50/60, and ANSI.
# Changes:
#	Added ANSI sc/rc and REP in 2019/12/17
#	Added TVI910/ TVI925 in 2019/11/20	
#
# Default:
#	Emulate "Xterm", using "ANSI with 256color"
#	TERM=xterm-256color
#
# vttest:
#	DA1 \E[?62;1;2;6;7;8;9c (vt220 with DRCS and NRCS)
#	DA2 \E[>1;136;0c
#	double-sized characters do not work
#	Menu-1 fails (window resizes to 132-columns, but does not repaint)
#	NRCS fails (tried French, but none of the replacements worked)
#	VT100 line-drawing works, except the C/R, etc., are an hline.
#	VT52 works except for S8C1T bug.
#	RIS hangs the terminal.
#	Local SRM does not echo.
#	Some of the VT320/VT220 status reports work, not locator or DECXCPR
#	DECUDK works if I press shift.
#	Fails CHT, CNL, CPL
#	Does not honor bce with ECH
#	ERM/SPA does not work
#	REP has 11 +'s except for final 2 +'s, like PuTTY.
#	Fails SL/SR
#	DECRPM does not respond.
#	dtterm modify/report operations do not work
#	Alternate screen works.
#	Mouse:
#		highlight tracking does not work.
#		any event tracking does not work, but
#		button event tracking does work.
#		DEC locator does not work.
#		SGR coordinates does not work.
# ncurses:
#	reset6 does reset to 80-columns
#	ncurses RGB edit does not work.
#	direct colors don't work, probably needs semicolons.
# tack:
#	blink works, but not dim or invis
#	no italics or crossed-out
# scripts:
#	256color handles "-r" option (but test/ncurses menu d does not alter)
#	dynamic colors queries do not work, though it seems some can be set.
#	resize.pl gets no reply, resize.sh needs fix for no reply.
scrt|securecrt|SecureCRT emulating xterm-256color,
	bce@, km@, npc,
	bel@, cvvis@, kcbt=\E[Z, kent=\EOM, use=vt220+pcedit,
	use=xterm+256setaf, use=ecma+index, use=ansi+rep,
	use=xterm+keypad, use=xterm+pcfkeys, use=xterm-basic,

# Absolute Telnet
# (eval 2021/02/20)
# 11.24 was released 2020/08/13
# Celestial Software
#
# Advertised features:
#	Emacs compatibility mode (Meta Keys can be enabled for left/right ALT)
#	Double-size characters
#	Xterm extensions for mouse support
#	Emulates VT52, VT100, VT220, VT320, ansi, xterm, qnx, scoansi,
#	ANSIBBS, WYSE60, TeleVideo 950.
#
# Default:
#	TERM=xterm
#
# vttest:
#	DA1: \E[?62;1;2;6;7;8;9;15;22c (VT200 with DRCS, UDK, NRCS) 
#	DA2: \E[>1;10;0c 
#	However:
#	+ NRCS tests do not work
#	+ DECUDK test fails
#	+ VT100 double-sized characters work
#	menu-1 autowrap does not work
#	supports blinking text
#	VT220 DECSCA last screen (ignoring ECH, etc), leaves fill on top/left
#	VT220 device status reports fail, except operating status
#	8-bit controls work
#	xterm alternate screen recognized, but cursor restored incorrectly
#	xterm mouse (normal, any event, button event) works
#	xterm highlight-mouse does not work properly, confused with any-event
#	does not recognize SGR-mouse mode
#	supports xterm window-modifiny/reporting controls
#	supports ECMA-48 cursor movement except HPR
#	supports REP and SD, but not ECMA-48 SL, SR, SU
# tack:
#	italics and crossed-out do not work
#	supports xterm-style modified function-keys, using X11R6 F1-F4.
#	does not support modified cursor-keys or editing-keys
#	uses VT220-style Home/End
#	if alt-keys are enabled,
#		meta-mode sends escape rather than shifting, in 7-bit mode
#		meta-mode does the expected shifting in 8-bit mode
# scripts:
#	supports 256-colors, including changing palette (ncurses menu d works)
#	supports UTF-8, but honors VT100 line-drawing
absolute|Absolute Telnet emulating xterm,
	kcbt=\E[Z, use=ecma+index, use=ansi+rep,
	use=vt220+pcedit, use=xterm+keypad, use=xterm+app,
	use=xterm+pcf0, use=xterm+256color, use=xterm+x11mouse,
	use=xterm-basic,

#### PuTTY
# PuTTY 0.74 (27 June 2020)
# http://www.chiark.greenend.org.uk/~sgtatham/putty/
#
# PuTTY 0.73 (September 2019)
# Testing with tack:
#	does not implement italics
#	does not implement cross-out text
#	its settings dialog allows some of the VT100 line-drawing tests to pass
#	(not the padding test, though)
# Testing with vttest:
#	xterm mouse modes are incomplete: X10, highlight, any-event, and focus in/out modes are not implemented.
#	does not implement protected areas
#	does not implement SL/SR
#
# PuTTY 0.71 (March 2019) provided a workable "rep" capability.  It also
# changed longstanding keypad assignments, so that these no longer apply:
#	kLFT=\E[D, kRIT=\E[C, kb2=\E[G,
#
# PuTTY recognized xterm's 1006 mouse mode in late 2015; subsequent release was
# in 2017 (0.70) -TD
#
# Comparing with 0.51, vttest is much better (only a few problems with the
# cursor position reports and wrapping).
#
# PuTTY 0.51 (14 December 2000)
#
# This emulates vt100 + vt52 (plus a few vt220 features:  ech, SRM, DECTCEM, as
# well as SCO and Atari, color palettes from Linux console).  Reading the code,
# it is intended to be VT102 plus selected features.  By default, it sets $TERM
# to xterm, which is incorrect, since several features are misimplemented:
#
#	Alt+key always sends ESC+key, so 'km' capability is removed.
#
#	Control responses, wrapping and tabs are buggy, failing a couple of
#	screens in vttest.
#
#	xterm mouse support is not implemented (unreleased version may).
#
# Several features such as backspace/delete are optional; this entry documents
# the default behavior.  None of the combinations of keyboard settings match
# those used for xterm -TD
#
# PuTTY recognizes xterm's 1049 mode for switching to/from alternate screen,
# but implements it incorrectly as mentioned here:
#	http://stackoverflow.com/questions/24613237/terminal-retains-bg-color-after-closing-vim-using-color-scheme-and-putty-256co/37869114#37869114
putty|PuTTY terminal emulator,
	am, bce, bw, ccc, mir, msgr, xenl, xon, XT,
	colors#8, it#8, ncv#22, pairs#64, U8#1,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	dch=\E[%p1%dP, dch1=\E[P,
	dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G
	      \342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e
	      %p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G
	      \342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@
	      %e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E
	      %%G\340\202\242\E%%@%e%p1%c%;,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l,
	home=\E[H, hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\n,
	initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/
	      %02x%p4%{255}%*%{1000}%/%02x,
	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
	kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kind=\E[B, kri=\E[A, kspd=^Z, nel=\r\n, oc=\E]R,
	op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmcup=\E[2J\E[?47l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m,
	rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
	s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
	smir=\E[4h, smkx=\E[?1h\E=, smpch=\E[11m, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, E3=\E[3J, use=vt220+pcedit,
	use=ansi+tabs, use=ansi+rep, use=ecma+index,
	use=xterm+sm+1006, use=putty+fnkeys, use=vt102+enq,
	use=xterm+sl, use=vt100+fnkeys, use=putty+keypad,
	use=vt220+cvis,
putty+keypad|PuTTY numeric keypad,
	kp1=\EOq, kp2=\EOr, kp3=\EOs, kp4=\EOt, kp5=\EOu, kp6=\EOv,
	kp7=\EOw, kp8=\EOx, kp9=\EOy, kpADD=\EOl, kpDIV=\EOQ,
	kpDOT=\EOn, kpMUL=\EOR, kpNUM=\EOP, kpSUB=\EOS, kpZRO=\EOp,

vt100-putty|Reset PuTTY to pure vt100,
	rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
	use=vt100,
putty-256color|PuTTY 0.58 with xterm 256-colors,
	use=xterm+256setaf, use=putty,
putty-noapp|putty with cursor keys in normal mode,
	kLFT=\EOD, kRIT=\EOC, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kind=\EOB, kri=\EOA, rmkx=\E>, smkx=\E=,
	use=putty,

# One of the keyboard selections is "VT100+".
# pterm (the X11 port) uses shifted F1-F10 as F11-F20
putty-vt100|VT100+ keyboard layout,
	use=putty+fnkeys+vt100, use=putty,

putty-sco|putty with SCO function keys,
	use=putty+fnkeys+sco, use=putty,

# PuTTY has more than one section in its Keyboard configuration:
# a) backspace/delete, which we ignore since that choice largely depends on
#    whether one matches Unix and BSD or Linux.
# b) home/end keys, also ignored because the "rxvt" setting sends keys which
#    are unrelated to rxvt's actual settings.
# c) function keys and keypad - this is the interesting part.  None of the
#    selections match any of their respective namesakes, but they are shown
#    here to help users who expect that the selections do what is implied.
#
# This is the default setting for PuTTY
putty+fnkeys|fn-keys for PuTTY,
	use=putty+fnkeys+esc,

putty+fnkeys+esc|ESC[n~ fn-keys for PuTTY,
	kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~,
	kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,

putty+fnkeys+linux|Linux fn-keys for PuTTY,
	kf1=\E[[A, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
	use=putty+fnkeys+esc,

putty+fnkeys+xterm|Xterm R6 fn-keys for PuTTY,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	use=putty+fnkeys+esc,

putty+fnkeys+vt400|VT400 fn-keys for PuTTY,
	use=putty+fnkeys+esc,

# Shifted F1 is F11.  F13-F20 inherit from the defaults, and the last distinct
# key is F20.
putty+fnkeys+vt100|VT100+ fn-keys for PuTTY,
	kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EO[, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	kf9=\EOX, use=putty+fnkeys+esc,

# Unlike xterm-sco, this leaves kmous ambiguous with kf1.
#
# Use modifiers to obtain function keys past 12:
# F1-F12 - normal
# F13-F24 - shift
# F25-F36 - control/alt
# F37-F48 - control/shift
#
putty+fnkeys+sco|SCO fn-keys for PuTTY,
	kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
	kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
	kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
	kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
	kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O,
	kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t,
	kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y,
	kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
	kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
	kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
	kich1=\E[L, knp=\E[G, kpp=\E[I,

#### mintty
# https://github.com/mintty/mintty
#
# Originally a fork (and reduction) of PuTTY, this has grown from 15ksloc in
# 2013 to 41ksloc in 2020.  That is still smaller than PuTTY (160ksloc), but
# larger than rxvt (31ksloc) and slightly smaller than rxvt-unicode (42ksloc).
#
# Version 3.0 responds to DA as a VT400, however it does not implement the
# application keypad.  The assignment of cursor-keys versus modifiers differs
# from xterm (alt-left and alt-right send modifier 7, i.e., alt+control).
#
# Thomas Wolff suggested these extensions:
#	blink2   turn on rapid blinking
#	blink0   turn off blinking
#	norm     turn off bold and half-bright mode
#	opaq     turn off blank mode
#	smul2    begin double underline mode
#	smol     begin overline mode
#	rmol     exit overline mode
#	Font0    use default font
#	Font1    use alternative font 1
#	...
#	Font10   use alternative font 10
#	setal    set (under)line color
#	ol       set default (under)line color
#	overs    overstrike (print characters over each other)
#
# but see vte-2018 (use Smol/Rmol rather than smol/rmol).
mintty|Cygwin Terminal,
	setal=\E[5%p1%dm, use=xterm+256color,
	use=mintty+common,
mintty-direct|Cygwin Terminal direct-color,
	setal=\E[%?%p1%{8}%<%t5%p1%d%e58:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	use=xterm+direct, use=mintty+common,
mintty+common|shared capabilities for mintty,
	km@, npc,
	kcbt=\E[Z, kent=\EOM, rmm@, rmpch=\E[10m,
	rs1=\Ec\E]104\007, rshm=\E[22m, rsubm=\E[75m,
	rsupm=\E[75m, smm@, smpch=\E[11m, sshm=\E[1:2m,
	ssubm=\E[74m, ssupm=\E[73m, Rmol=\E[55m, Smol=\E[53m,
	Smulx=\E[4:%p1%dm, blink2=\E[6m, norm=\E[22m,
	opaq=\E[28m, smul2=\E[21m, use=ansi+rep,
	use=ecma+strikeout, use=ecma+index, use=vt420+lrmm,
	use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
	use=ecma+italics, use=xterm-basic,
# 2019-06-09: These capabilities are commented-out for compatibility with
# existing releases 5.9-6.1, and may be considered for inclusion after the
# release of ncurses 6.2:
#	Font0=\E[10m,
#	Font1=\E[11m,
#	Font2=\E[12m,
#	Font3=\E[13m,
#	Font4=\E[14m,
#	Font5=\E[15m,
#	Font6=\E[16m,
#	Font7=\E[17m,
#	Font8=\E[18m,
#	Font9=\E[19m,
#	Font10=\E[20m,
#	blink0=\E[25m,
#	ol=\E[59m,
#	overs=\E[8\:7m,

#### TeraTerm

# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by
# T. Teranishi dated Mar 10, 1998.  It is a free software terminal emulator
# (communication program) which supports:
#
#	- Serial port connections.
#	- TCP/IP (telnet) connections.
#	- VT100 emulation, and selected VT200/300 emulation.
#	- TEK4010 emulation.
#	- File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and
#	  Quick-VAN).
#	- Scripts using the "Tera Term Language".
#	- Japanese and Russian character sets.
#
# The program does not come with terminfo or termcap entries.  However, the
# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no
# vt52 or doublesize character support; blinking is done with color).  Besides
# the HPA, VPA extensions it also implements CPL and CNL.
#
# All of the function keys can be remapped.  This description shows the default
# mapping, as installed.  Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys
# are supported.  F13-F20 are obtained by shifting F3-F10.  The editing keypad
# is laid out like vt220, rather than the face codes on the PC keyboard, i.e,
#	kfnd	Insert
#	kslt	Delete
#	kich1	Home
#	kdch1	PageUp
#	kpp	End
#	knp	PageDown
#
# ANSI colors are implemented, but cannot be combined with video attributes
# except for reverse.
#
# No fonts are supplied with the program, so the acsc string is chosen to
# correspond with the default Microsoft terminal font.
#
# Tera Term recognizes some xterm sequences, including those for setting and
# retrieving the window title, and for setting the window size (i.e., using
# "resize -s"), though it does not pass SIGWINCH to the application if the
# user resizes the window with the mouse.
teraterm2.3|Tera Term Pro,
	km,
	ncv#43, vt@,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, 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, flash=\E[?5h$<200/>\E[?5l,
	hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, op=\E[100m, rev=\E[7m, ri=\EM,
	rmso=\E[27m, rmul=\E[24m, sgr0=\E[0m\017, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, use=vt220+vtedit,
	use=vt100+enq, use=klone+color, use=vt100,
	use=vt220+cvis,

# Version 4.59 has regular vt100 line-drawing (so it is no longer necessary
# to choose a Windows OEM font).
#
# Testing with tack:
#	- it does not have xenl (suppress that)
#	- underline seems to work with color (modify ncv).
# Testing with vttest:
#	- wrapping differs from vt100 (menu 1).
#	- it recognizes xterm's X10 and normal mouse tracking, but none of the
#	  other flavors.
#	- it recognizes the dtterm window controls for reporting size in
#	  characters and pixels.
#	- it passes SIGWINCH.
teraterm4.59|Tera Term Pro,
	bce, xenl@,
	ncv#41,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	kmous=\E[M, use=teraterm2.3,

# Version 4.97
#
# Testing with tack:
#	- no bell (flash works)
#	- bold is yellow, blink is red.
#	- default keyboard sends ^? for Delete, can be configured for kdch1
#	- no meta mode
# Testing with vttest:
#	+ autowrap has problems...
#	+ color-tests for bce feature match xterm's behavior
#	+ handles most of xterm's mouse-controls other than highlight-tracking.
#	  xterm's SGR 1006 works.
#	+ partial support for DEC locator-events
#	+ implements ECMA-48 SD/SU, but not REP, SL/SR.
#	+ has a "Tek" window, but does not work with vttest's examples
#	+ supports the dtterm window modify/report controls
#	+ responds to DECRQM and DECRQSS controls, but not consistent with DSR
#	  e.g., for VT220
#	+ VT220 screen-display tests are ok
#	+ no VT52 support
# Other tests:
#	+ recognizes xterm's original direct-colors sequences, but result is
#	  poor.
#	+ no UTF-8 apparent when UTF-8 is set, with font Lucida Control
teraterm4.97|Tera Term Pro,
	XT, use=ecma+color, use=xterm+sm+1006, use=teraterm4.59,
teraterm-256color|TeraTerm with xterm 256-colors,
	use=xterm+256setaf, use=teraterm,

teraterm|Tera Term,
	use=teraterm4.97,

#### Command prompt

# Tested with WinNT 4.0, the telnet application assumes the screensize is
# 25x80.  This entry uses the 'Terminal' font, to get line-drawing characters.
#
# Other notes:
# a) Fails tack's cup (cursor-addressing) test, though cup works well enough
#    for casual (occasional) use.  Also fails several of the vttest screens,
#    but that is not unusual for vt100 "emulators".
# b) Does not implement vt100 keypad
# c) Recognizes a subset of vt52 controls.
ms-vt100|MS telnet imitating DEC vt100,
	lines#25,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@,
	kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100,

# Tested with Windows 2000, the telnet application runs in a console window,
# also using 'Terminal' font.
#
# Other notes:
# a) This version has no function keys or numeric keypad.  Unlike the older
#    version, the numeric keypad is entirely ignored.
# b) The program sets $TERM to "ansi", which of course is inaccurate.
ms-vt100-color|vtnt|windows 2000 ansi (sic),
	bce,
	dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color,
	use=ms-vt100,

# Based on comments from Federico Bianchi:
#
#	vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different
#	scheme for PF keys.
#
# and PuTTY wishlist:
#
#	The modifiers are represented as the codes listed above, prefixed to
#	the normal sequences.  If the modifier is pressed alone, its sequence
#	is transmitted twice in succession.  If multiple modifiers apply,
#	they're transmitted in the order shift, control, alt.
#
#	Shift	\E^S
#	Alt	\E^A,
#	Ctrl	\E^C,
ms-vt100+|vt100+|windows XP vt100+ (sic),
	kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@,
	kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3,
	kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6,
	kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9,
	kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@,
	kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3,
	kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6,
	kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9,
	kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@,
	kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4,
	kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6,
	kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9,
	kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5,
	kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+,
	knp=\E/, kpp=\E?, use=ms-vt100-color,

ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+,
	use=ms-vt100+,

# Windows Terminal (Preview)
# https://github.com/microsoft/terminal
#
# Windows 10 21H1
# Version 1.9.1942.0
#
# This has longstanding issues with CR/LF mapping, e.g.,
# - first reported by Juergen Pfeifer August 13, 2020, with workaround
# - Windows Terminal #8303 "Updates to ms-terminal terminal type in terminfo to
#   1.4 from 0.2"
# - Windows Terminal #6733 "Midnight Commander (mc) output is screwed when
#   using the 'ms-terminal' as $TERM"
#
# still seen in testing during May-July 2021.  As a workaround, this terminal
# description sets cud1 to an escape sequence rather than just \r.
#
# Using TERM=xterm-256color shows a number of problems.
# A few are seen only in the WSL2 environment.
#
# tack:
# - flash does not work.
# - video attribute blink does not work.
# - video attribute invis does not work in WSL2.
# - italics sitm/ritm do not work in WSL2.
# - crossed-out smxx/rmxx do not work in WSL2.
# - reloading colors via initp interchanges red/blue.
# - does not implement OSC 104, which is used for resetting colors in xterm.
# - does not support numeric keypad application mode.
# - control-modifier (without alt/shift) does not work for special keys.
# - meta-key sends escape character rather than acting as a meta key.
#
# vttest:
# - identifies itself as a VT100.
# - cursor movement (menu 1) does not work properly, e.g., for wrapping.
# - does not support 8-bit controls.
# - does not support VT420 rectangles.
# - does not support VT420 left/right margins.
# - ECMA-48 cursor-movement works.
# - does not support X10 mouse, or mouse highlight tracking.
# - SGR mouse mode 1006 works.
# - any-event mouse mode shows no focus-in/focus-out events.
# - alternate screen 47/48 modes do not work, nor do 1047/1048.
# - alternate screen 1049 mode works.
# - none of the window report/modify operations work.
# - none of the DECRPM/DECRQM reporting operations work.
#
# xterm:
# - 256colors2.pl -r, -i and -q options work.
# - dynamic colors do not work.
# - paste64.pl does not work, i.e., bracketed-paste.
# - tcapquery.pl does not work.
#
# Windows 10 1903
# Version 0.2.1831.0
#
# The task manager shows this as "OpenConsole.exe", which differs
# from the "Windows Command Processor" used for the command-prompt.
#
# The settings dialog does not work (unless the end user expects to open
# profiles.json in Visual Studio).  There is no documentation, of course.
#
# Testing via an ssh connection, using openssh:
# - the program sets TERM to cygwin if the tab is set to PowerShell,
#   and to xterm-256color if "Legacy".  However, in the latter, more tests
#   fail in vttest, which does not pay attention to TERM.
# vttest:
# - menu 1 (tests for cursor movement) misbehaves like command-prompt
# - primary DA says this is a vanilla VT100
# - does not flush response to primary DA, leaving a ^M on the end when
#   the PowerShell tab is used.  Both the "Legacy" tab and the command-prompt
#   work properly in this test.
# - in the generic VT100 tests, there are problems with character sets
#   (diamond shows as a double-width character, DEL as two replacement-chars).
# - outside of the generic VT100 tests, the program does poorly because most
#   of the features are missing.
# - ECH does not work properly
# - a few generic xterm features are supported (set window title), but
#   others are missing (such as the mouse).
# - the cursor visible/invisible works in the PowerShell tab, not in "Legacy"
# tack:
# - blink, dim, bold, invis, protect do not work
# - bce works (but per vttest, with ED, EL, not ECH)
# - does not support keypad application mode
# - implements most of the xterm modified keys; sometimes modifiers are ignored
#   or simply incorrect
# - sends escape+key rather than implementing meta mode
# other:
# - color palette can be altered, but OSC 104 for resetting does not work
# - crashed with a script used for testing NRCS.
# - does not recognize either xterm+direct or xterm+indirect escapes.
ms-terminal|Windows10 terminal,
	npc,
	cud1=\E[B, kcbt=\E[Z, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@,
	Cr@, Ms@, use=xterm+256color, use=xterm+pcfkeys,
	use=ansi+rep, use=xterm+sm+1006, use=ecma+index,
	use=ecma+italics, use=ecma+strikeout, use=xterm-basic,
	use=xterm+tmux,

#### Visual Studio
# Visual Studio Code 1.45.0 uses xterm.js 12.8.1 (see https://xtermjs.org/).
#
# vttest:
# - fixes menu 1 problem with wrapping
# - supports DECALN
# - fixes menu 8 problem with delete-character
# - REP, SL/SL work
# - keypad application mode still does not work; PF1-PF4 are not assigned.
# - DECRQM/DECRPM do not work
# - xterm mouse features:
#   - SGR coordinates work; the other modes do not (see vscode #96058)
#   - focus-events are not sent
#   - mouse highlight tracking does not send button event
# tack/other:
# - little or no change since previous review
#
# Visual Studio Code 1.35.1 uses xterm.js (see https://xtermjs.org/).
# https://code.visualstudio.com/docs/editor/integrated-terminal
#
# This sets TERM to xterm-256color, which is a little more successful than
# Windows Terminal.
#
# vttest:
# - menu 1 (cursor movement) has problems with wrapping
# - claims to be a VT100 with AVO, but copies xterm #276's secondary response
# - menu 8 (insert/delete char/line) has problem with delete-character
# - like Windows Terminal, fails the ECH test: neither supports DECALN
#   However, the bce test with ECH works.
# - does not support keypad application mode
# - supports most xterm mode controls (except DEC Locator Events)
# - REP, SL/SL do not work, but SD/SU work.
# - the alternate-screen tests fail because it does not support DECALN
# - window modify/report is not supported
# - supports some VT320 presentation reports
# tack:
# - does not support blinking text
# - implements most of the xterm modified keys, with some exceptions:
#   - pageup/pagedown do not send escapes
#   - alt cursor left/right send escape-b and escape-f
# - sends UTF-8 like xterm for meta mode
# other:
# - mouse mode is not reset by reset-sequence
# - supports italics and dim, but not cross-out or double-underline
# - color-palette cannot be changed
vscode|xterm.js|Visual Studio Code terminal using xterm.js,
	npc,
	kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, use=xterm+256setaf,
	use=ecma+index, use=xterm+sm+1006, use=xterm+pcfkeys,
	use=ecma+italics, use=xterm-basic,
vscode-direct|Visual Studio Code with direct-colors,
	use=xterm+indirect, use=vscode,

######## X TERMINAL EMULATORS
#### XTERM
#
# You can add the following line to your .Xdefaults to change the terminal type
# set by the xterms you start up to my-xterm:
#
# *termName:  my-xterm
#
# System administrators can change the default entry for xterm instances
# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm.  In either
# case, xterm will detect and reject an invalid terminal type, falling back
# to the default of xterm.
#

# X10/6.6	11/7/86, minus alternate screen, plus (csr)
# (xterm: ":MT:" changed to ":km:"; added <smam>/<rmam> based on init string;
# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
# as these seem not to work -- esr)
x10term|vs100-x10|xterm terminal emulator (X10 window system),
	OTbs, am, km, mir, msgr, xenl, xon,
	cols#80, it#8, lines#65,
	bold=\E[1m, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
	il1=\E[L, ind=\n, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m,
# Compatible with the R5 xterm
# (from the XFree86 3.2 distribution, <blink=@> removed)
# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD
# corrected typos in rs2 string - TD
# added u6-u9 -TD
xterm-r5|xterm R5 version,
	OTbs, am, km, msgr, xenl,
	cols#80, it#8, lines#24,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[31~, kel=\E[8~, kf0=\EOq,
	kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~,
	kil1=\E[30~, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
	sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;m,
	sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=vt220+pcedit, use=vt100+enq,
	use=xterm+kbs,
# Compatible with the R6 xterm
# (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
# added khome/kend, hts based on the R6 xterm code - TD
# (khome/kend do not actually work in X11R5 or X11R6, but many people use this
# for compatibility with other emulators).
xterm-r6|xterm X11R6 version,
	OTbs, am, km, mir, msgr, xenl,
	cols#80, it#8, lines#24,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
	il1=\E[L, ind=\n,
	is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kmous=\E[M, meml=\El, memu=\Em,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7,
	sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=vt220+vtedit, use=xterm+kbs, use=vt100+enq,
xterm-old|antique xterm version,
	use=xterm-r6,
# The monochrome version began as a copy of "xtermm" (from Solaris), and was
# initially part of the xterm sources (in XFree86).  But "xterm" continued to
# grow, while "xterm-mono" had none of the newer features.  Additionally,
# inheriting from "xtermm" runs into several problems, including different
# function keys as well as the fact that the mouse support is not compatible.
# This entry restores the original intent, intentionally not an alias to
# simplify maintenance -TD
xterm-mono|monochrome xterm,
	use=xterm-r6,
# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up.
# The name has been changed and some aliases have been removed.
xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
	OTbs, am, bce, km, mir, msgr, xenl, XT,
	cols#80, it#8, lines#24, ncv@,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, enacs=\E(B\E)0,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
	kbeg=\EOE, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=^?, kend=\EOF, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	kfnd=\E[1~, khome=\EOH, kich1=\E[2~, kmous=\E[M, knp=\E[6~,
	kpp=\E[5~, kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=^O, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>,
	sc=\E7,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+kbs, use=vt100+enq,
	use=ecma+color, use=vt220+cvis, use=vt220+keypad,

# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
# codes for F1-F4 except while in VT220 mode.
xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32,

# This version was released in XFree86 3.3.3 (November 1998).
# Besides providing printer support, it exploits a new feature that allows
# xterm to use terminfo-based descriptions with the titeInhibit resource.
# -- the distribution contained incorrect khome/kend values -TD
xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
	blink=\E[5m, ich1@, invis=\E[8m,
	is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
	rmcup=\E[?1047l\E[?1048l, rs1=\Ec,
	rs2=\E[!p\E[?3;4l\E[4l\E>,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	smcup=\E[?1048h\E[?1047h, use=ansi+pp,
	use=xterm-xf86-v33,

# This version was released in XFree86 4.0.
xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
	npc,
	kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~,
	kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@,
	ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF,
	kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
	kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~,
	kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
	kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P,
	kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~,
	kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
	kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
	kf48=\E[24;6~, khome=\EOH,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
	    %p9%t\016%e\017%;,
	use=xterm+alt1049, use=xterm-xf86-v333,

# This version was released in XFree86 4.3.
xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System),
	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
	kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
	kbeg@,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p7%t;8%;m%?%p9%t\016%e\017%;,
	use=xterm-xf86-v40,

# Controlling the cursor-visibility is not a "new" feature, but was generally
# neglected in terminal emulators until the mid-1990s.  These would work for
# the hardware terminals, or for more recent emulators, e.g., xterm.
vt220+cvis|DECTCEM VT220 cursor-visibility,
	civis=\E[?25l, cnorm=\E[?25h,
vt220+cvis8|8-bit DECTCEM VT220 cursor-visibility,
	civis=\233?25l, cnorm=\233?25h,
# The cvvis capability was unused in the SVr4 terminal descriptions for the
# AT&T terminals, and there are no available documents as of 2021 which can
# provide that it would have worked.  The first block is used for those 1980s
# terminals; the second is used for terminals whose behavior can be verified.
att610+cvis0|AT&T 610 cursor-visibility,
	civis=\E[?25l, cnorm=\E[?25h\E[?12l,
att610+cvis|xterm cursor-visibility in XFree86 4.4,
	civis=\E[?25l, cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h,

# This version was released in XFree86 4.4.
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
	use=att610+cvis, use=ecma+index, use=xterm-xf86-v43,

xterm-xfree86|xterm terminal emulator (XFree86),
	use=xterm-xf86-v44,

xterm+nofkeys|building block for xterm fkey-variants,
	npc,
	kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
	use=ansi+rep, use=ecma+strikeout, use=vt420+lrmm,
	use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
	use=xterm+keypad, use=xterm-basic,

# This version reflects the current xterm features.
xterm-new|modern xterm terminal emulator,
	npc,
	kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
	use=ansi+rep, use=ecma+strikeout, use=xterm+pcfkeys,
	use=xterm+nofkeys,

# This fragment is for people who cannot agree on what the backspace key
# should send.
xterm+kbs|fragment for backspace key,
	kbs=^H,
#
# This fragment describes as much of XFree86 xterm's "pc-style" function
# keys as will fit into terminfo's 60 function keys.
# From ctlseqs.ms:
#    Code     Modifiers
#  ---------------------------------
#     2       Shift
#     3       Alt
#     4       Shift + Alt
#     5       Control
#     6       Shift + Control
#     7       Alt + Control
#     8       Shift + Alt + Control
#  ---------------------------------
# The meta key may also be used as a modifier in this scheme, adding another
# bit to the parameter.
xterm+pcfkeys|fragment for PC-style fkeys,
	use=xterm+app, use=xterm+pcf2, use=xterm+pcc2,
	use=xterm+pce2,

# The xterm ctrlFKeys resource defaults to 10, so without the "pc-style"
# feature, e.g., setting the modifyCursorKeys and modifyFunctionKeys resources
# to -1 to disable them, one gets 42 function-keys on a 12-function-key
# keyboard, e.g.,
# kf1                   = \E[11~
# kf11 shift f1         = \E[23~
# kf21 control f1       = \E[42~
# kf31 shift control f1 = \E[52~
xterm+nopcfkeys|fragment without PC-style fkeys,
	kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~,
	kf20=\E[34~, kf21=\E[42~, kf22=\E[43~, kf23=\E[44~,
	kf24=\E[45~, kf25=\E[46~, kf26=\E[47~, kf27=\E[48~,
	kf28=\E[49~, kf29=\E[50~, kf3=\E[13~, kf30=\E[51~,
	kf31=\E[52~, kf32=\E[53~, kf33=\E[54~, kf34=\E[55~,
	kf35=\E[56~, kf36=\E[57~, kf37=\E[58~, kf38=\E[59~,
	kf39=\E[60~, kf4=\E[14~, kf40=\E[61~, kf41=\E[62~,
	kf42=\E[63~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~,

xterm+noapp|fragment with cursor keys in normal mode,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F,
	khome=\E[H,

xterm+app|fragment with cursor keys in application mode,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF,
	khome=\EOH,
#
# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
# and revised in xterm patch #167 (2002/8/24).  Some other terminal emulators
# copied the earlier scheme, as noted in the "use=" clauses in this file.
#
# The original assignments from patch #94 for cursor-keys had some technical
# issues:
#
#	A parameter for a function-key to represent a modifier is just more
#	bits.  But for a cursor-key it may change the behavior of the
#	application.  For instance, emacs decodes the first parameter of a
#	cursor-key as a repeat count.
#
#	A parameterized string should (really) not begin with SS3 (\EO).
#	Rather, CSI (\E[) should be used.
#
# For these reasons, the original assignments were deprecated.  For
# compatibility reasons, they are still available as a setting of xterm's
# modifyCursorKeys resource.  These fragments list the modified cursor-keys
# that might apply to xterm+pcfkeys with different values of that resource.
#
# These entries will have warnings when checking with tic because the kri/kind
# capabilities duplicate the kUP/kDN extensions.  This is intentional, though
# not part of the original plan.  The changes for xterm patch #206 (2005/11/3)
# show that kri/kind were seen much later as part of a set including kLFT/kRIT:
#
#   * modify  xterm-new  terminfo  entry to use capabilities for shifted
#     scroll forward/reverse as shifted cursor up/down.
#
# In the 1980s when terminfo was defined, the developers made more of
# a distinction between shifted up/down versus shifted left/right since most
# terminals can index (scroll up/down), while few can scroll left/right.
xterm+pcc3|fragment with modifyCursorKeys:3,
	kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B,
	kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B,
	kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B,
	kLFT3=\E[>1;3D, kLFT4=\E[>1;4D, kLFT5=\E[>1;5D,
	kLFT6=\E[>1;6D, kLFT7=\E[>1;7D, kRIT3=\E[>1;3C,
	kRIT4=\E[>1;4C, kRIT5=\E[>1;5C, kRIT6=\E[>1;6C,
	kRIT7=\E[>1;7C, kUP=\E[>1;2A, kUP3=\E[>1;3A,
	kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A,
	kUP7=\E[>1;7A,

xterm+pcc2|fragment with modifyCursorKeys:2,
	kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A,
	kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B,
	kDN6=\E[1;6B, kDN7=\E[1;7B, kLFT3=\E[1;3D, kLFT4=\E[1;4D,
	kLFT5=\E[1;5D, kLFT6=\E[1;6D, kLFT7=\E[1;7D,
	kRIT3=\E[1;3C, kRIT4=\E[1;4C, kRIT5=\E[1;5C,
	kRIT6=\E[1;6C, kRIT7=\E[1;7C, kUP=\E[1;2A, kUP3=\E[1;3A,
	kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A,

xterm+pcc1|fragment with modifyCursorKeys:1,
	kLFT=\E[2D, kRIT=\E[2C, kind=\E[2B, kri=\E[2A, kDN=\E[2B,
	kDN3=\E[3B, kDN4=\E[4B, kDN5=\E[5B, kDN6=\E[6B, kDN7=\E[7B,
	kLFT3=\E[3D, kLFT4=\E[4D, kLFT5=\E[5D, kLFT6=\E[6D,
	kLFT7=\E[7D, kRIT3=\E[3C, kRIT4=\E[4C, kRIT5=\E[5C,
	kRIT6=\E[6C, kRIT7=\E[7C, kUP=\E[2A, kUP3=\E[3A,
	kUP4=\E[4A, kUP5=\E[5A, kUP6=\E[6A, kUP7=\E[7A,

xterm+pcc0|fragment with modifyCursorKeys:0,
	kLFT=\EO2D, kRIT=\EO2C, kind=\EO2B, kri=\EO2A, kDN=\EO2B,
	kDN3=\EO3B, kDN4=\EO4B, kDN5=\EO5B, kDN6=\EO6B, kDN7=\EO7B,
	kLFT3=\EO3D, kLFT4=\EO4D, kLFT5=\EO5D, kLFT6=\EO6D,
	kLFT7=\EO7D, kRIT3=\EO3C, kRIT4=\EO4C, kRIT5=\EO5C,
	kRIT6=\EO6C, kRIT7=\EO7C, kUP=\EO2A, kUP3=\EO3A,
	kUP4=\EO4A, kUP5=\EO5A, kUP6=\EO6A, kUP7=\EO7A,

#
# Here are corresponding fragments from xterm patch #216:
#
xterm+pcf0|fragment with modifyFunctionKeys:0,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
	kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf3=\EOR,
	kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
	kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
	kf36=\E[24;5~, kf37=\EO6P, kf38=\EO6Q, kf39=\EO6R,
	kf4=\EOS, kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~,
	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, kf49=\EO3P,
	kf5=\E[15~, kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S,
	kf53=\E[15;3~, kf54=\E[17;3~, kf55=\E[18;3~,
	kf56=\E[19;3~, kf57=\E[20;3~, kf58=\E[21;3~,
	kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P,
	kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
#
xterm+pcf2|fragment with modifyFunctionKeys:2,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
	kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
	kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
	kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
	kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
	kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
	kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
	kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
	kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
	kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~,
#
# Chunks from xterm #230:
xterm+pce2|fragment with modifyCursorKeys:2,
	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
	kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~,
	kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~,
	kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F,
	kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F,
	kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H,
	kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~,
	kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~,
	kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~,
	kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~,
	kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~,
	use=xterm+edit,

xterm+edit|fragment for 6-key editing-keypad,
	kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	use=xterm+pc+edit,

xterm+pc+edit|fragment for pc-style editing keypad,
	kend=\E[4~, khome=\E[1~,

xterm+vt+edit|fragment for vt220-style editing keypad,
	kfnd=\E[1~, kslt=\E[4~,

# These variations for alternate-screen and title-stacking were introduced by
# xterm patch #331:
xterm+noalt|xterm without altscreen,
	rmcup@, smcup@,

xterm+alt1049|xterm 90 feature,
	rmcup=\E[?1049l, smcup=\E[?1049h,

xterm+titlestack|xterm 251 feature,
	rmcup=\E[23;0;0t, smcup=\E[22;0;0t,

xterm+alt+title|xterm 90 and 251 features combined,
	rmcup=\E[?1049l\E[23;0;0t, smcup=\E[?1049h\E[22;0;0t,

# https://invisible-island.net/xterm/xterm.faq.html#xterm_keypad
#
# Xterm's emulation of the VT100 numeric keypad on a PC-keyboard runs into the
# problem that the keypad layout is different, and that the natural choice for
# PF1 is NumLock (which happens to be reserved for other use).  To work around
# that, PF1-PF4 are emulated via F1-F4, which leaves the "/", "*" and "+" not
# directly related to VT100.
#
# With the VT220 keypad block that uses the 1-9 keys as suggested in
# terminfo(5), the other keys can be handled with user-defined capabilities:
#
#   _______________________________________
#  | NumLock |    /    |    *    |    -    |
#  |         |   $Oo   |   $Oj   |   $OS   |
#  |_________|__kpDIV__|__kpMUL__|__kpSUB__|
#  |    7         8         9    |    +    |
#  |   $Ow   |   $Ox   |   $Oy   |   $Ok   |
#  |_ka1__K1_|_________|_ka3__K3_|  kpADD  |
#  |    4    |    5    |    6    |         |
#  |   $Ot   |   $Ou   |   $Ov   |         |
#  |_________|_kb2__K2_|_________|_________|
#  |    1    |    2    |    3    |         |
#  |   $Oq   |   $Or   |   $Os   |         |
#  |_kc1__K4_|_________|_kc3__K5_|  enter  |
#  |         0         |    .    |   $OM   |
#  |        $Op        |   $On   |         |
#  |_______kpZRO_______|__kpDOT__|_kent_@8_|
#
# ka2, kb1, kb3 and kc2 are extensions, as are the mixed-case names.
# There are no termcap equivalents for these extensions.
#
# kpCMA (comma) is used here for the VT100 keypad, which xterm emulates with
# shifted-keypad-plus, though normally that invokes a font-size change.
#
# Old versions of xterm, e.g., xterm-xfree86, documented \EOE as kb2, which
# does not fit into this layout.  The extension kp5 fits, but is not visible
# to termcap applications.  As an alternative, kbeg (which does have a termcap
# equivalent) is provided.
#
xterm+keypad|xterm emulating VT100/VT220 numeric keypad,
	kbeg=\EOE, kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo,
	kpDOT=\EOn, kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp,
	use=vt220+keypad,
#
# Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
# Alternatively, the same scheme with old-style function keys as in xterm-r6
# is shown here (because that is used in mrxvt and mlterm):
xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2,
	kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~,
	kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~,
	kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~,
	kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~,
	kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~,
	kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~,
	kf63=\E[13;4~, use=xterm+pcf2,
#
# This chunk is used for building the VT220/Sun/PC keyboard variants.
xterm-basic|modern xterm terminal emulator - common,
	OTbs, am, bce, mir, msgr, xenl, AX, XT,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\n, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>,
	kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8,
	rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
	rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
	    %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+pp, use=xterm+kbs,
	use=xterm+alt+title, use=ansi+enq, use=att610+cvis,
	use=xterm+meta,

xterm+meta|meta mode for xterm,
	km,
	rmm=\E[?1034l, smm=\E[?1034h,

# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
# In retrospect, something like xterm-r6 was intended here -TD
xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1,
	rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33,

#### XTERM Colors

# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0
# (T.Dickey)
#
# If configured to support 88- or 256-colors (which is fairly common in 2009),
# xterm also recognizes the control sequences for initc -TD
xterm-16color|xterm with 16 colors like aixterm,
	ccc,
	initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
	      %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	use=xterm+osc104, use=ibm+16color, use=xterm-new,

# 256-colors is a compile-time feature of XFree86 xterm beginning with
# xterm patch #111 (1999/7/10) -TD
xterm+256color|original xterm 256-color feature,
	ccc,
	colors#0x100, pairs#0x10000,
	initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
	      %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	oc=\E]104\007,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
	      5;%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
	      ;%p1%d%;m,
	setb@, setf@,

# The semicolon separator used in xterm+256color does not follow the ECMA-48
# standard.  Since patch #282 (in 2012), xterm has supported both the legacy
# subparameter separator (semicolon) and the standard (colon).
#
# The xterm FAQ gives some of the history:
#	https://invisible-island.net/xterm/xterm.faq.html#color_by_number
xterm+256color2|xterm 256-color feature,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48:
	      5:%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38:5
	      :%p1%d%;m,
	use=xterm+256color,

# xterm OSC 104 resets the color palette.  Using it as part of xterm+256color
# has the drawback that some of the xterm-alikes which use that building block
# require a different approach to rs1 -TD
xterm+osc104|reset color palette,
	oc=\E]104\007, rs1=\Ec\E]104\007,

# palette is hardcoded...
xterm+256setaf|xterm 256-color (set-only),
	ccc@,
	colors#0x100, pairs#0x10000,
	initc@, op=\E[39;49m,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
	      5;%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
	      ;%p1%d%;m,
	setb@, setf@,

# 88-colors is a compile-time feature of XFree86 xterm beginning with
# xterm patch #115 (1999/9/18) -TD
#
# Note that the escape sequences used are the same as for 256-colors - xterm
# has a different table of default color resource values.  If built for
# 256-colors, it can still handle an 88-color palette by using the initc
# capability.
#
# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals
# which support the xterm+256color feature support the associated initc
# capability.  So it is cancelled in the entries which use this and/or the
# xterm+256color block.
#
# The default color palette for the 256- and 88-colors are different.  A
# given executable will have one palette (perhaps compiled-in).  If the program
# supports xterm's control sequence, it can be programmed using initc.
xterm+88color|original xterm 88-color feature,
	colors#88, pairs#7744, use=xterm+256color,

xterm+88color2|xterm 88-color feature,
	colors#88, pairs#7744, use=xterm+256color2,

# These variants of XFree86 3.9.16 xterm are built as a configure option.
xterm-256color|xterm with 256 colors,
	use=xterm+osc104, use=xterm+256color, use=xterm-new,
xterm-88color|xterm with 88 colors,
	use=xterm+osc104, use=xterm+88color,
	use=xterm-256color,

# Emacs 26.1 and later support direct color mode in terminals, using a
# combination of user-defined capabilities and ncurses-dependent function
# calls.  We will not include that here.
#
# Here is a first revision, which (disregarding the reuse of colors 1-7 which
# is of interest only to the numerically illiterate), is compatible with other
# terminal descriptions written for curses.  It relies upon the extended range
# for numeric capabilities provided in ncurses 6.1:
xterm+direct2|xterm with direct-color indexing,
	RGB,
	colors#0x1000000, pairs#0x10000, CO#8,
	initc@, op=\E[39;49m,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2:%p1%{65536}%/%d:%p1%{256}
	      %/%{255}%&%d:%p1%{255}%&%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2:%p1%{65536}%/%d:%p1%{256}
	      %/%{255}%&%d:%p1%{255}%&%d%;m,
	setb@, setf@,
xterm-direct2|xterm with direct-color indexing (old),
	use=xterm+direct2, use=xterm+titlestack, use=xterm,

# That in turn had a problem: in the original patch submitted for KDE konsole
# in 2006, the submitter and the developer alike overlooked a "color space
# identifier" parameter.  This version provides for that parameter:
xterm+direct|xterm with direct-color indexing,
	RGB,
	colors#0x1000000, pairs#0x10000, CO#8,
	initc@, op=\E[39;49m,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	setb@, setf@,
xterm-direct|xterm with direct-color indexing,
	use=xterm+direct, use=xterm,

# Here are corresponding flavors for terminals which could use the feature:
iterm2-direct|iTerm2 with direct-color indexing,
	use=xterm+direct, use=iterm2,
mlterm-direct|mlterm with direct-color indexing,
	use=xterm+direct, use=mlterm,

# Meanwhile, in KDE #107487, the patch submitter and the developer both saw
# that xterm's original implementation should have used colons for the
# subparameter separators, but chose not to correct this in konsole.  As of
# late 2017, konsole still accepts only the nonstandard semicolon delimiters.
xterm+indirect|xterm with direct-color indexing (old),
	RGB,
	colors#0x1000000, pairs#0x10000,
	initc@, op=\E[39;49m,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}
	      %/%{255}%&%d;%p1%{255}%&%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}
	      %/%{255}%&%d;%p1%{255}%&%d%;m,
	setb@, setf@,
konsole-direct|konsole with direct-color indexing,
	use=xterm+indirect, use=konsole,
st-direct|simpleterm with direct-color indexing,
	use=xterm+indirect, use=st,
vte-direct|VTE with direct-color indexing,
	use=xterm+indirect, use=vte,
# reportedly in Apple's Mohave (fall 2018), but untested -TD
nsterm-direct|nsterm with direct-color indexing,
	use=xterm+indirect, use=nsterm,

# As for others (commenting at the time of release for ncurses 6.1):
# + Apple's Terminal.app does not recognize either form of the direct-color
#   sequences.
# + Cygwin's mintty recognizes xterm's original implementation, does okay with
#   the colors.  Like vte, it is a subset of xterm, although different
#   omissions/reservations of modified-keys are seen in testing.
# + PuTTY 0.70 seems to recognize xterm's original implementation but does
#   nothing useful with the colors.
# + Teraterm 4.97, like PuTTY (no good).
# + terminology 0.91 recognizes xterm's original implementation, but does
#   nothing useful with it.

# Reviewing after ncurses 6.2:
# + Apple's Terminal.app is unchanged, has no support for direct color:
#	Catalina 10.15.5 Terminal.app 2.10 (433)
#	Mohave 10.14.6 - Terminal.app 2.9.5 (421.2)
# + Cygwin's mintty 3.1.7 works with colon/semicolon
# + PuTTY 0.73 works with semicolon
# + Teraterm 4.105 works with semicolon
# + terminology 1.7.0 works with colon/semicolon.

# Other variants are possible, e.g., by using more of xterm's indexed color
# palette, though the intrusion of indexed colors on the direct-color space
# would be more noticeable.

xterm+direct16|xterm with direct-color indexing,
	CO#16,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%?%p1%{16}%<%t%p1%{92}%+%d%e48
	      :2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&
	      %d%;%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%?%p1%{16}%<%t%p1%'R'%+%d%e38:
	      2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%d
	      %;%;m,
	setb@, setf@, use=xterm+direct,

xterm-direct16|xterm with direct-colors and 16 indexed colors,
	use=xterm+direct16, use=xterm,

xterm+direct256|xterm with direct-color indexing,
	CO#0x100,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e%?
	      %p1%{256}%<%t48;5;%p1%d%e48:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e%?
	      %p1%{256}%<%t38;5;%p1%d%e38:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;%;m,
	setb@, setf@, use=xterm+direct,

xterm-direct256|xterm with direct-colors and 256 indexed colors,
	use=xterm+direct256, use=xterm,

#### XTERM Features

# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who
# asked for some of xterm's advanced features to be added to its terminfo
# entry.  It defines extended capabilities not found in standard terminfo or
# termcap.  These are useful in tmux, for instance, hence the name.
#
# One caveat in adding extended capabilities in ncurses is that if the names
# are longer than two characters, then they will not be visible through the
# termcap interface.
#
# Ms modifies the selection/clipboard.  Its parameters are
#	p1 = the storage unit (clipboard, selection or cut buffer)
#	p2 = the base64-encoded clipboard content.
#
# Ss is used to set the cursor style as described by the DECSCUSR
#	function to a block or underline.
# Se resets the cursor style to the terminal power-on default.
#
# Cs and Cr set and reset the cursor colour.
xterm+tmux|advanced xterm features used in tmux,
	Cr=\E]112\007, Cs=\E]12;%p1%s\007,
	Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q,
xterm+tmux2|advanced xterm features used in tmux,
	Cr=\E]112\E\\, Cs=\E]12;%p1%s\E\\,
	Ms=\E]52;%p1%s;%p2%s\E\\, Se=\E[ q, Ss=\E[%p1%d q,

# This is another variant, for XFree86 4.0 xterm (T.Dickey)
# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
# To use it, your decTerminalID resource must be set to 200 or above.
#
#	HTS	\E H	\210
#	RI	\E M	\215
#	SS3	\E O	\217
#	CSI	\E [	\233
#
xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
	OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
	civis=\233?25l, clear=\233H\2332J,
	cnorm=\233?25l\233?25h, cr=\r, csr=\233%i%p1%d;%p2%dr,
	cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=\n,
	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
	cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h,
	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
	ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
	flash=\233?5h$<100/>\233?5l, home=\233H,
	hpa=\233%i%p1%dG, ht=^I, hts=\210, ich=\233%p1%d@,
	il=\233%p1%dL, il1=\233L, ind=\n, invis=\2338m,
	is2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r
	    \E8,
	ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kc1=\217q,
	kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
	kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
	kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~,
	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
	kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~,
	kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~,
	kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M,
	knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i,
	meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m,
	ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l,
	rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
	rs1=\Ec,
	rs2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r
	    \E8,
	sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
	setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1
	     %{6}%=%t3%e%p1%d%;m,
	setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1
	     %{6}%=%t3%e%p1%d%;m,
	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
	smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=,
	smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR,
	u7=\E[6n, u8=\233[?%[;0123456789]c, u9=\E[c,
	vpa=\233%i%p1%dd, use=xterm+kbs,

# Note: normally xterm supports modified function-keys as described in
#	XTerm - "Other" modified keys
#	https://invisible-island.net/xterm/modified-keys.html
#
# However, xterm-hp, xterm-sco and xterm-sun assume no modifiers.  Here is
# a simple script which demonstrates these descriptions:
#	#!/bin/sh
#	export TERM=xterm-$1
#	xterm \
#		-kt $1 \
#		-fs 16 -fa mono \
#		-title $TERM \
#		-tn $TERM \
#		-xrm '*modifyCursorKeys:-1' \
#		-xrm '*modifyFunctionKeys:-1' \
#		-e tack
# e.g., "foo sun" if the script is named "foo" -TD
xterm-hp|xterm with hpterm function keys,
	kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kdch1=\EP, kend=\EF, khome=\Eh, kich1=\EQ, knp=\ES, kpp=\ET,
	use=hp+pfk-cr, use=xterm+nofkeys, use=xterm+nopcfkeys,

xterm-sco|xterm with SCO function keys,
	kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
	kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
	kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
	kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
	kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O,
	kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t,
	kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y,
	kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
	kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
	kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
	kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I,
	use=xterm+nofkeys,

# The xterm-new description has all of the features, but is not completely
# compatible with vt220.  If you are using a Sun or PC keyboard, set the
# sunKeyboard resource to true:
#	+ maps the editing keypad
#	+ interprets control-function-key as a second array of keys, so a
#	  12-fkey keyboard can support vt220's 20-fkeys.
#	+ maps numeric keypad "+" to ",".
#	+ uses DEC-style control sequences for the application keypad.
#
xterm-vt220|xterm emulating vt220,
	npc,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kend=\E[4~, kent=\EOM, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
	kmous=\E[M, knp=\E[6~, kpp=\E[5~, nel=\EE, use=xterm+app,
	use=xterm+edit, use=vt220+keypad, use=ecma+italics,
	use=ecma+index, use=ansi+rep, use=ecma+strikeout,
	use=xterm+sm+1006, use=xterm+tmux, use=xterm+keypad,
	use=xterm-basic,

xterm-vt52|xterm emulating DEC vt52,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
	home=\EH, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
	use=xterm+kbs, use=vt52+keypad,

xterm-noapp|xterm with cursor keys in normal mode,
	rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp,
	use=xterm,

xterm-24|vs100|xterms|xterm terminal emulator (X Window System),
	lines#24, use=xterm-old,

# This is xterm for ncurses.
xterm|xterm terminal emulator (X Window System),
	use=xterm-new,

# This entry assumes that xterm's handling of VT100 SI/SO is disabled by
# setting the vt100Graphics resource to false.
xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode,
	U8#1, use=xterm,

# These building-blocks allow access to the X titlebar and icon name as a
# status line.  There are a few problems in using them in entries:
#
# a) tsl should have a parameter to denote the column on which to transfer to
#    the status line.
# b) the "0" code for xterm updates both icon-title and window title.  Some
#    window managers such as twm (and possibly window managers descended from
#    it such as tvtwm, ctwm, and vtwm) track windows by icon-name. Thus, you
#    don't want to mess with icon-name when using those window managers.
#
# The extension "TS" is preferable, because it does not accept a parameter.
# However, if you are using a non-extended terminfo, "TS" is not visible.
xterm+sl|access X title line and icon name,
	hs,
	dsl=\E]0;\007, fsl=^G, tsl=\E]0;, TS=\E]0;,
xterm+sl-twm|access X title line (pacify twm-descended window managers),
	hs,
	dsl=\E]2;\007, fsl=^G, tsl=\E]2;, TS=\E]2;,

# In contrast, this block can be used for a DEC vt320 and up.  There are two
# controls used.
#
# DECSASD (select active status display)
#	\E[0$}	Main display
#	\E[1$}	Status line
#
# DECSSDT (select status line type)
#	\E[0$~	No status line
#	\E[1$~	Indicator status line
#	\E[2$~	Host-writable status line
#
# The building block assumes that the terminal always shows something at the
# status line (either the indicator, or status line).  That is because if no
# status line is used, then the terminal makes that line part of the user
# window, changing its size without notice.
#
# Because there is no "esl" (enable status line) capability, the "tsl"
# capability ensures that the status line is host-writable.  A DEC terminal
# will clear the status line when changing from indicator to host-writable
# mode.
#
# Once on the status line, the row part of cursor addressing is ignored.  Since
# tsl expects a parameter (to specify the column), the shortest addressing that
# can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
#
dec+sl|DEC VTxx status line,
	eslok, hs,
	dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`,

#
# The following xterm variants don't depend on your base version
#
# xterm with bold instead of underline
xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold,
	sgr=%?%p9%t\016%e\017%;B\E[0%?%p6%t;1%;%?%p2%t;1%;%?%p1%p3%|
	    %t;7%;m,
	smso=\E[7m, smul=\E[1m, use=xterm-old,

# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
	ich@, ich1@, use=xterm,
# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996
xterm1|xterm terminal emulator ignoring the alternate screen buffer,
	rmcup@, smcup@, use=xterm,

#### XTERM Mouse
# The xterm mouse protocol is used by other terminal emulators.
# In this section, two extended capabilities are used to illustrate the mouse
# protocol: XM and xm.  The "XM" capability is recognized by ncurses to allow
# enabling/disabling other mouse protocols.  The "xm" capability describes the
# mouse response; currently there is no interpreter which would use this
# information to make the mouse support completely data-driven.

# Here is the "original" xterm mouse protocol.
#
# First seen in X10.3, February 1986, this likely dates from 1985 based on the
# copyright dates in the sources.  A comment in charproc.c notes "MIT bogus
# sequence", referring to the fact that it does not correspond to a "real"
# terminal.  The mouse responses for the X10 protocol are sent only for
# button-presses.
xterm+x10mouse|X10 xterm mouse protocol,
	kmous=\E[M, XM=\E[?9%?%p1%{1}%=%th%el%;,
	xm=\E[M%p3%' '%+%c%p2%'!'%+%c%p1%'!'%+%c,
xterm-x10mouse|X10 xterm mouse,
	use=xterm+x10mouse, use=xterm,

# Here is the conventional xterm mouse protocol, introduced with X11R1 in
# September 1987.
#
# The mouse responses for the X11 protocol covered button releases, as well as
# modifiers:
#  shift    4
#  alt/meta 8 (technically the "mod1" mask, because X11 has no such keys)
#  control 16
#
# The modifiers are not reflected in this description because as used in xterm
# they are normally inaccessible because the translations resources assign
# shift and control to other features.  However, they are important because
# they take up space in the first byte of the response.  The other bits of this
# byte are used to encode the button number for both presses and releases.
# In the X11 protocol, any button-release is encoded with "3" (the lowest 2
# bits in the byte).  Later work on XFree86 xterm used the remaining 3 bits to
# provide additional features, e.g., wheel mouse.
#
# X11R1's xterm also supported an "emacs" mouse protocol, with final character
# "t" or "T", which was activated by double-clicking.  The "t" response was
# used when the starting/ending positions were the same.
#
# X11R3 (February 1988) added the highlight/tracking mode.
#
# X11R4 (December 1989) added the control sequences document, listing the
# control sequences for the X10/X11 protocols without descriptions.  It also
# mentioned the "emacs" ("T") response.  Comments in button.c referred to the
# X11 protocol as "DEC vt200 compatible", although DEC offered no such terminal.
#
# X11R5 (November 1993) gave a description of the mouse protocol.
#
# X11R6 (January 1995) moved the control sequences document out of the xterm
# source-directory to xc/doc/specs/xterm, polishing the formatting but adding
# no new information.
xterm+x11mouse|X11 xterm mouse protocol,
	kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;,
	xm=\E[M%?%p4%t%p3%e%{3}%;%'\s'%+%c%p2%'!'%+%c%p1%'!'%+%c,
xterm-x11mouse|X11 mouse,
	use=xterm+x11mouse, use=xterm,

# Here is a suggested description of the xterm highlighting protocol.
# A more complicated example could be constructed to account for the "t"
# response.
xterm+x11hilite|X11 xterm mouse protocol with highlight,
	kmous=\E[M, XM=\E[?1001%?%p1%{1}%=%th%el%;,
	xm=\E[%p6%'!'%+%p5%'!'%+%c%p8%'!'%+%c%p7%'!'%+%c%p2%'!'%+%c
	   %p1%'!'%+%cT,
xterm-x11hilite|X11 mouse with highlight,
	use=xterm+x11mouse, use=xterm,

# The preceding were the sources from X Consortium.  Other sources (or patches)
# were available.  Starting in mid-1995, XFree86 developers collected some of
# those changes and began improvements, e.g., to support color.  This was, by
# the way, around the same time that rxvt developers began implementing color,
# though dates (and attributions) are not well documented.  I became interested
# in xterm in late 1995, and involved in early 1996.  To complete the picture,
# CDE's dtterm was introduced around the same time, with no mouse protocol -TD

# xterm patch #83 (1998/10/7), added Jason Bacon's changes to provide an
# "any-event" mouse mode.
xterm+sm+1002|xterm any-event mouse,
	kmous=\E[M, XM=\E[?1002%?%p1%{1}%=%th%el%;,
xterm-1002|xterm any-event mouse,
	use=xterm+sm+1002, use=xterm,

xterm+sm+1003|testing xterm-mouse,
	kmous=\E[M, XM=\E[?1003%?%p1%{1}%=%th%el%;,

xterm-1003|testing xterm-mouse,
	use=xterm+sm+1003, use=xterm,

# xterm patch #116 (1999/9/25) added Stephen P Wall's changes to support DEC
# locator mode.

# xterm patch #120 (1999/10/28) added my change to support wheel mouse, by
# dropping support for the X11 mouse protocol's shift-modifier and using
# available bits in the first byte of the response to encode buttons 4 and 5.
# xterm patch #126 (2000/2/8) amended that change to avoid conflicting with
# older configurations which might have used the obsolete modifiers.

# xterm patch #262 (2010/8/30) added Ryan Johnson's changes to provide a mode
# where the coordinates in the mouse response would be encoded in UTF-8,
# thereby extending the range of coordinates past 222=(255-33).  This is the
# "1005" mouse mode.
xterm+sm+1005|xterm UTF-8 mouse,
	kmous=\E[M, XM=\E[?1005;1000%?%p1%{1}%=%th%el%;,
	xm=\E[M%?%p4%t3%e%p3%'\s'%+%c%;%p2%'!'%+%u%p1%'!'%+%u,
xterm-1005|xterm UTF-8 mouse,
	use=xterm+sm+1005, use=xterm,

# xterm patch #277 (2012/1/7) provides a mode where the mouse response uses
# SGR-style parameters.
#
# Someone stated that the 1005 mouse mode would not be handled properly in luit.
# (By the way, this is a problem with the X11 protocol).  A more plausible
# criticism is that the responses provided by the 1005 mode are not distinct
# from the non-1005 responses.
#
# As an alternative (and fixing the longstanding limitation of X11 mouse
# protocol regarding button-releases), I provided the 1006 mode, referring
# to it as "SGR 1006" since the replies resemble the SGR control string:
xterm+sm+1006|xterm SGR-mouse,
	kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
	xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
xterm-1006|xterm SGR-mouse,
	use=xterm+sm+1006, use=xterm,

#### KTERM
# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
# (kterm should not invoke DEC Graphics as the alternate character set
#  -- Kenji Rikitake)
# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics
#  -- MATSUMOTO Shoji)
# kterm implements acsc via built-in table of X Drawable's
kterm|kterm kanji terminal emulator (X window system),
	eslok, hs, XT,
	ncv@,
	acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~,
	csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F,
	kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
	    \E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h,
	tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color,
kterm-color|kterm-co|kterm with ANSI colors,
	ncv@, use=kterm, use=ecma+color,

#### Other XTERM

# These (xtermc and xtermm) are distributed with Solaris.  They refer to a
# variant of xterm which is apparently no longer supported, but are interesting
# because they illustrate SVr4 curses mouse controls - T.Dickey
xtermm|xterm terminal emulator (monochrome),
	OTbs, am, km, mir, msgr, xenl,
	btns#3, cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy,
	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_,
	knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM,
	rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
	smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys,

xtermc|xterm terminal emulator (color),
	colors#8, ncv#7, pairs#64,
	op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	use=xtermm,

# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
# Here's a termcap entry I've been using for xterm_color, which comes
# with BSD/OS 2.0, and the X11R6 contrib tape too I think.  Besides the
# color stuff, I also have a status line defined as the window manager
# title bar. [I have translated it to terminfo -- ESR]
xterm-pcolor|xterm with color used for highlights and status line,
	wsl#40,
	bold=\E[1;43m, rev=\E[7;34m,
	sgr=%?%p9%t\016%e\017%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1
	    %t;7;31%;%?%p3%t;7;34%;m,
	smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,

# This describes the capabilities of color_xterm, an xterm variant from
# before ECMA-64 color support was folded into the main-line xterm release.
# This entry is straight from color_xterm's maintainer.
# From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996
# The README's with the distribution also say that it supports SGR 21, 24, 25
# and 27, but they are not present in the terminfo or termcap.
color_xterm|cx|cx100|color_xterm color terminal emulator for X,
	OTbs, am, km, mir, msgr, xenl, XT,
	cols#80, it#8, lines#65, ncv@,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~,
	kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m,
	rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[0m\017, smacs=^N, smam=\E[?7h,
	smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, use=ecma+color, use=vt220+keypad,

# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of
# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
# SGR 39 or 49.  SGR 0 does reset colors (along with everything else).  This
# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except
# that each of those implements the home, end, delete keys differently.
#
# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce
# colors; note that this is not compatible with the 5.2 version.
# csw (2002-05-15): make xterm-color primary instead of nxterm, to
#   match XFree86's xterm.terminfo usage and prevent circular links
xterm-color|nxterm|generic color xterm,
	ncv@,
	op=\E[m, use=xterm-r6, use=klone+color,

# This entry describes an xterm with Sun-style function keys enabled
# via the X resource setting "xterm*sunFunctionKeys:true"
# To understand <kf11>/<kf12> note that L1,L2 and F11,F12 are the same.
# The <kf13>...<kf20> keys are L3-L10.  We don't set <kf16=\E[197z>
# because we want it to be seen as <kcpy>.
# The <kf31>...<kf45> keys are R1-R15.  We treat some of these in accordance
# with their Sun keyboard labels instead.
# From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996
xterm-sun|xterm with sunFunctionKeys true,
	kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z,
	kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z,
	kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z,
	kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z,
	kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z,
	kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z,
	kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z,
	kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z,
	kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z,
	kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z,
	kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z,
	use=xterm+nofkeys, use=xterm+nopcfkeys,
xterms-sun|small (80x24) xterm with sunFunctionKeys true,
	cols#80, lines#24, use=xterm-sun,

#### GNOME (VTE)
# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
gnome-rh62|Gnome terminal,
	bce,
	kdch1=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	use=xterm-color,

# GNOME Terminal 1.4.0.4 (Redhat 7.2)
#
# This implements a subset of vt102 with a random selection of features from
# other terminals such as color and function-keys.
#
# shift-f1 to shift-f10 are f11 to f20
#
# NumLock changes the application keypad to approximate vt100 keypad, except
# that there is no escape sequence matching comma (,).
#
# Other defects observed:
#	vt100 LNM mode is not implemented.
#	vt100 80/132 column mode is not implemented.
#	vt100 DECALN is not implemented.
#	vt100 DECSCNM mode is not implemented, so flash does not work.
#	vt100 TBC (tab reset) is not implemented.
#	xterm alternate screen controls do not restore cursor position properly
#	it hangs in tack after running function-keys test.
gnome-rh72|GNOME Terminal,
	bce, km@,
	kdch1=\E[3~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	rmam=\E[?7l,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e
	    \017%;,
	sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=vt220+cvis,
	use=xterm-color,

# GNOME Terminal 2.0.1 (Redhat 8.0)
#
# Documentation now claims it implements vt220 (which is demonstrably false).
# However, it does implement ECH, which is a vt220 feature.  And there are
# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display
# more of its bugs using vttest.
#
# However, note that bce and msgr are broken in this release.  Tabs (tbc and
# hts) are broken as well.  Sometimes flash (as in xterm-new) works.
#
# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu
# operations.  Shift-tab generates a distinct sequence so it can be argued
# that it implements kcbt.
gnome-rh80|GNOME Terminal,
	bce@, msgr@,
	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=^?,
	kcbt=\E^I, op=\E[39;49m, use=gnome-rh72,

# GNOME Terminal 2.2.1 (Redhat 9.0)
#
# bce and msgr are repaired.
gnome-rh90|GNOME Terminal,
	bce, msgr, XT,
	hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C,
	kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g,
	vpa=\E[%i%p1%dd, use=xterm+pcf0, use=xterm+pcfkeys,
	use=gnome-rh80,

# GNOME Terminal 2.14.2 (Fedora Core 5)
# Ed Catmur notes that gnome-terminal has recognized soft-reset since May 2002.
gnome-fc5|GNOME Terminal,
	rs1=\Ec,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l
	    \E[?25h,
	use=ansi+enq, use=xterm+pcc0, use=gnome-rh90,

# GNOME Terminal 2.18.1 (2007 snapshot)
#
# For any "recent" version of gnome-terminal, it is futile to attempt to
# support modifiers on cursor- and keypad keys because the program usually
# is hardcoded to set $TERM to "xterm", and on startup, it builds a subset
# of the keys (which more/less correspond to the termcap values), and will
# interpret those according to the $TERM value, but others not in the
# terminfo according to some constantly changing set of hacker guidelines -TD
vte-2007|VTE in GNOME Terminal snapshot 2.18.1,
	use=xterm+pcc2, use=vt220+cvis, use=gnome-fc5,
gnome-2007|GNOME Terminal snapshot 2.18.1,
	use=vte-2007,

# GNOME Terminal 2.22.3 (2008 snapshot)
#
# In vttest, it claims to be a vt220 with national replacement character-sets,
# but aside from the identifier string, implements only a small fraction of
# vt220's behavior, which will make it less usable on a VMS system (unclear
# what the intent of the developer is, since the NRC feature exposed in vttest
# by this change does not work).
vte-2008|VTE in GNOME Terminal snapshot 2.22.3,
	use=vte+pcfkeys, use=vte-2007,
gnome-2008|GNOME Terminal snapshot 2.22.3,
	use=vte-2008,

# GNOME Terminal 3.6.0 (2012)
# VTE 0.34.1 was marked in git 2012-10-15 (three days after patch was applied
# in ncurses).  It inherited from gnome-fc5, which broke the modified forms
# of f1-f4 -TD
#
# Testing with tack shows that flash does not/has not worked -TD
vte-2012|VTE 0.34.1,
	ncv#16,
	dim=\E[2m, flash@, invis=\E[8m, rmso=\E[27m, rmul=\E[24m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3
	    %|%t;7%;m%?%p9%t\016%e\017%;,
	use=ecma+italics, use=vte-2008,
# Version 3.6.1 sets TERM to xterm-256color (still hardcoded), which has
# 61 differences from a correct entry for gnome terminal.
gnome-2012|GNOME Terminal 3.6.0,
	use=vte-2012,

# Before 2008, GNOME terminal could automatically use the contents of the
# "xterm" terminfo to supply key information which is not built into the
# program.  With 2.22.3, this list was built into the program (which addressed
# the inadvertent use of random terminfo data, though using a set of values
# which did not correspond to any that xterm produced - still not solving the
# problem that GNOME terminal hardcoded the $TERM variable as "xterm").
#
#	terminfo	modifier	code	keys
#	kf13-kf24	shift		2	F1 to F12
#	kf25-kf36	control		5	F1 to F12
#	kf37-kf48	shift/control	6	F1 to F12
#	kf49-kf60	alt		3	F1 to F12
#	kf61-kf63	shift-alt	4	F1 to F3
#
# The parameters with \EO (SS3) are technically an error, since SS3 should have
# no parameters.  This appears to be rote copying based on xterm+pcc0.
vte+pcfkeys|VTE's variation on xterm+pcfkeys,
	kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R,
	kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q,
	kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P,
	kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S,
	kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S,
	kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R,
	use=xterm+pcfkeys,
gnome+pcfkeys|VTE's variation on xterm+pcfkeys,
	use=vte+pcfkeys,

# deprecated - use "vte" for newer versions
gnome|GNOME Terminal,
	use=vte-2012,
gnome-256color|GNOME Terminal with xterm 256-colors,
	use=xterm+256color, use=gnome,

# relevant changes were made in January 2014, and later.
#
# Originally VTE was promoted as a library able to emulate any terminal by
# reading its terminal description.  In practice, that never got beyond the
# ability to read definitions of special keys (function-, editing-, cursor).
#
# Before 2014, VTE had a termcap reader (originally pointing to a private copy
# of a termcap file derived from xterm).  That was incomplete because it did
# not have any of the modifier-key information used for xterm's function-,
# editing-, and cursor-keys.  Having its own reader was unnecessary since
# ncurses provides that information; used since xterm patch #225 in 2007.
#
# During April/May 2014, a few bug reports (e.g., gnome #169295, gnome #728900,
# gnome #730137) dealt with attempts to recast that termcap reader as library
# calls, then attempting to adapt a chunk of code from ncurses (src/vteti.c),
# abandoning that and finally constructing a table to match xterm's default
# behavior, e.g., for "xterm+pcfkeys".
vte-2014|VTE 0.35.1,
	ncv@,
	cbt=\E[Z, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
	ich=\E[%p1%d@, kent=\EOM, use=ecma+index,
	use=xterm+sm+1006, use=xterm+pcfkeys, use=vte-2012,

# As of January 2018, this was the  most recent release,
# e.g., with gnome-terminal 3.26.2
vte-2017|VTE 0.50.2,
	use=ecma+strikeout, use=vte-2014,

# VTE 0.51.2 and gnome-terminal 3.28.2 copied a feature from KovId's TTY
# late in 2017 for changing the appearance of underlines, which was
# incorporated into Debian and Fedora testing-packages in February and March
# 2018, respectively. Overline (Smol/Rmol) has been supported since December
# 2017.
vte-2018|VTE 0.51.2,
	Rmol=\E[55m, Smol=\E[53m, Smulx=\E[4:%p1%dm,
	use=vte-2017,

vte|VTE aka GNOME Terminal,
	use=vte-2018,

vte-256color|VTE with xterm 256-colors,
	use=xterm+256color, use=vte,

# XFCE Terminal 0.2.5.4beta2
#
# This is based on some of the same source code, e.g., the VTE library, as
# gnome-terminal, but has fewer features, fails more screens in vttest.
# Since most of the terminfo-related behavior is due to the VTE library,
# the terminfo is the same as gnome-terminal.
xfce|Xfce Terminal,
	use=vte-2008,

# HTERM
#
# https://hterm.org
#
# A terminal written in JavaScript, which can provide xterm-like terminal
# emulation in a browser such as Google Chrome, or in Chome OS.
#
# https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/FAQ.md
#
# Tested with Secure Shell App version 0.39 in Chrome 89.0.4389.90, found that
# the numeric keypad escapes are missing -TD
hterm|Chromium hterm,
	npc,
	U8#1,
	kcbt=\E[Z, kent=\EOM, nel=\EE, use=xterm+osc104,
	use=ecma+index, use=ansi+rep, use=ecma+strikeout,
	use=vt420+lrmm, use=xterm+sm+1006, use=xterm+tmux,
	use=ecma+italics, use=xterm+pcfkeys, use=xterm-basic,
hterm-256color|Chromium hterm with xterm 256-colors,
	use=xterm+256color2, use=hterm,

# TERMITE
#
# https://github.com/thestinger/termite
#
# A review requires install of Arch Linux since Fedora and Debian don't have
# this program.  It uses "vte3-ng" (a conflicting package), which is here:
#	https://github.com/thestinger/vte-ng
# which (based on the default branch setting) seems to be a fork of vte
# 0.48.2, and is noted as such in Arch:
#	https://aur.archlinux.org/packages/vte3-ng/
# It won't be merged:
#	https://bugzilla.gnome.org/show_bug.cgi?id=679658#c10
#	https://bugzilla.gnome.org/show_bug.cgi?id=78291
# but perhaps made obsolete.
#
# The entry as given was mislabeled "xterm-termite" (it is not xterm), and
# was mostly cut/paste from xterm-256color, but since VTE does not actually
# implement several of the features in that terminal description, this one is
# trimmed to eliminate those.  Also, since it is a slightly older version of
# VTE, it lacks a few more features (again, trimmed).
termite|VTE-based terminal,
	am, ccc, km, mir, msgr, npc, xenl,
	cols#80, it#8, lines#24, ncv@,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ind=\n, invis=\E[8m,
	is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kbs=^?, kcbt=\E[Z,
	kent=\EOM, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;%?%p7%t;8%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
	use=xterm+alt1049, use=ecma+index, use=ansi+idc,
	use=ansi+idl, use=ansi+enq, use=ecma+italics,
	use=xterm+256color, use=ecma+color, use=vt220+cvis,
	use=xterm+pcfkeys, use=xterm+sl-twm,

#### Other GNOME
# Multi-Gnome-Terminal 1.6.2
#
# This does not use VTE, and does have different behavior (compare xfce and
# gnome).
mgt|Multi GNOME Terminal,
	use=ecma+index, use=xterm-xf86-v333,

#### KDE
# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce
# or not is debatable).
kvt|KDE terminal,
	bce, km@,
	kdch1=^?, kend=\E[F, khome=\E[H, use=xterm-color,

# Konsole 1.0.1 (2001/11/25)
# (formerly known as kvt)
#
# This program hardcodes $TERM to 'xterm', which is not accurate.  However, to
# simplify this entry (and point out why konsole isn't xterm), we base this on
# xterm-r6.  The default keyboard appears to be 'linux'.
#
# Notes:
# a) konsole implements several features from XFree86 xterm, though none of
#    that is documented - except of course in its source code - apparently
#    because its implementors are unaccustomed to reading documentation - as
#    evidenced by the sparse and poorly edited documentation distributed with
#    konsole.  Some features such as the 1049 private mode are recognized but
#    incorrectly implemented as a duplicate of the 47 private mode.
# b) even with the "vt100 (historical)" keyboard setting, the numeric keypad
#    sends PC-style escapes rather than vt100.
# c) fails vttest menu 3 (Test of character sets) because it does not properly
#    parse some control sequences.  Also fails vttest Primary Device Attributes
#    by sending a bogus code (in the source it says it's supposed to be a
#    vt220, which is doubly incorrect because it does not implement vt220
#    control sequences except for a few special cases).  Treat it as a
#    mildly-broken vt102.
#
# Update for konsole 1.3.2:
#    The 1049 private mode works (but see the other xterm screens in vttest).
#    Primary Device Attributes now returns the code for a vt100 with advanced
#    video option.  Perhaps that's intended to be a "mildly-broken vt102".
#
# Updated for konsole 1.6.4:
#    add konsole-solaris
#
# Updated for konsole 1.6.6:
#    add control-key modifiers for function-keys, etc.
#
# Updated for konsole 2.3 (October 2008):
#    vttest menu 1 shows that both konsole and gnome terminal do wrapping
#    different from xterm (and vt100's).  They have the same behavior in
#    this detail, but it is unclear which copies the other.
#
# Deferred update for konsole 2.10 (late 2012):
#    add SGR 1006 mouse
#
# Updated for konsole 2.12.4 (late 2013):
#    add sitm/ritm
#
# Updated for konsole 16.07 (mid 2016):
#    add dim, invis, strikeout
#    (also overline, which is too rarely used to provide as an extension)
#
# Updated for konsole 17.12.0 (late 2017):
#
# Re-enable "bel", since it is latent in the source-code even though KDE config
# often hides the feature (2020/5/30)
konsole-base|KDE console window,
	bce, km@, npc, XT,
	ncv@,
	blink=\E[5m, dim=\E[2m, ech=\E[%p1%dX,
	flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG,
	invis=\E[8m, kbs=^?, kdch1=\E[3~, kend=\E[4~, kf1@, kf10@,
	kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@,
	kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, khome=\E[1~,
	kslt@, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
	use=ecma+index, use=xterm+sm+1006, use=ecma+strikeout,
	use=ecma+italics, use=ecma+color, use=xterm-r6,
	use=vt220+cvis,

# The keytab feature was introduced in 0.9.12 (February 2000) with "linux" and
# "vt100" key-table files along with a compiled-in default key-table.
#
# The main difference between the two keytabs was that the developer equated
# "vt100" with xterm, and noticed that the Linux console's F1-F5 differed from
# that.  For the same reason, the home/end keys differ.  A VT100 had none of
# that.  The otherwise identical keytabs have definitions to model the VT52
# cursor-keys and the VT100 cursor-keys with application versus normal modes.
#
# An "x11r5" keytab (displayed in the menu as "X11 R5") was added in January
# 2001, and shortly after retitled to "XFree 3.x.x".  Both it and "vt100" were
# dropped from the install in June 2008.
#
# The default keytab added in January 2000 was originally titled "X11 R6",
# and likewise retitled to "XFree 4".
#
# A "solaris" keytab was added in Febrary 2005, copying the "vt100" keytab
# and changing backspace to ^H, removing that keytab's attempt to model the
# VT100 keypad and VT52 (KDE #20459).
#
# The developers made changes to the default and linux keytabs.  Comparing
# the original and 2018 versions using diffstat:
#	default: 119 added, 147 deleted, 28 unchanged
#	linux:   47 added, 28 deleted, 104 unchanged
#
# Most of the change for the default keytab was to make konsole act more like
# xterm.  That was a feature named AnyMod which came in May 2005 for KDE #92749
# (see also Redhat #122815).  Later, in June 2007 the compiled-in keytab was
# made an external file (like "linux" and "solaris"), and some further
# refinement made.  But there are still flaws in the scheme.
#
# Essentially AnyMod maps the xterm "PC-style" modifier codes such as 2 for
# Shift into a placeholder in the table entries.  That works well if all of the
# modified keys are modified in the same way.  But xterm does not do that.  The
# first 4 function keys are used in xterm to support the VT100 PF1-PF4 keypad
# keys.  For example, F2 sends \EOQ in both terminals because of this feature.
# But a shifted F2 (F14=F2+12) differs like this, in infocmp's listing:
#	kf14: '\E[1;2Q', '\EO2Q'.
#
# In effect, a quarter of konsole's function-keys are different from xterm.
#
# It is not a simple blunder:
# a) xterm patch #121 (November 1999), providing the first version of the
#    PC-style modifiers would send \EO2Q
# b) xterm patch #216 (July 2006) amended this and other details, provided
#    better documentation for the modifiers and made the behavior configurable,
#    e.g., using the modifyFunctionKeys resource.  The reason why it sends
#    \E[1;2Q is that \E[O2Q is not a legal ECMA-48 control sequence.  The
#    changelog points this out as "avoid sending SS3 with parameters".
# c) That came after AnyMod was introduced, but still early enough that one
#    might expect konsole's developers to followup.  Twelve years later that
#    has yet to happen.
#
# As of 2018, konsole still provides 3 keyboard profiles ("XFree 4", "linux",
# "solaris").
konsole-linux|KDE console window with Linux keyboard,
	kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13@,
	kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E[[B, kf20@,
	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, use=konsole-base,
konsole-solaris|KDE console window with Solaris keyboard,
	kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100,

# Obsolete: x11r5.keymap
# KDE's "XFree86 3.x.x" keyboard was obviously based on reading the xterm
# terminfo at the time rather than testing the code.
konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
	kend=\E[4~, khome=\E[1~, use=konsole-vt100,

# The value for kbs (see konsole-vt100) reflects local customization rather
# than the settings used for XFree86 xterm.
konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
	kend=\EOF, khome=\EOH, use=konsole+pcfkeys,
	use=konsole-vt100,

konsole+pcfkeys|konsole subset of xterm+pcfkeys,
	kcbt=\E[Z, use=xterm+pcc2, use=xterm+pcf0,
	use=xterm+pce2,

# Obsolete: vt100.keymap
# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
# it is still useful for deriving the other entries, since the developer
# provided function-keys based on xterm.
konsole-vt100|KDE console window with vt100 (sic) keyboard,
	kbs=^?, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@,
	kf18@, kf19@, kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, use=konsole-base,

# Obsolete: vt420pc.keytab was added in June 2000, dropped from the install in
# September 2008 and removed in June 2016.  The developer who removed it stated
# that it was never installed.
konsole-vt420pc|KDE console window with vt420 pc keyboard,
	kbs=^H, kdch1=^?, use=konsole-vt100,

# make a default entry for konsole
konsole|KDE console window,
	use=konsole-xf4x,

# These were written for ncurses:
konsole-16color|klone of xterm-16color,
	ncv#32, use=ibm+16color, use=konsole,
konsole-256color|KDE console window with xterm 256-colors,
	use=xterm+256setaf, use=konsole,

#### MLTERM
# https://github.com/arakiken/mlterm

mlterm|multi lingual terminal emulator,
	use=mlterm3,

# Tested mlterm 3.9.0 (2020/09/19):
# ncurses:
# - has blinking text
# - has italics
# - has invisible-text
# tack:
# - has crossed-out text
# - does not support palette reset with OSC 104
# - testing the function-keys is difficult because the terminal is
#   preconfigured to set many of the modified keys to special functions, e.g.,
#   - shift-F1 and shift-F2 are bound to a split-screen feature
#   - control-F1 and control-F2 is bound to a new-terminal feature
# vttest:
# - primary response says it is a VT340 (ReGIS and Sixel).
# - has partial support for double-size characters.
# - character-set tests do not work.
# - DEC locator works.
# - 1006-mouse works.
# - focus-events do not work reliably.
# - numeric keypad escapes do not work.
# - back-color erase works
# other:
# - title-stack works.
# - doesn't respond to 8-bit controls.
# - 256-color palette initializing works.
# - DECSTR soft-reset is documented.
#
# Tested mlterm 3.3.8 (2018/01/21):
# found xterm+sm+1006 did not work with version 3.3.8
# soft-reset DECSTR is in sources since 2017/09/19.
#
# Tested mlterm 3.2.2 (2014/03/22):
# mlterm 3.x made further changes, but they were not reflected in the included
# mlterm.ti (which was dropped in 2015).  This entry has been based on testing
# with ncurses, tack and vttest -TD
mlterm3|multi lingual terminal emulator,
	bce, AX,
	blink=\E[5m, flash=\E[?5h$<100/>\E[?5l, invis=\E[8m,
	is2=\E[!p\E[?3;4l\E>, rs2=\E[!p\E[?3;4l\E>,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;%?
	    %p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
	use=ansi+enq, use=ansi+rep, use=ecma+italics,
	use=ecma+strikeout, use=xterm+app, use=xterm+pcf2,
	use=xterm+pcc2, use=xterm+pce2, use=xterm+meta,
	use=xterm+alt+title, use=xterm+sm+1006,
	use=vt100+pfkeys, use=mlterm2,

# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD
#
# It is nominally a vt102 emulator, with features borrowed from rxvt and
# xterm.
#
# The function keys are numbered based on shift/control/alt modifiers, except
# that the control-modifier itself is used to spawn a new copy of mlterm (the
# "-P" option).  So control/F1 to control/F12 may not be usable, depending on
# how it is configured.
#
#				kf1 to kf12	\E[11~   to \E[24~
#	shift			kf1 to kf12	\E[11;2~ to \E[24;2~
#	alt			kf1 to kf12	\E[11;3~ to \E[24;3~
#	shift/alt		kf1 to kf12	\E[11;4~ to \E[24;4~
#	control			kf1 to kf12	\E[11;5~ to \E[24;5~ (maybe)
#	control/shift		kf1 to kf12	\E[11;6~ to \E[24;6~
#	control/alt		kf1 to kf12	\E[11;7~ to \E[24;7~
#	control/shift/alt	kf1 to kf12	\E[11;8~ to \E[24;8~
#
mlterm2|multi lingual terminal emulator,
	am, eslok, km, mc5i, mir, msgr, npc, xenl, XT,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, enacs=,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kend=\EOF, kent=\EOM, khome=\EOH, kind=\EO1;2B, kmous=\E[M,
	kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, rc=\E8,
	rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
	    \E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
	vpa=\E[%i%p1%dd, use=vt220+vtedit, use=xterm+alt1049,
	use=ecma+index, use=mlterm+pcfkeys, use=vt220+cvis,
	use=xterm+r6f2,

# The insert/delete/home/end keys do not respond to modifiers because mlterm
# looks in its termcap to decide which string to send.  If it used terminfo
# (when available), it could use the extended names introduced for xterm.
mlterm+pcfkeys|fragment for PC-style fkeys,
	kLFT=\EO1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO1;2C,
	kDN=\EO1;2B, kDN3=\EO1;3B, kDN4=\EO1;4B, kDN5=\EO1;5B,
	kDN6=\EO1;6B, kDN7=\EO1;7B, kIC5=\E[2;5~, kIC6=\E[2;6~,
	kLFT3=\EO1;3D, kLFT4=\EO1;4D, kLFT5=\EO1;5D,
	kLFT6=\EO1;6D, kLFT7=\EO1;7D, kNXT5=\E[6;5~,
	kNXT6=\E[6;6~, kPRV5=\E[5;5~, kPRV6=\E[5;6~,
	kRIT3=\EO1;3C, kRIT4=\EO1;4C, kRIT5=\EO1;5C,
	kRIT6=\EO1;6C, kRIT7=\EO1;7C, kUP=\EO1;2A, kUP3=\EO1;3A,
	kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A,

mlterm-256color|mlterm 3.0 with xterm 256-colors,
	use=xterm+256color, use=mlterm,

#### RXVT
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
# Notes:
# rxvt 2.21b uses
#	smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O,
# but some applications don't work with that.
# It also has an AIX extension
#	box2=lqkxjmwuvtn,
# and
#	ech=\E[%p1%dX,
# but the latter does not work correctly.
#
# The distributed terminfo says it implements hpa and vpa, but they are not
# implemented correctly, using relative rather than absolute positioning.
#
# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
# Since rxvt is not really compatible with xterm, it should be configured as
# "rxvt" or "rxvt-color".
#
# removed dch/dch1 because they are inconsistent with bce/ech -TD
# remove km as per tack test -TD
rxvt-basic|rxvt terminal base (X Window System),
	OTbs, am, bce, eo, mir, msgr, xenl, xon, XT,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\n, is1=\E[?47l\E=\E[?1l,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
	kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
	rmul=\E[24m,
	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
	    25h,
	s0ds=\E(B, s1ds=\E(0, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
	    %p9%t\016%e\017%;,
	sgr0=\E[0m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
	smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq,
	use=rxvt+pcfkeys, use=vt220+cvis, use=vt220+keypad,
# Key Codes from rxvt reference:
#
# Note: Shift + F1-F10 generates F11-F20
#
# For the keypad, use Shift to temporarily override Application-Keypad
# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock
# is off, escape sequences toggle Application-Keypad setting.
# Also note that values of Home, End, Delete may have been compiled
# differently on your system.
#
#                   Normal       Shift        Control      Ctrl+Shift
#  Tab              ^I           ESC [ Z      ^I           ESC [ Z
#  BackSpace        ^H           ^?           ^?           ^?
#  Find             ESC [ 1 ~    ESC [ 1 $    ESC [ 1 ^    ESC [ 1 @
#  Insert           ESC [ 2 ~    paste        ESC [ 2 ^    ESC [ 2 @
#  Execute          ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
#  Select           ESC [ 4 ~    ESC [ 4 $    ESC [ 4 ^    ESC [ 4 @
#  Prior            ESC [ 5 ~    scroll-up    ESC [ 5 ^    ESC [ 5 @
#  Next             ESC [ 6 ~    scroll-down  ESC [ 6 ^    ESC [ 6 @
#  Home             ESC [ 7 ~    ESC [ 7 $    ESC [ 7 ^    ESC [ 7 @
#  End              ESC [ 8 ~    ESC [ 8 $    ESC [ 8 ^    ESC [ 8 @
#  Delete           ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
#  F1               ESC [ 11 ~   ESC [ 23 ~   ESC [ 11 ^   ESC [ 23 ^
#  F2               ESC [ 12 ~   ESC [ 24 ~   ESC [ 12 ^   ESC [ 24 ^
#  F3               ESC [ 13 ~   ESC [ 25 ~   ESC [ 13 ^   ESC [ 25 ^
#  F4               ESC [ 14 ~   ESC [ 26 ~   ESC [ 14 ^   ESC [ 26 ^
#  F5               ESC [ 15 ~   ESC [ 28 ~   ESC [ 15 ^   ESC [ 28 ^
#  F6               ESC [ 17 ~   ESC [ 29 ~   ESC [ 17 ^   ESC [ 29 ^
#  F7               ESC [ 18 ~   ESC [ 31 ~   ESC [ 18 ^   ESC [ 31 ^
#  F8               ESC [ 19 ~   ESC [ 32 ~   ESC [ 19 ^   ESC [ 32 ^
#  F9               ESC [ 20 ~   ESC [ 33 ~   ESC [ 20 ^   ESC [ 33 ^
#  F10              ESC [ 21 ~   ESC [ 34 ~   ESC [ 21 ^   ESC [ 34 ^
#  F11              ESC [ 23 ~   ESC [ 23 $   ESC [ 23 ^   ESC [ 23 @
#  F12              ESC [ 24 ~   ESC [ 24 $   ESC [ 24 ^   ESC [ 24 @
#  F13              ESC [ 25 ~   ESC [ 25 $   ESC [ 25 ^   ESC [ 25 @
#  F14              ESC [ 26 ~   ESC [ 26 $   ESC [ 26 ^   ESC [ 26 @
#  F15 (Help)       ESC [ 28 ~   ESC [ 28 $   ESC [ 28 ^   ESC [ 28 @
#  F16 (Menu)       ESC [ 29 ~   ESC [ 29 $   ESC [ 29 ^   ESC [ 29 @
#  F17              ESC [ 31 ~   ESC [ 31 $   ESC [ 31 ^   ESC [ 31 @
#  F18              ESC [ 32 ~   ESC [ 32 $   ESC [ 32 ^   ESC [ 32 @
#  F19              ESC [ 33 ~   ESC [ 33 $   ESC [ 33 ^   ESC [ 33 @
#  F20              ESC [ 34 ~   ESC [ 34 $   ESC [ 34 ^   ESC [ 34 @
#
#                                                          Application
#  Up               ESC [ A      ESC [ a      ESC O a      ESC O A
#  Down             ESC [ B      ESC [ b      ESC O b      ESC O B
#  Right            ESC [ C      ESC [ c      ESC O c      ESC O C
#  Left             ESC [ D      ESC [ d      ESC O d      ESC O D
#  KP_Enter         ^M                                     ESC O M
#  KP_F1            ESC O P                                ESC O P
#  KP_F2            ESC O Q                                ESC O Q
#  KP_F3            ESC O R                                ESC O R
#  KP_F4            ESC O S                                ESC O S
#  XK_KP_Multiply   *                                      ESC O j
#  XK_KP_Add        +                                      ESC O k
#  XK_KP_Separator  ,                                      ESC O l
#  XK_KP_Subtract   -                                      ESC O m
#  XK_KP_Decimal    .                                      ESC O n
#  XK_KP_Divide     /                                      ESC O o
#  XK_KP_0          0                                      ESC O p
#  XK_KP_1          1                                      ESC O q
#  XK_KP_2          2                                      ESC O r
#  XK_KP_3          3                                      ESC O s
#  XK_KP_4          4                                      ESC O t
#  XK_KP_5          5                                      ESC O u
#  XK_KP_6          6                                      ESC O v
#  XK_KP_7          7                                      ESC O w
#  XK_KP_8          8                                      ESC O x
#  XK_KP_9          9                                      ESC O y
#
# The source-code for rxvt actually defines mappings for F21-F35, using
# "ESC [ 35 ~" to "ESC [  49 ~".  Keyboards with more than 12 function keys
# are rare, so this entry uses the shift- and control-modifiers as in
# xterm+pcfkeys to define keys past F12.
#
# kIC is normally not used, since rxvt performs a paste for that (shifted
# insert), unless private mode 35 is set.
#
# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD
# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD
rxvt+pcfkeys|fragment for PC-style fkeys,
	kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d,
	kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
	kf21=\E[23$, kf22=\E[24$, kf23=\E[11\^, kf24=\E[12\^,
	kf25=\E[13\^, kf26=\E[14\^, kf27=\E[15\^, kf28=\E[17\^,
	kf29=\E[18\^, kf3=\E[13~, kf30=\E[19\^, kf31=\E[20\^,
	kf32=\E[21\^, kf33=\E[23\^, kf34=\E[24\^, kf35=\E[25\^,
	kf36=\E[26\^, kf37=\E[28\^, kf38=\E[29\^, kf39=\E[31\^,
	kf4=\E[14~, kf40=\E[32\^, kf41=\E[33\^, kf42=\E[34\^,
	kf43=\E[23@, kf44=\E[24@, kf5=\E[15~, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kind=\E[a,
	kri=\E[b, kDC5=\E[3\^, kDC6=\E[3@, kDN=\E[b, kDN5=\EOb,
	kEND5=\E[8\^, kEND6=\E[8@, kHOM5=\E[7\^, kHOM6=\E[7@,
	kIC5=\E[2\^, kIC6=\E[2@, kLFT5=\EOd, kNXT5=\E[6\^,
	kNXT6=\E[6@, kPRV5=\E[5\^, kPRV6=\E[5@, kRIT5=\EOc,
	kUP=\E[a, kUP5=\EOa, use=vt220+vtedit,

# rxvt was originally "xvt", first announced in April 1993:
#	http://www.krsaborio.net/linux-desktops/research/1993/0416.html
#------------------------------------------------------------------------------
# Article: 567 of comp.os.linux.announce
# Path: pavo.csi.cam.ac.uk!warwick!uknet!pipex!uunet!zaphod.mps.ohio-state.edu!
# caen!batcomputer!theory.TC.Cornell.EDU!mdw
# From: nation@rocket.sanders.com (Robert Nation)
# Newsgroups: comp.os.linux.announce
# Subject: xvt upload
# Date: 16 Apr 1993 18:13:07 GMT
# Organization: Cornell Theory Center
# Lines: 13
# Approved: linux-announce@tc.cornell.edu (Matt Welsh)
# Message-ID: <1qmsvj$pvj@fitz.TC.Cornell.EDU>
# NNTP-Posting-Host: theory.tc.cornell.edu
# Keywords: xvt, xterm, Xwindows
# Originator: mdw@theory.TC.Cornell.EDU
#
# Rxvt has been uploaded to /pub/Linux/Incoming/rxvt.tar.z and
# rxvt.README on sunsite.unc.edu.
#
# Xvt is an xterm replacement which uses a little less memory, and is
# suitable for use on machines with small memories. Tek4010 support
# is removed.
#
# Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com)
# to make it a little more compact, and to add and remove certain features.
#
#
# --
# Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu
#------------------------------------------------------------------------------
#
# Though its change-log does not mention this, John Davis has stated that he
# was the author of the changes to use the bce ("new color model") which was
# incorporated into rxvt 2.11 (June 15, 1995).  The change-log does not give
# dates, nor give developer's names.  Initial color support was added for rxvt
# "2.0", which was sometime in 1994.
#
# rxvt had usable color support with 2.16 (April 2, 1996), with some help by my
# work on vttest, as well as bug reports to Mark Olesen.  For instance, the fix
# mentioned here
#	https://web.archive.org/web/20141016124430/http://web.archiveorange.com/archive/v/6ETvLb5wHtbbzCaS4S9J
# was from one of my bug-reports -TD
#
# While the color model both for xterm and rxvt was based on Linux console,
# Olesen (or possibly Davis) diverged in one respect from Linux's bce color
# behavior: inserting/deleting characters does not fill the newly empty cell
# with the default background color.
rxvt|rxvt terminal emulator (X Window System),
	ncv@,
	hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017,
	vpa=\E[%i%p1%dd, use=rxvt-basic, use=ecma+color,
rxvt-color|rxvt terminal emulator (X Window System),
	use=rxvt,
rxvt-256color|rxvt 2.7.9 with xterm 256-colors,
	use=xterm+256color, use=rxvt,
rxvt-88color|rxvt 2.7.9 with xterm 88-colors,
	use=xterm+88color, use=rxvt,
rxvt-xpm|rxvt terminal emulator (X Window System),
	use=rxvt,
rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin,
	acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k
	     \277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w
	     \302x\263y\363z\362{\343|\330}\234~\376,
	use=rxvt,
rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin,
	acsc=+\257\,\256-\^0\333`\004a\261f\370g\361h\260j\331k
	     \277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w
	     \302x\263y\363z\362{\343|\330~\376,
	use=rxvt-cygwin,

# This variant is supposed to work with rxvt 2.7.7 when compiled with
# NO_BRIGHTCOLOR defined.  rxvt needs more work...
rxvt-16color|rxvt with 16 colors like aixterm,
	ncv#32, use=ibm+16color, use=rxvt,

#### MRXVT
# mrxvt 0.5.4
#
# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
# makes its function-keys different from other flavors of rxvt -TD
#
# Testing with tack:
# +	made custom description (below) to work, though it sets TERM=xterm.
#
# Testing with vttest:
# +	While "based on" rxvt, some of the basic functionality is broken.  The
#	window collapses to a single line when running several of the screens
#	in vttest, e.g., the tests for cursor movement, screen features,
#	double-sized characters.
# +	The vt52 test works properly, but this is an exception.  Due to the
#	other bug(s) most of vttest is untestable.
# +	the color test using ECH shows a gap in the bce model, like rxvt.
#
# Testing with xterm "vttest" scripts:
# +	resize.pl does not work because mrxvt does implement CSI 18 t
#	(not in rxvt, but not documented by mrxvt) but not CSI 19 t.
# +	none of the "dynamic colors" (OSC colors) scripts work.
mrxvt|multitabbed rxvt,
	XT,
	kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kend=\E[8~, khome=\E[7~,
	kEND3=\E[8;3~, kEND4=\E[8;4~, kEND5=\E[8;5~,
	kEND6=\E[8;6~, kEND7=\E[8;7~, kHOM3=\E[7;3~,
	kHOM4=\E[7;4~, kHOM5=\E[7;5~, kHOM6=\E[7;6~,
	kHOM7=\E[7;7~, use=xterm+r6f2, use=xterm+pcfkeys,
	use=rxvt,

mrxvt-256color|multitabbed rxvt with 256 colors,
	use=xterm+256color, use=mrxvt,

#### ETERM
# From: Michael Jennings <mej@valinux.com>
#
# Eterm 0.9.3
#
# removed kf0 which conflicts with kf10 -TD
# remove cvvis which conflicts with cnorm -TD
# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT
# but does otherwise follow the rxvt+pcfkeys model -TD
# remove nonworking flash -TD
# remove km as per tack test -TD
Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
	am, bce, bw, eo, mc5i, mir, msgr, xenl, xon, XT,
	btns#5, cols#80, it#8, lines#24, lm#0, ncv@,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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, enacs=\E)0,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E>\E[?1l,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@,
	kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kbs=^H,
	kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M,
	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=,
	rmso=\E[27m, rmul=\E[24m,
	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
	    25h,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
	smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys,
	use=ecma+color, use=vt220+cvis,

Eterm-256color|Eterm with xterm 256-colors,
	use=xterm+256color, use=Eterm,

Eterm-88color|Eterm with 88 colors,
	use=xterm+88color, use=Eterm,

#### ATERM
# Based on rxvt 2.4.8, it has a few differences in key bindings
aterm|AfterStep terminal,
	XT,
	kbs=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt,

#### XITERM
# xiterm  0.5-5.2
# This is not based on xterm's source...
# vttest shows several problems with keyboard, cursor-movements.
# see also https://invisible-island.net/xterm/xterm.faq.html#bug_xiterm
xiterm|internationalized terminal emulator for X,
	km@,
	kbs=^?, kdch1=\E[3~, use=klone+color, use=xterm-r6,


#### HPTERM
# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in
# from BSD termcap.  (hpterm:  added empty <acsc>, we have no idea what ACS
# chars look like --esr)
hpterm|X-hpterm|HP X11 terminal emulator,
	am, da, db, mir, xhp, xon,
	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0,
	acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r,
	cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC,
	cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK,
	hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\n, kbs=^H,
	kclr=\EJ, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK,
	khts=\E1, kich1=\EQ, kil1=\EL, knp=\EU, kpp=\EV, krmir=\ER,
	ktbc=\E3, meml=\El, memu=\Em,
	pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET,
	rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@,
	rmul=\E&d@,
	sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+
	    %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
	sgr0=\E&d@\017, smacs=^N, smir=\EQ, smkx=\E&s1A,
	smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows,
# HPUX 11 provides a color version.
hpterm-color|HP X11 terminal emulator with color,
	ccc,
	colors#64, pairs#8,
	home=\E&a0y0C,
	initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI,
	op=\E&v0S, scp=\E&v%p1%dS, use=hpterm,

# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1986/97089-90081_198611_Facilities_for_Series_200_300_and_500.pdf
# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1987/97089-90081_198709_Facilities_for_Series_200_300_and_500_HP-UX_Concepts_and_Tutorials.pdf
#
# This article does not cover the HP 46020A keyboard that is used by the Model
# 217 and 237 computers.  For information on this keyboard read the article,
# "The Series 300 ITE as System Console" found in the manual, HP-UX Concepts
# and Tutorials, Vol.  7. 
#
# Possibly:
# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1986/97089-90042_198608_HP-UX_Concepts_and_Tutorials.pdf
#
# HP300_Series_ITE.pdf
#
# This version, which came from Martin Trusler, was tested with lynx using
# ncurses 5.4
hpterm-color2|X-hpterm-color2|HP X11 terminal emulator with color,
	OTbs, am, ccc, da, db, km, mir, xhp,
	colors#8, cols#80, it#8, lh#2, lines#24, lm#0, lw#8, nlab#8,
	pairs#8, xmc#0,
	acsc=+>\,<-\^.v0\374``a\374f\372g\376h\374j+k+l+m+n+o-q-s-t+
	     u+v+w+x|y<z>{*|!}\273~\362,
	bel=^G, bold=\E&dD, cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
	dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK,
	home=\E&a0y0C, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL,
	ind=\ES,
	initp=\E&v0m%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.
	      %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1
	      %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=
	      %t1%e.%p7%d%;z%p1%dI,
	is1=\EH\EJ, kbs=^H, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ,
	kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, knp=\EU, kpp=\EV,
	krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
	oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5
	   I\E&v1b1c6I\E&v1x1y7I,
	op=\E&v0S, pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET,
	rmacs=^O, rmam=\E&s1C, rmcup=\E&s0A, rmir=\ER, rmkx=\E&s0A,
	rmln=\E&j@, rmm=\E&k0I, rmso=\E&d@, rmul=\E&d@, rs1=\EE,
	scp=\E&v%p1%dS,
	sgr=\E&d%p1%p3%|%{2}%*%p2%p6%|%{4}%*%+%p5%{8}%*%+%{64}%+%c%?
	    %p9%t%'\016'%c%e%'\017'%c%;,
	sgr0=\E&d@\017, smacs=^N, smam=\E&s0C, smcup=\E&s1A,
	smir=\EQ, smkx=\E&s1A, smln=\E&jB, smm=\E&k1I, smso=\E&dB,
	smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, use=hp+pfk-cr,
	use=hp+arrows,
#### EMU
# This is for the extensible terminal emulator on the X11R6 contrib tape.
# It corresponds to emu's internal emulation:
#	emu -term emu
# emu's default sets TERM to "xterm", but that doesn't work well -TD
# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD
# fixes: add civis, cnorm, sgr -TD
emu|emu native mode,
	am, bce, mir, msgr, xon,
	colors#15, cols#80, it#8, lines#24, pairs#64, vt#200,
	acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s
	     \224t\225u\226v\227w\230x\231~\244,
	bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;,
	cnorm=\Ea, cr=\r, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;,
	cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\EC,
	cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA,
	dch=\EI%p1%d;, dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;,
	ech=\Ej%p1%d;, ed=\EN, el=\EK, el1=\EL, home=\EE0;0;, ht=^I,
	hts=\Eh, il=\EQ%p1%d;, il1=\EQ1;, ind=\EG,
	is2=\ES\Er0;\Es0;, kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED,
	kcuu1=\EA, kdch1=^?, kent=\r, kf0=\EF00, kf1=\EF01,
	kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14,
	kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19,
	kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05,
	kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind,
	kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel,
	op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES,
	rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;,
	setaf=\Er%i%p1%d;,
	sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6
	    %t\EU%;,
	sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej,

# vt220 Terminfo entry for the Emu emulation, corresponds to
#	emu -term vt220
# with NumLock set (to make the keypad transmit kf0-kf9).
# fixes: add am, xenl, corrected sgr0 -TD
emu-220|Emu-220 (vt200-7bit mode),
	am, xenl, xon,
	cols#80, it#8, lines#24, vt#200,
	acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[0;5m, bold=\E[0;1m, clear=\E[2J\E[H, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
	cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
	dch=\E[%p1%dP, dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M,
	ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I,
	hts=\EH, if=/usr/share/tabset/vt300, il=\E[%p1%dL,
	il1=\E[1L, ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h,
	kbs=^H, kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kent=\EOM, kf0=\EOp, kf1=\EOq, kf10=\EOl,
	kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ, kf15=\EOR,
	kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~, kf28=\E[19~,
	kf29=\E[20~, kf3=\EOs, kf30=\E[21~, kf34=\E[26~,
	kf37=\E[31~, kf38=\E[32~, kf39=\E[33~, kf4=\EOt,
	kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx,
	kf9=\EOy, khlp=\E[28~, rc=\E8, rev=\E[0;7m, ri=\EM, rmacs=^O,
	rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
	    2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E[?1l\E=, smkx=\E=,
	smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, use=vt220+vtedit,
	use=vt220+cvis,

#### MVTERM
# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI,
# print interface, ANSI X3.64 colour escape sequences, etc.  Newsgroup postings
# indicate that it emulates more than one terminal, but incompletely.
#
# This is adapted from a FreeBSD bug-report by Daniel Rudy <dcrudy@pacbell.net>
# It is based on vt102's entry, with some subtle differences, but also
#	has status line
#	supports ANSI colors (except for 'op' string)
#	apparently implements alternate screen like xterm
#	does not use padding, of course.
mvterm|vv100|SwitchTerm aka mvTERM,
	am, eslok, hs, km, mir, msgr, xenl, xon,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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,
	dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0,
	fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy,
	kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw,
	op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m,
	rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys,

#### MTERM
#
# This application is available by email from <mouse@Rodents.Montreal.QC.CA>.
#
# "mterm -type ansi" sets $TERM to "ansi"
mterm-ansi|ANSI emulation,
	am, bw, mir, msgr,
	it#8,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	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,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=,
	il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
	is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, ri=\E[T, rmacs=^O,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, use=ecma+index,
# mterm normally sets $TERM to "mterm"
mterm|mouse-sun|Der Mouse term,
	am, bw, mir,
	it#8,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^N, cuf1=^S,
	cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C,
	home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=\r^U, ri=^W,
	rmir=^O, rmso=^T, smir=^Q, smso=^V,
# "mterm -type decansi" sets $TERM to "decansi"
#
# note: kdch1, kfnd, kslt are in the source code, but do not work -TD
decansi|ANSI emulation with DEC compatibility hacks,
	am, mir, msgr, xenl,
	colors#8, it#8, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL,
	il1=\E[L, ind=\E[S, invis=\E[8m, is2=\E)0\E[r\017, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m,
	ri=\E[T, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[27m, rmul=\E[24m, sc=\E7, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR,
	u7=\E[6n, vpa=\E[%i%p1%dd, use=vt220+vtedit,
	use=ecma+index, use=vt220+cvis,

#### VWM
# http://vwm.sourceforge.net/
#
# VWM 2.0.2 (2009-05-01)
# vwmterm is a terminal emulator written for the VWM console window manager.
# This version is obsolete, replaced by libvterm in 2.1.0 (2009-10-23).
vwmterm|(vwm term),
	am, bce, ccc, mir, msgr, npc, xenl, xon,
	colors#8, pairs#64,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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, cvvis=\E[?25h, dim=\E[2m,
	ed=\E[J, el=\E[K, home=\E[H, il1=\E[L, ind=\n, invis=\E[8m,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
	kf11=\E[22~, kf12=\E[23~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[1~, knp=\E[6~, kpp=\E[5~, rev=\E[7m, rmacs=\E[10m,
	rmam=\E[?7l, rs1=\E[H\E[J\E[m\Ec, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	sgr=\E[0;10%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, smso=\E[3m,
	smul=\E[4m, use=vt220+cvis, use=xterm+alt1049,

#### MGR
#
# MGR is a Bell Labs window system lighter-weight than X.
# These entries describe MGR's xterm-equivalent.
# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997
#

mgr|Bellcore MGR (non X) window system terminal emulation,
	am, km, xon,
	bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=\r,
	csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er,
	cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h,
	dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>,
	dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u,
	ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>,
	il1=\Ea$<3>, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, nel=\r\n, rev=\E1n, rmam=\E5S,
	rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n,
	smul=\E4n,
mgr-sun|Mgr window with Sun keyboard,
	ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z,
	kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z,
	kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z,
	kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z,
	kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z,
	kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z,
	kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr,
mgr-linux|Mgr window with Linux keyboard,
	ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~,
	kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr,

#### SIMPLETERM
# st.suckless.org

st|stterm| simpleterm,
	use=st-0.8,

# Reviewed 0.8.2:
# In tack,
#	there is some problem turning off line-drawing
#	shift+control function-keys do nothing; shift+control cursor keys work
#	the padding tests make the terminal non-functional.
# In vttest,
#	SD/SU work
#	SL/SR/REP do not work
#	ECMA-48 cursor movement works, e.g., CHA, CBT, etc.
#
# This entry discards the ccc/initc capabilities from st-0.7 because they
# belong in st-256color.
st-0.8|simpleterm 0.7,
	dim=\E[2m, kcbt@, kent@, oc=\E]104\007,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
	Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
	kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
	kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
	kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
	use=ecma+strikeout, use=st-0.6,

# Reviewed 0.7:
#	dim is intermittent, sometimes works, sometimes does not
#	italics may show up with yellow color
#	has control cursor-keys, alt cursor-keys, still no combinations
#	has control pageup/down
# tmux extensions, see TERMINFO EXTENSIONS in tmux(1)
#	Se and Ss are implemented in the source-code, but the terminfo
#	provided with the source is incorrect, since Se/Ss are mis-coded
#	as booleans rather than strings.
st-0.7|simpleterm 0.7,
	ccc,
	dim=\E[2m,
	initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
	      %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	kcbt@, kent@, oc=\E]104\007,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
	Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
	kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
	kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
	kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
	use=ecma+strikeout, use=st-0.6,

# st-0.4.1
#
# This version uses a table which supports a single modifier (a subset of
# xterm's keys, using the same scheme).  Because it supports only a single
# modifier in this table, function keys f36-f48 are normally unavailable
# because they are assigned to modifier-4.
#
# The program assigns TERM to match the program name (the upstream source says
# "st", but Debian renames it to "stterm").
#
# The source includes two entries which are not useful here:
#	st-meta| simpleterm with meta key,
#	st-meta-256color| simpleterm with meta key and 256 colors,
# because st's notion of "meta" does not correspond to the terminfo definition.
# Rather, it acts like xterm - when the meta feature is disabled.
#
# Removed invis -TD
# Added eo, removed ul -TD
#
# Reviewed st 0.5:
# implements control-modifier, but not control-shift for special keys
# implements alt-modifier, but not alt-shift for special keys
#
# Reviewed st 0.6:
#	http://git.suckless.org/st/log/st.info
# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
# still has no function keys past kf36 (no combinations of modifiers)
# no application keypad mode, e.g, kent.
st-0.6|simpleterm 0.6,
	am, bce, hs, mir, msgr, npc, xenl, XT,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyy
	     zz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, enacs=\E)0,
	flash=\E[?5h$<100/>\E[?5l, fsl=^G, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
	is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~, kEND=\E[1;2F,
	kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~,
	kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~, ka3=\E[5~, kb2=\EOu,
	kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z, kclr=\E[3;5~,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F, kent=\EOM,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
	kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
	kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
	kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
	kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
	kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
	kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
	kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
	kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
	kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kil1=\E[2;5~,
	kind=\E[1;2B, kmous=\E[M, kri=\E[1;2A, krmir=\E[2;2~,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, op=\E[39;49m, rc=\E8,
	rev=\E[7m, ri=\EM, rmacs=\E(B, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[27m, rmul=\E[24m, rs1=\Ec, rs2=\E[4l\E>\E[?1034l,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR,
	u7=\E[6n, u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd, Se=\E[2 q,
	Ss=\E[%p1%d q, use=vt220+pcedit, use=ecma+index,
	use=xterm+alt1049, use=vt220+cvis, use=xterm+sl,
	use=ecma+italics,
#
# st-0.1.1
#
# Note:  the original terminfo description uses leading blank to persuade
# ncurses to use "st" as its name.  Proper fix for that is to use "st" as an
# alias.
#
# Reading the code shows it should work for aixterm 16-colors
# - added st-16color
#
# Using tack:
# - set eo (erase-overstrike)
# - set xenl
# - tbc doesn't work
# - hts works
# - cbt doesn't work
# - shifted cursor-keys send sequences like rxvt
# - sgr referred to unimplemented "invis" mode.
# Fixes: add eo and xenl per tack, remove nonworking cbt, hts and tbc, invis
simpleterm|old-st|simpleterm 0.1.1,
	am, eo, mir, msgr, ul, xenl,
	colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^?,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[1~, knp=\E[6~, kpp=\E[5~, op=\E[37;40m, rc=\E8,
	rev=\E[7m, rmacs=\E(B, rmso=\E[m, rmul=\E[m, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;m,
	sgr0=\E[0m, smacs=\E(0, smso=\E[7m, smul=\E[4m,
	use=vt220+cvis, use=ecma+index,
st-16color|stterm-16color|simpleterm with 16-colors,
	use=ibm+16color, use=st,
# Tested with st 0.8.2
# The issue with the titlebar is fixed, though st is very slow.
# In st 0.7, 256 colors "works", but when running xterm's test-scripts, some
# garbage is shown in the titlebar.
#
# terminal wants to use TERM=stterm-256color, but that is longer than 14
# characters, making the choice nonportable.
st-256color|stterm-256color|simpleterm with 256 colors,
	use=xterm+256color, use=st,

#### TERMINATOR
# https://github.com/software-jessies-org/jessies/wiki/Terminator
#
# Tested using the Debian package org.jessies.terminator 6.104.3256 on 64-bit
# Debian/current -TD (2011/8/20)
#
# There were some packaging problems:
# a) using Java, the program starts off using 50Mb, and climbs from there,
#    up to 114Mb after testing (no scrollback).
# b) it insists on reinstalling its terminal description in $HOME/.terminfo
#    (two copies, just in case the host happens to be Mac OS X).
#    I deleted this after testing with tack.
#
# Issues/features found with tack:
# a) tbc does not work (implying that hts also is broken).
#    Comparing with the tabs utility shows a problem with the last tabstop on
#    a line.
# b) has xterm-style shifted function-key strings
#    meta also is used, but control is ignored.
# c) has xterm-style modifiers for cursor keys (shift, control, shift+control,
#    meta)
# d) some combinations of shift/control send xterm-style sequences for
#    insert/delete/home/end.
# e) numeric keypad sends only numbers (compare with vttest).
# f) meta mode (km) is not implemented.
#
# Issues found with ncurses test-program:
# a) bce is inconsistently implemented
# b) widths of Unicode values above 256 do not always agree with wcwidth.
#
# Checked with vttest, found low degree of compatibility there.
#
# Checked with xterm's scripts, found that the 256-color palette is fixed.
#
# Fixes:
# a) add sgr string
# b) corrected sgr0 to reset alternate character set
# c) modified smacs/rmacs to use SCS rather than SI/SO
# d) removed bce
# e) removed km
#
# Revisiting in May 2019, the Debian package was no longer available, and a
# developer-provided ".deb" does not work.  However, a usable Windows ".msi"
# (which relies upon Cygwin) can be tested.  The developers provide a terminfo,
# but some of the features it lists do not work reliably (bce, italics, invis).
#
# tack:
#	tbc fails
#	invis attribute fails
#	key-definitions could be expanded, with some work:
#	+ supports xterm-style cursor key-modifiers for shift
#	+ supports xterm-style function key-modifiers for shift,control,alt
#	+ supports xterm-style editing key-modifiers for shift,control,alt
#	(kbs=^?)
# ncurses test-program:
#	"C" menu shows that bce implementation is incomplete
#	italics did not work
#	dim worked once in tack, but not in ncurses test-program
#	"F" thick-line characters do not display
# vttest:
#	terminal does not respond to 80/132-column switching
#	wrapping at the right margin is erratic
#	there are several problems in the cursor-movements and screen-features
#	no vt52, no double-sized characters
#	Device attributes response says it is a vanilla VT100
#	does not respond to xterm mouse controls
#	alternate screen tests do not fill the screen, return wrong position
#	window modify/report operations do not work
#	miscellaneous ISO-6429 tests, e.g., REP, do not work
#	CBT, CHT, HPR, CNL,CPL, VPR do not work
#
# removed the cancel for "hs", removed cbt, invis, corrected sgr -TD
# use xterm+256setaf, etc -TD
terminator|Terminator no line wrap,
	bce, eo, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, lm#0,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E=\E[?1l,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^?,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
	rs2=\E[!p\E[?3;4l\E[4l\E>, s0ds=\E(B, s1ds=\E(0, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p1%p3%|%t;7
	    %;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E]2;, vpa=\E[%i%p1%dd,
	use=vt220+pcedit, use=ecma+italics, use=ecma+index,
	use=xterm+256setaf, use=xterm+sl-twm,
	use=xterm+alt1049, use=vt220+cvis,

#### TERMINOLOGY
# https://www.enlightenment.org/about-terminology
# https://github.com/borisfaure/terminology
#
# 2014/10/14:
# Tested terminology-0.3.0, 0.6.1, using tack and vttest.  This is not a vt100
# emulator, nor is it compatible with xterm, but it uses a few features from
# both -TD
#
# General comments:
#	cursor does not fill on focus
#	there are pervasive problems with clearing/erasing parts of the screen
#	resizing the window causes it to stop listening to the keyboard
# tack -
#	doesn't understand vt100 CPR needed for resize
#	no CBT
#	no cvvis
#	has invis
#	no blink
#	uses bce model for colors, but (see below) fails the vttest screens
#	has partial support for 256color feature.
#	tack function-keys (a subset of xterm+pcf0), and
#	tack cursor-keys (a subset of xterm+pce2):
#			ctrl+shift (ignored)
#		2	shift
#			shift-alt modifier -> shift (2)
#		3	alt
#		4
#		5	ctrl
#	tack modifiers did not work for fkeys in 0.3.0; subset works in 0.6.1
#	ctrl + khome/kend works - none of the other modifiers do
# vttest -
#	spits lots of messages from termptyesc.c especially in vttest.
#	no 132-column mode
#	fails menu 1, 2 (definitely not vt100-compatible)
#	primary (claims vt420 with several options, apparently none work) and
#	secondary report says (perhaps... vt420): \E[>41;285;0c
#	CHA, HPR, VPA, CNL, CPL work
#	BCE with ED/EL - fail
#	BCE with ECH/indexing - fail
#	SD/SU work
#	unlike teken, background light/dark works
#	can set title
#	X10 and Normal mouse work
#	Any-event mouse works
#	Mouse button-event works
#
# This description uses xterm+pcf0, which is misleading because the program
# does not handle combinations of modifiers - but listing them all would
# involve more effort than its developers spent -TD
terminology-0.6.1|EFL-based terminal emulator,
	mc5i@,
	blink@, ed@, el@, el1@, invis=\E[8m, kLFT=\E[1;2D,
	kRIT=\E[1;2C, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	kind=\E[1;2B, kri=\E[1;2A,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p7%t;8
	    %;m%?%p9%t\016%e\017%;$<2>,
	vpa=\E[%i%p1%dd, kDC3=\E[3;3~, kDC4=\E[3;4~,
	kDC5=\E[3;5~, kDC6=\E[3;6~, kDC7=\E[3;7~, kDN=\E[1;2B,
	kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, kDN6=\E[1;6B,
	kDN7=\E[1;7B, kEND5=\E[1;5F, kHOM5=\E[1;5H,
	kLFT3=\E[1;3D, kLFT4=\E[1;4D, kLFT5=\E[1;5D,
	kLFT6=\E[1;6D, kLFT7=\E[1;7D, kRIT3=\E[1;3C,
	kRIT4=\E[1;4C, kRIT5=\E[1;5C, kRIT6=\E[1;6C,
	kRIT7=\E[1;7C, kUP=\E[1;2A, use=xterm+pcf0, use=vt100,
	use=xterm+256setaf,

# 2017-11-11
# Tested terminology 1.0.0
#
# tack -
#	Shifted cursor-keys send nothing, but xterm modifiers for control+shift
#	and control+alt were added like xterm+pcc2
#	Editing keys have some features from xterm+pce2
#	Changed from xterm+pcf0 to xterm+pcf2
#
# vttest -
#	REP, SL, SR fail
#
# Aside from the partial fixes for function/cursor/editing keys, no improvement
# in other tests versus 0.6.1
terminology-1.0.0|EFL-based terminal emulator,
	dim=\E[2m, flash=\E[?5h$<100/>\E[?5l, kend=\E[OF,
	khome=\E[OH, rmacs=\E(B,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
	    %?%p1%p3%|%t;7%;%?%p7%t;8%;m$<2>,
	sgr0=\E(B\E[m, smacs=\E(0, use=ecma+italics,
	use=vt220+cvis, use=xterm+x11mouse, use=xterm+pce2,
	use=xterm+pcf2, use=xterm+pcc2, use=terminology-0.6.1,

# 2020/12/26:
# Tested terminology 1.8.1 using tack and vttest.
# tack -
#	flash does not work
#	italics and crossed-out text work
#	no meta mode
# vttest -
#	DA1 says this is a VT420 with with 132 columns, NRCS, horizontal scrolling
#	DA2 says this is a VT510, version 33.7
#	NRCS does not work, program hangs in the locking shift test.
#	some of the VT420 rectangle operations work
#	left/right margins do not work
#	most of DECSCUSR works
#	most problems with bce are fixed.
terminology-1.8.1|EFL-based terminal emulator,
	km@,
	cvvis@, flash@, initc@, kcbt=\E[Z, rmm@, smm@, Ms@,
	use=ecma+index, use=xterm+256setaf, use=ansi+rep,
	use=ecma+strikeout, use=xterm+sm+1006,
	use=xterm+pcfkeys, use=xterm+tmux, use=vt220+cvis,
	use=ecma+italics, use=xterm-basic,

terminology|EFL-based terminal emulator,
	use=terminology-1.8.1,

######## OPENGL CLIENTS

#### Alacritty
# https://github.com/jwilm/alacritty
# Version 0.6.0 (2020/11/25)
# Version 0.4.0 (2019/11/25)
# Version 0.3.3 (2019/08/03)
# Version 0.2.1 (2018/10/03)
# Project started in 2016/02, uses Rust and OpenGL, and in contrast to (most X
# terminal programs) is not designed to run with a remote server.
#
# Packaged in Arch Linux -
# vttest:
#	initial screensize 24x80
#	no DECCOLM (does not switch between 80/132 columns)
#	otherwise, passes wrapping test
#	no DECSCNM
#	identifies as a vt102
#	numeric keypad does not send expected codes (seen in 0.4.0)
#	passes bce test
#	vt220:
#		ECH works in 0.3.3 (0.2.1 left text on right margin)
#		no SRM, DECSCA
#	vt320:
#		fails DECXCPR
#		does not implement any of the DECRQM/DECRPM controls
#		does not implement any of the DECRQSS controls
#	vt420:
#		no DECLRMM
#		no DECBI, DECFI
#	other:
#		fails CHT, otherwise ECMA-48 cursor movement ok
#		fails ERM/SPA, SL, SR, passes REP, SD, SU
#	xterm:
#		no X10 mouse
#		has normal and highlight mouse
#		has any-event and button-event mouse
#		+ does support SGR-mouse
#		+ does not correctly support focus in/out events (seen in 0.4.0)
#		cursor-position wrong after alternate-screen (fixed in 0.4.0)
#		none of the dtterm controls work
# tack:
#	bell and flash do not work
#	blink does not work
#	italics and crossed-out work (latter did not work in 0.2.1)
#	function-keys work up (tested combinations which window manager allows)
#	treats meta as escape-prefix
#
# The program sources include "alacritty" and "alacritty-direct", which are
# copied from "xterm-256color" and "xterm-direct" (but using semicolon for
# subparameter delimiter).  Refactored here to use ncurses building blocks -TD
alacritty|alacritty terminal emulator,
	rs1=\Ec\E]104\007, use=xterm+256color,
	use=alacritty+common,

alacritty-direct|alacritty with direct color indexing,
	use=xterm+indirect, use=alacritty+common,

# cancel km, since it is not actually meta mode -TD
# added ecma+strikeout in 0.3.3 -TD
# added xterm+sl-twm in 0.3.3 -TD
alacritty+common|base fragment for alacritty,
	km@, npc,
	kb2=\EOE, kbs=^?, kcbt=\E[Z, kent=\EOM, Se=\E[0 q,
	Smulx=\E[4:%p1%dm, use=ecma+index, use=xterm+sm+1006,
	use=xterm-basic, use=xterm+app, use=ansi+rep,
	use=xterm+tmux, use=ecma+strikeout, use=xterm+sl-twm,
	use=ecma+italics, use=xterm+pce2, use=xterm+pcc2,
	use=xterm+pcf2,

#### Kitty
# https://github.com/kovidgoyal/kitty
# Project started in 2016/10 (see alacritty), but is a Python script rather
# than Rust, using OpenGL.  The same caveats regarding remote connections
# apply.  This is not an X terminal, though (like alacritty), it copies
# features from xterm.
#
# Regarding the name "kitty", that is a pun, reflected in the description.
# But see
#	http://www.9bis.net/kitty/
#	https://github.com/kovidgoyal/kitty/issues/9
#	https://github.com/kovidgoyal/kitty/issues/1025
# and
#	http://lists.gnu.org/archive/html/bug-ncurses/2018-09/msg00005.html
#	https://github.com/kovidgoyal/kitty/issues/879
#
# Version 0.19.1
# changes since 0.13.3:
# vttest
#	ISO-6429
#		REP works, though using unspecified behavior
#	xterm
#		xterm's SGR-mouse mode is recognized.
#		does recognize original alternate-screen
#		bug: mouse focus in/out does not work.
#		bug: X10 mouse mode responds like any-event
#		bug: highlight-tracking does not work; terminal hangs.
#
# tack
#	rs1 adds an empty string for resetting title- and other OSC-strings.
#	italics work
#
# Version 0.13.3
# Notes:
#	initial screensize 71x22
#	does not respond to "resize -s"
#	resizing with window manager gives no clues
# vttest
#	does not switch between 80/132 columns
#	fails wrapping test, copying vte/rxvt
#	no reverse-background, no blink
#	claims to be vt200:
#		primary \E[?62;c
#		secondary \E[>1;4000;12c
#	however -
#		no GR in the locking-shifts screen
#		no NRCS or ISO-2022, anyway
#	no VT52
#	VT220:
#		has DECTCEM, ECH, but no SRM and DECSCA
#		has operating condition report, none of the others
#	VT320:
#		has SU/SD
#		DECRQSS ok for DECSTBM, SGR, none of the others
#		no status-line
#	VT420:
#		DECXCPR device status works, none of the others
#		no left/right margins
#		has DECCARA, but not DECERA, DECFRA, DECRARA, DECSERA
#		inside of DECCARA is uncolored
#		line-drawing with DECCARA does not work
#		aside from left/right margins, editing sequences look ok
#		no DECFI, DECBI
#	color:
#		fails ECH test for bce
#	ISO-6429
#		fails REP, SL, SL, but other cursor-movement ok
#	xterm:
#		does not recognize original alternate-screen
#		cursor-position wrong after alternate-screen
#		has normal mouse, any-event, any-button, but
#			no X10 mouse
#			no mouse-highlight tracking
#			no DEC locator
#		dtterm - only supports report-size chars/pixels
#		recognizes tcap-query
# tack:
#	flash doesn't work
#	italics do not work
#	bce should be set (but see vttest)
#*	developer's terminfo stopped at kf25, but the program continues,
#	copying xterm for the rest of the control+fkey sequence
#	(but only one modifier is supported, like iTerm2).
#*	it omitted shifted pageup/down
#*	control+editing keys work
#	In contrast to function-keys, some additional modifier combinations
#	act like xterm for the editing/cursor-keys, e.g., alt+shift.  While
#	the implementation is incomplete, the building-blocks are consistent
#	with what has been implemented -TD
#	DECKPAM does not work -TD
#*	ka1, ka3, kc1, kc3 were bogus (removed)
#*	meta sends escape (removed kmm) -TD
#*	cvvis does not make cursor "more visible" -TD
kitty|KovId's TTY,
	use=xterm+256color, use=kitty+common,
kitty-direct|KovId's TTY using direct colors,
	oc=\E]104\007, use=xterm+direct2, use=kitty+common,
kitty+common|KovId's TTY common properties,
	am, mc5i, mir, msgr, npc, xenl,
	cols#80, it#8, lines#24,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\n, kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
	kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
	kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
	kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
	kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
	kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
	kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
	kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf4=\EOS,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\EOH, kich1=\E[2~, kind=\E[1;2B, knp=\E[6~,
	kpp=\E[5~, kri=\E[1;2A, op=\E[39;49m, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l,
	rmso=\E[27m, rmul=\E[24m, rs1=\E]\E\\\Ec, sc=\E7,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
	    %?%p1%p3%|%t;7%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd, use=ansi+enq, use=ansi+rep,
	use=xterm+sm+1006, use=ecma+index, use=xterm+sl-twm,
	use=ecma+strikeout, use=xterm+pce2, use=xterm+pcc2,
	use=ecma+italics, use=xterm+alt1049, use=att610+cvis,
	use=xterm+tmux,

######## WAYLAND CLIENTS

#### Foot
# https://codeberg.org/dnkl/foot/
# Version 1.8.2
#
# This identifies as a VT220 with 4=sixel and 22=color, however:
# tack:
#	bell does not work
#	status-line does not work because foot does not set the window title
#	sends escape when meta key is used, whether or not smm/rmm enabled
# vttest:
#	wrap-test fails
#	no application-mode for numeric keypad (unless private mode 1035 is set)
#	no NRCS
#	no VT52
#	no SRM
#	protected areas do not work
#	SU/SD work, SL/SR do not
#	DECRPM responds, but not the corresponding ANSI reports.
#	otherwise few reports, except cursor-position and mouse and some dtterm
#	VT520 cursor-movement works, except for left/right margins
#	supports xterm/DECSCUSR, though default case in vttest does not blink
#		Send: <27> [ 0 <32> q 
#		Text: The cursor should be a blinking rectangle
#	partial support for xterm mouse any-event mode and button-event mode:
#	+ does not report focus-in/focus-out
#	+ does not report buttons 6/7
#	alternate-screen works
foot|foot terminal emulator,
	oc=\E]104\E\\, use=xterm+256color2, use=foot+base,

foot-direct|foot with direct color indexing,
	use=xterm+direct, use=foot+base,

foot+base|foot base fragment,
	am, bce, bw, hs, mir, msgr, npc, xenl, AX, XT,
	cols#80, it#8, lines#24,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	cub1=^H, cud1=\n, dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	el1=\E[1K, flash=\E]555\E\\, ind=\n, invis=\E[8m,
	is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^?, kcbt=\E[Z,
	oc=\E]104\E\\, op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
	    %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m, E3=\E[3J, use=att610+cvis,
	use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+local,
	use=ansi+idc, use=ansi+idl, use=ansi+rca2, use=ansi+rep,
	use=ansi+tabs, use=ecma+index, use=ecma+italics,
	use=ecma+strikeout, use=xterm+alt+title,
	use=xterm+pcfkeys, use=xterm+sm+1006, use=xterm+tmux2,

######## WEB CLIENTS

#### DomTerm
# https://domterm.org
#
# Quoting its webpage:
#	The domterm command runs a server that manages sessions (usually shell
#	processes).  The user interface and terminal emulation is handled by a
#	JavaScript library that can run in a regular web browser or an embedded
#	browser such as Electron, using Web Sockets to talk to the server.
#
# it can connect to, and display in, a web browser, or as a standalone Qt
# application.  Either way, it displays in the current desktop session.
#
# Testing current code (2019/07/06) with Fedora 30:
# tack
#	no flash
#	no beep
#	no dim
#	no blink
#	no invis
#	no italics
#	ok smxx/rmxx
#	bce screen shows diagonal lines...
#	kf6 sends nothing
#	kf11 toggles maximize
#	cursor-key application mode works
#	numeric keypad application does not work; keys always send face-codes
#	sends utf-8 for meta, like xterm
# vttest
#	has problems with menu #1 (wrapping)
#	DA = vt200 with 132 columns, color
#	DA2 = 990, 100300 ("\E[>990;100300;0c")
#	no VT52, no double-size characters
#	vt220 ECH test works, SRM, DECSCA do not
#	S7C1T/S8C1t does not work
#	DECUDK does not work
#	CNL does not work; the other ECMA-48 cursor-movement tests work
#	REP sort-of works (does not match xterm)
#	SD/SU work, but not SL/SR
#	window reporting: works for size in chars/pixels, but not other tests
#	X10 mouse clicks work -- but return 4 rather than 1 for codes
#	any-event mouse mode acts like any-button mode
#	implements SGR mouse-mode
# other:
#	does not implement initc
#	does accept either colons or semicolon in 38/48 SGR.
domterm|DomTerm web client,
	npc,
	bel@, blink@, dim@, invis@, kcbt=\E[Z, ritm@, rmkx=\E[?1l,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;m,
	sitm@, smkx=\E[?1h, use=xterm+256setaf, use=ecma+index,
	use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm-basic,

######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
#

# Columbus UNIX virtual terminal. This terminal also appears in
# UNIX 4.0 and successors as line discipline 1 (?), but is
# undocumented and does not really work quite right.
cbunix|cb unix virtual terminal,
	OTbs, am, da, db,
	cols#80, lines#24, lm#0,
	bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL,
	el=\EK, ich1=\EO, il1=\EP, ind=\n, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
	smso=\Ea^D, smul=\Ea^A,
# (vremote: removed obsolete ":nl@:" -- esr)
vremote|virtual remote terminal,
	am@,
	cols#79, use=cbunix,

pty|4bsd pseudo teletype,
	cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
	smso=\Ea$, smul=\Ea!, use=cbunix,

#### Emacs

# https://www.emacswiki.org/emacs/AnsiTerm
# https://github.com/emacs-mirror/emacs/blob/master/lisp/term.el
#
# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
eterm|gnu emacs term.el terminal emulation,
	am, mir, xenl,
	cols#80, lines#24,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, rev=\E[7m,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
	smul=\E[4m,

# The codes supported by the term.el terminal emulation in GNU Emacs 22.2
eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
	am, mir, msgr, xenl,
	colors#8, cols#80, lines#24, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kbs=^?,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7,
	setab=\E[%p1%'('%+%dm, setaf=\E[%p1%{30}%+%dm,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?
	    %p7%t;8%;m,
	sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	u6=\E[%i%d;%dR, u7=\E[6n, use=vt220+pcedit,

# shell.el can "do" color, though not nearly as well.
#
# seen here:
# http://unix.stackexchange.com/questions/237943/changing-colors-used-by-ls-does-not-work-in-emacs-shell-mode
#
# and
# https://lists.gnu.org/archive/html/bug-gnu-emacs/2012-08/msg00481.html
# https://github.com/emacs-mirror/emacs/blob/master/lisp/shell.el
# https://github.com/emacs-mirror/emacs/blob/master/lisp/ansi-color.el
#
# however, as tested with Emacs 24.5.1, the result is buggy, losing overlays
# frequently.  The contemporaneous term.el aka ansi-term does not "support"
# italics but does not lose the color information -TD 2017/01/28.
dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
	am, hc,
	colors#8, it#8, ncv#13, pairs#64,
	bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m,
	rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr0=\E[m, smul=\E[4m, use=ecma+italics,

#### Screen

# Entries for use by the `screen' program by Juergen Weigert,
# Michael Schroeder, Oliver Laumann.  The screen and
# screen-w entries came with version 3.7.1.  The screen2 and screen3 entries
# come from University of Wisconsin and may be older.
# (screen: added <cnorm> on ANSI model -- esr)
#
# 'screen' defines extensions to termcap.  Some are used in its terminal
# description:
#      G0   (bool)  Terminal can deal with ISO 2022  font  selection sequences.
#      AX   (bool)  Does  understand ANSI set default fg/bg color
#                   (\E[39m / \E[49m).
#      S0   (str)   Switch charset 'G0' to the specified charset.
#      E0   (str)   Switch charset 'G0' back to standard charset.
#
# Initially tested with screen 3.09.08
#
# According to its manual page
#
#      Screen is a full-screen window manager that multiplexes a physical
#      terminal between several processes (typically interactive shells).  Each
#      virtual terminal provides the functions of a DEC VT100 terminal and, in
#      addition, several control functions from the ISO 6429 (ECMA 48, ANSI
#      X3.64) and ISO 2022 standards (e.g.  insert/delete line and support for
#      multiple character sets).
#
# However, there is a design error in its support for video highlights.  The
# program uses a table (rendlist) which equates the SGR codes to terminal
# capabilities.  That, and color-decoding are hardcoded in screen; its behavior
# is modified only by the presence or absence of the corresponding capabilities.
# Not by their values.
#
# If screen sets the TERMCAP variable, it uses hardcoded strings which
# correspond to the rendlist table.
#
# The table gives this information:
#
#	SGR	capability
#	---	---------
#	1	bold
#	2	dim
#	3	standout
#	4	underline
#	5	blink
#	-	(unused 6)
#	7	reverse
#	-	(unused 8-21)
#	22	reset bold, standout and dim
#	23	reset standout
#	24	reset underline
#	25	reset blink
#	-	(unused 26)
#	27	reset reverse
#
# ECMA-48 differs from this: 3 and 23 set and reset italics, respectively.
# ECMA-48 does not define "standout" - that is a termcap/terminfo abstraction.
# Without some redesign of screen, it is not possible to extend the set of
# capabilities.  Substitution would be possible, e.g., sending italics in
# place of underline.
#
# Because screen uses hard-coded parsing, it does not check if two capabilities
# use the same value.  For example, changing standout to be the same as any of
# the other capabilities will confuse screen.  Curses applications which use
# sgr are not impacted (because that usually resets all capabilities before
# setting any), but termcap applications do not use sgr -TD
#
# The "screen" entry should use ecma+index rather than just indn, but tmux
# defaults to using "screen".  For background, screen supported ecma+index
# since 1994 (i.e., screen 3.0.5), stating that it was an obscure code used by
# the (Siemens Nixdorf) 97801 terminal.  It was not shown in the termcap or
# terminfo entries (which list about 60% of the control sequences).
screen|VT 100/ANSI X3.64 virtual terminal,
	OTbs, OTpt, am, km, mir, msgr, xenl, G0,
	colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, kmous=\E[M, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
	rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;
	    5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=,
	smso=\E[3m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
	E0=\E(B, S0=\E(%p1%c, use=vt220+pcedit,
	use=xterm+alt1049, use=ecma+color, use=vt100+enq,
# The bce and status-line entries are from screen 3.9.13 (and require some
# changes to .screenrc).
screen-bce|VT 100/ANSI X3.64 virtual terminal with bce,
	bce,
	ech@, use=screen4,
screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
	dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen4,

# ======================================================================
# Entries for GNU Screen with 16 colors.
# Those variations permit to benefit from 16 colors palette, and from
# bold font and blink attribute separated from bright colors. But they
# are less portable than the generic "screen" 8 color entries: Their
# usage makes real sense only if the terminals you attach and reattach
# do all support 16 color palette.

screen-16color|GNU Screen with 16 colors,
	use=ibm+16color, use=screen4,

screen-16color-s|GNU Screen with 16 colors and status line,
	use=ibm+16color, use=screen-s,

screen-16color-bce|GNU Screen with 16 colors and BCE,
	use=ibm+16color, use=screen-bce,

screen-16color-bce-s|GNU Screen with 16 colors using BCE and status line,
	bce, use=ibm+16color, use=screen-s,

# ======================================================================
# Entries for GNU Screen 4.02 with --enable-colors256.

screen-256color|GNU Screen with 256 colors,
	use=xterm+256setaf, use=screen4,

screen-256color-s|GNU Screen with 256 colors and status line,
	use=xterm+256setaf, use=screen-s,

screen-256color-bce|GNU Screen with 256 colors and BCE,
	bce, use=xterm+256setaf, use=screen-bce,

screen-256color-bce-s|GNU Screen with 256 colors using BCE and status line,
	bce, use=xterm+256setaf, use=screen-s,

screen.xterm-256color|GNU Screen with xterm using 256 colors,
	use=xterm+256setaf, use=screen.xterm-new,

screen.konsole-256color|GNU Screen with konsole using 256 colors,
	use=xterm+256setaf, use=screen.konsole,

screen.vte-256color|GNU Screen with vte using 256 colors,
	use=xterm+256setaf, use=screen.vte,

screen.putty-256color|GNU Screen with putty using 256 colors,
	use=xterm+256setaf, use=screen.putty,

screen.mlterm-256color|GNU Screen with mlterm using 256 colors,
	use=xterm+256setaf, use=screen.mlterm,

# ======================================================================

# Read the fine manpage:
#       When  screen  tries  to  figure  out  a  terminal name for
#       itself, it first looks for an entry named "screen.<term>",
#       where  <term>  is the contents of your $TERM variable.  If
#       no such entry exists, screen tries "screen" (or "screen-w"
#       if the terminal is wide (132 cols or more)).  If even this
#       entry cannot be found, "vt100" is used as a substitute.
#
# Notwithstanding the manpage, screen uses its own notion of the termcap
# and some keys from "screen.<term>" are ignored.  Here is an entry which
# covers those (tested with screen 4.00.02) -TD
screen+fkeys|function-keys according to screen,
	kend=\E[4~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kfnd@,
	khome=\E[1~, kslt@,

# See explanation before "screen" entry.  Cancel italics so that applications
# do not assume screen supports the feature.  Add this tweak to entries which
# extend screen for terminals which do support italics.
screen+italics|screen cannot support italics,
	ritm@, sitm@,
#
# Here are a few customized entries which are useful -TD
#
# Notes:
# (a)	screen does not support invis.
# (b)	screen's implementation of bw is incorrect according to tack.
# (c)	screen appears to hardcode the strings for khome/kend, making it
#	necessary to override the "use=" clause's values (screen+fkeys).
# (d)	screen sets $TERMCAP to a termcap-formatted copy of the 'screen' entry,
#	which is NOT the same as the terminfo screen.<term>.
# (e)	when screen finds one of these customized entries, it sets $TERM to
#	match.  Hence, no "screen.xterm" entry is provided, since that would
#	create heartburn for people running remote xterm's.
# (f)   screen does not support rep.
#
#	xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV
#	since the default translations override the built-in keycode
#	translation.  They are suppressed here to show what is tested by tack.
screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
	bce@, bw,
	invis@, kIC@, kNXT@, kPRV@, meml@, memu@, rep@,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;%?%p4%t;5%;%?%p5%t;2%;m,
	E3@, use=screen+italics, use=screen+fkeys,
	use=xterm+x11mouse, use=xterm-new,
#:screen.xterm|screen for modern xterm,
#:	use=screen.xterm-new,
# xterm-r6 does not really support khome/kend unless it is propped up by
# the translations resource.
screen.xterm-r6|screen customized for X11R6 xterm,
	bw, use=xterm+x11mouse, use=screen+fkeys, use=xterm-r6,
# Color applications running in screen and TeraTerm do not play well together
# on Solaris because Sun's curses implementation gets confused.
screen.teraterm|disable ncv in teraterm,
	ncv#127,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	use=screen+fkeys, use=xterm+x11mouse, use=screen4,
# Other terminals
screen.rxvt|screen in rxvt,
	bw, XT,
	cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, use=screen+fkeys, use=vt100+enq,
	use=rxvt+pcfkeys, use=xterm+x11mouse, use=vt220+keypad,
	use=screen4,
screen.Eterm|screen in Eterm,
	use=xterm+x11mouse, use=screen+fkeys, use=Eterm,
screen.mrxvt|screen in mrxvt,
	use=xterm+x11mouse, use=screen+fkeys, use=mrxvt,
screen.vte|screen in any VTE-based terminal,
	use=xterm+x11mouse, use=screen+italics,
	use=screen+fkeys, use=vte,
screen.gnome|screen in GNOME Terminal,
	use=xterm+x11mouse, use=screen+italics,
	use=screen+fkeys, use=gnome,
screen.konsole|screen in KDE console window,
	use=xterm+x11mouse, use=screen+italics,
	use=screen+fkeys, use=konsole,
# fix the backspace key
screen.linux|screen.linux-s|screen in Linux console,
	bw,
	kbs=^?, kcbt@, use=linux+sfkeys, use=xterm+x11mouse,
	use=screen+fkeys, use=screen4,
screen.mlterm|screen in mlterm,
	use=xterm+x11mouse, use=screen+fkeys, use=mlterm,
screen.putty|screen in putty,
	use=xterm+x11mouse, use=screen+fkeys, use=putty,

# The default "screen" entry is reasonably portable, but not optimal for the
# most widely-used terminal emulators.  The "bce" capability is supported in
# screen since 3.9.13, and when used, will require fewer characters to be sent
# to the terminal for updates.
#
# If you are using only terminals which support bce, then you can use this
# feature in your screen configuration.
#
# Adding these lines to your ".screenrc" file will allow using these customized
# entries:
#	term screen-bce
#	bce on
#	defbce on
screen-bce.xterm-new|screen optimized for modern xterm,
	bce,
	ech@, use=screen+italics, use=screen.xterm-new,
screen-bce.rxvt|screen optimized for rxvt,
	bce,
	ech@, use=screen.rxvt,
screen-bce.Eterm|screen optimized for Eterm,
	bce,
	ech@, use=screen.Eterm,
screen-bce.mrxvt|screen optimized for mrxvt,
	bce,
	ech@, use=screen.mrxvt,
screen-bce.gnome|screen optimized for GNOME-Terminal,
	bce,
	ech@, use=screen+italics, use=screen.gnome,
screen-bce.konsole|screen optimized for KDE console window,
	bce,
	ech@, use=screen+italics, use=screen.konsole,
screen-bce.linux|screen optimized for Linux console,
	bce,
	ech@, use=screen.linux,

screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
	cols#132, use=screen4,

screen2|old VT 100/ANSI X3.64 virtual terminal,
	cols#80, it#8, lines#24,
	cbt=\E[Z, clear=\E[2J\E[H, cr=\r, cub=\E[%p1%dD, cub1=^H,
	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, ed=\E[J,
	el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL,
	il1=\E[L, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
	kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
	nel=\r\n, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m,
	rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h,
	smso=\E[3m, smul=\E[4m, tbc=\E[3g,
# (screen3: removed unknown ":xv:LP:G0:" -- esr)
screen3|older VT 100/ANSI X3.64 virtual terminal,
	km, mir, msgr,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
	rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec,
	sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
	smul=\E[4m, tbc=\E[3g,

# screen 4.0 was released 2003-07-21, and as of March 2019, its terminfo file
# was last updated in 2009 to include 256-color support.  The most recent
# release is 4.6.2 (October 2017).
screen4|VT 100/ANSI X3.64 virtual terminal,
	use=ecma+index, use=screen,

# As of March 2019, screen 5.0 has not been released.
#
# However,
#
#	https://savannah.gnu.org/bugs/?36676
#
# mentions a change to implement italics which should be in a version 5,
# (implemented 2016-11-05, but merged 2017-07-09).  That does away with the
# longstanding use of SGR 3 for standout, and interprets it as italics.
#
# The same development branch has some support for direct-colors, but none
# of this has been documented.
screen5|VT 100/ANSI X3.64 virtual terminal (someday),
	rmso=\E[27m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;m%?%p9%t\016%e\017%;,
	smso=\E[7m, use=ecma+italics, use=screen4,

#### Tmux

# tmux is mostly compatible with screen, but has support for italics, and some
# of the xterm cursor bits.
#
# However, unlike screen, tmux has no provision for using derived terminal
# descriptions.  When screen starts, it looks for a suitable "inner" terminal
# such as "screen.$TERM" to correspond to the outer terminal's quirks.  The
# various entries such as screen.xterm-new provide a way to more closely
# match the terminal.
tmux|tmux terminal multiplexer,
	invis=\E[8m, kbs=^?, rmso=\E[27m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	smso=\E[7m, E3=\E[3J, Smulx=\E[4:%p1%dm,
	use=ecma+italics, use=ecma+strikeout, use=xterm+edit,
	use=xterm+pcfkeys, use=xterm+sl, use=xterm+tmux,
	use=screen,

tmux-256color|tmux with 256 colors,
	use=xterm+256setaf, use=tmux,

tmux-direct|tmux with direct-color indexing,
	setal=\E[%?%p1%{8}%<%t5%p1%d%e58:2::%p1%{65536}%/%d:%p1
	      %{256}%/%{255}%&%d:%p1%{255}%&%d%;m,
	use=xterm+direct, use=tmux,

#### Dvtm

# dvtwm 0.15
# http://www.brain-dump.org/projects/dvtm/
#
# + This uses ncurses to manage the display, including support for italics and
#   default-colors.
# + However, default-colors are incomplete: do not set bce.
# + It does not implement flash (since no \e[?5h)
# + Do not set XT: dvtm knows about OSC 0 and 2, but not 1.
#   Oddly enough, if $TERM contains "linux", it attempts to set the title.
# + Some of the program is cut/paste from rxvt-unicode, e.g., the ACS table.
# + The built-in table of function-keys (based on rxvt) is incomplete (ends
#   with kf22).
# + It also omits the shifted cursor- and editing-keypad keys.
#   However, it is confused by xterm's shifted cursor- and editing-keypad keys
#   (and passes those through without interpretation)
#   and may simply pass-through rxvt's, making it appear to work.
#   In other cases such as kf23 and up, no pass-through is done.
# + Most of the mode-settings in the initialization/reset strings are not
#   implemented; dvtm copies its description from rxvt.
dvtm|dynamic virtual terminal manager,
	am, eo, mir, msgr, xenl, AX,
	colors#8, cols#80, it#8, lines#24, ncv@, pairs#64,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is1=\E[?47l\E=\E[?1l,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
	kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d,
	kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy,
	kb2=\EOu, kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~,
	kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[23$,
	kf22=\E[24$, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[7~, kind=\E[a, kmous=\E[M, kri=\E[b, op=\E[39;49m,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
	    25h,
	s0ds=\E(B, s1ds=\E(0, sc=\E7, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
	    %p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
	use=vt220+vtedit, use=vt220+cvis, use=ecma+italics,

dvtm-256color|dynamic virtual terminal manager with 256 colors,
	colors#0x100, pairs#0x10000,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;
	      5;%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5
	      ;%p1%d%;m,
	use=dvtm,

#### NCSA Telnet

# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
# NCSA telnet is one of the most used telnet clients for the Macintosh.  It has
# been maintained until recently by the National Center for Supercomputer
# Applications, and it is feature rich, stable and free.  It can be downloaded
# from www.ncsa.edu.  This terminfo description file is based on xterm-vt220,
# xterm+sl, and the docs at NCSA.  It works well.
#
# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode
# The terminal options should be set as follows:
#         Xterm sequences ON
#         use VT wrap mode ON
#         use Emacs arrow keys OFF
#         CTRL-COMND is Emacs meta ON
#         8 bit mode ON
#         answerback string: "ncsa-vt220-8"
#         setup keys: all disabled
#
# Application mode is not used.
#
# Other special mappings:
#	Apple		VT220
#	HELP		Find
#	HOME		Insert here
#	PAGEUP		Remove
#	DEL		Select
#	END		Prev Screen
#	PAGEDOWN	Next Screen
#
# Though it supports ANSI color, NCSA Telnet uses color to represent blinking
# text.
#
# The status-line manipulation is a mapping of the xterm-compatible control
# sequences for setting the window-title.  So you must use tsl and fsl in
# pairs, since the latter ends the string that is loaded to the window-title.
ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
	am, km, mir, msgr, xenl,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E)0,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
	il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
	kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
	kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
	kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
	khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
	rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
	rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
	    %p9%t\E(0%e\E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
	smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	u8=\E[?62;1;6c, use=vt220+cvis, use=xterm+sl,
	use=ansi+enq,
ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
	use=ncsa-m, use=klone+color,
ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
	hs@,
	dsl@, fsl@, tsl@, use=ncsa,
ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
	hs@,
	dsl@, fsl@, tsl@, use=ncsa-m,
# alternate -TD:
# The documented function-key mapping refers to the Apple Extended Keyboard
# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6).  We use the VT220-style
# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
# some keyboards and many applications require these as F1-F4.
#
ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, use=ncsa,

#### Pilot Pro Palm-Top
#
# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
# https://web.archive.org/web/20051103015726/http://www.ai/~iang/TGssh/
pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
	OTbs, am, xenl,
	cols#39, lines#16,
	bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n,
	cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I,
	ind=\n, kbs=^H, kcub1=^H, kcud1=\n, knp=^L, kpp=^K, nel=\Em~\s,
	rmso=\EB, smso=\Eb,

# From: Federico Bianchi <bianchi@www.arte.unipi.it>
# These entries are for the Embeddable Linux Kernel System (ELKS)
# project - an heavily stripped down Linux to be run on 16 bit
# boxes or, eventually, to be used in embedded systems - and have been
# adapted from the stock ELKS termcap. The project itself looks stalled,
# and the latest improvements I know of date back to March 2000.
#
# To cope with the ELKS dumb console I added an "elks-glasstty" entry;
# as an added bonus, this deals with all the capabilities common to
# both VT52 and ANSI (or, eventually, "special") modes.

elks-glasstty|ELKS glass-TTY capabilities,
	OTbs, am,
	cols#80, it#8, lines#25,
	bel=^G, cr=\r, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
	nel=\r\n,

elks-vt52|ELKS vt52 console,
	clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK,
	home=\EH, use=elks-glasstty,

elks-ansi|ELKS ANSI console,
	clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	rmso=\E[m, smso=\E[7m, use=elks-glasstty,

# As a matter of fact, ELKS 0.0.83 on PCs defaults to ANSI emulation
# instead of VT52, but the "elks" entry still refers to the latter.

elks|default ELKS console,
	use=elks-vt52,

# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS
# one but in screen size

sibo|ELKS SIBO console,
	cols#61, it#8, lines#20, use=elks-vt52,

######## COMMERCIAL WORKSTATION CONSOLES
#

#### Alpha consoles
#

# This is from the OSF/1 Release 1.0 termcap file
pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
	am, xon,
	cols#80, lines#25,
	bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
	nel=\r\n, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,

#### Sun consoles
#

# :is1: resets scrolling region in case a previous user had used "tset vt100"
oldsun|Sun Microsystems Workstation console,
	OTbs, am, km, mir, msgr,
	cols#80, it#8, lines#34,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is1=\E[1r, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
	rmso=\E[m, sgr0=\E[m, smso=\E[7m,
# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
# <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com>
# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
sun-il|Sun Microsystems console with working insert-line,
	am, km, msgr,
	cols#80, lines#34,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=^?, kend=\E[220z, kf1=\E[224z,
	kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z,
	kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z,
	kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z,
	kich1=\E[247z, knp=\E[222z, kopt=\E[194z, kpp=\E[216z,
	kres=\E[193z, kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@,
	rs2=\E[s, sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m,
	smso=\E[7m, u8=\E[1t, u9=\E[11t,
# On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il>
# flake out on the last line.  Unfortunately, without them the terminal has no
# way to scroll.
sun-cgsix|sun-ss5|Sun SparcStation 5 console,
	il@, il1@, use=sun-il,
# If you are using an SS5, change the sun definition to use sun-ss5.
sun|sun1|sun2|Sun Microsystems Inc. workstation console,
	use=sun-il,

sun+sl|Sun Workstation window status line,
	hs,
	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l,

# From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
sun-s|Sun Microsystems Workstation window with status line,
	hs,
	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun,
sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
	hs,
	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e,
sun-48|Sun 48-line window,
	cols#80, lines#48, use=sun,
sun-34|Sun 34-line window,
	cols#80, lines#34, use=sun,
sun-24|Sun 24-line window,
	cols#80, lines#24, use=sun,
sun-17|Sun 17-line window,
	cols#80, lines#17, use=sun,
sun-12|Sun 12-line window,
	cols#80, lines#12, use=sun,
sun-1|Sun 1-line window for sysline,
	eslok, hs,
	cols#80, lines#1,
	dsl=^L, fsl=\E[K, tsl=\r, use=sun,
sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character,
	ich1@, rmir@, smir@, use=sun,
sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
	lines#35,
	rmcup=\E[>4h, smcup=\E[>4l, use=sun,
sun-type4|Sun Workstation console with type 4 keyboard,
	kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z,
	kcuu1=\E[215z, use=sun-il,

# Most of the current references to sun-color are from users wondering why this
# is the default on install.  Details from reading the wscons manpage, adding
# cub, etc., here (rather than in the base sun-il entry) since it is not clear
# when those were added -TD (2005-05-28)
#
# According to wscons manpage, color is supported only on IA systems.
# Sun's terminfo entry documents bold and smul/rmul capabilities, but wscons
# does not list these.  It also sets ncv#3, however that corresponds to
# underline and standout.
#
# Since the documentation and terminfo do not agree, see also current code at
# https://web.archive.org/web/20091231042744/http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c
#
# That (actually a different driver which "supports" sun-color) also supports
# these features:
#	vpa=\E[%i%p1%dd
#	hpa=\E[%i%p1%d`
#	cbt=\E[Z
#	dim=\E[2m
#	blink=\E[5m
# It supports bold, but not underline -TD (2009-09-19)
sun-color|Sun Microsystems Workstation console with color support (IA systems),
	colors#8, ncv#3, pairs#64,
	bold=\E[1m, cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, home=\E[H, op=\E[0m, rs2=\E[s,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
	     %=%t3%e%p1%d%;m,
	sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, sgr0=\E[m,
	smso=\E[7m, use=sun,

#### Iris consoles
#

# (wsiris: this had extension capabilities
#	:HS=\E7F2:HE=\E7F7:\
#	:CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
# See the note on Iris extensions near the end of this file.
# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> &
# <flash> from BRL -- esr)
wsiris|iris40|IRIS emulating a 40 line Visual 50 (approximately),
	OTbs, OTnc, OTpt, am,
	OTkn#3, cols#80, it#8, lines#40,
	OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK,
	flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL,
	ind=\n, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
	kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
	rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
	smul=\E7R2\E9P,

#### NeWS consoles
#
# Console terminal windows under the NeWS (Sun's Display Postscript windowing
# environment).   Note: these have nothing to do with Sony's News workstation
# line.
#

# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
psterm|psterm-basic|NeWS psterm-80x34,
	OTbs, am, hs, km, ul,
	cols#80, it#8, lines#34,
	blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;,
	cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY,
	dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl,
	home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr,
	ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^],
	sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu,
	tsl=\EOl,
psterm-96x48|NeWS psterm 96x48,
	cols#96, lines#48, use=psterm,
psterm-90x28|NeWS psterm 90x28,
	cols#90, lines#28, use=psterm,
psterm-80x24|NeWS psterm 80x24,
	cols#80, lines#24, use=psterm,
# This is a faster termcap for psterm.  Warning:  if you use this termcap,
# some control characters you type will do strange things to the screen.
# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr)
psterm-fast|NeWS psterm fast version (flaky ctrl chars),
	OTbs, am, hs, km, ul,
	cols#80, it#8, lines#34,
	blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;,
	cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y,
	dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I,
	il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni,
	rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi,
	smso=^Oo, smul=^Ou, tsl=^Ol,

#### NeXT consoles
#
# Use `glasstty' for the Workspace application
#

# From: Dave Wetzel <dave@turbocat.snafu.de> 22 Dec 1995
next|NeXT console,
	am, xt,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
	rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m,
nextshell|NeXT Shell application,
	am,
	cols#80,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, kbs=^H, kcub1=^H,
	kcud1=\n, nel=\r\n,

#### Sony NEWS workstations
#

# (news-unk: this had :KB=news: -- esr)
news-unk|Sony NEWS vt100 emulator common entry,
	OTbs, OTpt, am, xenl,
	cols#80,
	OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
	is2=\E[?7h\E[?1h\E[?3l\E7\E8, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
	kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7,
	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
#
# (news-29: this had :TY=ascii: --esr)
news-29|Sony NEWS vt100 emulator with 29 lines,
	lines#29, use=news-unk,
# (news-29-euc: this had :TY=euc: --esr)
news-29-euc|Sony NEWS vt100 emulator with 29 lines and EUC,
	use=news-29,
# (news-29-sjis: this had :TY=sjis: --esr)
news-29-sjis|Sony NEWS vt100 emulator with 29 lines and SJIS,
	use=news-29,
#
# (news-33: this had :TY=ascii: --esr)
news-33|Sony NEWS vt100 with 33 lines,
	lines#33, use=news-unk,
# (news-33-euc: this had :TY=euc: --esr)
news-33-euc|Sony NEWS vt100 with 33 lines and EUC,
	use=news-33,
# (news-33-sjis: this had :TY=sjis: --esr)
news-33-sjis|Sony NEWS vt100 with 33 lines and SJIS,
	use=news-33,
#
# (news-42: this had :TY=ascii: --esr)
news-42|Sony NEWS vt100 with 42 lines,
	lines#42, use=news-unk,
# (news-42-euc: this had :TY=euc: --esr)
news-42-euc|Sony NEWS vt100 with 42 lines and EUC,
	use=news-42,
# (news-42-sjis: this had :TY=sjis: --esr)
news-42-sjis|Sony NEWS vt100 with 42 lines and SJIS,
	use=news-42,
#
#	NEWS-OS old termcap entry
#
# (news-old-unk: this had :KB=news:TY=sjis: --esr)
news-old-unk|Sony NEWS vt100 emulator common entry,
	OTbs, OTpt, am, xenl,
	cols#80, vt#3,
	OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, if=/usr/share/tabset/vt100, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
#
# (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
nwp512|news|nwp514|news40|vt100-bm|old Sony vt100 emulator 40 lines,
	OTbs,
	lines#40,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40
	    r\E8,
	use=news-old-unk,
#
# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
nwp512-a|nwp514-a|news-a|news42|news40-a|Sony vt100 emulator 42 line,
	lines#42,
	is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8,
	use=news-old-unk,
#
# (nwp-512-o: this had :KB=nwp410:DE=^H:  I interpret the latter as <OTbs>. --esr)
nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|Sony vt100 emulator 40 lines,
	OTbs,
	lines#40,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40
	    r\E8,
	use=news-old-unk,
#
# (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
nwp513|nwp518|nwe501|newscbm|news31|Sony vt100 emulator 33 lines,
	OTbs,
	lines#31,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31
	    r\E8,
	use=news-old-unk,
#
# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr)
# also the alias vt100-bm.
nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old Sony vt100 emulator 33 lines,
	OTbs,
	lines#33,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33
	    r\E8,
	use=news-old-unk,
#
# (nwp513-o: had :DE=^H:, I think that's <OTbs>; also the alias vt100-bm --esr)
nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old Sony vt100 emulator 33 lines,
	OTbs,
	lines#31,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31
	    r\E8,
	use=news-old-unk,
#
# (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr)
news28|Sony vt100 emulator 28 lines,
	OTbs,
	lines#28,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28
	    r\E8,
	use=news-old-unk,
#
# (news29: this had :TY=ascii:KB=nws1200:\ --esr)
news29|news28-a|Sony vt100 emulator 29 lines,
	lines#29,
	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29
	    r\E8,
	use=news-old-unk,
#
# (news511: this had :TY=sjis: --esr)
nwp511|nwp-511|nwp-511 vt100,
	OTbs, OTpt, am, xenl,
	cols#80, lines#24,
	clear=\E[;H\E[2J$<20/>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
	ed=\E[J$<30/>, el=\E[K$<3/>,
	flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
	il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H,
	ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
	rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h,
	smso=\E[7m$<2/>, smul=\E[4m$<2/>,
# (news517: this had :TY=sjis:. --esr)
nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows,
	eslok, hs,
	cols#80, lines#30,
	OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
	is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	tsl=\E[1$}\E[;%df, use=vt220-base,
# (news517-w: this had :TY=sjis:. --esr)
nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
	eslok, hs,
	cols#132, lines#50,
	OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
	is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
	tsl=\E[1$}\E[;%df, use=vt220-base,

#### Common Desktop Environment
#

# This ships with Sun's CDE in Solaris 2.5
# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
dtterm|CDE desktop terminal,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, lm#0, ncv@,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~,
	kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khlp=\E[28~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
	sc=\E7,
	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=vt220+vtedit,
	use=vt220+cvis, use=ecma+color,

######## Non-Unix Consoles
#

#### EMX termcap.dat compatibility modes
#
# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the
# no_color_video to inform the application that standout(1), underline(2)
# reverse(4) and invisible(64) don't work with color.
emx-base|DOS special keys,
	bce, bw,
	it#8, ncv#71,
	bel=^G, use=ansi.sys,

# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
# a Unix-style environment used on OS/2.  (Note that the suffix makes some
# names longer than 14 characters, the nominal maximum).
#
# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
ansi-emx|ANSI.SYS color,
	am, bce, eo, mir, msgr, xon,
	colors#8, cols#80, it#8, lines#25, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m,
	clear=\E[1;33;44m\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch=\E[%p1%dp, ed=\E[J, el=\E[K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kbs=^H, kf0=\0D,
	kll=\0O, kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l,
	rmpch=\E[10m, rmso=\E[0;44m\E[1;33m,
	rmul=\E[0;44m\E[1;33m, rs1=\Ec, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm, sgr0=\E[0m\E[1;33;44m, smir=\E[4h,
	smpch=\E[11m, smso=\E[0;31;47m, smul=\E[1;31;44m,
	tbc=\E[3g, u8=\E[?6c, u9=\E[c, use=vt220+cvis,
	use=emx-base,
# nice colors for Emacs (white on blue, mode line white on cyan)
ansi-color-2-emx|ANSI.SYS color 2,
	clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m,
	rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec,
	setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m,
	smul=\E[1;36;44m, use=ansi-emx,
# nice colors for Emacs (white on black, mode line black on cyan)
ansi-color-3-emx|ANSI.SYS color 3,
	clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m,
	rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec,
	setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m,
	smul=\E[0;36;40m, use=ansi-emx,
mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
	am,
	cols#80, it#8, lines#24,
	clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M,
	kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>,
	kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G,
	kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=\r\n, rev=\E[7m,
	sgr0=\E[0m,

#### Cygwin

# Use this for cygwin32 (tested with beta 19.1)
# underline is colored bright magenta
# shifted kf1-kf12 are kf11-kf22
cygwinB19|ANSI emulation for cygwin32,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, rmam@, smam@, use=vt220+pcedit,
	use=ansi.sys,

# Use this for cygwin (tested with version 1.1.0).
# I've combined pcansi and linux.  Some values of course were different and
# I've indicated which of these were and which I used.
# Cheers, earnie_boyd@yahoo.com
# several changes based on running with tack and comparing with older entry -TD
# more changes from csw:
#   add    cbt   [backtab]
#   remove eo    [erase overstrike with blank]
#   change clear was \E[H\E[J  now \E[2J  (faster?)
#   remove cols
#   remove lines
#   remove ncv#3 [colors collide with highlights, bitmask] not applicable
#                to MSDOS box?
#   add    cub   [cursor back param]
#   add    cuf   [cursor forward param]
#   add    cuu   [cursor up param]
#   add    cud   [cursor down param]
#   add    hs    [has status line]
#   add    fsl   [return from status line]
#   add    tsl   [go to status line]
#   add    smacs [Start alt charset] (not sure if this works)
#   add    rmacs [End alt charset]   (ditto)
#   add    smcup [enter_ca_mode] (save console; thanks Corinna)
#   add    rmcup [exit_ca_mode]  (restore console; thanks Corinna)
#   add    kb2   [center of keypad]
#   add    u8    [user string 8] \E[?6c
#   add    el    [clear to end of line] \E[K
# Notes:
#   cnorm [make cursor normal] not implemented
#   flash [flash] not implemented
#   blink [blink] not implemented very usefully in cygwin? \E[5m
#   dim   [dim] not implemented very usefully in cygwin? \E[2m
#   cub1  [cursor back 1] typically \E[D, but ^H is faster?
#   kNXT  [shifted next key] not implemented
#   kPRV  [shifted prev key] not implemented
#   khome [home key] really is \E[1~ NOT \E[H
#   tbc   [clear tab stops] not implemented
#   xenl  [newline ignored after 80 cols] messes up last line? Ehud Karni
#   smpch [Start PC charset] is \E[11m, same as smacs
#   rmpch [End PC charset] is \E[10m, same as rmacs
#   mir   [move in insert mode] fails in tack?
#   bce   [back color erase] causes problems with change background color?
#   cvvis [make cursor very visible] causes a stackdump when testing with
#         testcurs using the output option? \E[?25h\E[?8c
#   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
#   ech   [erase characters param] broken \E[%p1%dX
#   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
#
# 2005/11/12 -TD
#	Remove cbt since it does not work in current cygwin
#	Add 'mir' and 'in' flags based on tack
cygwin|ANSI emulation for Cygwin,
	am, hs, mir, msgr, xon,
	colors#8, it#8, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
	     \301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD,
	cub1=^H, 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, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kb2=\E[G,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
	kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kspd=^Z, nel=\r\n,
	op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmpch=\E[10m,
	rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
	    %t;8%;%?%p9%t;11%;m,
	sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h,
	smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];,
	vpa=\E[%i%p1%dd, use=vt220+pcedit, use=vt102+enq,

# I've supplied this so that you can help test new values and add other
# features.  Cheers, earnie_boyd@yahoo.com.
#
# Some features are from pcansi.  The op value is from linux.  Function-keys
# are from linux.  These have been tested not to cause problems.  xenl was in
# this list, but DOES cause problems so it has been removed
cygwinDBG|Debug Version for Cygwin,
	am, eo, mir, msgr, xon,
	colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\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=\r, 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,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kNXT=\E[6$,
	kPRV=\E[5$, kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=\E[10m, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
	    %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
	sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt220+pcedit,
	use=vt220+cvis, use=vt102+enq,

#### DJGPP

# Key definitions:
# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc.  match the
# encodings used by other x86 environments.  All others are invented for DJGPP.
# Oddly enough, while several combinations of modifiers are tabulated, there is
# none for shifted cursor keys.
#
#	F1			\E[[A
#	F2			\E[[B
#	F3			\E[[C
#	F4			\E[[D
#	F5			\E[[E
#	F6			\E[17~
#	F7			\E[18~
#	F8			\E[19~
#	F9			\E[20~
#	F10			\E[21~
#	F11			\E[23~
#	F12			\E[24~
#
#	Delete			\E[3~
#	Down Arrow		\E[B
#	End			\E[4~
#	Home			\E[1~
#	Insert			\E[2~
#	Left Arrow		\E[D
#	Page Down		\E[6~
#	Page Up			\E[5~
#	Right Arrow		\E[C
#	Up Arrow		\E[A
#
#	Shift-F1		\E[25~
#	Shift-F2		\E[26~
#	Shift-F3		\E[27~
#	Shift-F4		\E[28~
#	Shift-F5		\E[29~
#	Shift-F6		\E[30~
#	Shift-F7		\E[31~
#	Shift-F8		\E[32~
#	Shift-F9		\E[33~
#	Shift-F10		\E[34~
#	Shift-F11		\E[35~
#	Shift-F12		\E[36~
#
#	Ctrl-F1			\E[47~
#	Ctrl-F2			\E[48~
#	Ctrl-F3			\E[49~
#	Ctrl-F4			\E[50~
#	Ctrl-F5			\E[51~
#	Ctrl-F6			\E[52~
#	Ctrl-F7			\E[53~
#	Ctrl-F8			\E[54~
#	Ctrl-F9			\E[55~
#	Ctrl-F10		\E[56~
#	Ctrl-F11		\E[57~
#	Ctrl-F12		\E[58~
#
#	Ctrl-Delete		\E[43~
#	Ctrl-Down Arrow		\E[38~
#	Ctrl-End		\E[44~
#	Ctrl-Home		\E[41~
#	Ctrl-Insert		\E[42~
#	Ctrl-Left Arrow		\E[39~
#	Ctrl-Page Down		\E[46~
#	Ctrl-Page Up		\E[45~
#	Ctrl-Right Arrow	\E[40~
#	Ctrl-Up Arrow		\E[37~
#
#	Alt-F1			\E[59~
#	Alt-F2			\E[60~
#	Alt-F3			\E[61~
#	Alt-F4			\E[62~
#	Alt-F5			\E[63~
#	Alt-F6			\E[64~
#	Alt-F7			\E[65~
#	Alt-F8			\E[66~
#	Alt-F9			\E[67~
#	Alt-F10			\E[68~
#	Alt-F11			\E[79~
#	Alt-F12			\E[80~
#
#	Alt-Delete		\E[65~
#	Alt-Down Arrow		\E[60~
#	Alt-End			\E[66~
#	Alt-Home		\E[41~
#	Alt-Insert		\E[64~
#	Alt-Left Arrow		\E[61~
#	Alt-Page Down		\E[68~
#	Alt-Page Up		\E[67~
#	Alt-Right Arrow		\E[62~
#	Alt-Up Arrow		\E[59~
#
# Also:
#	Alt-A			\E[82~
#	Alt-B			\E[82~
#	Alt-C			\E[83~
#	Alt-D			\E[84~
#	Alt-E			\E[85~
#	Alt-F			\E[86~
#	Alt-G			\E[87~
#	Alt-H			\E[88~
#	Alt-I			\E[89~
#	Alt-J			\E[90~
#	Alt-K			\E[91~
#	Alt-L			\E[92~
#	Alt-M			\E[93~
#	Alt-N			\E[94~
#	Alt-O			\E[95~
#	Alt-P			\E[96~
#	Alt-Q			\E[97~
#	Alt-R			\E[98~
#	Alt-S			\E[99~
#	Alt-T			\E[100~
#	Alt-U			\E[101~
#	Alt-V			\E[102~
#	Alt-W			\E[103~
#	Alt-X			\E[104~
#	Alt-Y			\E[105~
#	Alt-Z			\E[106~
djgpp|ANSI emulation for DJGPP alpha,
	am, bce, msgr, xhp, xon, xt,
	colors#8, it#8, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
	     \301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
	clear=\E[H\E[J, cnorm=\E[v, cr=\r, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[2v, 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=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\r\n, op=\E[37;40m,
	rev=\E[7m, ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%?
	    %p6%t;1%;%?%p7%t;8%;m,
	sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
	use=vt220+pcedit, use=ecma+index,

djgpp203|entry for DJGPP 2.03,
	OTbs, am,
	cols#80, it#8, lines#25,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H,
	kcud1=\n, nel=\r\n,

djgpp204|entry for DJGPP 2.04,
	OTbs, am, AX,
	colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
	clear=\E[H\E[2J, cnorm=\E[v, cr=\r, 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, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\E[S, invis=\E[8m, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~, kf1=\E[[A,
	kf10=\E[21~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kll=\E[4~,
	nel=\r\n, rev=\E[7m, ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
	use=vt220+pcedit, use=ecma+index,

#### U/Win

# This is tested using U/Win's telnet.  Scrolling is omitted because it is
# buggy.  Another odd bug appears when displaying "~" in alternate character
# set (the emulator spits out error messages).  Compare with att6386 -TD
uwin|U/Win 3.2 console,
	am, eo, in, msgr, xenl, xon,
	colors#8, it#8, ncv#58, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
	     \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
	     \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[Y,
	kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	kf9=\EOX, khome=\E[H, kich1=\E[@, nel=\r\n, op=\E[39;49m,
	rc=\E8, rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m,
	rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
	smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
	use=vt220+cvis,

#### Microsoft (miscellaneous)

# This entry fits the Windows NT console when the _POSIX_TERM environment
# variable is set to 'on'.  While the Windows NT POSIX console is seldom used,
# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating
# systems is not, and (surprise!) they match very well.
#
# See:  MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up
# VI POSIX Editor for Windows NT 3.1".  True to Microsoft form, not only
# are the installation instructions a pile of mind-numbing bureaucratese,
# but the termcap entry is actually broken and unusable as given; the :do:
# capability is misspelled "d".
#
# To use this, you need to a bunch of environment variables:
#
# SET _POSIX_TERM=on
# SET TERM=ansi
# SET TERMCAP=location of termcap file in POSIX file format
# which is case-sensitive.
# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap
# SET TMP=//C/TEMP
#
# Important note: setting the TMP environment variable in POSIX style renders
# it incompatible with a lot of other applications, including Visual C++. So
# you should have a separate command window just for vi. All the other
# variables may be permanently set in the Control Panel\System applet.
#
# You can find out more about the restrictions of this facility at
# <https://jeffpar.github.io/kbarchive/kb/108/Q108581/>
#
# From: Federico Bianchi <bianchi@magna.cisid.unipi.it>, 15 Jan 1997
ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode,
	am, bw, msgr,
	cols#80, it#8, lines#25,
	bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[V,
	kcuf1=\E[C, kcuu1=\E[A, nel=\r\E[S, rc=\E[u, rev=\E[7m,
	ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m,
# From: jew@venus.sunquest.com
# Date: 19 Feb 93 23:41:07 GMT
# Here's  a  combination of  ansi and  vt100 termcap
# entries   that  works  nearly   perfectly  for  me
# (Gateway 2000 Handbook and Microsoft Works 3.0):
pcmw|PC running Microsoft Works,
	am, xenl,
	cols#80, it#8, lines#24, vt#3,
	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n,
	cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
	cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
	ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>,
	rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100,
	ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>,
	tbc=\E[3g$<2/>,

# From: Federico Bianchi
# This is the entry for the OpenNT terminal.
# The ntconsole name is for backward compatibility.
# This is for OpenNT 2.0 and later.
# Later OpenNT was renamed to Interix.
#
# Presently it is distributed by Microsoft as Services For Unix (SFU).
# The 3.5 beta contained ncurses 4.2 (that is header files and executables,
# the documentation dated from 1.9.9e) -TD
#
# For a US keyboard, with 12 function-kecbt=\E[Z, ys,
#	kf1-kf12 are unmodifiedcbt=\E[Z, cbt=\E[Z,
#	kf13-kf24 use the shift-key
#	kf25-kf36 use the left alt-key
#	kf37-kf38 use the control-key
#	kf49-kf60 use the shift- and control-keys
# The shifted cursor keys send the sequences originally used for kf61-kf64:
#	down=\EF+	(kf61)
#	up=\EF-		(kf62)
#	left=\EF^	(unassigned)
#	right=\EF$	(kf64)

interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color,
	am, bce, msgr,
	cols#80, it#8, lines#25,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
	     \301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	kLFT=\EF\^, kRIT=\EF$, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[U,
	kf0=\EFA, kf1=\EF1, kf10=\EFA, kf11=\EFB, kf12=\EFC,
	kf13=\EFD, kf14=\EFE, kf15=\EFF, kf16=\EFG, kf17=\EFH,
	kf18=\EFI, kf19=\EFJ, kf2=\EF2, kf20=\EFK, kf21=\EFL,
	kf22=\EFM, kf23=\EFN, kf24=\EFO, kf25=\EFP, kf26=\EFQ,
	kf27=\EFR, kf28=\EFS, kf29=\EFT, kf3=\EF3, kf30=\EFU,
	kf31=\EFV, kf32=\EFW, kf33=\EFX, kf34=\EFY, kf35=\EFZ,
	kf36=\EFa, kf37=\EFb, kf38=\EFc, kf39=\EFd, kf4=\EF4,
	kf40=\EFe, kf41=\EFf, kf42=\EFg, kf43=\EFh, kf44=\EFi,
	kf45=\EFj, kf46=\EFk, kf47=\EFm, kf48=\EFn, kf49=\EFo,
	kf5=\EF5, kf50=\EFp, kf51=\EFq, kf52=\EFr, kf53=\EFs,
	kf54=\EFt, kf55=\EFu, kf56=\EFv, kf57=\EFw, kf58=\EFx,
	kf59=\EFy, kf6=\EF6, kf60=\EFz, kf7=\EF7, kf8=\EF8, kf9=\EF9,
	khome=\E[H, kich1=\E[L, kind=\EF+, kll=\E[U, knp=\E[T,
	kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, op=\E[m, rc=\E[u,
	rev=\E[7m, ri=\E[T, rmcup=\E[2b\E[u\r\E[K, rmso=\E[m,
	rmul=\E[m, rs1=\Ec, sc=\E[s, sgr0=\E[0m, smcup=\E[s\E[1b,
	smso=\E[7m, smul=\E[4m, use=ecma+index, use=klone+color,

opennt-35|ntconsole-35|OpenNT-term35 compatible with color,
	lines#35, use=opennt,

opennt-50|ntconsole-50|OpenNT-term50 compatible with color,
	lines#50, use=opennt,

opennt-60|ntconsole-60|OpenNT-term60 compatible with color,
	lines#60, use=opennt,

opennt-100|ntconsole-100|OpenNT-term100 compatible with color,
	lines#100, use=opennt,

# OpenNT wide terminals
opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color,
	cols#125, use=opennt,

opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color,
	lines#35, use=opennt-w,

opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color,
	lines#50, use=opennt-w,

opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color,
	lines#60, use=opennt-w,

opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color,
	cols#132, use=opennt,

# OpenNT terminals with no smcup/rmcup (names match termcap entries)
interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color,
	rmcup@, smcup@, use=opennt,

opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color,
	lines#35, use=opennt-nti,

opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color,
	lines#50, use=opennt-nti,

opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color,
	lines#60, use=opennt-nti,

opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color,
	lines#100, use=opennt-nti,

######## COMMON TERMINAL TYPES
#
# This section describes terminal classes and maker brands that are still
# quite common, but have proprietary command sets not blessed by ANSI.
#

#### Altos
#
# Altos made a moderately successful line of UNIX boxes.  In 1990 they were
# bought out by Acer, a major Taiwanese manufacturer of PC-clones.
# Acer has a web site at http://www.acer.com.
#
# Altos descriptions from Ted Mittelstaedt <tedm@agora.rain.com> 4 Sep 1993
# His comments suggest they were shipped with the system.
#

# (altos2: had extension capabilities
#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
#	:XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
#	:YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\
#	:HL=^AP\r:SP=\E[i:\
#	:IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
#	:LO=\E[0q:LC=\E[5q:LL=\E[6q:\
# Comparison with the k* capabilities makes it obvious that the c* things are
# shift keys.  I have renamed them to keys 32 and up accordingly.  Also,
# :sr: was given as a boolean-- esr)
altos2|alt2|altos-2|Altos II,
	cols#80, it#8, lines#24, xmc#0,
	clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[1B, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
	if=/usr/share/tabset/vt100, il1=\E[L, ind=\n,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r,
	kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r,
	kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
	kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
	kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
	kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r,
	nel=\r\n, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smam=\E[?7h, smso=\E[7m, smul=\E[4m,
# (altos3: had extension capabilities
#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
#	:XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
#	:HL=^AP\r:SP=\E[i:\
#	:IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:
altos3|altos5|alt3|alt5|altos-3|altos-5|Altos III or V,
	blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
altos4|alt4|altos-4|Altos IV,
	use=wy50,
# (altos7: had extension capabilities:
#	:GG#0:GI=\EH8:GF=\EH7:\
#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
# Comparison with the k* capabilities makes it obvious that the c* things are
# shift keys.  I have renamed them to keys 32 and up accordingly.  I have
# also made this entry relative to adm12 in order to give it an <sgr>. The
# <invis> imported by use=adm+sgr may work, let me know. -- esr)
altos7|alt7|Altos VII,
	am, mir,
	cols#80, lines#24, xmc#0,
	acsc=j5k3l2m1n8q:t4u9v=w0x6, blink=\EG2, bold=\EGt,
	clear=\E+^^, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE,
	ind=\n, invis=\EG1,
	is2=\E`:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r,
	kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r,
	kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
	kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
	kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
	kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, kil1=^AJ\r, kind=^AO\r,
	knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=\r\n, ri=\Ej,
	rmir=\Er, smir=\Eq, use=adm+sgr,
altos7pc|alt7pc|Altos PC VII,
	kend=\ET, use=altos7,

#### Hewlett-Packard (hp)
#
#	Hewlett-Packard
#	8000 Foothills Blvd
#	Roseville, CA 95747
#	Vox: 1-(916)-785-4363	(Technical response line for VDTs)
#	     1-(800)-633-3600	(General customer support)
#
#
# As of March 1998, HP no longer has any terminals in production.
# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being
# supported (they still have parts). So are the 2392a and 2394a.
# See the WORKSTATION CONSOLES section for the 700s.
#

# Generic HP terminal - this should (hopefully) work on any HP terminal.
hpgeneric|hp|Hewlett-Packard generic terminal,
	OTbs, OTpt, am, da, db, mir, xhp,
	cols#80, lines#24, lm#0, vt#6,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM,
	ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL,
	ind=\n, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@,
	sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY,

hp110|Hewlett-Packard model 110 portable,
	lines#16, use=hpgeneric,

hp+pfk+cr|HP function keys with CR,
	kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r,
	kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r,

hp+pfk-cr|HP function keys w/o CR,
	kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev,
	kf8=\Ew,

# The hp2621s use the same keys for the arrows and function keys,
# but not separate escape sequences. These definitions allow the
# user to use those keys as arrow keys rather than as function
# keys.
hp+pfk+arrows|HP alternate arrow definitions,
	kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@,
	kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r,
	kll=\Eq\r, kri=\Es\r,

hp+arrows|HP arrow definitions,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
	kind=\ES, kll=\EF, kri=\ET,

# Generic stuff from the HP 262x series
#
hp262x|HP 262x terminals,
	xhp,
	blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES,
	invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
	kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET,
	krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
	sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
	    %;%?%p4%t%{65}%|%;%c,
	sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,

# Note: no <home> on HPs since that homes to top of memory, not screen.
# Due to severe 2621 braindamage, the only way to get the arrow keys to
# transmit anything at all is to turn on the function key labels
# with <smkx>, and even then the user has to hold down shift!
# The default 2621 turns off the labels except when it has to to
# enable the function keys. If your installation prefers labels
# on all the time, or off all the time (at the "expense" of the
# function keys), use 2621-nl or 2621-wl.
#
# Note: there are newer ROMs for 2621's that allow you to set
# strap A so the regular arrow keys xmit \EA, etc, as with the
# 2645. However, even with this strap set, the terminal stops
# xmitting if you reset it, until you unset and reset the strap!
# Since there is no way to set/unset the strap with an escape
# sequence, we don't use it in the default.
# If you like, you can use 2621-ba (brain-damaged arrow keys).
hp2621-ba|HP 2621 w/new rom and strap A set,
	rmkx@, smkx@, use=hp+arrows, use=hp2621,

# hp2621 with function labels. Most of the time they are off,
# but inside vi, the function key labels appear. You have to
# hold down shift to get them to xmit.
hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|HP 2621 w/labels,
	is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl,
hp2621-fl|HP 2621,
	xhp@, xon,
	pb#19200,
	cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>,
	ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@,
	sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD,
	use=hp+pfk+cr, use=hpgeneric,

# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p
hp2621p|HP 2621 with printer,
	mc4=\E&p13C, mc5=\E&p11C, use=hp2621,

hp2621p-a|hp2621p with fn as arrows,
	use=hp+pfk+arrows, use=hp2621p,

# hp2621 with k45 keyboard
hp2621-k45|hp2621k45|k45|HP 2621 with 45 keyboard,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,

# 2621 using all 48 lines of memory, only 24 visible at any time.
hp2621-48|HP 48 line 2621,
	lines#48,
	cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR,
	use=hp2621,

# 2621 with no labels ever. Also prevents vi delays on escape.
hp2621-nl|HP 2621 with no labels,
	kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@,
	use=hp2621-fl,

# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
# (wrong).
#
hp2621-nt|HP 2621 w/no tabs,
	ht@, use=hp2621,

# Hp 2624 B with 4 or 10 pages of memory.
#
# Some assumptions are made with this entry. These settings are
# NOT set up by the initialization strings.
#
# Port Configuration
#	RecvPace=Xon/Xoff
#	XmitPace=Xon/Xoff
#	StripNulDel=Yes
#
# Terminal Configuration
#	InhHndShk=Yes
#	InhDC2=Yes
#	XmitFnctn(A)=No
#	InhEolWrp=No
#
# Note: the 2624 DOES have a true <home>, believe it or not!
#
# The 2624 has an "error line" to which messages can be sent.
# This is CLOSE to what is expected for a "status line". However,
# after a message is sent to the "error line", the next carriage
# return is EATEN and the "error line" is turned back off again!
# So I guess we can't define <hs>, <eslok>, <wsl>, <dsl>, <fsl>, <tsl>.
#
# This entry supports emacs (and any other program that uses raw
# mode) at 4800 baud and less. I couldn't get the padding right
# for 9600.
#
# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr)
hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B,
	da, db,
	lm#96,
	flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, use=hp+labels, use=scrhp,

# This hp2626 entry does not use any of the fancy windowing stuff
# of the 2626.
#
# Indeed, terminfo does not yet handle such stuff. Since changing
# any window clears memory, it is probably not possible to use
# this for screen opt.
#
# ed is incredibly slow most of the time - I am guessing at the
# exact padding. Since the terminal uses xoff/xon this is intended
# only for cost computation, so that the terminal will prefer el
# or even dl1 which is probably faster!
#
# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only
# extra slow on the last line of the window.
#
# The padding probably should be changed.
#
hp2626|hp2626a|hp2626p|HP 2626,
	da, db,
	lm#0, pb#19200,
	ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>,
	is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk-cr,
	use=hp+labels, use=scrhp,

# This entry is for sysline. It allocates a 23 line window with
# a 115 line workspace for regular use, and a 1 line window for
# the status line.
#
# This assumes port 2 is being used.
# Turn off horizontal line, Create ws #1 with 115 lines,
# Create ws #2 with 1 line, Create window #1 lines 1-23,
# Create window #2 lines 24-24, Attach cursor to workspace #1.
# Note that this clears the tabs so it must be done by tset before
# it sets the tabs.
#
hp2626-s|HP 2626 using only 23 lines,
	eslok, hs,
	lines#23,
	fsl=\E&d@\E&w7f2p1I\E&w4f1I,
	is1=\E&q3t0{0H\s\E&w0f115n1I\s\E&w0f1n2I\s\E&w2f1i0d0u22l0S
	    \s\E&w2f2i0d23u23l0S\s\E&w7f2p1I\s\r,
	tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626,
# Force terminal back to 24 lines after being 23.
hp2626-ns|HP 2626 using all 24 lines,
	is1=\E&q3t0{0H\s\E&w0f118n1I\s\E&w0f1n2I\s\E&w2f1i0d0u23l0S
	    \s\E&w3f2I\s\E&w7f2p1I\s\r,
	use=hp2626,
# Various entries useful for small windows on 2626.
hp2626-12|Hewlett-Packard 2626 12 lines,
	lines#12, use=hp2626,
hp2626-12x40|Hewlett-Packard 2626 12 lines 40 columns,
	cols#40, lines#12, use=hp2626,
hp2626-x40|Hewlett-Packard 2626 40 columns,
	cols#40, use=hp2626,
hp2626-12-s|Hewlett-Packard 2626 11 lines plus status,
	lines#11, use=hp2626-s,

#
# hp2627 color tubes from University of Wisconsin
#
hp2627a-rev|HP 2627 with reverse video colors,
	cr=\r, cud1=\n, ht=^I, ind=\n,
	is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3
	    \r,
	kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmul=\E&v0S\E&d@,
	smul=\E&dD\E&v1S, use=hp2621-nl,
hp2627a|HP 2627 color terminal with no labels,
	cr=\r, cud1=\n, ht=^I, ind=\n,
	is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
	kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmso=\E&v0S,
	rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S,
	use=hp2621-nl,
hp2627c|HP 2627 color (cyan) terminal with no labels,
	cr=\r, cud1=\n, ht=^I, ind=\n,
	is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
	kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, use=hp2627a,

# hp2640a doesn't have the Y cursor addressing feature, and C is
# memory relative instead of screen relative, as we need.
#
hp2640a|HP 2640a,
	cup@, rmkx@, smkx@, use=hp2645,

hp2640b|hp2644a|HP 264x series,
	rmkx@, smkx@, use=hp2645,

# (hp2641a: removed unknown :gu: -- esr)
hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry,
	am, da, db, mir, xhp,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM,
	ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I,
	if=/usr/share/tabset/std, il1=\EL, ind=\n,
	is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
	rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
	vpa=\E&a%p1%2dY,

# This terminal should be used at 4800 baud or less. It needs padding for
# plain characters at 9600, I guessed at an appropriate cr delay.  It really
# wants ^E/^F handshaking, but that doesn't work well even if you write
# software to support it.
hp2645|hp45|HP 2645 series,
	pb#9600,
	blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
	ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL,
	kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB,
	rmkx=\E&s0A,
	sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
	    %;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c,
	sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
# You should use this terminal at 4800 baud or less.
hp2648|hp2648a|HP 2648a graphics terminal,
	clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>,
	dch1=\EP$<7>, ip=$<5>, use=hp2645,

# The HP 150 terminal is a fairly vanilla HP terminal, with the
# clreol standout problem. It also has graphics capabilities and
# a touch screen, which we don't describe here.
hp150|Hewlett Packard Model 150,
	OTbs, use=hp2622,

# HP 2382a terminals, "the little ones." They don't have any
# alternate character set support and sending out ^N/^O will
# leave the screen blank.
hp2382a|hp2382|Hewlett Packard 2382a,
	da, db,
	lh#1, lm#48,
	acsc@,
	pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%p2
	    %s,
	rmacs@,
	sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga
	    %+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+
	    %Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}
	    %+%e%{64}%;%;%c,
	sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp,

hp2621-a|hp2621a-a|hp2621 with fn as arrows,
	use=hp+pfk+arrows, use=hp2621-fl,

# newer hewlett packard terminals

newhpkeyboard|generic entry for HP extended keyboard,
	kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
	kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV,
	kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A,
	use=hp+pfk-cr,

newhp|generic entry for new Hewlett Packard terminals,
	am, bw, mir, xhp, xon,
	cols#80, lines#24, pb#4800,
	acsc=2[3@4>5I9(:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X:Y+Z*dHjGkTlRmFn
	     /q\,t5u6v8w7x.,
	bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=\r, cub1=^H,
	cud1=\n, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH,
	dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=\n,
	invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=\r\n,
	pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s,
	pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s,
	pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET,
	rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg,
	sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga
	    %+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+
	    %Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}
	    %+%e%{64}%;%;%c%?%p9%t\016%e\017%;,
	sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD,
	tbc=\E3, use=newhpkeyboard,

memhp|memory relative addressing for new HP ttys,
	vt#6,
	clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR,
	cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR,
	home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r,
	mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp,

scrhp|screen relative addressing for new HP ttys,
	clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC,
	cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC,
	cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR,
	home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA,
	mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp,

# (hp+labels: added label values from a BRL termcap -- esr)
hp+labels|"standard" label info for new HP ttys,
	lh#2, lw#8, nlab#8,
	lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8,
	pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%p2
	    %s,
	rmln=\E&j@, smln=\E&jB,

hp+printer|"standard" printer info for HP ttys,
	ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C,


# The new hp2621b is kind of a cross between the old 2621 and the
# new 262x series of machines. It has dip-switched options.
# The firmware has a bug in it such that if you give it a null
# length label, the following character is eaten!
hp2621b|HP 2621b with old style keyboard,
	lh#1, lm#48, lw#8, nlab#8,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
	kind=\ET, kll=\EF, kri=\ES,
	pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c
	    %;%p2%s\E%{111}%p1%+%c\r,
	smln=\E&jB, use=hp2621,

hp2621b-p|HP 2621b with printer,
	use=hp+printer, use=hp2621b,

# hp2621b - new 2621b with new extended keyboard
# these are closer to the new 26xx series than the other 2621b
hp2621b-kx|HP 2621b with extended keyboard,
	use=newhpkeyboard, use=hp2621b,

hp2621b-kx-p|HP 2621b with new keyboard & printer,
	use=hp+printer, use=hp2621b-kx,

# Some assumptions are made in the following entries.
# These settings are NOT set up by the initialization strings.
#
#    Port Configuration
# RecvPace=Xon/Xoff	XmitPace=Xon/Xoff	StripNulDel=Yes
#
#    Terminal Configuration
# InhHndShk(G)=Yes	InhDC2(H)=Yes
# XmitFnctn(A)=No		InhEolWrp=No
#
#
# Hp 2622a & hp2623a display and graphics terminals
#
hp2622|hp2622a|HP 2622,
	da, db,
	lm#0, pb#19200,
	is2=\E&dj@\r, use=hp+pfk-cr, use=hp+labels, use=scrhp,

# The 2623 is a 2622 with extra graphics hardware.
hp2623|hp2623a|HP 2623,
	use=hp2622,

hp2624b-p|hp2624b-4p-p|Hewlett Packard 2624 B with printer,
	use=hp+printer, use=hp2624,

# The hewlett packard B can have an optional extra 6 pages of memory.
hp2624-10p|hp2624a-10p|hp2624b-10p|Hewlett Packard 2624 B w/ 10 pages of memory,
	lm#240, use=hp2624,

hp2624b-10p-p|Hewlett Packard 2624 B w/ extra memory & printer,
	lm#240, use=hp2624b-p,

# Color manipulations for HP terminals
hp+color|HP with colors,
	ccc,
	colors#16, ncv#17, pairs#7,
	initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.
	      %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1
	      %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=
	      %t1%e.%p7%d%;z%p1%dI,
	oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5
	   I\E&v1b1c6I\E&v1x1y7I,
	op=\E&v0S, scp=\E&v%p1%dS,

# <is2> sets the screen to be 80 columns wide
hp2397a|hp2397|Hewlett Packard 2397A color terminal,
	is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color,

#  HP 700/44 Setup parameters:
# Terminal Mode		HP-PCterm
# Inhibit Auto Wrap	NO
# Status Line		Host Writable
# PC Character Set	YES
# Twenty-Five Line Mode	YES
# XON/XOFF		@128 or 64 (sc)
# Keycode Mode		NO   or YES (sc)
# Backspace Key		BS or BS/DEL
#
# <is2>		sets pcterm; autowrap; 25 lines; pc char set; prog DEL key;
# \E\\? does not turn off keycode mode
# <smsc>	sets alternate start/stop; keycode on
hpansi|hp700|Hewlett Packard 700/44 in HP-PCterm mode,
	am, eo, xenl, xon,
	cols#80, lines#25,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	bel=^G, cbt=\E[Z, clear=\E[2J\E[H, cr=\r, cub1=\E[D,
	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich1=\E[@, il1=\E[L, ind=\n,
	is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
	kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~,
	kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~,
	kpp=\E[5~, rmam=\E[?7l,
	rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
	smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
	smul=\E[4m, xoffc=g, xonc=e, use=vt220+cvis,
#
# (hp2392: copied <rmir> here from hpex -- esr)
hp2392|239x series,
	cols#80,
	cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r,
	kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r,
	kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
	rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
	use=hpsub,

hpsub|HP terminals -- capability subset,
	am, da, db, mir, xhp, xon,
	lines#24,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC,
	ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n,
	is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@,
	sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,

# hpex:
#	May be used for most 24 x 80 hp terminals,
# but has no padding added, so may allow runover in some terminals at high
# baud rates.  Will not work for hp2640a or hp2640b terminals, hp98x6 and
# hp98x5 terminal emulators or hp98x6 consoles.
#	Adds xy-cursor addressing, vertical cursor addressing, home,
# last line, and underline capabilities.
#
# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
# moved <rmir> here from hpsub -- esr)
hpex|HP extended capabilities,
	cr=\r, cud1=\n, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=\n, kbs=^H,
	kcub1=^H, kcud1=\n, nel=\r\n, rmir=\ER, rmul=\E&d@, smir=\EQ,
	smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub,

# From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996
hp2|hpex2|Hewlett-Packard extended capabilities newer version,
	am, da, db, mir, xhp,
	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0,
	bel=^G, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
	il1=\EL, ind=\n, kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP,
	kdl1=\EM, ked=\EJ, kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL,
	knp=\EU, kpp=\EV, krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
	pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A,
	rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
	sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+
	    %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
	sgr0=\E&d@\017, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
	smso=\E&dB, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
	use=hp+pfk-cr, use=hp+arrows,

# HP 236 console
# From: <ddavis@ic.berkeley.edu>
hp236|hp236 internal terminal emulator,
	OTbs, am,
	cols#80, lines#24,
	clear=\EF, cnorm=\EDE, cub1=^H,
	cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB,
	dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI,
	sgr0=\ECI, smso=\EBI,

# This works on a hp300 console running Utah 4.3 BSD
# From: Craig Leres <leres@okeeffe.berkeley.edu>
hp300h|HP Catseye console,
	OTbs, am, da, db, mir, xhp,
	cols#128, lines#51, lm#0, xmc#0,
	bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I,
	if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
	rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
	smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY,
# From: Greg Couch <gregc@ernie.berkeley.edu>
hp9837|hp98720|hp98721|HP 9000/300 workstations,
	OTbs, am, da, db, mir, xhp,
	cols#128, it#8, lines#46, lm#0,
	bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
	il1=\EL, ind=\n, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
	ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU,
	kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@,
	sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
	tbc=\E3, vpa=\E&a%p1%dY,
# HP 9845 desktop computer from BRL
# (hp9845: removed unknown capability :gu: -- esr)
hp9845|HP 9845,
	OTbs, am, da, db, eo, mir, xhp,
	cols#80, lines#21,
	OTbc=\ED, clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM,
	ed=\EJ, el=\EK, if=/usr/share/tabset/std, il1=\EL,
	rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
# (hp98550: replaced /usr/share/tabset/9837 with std because <it#8>,<hts=\E1>;
# added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
hp98550|hp98550a|HP 9000 Series 300 color console,
	OTbs, am, da, db, mir, xhp,
	cols#128, it#8, lines#49, lm#0,
	acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR,
	clear=\EH\EJ, cnorm=\E*dQ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
	if=/usr/share/tabset/std, il1=\EL, ind=\n, invis=\E&ds,
	kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ,
	kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, kll=\EF, knp=\EU,
	kpp=\EV, krmir=\ER, ktbc=\E3, rev=\E&dJ, rmacs=^O, rmir=\ER,
	rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N,
	smir=\EQ, smkx=\E&s1A, smso=\E&dJ, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows,

# From: Martin Trusler
hp98550-color|hp98550a-color|HP 9000 Series 300 color console,
	OTbs, am, ccc, da, db, km, mir, xhp,
	colors#8, cols#128, it#8, lh#2, lines#49, lm#0, lw#8, nlab#8,
	pairs#8, xmc#0,
	acsc=+>\,<-\^.v0\374``a\374f\372g\376h\374j+k+l+m+n+o-q-s-t+
	     u+v+w+x|y<z>{*|!}\273~\362,
	bel=^G, bold=\E&dD, cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
	dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, home=\E&a0y0C,
	hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\ES,
	initp=\E&v0m%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.
	      %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1
	      %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=
	      %t1%e.%p7%d%;z%p1%dI,
	is1=\EH\EJ, kbs=^H, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ,
	kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, kll=\EF, knp=\EU,
	kpp=\EV, krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
	oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5
	   I\E&v1b1c6I\E&v1x1y7I,
	op=\E&v0S, pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET,
	rmacs=^O, rmam=\E&s1C, rmcup=\E&s0A, rmir=\ER, rmkx=\E&s0A,
	rmln=\E&j@, rmm=\E&k0I, rmso=\E&d@, rmul=\E&d@, rs1=\EE,
	scp=\E&v%p1%dS,
	sgr=\E&d%p1%p3%|%{2}%*%p2%p6%|%{4}%*%+%{64}%+%c%?%p9%t%'
	    \016'%c%e%'\017'%c%;,
	sgr0=\E&d@\017, smacs=^N, smam=\E&s0C, smcup=\E&s1A,
	smir=\EQ, smkx=\E&s1A, smln=\E&jB, smm=\E&k1I, smso=\E&dB,
	smul=\E&dD, tbc=\E3, u6=\Ea%dc%dR\r, u7=\Ea,
	u8=\E%[0123456789/], u9=\E*s1\^, vpa=\E&a%p1%dY,
	use=hp+pfk-cr, use=hp+arrows,

# From: Victor Duchovni <vic@fine.princeton.edu>
# (hp700-wy: removed obsolete ":nl=^J:";
# replaced /usr/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr)
hp700-wy|HP700/41 emulating wyse30,
	OTbs, am, bw, mir, msgr,
	cols#80, it#8, lines#24, xmc#1,
	cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1,
	if=/usr/share/tabset/stdcrt, il1=\EE$<0.7*/>,
	is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=^?, kcbt=\EI,
	kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY,
	kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K,
	ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>,
	sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>,
	smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c,
hp70092|hp70092a|hp70092A|HP 700/92,
	am, da, db, xhp,
	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8,
	acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA,
	bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
	dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I,
	hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP,
	kdl1=\EM, ked=\EJ, kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL,
	kll=\EF, knp=\EU, kpp=\EV, krmir=\ER, ktbc=\E3, rev=\E&dB,
	ri=\ET, rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@,
	rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N, smir=\EQ,
	smkx=\E&s1A, smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows,

bobcat|sbobcat|HP 9000 model 300 console,
	am, da, db, mir, xhp,
	cols#128, it#8, lines#47, xmc#0,
	cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP,
	dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I,
	il1=\EL$<10*/>, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=\r\n, rmir=\ER,
	rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ,
	smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>,
gator-t|HP 9000 model 237 emulating extra-tall AAA,
	lines#94, use=gator,
gator|HP 9000 model 237 emulating AAA,
	bw, km, mir, ul,
	cols#128, it#8, lines#47,
	bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, il=\E[%p1%dL$<1*/>,
	il1=\E[L, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
	rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
gator-52|HP 9000 model 237 emulating VT52,
	cols#128, lines#47, use=vt52-basic,
gator-52t|HP 9000 model 237 emulating extra-tall VT52,
	lines#94, use=gator-52,

#### Honeywell-Bull
#
# From: Michael Haardt <michael@gandalf.moria> 11 Jan 93
#

# Honeywell Bull terminal.  Its cursor and function keys send single
# control characters and it has standout/underline glitch.  Most programs
# do not like these features/bugs.  Visual bell is realized by flashing the
# "keyboard locked" LED.
dku7003-dumb|Honeywell Bull DKU 7003 dumb mode,
	cols#80, lines#25,
	clear=^]^_, cr=\r, cub1=^Y, cud1=^K, cuf1=^X,
	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K,
	flash=\E[2h\E[2l, home=^], ht=^I, ind=\n, kbs=^H, kcub1=^Y,
	kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=\r\n,
dku7003|Honeywell Bull DKU 7003 all features described,
	msgr,
	xmc#1,
	blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
	use=dku7003-dumb,

#### Lear-Siegler (LSI adm)
#
# These guys are long since out of the terminals business, but
# in 1995 many current terminals still have an adm type as one of their
# emulations (usually their stupidest, and usually labeled adm3, though
# these `adm3' emulations normally have adm3a+ capabilities).
#
# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a
# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator')
# was being held to ground would trigger a send of the top line on the screen.
# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22
# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>,
# for clearing up this point.)

adm1a|adm1|LSI adm1a,
	am,
	cols#80, lines#24,
	bel=^G, clear=\E;$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
	ind=\n,
adm2|LSI adm2,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=\n,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
# (adm3: removed obsolete ":ma=^K^P:" -- esr)
adm3|LSI adm3,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, ind=\n,
# The following ADM-3A switch settings are assumed for normal operation:
#	SPACE		U/L_DISP	CLR_SCRN	24_LINE
#	CUR_CTL		LC_EN		AUTO_NL		FDX
# Other switches may be set for operator convenience or communication
# requirements.  I recommend
#	DISABLE_KB_LOCK	LOCAL_OFF	103		202_OFF
#	ETX_OFF		EOT_OFF
# Most of these terminals required an option ROM to support lower case display.
# Open the case and look at the motherboard; if you see an open 24-pin DIP
# socket, you may be out of luck.
#
# (adm3a: some capabilities merged in from BRl entry -- esr)
adm3a|LSI adm3a,
	OTbs, am,
	cols#80, lines#24,
	OTma=^K^P, OTnl=\n, bel=^G, clear=\032$<1/>, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, home=^^, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, rs2=^N,
adm3a+|adm3a plus,
	kbs=^H, use=adm3a,
# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
adm5|LSI adm5,
	xmc#1,
	bel=^G, cr=\r, cud1=\n, ed=\EY, el=\ET, kbs=^H, khome=^^,
	rmso=\EG, smso=\EG, use=adm3a+,
# A lot of terminals other than adm11s use these.  Wherever you see
# use=adm+sgr with some of its capabilities disabled, try the
# disabled ones.  They may well work but not have been documented or
# expressed in the using entry.  We'd like to cook up an <sgr> but the
# <rmacs>/<smacs> sequences of the using entries vary too much.
adm+sgr|adm style highlight capabilities,
	invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0,
	smso=\EG4, smul=\EG8,
# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL
# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs>
# <khome> from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>.  <clear> could also
# be ^Z, according to his entry.
# (adm11: <smul>=\EG4 was obviously erroneous because it also said
# <rev>=\EG4.  Looking at other ADMs confirms this -- esr)
adm11|LSI ADM-11,
	OTbs, am, hs,
	OTkn#8, cols#80, lines#24,
	OTnl=\n, bel=^G, blink=\EG2, clear=\E*, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I,
	kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, khome=^^, nel=\r\n, tsl=\EF\E),
	use=adm+sgr,
# From: Andrew Scott Beals <bandy@lll-crg.ARPA>
# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996
# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :".  This formerly had
# <is2>=\Eq but that looked wrong; this <is2> is from Dave Yost <esquire!yost>
# via BRL.  That entry asserted <xmc#1>, but I've left that out because
# neither earlier nor later ADMSs have it -- esr)
#
# You will need to get into the supervisor setup before you can set
# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should
# see a lot more setup options.
#
# While in supervisor setup you can also use following codes:
#
# Ctrl-P Personality character selections (configure for example what
#        arrow keys send, if I recall correctly)
# Ctrl-T tabs 1-80   use left&right to move and up to set and
# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor
# Ctrl-B Binary setup (probably not needed. I think that everything can
#        be set using normal setup)
# Ctrl-A Answerback mode (enter answerback message)
# Ctrl-U User friendly mode (normal setup)
# Ctrl-D Defaults entire setup and function keys from EPROM tables
# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds.
# Ctrl-R Reads both setup and functions keys from NVM.
# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status
#
# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to
# RTS/CTS used nowadays with virtually every modem and computer. 19200
# bps works fine with hardware flow control.
#
# The following null-modem cable should fix this and enable you to use
# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also
# set ADM-12+ for DTR handshaking from supervisor setup.
#
# PC Serial   ADM-12+
#  --------   -------
#         2 - 3
#         3 - 2
#         4 - 5
#         5 - 20
#       6,8 - 4
#         7 - 7
#        20 - 6,8
#
adm12|LSI adm12,
	OTbs, OTpt, am, mir,
	OTug#1, cols#80, it#8, lines#24,
	bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE,
	is2=\E0\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s
	    \s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s
	    \s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0,
	use=adm+sgr,
# (adm20: removed obsolete ":kn#7:" -- esr)
adm20|Lear Siegler adm20,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cuf1=^L,
	cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE,
	kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(,
	sgr0=\E(, smso=\E),
adm21|Lear Siegler adm21,
	xmc#1,
	bel=^G, cr=\r, cud1=\n, dch1=\EW, dl1=\ER$<30*>, ed=\EY,
	el=\ET, ich1=\EQ, il1=\EE$<30*>, ind=\n, invis@, kbs=^H,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
	use=adm+sgr, use=adm3a,
# (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
# removed bogus-looking \200 from before <cup>. -- esr)
adm22|LSI adm22,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE,
	is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0
	    \0\0\0\0,
	kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
	lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E),
# ADM 31 DIP Switches
#
# This information comes from two versions of the manual for the
# Lear-Siegler ADM 31.
#
# Main board:
#                  rear of case
#   +-||||-------------------------------------+
#   + S1S2                              ||S    +
#   +                                   ||3    +
#   +                                          +
#   +                                ||S       +
#   +                                ||4       +
#   +                                          +
#   +                                          +
#   +                                          +
#   +                                          +
#   +                                          +
# +-+                                          +-+
# +                                              +
# +                               S5 S6 S7       +
# +                               == == ==       +
# +----------------------------------------------+
#            front of case (keyboard)
#
#  S1 - Data Rate - Modem
#  S2 - Data Rate - Printer
# ------------------------
# Data Rate   Setting
# -------------------
# 50          0 0 0 0
# 75          1 0 0 0
# 110         0 1 0 0
# 134.5       1 1 0 0
# 150         0 0 1 0
# 300         1 0 1 0
# 600         0 1 1 0
# 1200        1 1 1 0
# 1800        0 0 0 1
# 2000        1 0 0 1
# 2400        0 1 0 1
# 3600        1 1 0 1
# 4800        0 0 1 1
# 7200        1 0 1 1
# 9600        0 1 1 1
# x           1 1 1 1
#
# S3 - Interface/Printer/Attributes
# ---------------------------------
# Printer Busy Control
# sw1   sw2   sw3
# ---------------
# off   off   off   Busy not active, CD disabled
# off   off   on    Busy not active, CD enabled
# off   on    off   Busy active on J5-20, CD disabled
# on    off   off   Busy active on J5-19, CD disabled - Factory Set.
# on    off   on    Busy active on J5-19, CD enabled
#
# sw4   Used in conjunction with S4 for comm interface control - Fact 0
#
# sw5   Secondary Channel Control (Hardware implementation only) - Fact 0
#
# sw6   ON enables printer BUSY active LOW - Factory Setting
#       OFF enables printer BUSY active HIGH - If set to this, ADM31 senses
#
# sw7   ON - steady cursor - Factory Setting
#       OFF - blinking cursor
#
# sw8   ON causes selected attribute character to be displayed
#       OFF causes SPACE to be displayed instead - Factory Setting
#
# S4 - Interface
# --------------
# Modem Interface
# S3    S4    S4    S4    S4
# sw4   sw1   sw2   sw3   sw4
# ---------------------------
# OFF   ON    OFF   ON    OFF   Enable RS-232C interface, Direct Connect and
#                               Current Loop disabled - Factory Setting
# ON    ON    OFF   ON    OFF   Enable Current Loop interface, Direct Connect
#                               disabled
# OFF   OFF   ON    OFF   ON    Enable Direct Connect interface, RS-232C and
#                               Current Loop Disabled
#
# sw5   ON disables dot stretching mode - Factory Setting
#       OFF enables dot stretching mode
# sw6   ON enables blanking function
#       OFF enables underline function - Factory Setting
# sw7   ON causes NULLS to be displayed as NULLS
#       OFF causes NULLS to be displayed as SPACES - Factory Setting
#
# S5 - Word Structure
# -------------------
# sw1   ON enables BREAK key - Factory Setting
#       OFF disables BREAK key
# sw2   ON selects 50Hz monitor refresh rate
#       OFF selects 60Hz monitor refresh rate - Factory Setting
#
# Modem Port Selection
# sw3   sw4   sw5
# ---------------
# ON    ON    ON    Selects 7 DATA bits, even parity, 2 STOP bits
# OFF   ON    ON    Selects 7 DATA bits, odd  parity, 2 STOP bits
# ON    OFF   ON    Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set.
# OFF   OFF   ON    Selects 7 DATA bits, odd  parity, 1 STOP bit
# ON    ON    OFF   Selects 8 DATA bits, no   parity, 2 STOP bits
# OFF   ON    OFF   Selects 8 DATA bits, no   parity, 1 STOP bit
# ON    OFF   OFF   Selects 8 DATA bits, even parity, 1 STOP bit
# OFF   OFF   OFF   Selects 8 DATA bits, odd  parity, 1 STOP bit
#
# sw6   ON  sends bit 8 a 1 (mark)
#       OFF sends bit 8 as 0 (space) - Factory Setting
# sw7   ON  selects Block Mode
#       OFF selects Conversation Mode - Factory Setting
# sw8   ON  selects Full Duplex operation
#       OFF selects Half Duplex operation - Factory Setting
#
# S6 - Printer
# ------------
# sw1, sw2, sw6, sw7   Reserved - Factory 0
#
# Printer Port Selection
# same as Modem above, bit 8 (when 8 DATA bits) is always = 0
#
# sw8   ON   enables Printer Port
#       OFF disables Printer Port - Factory Setting
#
# S7 - Polling Address
# --------------------
# sw1-7 Establish ASCII character which designates terminal polling address
#       ON  = logic 0
#       OFF = logic 1 - Factory Setting
# sw8   ON   enables Polling Option
#       OFF disables Polling Option - Factory Setting
#
#
# On some older adm31s, S4 does not exist, and S5-sw6 is not defined.
#
# This adm31 entry uses underline as the standout mode.
# If the adm31 gives you trouble with standout mode, check the DIP switch in
# position 6, bank @c11, 25% from back end of the circuit board.  Should be
# OFF.  If there is no such switch, you have an old adm31 and must use oadm31.
# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
adm31|LSI adm31 with sw6 set for underline mode,
	OTbs, am, mir,
	cols#80, lines#24,
	bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=\n, is2=\Eu\E0,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0,
	rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1,
adm31-old|o31|old adm31,
	rmul@, smso=\EG4, smul@, use=adm31,
# LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL
adm36|LSI ADM36,
	OTbs, OTpt,
	OTkn#4,
	if=/usr/share/tabset/vt100,
	is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, use=vt100+4bsd,
# (adm42: removed obsolete ":ma=^K^P:" -- esr)
adm42|LSI adm42,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I,
	il1=\EE$<270>, ind=\n, invis@, ip=$<6*>, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, khome=^^, pad=^?, rmir=\Er, rmul@,
	smir=\Eq, smul@, use=adm+sgr,
# The following termcap for the Lear Siegler ADM-42 leaves the
# "system line" at the bottom of the screen blank (for those who
# find it distracting otherwise)
adm42-ns|LSI adm-42 with no system line,
	cbt=\EI\EF \011, clear=\E;\EF \011,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011,
	dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011,
	el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011,
	smir=\Eq\EF \011, use=adm42,
# ADM 1178 terminal -- rather like an ADM-42.  Manual is dated March 1 1985.
# The insert mode of this terminal is commented out because it's broken for our
# purposes in that it will shift the position of every character on the page,
# not just the cursor line!
# From: Michael Driscoll <fenris@lightspeed.net> 10 July 1996
adm1178|1178|LSI adm1178,
	am,
	cols#80, lines#24, xmc#1,
	bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET,
	home=^^, ht=^I, il1=\EE, ind=\n, ip=$<6*/>, kbs=^H, kcub1=^H,
	kcud1=\n, nel=\r\n, pad=^?, rev=\EG4, rmso=\EG0, rmul=\EG0,
	sgr0=\E), smso=\EG4, smul=\EG1,

#### Prime
#
# Yes, Prime made terminals.  These entries were posted by Kevin J. Cummings
# <cummings@primerd.prime.com> on 14 Dec 1992 and lightly edited by esr.
# Prime merged with ComputerVision in the late 1980s; you can reach them at:
#
#	ComputerVision Services
#	500 Old Connecticut Path
#	Framingham, Mass.
#

# Standout mode is dim reverse-video.
pt100|pt200|wren|fenix|Prime pt100/pt200,
	am, bw, mir, msgr,
	cols#80, it#8, lines#24,
	cbt=\E[Z, clear=\E?, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA,
	cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M,
	ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P,
	home=\E$B, ht=^I, il1=\E[L\E[t, ind=\n, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=\r\n,
	rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m,
	smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12
	      l\E[1Q,
	smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
pt100w|pt200w|wrenw|fenixw|Prime pt100/pt200 in 132-column mode,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH, use=pt100,
pt250|Prime PT250,
	rmso@, smso@, use=pt100,
pt250w|Prime PT250 in 132-column mode,
	rmso@, smso@, use=pt100w,

#### Qume (qvt)
#
#	Qume, Inc.
#	3475-A North 1st Street
#	San Jose CA 95134
#	Vox: (800)-457-4447
#	Fax: (408)-473-1510
#	Net: josed@techsupp.wyse.com (Jose D'Oliveira)
#
# Qume was bought by Wyse, but still (as of early 1995) has its own support
# group and production division.
#
# Discontinued Qume models:
#
# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+
# built to replace them, and a qvt119+ which was a 101+ with available wide
# mode (132 columns).  There was a qvt103 which added vt100/vt131 emulations
# and an ANSI-compatible qvt203 that replaced it.  Qume started producing
# ANSI-compatible terminals with the qvt323 and qvt61.
#
# Current Qume models (as of February 1995):
#
# All current Qume terminals have ANSI-compatible operation modes.
# Qume is still producing the qvt62, which features emulations for other
# popular lines such as ADDS, and dual-host capabilities.  The qvt82 is
# designed for use as a SCO ANSI terminal.  The qvt70 is a color terminal
# with many emulations including Wyse370, Wyse 325, etc.  Their newest
# model is the qvt520, which is vt420-compatible.
#
# There are some ancient printing Qume terminals under `Daisy Wheel Printers'
#
# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its
# setup mode.  Shift-s should be a configuration save to NVRAM.

qvt101|qvt108|Qume qvt 101 and QVT 108,
	xmc#1, use=qvt101+,

# This used to have <cvvis=\E.2> but no <cnorm> or <civis>.  The BSD termcap
# file had <cvvis=\EM4 \200\200\200>.  I've done the safe thing and yanked
# both. The <rev> is from BSD, which also claimed bold=\E( and dim=\E).
# What seems to be going on here is that this entry was designed so that
# the normal highlight is bold and standout is dim plus something else
# (reverse-video maybe?  But then, are there two <rev> sequences?)
#
# Added kdch1, kil1, kdl1 based on screenshot -TD:
#	http://www.vintagecomputer.net/qume/qvt-108/qume_qvt-108_keyboard.jpg
qvt101+|qvt101p|Qume qvt 101 PLUS product,
	am, bw, hs, ul,
	cols#80, lines#24, xmc#0,
	bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=\n,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
	flash=\Eb$<200>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=\n, invis@, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r,
	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
	kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@,
	rmso=\E(, smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
qvt102|Qume qvt 102,
	cnorm=\E., use=qvt101,
# (qvt103: added <rmam>/<smam> based on init string -- esr)
qvt103|Qume qvt 103,
	am, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	hts=\EH, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8,
	rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>,
	rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;m$<2>,
	sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
qvt103-w|Qume qvt103 132 cols,
	cols#132, lines#24,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
qvt119+|qvt119p|qvt119|Qume qvt 119 and 119PLUS terminals,
	am, hs, mir, msgr,
	cols#80, lines#24, xmc#0,
	bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey,
	el=\Et, flash=\En0$<200>\En1, fsl=\r, home=^^, ht=^I,
	hts=\E1, il1=\EE, ind=\n, is2=\EDF\EC\EG0\Er\E(\E%EX,
	kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^AI\r,
	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8,
	tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines,
	lines#25, use=qvt119+,
qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode,
	cols#132,
	is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+,
qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25,
	lines#25, use=qvt119+,
qvt203|qvt203+|Qume qvt 203 Plus,
	dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
	ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
	kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103,
qvt203-w|qvt203-w-am|Qume qvt 203 PLUS in 132 cols (w/advanced video),
	cols#132, lines#24,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203,
#
#	Since a command is present for enabling 25 data lines,
#	a specific terminfo entry may be generated for the 203.
#	If one is desired for the QVT 119 PLUS then 25 lines must
#	be selected in the status line (setup line 9).
#
qvt203-25|QVT 203 PLUS with 25 by 80 column mode,
	cols#80, lines#25,
	is2=\E[=40h\E[?3l, use=qvt203,
qvt203-25-w|QVT 203 PLUS with 25 by 132 columns,
	cols#132, lines#25,
	rs2=\E[?3h\E[=40h, use=qvt203,

#### TeleVideo (tvi)
#
#	TeleVideo
#	550 East Brokaw Road
#	PO Box 49048    95161
#	San Jose CA 95112
#	Vox: (408)-954-8333
#	Fax: (408)-954-0623
#
#
# These require incredible amounts of padding.
#
# All of these terminals (912 to 970 and the tvipt) are discontinued.  Newer
# TeleVideo terminals are ANSI and PC-ANSI compatible.

tvi803|TeleVideo 803,
	clear=\E*$<10>, use=tvi950,

# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86
# Switch settings are:
#
# S1  1 2 3 4
#     D D D D  9600
#     D D D U    50
#     D D U D    75
#     D D U U   110
#     D U D D   135
#     D U D U   150
#     D U U D   300
#     D U U U   600
#     U D D D  1200
#     U D D U  1800
#     U D U D  2400
#     U D U U  3600
#     U U D D  4800
#     U U D U  7200
#     U U U D  9600
#     U U U U 19200
#
# S1  5 6 7 8
#     U D X D  7N1 (data bits, parity, stop bits) (X means ignored)
#     U D X U  7N2
#     U U D D  7O1
#     U U D U  7O2
#     U U U D  7E1
#     U U U U  7E2
#     D D X D  8N1
#     D D X U  8N2
#     D U D D  8O1
#     D U U U  8E2
#
# S1  9  Autowrap
#     U  on
#     D  off
#
# S1 10  CR/LF
#     U  do CR/LF when CR received
#     D  do CR when CR received
#
# S2  1  Mode
#     U  block
#     D  conversational
#
# S2  2  Duplex
#     U  half
#     D  full
#
# S2  3  Hertz
#     U  50
#     D  60
#
# S2  4  Edit mode
#     U  local
#     D  duplex
#
# S2  5  Cursor type
#     U  underline
#     D  block
#
# S2  6  Cursor down key
#     U  send ^J
#     D  send ^V
#
# S2  7  Screen colour
#     U  green on black
#     D  black on green
#
# S2  8  DSR status (pin 6)
#     U  disconnected
#     D  connected
#
# S2  9  DCD status (pin 8)
#     U  disconnected
#     D  duplex
#
# S2 10  DTR status (pin 20)
#     U  disconnected
#     D  duplex
# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added <khome>, <cub1>, <cud1>,
# <ind>, <hpa>, <vpa>, <am>, <msgr> from SCO entry -- esr)
tvi910|TeleVideo model 910,
	OTbs, am, msgr,
	cols#80, it#8, lines#24, xmc#1,
	bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
	home=\E=^A^A, hpa=\E]%p1%{32}%+%c, ht=^I,
	if=/usr/share/tabset/stdcrt, ind=\n, invis@, kbs=^H,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
# From: Alan R. Rogers <rogers%albany@csnet-relay>
# as subsequently hacked over by someone at SCO
# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr)
#
# Here are the 910+'s DIP switches (U = up, D = down, X = don't care):
#
# S1  1 2 3 4:
#     D D D D  9600     D D D U    50     D D U D    75     D D U U   110
#     D U D D   135     D U D U   150     D U U D   300     D U U U   600
#     U D D D  1200     U D D U  1800     U D U D  2400     U D U U  3600
#     U U D D  4800     U U D U  7200     U U U D  9600     U U U U 19200
#
# S1  5 6 7 8:
#     U D X D  7N1     U D X U  7N2     U U D D  7O1     U U D U  7O2
#     U U U D  7E1     U U U U  7E2     D D X D  8N1     D D X U  8N2
#     D U D D  8O1     D U U U  8E2
#
# S1  9  Autowrap            (U = on, D = off)
# S1 10  CR/LF               (U = CR/LF on CR received, D = CR on CR received)
# S2  1  Mode                (U = block, D = conversational)
# S2  2  Duplex              (U =  half, D = full)
# S2  3  Hertz               (U = 50, D = 60)
# S2  4  Edit mode           (U = local, D = duplex)
# S2  5  Cursor type         (U = underline, D = block)
# S2  6  Cursor down key     (U = send ^J, D = send ^V)
# S2  7  Screen colour       (U = green on black, D = black on green)
# S2  8  DSR status (pin 6)  (U = disconnected, D = connected)
# S2  9  DCD status (pin 8)  (U = disconnected, D = connected)
# S2 10  DTR status (pin 20) (U = disconnected, D = connected)
#
tvi910+|TeleVideo 910+,
	dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>,
	kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r,
	kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r,
	ll=\E=7\s, use=tvi910,

# (tvi912: removed obsolete ":ma=^K^P^L :", added  <flash> and
# <khome> from BRL entry -- esr)
tvi912|tvi914|tvi920|old TeleVideo 912/914/920,
	OTbs, OTpt, am, msgr,
	cols#80, it#8, lines#24, xmc#1,
	bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^,
	ht=^I, hts=\E1, ich1=\EQ, if=/usr/share/tabset/stdcrt,
	il1=\EE$<33*>, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r,
	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
	kf9=^AH\r, khome=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El,
	tbc=\E3,
# We got some new tvi912c terminals that act really weird on the regular
# termcap, so one of our gurus worked this up. Seems that cursor
# addressing is broken.
tvi912cc|tvi912 at Cowell College,
	cup@, use=tvi912c,

# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C
# From: Benjamin C. W. Sittler
#
# Someone has put a scanned copy of the manual online at:
#     http://vt100.net/televideo/912b-om/
#     (https://vt100.net/manx/details/6,5484)
#
# These terminals were produced ca. 1979, and had a 12" monochrome
# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit
# ASCII, and were generally similar to adm3a but with attributes
# (including some with magic cookies), fancy half-duplex mode, and
# different bugs.
#
# Some operations require truly incredible amounts of padding. The
# insert_line (<il1>) and delete_line (<dl1>) operations in particular
# are so slow as to be nearly unusable.
#
# There may or may not have been a separate, earlier series of 912/920
# terminals (without the "B" and "C" suffix); I have never seen one,
# and the manual only describes the "B" and "C" series. The 912 and 920
# are quite distinct from the 914 and 924, which were much nicer non-
# magic-cookie terminals similar to the 950.
#
# This is a new description for the following TeleVideo terminals,
# distinguished chiefly by their keyboards:
#
#   TVI-912B - very odd layout, no function keys (84 keys)
#   TVI-920B - typewriter layout, no function keys (103 keys)
#   TVI-912C - very odd layout, function keys F1-F11 (82 keys)
#   TVI-920C - typewriter layout, function keys F1-F11 (101 keys)
#
# To choose a setting for the TERM variable, start with the model:
#
#    Model  || base name
# ----------||-----------
#  TVI-912B || tvi912b
#  TVI-912C || tvi912c
#  TVI-920B || tvi920b
#  TVI-920C || tvi920c
#
# Then add a suffix from the following table describing installed options
# and how you'd like to use the terminal:
#
#   Use Video | Second | Visual |  Magic  |  Page || feature
#  Attributes |  Page  |  Bell  | Cookies | Print || suffix
# ------------|--------|--------|---------|-------||---------
#      No     |   No   |  N/A   |   N/A   |   No  || -unk
#      No     |   No   |  N/A   |   N/A   |  Yes  || -p
#      No     |  Yes   |   No   |   N/A   |   No  || -2p-unk
#      No     |  Yes   |   No   |   N/A   |  Yes  || -2p-p
#      No     |  Yes   |  Yes   |   N/A   |   No  || -vb-unk
#      No     |  Yes   |  Yes   |   N/A   |  Yes  || -vb-p
#     Yes     |   No   |  N/A   |    No   |  N/A  ||
#     Yes     |   No   |  N/A   |   Yes   |  N/A  || -mc
#     Yes     |  Yes   |   No   |    No   |  N/A  || -2p
#     Yes     |  Yes   |   No   |   Yes   |  N/A  || -2p-mc
#     Yes     |  Yes   |  Yes   |    No   |  N/A  || -vb
#     Yes     |  Yes   |  Yes   |   Yes   |  N/A  || -vb-mc
#
# So e.g. a model 920 C with second page memory option, visual bell
# and no magic cookies would be tvi920c-vb; a model 912 B without the
# second page memory option and using magic cookies would be
# tvi912b-mc
#
# PADDING
#
# At 9600 baud, the terminal is prone to overflow its input buffer
# during complex operations (insert/delete
# character/line/screen/page), and it does not signal this over the
# RS232 cable. The typical symptom of an overrun is that the terminal
# starts beeping, and output becomes garbled.
#
# The padding delays in this terminfo were derived using tack(1)
# running on a Linux box connected to a TVI-920C with a later-model
# (A49C1-style) ROM running at 9600 baud, so your mileage may
# vary. The numbers below seem to give the terminal enough time so
# that it doesn't overflow its input buffer and start losing
# characters.
#
# KEYS
#
# If you want to use the FUNCT key on a tvi912[bc], use the
# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from
# the following table (these also work on the 920 series):
#
# Unshifted Function Keys:
#
#  Key | capname|| Equivalent
# -----|--------||------------
#   F1 |  <kf1> || FUNCT + @
#   F2 |  <kf2> || FUNCT + A
#   F3 |  <kf3> || FUNCT + B
#   F4 |  <kf4> || FUNCT + C
#   F5 |  <kf5> || FUNCT + D
#   F6 |  <kf6> || FUNCT + E
#   F7 |  <kf7> || FUNCT + F
#   F8 |  <kf8> || FUNCT + G
#   F9 |  <kf9> || FUNCT + H
#  F10 | <kf10> || FUNCT + I
#  F11 | <kf11> || FUNCT + J
#
# Shifted Function Keys:
#
#  SHIFT + Key | capname|| Equivalent
# -------------|--------||------------
#   SHIFT + F1 | <kf12> || FUNCT + `
#   SHIFT + F2 | <kf13> || FUNCT + a
#   SHIFT + F3 | <kf14> || FUNCT + b
#   SHIFT + F4 | <kf15> || FUNCT + c
#   SHIFT + F5 | <kf16> || FUNCT + d
#   SHIFT + F6 | <kf17> || FUNCT + e
#   SHIFT + F7 | <kf18> || FUNCT + f
#   SHIFT + F8 | <kf19> || FUNCT + g
#   SHIFT + F9 | <kf20> || FUNCT + h
#  SHIFT + F10 | <kf21> || FUNCT + i
#  SHIFT + F11 | <kf22> || FUNCT + j
#
# PORTS AND SWITCH SETTINGS
#
# Here are the switch settings for the TVI-912B/TVI-920B and
# TVI-912C/TVI-920C:
#
# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down:
# 2: 9600	3: 4800		4: 2400		5: 1200
# 6:  600	7:  300		8:  150		9:   75
# 10: 110
#
# S2 UART/Terminal options:
#		Up			Down
# 1:		Not used		Not allowed
# 2:	Alternate character set	  Standard character set
# 3:	    Full duplex		    Half duplex
# 4:	    50 Hz refresh	    60 Hz refresh
# 5:	      No parity		     Send parity
# 6:	     2 stop bits	     1 stop bit
# 7:	     8 data bits	     7 data bits
# 8:		Not used		Not allowed on Rev E or lower
# 9:	     Even parity	     Odd parity
# 10:	    Steady cursor	    Blinking cursor
#	(On Rev E or lower, use W25 instead of switch 10.)
#
# S5 UART/Terminal options:
#		Open			Closed
# 1:	P3-6 Not connected	DSR received on P3-6
# 2:	P3-8 Not connected	DCD received on P3-8
#
# 3 Open, 4 Open:		P3-20 Not connected
# 3 Open, 4 Closed:	DTR on when terminal is on
# 3 Closed, 4 Open:	DTR is connected to RTS
# 3 Closed, 4 Closed:	Not allowed
#
# 5 Closed:	HDX printer (hardware control) Rev. K with extension port off,
#		all data transmitted out of the modem port (P3) will also be
#		transmitted out of the printer port (P4).
#
# 6 Open, 7 Open:		Not allowed
# 6 Open, 7 Closed:	20ma current loop input
# 6 Closed, 7 Open:	RS232 input
# 6 Closed, 7 Closed:	Not allowed
#
# Jumper options:
# If the jumper is installed, the effect will occur (the next time the terminal
# is switched on).
#
# S4/W31:	Enables automatic LF upon receipt of CR from
#		remote or keyboard.
# S4/W32:	Enables transmission of EOT at the end of Send.  If not
#		installed, a carriage return is sent.
# S4/W33:	Disables automatic carriage return in column 80.
# S4/W34:	Selects Page Print Mode as initial condition.  If not
#		installed, Extension Mode is selected.
#
# NON-STANDARD CAPABILITIES
#
# Sending <u9> or <u7> returns a cursor position report in the format
# YX\r, where Y and X are as in <cup>. This format is described in
# <u8> and <u6>, but it's not clear how one should write an
# appropriate scanf string, since we need to subtract %' ' from the
# character after reading it. The <u9> capability is used by tack(1)
# to synchronize during padding tests, and seems to work for that
# purpose.
#
# This description also includes the obsolete termcap capabilities
# has_hardware_tabs (<OTpt>) and backspaces_with_bs (<OTbs>).
#
# FEATURES NOT YET DESCRIBED IN THIS TERMINFO
#
# The FUNCT modifier actually works with every normal key by sending
# ^AX\r, where X is the sequence normally sent by that key. This is a
# sort of meta key not currently describable in terminfo.
#
# There are quite a few other keys (especially on the 920 models,) but
# they are for the most part only useful in block mode.
#
# These terminals have lots of forms manipulation features, mainly
# useful in block mode, including "clear X to nulls" (vs. "clear X to
# spaces"; nulls are sentinels for "send X" operations); "send X"
# operations for uploading all or part of the screen; and block-mode
# editing keys (they don't send escape sequences, but manipulate video
# memory directly). Block mode is used for local editing, and protect
# mode (in conjunction with the "write protect" attribute,
# a.k.a. half-intensity outside of protect mode) is used to control
# which parts of the screen are edited/sent/printed (by <mc0>).
#
# There are at least two major families of ROM, "early" and
# A49B1/A49C1; the major difference seems to be that the latter ROMs
# support a few extra escape sequences for manipulating the off-screen
# memory page, and for sending whole pages back to the host (mainly
# useful in block mode.) The descriptions in this file don't use any
# of those sequences: set cursor position including page (\E-PYX,
# where P is \s for page 0 and ! for page 1 [actually only the LSB of
# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are
# as in <cup>); read cursor position (\E/), which is analogous to <u9>
# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX
# are as in <cup>, and some "send page" features mainly useful for
# forms manipulation.
#
# The keyboard enable (\E") and disable (\E#) sequences are unused,
# except that a terminal reset (<is2>) enables the keyboard.
#
# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew)
# enabled in <is2>, but auto-flip is very jarring so we don't use it.
#
# BUGS
#
# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed
# sequences (I infer that in some TeleVideo terminal they may invert
# and uninvert the display) so the <flash> sequence given here is a
# cheesy page-flip instead.
#
# The back_tab (<cbt>) sequence (\EI) doesn't work according to
# tack(1), so it is not included in the descriptions below.
#
# It's not clear whether auto_left_margin (<bw>) flag should be set
# for these terminals; tack says yes, so it is set here, but this
# differs from other descriptions I've seen.
#
# Extension print mode (<mc5>) echoes all characters to the printer
# port [in addition to displaying them] except for the page print mode
# sequence (<mc4>); this is a slight violation of the terminfo
# definition for <mc5> but I don't expect it to cause problems.  We
# reset to page print mode in <rs1> since it may have been enabled
# accidentally.
#
# The descriptions with plus signs (+) are building blocks.

tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes),
	OTbs, OTpt, am, bw,
	cols#80, it#8, lines#24,
	bel=^G, clear=\032$<50>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>,
	dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>,
	home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>,
	if=/usr/share/tabset/stdcrt, il1=\EE$<1*>$<100>,
	ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, kdch1=^?, kent=\r, khome=^^, mc4=\EA,
	mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r,
	u7=\E?, u8=%c%c\r, u9=\E?,

# This isn't included in the basic capabilities because it is
# typically unusable in combination with the full range of video
# attributes, since the magic cookie attributes turn into ASCII
# control characters, and the half-intensity ("protected") attribute
# converts all affected characters to spaces.

tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support,
	mc0=\EP,

# This uses half-intensity mode (<dim>) for standout (<smso>), and
# exposes no other attributes (half-intensity is the only attribute
# that does not generate a magic cookie.)

tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support,
	msgr,
	dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(,
	smso=\E),

# Full magic-cookie attribute support, with half-intensity reverse
# video for standout. Note that we add a space in the <dim> sequence
# to give a consistent magic-cookie count. Also note that <sgr> uses
# backspacing (in the TVI-supported order) to apply all requested
# attributes with only a single magic cookie.

tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support,
	xmc#1,
	blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek,
	rmul=\Em,
	sgr=\E%?%p1%p5%|%t)%e(%;\s\010\E%?%p1%p3%|%tj%ek%;\010\E%?
	    %p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;,
	sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El,

# This uses the second page memory option to save & restore screen
# contents. If your terminal is missing the option, this description
# should still work, but that has not been tested.

tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support,
	flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s,
	smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>,

# This simulates flashing by briefly toggling to the other page
# (kludge!)

tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support,
	bel=\EK$<100>\EK, use=tvi912b+2p,

# Function keys (<kf12> .. <kf22> are shifted <kf1> .. <kf11>)

tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support,
	kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^A`\r, kf13=^Aa\r,
	kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, kf17=^Ae\r, kf18=^Af\r,
	kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, kf21=^Ai\r, kf22=^Aj\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r,

# Combinations of the basic building blocks

tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes),
	use=tvi912b+2p, use=tvi912b-unk,

tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes),
	use=tvi912b+vb, use=tvi912b-unk,

tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print),
	use=tvi912b+printer, use=tvi912b-unk,

tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print),
	use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk,

tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print),
	use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk,

tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute),
	use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk,

tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies),
	use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk,

tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute),
	use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk,

tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies),
	use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk,

tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute),
	use=tvi912b+dim, use=tvi912b-unk,

tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies),
	use=tvi912b+mc, use=tvi912b-unk,

tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes),
	use=tvi920b+fn, use=tvi912b-unk,

tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes),
	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk,

tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes),
	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk,

tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print),
	use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk,

tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print),
	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer,
	use=tvi912b-unk,

tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print),
	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer,
	use=tvi912b-unk,

tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute),
	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim,
	use=tvi912b-unk,

tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies),
	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc,
	use=tvi912b-unk,

tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute),
	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim,
	use=tvi912b-unk,

tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies),
	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc,
	use=tvi912b-unk,

tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute),
	use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk,

tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies),
	use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk,

# TeleVideo 921 and variants
# From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995
# (tvi921: removed :ko=bt: before translation, I see no backtab cap;
# also added empty <acsc> to suppress tic warning -- esr)
tvi921|TeleVideo model 921 with sysline same as page & real vi function,
	OTbs, OTpt, am, hs, xenl, xhp,
	cols#80, lines#24, xmc#0,
	acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
	cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
	el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
	if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n, invis@,
	is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H,
	kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>,
	ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=\r\n, rmacs=\E%%,
	rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr,
# without the beeper
# (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
# also added empty <acsc> to suppress tic warning -- esr)
tvi92B|TeleVideo model 921 with sysline same as page & real vi function & no beeper,
	am, hs, xenl, xhp,
	cols#80, lines#24, xmc#0,
	acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
	cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
	el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I,
	ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n,
	invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z,
	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW,
	kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE,
	nel=\r\n, rmacs=\E%%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr,
# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr)
tvi92D|tvi92B with DTR instead of XON/XOFF & better padding,
	dl1=\ER$<2*/>, il1=\EE$<2*/>,
	is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>,
	kil1=\EE$<2*/>, use=tvi92B,

# (tvi924: This used to have <dsl=\Es0>, <fsl=\031>.  I put the new strings
# in from a BSD termcap file because it looks like they do something the
# old ones skip -- esr)
tvi924|TeleVideo tvi924,
	am, bw, hs, in, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80, xmc#0,
	bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0,
	cnorm=\E.3, cr=\r, csr=\E_%p1%{32}%+%c%p2%{32}%+%c,
	cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1,
	dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et,
	flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n,
	invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0,
	kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
	kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r,
	kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r,
	kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r,
	kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^,
	kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4,
	lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10,
	pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef,
	use=adm+sgr,

# TVI925 DIP switches.  In each of these, D = Down and U = Up,
#
# Here are the settings for the external (baud) switches (S1):
#
#             Position		Baud
# 7	8	9	10		[Printer]
# 1	2	3	4		[Main RS232]
# -----------------------------------------------------
# D	D	D	D	9600
# D	D	D	U	  50
# D	D	U	D	  75
# D	D	U	U	 110
# D	U	D	D	 135
# D	U	D	U	 150
# D	U	U	D	 300
# D	U	U	U	 600
# U	D	D	D	1200
# U	D	D	U	1800
# U	D	U	D	2400
# U	D	U	U	3600
# U	U	D	D	4800
# U	U	D	U	7200
# U	U	U	D	9600
# U	U	U	U	19200
#
#
# Settings for word length and stop-bits (S1)
#
#  Position	Description
# 5	6
# ---------------------------
# U	-	7-bit word
# D	-	8-bit word
# -	U	2 stop bits
# -	D	1 stop bit
#
#
# S2 (external) settings
#
# Position	Up	Dn	Description
# --------------------------------------------
# 1		X		Local edit
#			X	Duplex edit (transmit editing keys)
# --------------------------------------------
# 2		X		912/920 emulation
#			X	925
# --------------------------------------------
# 3			X
# 4			X	No parity
# 5			X
# --------------------------------------------
# 3			X
# 4			X	Odd parity
# 5		X
# --------------------------------------------
# 3			X
# 4		X		Even parity
# 5		X
# --------------------------------------------
# 3		X
# 4			X	Mark parity
# 5		X
# --------------------------------------------
# 3		X
# 4		X		Space parity
# 5		X
# --------------------------------------------
# 6		X		White on black display
#			X	Black on white display
# --------------------------------------------
# 7			X	Half Duplex
# 8			X
# --------------------------------------------
# 7		X		Full Duplex
# 8			X
# --------------------------------------------
# 7			X	Block mode
# 8		X
# --------------------------------------------
# 9			X	50 Hz
#		X		60 Hz
# --------------------------------------------
# 10		X		CR/LF (Auto LF)
#			X	CR only
#
# S3 (internal switch) settings:
#
# Position	Up	Dn	Description
# --------------------------------------------
# 1		X		Keyclick off
#			X	Keyclick on
# --------------------------------------------
# 2			X	English
# 3			X
# --------------------------------------------
# 2			X	German
# 3		X
# --------------------------------------------
# 2		X		French
# 3			X
# --------------------------------------------
# 2		X		Spanish
# 3		X
# --------------------------------------------
# 4			X	Blinking block cursor
# 5			X
# --------------------------------------------
# 4			X	Blinking underline cursor
# 5		X
# --------------------------------------------
# 4		X		Steady block cursor
# 5			X
# --------------------------------------------
# 4		X		Steady underline cursor
# 5		X
# --------------------------------------------
# 6		X		Screen blanking timer (ON)
#			X	Screen blanking timer (OFF)
# --------------------------------------------
# 7		X		Page attributes
#			X	Line attributes
# --------------------------------------------
# 8		X		DCD disconnected
#			X	DCD connected
# --------------------------------------------
# 9		X		DSR disconnected
#			X	DSR connected
# --------------------------------------------
# 10		X		DTR Disconnected
#			X	DTR connected
# --------------------------------------------
#
# (tvi925: BSD has <clear=\E*>.  I got <is2> and <ri> from there -- esr)
tvi925|TeleVideo 925,
	OTbs, am, bw, hs, ul,
	cols#80, lines#24, xmc#1,
	bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
	flash=\Eb$<200>\Ed, fsl=\r\Eg, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=\n, invis@, is2=\El\E", kbs=^H, kclr=^Z,
	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
	ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r,
	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
	kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3,
	tsl=\Eh\Ef, use=adm+sgr,
# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
# to avoid "magic cookie" standout glitch:
tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
	xmc@,
	kbs=^H, kcub1=^H, kcud1=\n, rmso=\E(, smso=\E), use=tvi925,

# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
# for additional capabilities,
# The following tvi descriptions from B:pjphar and virus!mike
# is for all 950s.  It sets the following attributes:
# full duplex (\EDF)		write protect off (\E()
# conversation mode (\EC)	graphics mode off (\E%)
# white on black (\Ed)		auto page flip off (\Ew)
# turn off status line (\Eg)	clear status line (\Ef\r)
# normal video (\E0)		monitor mode off (\EX or \Eu)
# edit mode (\Er)		load blank char to space (\Ee\040)
# line edit mode (\EO)		enable buffer control (^O)
# protect mode off (\E\047)	duplex edit keys (\El)
# program unshifted send key to send line all (\E016)
# program shifted send key to send line unprotected (\E004)
# set the following to nulls:
#	field delimiter (\Ex0\200\200)
#	line delimiter (\Ex1\200\200)
#	start-protected field delimiter (\Ex2\200\200)
#	end-protected field delimiter (\Ex3\200\200)
# set end of text delimiter to carriage return/null (\Ex4\r\200)
#
#                     TVI 950 Switch Setting Reference Charts
#
#                                     TABLE 1:
#
#      S1     1     2     3     4     5     6     7     8     9    10
#          +-----------------------+-----+-----+-----------------------+
#          | Computer Baud Rate    |Data |Stop | Printer Baud Rate     |
#          |                       |Bits |Bits |                       |
#   +------+-----------------------+-----+-----+-----------------------+
#   |  Up  |        See            |  7  |  2  |        See            |
#   +------+-----------------------+-----+-----+-----------------------+
#   | Down |      TABLE 2          |  8  |  1  |      TABLE 2          |
#   +------+-----------------------+-----+-----+-----------------------+
#
#
#      S2     1     2     3     4     5     6     7     8     9    10
#          +-----+-----+-----------------+-----+-----------+-----+-----+
#          |Edit |Cursr|    Parity       |Video|Transmiss'n| Hz  |Click|
#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
#   |  Up  | Dplx|Blink|      See        |GonBk|   See     | 60  | Off |
#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
#   | Down |Local|St'dy|    TABLE 3      |BkonG|  CHART    | 50  | On  |
#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
#
#                                    TABLE 2:
#
#             +-----------+-----+-----+-----+-----+-----------+
#             | Display   |  1  |  2  |  3  |  4  |   Baud    |
#             +-----------+-----+-----+-----+-----+           |
#             | Printer   |  7  |  8  |  9  | 10  |   Rate    |
#             +-----------+-----+-----+-----+-----+-----------+
#                         |  D  |  D  |  D  |  D  |   9600    |
#                         |  U  |  D  |  D  |  D  |     50    |
#                         |  D  |  U  |  D  |  D  |     75    |
#                         |  U  |  U  |  D  |  D  |    110    |
#                         |  D  |  D  |  U  |  D  |    135    |
#                         |  U  |  D  |  U  |  D  |    150    |
#                         |  D  |  U  |  U  |  D  |    300    |
#                         |  U  |  U  |  U  |  D  |    600    |
#                         |  D  |  D  |  D  |  U  |   1200    |
#                         |  U  |  D  |  D  |  U  |   1800    |
#                         |  D  |  U  |  D  |  U  |   2400    |
#                         |  U  |  U  |  D  |  U  |   3600    |
#                         |  D  |  D  |  U  |  U  |   4800    |
#                         |  U  |  D  |  U  |  U  |   7200    |
#                         |  D  |  U  |  U  |  U  |   9600    |
#                         |  U  |  U  |  U  |  U  |  19200    |
#                         +-----+-----+-----+-----+-----------+
#
#                                    TABLE 3:
#                         +-----+-----+-----+-----------+
#                         |  3  |  4  |  5  |   Parity  |
#                         +-----+-----+-----+-----------+
#                         |  X  |  X  |  D  |    None   |
#                         |  D  |  D  |  U  |     Odd   |
#                         |  D  |  U  |  U  |    Even   |
#                         |  U  |  D  |  U  |    Mark   |
#                         |  U  |  U  |  U  |   Space   |
#                         +-----+-----+-----+-----------+
#                                 X = don't care
#
#                                     CHART:
#                         +-----+-----+-----------------+
#                         |  7  |  8  | Communication   |
#                         +-----+-----+-----------------+
#                         |  D  |  D  |  Half Duplex    |
#                         |  D  |  U  |  Full Duplex    |
#                         |  U  |  D  |     Block       |
#                         |  U  |  U  |     Local       |
#                         +-----+-----+-----------------+
#
# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:".
# I also inserted <ich1> and <kich1>; the :ko: string indicated that <ich>
# should be present and all tvi native modes use the same string for this.
# Finally, note that BSD has cud1=^V. -- esr)
#
# TVI 950 has 11 function-keys -TD
tvi950|TeleVideo 950,
	OTbs, am, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, xmc#1,
	acsc=jHkGlFmEnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, clear=\E*,
	cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed,
	fsl=\r, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=\n,
	invis@,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\El
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
	    \Ef\r,
	kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf1=^A@\r,
	kf10=^AI\r, kf11=^AJ\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
	khome=^^, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej,
	rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, tbc=\E3,
	tsl=\Eg\Ef, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\r, kF2=^Aa\r,
	kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r, kF6=^Ae\r, kF7=^Af\r,
	kF8=^Ag\r, kF9=^Ah\r, use=adm+sgr,
#
# is for 950 with two pages adds the following:
#	set 48 line page (\E\\2)
#	place cursor at page 0, line 24, column 1 (\E-07 )
#	set local (no send) edit keys (\Ek)
#
# two page 950 adds the following:
#	when entering ex, set 24 line page (\E\\1)
#	when exiting ex, reset 48 line page (\E\\2)
#			 place cursor at 0,24,1 (\E-07 )
#	set duplex (send) edit keys (\El) when entering vi
#	set local (no send) edit keys (\Ek) when exiting vi
#
tvi950-2p|TeleVideo 950 w/2 pages,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
	    \E\\2\E-07\s\011,
	rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
	smkx=\El, use=tvi950,
#
# is for 950 with four pages adds the following:
#	set 96 line page (\E\\3)
#	place cursor at page 0, line 24, column 1 (\E-07 )
#
# four page 950 adds the following:
#	when entering ex, set 24 line page (\E\\1)
#	when exiting ex, reset 96 line page (\E\\3)
#			 place cursor at 0,24,1 (\E-07 )
#
tvi950-4p|TeleVideo 950 w/4 pages,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
	    \E\\3\E-07\s\011,
	rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
	smkx=\El, use=tvi950,
#
# <is2> for reverse video 950 changes the following:
#	set reverse video (\Ed)
#
# set vb accordingly (\Ed ...delay... \Eb)
#
tvi950-rv|TeleVideo 950 rev video,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\El
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r
	    \0,
	use=tvi950,

# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv
tvi950-rv-2p|TeleVideo 950 rev video w/2 pages,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
	    \E\\2\E-07\s,
	rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
	smkx=\El, use=tvi950,

# tvi950-rv uses the appropriate entries from 950-4p and 950-rv
tvi950-rv-4p|TeleVideo 950 rev video w/4 pages,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek
	    \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0
	    \E\\3\E-07\s,
	rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
	smkx=\El, use=tvi950,
# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
# the :rs: string, inserted the <ich> implied by the termcap :ko: string.  Note
# the :ko: string had :cl: in it, which means that one of the original
# <clear=\E*>, <kclr=\EY> had to be wrong; set <kclr=\E*> because that's what
# the 950 has.   Finally, corrected the <kel> string to match the 950 and what
# ko implies -- esr)
# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
# also work.
tvi955|TeleVideo 955,
	OTbs, mc5i, msgr@,
	it#8, xmc@,
	acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
	civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1,
	is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1,
	knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%,
	rmam=\E[=7l, rmxon=^N,
	rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee\s\017\E0P\E6\0\E0p\E4\0
	    \Ef\r,
	sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
	use=tvi950,
tvi955-w|955-w|TeleVideo 955 w/132 cols,
	cols#132,
	is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955,
# use half-intensity as normal mode, full intensity as <bold>
tvi955-hb|955-hb|TeleVideo 955 half-bright,
	bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El,
	sgr0=\EG0\E[=5h, use=tvi955,
# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
# (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m;
# added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL.
# According to BRL we could have <rmkx>=\E>, <smkx>=\E= but I'm not sure what
# it does to the function keys.  I deduced <rmam>/<smam>.
# also added empty <acsc> to suppress tic warning,  -- esr)
tvi970|TeleVideo 970,
	OTbs, OTpt, am, da, db, mir, msgr,
	cols#80, it#8, lines#24,
	acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
	cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r,
	ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
	is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E?a, kf2=\E?b, kf3=\E?c, kf4=\E?d, kf5=\E?e, kf6=\E?f,
	kf7=\E?g, kf8=\E?h, kf9=\E?i, khome=\E[H, ri=\EM, rmacs=\E(B,
	rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
	smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd,
tvi970-vb|TeleVideo 970 with visual bell,
	flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
	use=tvi970,
tvi970-2p|TeleVideo 970 with using 2 pages of memory,
	rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q,
	use=tvi970,
# Works with vi and rogue.  NOTE: Esc v sets autowrap on, Esc u sets 80 chars
# per line (rather than 40), Esc K chooses the normal character set.  Not sure
# padding is needed, but adapted from the tvi920c termcap.  The <smso> and
# <smul> strings are klutzy, but at least use no screen space.
# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:".  I wish we knew <rmam>,
# its absence means <smam>=\Ev isn't safe to use. -- esr)
# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
# The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says:
# F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
tvipt|TeleVideo personal terminal,
	OTbs, am,
	cols#80, lines#24,
	cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
	ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt,
	il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R,
	rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH,
# From: Nathan Peterson <nathan@sco.com>, 03 Sep 1996
tvi9065|TeleVideo 9065,
	am, bw, chts, hs, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0,
	wnum#0, wsl#30,
	acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G,
	blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z,
	cnorm=\E.3, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
	cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA,
	cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
	dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
	el=\ET, flash=\Eb$<15>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
	ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt,
	il=\E[%p1%dL, il1=\EE, ind=\n, invis=\EG1, ip=$<3>,
	is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er,
	is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s,
	kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
	kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H,
	mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=\r\n,
	pfkey=\E|%p1%{48}%+%c3%p2%s\031,
	pfloc=\E|%p1%{48}%+%c2%p2%s\031,
	pfx=\E|%p1%{48}%+%c1%p2%s\031,
	pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&,
	rep=\E[%p2%db%p1%c, rev=\EG4,
	rf=/usr/share/tabset/stdcrt, ri=\Ej, rmacs=\E%%,
	rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, rmdc=\0,
	rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, rmxon=^N,
	rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l,
	rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=1
	    3.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=
	    21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee\s\Ex0\0\0\Ex1\0\0
	    \Ex2\0\0\Ex3\0\0\Ex4\0\0\E1,
	rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0
	    \0\0,
	sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;
	    %?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%?
	    %p9%t\E$%e\E%%%;,
	sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
	smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
	tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ecma+index,

#### Visual (vi)
#
# In September 1993, Visual Technology of Westboro, Massachusetts,
# merged with White Pine Software of Nashua, New Hampshire.
#
# White Pine Software may be contacted at +1 603/886-9050.
# Or visit White Pine on the World Wide Web at URL http://www.wpine.com.
#

# Visual 50 from Beau Shekita, BTL-Whippany <whuxlb!ejs>
# Recently I hacked together the following termcap for Visual
# Technology's Visual 50 terminal. It's a slight modification of
# the vt52 termcap.
# It's intended to run when the Visual 50 is in vt52 emulation mode
# (I know what you're thinking; if it's emulating a vt52, then why
# another termcap? Well, it turns out that the Visual 50 can handle
# <dl1> and db(?) among other things, which the vt52 can't)
# The termcap works OK for the most part. The only problem is on
# character inserts. The whole line gets painfully redrawn for each
# character typed. Any suggestions?
# Beau's entry is combined with the vi50 entry from University of Wisconsin.
# Note especially the <il1> function.  <kf4>-<kf6> are really l4-l6 in
# disguise; <kf7>-<kf9> are really l1-l3.
vi50|Visual 50,
	OTbs, OTpt, am, da, db, msgr,
	cols#80, it#8, lines#24,
	OTnl=\n, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=\r, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH,
	ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
	kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
	nel=\r\n, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES,
# this one was BSD & SCO's vi50
vi50adm|Visual 50 in adm3a mode,
	am, msgr,
	cols#80, it#8, lines#24,
	bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM,
	ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=\n, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
	rmso=\ET, smso=\EU,
# From: Jeff Siegal <jbs@quiotix.com>
vi55|Visual 55,
	OTbs, am, mir, msgr,
	cols#80, it#8, lines#24,
	clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H,
	cud1=\n, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I,
	il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET,
	smir=\Ea, smso=\EU,

# Visual 200 from BRL
# The following switch settings are assumed for normal operation:
#	FULL_DUPLEX		SCROLL			CR
#	AUTO_NEW_LINE_ON	VISUAL_200_EMULATION_MODE
# Other switches may be set for operator convenience or communication
# requirements.
# Character insertion is kludged in order to get around the "beep" misfeature.
# (This cap is commented out because <smir>/<rmir> is more efficient -- esr)
# Supposedly "4*" delays should be used for <il1>, <ed>, <clear>, <dch1>,
# and <dl1> strings, but we seem to get along fine without them.
vi200|Visual 200,
	OTbs, OTpt, am, mir, msgr,
	OTkn#10, cols#80, it#8, lines#24,
	acsc=+h.kffggjmkllsmenbq`tnuovcwdxa}r, bel=^G, cbt=\Ez,
	clear=\Ev, cnorm=\Ec, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ed,
	dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, el=\Ex, home=\EH, ht=^I,
	hts=\E1, il1=\EL, ind=\n, invis=\Ea, kbs=^H, kclr=\Ev,
	kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, kf1=\E?q,
	kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
	kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, kil1=\EL,
	krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, rmacs=\EG,
	rmkx=\E>, rmso=\E3, rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX,
	sgr0=\E3\Eb, smacs=\EF, smkx=\E=, smso=\E4, tbc=\Eg,
# The older Visuals didn't come with function keys. This entry uses
# <smkx> and <rmkx> so that the keypad keys can be used as function keys.
# If your version of vi doesn't support function keys you may want
# to use vi200-f.
vi200-f|Visual 200 no function keys,
	is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q,
	kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
	kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@,
	use=vi200,
vi200-rv|Visual 200 reverse video,
	cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200,

# the function keys are programmable but we don't reprogram them to their
# default values with <is2> because programming them is very verbose. maybe
# an initialization file should be made for the 300 and they could be stuck
# in it.
# (vi300: added <rmam>/<smam> based on init string -- esr)
vi300|Visual 300 ansi x3.64,
	am, bw, mir, xenl,
	cols#80, lines#24,
	bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	il1=\E[L, ind=\n,
	is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E_A\E\\, kf2=\E_B\E\\, kf3=\E_C\E\\, kf4=\E_D\E\\,
	kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\,
	kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
	smso=\E[1m, smul=\E[4m,
# some of the vi300s have older firmware that has the command
# sequence for setting editing extent reversed.
vi300-old|Visual 300 with old firmware (set edit extent reversed),
	is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s, use=vi300,

# Visual 500 prototype entry from University of Wisconsin.
# The best place to look for the escape sequences is page A1-1 of the
# Visual 500 manual.  The initialization sequence given here may be
# overkill, but it does leave out some of the initializations which can
# be done with the menus in set-up mode.
# The :xp: line below is so that emacs can understand the padding requirements
# of this slow terminal.  :xp: is 10 time the padding factor.
# (vi500: removed unknown :xp#4: termcap;
# also added empty <acsc> to suppress tic warning -- esr)
vi500|Visual 500,
	am, mir, msgr,
	cols#80, it#8, lines#33,
	acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=\r,
	csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>,
	el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>,
	ind=\n,
	is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	khome=\EH, nel=\r\n, rmacs=^O, rmir=\Ej, rmso=\E^G,
	rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,

# The visual 550 is a visual 300 with Tektronix graphics,
# and with 33 lines. clear screen is modified here to
# also clear the graphics.
vi550|Visual 550 ansi x3.64,
	lines#33,
	clear=\030\E[H\E[2J, use=vi300,

vi603|visual603|Visual 603,
	hs, mir,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L,
	ind=\ED, is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r,
	rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	sgr0=\E[m\017$<2>, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	tsl=\EP2~, use=vt100+4bsd,

#### Wyse (wy)
#
#	Wyse Technology
#	3471 North First Street
#	San Jose, CA 95134
#	Vox: (408)-473-1200
#	Fax: (408) 473-1222
#	Web: http://www.wyse.com
#
# Wyse sales can be reached by phone at 1-800-GET-WYSE.  Tech support is at
# (800)-800-WYSE (option 5 gets you a human).  There's a Web page at the
# obvious address, <http://www.wyse.com>.  They keep terminfo entries at
# https://web.archive.org/web/19970712022641/http://www.wyse.co.uk/support/appnotes/idxappnt.htm
#
#
# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995.
# They now own the Qume and Amdek brands, too.  So these are the people to
# talk with about all Link, Qume, and Amdek terminals.
#
# These entries include a few small fixes.
# I canceled the bel capacities in the vb entries.
# I made two trivial syntax fixes in the wyse30 entry.
# I made some entries relative to adm+sgr.
#
#
# Note: The wyse75, wyse85, and wyse99 have been discontinued.

#	   Although the Wyse 30 can support more than one attribute
#	it requires magic cookies to do so.  Many applications do not
#	function well with magic cookies.  The following terminfo uses
#	the protect mode to support one attribute (dim) without cookies.
#	If more than one attribute is needed then the wy30-mc terminfo
#	should be used.
#
wy30|wyse30|Wyse 30,
	am, bw, hs, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
	civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>,
	dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9,
	fsl=\r, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>,
	ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024,
	kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7,
	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ,
	kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T,
	mc5=^X, nel=\r\n, pfx=\Ez%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
	rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
	sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
	smso=\E`7\E), tbc=\E0, tsl=\EF,
#
#	This terminal description uses the non-hidden attribute mode
#	(with magic cookie).
#
# (wy30-mc: added <smcup> to suppress tic warning --esr)
wy30-mc|wyse30-mc|Wyse 30 with magic cookies,
	msgr@,
	ma@, xmc#1,
	blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003,
	rmcup=\EG0, rmso=\EG0,
	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?
	    %p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8
	    %t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
	smso=\EG4, use=wy30, use=adm+sgr,
#	The mandatory pause used by <flash> does not work with
#	older versions of terminfo.  If you see this effect then
#	unset xon and delete the / from the delay.
#	i.e. change $<100/> to $<100>
wy30-vb|wyse30-vb|Wyse 30 visible bell,
	bel@, use=wy30,
#
#	   The Wyse 50 can support one attribute (e.g. Dim, Inverse,
#	Normal) without magic cookies by using the protect mode.
#	The following description uses this feature, but when more
#	than one attribute is put on the screen at once, all attributes
#	will be changed to be the same as the last attribute given.
#	   The Wyse 50 can support more attributes when used with magic
#	cookies.  The wy50-mc terminal description uses magic cookies
#	to correctly handle multiple attributes on a screen.
#
wy50|wyse50|Wyse 50,
	am, bw, hs, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
	acsc=a;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, cbt=\EI,
	civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r,
	ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r,
	home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>,
	is1=\E`:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H,
	kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW,
	kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
	ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n,
	pfx=\Ez%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
	ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
	sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH
	    \002%e\EH\003%;,
	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
	smso=\E`6\E), tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r,
	kF11=^Aj\r, kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r,
	kF16=^Ao\r, kF2=^Aa\r, kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r,
	kF6=^Ae\r, kF7=^Af\r, kF8=^Ag\r, kF9=^Ah\r,
#
#	This terminal description uses the non-hidden attribute mode
#	(with magic cookie).
#
#	The mandatory pause used by flash does not work with some
#	older versions of terminfo.  If you see this effect then
#	unset <xon> and delete the / from the delay.
#	i.e. change $<100/> to $<100>
# (wy50-mc: added <smcup> to suppress tic warning --esr)
wy50-mc|wyse50-mc|Wyse 50 with magic cookies,
	msgr@,
	ma@, xmc#1,
	blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4,
	rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0,
	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?
	    %p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8
	    %t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
	smso=\EGt, use=wy50, use=adm+sgr,
wy50-vb|wyse50-vb|Wyse 50 visible bell,
	bel@, use=wy50,
wy50-w|wyse50-w|Wyse 50 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
	use=wy50,
wy50-wvb|wyse50-wvb|Wyse 50 132-column visible bell,
	bel@, use=wy50-w,

#
#	The Wyse 350 is a Wyse 50 with color.
#	Unfortunately this means that it has magic cookies.
#	The color attributes are designed to overlap the reverse, dim and
#	underline attributes.  This is nice for monochrome applications
#	because you can make underline stuff green (or any other color)
#	but for true color applications it's not so hot because you cannot
#	mix color with reverse, dim or underline.
#	    To further complicate things one of the attributes must be
#	black (either the foreground or the background).  In reverse video
#	the background changes color with black letters.  In normal video
#	the foreground changes colors on a black background.
#	    This terminfo uses some of the more advanced features of curses
#	to display both color and blink.  In the final analysis I am not
#	sure that the wy350 runs better with this terminfo than it does
#	with the wy50 terminfo (with user adjusted colors).
#
#	The mandatory pause used by flash does not work with
#	older versions of terminfo.  If you see this effect then
#	unset xon and delete the / from the delay.
#	i.e. change $<100/> to $<100>
#
# Bug: The <op> capability resets attributes.
wy350|wyse350|Wyse 350,
	am, bw, hs, mc5i, mir, xon,
	colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8,
	wsl#45, xmc#1,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
	cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>,
	dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET,
	flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1,
	il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`:\E`9$<30>,
	is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
	ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
	ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n, oc=\E%?, op=\EG0,
	pfx=\Ez%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej,
	rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=,
	setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e
	     %p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e
	     %p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48}
	     %+%c,
	sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}
	    %?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t
	    %{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH
	    \002%e\EH\003%;,
	sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002,
	smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr,
wy350-vb|wyse350-vb|Wyse 350 visible bell,
	bel@, use=wy350,
wy350-w|wyse350-w|Wyse 350 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
	use=wy350,
wy350-wvb|wyse350-wvb|Wyse 350 132-column visible bell,
	bel@, use=wy350-w,
#
#	This terminfo description is untested.
#	The wyse100 emulates an adm31, so the adm31 entry should work.
#
wy100|Wyse 100,
	hs, mir,
	cols#80, lines#24, xmc#1,
	bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=\r, il1=\EE, ind=\n,
	invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=\E{,
	rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr,
#
#	The Wyse 120/150 has most of the features of the Wyse 60.
#	This terminal does not need padding up to 9600 baud!
#	<msgr> should be set but the clear screen fails when in
#	alt-charset mode.  Try \EcE\s\s\E+\s if the screen is really clear
#	then set <msgr>.
#
wy120|wyse120|wy150|wyse150|Wyse 120/150,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
	acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
	cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
	dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
	flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=\011$<1>,
	hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
	    \024\El,
	is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K,
	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
	rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11,
	rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`:$<70>,
	rs3=\EwG\Ee($<100>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
	    %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
	    %{64}%|%;%?%p7%t%{1}%|%;%c,
	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
	smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
	tbc=\E0, tsl=\EF, use=adm+sgr,
#
wy120-w|wyse120-w|wy150-w|wyse150-w|Wyse 120/150 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
	rs2=\E`;$<70>, use=wy120,
#
wy120-25|wyse120-25|wy150-25|wyse150-25|Wyse 120/150 80-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy120,
#
wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|Wyse 120/150 132-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy120-w,
#
wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell,
	bel@, use=wy120,
#
wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell,
	bel@, use=wy120-w,
#
#	The Wyse 60 is like the Wyse 50 but with more padding.
#	The reset strings are slow and the pad times very depending
#	on other parameters such as font loading.  I have tried
#	to follow the following outline:
#
#		<rs1> -> set personality
#		<rs2> -> set number of columns
#		<rs3> -> set number of lines
#		<is1> -> select the proper font
#		<is2> -> do the initialization
#		<is3> -> set up display memory (2 pages)
#
#	The Wyse 60's that have vt100 emulation are slower than the
#	older Wyse 60's.  This change happened mid-1987.
#	The capabilities effected are <dch1> <dl1> <il1> <ind> <ri>
#
#	The meta key is only half right.  This terminal will return the
#	high order bit set when you hit CTRL-function_key
#
#	It may be useful to assign two function keys with the
#	values  \E=(\s  look at old data in page 1
#	        \E=W,   look at bottom of page 1
#	where \s is a space ( ).
#
#	Note:
#	   The Wyse 60 runs faster when the XON/XOFF
#	   handshake is turned off.
#
# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid
# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
wy60|wyse60|Wyse 60,
	am, bw, hs, km, mc5i, mir, msgr,
	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45,
	acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>,
	cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r,
	ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r,
	home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>,
	ip=$<3>, is1=\EcB0\EcC1,
	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
	    \024\El,
	is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K,
	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
	rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er,
	rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>,
	rs2=\EeG$<150>, rs3=\EwG\Ee($<200>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
	    %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
	    %{64}%|%;%?%p7%t%{1}%|%;%c,
	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
	smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
	tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\r,
	kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r, kF16=^Ao\r,
	kF2=^Aa\r, kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r, kF6=^Ae\r,
	kF7=^Af\r, kF8=^Ag\r, kF9=^Ah\r, use=adm+sgr,
#
wy60-w|wyse60-w|Wyse 60 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>,
	rs2=\EeF$<150>\E`;$<150>, use=wy60,
#
wy60-25|wyse60-25|Wyse 60 80-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<200>, use=wy60,
wy60-25-w|wyse60-25-w|Wyse 60 132-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<200>, use=wy60-w,
#
wy60-42|wyse60-42|Wyse 60 80-column 42-lines,
	lines#42,
	clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>,
	dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>,
	ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>,
	ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60,
wy60-42-w|wyse60-42-w|Wyse 60 132-column 42-lines,
	cols#132, lw#7, nlab#16, wsl#97,
	clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>,
	dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>,
	nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
#
wy60-43|wyse60-43|Wyse 60 80-column 43-lines,
	lh@, lines#43, lw@, nlab@,
	pln@, rs3=\Ee+$<150>, use=wy60-42,
wy60-43-w|wyse60-43-w|Wyse 60 132-column 43-lines,
	lh@, lines#43, lw@, nlab@,
	pln@, rs3=\Ee+$<150>, use=wy60-42-w,
#
wy60-vb|wyse60-vb|Wyse 60 visible bell,
	bel@, use=wy60,
wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
	bel@, use=wy60-w,

#	The Wyse-99GT looks at lot like the Wyse 60 except that it
#	does not have the 42/43 line mode.  In the Wyse-60 the "lines"
#	setup parameter controls the number of lines on the screen.
#	For the Wyse 99GT the "lines" setup parameter controls the
#	number of lines in a page.  The screen can display 25 lines max.
#	    The Wyse-99GT also has personalities for the VT220 and
#	Tektronix 4014.  But this has no bearing on the native mode.
#
#	(msgr) should be set but the clear screen fails when in
#	alt-charset mode.  Try \EcE\s\s\E+\s if the screen is really clear
#	then set msgr, else use msgr@.
#
#	u0 -> enter Tektronix mode
#	u1 -> exit Tektronix mode
#
wy99gt|wyse99gt|Wyse 99gt,
	msgr@,
	clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>,
	el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>,
	il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
	ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`:$<150>, smcup=\Ew1,
	u0=\E~>\E8, u1=\E[42h, use=wy60,
#
wy99gt-w|wyse99gt-w|Wyse 99gt 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>,
	dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>,
	use=wy99gt,
#
wy99gt-25|wyse99gt-25|Wyse 99gt 80-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs2=\E`:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt,
#
wy99gt-25-w|wyse99gt-25-w|Wyse 99gt 132-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs2=\E`;$<150>, use=wy99gt-w,
#
wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
	bel@, use=wy99gt,
#
wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
	bel@, use=wy99gt-w,

# Can't set tabs! Other bugs (ANSI mode only):
# - can't redefine function keys (anyway, key redefinition in ANSI mode
#   is too much complex to be described);
# - meta key can't be described (the terminal forgets it when reset);
# The xon-xoff handshaking can't be disabled while in ansi personality, so
# emacs can't work at speed greater than 9600 baud.  No padding is needed at
# this speed.
#   dch1 has been commented out because it causes annoying glittering when
# vi deletes one character at the beginning of a line with tabs in it.
#   dch makes sysgen(1M) have a horrible behaviour when deleting
# a screen and makes screen(1) behave badly, so it is disabled too. The nice
# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are
# not, so smir and rmir are commented out as well.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
	am, km, mc5i, mir, msgr, xenl,
	cols#80, it#8, lines#25, vt#3,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
	cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
	cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>,
	enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
	il1=\E[L, ind=\n$<1>, invis=\E[8m,
	is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4
	    ;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
	kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ,
	kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~,
	kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h,
	mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
	rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
	rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16
	    ;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E
	    \E[4i,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?
	    %p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
	sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,

#   This is the american terminal. Here tabs work fine.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard),
	hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi,

# This terminal (firmware version 02) has a lot of bugs:
# - can't set tabs;
# - other bugs in ANSI modes (see above).
# This description disables handshaking when using cup. This is because
# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal
# cannot be used at speeds greater than 9600 baud, because at greater
# speeds handshaking is needed even for character sending. If you use
# DTR handshaking, you can use even greater speeds.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, it#8, lines#25, wsl#46,
	acsc='x+y.w_vi~j(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G,
	blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032,
	cnorm=\E`4\E`1, cr=\r, cub1=^H, cud1=\Ej, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r,
	ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>,
	flash=\E\^1$<30/>\E\^0, fsl=\r, home=^^, ht=^I, il1=\EE,
	ind=\n, invis=\EG3,
	is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E
	    \^0\E`1\E`4\Ee.\E`:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"
	    \EcD\024,
	ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r,
	kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r,
	kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#,
	nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed.,
	rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30,
	rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`
	    9\E\^0\E`1\E`4\Ee.\E`:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/
	    \Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
	sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t
	    %{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?
	    %p9%t\EcE%e\EcD%;,
	sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30,
	smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF,

# This is the american terminal. Here tabs work.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard),
	hts=\E1, tbc=\E0, use=wy99f,

#
#	The Wyse 160 is combination of the WY-60 and the WY-99gt.
#	The reset strings are slow and the pad times very depending
#	on other parameters such as font loading.  I have tried
#	to follow the following outline:
#
#		<rs1> -> set personality
#		<rs2> -> set number of columns
#		<rs3> -> set number of lines
#		<is1> -> select the proper font
#		<is2> -> do the initialization
#		<is3> -> set up display memory (2 pages)
#
#	The display memory may be used for either text or graphics.
#	When "Display Memory = Shared" the terminal will have more pages
#	but garbage may be left on the screen when you switch from
#	graphics to text.  If "Display Memory = Unshared" then the
#	text area will be only one page long.
#
# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid
# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
wy160|wyse160|Wyse 160,
	am, bw, hs, km, mc5i, mir, msgr,
	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38,
	acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>,
	cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>,
	dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>,
	el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=\r, home=\E{, ht=^I,
	hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1,
	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016
	    \024\El,
	is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K,
	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>,
	rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er,
	rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>,
	rs2=\E`:$<100>, rs3=\EwG\Ee($<140>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
	    %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
	    %{64}%|%;%?%p7%t%{1}%|%;%c,
	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
	smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
	tbc=\E0, tsl=\EF, use=adm+sgr,
#
wy160-w|wyse160-w|Wyse 160 132-column,
	cols#132, lw#7, nlab#16, wsl#90,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>,
	rs2=\EeF$<150>\E`;$<150>, use=wy160,
#
wy160-25|wyse160-25|Wyse 160 80-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<200>, use=wy160,
wy160-25-w|wyse160-25-w|Wyse 160 132-column 25-lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<200>, use=wy160-w,
#
wy160-42|wyse160-42|Wyse 160 80-column 42-lines,
	lines#42,
	clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>,
	ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>,
	rs3=\Ee*$<150>, use=wy160,
wy160-42-w|wyse160-42-w|Wyse 160 132-column 42-lines,
	cols#132, lw#7, nlab#16, wsl#90,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>,
	rs2=\EeF$<150>\E`;$<150>, use=wy160-42,
#
wy160-43|wyse160-43|Wyse 160 80-column 43-lines,
	lh@, lines#43, lw@, nlab@,
	pln@, rs3=\Ee+$<150>, use=wy160-42,
wy160-43-w|wyse160-43-w|Wyse 160 132-column 43-lines,
	lh@, lines#43, lw@, nlab@,
	pln@, rs3=\Ee+$<150>, use=wy160-42-w,
#
wy160-vb|wyse160-vb|Wyse 160 visible bell,
	bel@, use=wy160,
wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
	bel@, use=wy160-w,
#
#	The Wyse 75 is a vt100 lookalike without advanced video.
#
#	   The Wyse 75 can support one attribute (e.g. Dim, Inverse,
#	Underline) without magic cookies.  The following description
#	uses this capability, but when more than one attribute is
#	put on the screen at once, all attributes will be changed
#	to be the same as the last attribute given.
#	   The Wyse 75 can support more attributes when used with magic
#	cookies.  The wy75-mc terminal description uses magic cookies
#	to correctly handle multiple attributes on a screen.
#
wy75|wyse75|Wyse 75,
	am, hs, mc5i, mir, msgr, xenl, xon,
	cols#80, lines#24, ma#1, pb#1201, wsl#78,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, cbt=\E[Z, clear=\E[H\E[J$<30>, cr=\r,
	csr=\E[%i%p1%d;%p2%dr$<2>, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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$<3*>, dch1=\E[P$<3>, dim=\E[0t\E[2m,
	dl=\E[%p1%dM$<1*>, dl1=\E[M,
	dsl=\E[>\,\001\001\E[>-\001\001, ech=\E[%p1%dX,
	ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E)0,
	flash=\E[30h\E\,$<250/>\E[30l, fsl=^A, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@$<1*>,
	il=\E[%p1%dL$<2*>, il1=\E[L$<2>, ind=\n$<2>, ip=$<1>,
	is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h,
	is2=\E>\E(B\E)0\017, is3=\E[m, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K,
	kf1=\E[?5i, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[?3i,
	kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
	khlp=\E[28~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~,
	kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i,
	mc5=\E[5i, rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m,
	rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l,
	sc=\E7,
	sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t
	    \E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t
	    \016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m,
	tbc=\E[3g, tsl=\E[>\,\001, use=vt220+cvis,
	use=vt220+keypad,
#
#	This terminal description uses the non-hidden attribute mode
#	(with magic cookie).
#
wy75-mc|wyse75-mc|Wyse 75 with magic cookies,
	msgr@,
	ma@, xmc#1,
	blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p,
	rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p,
	sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?
	    %p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9
	    %t\016%e\017%;,
	sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p,
	use=wy75,
wy75-vb|wyse75-vb|Wyse 75 with visible bell,
	pb@,
	bel@, use=wy75,
wy75-w|wyse75-w|Wyse 75 in 132 column mode,
	cols#132, wsl#130,
	rs2=\E[35h\E[?3h$<80>, use=wy75,
wy75-wvb|wyse75-wvb|Wyse 75 with visible bell 132 columns,
	pb@,
	bel@, use=wy75-w,
#
#	Wyse 85 emulating a vt220 7 bit mode.
#		24 line screen with status line.
#
#	The vt220 mode permits more function keys but it wipes out
#	the escape key.  I strongly recommend that <f11> be set to
#	escape (esc).
#	The terminal may have to be set for 8 data bits and 2 stop
#	bits for the arrow keys to work.
#	The Wyse 85 runs faster with XON/XOFF enabled.  Also the
#	<dch> and <ich> work best when XON/XOFF is set.  <ich> and
#	<dch> leave trash on the screen when used without XON/XOFF.
#
wy85|wyse85|Wyse 85,
	am, hs, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>,
	dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>,
	dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>,
	el=\E[K$<1>, el1=\E[1K, enacs=\E)0,
	flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
	home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>,
	il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m,
	ip=$<3>, is1=\E[62;1"p\E[?5W,
	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2,
	lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8,
	rev=\E[7m, ri=\EM$<3>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E>, rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p,
	rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l, sc=\E7,
	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+vtedit,
	use=vt220+cvis, use=vt220+keypad,
#
#	Wyse 85 with visual bell.
wy85-vb|wyse85-vb|Wyse 85 with visible bell,
	bel@, flash=\E[30h\E\,$<300/>\E[30l, use=wy85,
#
#	Wyse 85 in 132-column mode.
wy85-w|wyse85-w|Wyse 85 in 132-column mode,
	cols#132, wsl#132,
	rs2=\E[35h$<70/>\E[?3h, use=wy85,
#
#	Wyse 85 in 132-column mode with visual bell.
wy85-wvb|wyse85-wvb|Wyse 85 with visible bell 132-columns,
	bel@, use=wy85-w,

# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998
# This copes with an apparent firmware bug in the wy85.  He writes:
# "What I did was change leave the terminal cursor keys set to Normal
# (instead of application), and change \E[ to \233 for all the keys in
# terminfo. At one point, I found some reference indicating that this
# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just
# me), but I can't find that and the server under my bookmark to "Wyse
# Technical" isn't responding.  So there's the question of whether the wy85
# terminfo should reflect the manufacturer's intended behaviour of the terminal
# or the actual."
wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode,
	am, hs, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>,
	dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>,
	dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>,
	el=\E[K$<1>, el1=\E[1K, enacs=\E)0,
	flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
	home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>,
	il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m,
	ip=$<3>, is1=\E[62;1"p\E[?5W,
	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
	is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
	kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B,
	kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM,
	kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
	kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
	kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ,
	kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~,
	kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~,
	khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~,
	kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
	rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
	rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
	rs3=\E[?5l, sc=\E7,
	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+cvis,
#
#	Wyse 185 emulating a vt320 7 bit mode.
#
#	This terminal always displays 25 lines.  These lines may be used
#	as 24 data lines and a terminal status line (top or bottom) or
#	25 data lines.  The 48 and 50 line modes change the page size
#	and not the number of lines on the screen.
#
#	The Compose Character key can be used as a meta key if changed
#	by set-up.
#
wy185|wyse185|Wyse 185,
	am, hs, km, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<3>,
	dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
	dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>,
	el=\E[K, el1=\E[1K, enacs=\E)0,
	flash=\E[30h\E\,$<100/>\E[30l, fsl=\E[1;24r\E8,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH,
	ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
	ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h,
	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
	lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
	rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
	smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
	use=vt220+vtedit, use=vt220+keypad,
#
#	Wyse 185 with 24 data lines and top status (terminal status)
wy185-24|wyse185-24|Wyse 185 with 24 data lines,
	hs@,
	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
	use=wy185,
#
#	Wyse 185 with visual bell.
wy185-vb|wyse185-vb|Wyse 185+flash,
	bel@, use=wy185,
#
#	Wyse 185 in 132-column mode.
wy185-w|wyse185-w|Wyse 185 in 132-column mode,
	cols#132, wsl#132,
	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
	ip=$<7>, rs2=\E[35h\E[?3h, use=wy185,
#
#	Wyse 185 in 132-column mode with visual bell.
wy185-wvb|wyse185-wvb|Wyse 185+flash+132 cols,
	bel@, use=wy185-w,

# wy325 terminfo entries
# Done by Joe H. Davis        3-9-92

# lines 25  columns 80
#
wy325|wyse325|Wyse epc,
	am, bw, hs, mc5i, mir,
	cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
	acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
	cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
	dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
	flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1,
	il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
	is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024
	    \El,
	is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq,
	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K,
	mc0=\EP, mc4=^T, mc5=\Ed#,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
	rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11,
	rs1=\E~!\E~4$<30>, rs2=\EeF\E`:$<70>,
	rs3=\EwG\Ee($<100>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}
	    %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t
	    %{64}%|%;%?%p7%t%{1}%|%;%c,
	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
	smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0,
	tsl=\EF, use=adm+sgr,

#
# lines 24  columns 80  vb
#
wy325-vb|wyse325-vb|Wyse-325 with visual bell,
	bel@, use=wy325,

#
# lines 24  columns 132
#
wy325-w|wyse325-w|wy325w-24|Wyse-325 in wide mode,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
	rs2=\E`;$<70>, use=wy325,
#
# lines 25  columns 80
#
wy325-25|wyse325-25|wy325-80|wyse-325|Wyse-325 25 lines,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy325,
#
# lines 25  columns 132
#
wy325-25w|wyse325-25w|Wyse-325 132 columns,
	lh@, lines#25, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
# lines 25  columns 132  vb
#
wy325-w-vb|wy325-wvb|wyse325-wvb|Wyse-325 wide mode reverse video,
	bel@, use=wy325-w,

#
# lines 42  columns 80
#
wy325-42|wyse325-42|Wyse-325 42 lines,
	lh@, lines#42, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy325,
#
# lines 42  columns 132
#
wy325-42w|wyse325-42w|Wyse-325 42 lines wide mode,
	lh@, lines#42, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
# lines 42  columns 132  vb
#
wy325-42w-vb|wy325-42wvb|Wyse-325 42 lines wide mode visual bell,
	bel@, use=wy325-w,
#
# lines 43  columns 80
#
wy325-43|wyse325-43|Wyse-325 43 lines,
	lh@, lines#43, lw@, nlab@,
	pln@, use=wy325,
#
# lines 43  columns 132
#
wy325-43w|wyse325-43w|Wyse-325 43 lines wide mode,
	lh@, lines#43, lw@, nlab@,
	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
# lines 43  columns 132  vb
#
wy325-43w-vb|wy325-43wvb|Wyse-325 43 lines wide mode visual bell,
	bel@, use=wy325-w,

#	Wyse 370 -- 24 line screen with status line.
#
#	The terminal may have to be set for 8 data bits and 2 stop
#	bits for the arrow keys to work.
#
#	If you change keyboards the terminal will send different
#	escape sequences.
#	The following definition is for the basic terminal without
#	function keys.
#
#	<u0> -> enter Tektronix 4010/4014 mode
#	<u1> -> exit  Tektronix 4010/4014 mode
#	<u2> -> enter ASCII mode (from any ANSI mode)
#	<u3> -> exit  ASCII mode (goto native ANSI mode)
#	<u4> -> enter Tek 4207 ANSI mode (from any ANSI mode)
#	<u5> -> exit  Tek 4207 mode (goto native ANSI mode)
#
# Bug: The <op> capability resets attributes.
wy370-nk|Wyse 370 without function keys,
	am, ccc, hs, mc5i, mir, msgr, xenl, xon,
	colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>,
	dclk=\E[31h, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
	dsl=\E[40l, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>,
	el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0,
	flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
	home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH,
	ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
	ind=\n$<2>,
	initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e
	      %p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3
	      %{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}
	      %<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;
	      %{1}%+%+%+%dw,
	invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>,
	is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h,
	is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i,
	mc5=\E[5i,
	oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w
	   \E[66;5;51w\E[66;6;61w\E[66;7;64w,
	op=\E[m, rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O,
	rmam=\E[?7l, rmclk=\E[31l, rmcup=\E[ R, rmir=\E[4l,
	rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\E[13l\E[3l\E!p\E[?4i, rs2=\E[35h\E[?3l$<8>,
	rs3=\E[?5l, sc=\E7, setb=\E[62;%p1%dw, setf=\E[61;%p1%dw,
	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
	smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH,
	u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B,
	u4=\E[92;76"p, u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd,
#
#	Function key set for the ASCII (wy-50 compatible) keyboard
#	This is the default 370.
#
wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i,
	kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP,
	knp=\E[U, kpp=\E[V, use=wy370-nk,
#
#	Function key set for the VT-320 (and wy85) compatible keyboard
#
wy370-105k|Wyse 370 with 105 key keyboard,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
	khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
	lf4=PF4, use=vt220+vtedit, use=wy370-nk,
	use=vt220+keypad,
#
#	Function key set for the PC compatible keyboard
#
wy370-EPC|Wyse 370 with 102 key keyboard,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk,
#
#	Wyse 370 with visual bell.
wy370-vb|Wyse 370 with visible bell,
	bel@, use=wy370,
#
#	Wyse 370 in 132-column mode.
wy370-w|Wyse 370 in 132-column mode,
	cols#132, wsl#132,
	rs2=\E[35h\E[?3h$<70>, use=wy370,
#
#	Wyse 370 in 132-column mode with visual bell.
wy370-wvb|Wyse 370 with visible bell 132-columns,
	flash=\E[30h\E\,$<300/>\E[30l, use=wy370-w,
wy370-rv|Wyse 370 reverse video,
	rs3=\E[32h\E[?5h, use=wy370,
#
#	Wyse 99gt Tektronix 4010/4014 emulator,
#
wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator,
	am, os,
	cols#74, lines#35,
	bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s,
	cup=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}
	    %&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}
	    %/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/
	    %{31}%&%{64}%+%c\037,
	cuu1=^K, ff=^L,
	hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
	   \037,
	home=^]7`x @\037,
	hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
	   \037,
	is2=\E8, nel=\r\n, u0=\E~>\E8, u1=\E[42h,
#
#	Wyse 160 Tektronix 4010/4014 emulator,
#
wy160-tek|Wyse 160 Tektronix 4010/4014 emulator,
	cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}
	    %&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}
	    %/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/
	    %{31}%&%{64}%+%c\037,
	home=^]8`g @\037, use=wy99gt-tek,
#
#	Wyse 370 Tektronix 4010/4014 emulator,
#
wy370-tek|Wyse 370 Tektronix 4010/4014 emulator,
	am, os,
	cols#80, lines#36,
	bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s,
	cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/
	    %Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}
	    %/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037,
	cuu1=^K, ff=^L,
	hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
	   \037,
	home=^]8g @\037,
	hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
	   \037,
	is2=\E8, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^I, kcuu1=^K,
	nel=\r\n, u0=\E[?38h\E8, u1=\E[?38l\E)0,

# Vendor-supplied Wyse entries end here.

#
#TITLE:  TERMINFO ENTRY WY520
#DATE:   8/5/93
# The WY520 terminfo is based on the WY285 entry published on the WYSE
# BBS with the addition of more function keys and special keys.
#
#               rs1 -> set personality
#               rs2 -> set number of columns
#               rs3 -> set number of lines
#               is1 -> select the proper font
#               is2 -> do the initialization
#               is3 -> If this string is empty then rs3 gets sent.
#
#       Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard
#       - The BS key is programmed to generate BS in smcup since
#         is2 doesn't seem to work.
#       - Remove and shift/Remove: delete a character
#       - Insert : enter insert mode
#       - Find   : delete to end of file
#       - Select : clear a line
#       - F11, F12, F13: send default sequences (not ESC, BS, LF)
#       - F14 : Home key
#       - Bottom status line (host writable line) is used.
#       - smkx,rmkx are removed because this would put the numeric
#         keypad in Dec application mode which doesn't seem to work
#         with SCO applications.
#
wy520|wyse520|Wyse 520,
	am, hs, km, mc5i, mir, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<30>,
	dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[0$~,
	ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K,
	enacs=\E)0, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%d`, ht=^I,
	hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>,
	il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h,
	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[1~, kel=\E[4~,
	kent=\EOM, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
	lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
	rmso=\E[m, rmul=\E[24m,
	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h,
	smcup=\E[ Q\E[?67;8h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
	vpa=\E[%i%p1%dd, use=vt220+vtedit, use=vt220+keypad,
#
#       Wyse 520 with 24 data lines and status (terminal status)
wy520-24|wyse520-24|Wyse 520 with 24 data lines,
	hs@,
	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
	use=wy520,
#
#       Wyse 520 with visual bell.
wy520-vb|wyse520-vb|Wyse 520 with visible bell,
	flash=\E[30h\E\,$<100/>\E[30l, use=wy520,
#
#       Wyse 520 in 132-column mode.
wy520-w|wyse520-w|Wyse 520 in 132-column mode,
	cols#132, wsl#132,
	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
	ip=$<7>, rs2=\E[35h\E[?3h, use=wy520,
#
#       Wyse 520 in 132-column mode with visual bell.
wy520-wvb|wyse520-wvb|Wyse 520 with visible bell 132-columns,
	flash=\E[30h\E\,$<100/>\E[30l, use=wy520-w,
#
#
#       Wyse 520 emulating a vt420 7 bit mode.
#       The DEL key is programmed to generate BS in is2.
#       With EPC keyboard.
#       - 'End' key will clear till end of line on EPC keyboard
#       - Shift/End : ignored.
#       - Insert : enter insert mode.
#       - Delete : delete a character (have to change interrupt character
#                  to CTRL-C: stty intr '^c') for it to work since the
#                  Delete key sends 7FH.
wy520-epc|wyse520-epc|Wyse 520 with EPC keyboard,
	kdch1=^?, kel=\E[4~, kend=\E[4~, kf0=\E[21~, kf1=\E[11~,
	kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, khome=\E[H,
	use=wy520,
#
#       Wyse 520 with 24 data lines and status (terminal status)
#       with EPC keyboard.
wy520-epc-24|wyse520-pc-24|Wyse 520 with 24 data lines and EPC keyboard,
	hs@,
	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
	use=wy520-epc,
#
#       Wyse 520 with visual bell.
wy520-epc-vb|wyse520-pc-vb|Wyse 520 with visible bell and EPC keyboard,
	flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc,
#
#       Wyse 520 in 132-column mode.
wy520-epc-w|wyse520-epc-w|Wyse 520 in 132-column mode with EPC keyboard,
	cols#132, wsl#132,
	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
	ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc,
#
#       Wyse 520 in 132-column mode with visual bell.
wy520-epc-wvb|wyse520-p-wvb|Wyse 520 with visible bell 132-columns and EPC keyboard,
	flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc-w,
#
#       Wyse 520 in 80-column, 36 lines
wy520-36|wyse520-36|Wyse 520 with 36 data lines,
	hs@,
	lines#36,
	dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
	use=wy520,
#
#       Wyse 520 in 80-column, 48 lines
wy520-48|wyse520-48|Wyse 520 with 48 data lines,
	hs@,
	lines#48,
	dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
	use=wy520,
#
#       Wyse 520 in 132-column, 36 lines
wy520-36w|wyse520-36w|Wyse 520 with 132 columns and 36 data lines,
	cols#132, wsl#132,
	rs2=\E[?3h,
	rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
	use=wy520-36,
#
#       Wyse 520 in 132-column, 48 lines
wy520-48w|wyse520-48w|Wyse 520 with 48 data lines,
	cols#132, wsl#132,
	rs2=\E[?3h,
	rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
	use=wy520-48,
#
#
#       Wyse 520 in 80-column, 36 lines with EPC keyboard
wy520-36pc|wyse520-36pc|Wyse 520 with 36 data lines and EPC keyboard,
	hs@,
	lines#36,
	dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
	use=wy520-epc,
#
#       Wyse 520 in 80-column, 48 lines with EPC keyboard
wy520-48pc|wyse520-48pc|Wyse 520 with 48 data lines and EPC keyboard,
	hs@,
	lines#48,
	dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
	use=wy520-epc,
#
#       Wyse 520 in 132-column, 36 lines with EPC keyboard
wy520-36wpc|wyse520-36wpc|Wyse 520 with 36 data lines and EPC keyboard,
	cols#132, wsl#132,
	rs2=\E[?3h,
	rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
	use=wy520-36pc,
#
#       Wyse 520 in 132-column, 48 lines with EPC keyboard
wy520-48wpc|wyse520-48wpc|Wyse 520 with 48 data lines and EPC keyboard,
	cols#132, wsl#132,
	rs2=\E[?3h,
	rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
	use=wy520-48pc,

# From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
# (wyse-vp: removed <if=/usr/share/tabset/wyse-adds>, there's no such
# file and we don't know what <hts> is -- esr)
wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW,
	dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=\n,
	is2=\E`:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=\n, kcuf1=^F,
	kcuu1=^Z, khome=^A, ll=^A^Z, nel=\r\n, rmir=\Er, rmso=^O,
	rmul=^O, rs1=\E`:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N,
	smul=^N,

wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
	is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>,
	use=wy75,

# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
wy100q|Wyse 100 for Quotron,
	OTbs,
	cols#80, lines#24, xmc#1,
	cbt=\EI, clear=^Z, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@,
	is2=\E`:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,

#### Kermit terminal emulations
#
# Obsolete Kermit versions may be listed in the section describing obsolete
# non-ANSI terminal emulators later in the file.
#

# KERMIT standard all versions.
# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 9-25-84
kermit|standard kermit,
	OTbs,
	cols#80, lines#24,
	clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH, is2=K0 Standard Kermit  9-25-84\n,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
kermit-am|standard kermit plus auto-margin,
	am,
	is2=K1 Standard Kermit plus Automatic Margins\n,
	use=kermit,
# IBMPC Kermit 1.2.
# Bugs: <ed>, <el>: do not work except at beginning of line!  <clear> does
# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
# line).
# From: greg small <gts@populi.berkeley.edu> 8-30-84
pckermit|pckermit12|UCB IBMPC Kermit 1.2,
	am,
	lines#25,
	clear=\EH\EJ, ed@, el@,
	is2=K2 UCB IBMPC Kermit 1.2  8-30-84\n, use=kermit,
# IBMPC Kermit 1.20
# Cannot use line 25, now acts funny like ansi special scrolling region.
# Initialization must escape from that region by cursor position to line 24.
# Cannot use character insert because 1.20 goes crazy if insert at col 80.
# Does not use :am: because autowrap is lost when kermit dropped and restarted.
# From: greg small <gts@populi.berkeley.edu> 12-19-84
pckermit120|UCB IBMPC Kermit 1.20,
	it#8, lines#24,
	cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I,
	il1=\EL,
	is2=\EO\Eq\EJ\EY7\sK3\sUCB\sIBMPC\sKermit\s1.20\s\s12-19-84
	    \n,
	rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit,
# MS-DOS Kermit 2.27 for the IBMPC
# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
# Cannot use line 25, now acts funny like ansi special scrolling region.
# Initialization must escape from that region by cursor position to line 24.
# Does not use am: because autowrap is lost when kermit dropped and restarted.
# Reverse video for standout like H19.
# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 3-17-85
msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
	OTbs, am@,
	cols#80, it#8, lines#24,
	clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK,
	home=\EH, ht=^I, il1=\EL,
	is2=\EO\Eq\EG\Ew\EJ\EY7\sK4\sMS\sKermit\s2.27\sfor\sthe
	    \sIBMPC\s3-17-85\n,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek,
	rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep,
# MS-DOS Kermit 2.27 with automatic margins
# From:	greg small <gts@populi.berkeley.edu> 3-17-85
msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins,
	am,
	cvvis=\EO\Eq\EG\EvK5,
	is2=\EO\Eq\EG\Ev\EJ\EY7\sK5\sMS\sKermit\s2.27\s+automatic
	    \smargins\s3-17-85\n,
	use=msk227,
# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
# Automatic margins now default.  Use ansi <sgr> for highlights.
# Define function keys.
# (msk22714: removed obsolete ":kn#10:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 3-17-85
msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC,
	am,
	bold=\E[1m, cvvis=\EO\Eq\EG\EvK6,
	is2=\EO\Eq\EG\Ev\EJ\EY7\sK6\sMS\sKermit\s2.27\sUCB\s227.14
	    \sIBM\sPC\s3-17-85\n,
	kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6,
	kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smso=\E[1m, smul=\E[4m, use=mskermit227,
# This was designed for a VT320 emulator, but it is probably a good start
# at support for the VT320 itself.
# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
vt320-k3|MS-Kermit 3.00's vt320 emulation,
	am, eslok, hs, km, mir, msgr, xenl,
	cols#80, it#8, lines#49, pb#9600, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cmdch=\E,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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,
	dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[
	      ?5l,
	fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~,
	kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=\r\n, rc=\E8,
	rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\E(B\E)B\E>\E\sF\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h
	    \E[4i\E[?4i\E[m\E[r\E[2$~,
	sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd, use=vt220+cvis,

# From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991
# ACS capabilities from Philippe De Muyter  <phdm@info.ucl.ac.be> 30 May 1996
# (I removed a bogus boolean :mo: and added <msgr>, <smam>, <rmam> -- esr)
vt320-k311|DEC vt320 series as defined by kermit 3.11,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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,
	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
	flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>,
	ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
	lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt100, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
	smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH,
	use=vt220+cvis,

######## NON-ANSI TERMINAL EMULATIONS
#

#### Avatar
#
# These entries attempt to describe Avatar, a terminal emulation used with
# MS-DOS bulletin-board systems.  It was designed to give ANSI-like
# capabilities, but with cheaper (shorter) control sequences.  Messy design,
# excessively dependent on PC idiosyncrasies, but apparently rather popular
# in the BBS world.
#
# No color support.  Avatar doesn't fit either of the Tektronix or HP color
# models that terminfo knows about.  An Avatar color attribute is the
# low 7 bits of the IBM-PC display-memory attribute.  Bletch.
#
# I wrote these entries while looking at the Avatar spec.  I don't have
# the facilities to test them.  Let me know if they work, or don't.
#
# Avatar escapes not used by these entries (because maybe you're smarter
# and more motivated than I am and can figure out how to wrap terminfo
# around some of them, and because they are weird enough to be funny):
#				level 0:
# ^L		-- clear window/reset current attribute to default
# ^V^A%p1%c	-- set current color attribute, parameter decodes as follows:
#
#      bit:         6   5   4   3   2   1   0
#                   |       |   |   |       |
#                   +---+---+   |   +---+---+
#                       |       |       |
#                       |       |  foreground color
#                       |  foreground intensity
#                  background color
#				level 0+:
# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c	-- scroll (p2,p3) to (p4,p5) up by p1 lines
# ^V^K%p1%c%p2%c%p3%c%p4%c%p5%c	-- scroll (p2,p3) to (p4,p5) down by p1 lines
# ^V^L%p1%c%p2%c%p3%c		-- clear p2 lines and p3 cols w/attr %p1
# ^V^M%p1%c%p2%c%p3%c%p4%c	-- fill p3 lines & p4 cols w/char p2+attr %p1
# (^V^L and ^V^M set the current attribute as a side-effect.)
# ^V ^Y <a> [...] <c>	-- repeat pattern. <a> specifies the number of bytes
#			   in the pattern, <c> the number of times the pattern
#			   should be repeated. If either value is 0, no-op.
#			   The pattern can contain Avatar console codes,
#			   including other ^V ^Y patterns.
#				level 1:
# ^V^O		-- clockwise mode on; turn print direction right each time you
#		   hit a window edge (yes, really).  Turned off by CR
# ^V^P		-- no-op
# ^V^Q%c	-- query the driver
# ^V^R		-- driver reset
# ^V^S		-- Sound tone (PC-specific)
# ^V^T			-- change highlight at current cursor position to %c
# ^V^U%p1%c%p2%c	-- highlight window <a> with attribute <b>
# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c
#			-- define window
#
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
# (The <blink>/<bold>/<rev>/<smacs>/<smul>/<smso> capabilities exist only to
# tell ncurses that the corresponding highlights exist; it should use <sgr>,
# which is the only method that will actually work for multiple highlights.)
#
# Update by TD - 2004: half of this was inconsistent.  Found documentation
# and repaired most of the damage.  sgr0 is probably incorrect, but the
# available documentation gives no clues for a workable string.
avatar0|avatar terminal emulator level 0,
	am, bce, msgr,
	cols#80, it#8, lines#25,
	blink=^V^B, bold=^V^A^P, cr=\r, cub1=^V^E, cud1=^V^D,
	cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G,
	ind=\n, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap,
	rmacs@, rs2=^L,
	sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?
	    %p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t
	    %{16}%|%;%;%c%;%?%p4%t\026\002%;,
	sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A,
	use=klone+acs,
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
avatar0+|avatar terminal emulator level 0+,
	dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0,
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
avatar|avatar1|avatar terminal emulator level 1,
	civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+,
	rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+,

#### RBcomm
#
# RBComm is a lean and mean terminal emulator written by the Interrupt List
# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early
# '90s), especially in the BBS world, and still has some loyal users due to
# its very small memory footprint and to a cute macro language.
rbcomm|IBM PC with RBcomm and EMACS keybindings,
	am, bw, mir, msgr, xenl,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=^L, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^C, cuf1=^B,
	cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W,
	dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I,
	il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m,
	is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H,
	kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=\r\ED,
	rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=,
	rmir=^], rmkx=\E>, rmso=^U, rmul=^U,
	rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m,
	smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T,
	use=vt220+cvis,
rbcomm-nam|IBM PC with RBcomm without autowrap,
	am@,
	bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
	is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
	kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm,
rbcomm-w|IBM PC with RBcomm in 132 column mode,
	cols#132,
	bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
	is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
	kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm,

######## LCD DISPLAYS
#

#### Matrix Orbital
# from: Eric Z. Ayers  (eric@ale.org)
#
# Matrix Orbital 20x4 LCD display
# Command Character is 0xFE (decimal 254, octal 376)
#
# On this device, cursor addressability isn't possible.  The LCD expects:
#      0xfe G <col> <row>
#      for cup: %p1 == row and %p2 is column
#
# This line:
#	cup=\376G%p2%c%p1%c
# LOOKS like it will work, but sometimes only one of the two numbers is sent.
# See the terminfo (5) manpage commented regarding 'Terminals which use "%c"'.
#
# Alas, there is no cursor upline capability on this display.
#
# These entries add some 'sanity stuff' to the clear function.  That is, it
# does a 'clear' and also turns OFF auto scroll, turns ON Auto Line Wrapping,
# and turns off the cursor blinking and stuff like that.
#
# NOTE: calling 'beep' turns on the backlight (bell)
# NOTE: calling 'flash' turns it on and back off (visual bell)
#
MtxOrb|generic Matrix Orbital LCD display,
	bel=\376B\001, clear=\376X\376C\376R\376K\376T,
	cnorm=\376K\376T, cub1=\376L, cuf1=\376M,
	flash=\376B\001$<200>\376F, home=\376H,
MtxOrb204|20x4 Matrix Orbital LCD display,
	cols#20, lines#4, use=MtxOrb,
MtxOrb162|16x2 Matrix Orbital LCD display,
	cols#16, lines#2, use=MtxOrb,
# The end

######## OLDER TERMINAL TYPES
#
# This section is devoted to older commercial terminal brands that are now
# discontinued, but known to be still in use or represented by emulations.
#

#### AT&T (att, tty)
#
# This section also includes Teletype-branded VDTs.
#
# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now
# Boundless Technologies); for details, see the header comment on the ADDS
# section.
#
# These are AT&T's official terminfo entries.  All-caps aliases have been
# removed.
#
att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode,
	am, eo, mir, msgr, xon,
	cols#80, it#8, lines#24,
	bel=^G, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcbt=\E[Z, kclr=\E[J,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, kf11=\E[11r,
	kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, kf15=\E[15r,
	kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r,
	kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, khome=\E[H,
	kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
	rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h,
	smso=\E[7m,
att2350|AT&T 2350 Video Information Terminal 80 column mode,
	mc0@, mc4@, mc5@, use=att2300,

# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
# Seems upward compatible with vt100, plus ins/del line/char.
# On sgr, the protection parameter is ignored.
# No check is made to make sure that only 3 parameters are output.
#	standout= reverse + half-intensity = 3 | 5.
#	bold= reverse + underline = 2 | 3.
# note that half-bright blinking doesn't look different from normal blinking.
# NOTE:you must program the function keys first, label second!
# (att4410: a BSD entry has been seen with the following capabilities:
# <is2=\E[?6l>, <kf1=\EOc>, <kf2=\EOd>, <kf3=\EOe>, <kf4=\EOg>,
# <kf6=\EOh>, <kf7=\EOi>, <kf8=\EOj>, -- esr)
att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
	am, hs, mir, msgr, xon,
	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
	acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyz
	     z{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m,
	dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I,
	ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, is1=\E[?3l\E)0,
	is3=\E[1;03q\s\s\sf1\s\s\s\s\s\s\s\s\s\s\s\EOP\E[2;03q\s\s
	    \sf2\s\s\s\s\s\s\s\s\s\s\s\EOQ\E[3;03q\s\s\sf3\s\s\s\s
	    \s\s\s\s\s\s\s\EOR\E[4;03q\s\s\sf4\s\s\s\s\s\s\s\s\s\s
	    \s\EOS\E[5;03q\s\s\sf5\s\s\s\s\s\s\s\s\s\s\s\EOT\E[6;03q
	    \s\s\sf6\s\s\s\s\s\s\s\s\s\s\s\EOU\E[7;03q\s\s\sf7\s\s
	    \s\s\s\s\s\s\s\s\s\EOV\E[8;03q\s\s\sf8\s\s\s\s\s\s\s\s
	    \s\s\s\EOW,
	kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
	kf6=\EOU, kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H,
	ll=\E[24H, nel=\r\n,
	pfx=\E[%p1%1d;%p2%l%2.2dq\s\s\sf%p1%1d\s\s\s\s\s\s\s\s\s\s
	    \s%p2%s,
	pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
	sc=\E7,
	sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
	tsl=\E7\E[25;%p1%{1}%+%dH,

att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
	cols#132, wsl#132,
	is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1,

att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2,
	OTbs,
	pfx=\E[%p1%d;%p2%l%02dq   f%p1%d           %p2%s,
	use=att5410v1,

att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode,
	cols#132, wsl#132,
	is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410,

# 5410 in terms of a vt100
# (v5410: added <rmam>/<smam> based on init string -- esr)
v5410|att5410 in terms of a vt100,
	am, mir, msgr, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, dch1=\E[P,
	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ich1=\E[@,
	il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
	use=vt100+fnkeys,

#
# Teletype Model 5420 -- A souped up 5410, with multiple windows,
# even! the 5420 has three modes: scroll, window or page mode
# this terminfo should work in scroll or window mode, but doesn't
# take advantage of any of the differences between them.
#
# Has memory below (2 lines!)
# 3 pages of memory (plus some spare)
# The 5410 sequences for <cup>, <cvvis>, <dch>, <dl>, <ech>, <flash>, <home>,
# <hpa>, <hts> would work for these, but these work in both scroll and window
# mode... Unset insert character so insert mode works
# <is1> sets 80 column mode,
# <is2> escape sequence:
# 1) turn off all fonts
# 2) function keys off, keyboard lock off, control display off,
#    insert mode off, erasure mode off,
# 3) full duplex, monitor mode off, send graphics off, nl on lf off
# 4) reset origin mode
# 5) set line wraparound
# 6) exit erasure mode, positional attribute mode, and erasure extent mode
# 7) clear margins
# 8) program ENTER to transmit ^J,
# We use \212 to program the ^J because a bare ^J will get translated by
# UNIX into a CR/LF. The enter key is needed for AT&T uOMS.
#     1      2            3              4     5     6    7  8
# <is3> set screen color to black,
# No representation in terminfo for the delete word key: kdw1=\Ed
# Key capabilities assume the power-up send sequence...
# This <rmcup> is not strictly necessary, but it helps maximize
# memory usefulness: <rmcup=\Ez>,
# Alternate sgr0:	<sgr0=\E[m\EW^O>,
# Alternate sgr:	<sgr=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;>,
# smkx programs the SYS PF keys to send a set sequence.
# It also sets up labels f1, f2, ..., f8, and sends edit keys.
# This string causes them to send the strings <kf1>-<kf8>
# when pressed in SYS PF mode.
# (att4415: I added <rmam>/<smam> based on the init string -- esr)
att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
	OTbs, db, mir, xon,
	lh#2, lm#78, lw#8, nlab#8, wsl#55,
	cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD,
	cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx,
	cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP,
	dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD,
	flash=\E[?5h$<200>\E[?5l, home=\E[x,
	hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@,
	il=\E[%p1%dL, indn=\E[%p1%dE, is1=\E[?3l$<100>,
	is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
	    \E[4i\Ex\E[21;1j\212,
	is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M,
	kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd,
	kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
	kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
	kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
	lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?2i, mc4=\E[?9i,
	mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt,
	pfx=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV,
	rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[19;0j\E[21;1j\212, rmln=\E|,
	sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
	smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g,
	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
	use=att4410,

att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
	cols#132, lm#54, wsl#97,
	is1=\E[?3h$<100>, use=att4415,

att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv,
	flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415,

att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv,
	cols#132, lm#54, wsl#97,
	flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h,
	use=att4415,

# Note that this mode permits programming USER PF KEYS and labels
# However, when you program user pf labels you have to reselect
# user pf keys to make them appear!
att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels,
	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
	pfx=\E[%p1%d;%p2%l%02d;0;1q\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
	    \s%p2%s,
	pln=\E[%p1%d;0;0;1q%p2%:-16.16s,

att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels,
	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
	use=att4415,

att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels,
	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
	use=att4415-rv,

att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels,
	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
	use=att4415-w,

att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels,
	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
	use=att4415-w-rv,

att5420_2|AT&T 5420 model 2 80 cols,
	am, db, hs, mir, msgr, xon,
	cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j,
	cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
	cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J,
	el=\E[0K, el1=\E[1K, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
	home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	indn=\E[%p1%dE, invis=\E[8m,
	is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j
	    \E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j
	    \E[29;0j\E[1;24r,
	kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
	kel=\E[2K, kend=\Ez, kent=\n, kf1=\EOc, kf2=\EOd, kf3=\EOe,
	kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H,
	kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
	kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
	lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i,
	mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=\r\n,
	pfx=\E[%p1%d;%p2%l%02dq\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s\s%p2
	    %s\E~,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8,
	rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j,
	rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
	sc=\E7,
	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;%?%p8%t\EV%;,
	sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
att5420_2-w|AT&T 5420 model 2 in 132 column mode,
	cols#132,
	is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j
	    \E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j
	    \E[29;0j\E[1;24r,
	use=att5420_2,

att4418|att5418|AT&T 5418 80 cols,
	am, xon,
	cols#80, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r, 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[1P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H,
	ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\n,
	is1=\E[?3l, is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@,
	kcud1=\EU, kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h,
	kf10=\E[m, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I,
	kf15=\E[J, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E,
	kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j,
	kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8,
	rev=\E[7m, rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7,
	sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
att4418-w|att5418-w|AT&T 5418 132 cols,
	cols#132,
	is1=\E[?3h, use=att5418,

att4420|tty4420|Teletype 4420,
	OTbs, da, db, eo, msgr, ul, xon,
	cols#80, lines#24, lm#72,
	bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s,
	kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH,
	kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
	lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~,
	rmul=\EZ, smdc@, smso=\E}, smul=\E\\,

#  The following is a terminfo entry for the Teletype 4424
#  asynchronous keyboard-display terminal.  It supports
#  the vi editor.  The terminal must be set up as follows,
#
#	HIGHLIGHT DEFINITION	3-TONE
#	DISPLAY FUNCTION	GROUP III
#
#  The second entry below provides limited (a la adm3a)
#  operation under GROUP II.
#
#  This must be used with DISPLAY FUNCTION GROUP I or III
#	and HIGHLIGHT DEFINITION 3-TONE
# The terminal has either bold or blink, depending on options
#
# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
att4424|tty4424|Teletype 4424,
	OTbs, am, xon,
	cols#80, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EA,
	dch=\E[%p1%dP, dch1=\EP, dim=\EW, dl=\E[%p1%dM, dl1=\EM,
	ed=\EJ, el=\Ez, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=\n, is2=\E[20l\E[?7h,
	kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~,
	rmul=\EZ,
	sgr=\EX\E~\EZ\E4\E(B%?%p1%p3%|%t\E}%;%?%p2%t\E\\%;%?%p4%p6%|
	    %t\E3%;%?%p5%t\EW%;%?%p9%t\E(0%;,
	sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
	tbc=\EF,

att4424-1|tty4424-1|Teletype 4424 in display function group I,
	kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@,
	use=att4424,

# This entry is not one of AT&T's official ones, it was translated from the
# 4.4BSD termcap file.  The highlight strings are different from att4424.
# I have no idea why this is -- older firmware version, maybe?
# The following two lines are the comment originally attached to the entry:
# This entry appears to avoid the top line - I have no idea why.
# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp
att4424m|tty4424m|Teletype 4424M,
	am, da, db, mir,
	cols#80, it#8, lines#23,
	bel=^G, clear=\E[2;H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH\E[B, cuu1=\E[A, dch1=\EP,
	dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=\n, ip=$<2/>,
	is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, khome=\E[H, nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smso=\E[7m, smul=\E[4m,

# The Teletype 5425 is really version 2 of the Teletype 5420. It
# is quite similar, except for some minor differences. No page
# mode, for example, so all of the <cup> sequences used above have
# to change back to what's being used for the 5410. Many of the
# option settings have changed their numbering as well.
#
# This has been tested on a preliminary model.
#
# (att5425: added <rmam>/<smam> based on the init string -- esr)
att5425|tty5425|att4425|AT&T 4425/5425,
	am, da, db, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
	clear=\E[H\E[J, cnorm=\E[12;0j, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
	hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dE,
	invis=\E[8m, is1=\E<\E[?3l$<100>,
	is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
	    \E[4i\Ex\E[25;1j\212,
	is3=\E[?5l, kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[J,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc,
	kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi,
	kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T,
	kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i,
	nel=\r\n,
	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8,
	rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
	rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7,
	sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
	    %|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH,
	vpa=\E[%p1%{1}%+%dd,

att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels,
	smkx=\E[21;1j\E[25;4j\Eent, use=att4425,

att5425-w|att4425-w|tty5425-w|Teletype 4425/5425 in 132 column mode,
	cols#132, lm#54, wsl#97,
	is1=\E[?3h$<100>, use=tty5425,

# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
# I also added <rmam>/<smam> -- esr)
att4426|tty4426|Teletype 4426S,
	am, da, db, xon,
	cols#80, lines#24, lm#48,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V,
	cr=\r, 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=\EP,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H,
	hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^,
	il=\E[%p1%dL, il1=\EL, ind=\n, is1=\Ec\E[?7h,
	is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n, rc=\E8,
	rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l, rmso=\E[m,
	rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B,
	smacs=\E(0, smam=\E[?7h, smso=\E[5m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%p1%dd, use=ecma+index,

# Terminfo entry for the AT&T 510 A Personal Terminal
# Function keys 9 - 16 are available only after the
# screen labeled (soft keys/action blocks) are labeled.  Function key
# 9 corresponds to the leftmost touch target on the screen,
# function key 16 corresponds to the rightmost.
#
# This entry is based on one done by Ernie Rice at Summit, NJ and
# changed by Anne Gallup, Skokie, IL, ttrdc!anne
att510a|bct510a|AT&T 510A Personal Terminal,
	am, mir, msgr, xenl, xon,
	cols#80, lh#2, lines#24, lw#7, nlab#8,
	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
	civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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, cvvis=\E[11;2|, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J,
	el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I,
	hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E(B\E)1\E[2l,
	is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm,
	kf10=\EOd, kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh,
	kf15=\EOi, kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe,
	kf6=\ENf, kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T,
	mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, nel=\EE,
	pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmkx=\E[19;0|, rmso=\E[m, rmul=\E[m, sc=\E7,
	sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
	    %|%t;7%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,

# Terminfo entry for the AT&T 510 D Personal Terminal
# Function keys 9 through 16 are accessed by bringing up the
# system blocks.
# Function key 9 corresponds to the leftmost touch target on the screen,
# function key 16 corresponds to the rightmost.
#
# There are problems with soft key labeling.  These are due to
# strangenesses in the native terminal that are impossible to
# describe in a terminfo.
att510d|bct510d|AT&T 510D Personal Terminal,
	am, da, db, mir, msgr, xenl, xon,
	cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8,
	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
	clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub=\E[%p1%dD,
	cub1=^H, 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, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K,
	el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H,
	hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
	is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212, kLFT=\E[u,
	kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe,
	kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi, kf16=\EOj,
	kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh,
	kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2, mc0=\E[0i,
	mc4=\E[?8i, mc5=\E[?4i, mgc=\E:, nel=\EE,
	pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmso=\E[m,
	rmul=\E[m, rmxon=\E[29;1|, rs2=\E[5;0|, sc=\E7,
	sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
	    %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smgl=\E4, smgr=\E5, smir=\E[4h,
	smkx=\E[19;1|, smln=\E?, smso=\E[7m, smul=\E[4m,
	smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
	use=ansi+rep, use=ecma+index,

# (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
att500|att513|AT&T 513 using page mode,
	am, chts, mir, msgr, xenl, xon,
	cols#80, lh#2, lines#24, lw#8, nlab#8,
	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
	clear=\E[H\E[J, cnorm=\E[11;0|, cr=\r,
	csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	indn=\E[%p1%dE, invis=\E[8m,
	is1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l,
	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
	kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK,
	kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ,
	kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY,
	kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw,
	kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
	kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent,
	kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
	kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
	khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
	kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
	kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
	kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB,
	ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2,
	mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i,
	nel=\EE,
	pfkey=\E[%p1%d;%p2%l%d;3;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
	      \s%p2%s,
	pfloc=\E[%p1%d;%p2%l%d;2;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
	      \s%p2%s,
	pfx=\E[%p1%d;%p2%l%d;1;0p   F%p1%d           %p2%s,
	pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l,
	rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m,
	rmul=\E[m,
	rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|
	    \E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l,
	rs2=\E[5;0|, sc=\E7,
	sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h,
	smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, use=ansi+rep,

# 01-07-88
# printer must be set to EMUL ANSI to accept ESC codes
# <cuu1> stops at top margin
# <is1> sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font
#	and alt font ascii,wrap on,tabs cleared
# <is2> disables newline on LF,Emphasized off
# The <u0> capability sets form length
att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
	xhpa, xvpa,
	bufsz#0x2000, cols#132, cps#120, it#8, lines#66, orc#10,
	orhi#100, orl#12, orvi#72,
	cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w
	    %e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O
	    %t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t
	    \E[8w%;,
	cr=\r,
	csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfi
	     nnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1
	     %{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench
	     %e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1
	     %{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurit
	     y%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmos
	     aic%;,
	cud=\E[%p1%de, cud1=\n, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM,
	ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r,
	lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e
	    %p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;,
	rshm=\E[m,
	scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1
	    %{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}
	    %=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t
	    \E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t
	    \E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t
	    \E(}%;,
	smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds,
	smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m,
	u0=\E[%p1%dt, vpa=\E[%p1%dd,

# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL
# The following SET-UP modes are assumed for normal operation:
#	CR_DEF=CR	NL_DEF=INDEX	DUPLEX=FULL
# Other SET-UP modes may be set for operator convenience or communication
# requirements.  This termcap description is for the Resident Terminal Mode.
# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# The BRL entry also said: UNSAFE :ll=\E[70H:
att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
	am, xon,
	cols#88, it#8, lines#70, vt#3,
	bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=\r\n,
	rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ecma+index,

# 5620 terminfo  (2.0 or later ROMS with char attributes)
# The following SET-UP modes are assumed for normal operation:
#	DUPLEX=FULL	GEN_FLOW=ON	NEWLINE=INDEX	RETURN=CR
# Other SET-UP modes may be set for operator convenience or communication
# requirements.  This termcap description is for Resident Terminal Mode.  No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# assumptions: <ind> (scroll forward one line) is only done at screen bottom
# Be aware that older versions of the dmd have a firmware bug that affects
# parameter defaulting; for this terminal, the 0 in \E[0m is not optional.
# <msgr> is from an otherwise inferior BRL for this terminal.  That entry
# also has <ll>=\E[70H commented out and marked unsafe.
# For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>.
att5620|dmd|tty5620|ttydmd|5620|AT&T 5620 terminal 88 columns,
	OTbs, am, msgr, npc, xon,
	cols#88, it#8, lines#70,
	bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=\r, cub1=^H,
	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kbs=^H,
	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	khome=\E[H, kll=\E[70;1H, nel=\n,
	pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T,
	rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, sgr0=\E[0m,
	smso=\E[7m, smul=\E[4m, use=ecma+index,
att5620-24|tty5620-24|dmd-24|Teletype dmd 5620 in a 24x80 layer,
	lines#24, use=att5620,
att5620-34|tty5620-34|dmd-34|Teletype dmd 5620 in a 34x80 layer,
	lines#34, use=att5620,
# 5620 layer running the "S" system's downloaded graphics handler:
att5620-s|tty5620-s|layer|vitty|AT&T 5620 S layer,
	OTbs, OTpt, am,
	cols#80, it#8, lines#72,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED,
	el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=\n, kbs=^H, kclr=\E[2J,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
	kll=\E[70;1H,

# Entries for <kf15> thru <kf28> refer to the shifted system pf keys.
#
# Entries for <kf29> thru <kf46> refer to the alternate keypad mode
# keys:  = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER
att605|AT&T 605 80 column 102key keyboard,
	am, eo, xon,
	cols#80, lines#24, lw#8, nlab#8, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	il1=\E[L, ind=\n, invis=\E[8m,
	is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017,
	kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq,
	kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
	kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
	kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ,
	kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe,
	kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx,
	kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
	kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
	kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
	kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@,
	kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H,
	mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
	rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
	rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016,
	smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
	tsl=\E7\E[25;%i%p1%dx,
att605-pc|AT&T 605 in pc term mode,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N,
	kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
	kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I,
	rmsc=\E[50;0|$<400>, smsc=\E[?11l\E[50;1|$<250>,
	xoffc=g, xonc=e, use=att605,
att605-w|AT&T 605-w 132 column 102 key keyboard,
	cols#132, wsl#132,
	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, use=att605,
# (att610: I added <rmam>/<smam> based on the init string.  I also
# added <indn> and <rin> because the BSD file says the att615s have them,
# and the 615 is like a 610 with a big keyboard, and most of their other
# smart terminals support the same sequence -- esr)
att610|AT&T 610; 80 column; 98key keyboard,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	invis=\E[8m,
	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0,
	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
	kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
	kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, mc5=\E[?5i,
	nel=\EE,
	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p,
	rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smln=\E[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
	use=ecma+index, use=att610+cvis0,
att610-w|AT&T 610; 132 column; 98key keyboard,
	cols#132, wsl#132,
	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
	use=att610,

att610-103k|AT&T 610; 80 column; 103key keyboard,
	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
	kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
	kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
	kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
	kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r,
	kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx,
	khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl,
	knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V,
	kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq,
	krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo,
	kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610,
att610-103k-w|AT&T 610; 132 column; 103key keyboard,
	cols#132, wsl#132,
	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
	use=att610-103k,
att615|AT&T 615; 80 column; 98key keyboard,
	kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
	kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
	kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
	kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
	kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
	kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610,
att615-w|AT&T 615; 132 column; 98key keyboard,
	kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
	kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
	kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
	kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
	kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
	kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w,
att615-103k|AT&T 615; 80 column; 103key keyboard,
	kLFT=\E[ A, kRIT=\E[ @, use=att610-103k,
att615-103k-w|AT&T 615; 132 column; 103key keyboard,
	kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w,
# (att620: I added <rmam>/<smam> based on the init string and
# <rin>/<indn> from a BSD termcap -- esr)
att620|AT&T 620; 80 column; 98key keyboard,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	invis=\E[8m,
	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h,
	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H,
	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
	kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE,
	kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI,
	kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR,
	kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ,
	kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy,
	kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf,
	kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp,
	kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
	kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H,
	mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l,
	rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%t;7%;%?%p7%t;8%;m%?%p9%t\E)0\016%e\E(B\017%;,
	sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h,
	smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
	tsl=\E7\E[25;%i%p1%dx, use=ecma+index,
	use=att610+cvis0,
att620-w|AT&T 620; 132 column; 98key keyboard,
	cols#132, wsl#132,
	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
	use=att620,
att620-103k|AT&T 620; 80 column; 103key keyboard,
	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
	kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
	kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
	kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
	kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r,
	kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@,
	kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@,
	kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@,
	kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, kf9@,
	kfnd=\EOx, khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi,
	kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
	kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
	kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB,
	ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620,

att620-103k-w|AT&T 620; 132 column; 103key keyboard,
	cols#132, wsl#132,
	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
	use=att620-103k,

# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal
# The following SETUP modes are assumed for normal operation:
#	Local_Echo=Off	Gen_Flow=On	Return=CR	Received_Newline=LF
#	Font_Size=Large		Non-Layers_Window_Cols=80
#				Non-Layers_Window_Rows=60
# Other SETUP modes may be set for operator convenience or communication
# requirements.  Some capabilities assume a printer attached to the Aux EIA
# port.  This termcap description is for the Fixed Non-Layers Window.  No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# (att630: added <ich1>, <blink> and <dim> from a BSD termcap file -- esr)
att630|AT&T 630 windowing terminal,
	OTbs, am, da, db, mir, msgr, npc, xon,
	cols#80, it#8, lines#60, lm#0,
	bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[m, kbs=^H, kcbt=\E[Z,
	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[P, kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq,
	kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv,
	kf17=\ENw, kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{,
	kf22=\EN|, kf23=\EN}, kf24=\EN~, kf9=\ENo, khome=\E[H,
	kich1=\E[@, kil1=\E[L, mc4=\E[?4i, mc5=\E[?5i, nel=\r\n,
	pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\EM,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec, sc=\E7,
	sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7
	    %;m,
	sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	use=ecma+index,
att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
	lines#24, use=att630,

# This is the att700 entry for 700 native emulation of the AT&T 700
# terminal.  Comments are relative to changes from the 605V2 entry and
# att730 on which the entry is based.  Comments show the terminfo
# capability name, termcap name, and description.
#
# Here is what's going onm in the init string:
#	ESC [ 50;4|	set 700 native mode (really is 605)
# x	ESC [ 56;ps|	set lines to 24: ps=0; 40: ps=1 (plus status line)
#	ESC [ 53;0|	set GenFlow to Xon/Xoff
#	ESC [ 8 ;0|	set CR on NL
# x	ESC [ ? 3 l/h	set workspace: 80 col(l); 132 col(h)
#	ESC [ ? 4 l	jump scroll
#	ESC [ ? 5 l/h	video: normal (l); reverse (h)
#	ESC [ ?13 l	Labels on
#	ESC [ ?15 l	parity check = no
#	ESC [ 13 l	monitor mode off
#	ESC [ 20 l	LF on NL (not CRLF on NL)
#	ESC [ ? 7 h	autowrap on
#	ESC [ 12 h	local echo off
#	ESC ( B		GO = ASCII
#	ESC ) 0		G1 = Special Char & Line Drawing
#	ESC [ ? 31 l	Set 7 bit controls
#
# Note: Most terminals, especially the 600 family use Reverse Video for
# standout mode.  DEC also uses reverse video.  The VT100 uses bold in addition
# Assume we should stay with reverse video for 70..  However, the 605V2 exits
# standout mode with \E[m (all normal attributes).  The 730 entry simply
# exits reverse video which would leave other current attributes intact.  It
# was assumed the 730 entry to be more correct so rmso has changed.  The
# 605V2 has no sequences to turn individual attributes off, thus its setting
# and the rmso/smso settings from the 730.
#
# Note: For the same reason as above in rmso I changed exit under-score mode
# to specifically turn off underscore, rather than return to all normal
# attributes
#
# Note: The following pkey_xmit is taken from the 605V2 which contained the
# capability as pfxl.  It was changed here to pfx since pfxl
# will only compile successfully with Unix 4.0 tic.  Also note that pfx only
# allows strings to be parameters and label values must be programmed as
# constant strings.  Supposedly the pfxl of Version 4.0 allows both labels
# and strings to be parameters.  The 605V2 pfx entry should be examined later
# in this regard. For reference the 730 pfxl entry is shown here for comparison
# 730 pfx entry:
#     pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s
# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
#
# (for 4.0 tic)
#     pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
#
# (for <4.0 tic)
#     pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
#
# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9
#
# Port1 Interface
#
# modular 10 pin Connector
# Left side       Right side
# Pin 1 2 3 4 5 6 7 8 9 10
#
#        Key (notch) at bottom
#
# Pin    1 DSR
#        3 DCD
#        4 DTR
#        5 Sig Ground
#        6 RD
#        7 SD
#        8 CTS
#        9 RTS
#        10 Frame Ground
#
# The manual is 189 pages and is loaded with details about the escape codes,
# etc..... Available from AT&T CIC 800-432-6600...
# ask for Document number 999-300-660..
#
att700|AT&T 700 24x80 column display w/102key keyboard,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
	fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
	is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h
	    \E(B\E)0\E[?31l\E[0m\017,
	is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
	kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC,
	kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd,
	kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP,
	kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq,
	kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu,
	kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu,
	kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr,
	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg,
	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
	kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
	mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
	pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t\s\s\sF%p1%1d\s\s\s\s\s
	    \s\s\s\s\s\s%;%p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[27m,
	rmul=\E[24m, rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
	smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
	tsl=\E7\E[99;%i%p1%dx, use=ansi+rep, use=att610+cvis0,

# This entry was modified 3/13/90 by JWE.
# fixes include additions of <enacs>, correcting <rep>, and modification
# of <kHOM>.  (See comments below)
# att730 has status line of 80 chars
# These were commented out: <indn=\E[%p1%dS>, <rin=\E[%p1%dT>,
# the <kf25> and up keys are used for shifted system Fkeys
# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is
# currently the same as <khome> (unshifted HOME or \E[H).  On the 102, 102+1
# and 122 key keyboards, the 730's translation is \E[2J.  For consistency
# <kHOM> has been commented out.  The user can uncomment <kHOM> if using the
# 102, 102+1, or 122 key keyboards
#       kHOM=\E[2J,
# (att730: I added <rmam>/<smam> based on the init string -- esr)
att730|AT&T 730 windowing terminal,
	am, da, db, eslok, hs, mir, msgr, npc, xenl, xon,
	cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
	home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\ED, invis=\E[8m,
	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B,
	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
	kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
	kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{,
	kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD,
	kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH,
	kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ,
	kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf,
	kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ,
	kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg,
	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
	kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T,
	mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
	pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}
	    %<%tq\s\s\sSYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
	pfxl=\E[%p1%d;%p2%l%02d;0;0q%p3%:-16.16s%p2%s,
	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h,
	rmso=\E[27m, rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
	    %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smln=\E[?13l, smso=\E[7m, smul=\E[4m, smxon=\E[?21h,
	swidm=\E#6, tsl=\E7\E[;%i%p1%dx, use=ansi+rep,
	use=att610+cvis0,
att730-41|730MTG-41|AT&T 730-41 windowing terminal Version,
	lines#41, use=att730,
att730-24|730MTG-24|AT&T 730-24 windowing terminal Version,
	lines#24, use=att730,
att730r|730MTGr|AT&T 730 rev video windowing terminal Version,
	flash=\E[?5l$<200>\E[?5h,
	is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, use=att730,
att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version,
	lines#41, use=att730r,
att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version,
	lines#24, use=att730r,

# The following represents the screen layout along with the associated
# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
# not appear on the screen but are shown to reference the bezel buttons.
# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate
# position relative to the screen.
#
#
#
#      +----------------------------------------------------------------+
#      |                                                                |
# XXXX | kf0                                                       kf24 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf1                                                       kf23 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf2                                                       kf22 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf3                                                       kf21 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf4                                                       kf20 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf5                                                       kf19 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX | kf6                                                       kf18 | XXXX
#      |                                                                |
#      |                                                                |
# XXXX |                                                                | XXXX
#      |                                                                |
#      |                                                                |
#      +----------------------------------------------------------------+
#
#          XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX
#
# Note: XXXX represents the screen buttons
#                                                          CMD   REDRAW
#
#                                                          MAIL
#
# version 1 note:
#	The character string sent by key 'kf26' may be user programmable
#       to send either \E[16s, or \E[26s.
#       The character string sent by key 'krfr' may be user programmable
#       to send either \E[17s, or \E[27s.
#
# Depression of the "CMD" key sends    \E!    (kcmd)
# Depression of the "MAIL" key sends   \E[26s (kf26)
# "REDRAW" same as "REFRESH" (krfr)
#
# "kf" functions adds carriage return to output string if terminal is in
# 'new line' mode.
#
# The following are functions not covered in the table above:
#
#       Set keyboard character (SKC): \EPn1;Pn2w
#                       Pn1= 0 Back Space key
#                       Pn1= 1 Break key
#                       Pn2=   Program char (hex)
#
#       Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t
#                       Pn1=     Window number (1-39)
#                       Pn2-Pn5= Y;X;Y;X coordinates
#
#       Screen Selection (SSL): \E[Pnu
#                       Pn= Window number
#
#       Set Terminal Modes (SM): \E[Pnh
#                       Pn= 3 Graphics mode
#                       Pn= > Cursor blink
#                       Pn= < Enter new line mode
#                       Pn= = Enter reverse insert/replace mode
#                       Pn= ? Enter no scroll mode
#
#       Reset Terminal Mode (RM): \E[Pnl
#                       Pn= 3 Exit graphics mode
#                       Pn= > Exit cursor blink
#                       Pn= < Exit new line mode
#                       Pn= = Exit reverse insert/replace mode
#                       Pn= ? Exit no scroll mode
#
#       Screen Status Report (SSR): \E[Pnp
#                       Pn= 0 Request current window number
#                       Pn= 1 Request current window dimensions
#
#       Device Status Report (DSR): \E[6n    Request cursor position
#
#       Call Status Report (CSR): \E[Pnv
#                       Pn= 0 Call failed
#                       Pn= 1 Call successful
#
#       Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string
#                       Pn1= Button number to be loaded
#                       Pn2= Character count of "string"
#                       Pn3= Key mode being loaded:
#                               0= Unshifted
#                               1= Shifted
#                               2= Control
#                       String= Text string (15 chars max)
#
#       Screen Number Report (SNR): \E[Pnp
#                       Pn= Screen number
#
#       Screen Dimension Report (SDR): \E[Pn1;Pn2r
#                       Pn1= Number of rows available in window
#                       Pn2= Number of columns available in window
#
#       Cursor Position Report (CPR): \E[Pn1;Pn2R
#                       Pn1= "Y" Position of cursor
#                       Pn2= "X" Position of cursor
#
#       Request Answer Back (RAB): \E[c
#
#       Answer Back Response (ABR): \E[?;*;30;VSV
#                       *=  0 No printer available
#                       *=  2 Printer available
#                       V=  Software version number
#                       SV= Software sub version number
#	(printer-available field not documented in v1)
#
#       Screen Alignment Aid: \En
#
#       Bell (lower pitch): \E[x
#
#       Dial Phone Number: \EPdstring\
#                       string= Phone number to be dialed
#
#       Set Phone Labels: \EPpstring\
#                       string= Label for phone buttons
#
#       Set Clock: \EPchour;minute;second\
#
#       Position Clock: \EPsY;X\
#                       Y= "Y" coordinate
#                       X= "X" coordinate
#
#       Delete Clock: \Epr\
#
#       Programming The Function Buttons: \EPfPn;string\
#                       Pn= Button number (00-06, 18-24)
#                                         (kf00-kf06, kf18-kf24)
#                       string= Text to sent on button depression
#
# The following in version 2 only:
#
#       Request For Local Directory Data: \EPp12;\
#
#       Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\
#
#	Request for Local Directory Data in print format: \EPp13;\
#
#	Enable 'Prt on Line' mode: \022 (DC2)
#
#	Disable 'Prt on Line' mode: \024 (DC4)
#

# 05-Aug-86:
# The following Terminfo entry describes functions which are supported by
# the AT&T 5430/pt505 terminal software version 2 and later.
att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
	am, xon,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H,
	cnorm=\E[>l, cr=\r, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I,
	il=\E[%p1%dL, il1=\E[L, ind=\n,
	is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l,
	kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s,
	kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s,
	kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s,
	kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s,
	krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
	rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m,
	rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m,
	smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m,

# The following Terminfo entry describes functions which are supported by
# the AT&T 5430/pt505 terminal software version 1.
att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines,
	lines#24,
	mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505,
tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
	lines#22, use=att505,
#
#### ------------------ TERMINFO FILE CAN BE SPLIT HERE ---------------------
# This cut mark helps make life less painful for people running ncurses tic
# on machines with relatively little RAM.  The file can be broken in half here
# cleanly and compiled in sections -- no `use' references cross this cut
# going forward.
#

#### Ampex (Dialogue)
#
# Yes, these are the same people who are better-known for making audio- and
# videotape.  I'm told they are located in Redwood City, CA.
#

# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
# (ampex80: some capabilities merged in from SCO's entry -- esr)
ampex80|a80|d80|dialogue|dialogue80|Ampex dialogue 80,
	OTbs, am, bw, ul,
	cols#80, it#8, lines#24,
	bel=^G, cbt=\EI, clear=\E*$<75>, cr=\r, cub1=^H, cud1=\n,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE$<5*>, ind=\n, is2=\EA, rmso=\Ek, rmul=\Em,
	smso=\Ej, smul=\El, tbc=\E3,
# This entry was from somebody anonymous, Tue Aug  9 20:11:37 1983, who wrote:
ampex175|Ampex d175,
	am,
	cols#80, lines#24,
	bel=^G, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=\n,
	is2=\EX\EA\EF, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
	kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K,
	rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El,
# No backspace key in the main QWERTY cluster. Fortunately, it has a
# NEWLINE/PAGE key just above RETURN that sends a strange single-character
# code.  Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS
# mode), this key can be used as the erase key; I find I like this. Because
# some people and some systems may not, there is another termcap ("ampex175")
# that suppresses this little eccentricity by omitting the relevant capability.
ampex175-b|Ampex d175 using left arrow for erase,
	kbs=^_, use=ampex175,
# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
# (ampex210: removed obsolete ":kn#10:" -- esr)
ampex210|a210|Ampex a210,
	OTbs, am, hs, xenl,
	cols#80, it#8, lines#24, xmc#1,
	cbt=\EI, clear=\E*, cub1=^H, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX,
	fsl=\E.2, home=^^, ht=^I, ich1=\EQ,
	if=/usr/share/tabset/std, il1=\EE, invis@,
	is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H,
	kcud1=^V, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, khome=^^,
	tsl=\E.0\Eg\E}\Ef, use=adm+sgr,
# (ampex219: I added <rmam>/<smam> based on the init string, added <cvvis>
# from ampex219w, added <cnorm>=\E[?3l, irresistibly suggested by <cvvis>,
# and moved the padding to be *after* the caps -- esr)
ampex219|ampex-219|amp219|Ampex with automargins,
	hs, xenl,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z,
	clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=\r,
	csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B,
	cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
	cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>,
	el=\E[K$<3>, home=\E[H, ht=^I, ind=\n,
	is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~,
	kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
	rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>,
	rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
	smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>,
ampex219w|ampex-219w|amp219w|Ampex 132 cols,
	cols#132, lines#24,
	bel=^G, cr=\r, cud1=\n, ind=\n,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219,
# (ampex232: removed <if=/usr/share/tabset/ampex>, no file and no <hts> --esr)
ampex232|ampex-232|Ampex Model 232,
	am,
	cols#80, lines#24, xmc#1,
	cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET,
	flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>,
	invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L,
	kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
	kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
	kf9=^AI\r, khome=^^, use=adm+sgr,
# (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr)
ampex232w|Ampex Model 232 / 132 columns,
	cols#132, lines#24,
	is2=\E\034Eg\El, use=ampex232,

#### Ann Arbor (aa)
#
# Ann Arbor made dream terminals for hackers -- large screen sizes and huge
# numbers of function keys.  At least some used monitors in portrait mode,
# allowing up to 76-character screen heights!  They were reachable at:
#
#	Ann Arbor Terminals
#	6175 Jackson Road
#	Ann Arbor, MI 48103
#	(313)-663-8000
#
# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor
# can't be found on the Web; I fear they're long dead.  R.I.P.
#


# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
# Highly modified 6/22 by Mike O'Brien.
# split out into several for the various screen sizes by dave-yost@rand
# Modifications made 3/82 by Mark Horton
# Modified by Tom Quarles at UCB for greater efficiency and more diversity
# status line moved to top of screen, <flash> removed 5/82
# Some unknown person at SCO then hacked the init strings to make them more
# efficient.
#
# assumes the following setup:
#   A menu: 0000 1010  0001 0000
#   B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
#   C menu: 56   66   0    0    9600  0110 1100
#   D menu: 0110 1001   1   0
#
#	Briefly, the settings are for the following modes:
#	   (values are for bit set/clear with * indicating our preference
#	    and the value used to test these termcaps)
#	Note that many of these settings are irrelevant to the terminfo
#	and are just set to the default mode of the terminal as shipped
#	by the factory.
#
# A menu: 0000 1010  0001 0000
#	Block/underline cursor*
#	blinking/nonblinking cursor*
#	key click/no key click*
#	bell/no bell at column 72*
#
#	key pad is cursor control*/key pad is numeric
#	return and line feed/return for <cr> key *
#	repeat after .5 sec*/no repeat
#	repeat at 25/15 chars per sec. *
#
#	hold data until pause pressed/process data unless pause pressed*
#	slow scroll/no slow scroll*
#	Hold in area/don't hold in area*
#	functions keys have default*/function keys disabled on powerup
#
#	show/don't show position of cursor during page transmit*
#	unused
#	unused
#	unused
#
# B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
#	Baud rate (9600*)
#
#	2 bits of parity - 00=odd,01=even*,10=space,11=mark
#	1 stop bit*/2 stop bits
#	parity error detection off*/on
#
#	keyboard local/on line*
#	half/full duplex*
#	disable/do not disable keyboard after data transmission*
#
#	transmit entire page/stop transmission at cursor*
#	transfer/do not transfer protected characters*
#	transmit all characters/transmit only selected characters*
#	transmit all selected areas/transmit only 1 selected area*
#
#	transmit/do not transmit line separators to host*
#	transmit/do not transmit page tab stops tabs to host*
#	transmit/do not transmit column tab stop tabs to host*
#	transmit/do not transmit graphics control (underline,inverse..)*
#
#	enable*/disable auto XON/XOFF control
#	require/do not require receipt of a DC1 from host after each LF*
#	pause key acts as a meta key/pause key is pause*
#	unused
#
#	unused
#	unused
#	unused
#	unused
#
#	XON character (17*)
#	XOFF character (19*)
#
# C menu: 56   66   0    0    9600  0110 1100
#	number of lines to print data on (printer) (56*)
#
#	number of lines on a sheet of paper (printer) (66*)
#
#	left margin (printer) (0*)
#
#	number of pad chars on new line to printer (0*)
#
#	printer baud rate (9600*)
#
#	printer parity: 00=odd,01=even*,10=space,11=mark
#	printer stop bits: 2*/1
#	print/do not print guarded areas*
#
#	new line is: 01=LF,10=CR,11=CRLF*
#	unused
#	unused
#
# D menu: 0110 1001   1   0
#	LF is newline/LF is down one line, same column*
#	wrap to preceding line if move left from col 1*/don't wrap
#	wrap to next line if move right from col 80*/don't wrap
#	backspace is/is not destructive*
#
#	display*/ignore DEL character
#	display will not/will scroll*
#	page/column tab stops*
#	erase everything*/erase unprotected only
#
#	editing extent: 0=display,1=line*,2=field,3=area
#
#	unused
#

annarbor4080|aa4080|Ann Arbor 4080,
	OTbs, am,
	cols#80, lines#40,
	bel=^G, clear=\014$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=^_,
	cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t
	    %{12}%+%;%{64}%+%c,
	cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=\n, kbs=^^, kcub1=^H,
	kcud1=\n, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P,

# Strange Ann Arbor terminal from BRL
aas1901|Ann Arbor K4080 w/S1901 mod,
	am,
	cols#80, lines#40,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^N,
	home=^K, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, ll=^O\0c,
	nel=\r\n,

# If you're using the GNU termcap library, add
#	:cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp:
# to these capabilities.  This is the nonstandard GNU termcap scrolling
# capability, arguments are:
#   1. Total number of lines on the screen.
#   2. Number of lines above desired scroll region.
#   3. Number of lines below (outside of) desired scroll region.
#   4. Total number of lines on the screen, the same as the first parameter.
# The generic Ann Arbor entry is the only one that uses this.
aaa+unk|aaa-unk|Ann Arbor Ambassador (internal - don't use this directly),
	OTbs, am, km, mc5i, mir, xon,
	cols#80, it#8,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J$<156>, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^K, 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, ed=\E[J,
	el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
	hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL,
	il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8,
	is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z,
	kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK,
	kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP,
	kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT,
	kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC,
	kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI,
	khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i,
	mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, rev=\E[7m,
	rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E
	     \\,
	rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
	    %;%?%p7%t8;%;m,
	sgr0=\E[m,
	smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E
	     \\,
	smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%p1%{1}%+%dd, use=ansi+rep,

aaa+rv|Ann Arbor Ambassador in reverse video,
	blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m,
	is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
	rs1=\E[H\E[7m\E[J$<156>,
	sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%|%t7
	    ;%;%?%p7%t8;%;m\016,
	sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
# Ambassador with the DEC option, for partial vt100 compatibility.
aaa+dec|Ann Arbor Ambassador in DEC vt100 mode,
	acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}},
	csr=\E[%i%p1%d;%p2%dr, enacs=\E(B\E)0, rmacs=^O,
	sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p3%|%!%t7;%;%?
	    %p7%t8;%;m%?%p9%t\016%e\017%;,
	smacs=^N,
aaa-18|Ann Arbor Ambassador/18 lines,
	lines#18,
	is2=\E7\E[60;0;0;18p\E8,
	rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p,
	use=aaa+unk,
aaa-18-rv|Ann Arbor Ambassador/18 lines+reverse video,
	use=aaa+rv, use=aaa-18,
aaa-20|Ann Arbor Ambassador/20 lines,
	lines#20,
	is2=\E7\E[60;0;0;20p\E8,
	rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p,
	use=aaa+unk,
aaa-22|Ann Arbor Ambassador/22 lines,
	lines#22,
	is2=\E7\E[60;0;0;22p\E8,
	rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p,
	use=aaa+unk,
aaa-24|Ann Arbor Ambassador/24 lines,
	lines#24,
	is2=\E7\E[60;0;0;24p\E8,
	rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p,
	use=aaa+unk,
aaa-24-rv|Ann Arbor Ambassador/24 lines+reverse video,
	use=aaa+rv, use=aaa-24,
aaa-26|Ann Arbor Ambassador/26 lines,
	lines#26,
	is2=\E7\E[60;0;0;26p\E8,
	rmcup=\E[60;0;0;26p\E[26;1H\E[K,
	smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk,
aaa-28|Ann Arbor Ambassador/28 lines,
	lines#28,
	is2=\E7\E[60;0;0;28p\E8,
	rmcup=\E[60;0;0;28p\E[28;1H\E[K,
	smcup=\E[H\E[J$<156>\E[28;0;0;28p, use=aaa+unk,
aaa-30-s|aaa-s|Ann Arbor Ambassador/30 lines w/status,
	eslok, hs,
	lines#29,
	dsl=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K,
	fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8,
	rmcup=\E[60;1;0;30p\E[29;1H\E[K,
	smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K,
	tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
aaa-30-s-rv|aaa-s-rv|Ann Arbor Ambassador/30 lines+status+reverse video,
	use=aaa+rv, use=aaa-30-s,
aaa-s-ctxt|aaa-30-s-ctxt|Ann Arbor Ambassador/30 lines+status+save context,
	rmcup=\E[60;1;0;30p\E[59;1H\E[K,
	smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s,
aaa-s-rv-ctxt|aaa-30-s-rv-ct|Ann Arbor Ambassador/30 lines+status+save context+reverse video,
	rmcup=\E[60;1;0;30p\E[59;1H\E[K,
	smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv,
aaa|aaa-30|ambas|ambassador|Ann Arbor Ambassador/30 lines,
	lines#30,
	is2=\E7\E[60;0;0;30p\E8,
	rmcup=\E[60;0;0;30p\E[30;1H\E[K,
	smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk,
aaa-30-rv|aaa-rv|Ann Arbor Ambassador/30 lines in reverse video,
	use=aaa+rv, use=aaa-30,
aaa-30-ctxt|aaa-ctxt|Ann Arbor Ambassador/30 lines; saving context,
	rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
	use=aaa-30,
aaa-30-rv-ctxt|aaa-rv-ctxt|Ann Arbor Ambassador/30 lines reverse video; saving context,
	rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
	use=aaa+rv, use=aaa-30,
aaa-36|Ann Arbor Ambassador/36 lines,
	lines#36,
	is2=\E7\E[60;0;0;36p\E8,
	rmcup=\E[60;0;0;36p\E[36;1H\E[K,
	smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk,
aaa-36-rv|Ann Arbor Ambassador/36 lines+reverse video,
	use=aaa+rv, use=aaa-36,
aaa-40|Ann Arbor Ambassador/40 lines,
	lines#40,
	is2=\E7\E[60;0;0;40p\E8,
	rmcup=\E[60;0;0;40p\E[40;1H\E[K,
	smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk,
aaa-40-rv|Ann Arbor Ambassador/40 lines+reverse video,
	use=aaa+rv, use=aaa-40,
aaa-48|Ann Arbor Ambassador/48 lines,
	lines#48,
	is2=\E7\E[60;0;0;48p\E8,
	rmcup=\E[60;0;0;48p\E[48;1H\E[K,
	smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk,
aaa-48-rv|Ann Arbor Ambassador/48 lines+reverse video,
	use=aaa+rv, use=aaa-48,
aaa-60-s|Ann Arbor Ambassador/59 lines+status,
	eslok, hs,
	lines#59,
	dsl=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K,
	fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;60p\E8,
	tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
aaa-60-s-rv|Ann Arbor Ambassador/59 lines+status+reverse video,
	use=aaa+rv, use=aaa-60-s,
aaa-60-dec-rv|Ann Arbor Ambassador/DEC mode+59 lines+status+rev video,
	use=aaa+dec, use=aaa+rv, use=aaa-60-s,
aaa-60|Ann Arbor Ambassador/60 lines,
	lines#60,
	is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8,
	use=aaa+unk,
aaa-60-rv|Ann Arbor Ambassador/60 lines+reverse video,
	use=aaa+rv, use=aaa-60,
aaa-db|Ann Arbor Ambassador 30/destructive backspace,
	OTbs@,
	cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30,

guru|guru-33|guru+unk|Ann Arbor guru/33 lines 80 cols,
	lines#33,
	flash=\E[>59h$<100>\E[>59l,
	is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l,
	rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk,
guru+rv|guru changes for reverse video,
	flash=\E[>59l$<100>\E[>59h, is3=\E[>59h,
guru-rv|guru-33-rv|Ann Arbor guru/33 lines+reverse video,
	use=guru+rv, use=guru-33,
guru+s|guru status line,
	eslok, hs,
	dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l,
	rmcup=\E[255;1p\E[255;1H\E[K, smcup=,
	tsl=\E[>51h\E[1;%p1%dH\E[2K,
guru-nctxt|guru with no saved context,
	smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru,
guru-s|guru-33-s|Ann Arbor guru/33 lines+status,
	lines#32,
	is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J,
	smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
guru-24|Ann Arbor guru 24 lines,
	cols#80, lines#24,
	is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p,
	use=guru+unk,
guru-44|Ann Arbor guru 44 lines,
	cols#97, lines#44,
	is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p,
	use=guru+unk,
guru-44-s|Ann Arbor guru/44 lines+status,
	lines#43,
	is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J,
	smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
guru-76|guru with 76 lines by 89 cols,
	cols#89, lines#76,
	is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p,
	use=guru+unk,
guru-76-s|Ann Arbor guru/76 lines+status,
	cols#89, lines#75,
	is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J,
	smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
guru-76-lp|guru-lp|guru with page bigger than line printer,
	cols#134, lines#76,
	is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p,
	use=guru+unk,
guru-76-w|guru 76 lines by 178 cols,
	cols#178, lines#76,
	is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p,
	use=guru+unk,
guru-76-w-s|Ann Arbor guru/76 lines+status+wide,
	cols#178, lines#75,
	is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J,
	smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
guru-76-wm|guru 76 lines by 178 cols with 255 cols memory,
	cols#178, lines#76,
	is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p,
	use=guru+unk,
aaa-rv-unk|Ann Arbor unknown type,
	lh#0, lw#0, nlab#0,
	blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
	is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
	rs1=\E[H\E[7m\E[J,
	sgr=\E[%?%p6%t1;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p1%!%t
	    7;%;%?%p7%t8;%;m,
	sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,

#### Applied Digital Data Systems (adds)
#
# ADDS itself is long gone.  ADDS was bought by NCR, and the same group made
# ADDS and NCR terminals.  When AT&T and NCR merged, the engineering for
# terminals was merged again.  Then AT&T sold the terminal business to
# SunRiver, which later changed its  name to Boundless Technologies.  The
# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there
# as of early 1995) are at:
#
#	Boundless Technologies
#	100 Marcus Boulevard
#	Hauppauge, NY 11788-3762
#	Vox: (800)-231-5445
#	Fax: (516)-342-7378
#	Web: http://boundless.com
#
# Their voice mail used to describe the place as "SunRiver (formerly ADDS)".
# In 1995 Boundless acquired DEC's terminals business.
#

# Regent: lowest common denominator, works on all regents.
# (regent: renamed ":bc:" to ":le:" -- esr)
regent|Adds Regent Series,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F, cuu1=^Z,
	home=\EY\s\s, ind=\n, ll=^A,
# Regent 100 has a bug where if computer sends escape when user is holding
# down shift key it gets confused, so we avoid escape.
regent100|Adds Regent 100,
	xmc#1,
	bel=^G,
	cup=\013%p1%'\s'%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
	kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r,
	kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3,
	lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@,
	sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent,
regent20|Adds Regent 20,
	bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK,
	use=regent,
regent25|Adds Regent 25,
	bel=^G, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z, khome=^A,
	use=regent20,
regent40|Adds Regent 40,
	xmc#1,
	bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf1=^B1\r, kf2=^B2\r,
	kf3=^B3\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
	kf8=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6,
	lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P,
	smul=\E0`, use=regent25,
regent40+|Adds Regent 40+,
	is2=\EB, use=regent40,
# It uses a different code for mapping acs vs dim/blink.
regent60|regent200|adds200|Adds Regent 60,
	acsc=jLkDl@mHnhq`tXuTv\\wPxd, dch1=\EE, ed=\Ek,
	is2=\EV\EB, kbs=^H, kcbt=\EO, kdch1=\EE, kich1=\EF,
	krmir=\EF, rmacs=\E2, rmir=\EF, rmso=\ER\E0@\EV, smacs=\E1,
	smir=\EF, smso=\ER\E0P\EV, kF1=^B!\r, kF2=^B"\r, kF3=^B#\r,
	kF4=^B$\r, kF5=^B%\r, kF6=^B&\r, kF7=^B'\r, kF8=^B(\r,
	use=regent40+,
# From: <edward@onyx.berkeley.edu> Thu Jul  9 09:27:33 1981
# (viewpoint: added <kcuf1>, function key, and <dl1> capabilities -- esr)
viewpoint|addsviewpoint|ADDS Viewpoint,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L, cnorm=\017\E0`, cr=\r, cub1=^H, cud1=\n,
	cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
	cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>,
	ind=\n, is2=\017\E0`, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z,
	kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A,
	rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N,
# Some viewpoints have bad ROMs that foo up on ^O
screwpoint|ADDS Viewpoint with ^O bug,
	cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint,

# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92
# The <civis>/<cnorm>/<sgr>/<sgr0> strings were added by ESR from specs.
# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000,
# underline=01100000, rev=01010000, blink=01000010,dim=01000001,
# invis=01000100 and %c is the logical or of desired attributes.
# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(.
#
# Update by TD - 2004:
# Adapted from
#	https://web.archive.org/web/19990922005103/http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt
#
# COMMANDS                        ASCII CODE
#
# Address, Absolute               ESC,=,row,column
# Beep                            BEL
# Aux Port Enable                 ESC,@
# Aux Port Disable                ESC,A
# Backspace                       BS
# Cursor back                     BS
# Cursor down                     LF
# Cursor forward                  FF
# Cursor home                     RS
# Cursor up                       VT
# Cursor suppress                 ETB
# Cursor enable                   CAN
# Erase to end of line            ESC,T
# Erase to end of page            ESC,Y
# Erase screen                    SUB
# Keyboard lock                   SI
# Keyboard unlock                 SO
# Read current cursor position    ESC,?
# Set Attribute                   ESC,0,x  (see below for values of x)
# Tag bit reset                   ESC,(
# Tag bit set                     ESC,)
# Transparent Print on            ESC,3
# Transparent Print off           ESC,4
#
#
# ATTRIBUTES
#
# Normal                          @	0100
# Half Intensity                  A	0101
# Blinking                        B	0102
# Half Intensity Blinking         C	0103
# Reverse Video                   P	0120
# Reverse Video Half Intensity    Q	0121
# Reverse Video Blinking          R	0122
# Reverse Video Half Intensity
#    Blinking                     S	0123
# Underlined                      `	0140
# Underlined Half Intensity       a	0141
# Underlined Blinking             b	0142
# Underlined Half Intensity
#    Blinking                     c	0143
# Video suppress                  D	0104
vp3a+|viewpoint3a+|ADDS Viewpoint 3a+,
	am, bw,
	cols#80, it#8, lines#24,
	blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=\r,
	cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E),
	ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=\n, invis=\E0D\E),
	kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
	nel=\r\n, rev=\E0P\E), rmso=\E(,
	sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;
	    %?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t
	    %{1}%|%;%c%?%p7%tD%;\E)%e\E(%;,
	sgr0=\E(, smso=\E0Q\E), smul=\E0`\E),
vp60|viewpoint60|addsvp60|ADDS Viewpoint60,
	use=regent40,
#
# adds viewpoint 90 - from cornell
# Note:  emacs sends ei occasionally to insure the terminal is out of
#        insert mode. This unfortunately puts the viewpoint90 IN insert
#        mode.  A hack to get around this is <ich1=\EF\s\EF^U>.  (Also,
#   -    :ei=:im=: must be present in the termcap translation.)
#   -    <xhp> indicates glitch that attributes stick to location
#   -    <msgr> means it's safe to move in standout mode
#   -    <clear=\EG\Ek>: clears screen and visual attributes without affecting
#               the status line
# Function key and label capabilities merged in from SCO.
vp90|viewpoint90|ADDS Viewpoint 90,
	OTbs, bw, msgr, xhp,
	cols#80, lines#24,
	clear=\EG\Ek, cub1=^H, cud1=\n, cuf1=^F,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE,
	dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I,
	ich1=\EF \EF\025, ind=\n, kbs=^H, kcub1=^U, kcud1=\n,
	kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r,
	kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
	kf7=^B8\r, kf8=^B9\r, kf9=^B:\r, khome=^A, lf0=F1, lf1=F2,
	lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9,
	lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV,
	sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV,
# Note: if return acts weird on a980, check internal switch #2
# on the top chip on the CONTROL pc board.
adds980|a980|ADDS Consul 980,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\014$<1>\013@, cr=\r, cub1=^H, cud1=\n,
	cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d,
	dl1=\E\017$<13>, il1=\E\016$<13>, ind=\n, kf0=\E0, kf1=\E1,
	kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
	kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N,

#### C. Itoh Electronics
#
# As of 1995 these people no longer make terminals (they're still in the
# printer business).  Their terminals were all clones of the DEC VT series.
# They're located in Orange County, CA.
#

# CIT 80  - vt-52 emulator, the termcap has been modified to remove
#           the delay times and do an auto tab set rather than the indirect
#           file used in vt100.
cit80|cit-80|citoh 80,
	OTbs, am,
	cols#80, lines#24,
	clear=\E[H\EJ, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
	ind=\n, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
# From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
# (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr)
cit101|citc|C.itoh fast vt100,
	OTbs, am, xenl,
	cols#80, lines#24,
	bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	cvvis=\E7\E[U, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
	flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, il1=\E[L,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m,
# CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL
# The following termcap entry was created from the Callan cd100 entry.  The
# last two lines (with the capabilities in caps) are used by RM-cobol to allow
# full selection of combinations of reverse video, underline, and blink.
# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\
# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\
# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr)
cit101e|C. Itoh CIT-101e,
	OTbs, OTpt, am, mir, msgr,
	cols#80, it#8, lines#24,
	acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
	cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH,
	cuu1=\E[A, cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, if=/usr/share/tabset/vt100, il1=\E[L,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, kf6=\EOl,
	kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l,
	rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, smir=\E[4h,
	smkx=\E=, smso=\E[7m, smul=\E[4m,
# From: David S. Lawyer, June 1997:
# The CIT 101-e was made in Japan in 1983-4 and imported by CIE
# Terminals in Irvine, CA.  It was part of CITOH Electronics.  In the
# late 1980's CIT Terminals went out of business.
# There is no need to use the initialization string is=... (by invoking
# tset or setterm etc.) provided that the terminal has been manually set
# up (and the setup saved with ^S) to be compatible with this termcap.  To be
# compatible it should be in ANSI mode (not VT52).   A set-up that
# works is to set all the manually settable stuff to factory defaults
# by pressing ^D in set-up mode.  Then increase the brightness with the
# up-arrow key since the factory default will likely be dim on an old
# terminal.  Then change any options you want (provided that they are
# compatible with the termcap).  For my terminal I set: Screen
# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver:
# on.  I also set up mine for parity (but you may not need it).  Then
# save the setup with ^S.
# (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr)
cit101e-rv|C.Itoh CIT-101e (sets reverse video),
	am, eo, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24,
	OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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,
	cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(
	    B\E[m\E[20l\E[1;24r\E[24;1H,
	kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8,
	rev=\E[7m, ri=\EM, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	rs1=\Ec\E[?7h\E[>5g, sc=\E7, sgr0=\E[m,
	smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
	u8=\E[?6c, u9=\E[c, use=ecma+index,
cit101e-n|CIT-101e w/o am,
	am@,
	cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n,
	use=cit101e,
cit101e-132|CIT-101e with 132 cols,
	cols#132,
	kbs=^H, kcub1=^H, kcud1=\n, use=cit101e,
cit101e-n132|CIT-101e with 132 cols w/o am,
	am@,
	cols#132,
	cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n,
	use=cit101e,
# CIE Terminals CIT-500 from BRL
# The following SET-UP modes are assumed for normal operation:
#	GENERATE_XON/XOFF:YES	DUPLEX:FULL		NEWLINE:OFF
#	AUTOWRAP:ON		MODE:ANSI		SCREEN_LENGTH:64_LINES
#	DSPLY_CNTRL_CODES?NO	PAGE_WIDTH:80		EDIT_MODE:OFF
# Other SET-UP modes may be set for operator convenience or communication
# requirements.
# Hardware tabs are assumed to be set every 8 columns; they can be set up
# by the "reset", "tset", or "tabs" utilities.  No delays are specified; use
# "stty ixon -ixany" to enable DC3/DC1 flow control!
# (cit500: I added <rmam>/<smam> based on the init string -- esr)
cit500|CIE Terminals CIT-500,
	OTbs, OTpt, mir, msgr, xon,
	OTkn#10, cols#80, it#8, lines#64, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
	il1=\E[L, ind=\n, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[P, kdl1=\E[M,
	ked=\EJ, kel=\EK, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
	kf4=\EOU, kf5=\EOV, kf6=\EOW, kf7=\EOX, kf8=\EOY, kf9=\EOZ,
	khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1,
	lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18,
	lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[m, rmul=\E[m,
	rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,

# C. Itoh printers begin here
citoh|ci8510|8510|C.Itoh 8510a,
	cols#80, it#8,
	bold=\E!, cub1@,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073.,
	rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY,
	smul=\EX, use=lpr,
citoh-pica|citoh in pica,
	is1=\EN, use=citoh,
citoh-elite|citoh in elite,
	cols#96,
	is1=\EE,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089
	    .,
	use=citoh,
citoh-comp|citoh in compressed,
	cols#136,
	is1=\EQ,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089
	    \,097\,105\,113\,121\,129.,
	use=citoh,
# citoh has infinite cols because we don't want lp ever inserting \n\t**.
citoh-prop|citoh-ps|ips|citoh in proportional spacing mode,
	cols#0x7fff,
	is1=\EP, use=citoh,
citoh-6lpi|citoh in 6 lines per inch mode,
	is3=\EA, use=citoh,
citoh-8lpi|citoh in 8 lines per inch mode,
	lines#88,
	is3=\EB, use=citoh,

#### Control Data (cdc)
#

cdc456|CDC 456 terminal,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
	el=^V, home=^Y, il1=\EL, ind=\n,

# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
cdc721|CDC Viking,
	OTbs, am,
	cols#80, lines#24,
	clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
	cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I,
	kcuu1=^W, khome=^Y,
cdc721ll|CDC Viking with long lines,
	OTbs, am,
	cols#132, lines#24,
	clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
	cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I,
	kcuu1=^W, khome=^Y,
# (cdc752: the BRL entry had :ll=\E1  ^Z: commented out
cdc752|CDC 752,
	OTbs, am, bw, xhp,
	cols#80, lines#24,
	bel=^G, clear=\030\E1\s\s, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
	cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V,
	home=\E1\s\s, ind=\n, ll=^Y, rs1=\E1  \030\002\003\017,
# CDC 756
# The following switch/key settings are assumed for normal operation:
#	96 chars	SCROLL		FULL duplex	not BLOCK
# Other switches may be set according to communication requirements.
# Insert/delete-character cannot be used, as the whole display is affected.
# "so" & "se" are commented out until jove handles "sg" correctly.
cdc756|CDC 756,
	OTbs, am, bw,
	OTkn#10, cols#80, lines#24,
	bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
	cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z,
	dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=\n,
	kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z, kdch1=\EI,
	kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED,
	kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y,
	khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4,
	lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z,
	rs1=^Y^X^B^C^O,
#
# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL.
#
# Part of the long initialization string defines the "DOWN" key to the left
# of the tab key to send an ESC.  The real ESC key is positioned way out
# in right field.
#
# The termcap won't work in 132 column mode due to the way it it moves the
# cursor.  Termcap doesn't have the capability (as far as I could tell) to
# handle the 721 in 132 column mode.
#
# (cdc721: changed :ri: to :sr: -- esr)
cdc721-esc|Control Data 721,
	OTbs, OTpt, am, bw, msgr, xon,
	OTkn#10, cols#80, it#8, lines#30,
	bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z,
	cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W,
	dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW,
	ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[,
	is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036
	    \022J\036\022L\036\022N\036\022P\036\022Q\036\022\036
	    \022\^\036\022b\036\022i\036W\s=\036\022Z\036\011C1-`\s`
	    !k/o,
	kbs=^H, kcub1=^H, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^q,
	kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, kf7=^^x,
	kf8=^^y, kf9=^^z, khome=^Y, ll=^B =, rev=^^D,
	ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^],
	sgr0=^O^U^]^^E^^^R\\, smir=, smkx=^^^Rk, smso=^^D, smul=^\,
	tbc=^^^RY,

#### Getronics
#
# Getronics is a Dutch electronics company that at one time was called
# `Geveke' and made async terminals; but (according to the company itself!)
# they've lost all their documentation on the command set.  The hardware
# documentation suggests the terminals were actually manufactured by a
# Taiwanese electronics company named Cal-Comp.  There are known
# to have been at least two models, the 33 and the 50.
#

# The 50 seems to be a top end vt220 clone, with the addition of a higher
# screen resolution, a larger screen, at least 1 page of memory above and
# below the screen, apparently pages of memory right and left of the screen
# which can be panned, and about 75 function keys (15 function keys x normal,
# shift, control, func A, func B). It also has more setup possibilities than
# the vt220. The monitor case is dated November 1978 and the keyboard case is
# May 1982.
#
# The vt100 emulation works as is.  The entry below describes the rather
# non-conformant (but more featureful) ANSI mode.
#
# From: Stephen Peterson <stv@utrecht.ow.nl>, 27 May 1995
visa50|Geveke VISA 50 terminal in ANSI 80 character mode,
	bw, mir, msgr,
	cols#80, lines#25,
	acsc=0_aaffggh jjkkllmmnnooqqssttuuvvwwxx, bel=^G,
	blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<100/>\E[?5l,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
	is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h,
	ka1=\E[f, ka3=\EOQ, kb2=\EOP, kbs=^H, kc1=\EOR, kc3=\EOS,
	kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
	kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002,
	kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007,
	kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char,
	lf3=A insert line, lf4=A delete line, lf5=A clear,
	lf6=A ce of/cf gn, lf7=A print, lf8=A on-line,
	lf9=A funcl0=A send, nel=\r\n, rev=\E[7m, rmacs=\E[3l,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m,
	rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h,
	smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd,

#### Human Designed Systems (Concept)
#
#	Human Designed Systems
#	400 Fehley Drive
#	King of Prussia, PA 19406
#	Vox: (610)-277-8300
#	Fax: (610)-275-5739
#	Net: support@hds.com
#
# John Martin <john@hds.com> is their termcap expert.  They're mostly out of
# the character-terminal business now (1995) and making X terminals.  In
# particular, the whole `Concept' line described here was discontinued long
# ago.
#

# From: <vax135!hpk>  Sat Jun 27 07:41:20 1981
# Extensive changes to c108 by arpavax:eric Feb 1982
# Some unknown person at SCO then translated it to terminfo.
#
# There seem to be a number of different versions of the C108 PROMS
# (with bug fixes in its Z-80 program).
#
# The first one that we had would lock out the keyboard of you
# sent lots of short lines (like /usr/dict/words) at 9600 baud.
# Try that on your C108 and see if it sends a ^S when you type it.
# If so, you have an old version of the PROMs.
#
# You should configure the C108 to send ^S/^Q before running this.
# It is much faster (at 9600 baud) than the c100 because the delays
# are not fixed.
# new status line display entries for c108-8p:
# <is3> - init str #3 - setup term for status display -
# set programmer mode, select window 2, define window at last
# line of memory, set bkgnd stat mesg there, select window 0.
#
# <tsl> - to status line - select window 2, home cursor, erase to
# end-of-window, 1/2 bright on, goto(line#0, col#?)
#
# <fsl> - from status line - 1/2 bright off, select window 0
#
# <dsl> - disable status display - set bkgnd status mesg with
# illegal window #
#
# There are probably more function keys that should be added but
# I don't know what they are.
#
# No delays needed on c108 because of ^S/^Q handshaking
#
c108|concept108|c108-8p|concept108-8p|Concept 108 w/8 pages,
	is3=\EU\E\sz"\Ev\001\177\s!p\E\s;"\E\sz\s\Ev\s\s\001\177p
	    \Ep\n,
	rmcup=\Ev  \001\177p\Ep\r\n, use=c108-4p,
c108-4p|concept108-4p|Concept 108 w/4 pages,
	OTbs, eslok, hs, xon,
	pb@,
	acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=\r,
	cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}
	    %>%t\001%{96}%-%;%{32}%+%c,
	cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
	ind=\n, is1=\EK\E!\E F,
	is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev  \001 p\Ep\n,
	rmacs=\Ej\s, rmcup=\Ev  \001 p\Ep\r\n, smacs=\Ej!,
	smcup=\EU\Ev  8p\Ep\r\E\025,
	tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100,
c108-rv|c108-rv-8p|Concept 108 w/8 pages in reverse video,
	rmcup=\Ev  \002 p\Ep\r\n, smcup=\EU\Ev  8p\Ep\r,
	use=c108-rv-4p,
c108-rv-4p|concept108rv4p|Concept 108 w/4 pages in reverse video,
	flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE,
	use=c108-4p,
c108-w|c108-w-8p|concept108-w-8|concept108-w8p|Concept 108 w/8 pages in wide mode,
	cols#132,
	is1=\E F\E", rmcup=\Ev  ^A0\001D\Ep\r\n,
	smcup=\EU\Ev  8\001D\Ep\r, use=c108-8p,

# Concept 100:
# These have only window relative cursor addressing, not screen
# relative. To get it to work right here, smcup/rmcup (which
# were invented for the concept) lock you into a one page
# window for screen style programs.
#
# To get out of the one page window, we use a clever trick:
# we set the window size to zero ("\Ev    " in rmcup) which the
# terminal recognizes as an error and resets the window to all
# of memory.
#
# This trick works on c100 but does not on c108, sigh.
#
# Some tty drivers use cr3 for concept, others use nl3, hence
# the delays on cr and ind below. This padding is only needed at
# 9600 baud and up.  One or the other is commented out depending on
# local conventions.
#
# 2 ms padding on <rmcup> isn't always enough. 6 works fine. Maybe
# less than 6 but more than 2 will work.
#
# Note: can't use function keys f7-f10 because they are
# indistinguishable from arrow keys (!), also, del char and
# clear eol use xon/xoff so they probably won't work very well.
#
# Also note that we don't define insrt/del char/delline/eop/send
# because they don't transmit unless we reset them - I figured
# it was a bad idea to clobber their definitions.
#
# The <mc5> sequence changes the escape character to ^^ so that
# escapes will be passed through to the printer. Only trouble
# is that ^^ won't be - ^^ was chosen to be unlikely.
# Unfortunately, if you're sending raster bits through to be
# plotted, any character you choose will be likely, so we lose.
#
# \EQ"\EY(^W (send anything from printer to host, for xon/xoff)
# cannot be # in is2 because it will hang a c100 with no printer
# if sent twice.
c100|concept100|concept|c104|c100-4p|HDS Concept 100,
	OTbs, am, eo, mir, ul, xenl,
	cols#80, lines#24, pb#9600, vt#8,
	bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r,
	cub1=^H, cud1=\n, cuf1=\E=,
	cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;,
	dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>,
	ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK,
	ht=\011$<8>, il1=\E\022$<3*>, ind=\n, invis=\EH, ip=$<16*>,
	is1=\EK,
	is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E
	    \010A@\s\E4#:"\E:a\E4#;"\E:b\E4#<"\E:c,
	is3=\Ev    $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_,
	kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q,
	kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7,
	kf4=\E8, kf5=\E9, kf6=\E:a, kf7=\E:b, kf8=\E:c, khome=\E?,
	khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E.,
	kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027,
	mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI,
	rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED,
	rmcup=\Ev    $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex,
	rmso=\Ed, rmul=\Eg, sgr0=\EN@,
	smcup=\EU\Ev  8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX,
	smso=\ED, smul=\EG,
c100-rv|c100-rv-4p|concept100-rv|Concept 100 reverse video,
	cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee,
	smso=\EE, use=c100,
oc100|oconcept|c100-1p|old 1-page Concept 100,
	in,
	is3@, use=c100,

# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996.
# Lots of notes, originally inline, but ncurses doesn't grok that.
#
# am:	not available in power on mode, but turned on with \E[=107;207h in
#	is2=.  Also, \E=124l in is2= could have been used to prevent needing
#	to specify xenl:, but that would have rendered the last space on the
#	last line useless.
# bw:	Not available in power on mode, but turned on with \E[=107;207h in
#	is2=.
# clear: Could be done with \E[2J alone, except that vi (and probably most
#	other programs) assume that this also homes the cursor.
# dsl:	Go to window 2, go to the beginning of the line, use a line feed to
#	scroll the window, and go back to window 1.
# is2:	the string may cause a warning to be issued by tic that it
#	found a very long line and that it suspects that a comma is missing
#	somewhere.  This warning can be ignored (unless it comes up more than
#	once).  The initialization string contains the following commands:
#
#	 [Setup mode items changed from factory defaults:]
#		\E)0			set alternate character set to
#						graphics
#		^O			set character set to default
#	 [In case it wasn't]
#		\E[m			turn off all attributes
#	 [In case they weren't off]
#		\E[=107;		cursor wrap and
#			207h			character wrap on
#		\E[90;3u		set Fkey definitions to "transmit"
#						defaults
#		\E[92;3u		set cursor key definitions to
#						"transmit" defaults
#		\E[43;1u		set shift F13 to transmit...
#		\177\E$P\177
#		\E[44;1u		set shift F14 to transmit...
#			\177\E$Q\177
#		\E[45;1u		set shift F15 to transmit...
#			\177\E$R\177
#		\E[46;1u		set shift F16 to transmit...
#			\177\E$S\177
#		\E[200;1u		set shift up to transmit...
#			\177\E$A\177
#		\E[201;1u		set shift down to transmit...
#			\177\E$B\177
#		\E[202;1u		set shift right to transmit...
#			\177\E$C\177
#		\E[203;1u		set shift left to transmit...
#			\177\E$D\177
#		\E[204;1u		set shift home to transmit...
#			\177\E$H\177
#		\E[212;1u		set backtab to transmit...
#			\177\E$I\177
#		\E[213;1u		set shift backspace to transmit...
#			\177\E$^H\177
#		\E[214;1u		set shift del to transmit...
#			"\E$\177"
#	 [Necessary items not mentioned in setup mode:]
#		\E[2!w			move to window 2
#		\E[25;25w		define window as line 25 of memory
#		\E[!w			move to window 1
#		\E[2*w			show current line of window 2 as
#						status line
#		\E[2+x			set meta key to use high bit
#		\E[;3+}			move underline to bottom of character
#
#	All Fkeys are set to their default transmit definitions with \E[90;3u
#	in is2=.  IMPORTANT:  to use this terminal definition, the "quit" stty
#	setting MUST be redefined or deactivated, because the default is
#	contained in almost all of this terminal's Fkey strings!  If for some
#	reason "quit" cannot be altered, the Fkeys can, but it would be
#	necessary to change ^| to ^] in all of these definitions, and add
#	\E[2;029!t to is2.
# lines: is set to 24 because this terminal refuses to treat the 25th
#	line normally.
# ll:	Not available in power on mode, but turned on with \E[=107;207h in
#	is2=.
# lm:	Pointless, given that this definition locks a single screen of
#	memory into view, but what the hey...
# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any
#	other attributes alone), but some programs expect this to turn off
#	everything.
# rmul: Could use \E[4!{ to turn off only underline (leaving any other
#	attributes alone), but some programs expect this to turn off
#	everything.
# sgr:	Attributes are set on this terminal with the string \E[ followed by
#	a list of attribute code numbers (in decimal, separated by
#	semicolons), followed by the character m.  The attribute code
#	numbers are:
#		  1 for bold;
#		  2 for dim (which is ignored in power on mode);
#		  4 for underline;
#		  5 for blinking;
#		  7 for inverse;
#		  8 for not displayable; and
#		=99 for protected (except that there are strange side
#		effects to protected characters which make them inadvisable).
#	 The mapping of terminfo parameters to attributes is as follows:
#		%p1 (standout) = bold and inverse together;
#		%p2 (underline) = underline;
#		%p3 (reverse) = inverse;
#		%p4 (blink) = blinking;
#		%p5 (dim) is ignored;
#		%p6 (bold) = bold;
#		%p7 (invisible) = not displayable;
#		%p8 (protected) is ignored; and
#		%p9 (alt char set) = alt char set.
#	 The code to do this is:
#		\E[0		OUTPUT	\E[0
#		%?%p1%p6%O	IF	(standout; bold) OR
#		%t;1		THEN	OUTPUT	;1
#		%;		ENDIF
#		%?%p2		IF	underline
#		%t;4		THEN	OUTPUT	;4
#		%;		ENDIF
#		%?%p4		IF	blink
#		%t;5		THEN	OUTPUT	;5
#		%;		ENDIF
#		%?%p1%p3%O	IF	(standout; reverse) OR
#		%t;7		THEN	OUTPUT	;7
#		%;		ENDIF
#		%?%p7		IF	invisible
#		%t;8		THEN	OUTPUT	;8
#		%;		ENDIF
#		m		OUTPUT	m
#		%?%p9		IF	altcharset
#		%t^N		THEN	OUTPUT	^N
#		%e^O		ELSE	OUTPUT	^O
#		%;		ENDIF
# sgr0: Everything is turned off (including alternate character set), since
#	there is no way of knowing what it is that the program wants turned
#	off.
# smul: The "underline" attribute is reconfigurable to an overline or
#	strike-through, or (as done with \E[;3+} in is2=), to a line at the true
#	bottom of the character cell.  This was done to allow for more readable
#	underlined characters, and to be able to distinguish between an
#	underlined space, an underscore, and an underlined underscore.
# xenl: Terminal can be configured to not need this, but this "glitch"
#	behavior is actually preferable with autowrap terminals.
#
# Parameters kf31= thru kf53= actually contain the strings sent by the shifted
# Fkeys.  There are no parameters for shifted Fkeys in terminfo.  The is2
# string modifies the 'O' in kf43 to kf46 to a '$'.
#
# kcbt was originally ^I but redefined in is2=.
# kHOM was \E[H originally but redefined in is2=, as were a number of
# other keys.
# kDC was originally \177 but redefined in is2=.
#
# kbs:	Shift was also ^H originally but redefined as \E$^H in is2=.
# tsl:	Go to window 2, then do an hpa=.
#
#------- flash=\E[8;3!}^G\E[3;3!}
#------- flash=\E[?5h$<100>\E[?5l
# There are two ways to flash the screen, both of which have their drawbacks.
# The first is to set the bell mode to video, transmit a bell character, and
# set the bell mode back - but to what?  There is no way of knowing what the
# user's old bell setting was before we messed with it.  Worse, the command to
# set the bell mode also sets the key click volume, and there is no way to say
# "leave that alone", or to know what it's set to, either.
# The second way to do a flash is to set the screen to inverse video, pad for a
# tenth of a second, and set it back - but like before, there's no way to know
# that the screen wasn't ALREADY in inverse video, or that the user may prefer
# it that way.  The point is moot anyway, since vi (and probably other
# programs) assume that by defining flash=, you want the computer to use it
# INSTEAD of bel=, rather than as a secondary type of signal.
#
#------- cvvis=\E[+{
# The is the power on setting, which is also as visible as the cursor
# gets.
#-------  wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw
# Windowing is possible, but not defined here because it is also used to
# emulate status line functions.  Allowing a program to set a window could
# clobber the status line or render it unusable.  There is additional memory,
# but screen scroll functions are destructive and do not make use of it.
#
#-------   dim=			Not available in power on mode.
# You have a choice of defining low intensity characters as "half bright" and
# high intensity as "normal", or defining low as "normal" and high as "bold".
# No matter which you choose, only one of either "half bright" or "bold" is
# available at any time, so taking the time to override the default is
# pointless.
#
#-------  prot=\E[=0;99m
# Not defined, because it appears to have some strange side effects.
#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
#-------   pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%;
#	 Available, but making them available to programs is inadvisable.
#	 The code to do this is:
#		%?%p1%{24}%<	IF	((key; 24) <;
#		%p1%{30}%>		 ((key; 30) >;
#		%p1%{54}%<		  (key; 54) <
#		%A			 ) AND
#		%O			) OR
#	 [that is, "IF key < 24 OR (key > 30 AND key < 54)",]
#		%t\E[		THEN	OUTPUT	\E[
#		%p1%d			OUTPUT	(key) as decimal
#	 [next line applies to pfx only]
#		;1			OUTPUT	;1
#		u			OUTPUT	u
#		\177			OUTPUT	\177
#		%p2%s			OUTPUT	(string) as string
#		\177			OUTPUT	\177
#	 [DEL chosen as delimiter, but could be any character]
#	 [implied:		ELSE	do nothing]
#		%;		ENDIF
#
#-------   rs2=
# Not defined since anything it might do could be done faster and easier with
# either Meta-Shift-Reset or the main power switch.
#
#-------  smkx=\E[1!z
#-------  rmkx=\E[!z
# These sequences apply to the cursor and setup keys only, not to the
# numeric keypad.  But it doesn't matter anyway, since making these
# available to programs is inadvisable.
# For the key definitions below, all sequences beginning with \E$ are
# custom and programmed into the terminal via is2.  \E$ also has no
# meaning to any other terminal.
#
#------- cmdch=\E[;%p1%d!t
# Available, but making it available to programs is inadvisable.
#------- smxon=\E[1*q
# Available, but making it available to programs is inadvisable.
# Terminal will send XON/XOFF on buffer overflow.
#------- rmxon=\E[*q
# Available, but making it available to programs is inadvisable.
# Terminal will not notify on buffer overflow.
#-------   smm=\E[2+x
#-------   rmm=\E[+x
# Available, but making them available to programs is inadvisable.
#
# Printing:
#	 It's not made clear in the manuals, but based on other ansi/vt type
#	 terminals, it's a good guess that this terminal is capable of both
#	 "transparent print" (which doesn't copy data to the screen, and
#	 therefore needs mc5i: specified to say so) and "auxiliary print"
#	 (which does duplicate printed data on the screen, in which case mc4=
#	 and mc5= should use the \E[?4i and \E[?5i strings instead).

hds200|Human Designed Systems HDS200,
	am, bw, eslok, hs, km, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, lm#0,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{,
	clear=\E[H\E[J, cnorm=\E[+{, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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,
	dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
	fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	invis=\E[0;8m,
	is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P
	    \177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u
	    \177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177
	    \E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177
	    \E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[
	    214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
	kDC=\E$^?, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
	kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=^?, kent=\r, kf1=^\001\r, kf10=^\010\r, kf11=^\011\r,
	kf12=^\012\r, kf13=\EOP, kf14=\EOQ, kf15=\EOR, kf16=\EOS,
	kf17=^\017\r, kf18=^\018\r, kf19=^\019\r, kf2=^\002\r,
	kf20=^\020\r, kf21=^\021\r, kf22=^\022\r, kf23=^\023\r,
	kf3=^\003\r, kf31=^\031\r, kf32=^\032\r, kf33=^\033\r,
	kf34=^\034\r, kf35=^\035\r, kf36=^\036\r, kf37=^\037\r,
	kf38=^\038\r, kf39=^\039\r, kf4=^\004\r, kf40=^\040\r,
	kf41=^\041\r, kf42=^\042\r, kf43=\E$P, kf44=\E$Q,
	kf45=\E$R, kf46=\E$S, kf47=^\047\r, kf48=^\048\r,
	kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, kf51=^\051\r,
	kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, kf7=^\007\r,
	kf8=^\008\r, kf9=^\009\r, khome=\E[H, kind=\E[T, knp=\E[U,
	kpp=\E[V, kri=\E[S, ll=\E[H\E[A, nel=\E[E, rc=\E8,
	rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017,
	rmul=\E[m\017, sc=\E7,
	sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m,
	smul=\E[0;4m, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG,
	vpa=\E[%i%p1%dd, use=ansi+pp,

# <ht> through <el> included to specify padding needed in raw mode.
# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
avt-ns|Concept AVT no status line,
	OTbs, am, eo, mir, ul, xenl, xon,
	cols#80, it#8, lines#24, lm#192,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[=119h, dch1=\E[P, dim=\E[1!{, dl=\E[%p1%dM$<4*>,
	dl1=\E[M$<4>, ed=\E[J$<96>, el=\E[K$<6>, home=\E[H,
	hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>,
	invis=\E[8m, ip=$<4>, is1=\E[=103l\E[=205l,
	is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1
	    \E[1Q\EW\E[!y\E[!z\E>\E[0:0:32!r\E[0*w\E[w\E2\r\n\E[2;27
	    !t,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, khome=\E[H, kich1=\E\001\r, kil1=\E\003\r,
	ll=\E[24H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
	pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#,
	prot=\E[99m, rc=\E8, rev=\E[7m, ri=\EM$<4>, rmacs=\016$<1>,
	rmcup=\E[w\E2\r\n, rmir=\E[4l, rmkx=\E[!z\E[0;2u,
	rmso=\E[7!{, rmul=\E[4!{, sc=\E7,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
	    %;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e
	    \016%;$<1>,
	sgr0=\E[m\016$<1>, smacs=\017$<1>,
	smcup=\E[=4l\E[1;24w\E2\r, smir=\E[4h,
	smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
avt-rv-ns|Concept AVT in reverse video mode/no status line,
	flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
	use=avt-ns,
avt-w-ns|Concept AVT in 132 column mode/no status line,
	is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
	use=avt-ns,
avt-w-rv-ns|Concept AVT in 132 column mode/no status line/reverse video,
	flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
	smcup=\E[H\E[1;24;1;132w, use=avt-ns,

# Concept AVT with status line. We get the status line using the
# "Background status line" feature of the terminal. We swipe the
# first line of memory in window 2 for the status line, keeping
# 191 lines of memory and 24 screen lines for regular use.
# The first line is used instead of the last so that this works
# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this
# assumes an 8 page AVT but lm isn't currently used anywhere.)
#
avt+s|Concept AVT status line changes,
	eslok, hs,
	lm#191,
	dsl=\E[0*w, fsl=\E[1;1!w,
	is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n,
	rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r,
	tsl=\E[2;1!w\E[;%p1%dH\E[2K,
avt|avt-s|concept-avt|Concept AVT w/80 columns,
	use=avt+s, use=avt-ns,
avt-rv|avt-rv-s|Concept AVT reverse video w/sl,
	flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
	use=avt+s, use=avt-ns,
avt-w|avt-w-s|Concept AVT 132 cols+status,
	is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
	use=avt+s, use=avt-ns,
avt-w-rv|avt-w-rv-s|Concept AVT wide+status+rv,
	flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
	smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns,

#### Contel Business Systems.
#

# Contel c300 and c320 terminals.
contel300|contel320|c300|Contel Business Systems C-300 or C-320,
	am, in, xon,
	cols#80, lines#24, xmc#1,
	bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
	el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
	hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>,
	kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
	kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
	rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3,
# Contel c301 and c321 terminals.
contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
	flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>,
	use=contel300,

#### Data General (dg)
#
# According to James Carlson <carlson@xylogics.com> writing in January 1995,
# the terminals group at Data General was shut down in 1991; all these
# terminals have thus been discontinued.
#
# DG terminals have function keys that respond to the SHIFT and CTRL keys,
# e.g., SHIFT-F1 generates a different code from F1.  To number the keys
# sequentially, first the unmodified key codes are listed as F1 through F15.
# Then their SHIFT versions are listed as F16 through F30, their CTRL versions
# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as
# F46 through F60.  This is done in the private "includes" below whose names
# start with "dgkeys+".
#
# DG terminals generally support 8 bit characters.  For each of these terminals
# two descriptions are supplied:
#	1) A default description for 8 bits/character communications, which
#	   uses the default DG international character set and keyboard codes.
#	2) A description with suffix "-7b" for 7 bits/character communications.
#	   This description must use the NON-DEFAULT native keyboard language.

# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33),
# Ctrl/Shift fdkeys (kf34-kf44).

dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys,
	ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z,
	kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
	kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z,
	kf11=\233011z, kf12=\233012z, kf13=\233013z,
	kf14=\233014z, kf15=\233000z, kf16=\233101z,
	kf17=\233102z, kf18=\233103z, kf19=\233104z,
	kf2=\233002z, kf20=\233105z, kf21=\233106z,
	kf22=\233107z, kf23=\233108z, kf24=\233109z,
	kf25=\233110z, kf26=\233111z, kf27=\233112z,
	kf28=\233113z, kf29=\233114z, kf3=\233003z,
	kf30=\233100z, kf31=\233201z, kf32=\233202z,
	kf33=\233203z, kf34=\233204z, kf35=\233205z,
	kf36=\233206z, kf37=\233207z, kf38=\233208z,
	kf39=\233209z, kf4=\233004z, kf40=\233210z,
	kf41=\233211z, kf42=\233212z, kf43=\233213z,
	kf44=\233214z, kf45=\233200z, kf46=\233301z,
	kf47=\233302z, kf48=\233303z, kf49=\233304z,
	kf5=\233005z, kf50=\233305z, kf51=\233306z,
	kf52=\233307z, kf53=\233308z, kf54=\233309z,
	kf55=\233310z, kf56=\233311z, kf57=\233312z,
	kf58=\233313z, kf59=\233314z, kf6=\233006z,
	kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z,
	khome=\233H, kprt=\233i,

dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys,
	ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z,
	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z,
	kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z,
	kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z,
	kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z,
	kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z,
	kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z,
	kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z,
	kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z,
	kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z,
	kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z,
	kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z,
	kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z,
	kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z,
	kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z,
	kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z,
	kf9=\E[009z, khome=\E[H, kprt=\E[i,

dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys,
	kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K,
	kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c,
	kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r,
	kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3,
	kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8,
	kf31=^^9, kf32=^^:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#,
	kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(,
	kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w,
	kf8=^^x, kf9=^^y, khome=^H,

dgkeys+15|Private entry describing 15 DG mode special keys,
	kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^,
	kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^},
	kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d,
	kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i,
	kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s,
	kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5,
	kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^:,
	kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!,
	kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&,
	kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,,
	kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x,
	kf9=^^y,

# Data General color terminals use the "Tektronix" color model.  The total
# number of colors varies with the terminal model, as does support for
# attributes used in conjunction with color.

# Removed u7, u8 definitions since they conflict with tack:
#		Preserve user-defined colors in at least some cases.
#	u7=^^Fh,
#		Default is ACM mode.
#	u8=^^F}20^^Fi^^F}21,
#
dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
	bce,
	colors#16, ncv#53, pairs#0x100,
	op=\036Ad\036Bd,
	setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
	      %{4}%&%t%{1}%|%;%;%{48}%+%c,
	setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
	      %{4}%&%t%{1}%|%;%;%{48}%+%c,
	setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,

dg+fixed|Fixed color info for DG D430C terminals in DG mode,
	use=dgunix+fixed,

# Video attributes are coordinated using static variables set by "sgr", then
# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings.
# (D=dim, U=underline, B=blink, R=reverse.)
dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode,
	bce,
	colors#8, ncv#16, pairs#64,
	op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m,
	setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
	setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
	setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;
	     %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
	setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;
	     %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,

dg+color|Color info for Data General D470C terminals in ANSI mode,
	colors#16, ncv#53, pairs#0x100,
	setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;
	      %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t
	      ;5%;%?%gR%t;7%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;
	      %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t
	      ;5%;%?%gR%t;7%;m,
	setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?
	     %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;
	     %?%gR%t;7%;m,
	setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?
	     %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;
	     %?%gR%t;7%;m,
	use=dg+color8,

dgmode+color8|Color info for Data General D220/D230C terminals in DG mode,
	bce,
	colors#8, ncv#16, pairs#64,
	op=\036Ad\036Bd,
	setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|
	      %;%{48}%+%c,
	setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|
	      %;%{48}%+%c,
	setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,

dgmode+color|Color info for Data General D470C terminals in DG mode,
	colors#16, pairs#0x100,
	setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
	      %{4}%&%t%{1}%|%;%;%{48}%+%c,
	setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
	      %{4}%&%t%{1}%|%;%;%{48}%+%c,
	use=dgmode+color8,

dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
	bce, ccc,
	colors#52, ncv#53, pairs#26,
	initp=\036RG0%p1%02X%p2%{255}%*%{1000}%/%02X%p3%{255}%*
	      %{1000}%/%02X%p4%{255}%*%{1000}%/%02X%p5%{255}%*
	      %{1000}%/%02X%p6%{255}%*%{1000}%/%02X%p7%{255}%*
	      %{1000}%/%02X,
	oc=\036RG01A00FF00000000\036RG01B00000000FF00
	   \036RG01C007F00000000\036RG01D000000007F00,
	op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D,
	scp=\036RG2%p1%02X,

# Colors are in the order:  normal, reverse, dim, dim + reverse.
dg+ccc|Configurable color info for DG D430C terminals in DG mode,
	bce, ccc,
	colors#52, ncv#53, pairs#26,
	initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255}
	      %*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c
	      %p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m
	      %{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga
	      %{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}
	      %+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16}
	      %/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa
	      %ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
	oc=\036RG01:00??00000000\036RG01;00000000??00\036RG01<007?00
	   000000\036RG01=000000007?00,
	op=\036RF4831:\036RF2>31;\036RF1=31<\036RF3?31=,
	scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c,

# The generic DG terminal type (an 8-bit-clean subset of the 6053)
# Initialization string 1 sets:
#	^R		- vertical scrolling enabled
#	^C		- blinking enabled
dg-generic|generic Data General terminal in DG mode,
	am, bw, msgr, xon,
	cols#80, lines#24,
	bel=^G, blink=^N, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X,
	cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=\n, is1=^R^C,
	mc0=^Q, nel=\n, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
	smul=^T, use=dgkeys+11,

# According to the 4.4BSD termcap file, the dg200 <cup> should be the
# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap
# notation that's "^P%r%+\200%+\200").  Those \200s are suspicious,
# maybe they were originally nuls (which would fit).

dg200|Data General DASHER 200,
	OTbs, am, bw,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X,
	cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=\n,
	kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q,
	kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x,
	kf9=^^y, khome=^H, lf0=f10, nel=\n, rmso=^^E, rmul=^U,
	smso=^^D, smul=^T,

# Data General 210/211 (and 410?)	from Lee Pearson (umich!lp) via BRL
dg210|dg-ansi|Data General 210/211,
	am,
	cols#80, lines#24,
	OTnl=\E[B, clear=\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	khome=\E[H, nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m,
	smso=\E[7;m, smul=\E[4;m,
# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
# courtesy of Carlos Rucalde of Vantage Software, Inc.
# (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
# I suspect the d200 function keys actually work on the dg211, check it out.)
dg211|Data General d211,
	cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=\r^Z, rmcup=^L,
	rmso=\036E$<0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200,

# dg450 from Cornell (not official)
dg450|dg6134|Data General 6134,
	cub1@, cuf1=^X, use=dg200,

# Not official...
# Note: lesser Dasher terminals will not work with vi because vi insists upon
# having a command to move straight down from any position on the bottom line
# and scroll the screen up, or a direct vertical scroll command.  The 460 and
# above have both, the D210/211, for instance, has neither.  We must use ANSI
# mode rather than DG mode because standard UNIX tty drivers assume that ^H is
# backspace on all terminals.  This is not so in DG mode.
# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the
# grounds that there is no matching ":ml:"
dg460-ansi|Data General Dasher 460 in ANSI-mode,
	OTbs, am, msgr, ul,
	cols#80, it#8, lines#24,
	OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
	dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
	kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
	kf8=\E[009z, kf9=\E[00:z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
	lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, mc0=\E[i,
	rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;
	    %?%p1%p3%|%t;7%;m,
	sgr0=\E(B\E[m, smso=\E[7m, smul=\E[4m, u6=\E[%d;%dR,
	u7=\E[6n, u8=\E[5n, u9=\E[0n,
# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
# Data General 605x
# Ought to work for a Model 6242, Type D210 as well as a 605x.
# Note that the cursor-down key transmits ^Z.  Job control users, beware!
# This also matches a posted description of something called a `Dasher 100'
# so there's a dg100 alias here.
# (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr)
dg6053-old|dg100|Data General 6053,
	OTbs, am, bw, ul,
	cols#80, lines#24,
	OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=\r, cub1=^Y, cud1=^Z,
	cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K,
	home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X,
	kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v,
	kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L,
	rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D,
	smul=^T,

# (Some performance can be gained over the generic DG terminal type)
dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
	xon@,
	home=\020\0\0, ll=^P\0^W, use=dg-generic,

# Like 6053, but adds reverse video and more keypad and function keys.
d200|d200-dg|Data General DASHER D200,
	bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^],
	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4
	    %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;,
	sgr0=^O^U^]^^E, smso=^^D^\, use=dgkeys+15, use=dg6053,

# DASHER D210 series terminals in ANSI mode.
#	Reverse video, no insert/delete character/line, 7 bits/character only.
#
# Initialization string 1 sets:
#	<0		- scrolling enabled
#	<1		- blink enabled
#	<4		- print characters regardless of attributes
d210|d214|Data General DASHER D210 series,
	am, bw, msgr, xon,
	cols#80, lines#24,
	bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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, dim=\E[2m, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ind=\n, is1=\E[<0;<1;<4l,
	ll=\E[H\E[A, nel=\n, rev=\E[7m, rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%|
	    %p6%|%t7;%;m,
	sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,

# DASHER D210 series terminals in DG mode.
# Like D200, but adds clear to end-of-screen and needs XON/XOFF.
d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
	xon,
	ed=^^FF, use=d200-dg,

# DASHER D211 series terminals in ANSI mode.
# Like the D210, but with 8-bit characters and local printer support.
#
# Initialization string 2 sets:
#	\E[2;1;1;1v
#		2;1	- 8 bit operations
#		1;1	- 8 bit (international) keyboard language
#	\E(B		- default primary character set (U.S. ASCII)
#	\E)4		- default secondary character set (international)
#	^O		- primary character set
#
d211|d215|Data General DASHER D211 series,
	km,
	is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b,
	use=d210,

# Initialization string 2 sets:
#	\E[2;0;1;0v
#		2;0	- 7 bit operations
#		1;0	- 7 bit (native) keyboard language
#	\E(0		- default character set (the keyboard native language)
#	^O		- primary character set
d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode,
	km@,
	is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211,

# Like the D210 series, but adds support for 8-bit characters.
#
# Reset string 2 sets:
#	^^N	- secondary character set
#	^^FS0>	- 8 bit international character set
#	^^O	- primary character set
#	^^FS00	- default character set (matching the native keyboard language)
#
d211-dg|d215-dg|Data General DASHER D211 series in DG mode,
	km,
	rs2=\036N\036FS0>\036O\036FS00, use=d210-dg,

d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode,
	use=d211-dg,

# Enhanced DG mode with changes to be more UNIX compatible.
d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
	mc5i,
	it#8,
	acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
	clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
	el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=\n,
	is1=^R^C^^P@1, is3=^^Fz0, kHOM=^^Pf, kLFT=^^Pd, kPRT=^^P1,
	kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, kcuf1=^^PC,
	kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, mc0=^^F?9,
	mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
	rs2=\036N\036FS0E\036O\036FS00,
	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;
	    \036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t1
	    1%e00%;,
	sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11,
	vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg,
d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines,
	lines#25,
	is3=^^Fz2, use=d216+,

d217-unix|Data General DASHER D217 in DG-UNIX mode,
	use=d216-unix,
d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
	use=d216-unix-25,

# DASHER D220 color terminal in ANSI mode.
# Like the D470C but with fewer colors and screen editing features.
#
# Initialization string 1 sets:
#	\E[<0;<1;<4l
#		<0	- scrolling enabled
#		<1	- blink enabled
#		<4	- print characters regardless of attributes
#	\E[m		- all attributes off
# Reset string 1 sets:
#	\Ec		- initial mode defaults (RIS)
#
d220|Data General DASHER D220,
	mc5i@,
	dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
	use=dg+color8, use=d470c,

d220-7b|Data General DASHER D220 in 7 bit mode,
	mc5i@,
	dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
	use=dg+color8, use=d470c-7b,

# Initialization string 3 sets:
#	- default cursor (solid rectangle)
# Reset string 2 sets:
#	^^N     - secondary character set
#	^^FS0>  - 8 bit international character set
#	^^O     - primary character set
#       ^^FS00  - default character set (matching the native keyboard language)
#
d220-dg|Data General DASHER D220 color terminal in DG mode,
	mc5i@,
	dl1@, home@, il1@, is2@, is3=^^FQ2, ll@, mc4@, mc5@, rs1@,
	rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8,
	use=d470c-dg,

# DASHER D230C color terminal in ANSI mode.
# Like the D220 but with minor ANSI compatibility improvements.
#
d230c|d230|Data General DASHER D230C,
	blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=\r\n,
	rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
	sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}
	    %;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e
	    %{0}%;%PD50m\E)%?%p9%t6\016%e4\017%;,
	sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m,
	smul=\E[4;50m, use=dgkeys+7b, use=d220,

d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
	use=d220-dg,

# DASHER D400/D450 series terminals.
# These add intelligent features like insert/delete to the D200 series.
#
# Initialization string 2 sets:
#	^^FQ2		- default cursor (solid rectangle)
#	^^FW		- character protection disabled
#	^^FJ		- normal (80 column) mode
#	^^F\^		- horizontal scrolling enabled (for alignment)
#	^^FX004?	- margins at columns 0 and 79
#	^^F]		- horizontal scrolling disabled
#	^^O		- primary character set
#	^^FS00		- default character set (the keyboard native language)
#	- (should reset scrolling regions, but that glitches the screen)
# Reset string 1 sets:
#	^^FA		- all terminal defaults except scroll rate
# Reset string 2 sets:
#	^^F]		- horizontal scrolling disabled
#	^^FT0		- jump scrolling
#
d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
	mc5i,
	acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=^^FQ0, cnorm=^^FQ2,
	dch1=^^K, dl1=^^FI, enacs=\036N\036FS11\036O, home=^^FG,
	hpa=\020%p1%c\177, ich1=^^J, il1=^^FH,
	is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O
	    \036FS00,
	ll=^^FG^W, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, rs1=^^FA,
	rs2=\036F]\036FT0,
	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4
	    %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
	sgr0=^O^U^]^^E^^O, smacs=^^N, vpa=\020\177%p1%c,
	use=d210-dg,

# DASHER D410/D460 series terminals in ANSI mode.
# These add a large number of intelligent terminal features.
#
# Initialization string 1 sets:
#	\E[<0;<1;<2;<4l
#		<0	- scrolling enabled
#		<1	- blink enabled
#		<2	- horizontal scrolling enabled (for alignment)
#		<4	- print characters regardless of attributes
#	\E[5;0v		- normal (80 column) mode
#	\E[1;1;80w	- margins at columns 1 and 80
#	\E[1;6;<2h
#		1	- print all characters even if protected
#		6	- character protection disabled
#		<2	- horizontal scrolling disabled
#	- (should reset scrolling regions, but that glitches the screen)
#
# Initialization string 2 sets:
#	\E[3;2;2;1;1;1v
#		3;2	- default cursor (solid rectangle)
#		2;1	- 8 bit operations
#		1;1	- international keyboard language
#	\E(B		- default primary character set (U.S. ASCII)
#	\E)4		- default secondary character set (international)
#	^O		- primary character set
#
#	Reset string 1 sets:
#	\Ec		- initial mode defaults (RIS)
#	\E[<2h		- horizontal scrolling disabled
#
# Reset string 2 sets:
#	\E[4;0;2;1;1;1v
#		4;0	- jump scrolling
#		2;1	- 8 bit operations
#		1;1	- 8 bit (international) keyboard language
#	\E(B		- default primary character set (U.S. ASCII)
#	\E)4		- default secondary character set (international)
#
d410|d411|d460|d461|Data General DASHER D410/D460 series,
	mc5i,
	acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v,
	cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
	is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h,
	is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
	ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
	rs2=\E[4;0;2;1;1;1v\E(B\E)4,
	sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5
	    %|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;,
	sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,

# Initialization string 2 sets:
#	\E[3;2;2;0;1;0v
#		3;2	- default cursor (solid rectangle)
#		2;0	- 7 bit operations
#		1;0	- 7 bit (native) keyboard language
#	\E(0		- default character set (the keyboard native language)
#	^O		- primary character set
#
# Reset string 2 sets:
#	\E[4;0;2;0;1;0v
#		4;0	- jump scrolling
#		2;0	- 7 bit operations
#		1;0	- 7 bit (native) keyboard language
#	\E(0		- default character set (the keyboard native language)
#
d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode,
	km@,
	enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
	rs2=\E[4;0;2;0;1;0v\E(0,
	sgr=\E[%?%p1%p5%|%t2;%;%?%p2%p6%|%t4;%;%?%p1%p3%|%p6%|%t7;%;
	    %?%p4%t5;%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410,

d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
	km,
	enacs@, rmacs=\036FS00,
	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4
	    %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e0
	    0%;,
	sgr0=\017\025\035\036E\036FS00, smacs=\036FS11,
	use=d400-dg,

# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode.
#
# Initialization string 1 sets:
#	\E[<0;<1;<2;<4l
#		<0	- scrolling enabled
#		<1	- blink enabled
#		<2	- horizontal scrolling enabled (for alignment)
#		<4	- print characters regardless of attributes
#	\E[5;1v		- compressed (135 column) mode
#	\E[1;1;126	- margins at columns 1 and 126
#	\E[1;6;<2h
#		1	- print all characters even if protected
#		6	- character protection disabled
#		<2	- horizontal scrolling disabled
#	- (should reset scrolling regions, but that glitches the screen)
#
# Reset string 1 sets:
#	\Ec		- initial mode defaults (RIS)
#	\E[5;1v		- compressed (135 column) mode
#	\E[1;1;126w	- margins at columns 1 and 126
#	\E[<2h		- horizontal scrolling disabled
#
d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode,
	cols#126,
	is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
	rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410,

d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode,
	cols#126,
	is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
	rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b,

d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode,
	use=d410-dg,

# These add intelligent features like scrolling regions.
d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode,
	civis=^^FQ0, clear=^^FE, cnorm=^^FQ5,
	cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI,
	home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH,
	is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O
	    \036FS00,
	ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I,
	rs1=\036FA\036FT0, rs2=^^P@1, sc=\036F}10,
	vpa=\036FPFF%p1%2.2X,
	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2
	     %>%t000%;\036FX%p3%2.2X%p4%2.2X,
	use=d216+,
d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode,
	cols#132,
	is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O
	    \036FS00,
	rs2=\036P@1\036FK\036FX0083,
	wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2
	     %>%t001%;\036FX%p3%2.2X%p4%2.2X,
	use=d412-unix,
d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines,
	lines#25,
	is3=^^Fz2,
	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2
	     %>%t000%;\036FX%p3%2.2X%p4%2.2X,
	use=d462+,
d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line,
	eslok, hs,
	clear=\036FG\036PH, fsl=\036F}01\022,
	is3=\036Fz2\036F}00\036FB180000\036F}01, ll@,
	tsl=\036F}00\036FP%p1%2.2X18\036PG,
	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2
	     %>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X,
	use=d462+,

#	Relative cursor motions are confined to the current window,
#	which is not what the scrolling region specification expects.
#	Thus, relative vertical cursor positioning must be deleted.
d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region,
	csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>
	    %t000%;,
	cud1@, cuu1@, ll@, use=d462+,

d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
	use=d412-unix,
d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode,
	use=d412-unix-w,
d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines,
	use=d412-unix-25,
d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line,
	use=d412-unix-s,
d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region,
	use=d412-unix-sr,

d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode,
	use=d413-unix,
d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode,
	use=d413-unix-w,
d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines,
	use=d413-unix-25,
d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line,
	use=d413-unix-s,
d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region,
	use=d413-unix-sr,

d430c-dg|d430-dg|Data General D430C in DG mode,
	use=d413-dg, use=dg+fixed,
d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors,
	use=d413-dg, use=dg+ccc,

d430c-unix|d430-unix|Data General D430C in DG-UNIX mode,
	use=d413-unix, use=dgunix+fixed,
d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode,
	use=d413-unix-w, use=dgunix+fixed,
d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines,
	use=d413-unix-25, use=dgunix+fixed,
d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line,
	use=d413-unix-s, use=dgunix+fixed,
d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region,
	use=d413-unix-sr, use=dgunix+fixed,
d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors,
	use=d413-unix, use=dgunix+ccc,
d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors,
	use=d413-unix-w, use=dgunix+ccc,
d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors,
	use=d413-unix-25, use=dgunix+ccc,
d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors,
	use=d413-unix-s, use=dgunix+ccc,
d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors,
	use=d413-unix-sr, use=dgunix+ccc,

# DASHER D470C color terminal in ANSI mode.
# Like the D460 but with 16 colors and without a compressed mode.
#
# Initialization string 1 sets:
#	\E[<0;<1;<2;<4l
#		<0	- scrolling enabled
#		<1	- blink enabled
#		<2	- horizontal scrolling enabled (for alignment)
#		<4	- print characters regardless of attributes
#	\E[1;1;80w	- margins at columns 1 and 80
#	\E[1;6;<2h
#		1	- print all characters even if protected
#		6	- character protection disabled
#		<2	- horizontal scrolling disabled
#	- (should reset scrolling regions, but that glitches the screen)
#
d470c|d470|Data General DASHER D470C,
	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
	sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t
	    2;7;%;%?%p5%t2;%;m\E)%?%p9%t6\016%e4\017%;,
	use=dg+color, use=d460,

d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
	sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t
	    2;7;%;%?%p5%t2;%;m%?%p9%t\016%e\017%;,
	use=dg+color, use=d460-7b,

# Initialization string 2 sets:
#	^^FQ2		- default cursor (solid rectangle)
#	^^FW		- character protection disabled
#	^^F\^		- horizontal scrolling enabled (for alignment)
#	^^FX004?	- margins at columns 0 and 79
#	^^F]		- horizontal scrolling disabled
#	^^O		- primary character set
#	^^FS00		- default character set (the keyboard native language)
#	- (should reset scrolling regions, but that glitches the screen)
#
d470c-dg|d470-dg|Data General DASHER D470C in DG mode,
	is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O
	    \036FS00,
	use=dgmode+color, use=d460-dg,

# DASHER D555 terminal in ANSI mode.
# Like a D411, but has an integrated phone.
d555|Data General DASHER D555,
	use=d411,
d555-7b|Data General DASHER D555 in 7-bit mode,
	use=d411-7b,
d555-w|Data General DASHER D555 in wide mode,
	use=d411-w,
d555-7b-w|Data General DASHER D555 in wide 7-bit mode,
	use=d411-7b-w,
d555-dg|Data General DASHER D555 series in DG mode,
	use=d411-dg,

# DASHER D577 terminal in ANSI mode.
# Like a D411, but acts as a keyboard for serial printers ("KSR" modes).
d577|Data General DASHER D577,
	use=d411,
d577-7b|Data General DASHER D577 in 7-bit mode,
	use=d411-7b,
d577-w|Data General DASHER D577 in wide mode,
	use=d411-w,
d577-7b-w|Data General DASHER D577 in wide 7-bit mode,
	use=d411-7b-w,

d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
	use=d411-dg,

# DASHER D578 terminal.
# Like a D577, but without compressed mode; like a D470C in this respect.
#
# Initialization string 1 sets:
#	\E[<0;<1;<2;<4l
#		<0	- scrolling enabled
#		<1	- blink enabled
#		<2	- horizontal scrolling enabled (for alignment)
#		<4	- print characters regardless of attributes
#	\E[1;1;80w	- margins at columns 1 and 80
#	\E[1;6;<2h
#		1	- print all characters even if protected
#		6	- character protection disabled
#		<2	- horizontal scrolling disabled
#	- (should reset scrolling regions, but that glitches the screen)
#
d578|Data General DASHER D578,
	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577,
d578-7b|Data General DASHER D578 in 7-bit mode,
	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b,

#### Datamedia (dm)
#
# Datamedia was headquartered in Nashua, New Hampshire until it went
# out of business in 1993, but the ID plates on the terminals referred
# to the factory in Pennsauken, NJ.  The factory was sold to a PCB board
# manufacturer which threw out all information about the terminals.
#

cs10|colorscan|Datamedia Color Scan 10,
	msgr,
	cols#80, lines#24,
	bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smso=\E[7m, smul=\E[4m,
cs10-w|Datamedia Color Scan 10 with 132 columns,
	cols#132,
	cup=\E[%i%p1%02d;%p2%03dH, use=cs10,

# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
dm1520|dm1521|Datamedia 1520,
	OTbs, am, xenl,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ht=^I, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_,
	khome=^Y,
# dm2500: this terminal has both <ich> and <smir>. Applications using
# termcap/terminfo directly (rather than through ncurses) might be confused.
dm2500|datamedia2500|Datamedia 2500,
	OTbs, OTnc,
	cols#80, lines#24,
	bel=^G, clear=^^^^^?, cub1=^H, cud1=\n, cuf1=^\,
	cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z,
	dch1=\020\010\030\035$<10*>,
	dl1=\020\032\030\035$<10*>, el=^W, home=^B,
	ich1=\020\034\030\035$<10*>,
	il1=\020\n\030\035\030\035$<15>, ind=\n, pad=\377,
	rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^],
	smdc=^P, smir=^P, smso=^N,
# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
# also, has a meta-key.
# From: <goldberger@su-csli.arpa>
# (dmchat: ":MT:" changed to ":km:" -- esr)
dmchat|dmchat version of Datamedia 2500,
	km,
	dl1=\020\032\030\035$<2/>,
	il1=\020\n\030\035\030\035$<1*/>, use=dm2500,
# (dm3025: ":MT:" changed to ":km:" -- esr)
dm3025|Datamedia 3025a,
	OTbs, km,
	cols#80, it#8, lines#24,
	bel=^G, clear=\EM$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
	dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK,
	home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=\n, ip=$<6>,
	is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
	smir=\EP, smso=\EO1,
dm3045|Datamedia 3045a,
	OTbs, am, eo, km@, ul, xenl,
	dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
	kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
	kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
	khome=\EH, pad=^?, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
	use=dm3025,
# Datamedia DT80 soft switches:
# 1	0=Jump  1=Smooth
#	Autorepeat	0=off  1=on
#	Screen		0=Dark 1=light
#	Cursor		0=u/l  1=block
#
# 2	Margin Bell	0=off  1=on
#	Keyclick	0=off  1=on
#	ANSI/VT52	0=VT52 1=ANSI
#	Xon/Xoff	0=Off  1=On
#
# 3	Shift3		0=Hash 1=UK Pound
#	Wrap		0=Off  1=On
#	Newline		0=Off  1=On
#	Interlace	0=Off  1=On
#
# 4	Parity		0=Odd  1=Even
#	Parity		0=Off  1=On
#	Bits/Char	0=7    1=8
#	Power		0=60Hz 1=50Hz
#
# 5	Line Interface  0=EIA  1=Loop
#	Aux Interface	0=EIA  1=Loop
#	Local Copy	0=Off  1=On
#	Spare
#
# 6	Aux Parity	0=Odd  1=Even
#	Aux Parity	0=Off  1=On
#	Aux Bits/Char	0=7    1=8
#	CRT Saver	0=Off  1=On
# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
dm80|dmdt80|dt80|Datamedia dt80/1,
	clear=\E[2J\E[H, cud1=\n, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM,
	rmso=\E[m, rmul=\E[m, sgr0=\E[m\017$<2>, smso=\E[7m,
	smul=\E[4m, use=vt100+4bsd,
# except in 132 column mode, where it needs a little padding.
# This is still less padding than the vt100, and you can always turn on
# the ^S/^Q handshaking, so you can use vt100 flavors for things like
# reverse video.
dm80w|dmdt80w|dt80w|Datamedia dt80/1 in 132 char mode,
	cols#132,
	clear=\E[H\E[2J$<50/>, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>,
	ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80,
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
dt80-sas|Datamedia DT803/DTX for SAS usage,
	am, bw,
	cols#80, lines#24,
	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
	bel=^G, clear=^L, cr=\r,
	csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2,
	cub1=^H, cud1=\EB, cuf1=^\,
	cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K,
	el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB,
	is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=\n,
	kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N,
	rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF,
	smso=\E$2\004, tbc=\E'0,

# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL
# These aren't end-all Excel termcaps; but do insert/delete char/line
# and name some of the extra function keys.  (Mike Feldman ccvaxa!feldman)
# The naming convention has been bent somewhat, with the use of E? (where
# E is for 'Excel') as # a name.  This was done to distinguish the entries
# from the other Datamedias in use here, and yet to associate a model of
# the Excel terminals with the regular datamedia terminals that share
# major characteristics.
excel62|excel64|Datamedia Excel 62,
	dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv,
	kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
	use=dt80,
excel62-w|excel64-w|Datamedia Excel 62 in 132 char mode,
	dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv,
	kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
	use=dt80w,
excel62-rv|excel64-rv|Datamedia Excel 62 in reverse video mode,
	dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=\n,
	kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l,
	smir=\E[4h, use=dt80,

#### Falco
#
#	Falco Data Products
#	440 Potrero Avenue
#	Sunnyvale, CA 940864-196
#	Vox: (800)-325-2648
#	Fax: (408)-745-7860
#	Net: techsup@charm.sys.falco.com
#
# Current Falco models as of 1995 are generally ANSI-compatible and support
# emulations of DEC VT-series, Wyse, and TeleVideo types.
#

# Test version for Falco ts-1. See <arpavax.hickman@ucb> for info
# This terminal was released around 1983 and was discontinued long ago.
# The standout and underline highlights are the same.
falco|ts1|ts-1|Falco ts-1,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE,
	ind=\n, is2=\Eu\E3, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
	kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0,
	smir=\Eq, smso=\Eg1, smul=\Eg1,
falco-p|ts1p|ts-1p|Falco ts-1 with paging option,
	OTbs, am, da, db, mir, msgr, ul,
	cols#80, it#8, lines#24,
	bel=^G, cbt=\EI, clear=\E*, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A,
	dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I,
	il1=\EE, ind=\n, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er,
	rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq,
	smso=\Eg4, smul=\Eg1,
# (ts100: I added <rmam>/<smam> based on the init string -- esr)
ts100|ts100-sp|Falco ts100-sp,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>,
	el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
	ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=\n, is1=\E~)\E~ea,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
	use=vt100+fnkeys,
ts100-ctxt|Falco ts-100 saving context,
	rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,

#### Florida Computer Graphics
#

# Florida Computer Graphics Beacon System, using terminal emulator program
# "host.com", as provided by FCG.  This description is for an early release
# of the "host" program.  Known bug: <ed> clears the whole screen, so it's
# commented out.

# From: David Bryant <cbosg!djb> 1/7/83
beacon|FCG Beacon System,
	am, da, db,
	cols#80, lines#32,
	bel=\ESTART\r\E37\r\EEND\r$<1>,
	blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=\r,
	cub1=^H, cud1=\n, cuf1=\EV,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU,
	dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE,
	ind=\n, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=,
	rmso=\ESTART\r\E70\,0\r\EEND\r$<20>,
	rmul=\ESTART\r\E60\,0\r\EEND\r,
	sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>,
	smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>,
	smso=\ESTART\r\E70\,6\r\EEND\r$<20>,
	smul=\ESTART\r\E60\,1\r\EEND\r,

#### Fluke
#

# The f1720a differences from ANSI: no auto margin, destructive
# tabs, # of lines, funny highlighting and underlining
f1720|f1720a|fluke 1720A,
	xt,
	cols#80, lines#16, xmc#1,
	bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J,
	el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^],
	kcuf1=^^, kcuu1=^\, ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m,

#### Liberty Electronics (Freedom)
#
#	Liberty Electronics
#	48089 Fremont Blvd
#	Fremont CA 94538
#	Vox: (510)-623-6000
#	Fax: (510)-623-7021

# From: <faletti@berkeley.edu>
# (f100: added empty <acsc> to suppress a tic warning;
# made this relative to adm+sgr -- note that <invis> isn't
# known to work for f100 but does on the f110. --esr)
f100|freedom|freedom100|freedom model 100,
	OTbs, am, bw, hs, mir, msgr, xon,
	cols#80, lines#24,
	acsc=, bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
	flash=\Eb$<200>\Ed, fsl=\r, home=^^, hpa=\E]%p1%{32}%+%c,
	ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=\n, ip=$<6>,
	is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V,
	kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er,
	smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
f100-rv|freedom-rv|freedom 100 in reverse video,
	flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100,
# The f110 and f200 have problems with vi(1).  They use the ^V
# code for the down cursor key. When kcud1 is defined in terminfo
# as ^V, the Control Character Quoting capability (^V in insert mode)
# is lost! It cannot be remapped in vi because it is necessary to enter
# a ^V to to quote the ^V that is being remapped!!!
#
# f110/f200 users will have to decide whether
# to lose the down cursor key or the quoting capability. We will opt
# initially for leaving the quoting capability out, since use of VI
# is not generally applicable to most interactive applications
# (f110: added <ht>, <khome> & <kcbt> from f100 -- esr)
f110|freedom110|Liberty Freedom 110,
	bw@, eslok,
	it#8, wsl#80,
	blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V,
	dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE,
	ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET,
	kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
	ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq,
	smso=\EG<, tsl=\Ef, use=f100,
f110-14|Liberty Freedom 110 14inch,
	dch1@, use=f110,
f110-w|Liberty Freedom 110 - 132 cols,
	cols#132, use=f110,
f110-14w|Liberty Freedom 110 14in/132 cols,
	cols#132,
	dch1@, use=f110,
# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
f200|freedom200|Liberty Freedom 200,
	OTbs, am, eslok, hs, mir, msgr, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0,
	clear=^Z, cnorm=\E.1, cr=\r,
	csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET,
	flash=\Eo$<200/>\En, fsl=\r, home=^^,
	hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=\n, kbs=^H,
	kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW,
	kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
	ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<,
	tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr,
f200-w|Liberty Freedom 200 - 132 cols,
	cols#132, use=f200,
# The f200 has the ability to reprogram the down cursor key. The key is
# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM,
# so powering the terminal off and on will not cause the change to be lost.
f200vi|Liberty Freedom 200 for vi,
	flash=\Eb$<200/>\Ed, kcud1=\n, use=f200,
f200vi-w|Liberty Freedom 200 - 132 cols for vi,
	cols#132, use=f200vi,

#### GraphOn (go)
#
#	Graphon Corporation
#	544 Division Street
#	Campbell, CA 95008
#	Vox: (408)-370-4080
#	Fax: (408)-370-5047
#	Net: troy@graphon.com (Troy Morrison)
#
#
# The go140 and go225 have been discontinued.  GraphOn now makes X terminals,
# including one odd hybrid that starts out life on power-up as a character
# terminal, than can be switched to X graphics mode (driven over the serial
# line) by an escape sequence.  No info on this beast yet.
# (go140: I added <rmam>/<smam> based on the init string -- esr)
go140|graphon go-140,
	OTbs,
	cols#80, it#8, lines#24,
	clear=\E[H\E[2J$<10/>, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J$<10/>, el=\E[K, ht=^I,
	if=/usr/share/tabset/vt100, il1=\E[L,
	is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
go140w|graphon go-140 in 132 column mode,
	am,
	cols#132,
	is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q,
	use=go140,
# Hacked up vt200 termcap to handle GO-225/VT220
# From: <edm@nwnexus.WA.COM>
# (go225: I added <rmam>/<smam> based on the init string -- esr)
go225|go-225|Graphon 225,
	OTbs, am, mir, xenl,
	cols#80, it#8, lines#25, vt#3,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
	rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
	rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
	sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
	smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,

#### Harris (Beehive)
#
# Bletch.  These guys shared the Terminal Brain Damage laurels with Hazeltine.
# Their terminal group is ancient history now (1995) though the parent
# company is still in business.
#

# Beehive documentation is undated and marked Preliminary and has no figures
# so we must have early Superbee2 (Model 600, according to phone conversation
# with mfr.). It has proved reliable except for some missing padding
# (notably after \EK and <nl> at bottom of screen).
#
# The key idea is that AEP mode is poison for <cup> & that US's in
# the local memory should be avoided like the plague. That means
# that the 2048 character local buffer is used as 25 lines of 80
# characters, period. No scrolling local memory, folks. It also
# appears that we cannot use naked INS LINE feature since it uses
# US. The sbi fakes <il1> with an 80-space insert that may be too
# slow at low speeds; also spaces get converted to \040 which is
# too long for some programs (not vi).  DEL LINE is ok but slow.
#
# The <nl> string is designed for last line of screen ONLY; cup to
# 25th line corrects the motion inherent in scrolling to Page 1.
#
# There is one understood bug. It is that the screen appears to
# pop to a new (blank) page after a <nel>, or leave a half-line
# ellipsis to a quad that is the extra 48 memory locations. The
# data received is dumped into memory but not displayed.  Not to
# worry if <cup> is being used; the lines not displayed will be,
# whenever the cursor is moved up there. Since <cup> is addressed
# relative to MEMORY of window, nothing is lost; but beware of
# relative cursor motion (<cuu1>,<cud1>,<cuf1>,<cub1>). Recommended,
# therefore, is setenv MORE -c .
#
# WARNING: Not all features tested.
#
# Timings are assembled from 3 sources. Some timings may reflect
# SB2/Model 300 that were used if more conservative.
# Tested on a Model 600 at 1200 and 9600 bd.
#
# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly
# placed on the keyboard and useless because of AEP, is made
# into a backspace key. In use ESC must be pressed twice (to send)
# and sending ^C must be prefixed by ESC to avoid that weird
# transmit mode associated with ENTER key.
#
# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across
# the screen, then it has dropped into ENTER mode; hit
# RESET--ONLINE--!tset.
#
# As delivered this machine has a FATAL feature that will throw
# it into that strange transmit state (SPOW) if the space bar is
# hit after a CR is received, but before receiving a LF (or a
# few others).
#
# The circuits MUST be modified to eliminate the SPOW latch.
# This is done by strapping on chip A46 of the I/O board; cut
# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that
# chip. This mod has been checked out on a Mod 600 of Superbee II.
# With this modification absurdly high timings on cr are
# unnecessary.
#
# NOTE WELL that the rear panel switch should be set to CR/LF,
# not AEP!
#
sb1|Beehive SuperBee,
	OTbs, am, bw, da, db, mir, ul, xsb,
	cols#80, lines#25, xmc#1,
	bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r,
	cub1=^H, cud1=\n, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d,
	cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>,
	el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1,
	il1=\EN\EL$<3>\EQ\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
	    \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
	    \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
	    \s\s\s\s\s\EP$<3>\s\EO\ER\EA$<3>,
	ind=\n, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK,
	kf0=\E2, kf9=\E1, khome=\EH, kich1=\EQ\EO, krmir=\ER,
	lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER, rmso=\E_3,
	rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO, smso=\E_1,
	smul=\E_0, tbc=\E3, use=hp+pfk-cr,
sbi|superbee|Beehive SuperBee at Indiana U.,
	xsb,
	cr=\r$<1>, il1=\EN$<1>\EL$<9>\EQ \EP$<9> \EO\ER\EA,
	use=sb1,
# Alternate (older) description of Superbee - f1=escape, f2=^C.
# Note: there are at least 3 kinds of superbees in the world.  The sb1
# holds onto escapes and botches ^C's.  The sb2 is the best of the 3.
# The sb3 puts garbage on the bottom of the screen when you scroll with
# the switch in the back set to CRLF instead of AEP.  This description
# is tested on the sb2 but should work on all with either switch setting.
# The f1/f2 business is for the sb1 and the <xsb> can be taken out for
# the other two if you want to try to hit that tiny escape key.
# This description is tricky: being able to use cup depends on there being
# 2048 bytes of memory and the hairy <nl> string.
superbee-xsb|Beehive SuperBee,
	am, da, db, xsb,
	cols#80, it#8, lines#25,
	clear=\EH\EJ$<3>, cnorm=\n, cr=\r$<1000>, cub1=^H, cud1=\n,
	cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>,
	dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>,
	home=\EH, ht=^I, hts=\E1,
	ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
	rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3, use=hp+pfk-cr,
# This loses on lines > 80 chars long, use at your own risk
superbeeic|SuperBee with insert char,
	ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb,
sb2|sb3|fixed SuperBee,
	xsb@, use=superbee,

#### Beehive Medical Electronics
#
# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999):
# Regarding your question though; Beehive terminals weren't made by Harris.
# They were made by Beehive Medical Electronics in Utah. They went out of
# business in the early '80s.
#
# (OK, then, I don't know why a couple of these say "Harris Beehive".)
#

# Reports are that most of these Beehive entries (except superbee) have not
# been tested and do not work right.  <rmso> is a trouble spot.  Be warned.

# (bee: <ich1> was empty, which is obviously bogus -- esr)
beehive|bee|Harris Beehive,
	OTbs, am, mir,
	cols#80, lines#24,
	cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
	kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
	krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
	smir=\EQ, smso=\EdP, smul=\Ed`,
# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
# good grief - does this entry make :sg:/:ug: when it doesn't have to?
# look at those spaces in <rmso>/<smso>.  Seems strange to me...
# (beehive: <if=/usr/share/tabset/beehive> removed, no such file.  If you
# really care, cook up one using ^F -- esr)
beehive3|bh3m|beehiveIIIm|Harris Beehive 3m,
	OTbs, am,
	cols#80, it#8, lines#20,
	bel=^G, clear=^E^R, cr=\r, cub1=^H, cud1=\n, cuf1=^L, cuu1=^K,
	dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F,
	il1=\023$<160>, ind=\n, ll=^E^K, rmso=\s^_, smso=^]\s,
beehive4|bh4|Beehive 4,
	am,
	cols#80, lines#24,
	bel=^G, clear=\EE, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
	cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=\n,
# There was an early Australian kit-built computer called a "Microbee".
# It's not clear whether this is for one of those or for a relative
# of the Beehive.
microb|microbee|Micro Bee series,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf9=\Ex, khome=\EH, rmso=\Ed@, rmul=\Ed@,
	sgr0=\Ed@, smso=\s\EdP, smul=\Ed`, use=hp+pfk-cr,

# 8675, 8686, and bee from Cyrus Rahman
# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
ha8675|Harris 8675,
	is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F,
	kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei,
	kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=\n, kf6=^T, kf7=^H, kf8=^?,
	kf9=\Ee, use=bee,
# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
# in :is: -- esr)
ha8686|Harris 8686,
	is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#
	    \E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F750
	    21B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8
	    FB5021B7283#,
	kf1=^B\Ep^C, kf10=\Ej, kf11=\EW, kf12=^B\E{^C,
	kf13=^B\E|^C, kf14=^B\E}^C, kf15=^B\E~^C, kf16=^B\E^?^C,
	kf2=^B\Eq^C, kf3=^B\Er^C, kf4=^B\Es^C, kf5=\E3, kf6=\EI,
	kf7=\ER, kf8=\EJ, kf9=\E(, use=bee,

#### Hazeltine
#
# Hazeltine appears to be out of the terminal business as of 1995.  These
# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with
# Harris. They have a hazeltine.com domain (but no web page there ) and can
# be reached at:
#
#	Hazeltine
#	450 East Pulaski Road
#	Greenlawn, New York 11740
#
# As late as 1993, manuals for the terminal product line could still be
# purchased from:
#
#	TRW Customer Service Division
#	15 Law Drive
#	P.O. Box 2076
#	Fairfield, NJ 07007-2078
#
# They're now (1998) a subsidiary of General Electric, operating under the
# marque "GEC-Marconi Hazeltine" and doing military avionics.  Web page
# at <http://www.gec.com/cpd/1ncpd.htm#1.55>.
#

# Since <cuf1> is blank, when you want to erase something you
# are out of luck.  You will have to do ^L's a lot to
# redraw the screen.  h1000 is untested.  It doesn't work in
# vi - this terminal is too dumb for even vi.  (The code is
# there but it isn't debugged for this case.)
hz1000|Hazeltine 1000,
	OTbs,
	cols#80, lines#12,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s, home=^K,
	ind=\n,
# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
hz1420|Hazeltine 1420,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\n, cuf1=^P,
	cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S,
	ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=\n, rmso=\E^Y,
	smso=\E^_,
# New "safe" cursor movement (11/87) from <cgs@umd5.umd.edu>.  Prevents
# freakout with out-of-range args and tn3270.  No hz since it needs to
# receive tildes.
hz1500|Hazeltine 1500,
	OTbs, am, hz,
	cols#80, lines#24,
	bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
	cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c,
	cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R,
	il1=~\032$<40>, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^P,
	kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_,
# h1510 assumed to be in sane escape mode.  Else use h1500.
# (h1510: early versions of this entry apparently had "<rmso=\E^_>,
# <smso=\E^Y>, but these caps were commented out in 8.3; also,
# removed incorrect and overridden ":do=^J:" -- esr)
hz1510|Hazeltine 1510,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K, cuf1=^P,
	cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X,
	el=\E^O, il1=\E^Z, ind=\n,
# Hazeltine 1520
# The following switch settings are assumed for normal operation:
#	FULL		CR		U/L_CASE	ESCAPE
#	FORMAT_OFF	EOM_A_OFF	EOM_B_OFF	WRAPAROUND_ON
# Other switches may be set for operator convenience or communication
# requirements.
hz1520|Hazeltine 1520,
	OTbs, am, bw, msgr,
	cols#80, lines#24,
	bel=^G, bold=\E^_, clear=\E^\, cr=\r, cub1=^H, cud1=\n,
	cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
	ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, kbs=^H,
	kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L,
	kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z,
	rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_,
# This version works with the escape switch off
# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
hz1520-noesc|Hazeltine 1520,
	am, hz,
	cols#80, lines#24,
	bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
	cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O,
	home=~^R, il1=~^Z, ind=\n, rmso=~^Y, smso=~^_,
# Note: the h1552 appears to be the first Hazeltine terminal which
# is not braindamaged.  It has tildes and backprimes and everything!
# Be sure the auto lf/cr switch is set to cr.
hz1552|Hazeltine 1552,
	OTbs,
	cud1=\n, dl1=\EO, il1=\EE, lf1=blue, lf2=red, lf3=green,
	use=vt52,
hz1552-rv|Hazeltine 1552 reverse video,
	cud1=\n, rmso=\ET, smso=\ES, use=hz1552,
# Note: h2000 won't work well because of a clash between upper case and ~'s.
hz2000|Hazeltine 2000,
	OTbs, OTnc, am,
	cols#74, lines#27,
	bel=^G, clear=~\034$<6>, cub1=^H, cud1=\n,
	cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
	il1=~\032$<6>, ind=\n, pad=^?,
# Date: Fri Jul 23 10:27:53 1982.  Some unknown person wrote:
# I tested this termcap entry for the Hazeltine Esprit with vi. It seems
# to work ok. There is one problem though if one types a lot of garbage
# characters very fast vi seems not able to keep up and hangs while trying
# to insert. That's in insert mode while trying to insert in the middle of
# a line. It might be because the Esprit doesn't have insert char and delete
# char as a built in function. Vi has to delete to end of line and then
# redraw the rest of the line.
esprit|Hazeltine Esprit I,
	OTbs, am, bw,
	cols#80, lines#24,
	bel=^G, cbt=\E^T, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K,
	cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
	ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, is2=\E?, kbs=^H,
	kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0\n,
	kf1=^B1\n, kf2=^B2\n, kf3=^B3\n, kf4=^B4\n, kf5=^B5\n,
	kf6=^B6\n, kf7=^B7\n, kf8=^B8\n, kf9=^B9\n, khome=\E^R,
	lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9,
	rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_,
esprit-am|Hazeltine esprit auto-margin,
	am, use=esprit,
# Hazeltine Modular-1 from Cliff Shackelton <ittvax!ittral!shackelt> via BRL
# Vi it seems always wants to send a control J for "do" and it turned out
# that the terminal would work somewhat if the auto LF/CR was turned off.
# (hmod1: removed :dn=~^K: -- esr)
hmod1|Hazeltine Modular 1,
	OTbs, am, hz,
	cols#80, lines#24,
	bel=^G, cbt=~^T, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P,
	cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
	ind=\n, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R,
	rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_,
#
# Hazeltine Executive 80 Model 30 (1554?)
#	from  Will Martin <control@ALMSA-1.ARPA> via BRL
# Like VT100, except for different "am" behavior.
hazel|exec80|h80|he80|Hazeltine Executive 80,
	OTbs, OTpt, am,
	cols#80, it#8, lines#24, vt#3,
	OTnl=\n, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
	ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
	rmkx=\E[?1l\E>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
	smul=\E[4m$<2/>,

#### IBM
#

ibm327x|line mode IBM 3270 style,
	gn,
	clear=\r\n, el=\r, home=\r,

ibm3101|i3101|IBM 3101-10,
	OTbs, am, xon,
	cols#80, lines#24,
	bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EI, home=\EH, hts=\E0, ind=\n, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, nel=\r\n, tbc=\EH,
ibm3151|IBM 3151 display,
	is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;
	    %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t
	    %{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
	sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
# removed kend, knp, kpp -TD
#
# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015
# Added ich1 (kich1 without ich1 doesn't make sense).
# Added il1 (kil1 without il1 doesn't make sense).
# Added xon (terminal uses XON/XOFF flow control).
#
ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
	OTbs, am, mir, msgr, xon,
	cols#80, it#8, lines#24,
	acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x
	     \370,
	bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=\r, cub1=\ED,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
	ich1=\EP \010, il1=\EN, ind=\n, invis=\E4P, kbs=^H, kcbt=\E2,
	kclr=\EL\r, kctab=\E1, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EQ, kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r,
	kf10=\Ej\r, kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r,
	kf14=\E!b\r, kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r,
	kf18=\E!f\r, kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r,
	kf21=\E!i\r, kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r,
	kf3=\Ec\r, kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r,
	kf8=\Eh\r, kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010,
	kil1=\EN, ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A,
	rmcup=\E>A, rmso=\E4@, rmul=\E4@,
	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;
	    %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t
	    %{80}%|%;%c%?%p9%t\E>A%e\E<@%;,
	sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B,

ibm3161-C|IBM 3161-C NLS terminal using cartridge,
	rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161,
#
# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015
# Deleted il1.  (il1 will now be inherited from ibm3161-C, which inherits
# it from ibm3161.
#
ibm3162|IBM 3162 display,
	blink=\E4$a, bold=\E4(a, invis=\E40a, rev=\E4!a,
	rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
	use=ibm3161-C,

# This really should not use setab/setaf, but it is clear that the
# original terminfo does not toggle red/blue colors as in setb/setf.
ibm3164|i3164|IBM 3164,
	msgr,
	colors#8, pairs#64,
	op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A,
	setab=\E4  %p1%{64}%+%c,
	setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@,
	smcup=\E!9/N\E>B, use=ibm3161,

ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
	am, bw, msgr, xon,
	cols#80, it#8, lines#25,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H,
	hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, kclr=\E[144q,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	ked=\E[148q, kel=\E[142q, kend=\E[146q, kf1=\E[001q,
	kf10=\E[010q, kf11=\E[011q, kf12=\E[012q, kf13=\E[013q,
	kf14=\E[014q, kf15=\E[015q, kf16=\E[016q, kf17=\E[017q,
	kf18=\E[018q, kf19=\E[019q, kf2=\E[002q, kf20=\E[020q,
	kf21=\E[021q, kf22=\E[022q, kf23=\E[023q, kf24=\E[024q,
	kf25=\E[025q, kf26=\E[026q, kf27=\E[027q, kf28=\E[028q,
	kf29=\E[029q, kf3=\E[003q, kf30=\E[030q, kf31=\E[031q,
	kf32=\E[032q, kf33=\E[033q, kf34=\E[034q, kf35=\E[035q,
	kf36=\E[036q, kf4=\E[004q, kf5=\E[005q, kf6=\E[006q,
	kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, khome=\E[H,
	kich1=\E[139q, kil1=\E[140q, kind=\E[151q, knp=\E[154q,
	kpp=\E[150q, kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\E[T,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;%?%p7%t;8%;m,
	sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	use=ecma+index,

ibmaed|IBM Experimental display,
	OTbs, am, eo, msgr,
	cols#80, it#8, lines#52,
	clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
	dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP,
	il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	rmso=\E0, sgr0=\E0, smso=\E0,
ibm-apl|apl|IBM apl terminal simulator,
	lines#25, use=dm1520,
# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
ibmmono|IBM workstation monochrome,
	eslok, hs,
	bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL,
	invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET,
	kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY,
	khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG,
	lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew,
	sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo,
	use=ibm3101,
ibmega|IBM Enhanced Color Display,
	cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
	nel=\r\n, use=ibmmono,
# This color scheme is assumed in some recent IBM terminal descriptions
# (green on black, emulated on a 16-color terminal).
ibm+color|IBM color definitions,
	colors#8, ncv#3, pairs#64,
	op=\E[32m\E[40m,
	setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e
	     %p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}
	     %=%t46m%e%p1%{7}%=%t107m%;,
	setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e
	     %p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}
	     %=%t36m%e%p1%{7}%=%t97m%;,
ibm+16color|IBM aixterm color definitions,
	colors#16, pairs#0x100,
	setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
	setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
	setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e
	     %ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
	setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e
	     %ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
ibm5154|IBM 5154 Color display,
	colors#8, ncv@, pairs#64,
	bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
	use=ibm+color,
ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline,
	rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;,
	use=ibmmono,
ibmvga-c|IBM VGA display color termcap,
	cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
	nel=\r\n, use=ibmega-c,
ibmvga|IBM VGA display,
	cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
	nel=\r\n, use=ibmega,
# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
	lines#32,
	dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono,
ibm6155|IBM 6155 Black & White display,
	blink@, bold@, use=ibm5151,
# Advanced Monochrome (6153) and Color (6154) Graphics Display:
ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display,
	lines#31,
	dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono,
ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
	lines#31,
	dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo,
	use=ibmega-c,
ibm6154|IBM 6154 Color displays,
	blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1
	    2%;m,
	sgr0=\E[0;10m, use=ibm5154,
ibm6153|IBM 6153 Black & White display,
	blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1
	    2%;m,
	sgr0=\E[0;10m, use=ibm5151,
ibm6153-90|IBM 6153 Black & White display,
	cols#90, lines#36,
	blink@, bold@, use=ibm5151,
ibm6153-40|IBM 6153 Black & White display,
	cols#40, lines#12, use=ibm6153-90,
ibm8512|ibm8513|IBM color VGA Terminal,
	am, mir, msgr,
	cols#80, it#8, lines#25,
	acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
	clear=\E[H\E[J, cub1=\E[D, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL,
	il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A,
	kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
	kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
	kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m,
	rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m,
	smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb,
	smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	use=ibm8503,
hft-c|HFT with Color,
	colors#8, pairs#64,
	acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B,
	use=ibm5151, use=ibm+color,
hft-c-old|HFT with Color PC850,
	colors#8, pairs#64,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
	use=ibm+color,
hft-old|AIWS High Function Terminal,
	am, xon,
	cols#80, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
	ht=^I, ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
	kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
	kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q,
	ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, use=ibm+color,
ibm-system1|system1|IBM system/1 computer,
	am, xt,
	cols#80, lines#24,
	bel=^G, clear=^Z, cub1=^H, cuf1=^\,
	cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K,
	ind=\n,
#       lft-pc850 : IBM Low Function Terminal Device
#    lft "supports" underline, bold, and blink in the sense that the lft code
#    sets all the right bits.  HOWEVER, depending upon the adapter, these
#    attributes may or may not be supported by the device driver.
lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
	am, bw, msgr, xon,
	cols#80, it#8, lines#25,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	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[2J, el=\E[0K,
	home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL,
	il1=\E[L, ind=\ED, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z,
	kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=\E[P, ked=\E[148q, kel=\E[142q,
	kend=\E[146q, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
	kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, kf15=\E[015q,
	kf16=\E[016q, kf17=\E[017q, kf18=\E[018q, kf19=\E[019q,
	kf2=\E[002q, kf20=\E[020q, kf21=\E[021q, kf22=\E[022q,
	kf23=\E[023q, kf24=\E[024q, kf25=\E[025q, kf26=\E[026q,
	kf27=\E[027q, kf28=\E[028q, kf29=\E[029q, kf3=\E[003q,
	kf30=\E[030q, kf31=\E[031q, kf32=\E[032q, kf33=\E[033q,
	kf34=\E[034q, kf35=\E[035q, kf36=\E[036q, kf4=\E[004q,
	kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
	kf9=\E[009q, khome=\E[H, kich1=\E[139q, kil1=\E[140q,
	kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q,
	krmir=\E[4l, rev=\E[7m, ri=\EL, rmacs=\E(B, rmir=\E[4l,
	rmso=\E[0m, rmul=\E[0m, rs2=\Ec,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, use=ecma+index,
# "Megapel" refers to the display adapter, which was used with the IBM RT
# aka IBM 6150.
ibm5081|hft|IBM Megapel Color display,
	acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
	s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display,
	eslok, hs,
	lines#33,
	dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo,
	use=ibmega-c,
ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display,
	use=hft-c,
ibm8514|IBM 8514/a color VGA display,
	eslok, hs,
	dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft,
ibm8514-c|IBM 8514 color display with standout and underline,
	eslok, hs,
	lines#41,
	cr=\r, cud1=\n, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=\n,
	kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, tsl=\Ej\EYI%+ \Eo,
	use=ibmega-c,

#
# AIX entries.  IBM ships these with AIX 3.2.5.
# -- added rc, sc based on manpage -TD
# -- added rmacs, smacs based on manpage -TD
# Note that we could use ibm+16color, but that is not how IBM defines this one.
aixterm|IBM Aixterm Terminal Emulator,
	eslok, hs,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
	fsl=\E[?F, rc=\E8, ri@, rmacs=\E(B, s0ds=\E(B, s1ds=\E(0,
	sc=\E7,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
	    %t;8%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0;10m\E(B, smacs=\E(0, tsl=\E[?%p1%dT,
	use=ibm6154,
aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
	eslok, hs,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
	fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
	    %t;8%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153,
aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
	eslok, hs,
	bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
	    %t;8%;m,
	tsl=\E[?%p1%dT, use=ibm6153,
jaixterm|IBM Kanji Aixterm Terminal Eemulator,
	acsc@, rmacs@,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8
	    %;m,
	sgr0=\E[m, smacs@, use=aixterm,
jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
	acsc@, rmacs@,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8
	    %;m,
	sgr0=\E[m, smacs@, use=aixterm-m,

# This flavor is adapted from xterm, in turn from aixterm documentation -TD
aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors,
	use=ibm+16color, use=aixterm,

#### Infoton/General Terminal Corp.
#

# gt100 sounds like something DEC would come out with.  Let's hope they don't.
i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100),
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM,
	ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL,
	ind=\n, rmso=\Ea, smso=\Eb,

i400|Infoton 400,
	OTbs, am,
	cols#80, lines#25,
	bel=^G, clear=\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%3d;%p2%3dH, cuu1=\E[A,
	dch1=\E[4h\E[2Q\E[P\E[4l\E[0Q, dl1=\E[M, el=\E[N,
	il1=\E[L, ind=\n, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q,

# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
addrinfo|cursor-addressable Infoton,
	cup=\037%p1%c%p2%c, home=^H, use=infoton,

# "VISTAR II/HZ Technical Users Manual" (May 1975).
#
infoton2|cursor-addressable Infoton VISTAR II,
	cup=~\021%p2%c%p1%c, home=^H, use=infoton,

# "VISTAR Technical User's Manual" (October 1972).
#
# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr)
infoton|Infoton VISTAR,
	am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^Z, cud1=\n, cuf1=^Y, cuu1=^\,
	ed=^K, ind=\n, ll=^H^\,

# The ICL6402 was actually the Kokusai Display System 6402.
# The 6404 was the KDS7372 (color version of the 6402).
#
# ICL6404 control codes follow:
#
#code            function
#~~~~~~~~~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ctrl-A          set SOM position at cursor position
#ctrl-G          Bell
#ctrl-H          Backspace
#ctrl-I          Horizontal tab
#ctrl-J          Linefeed
#ctrl-K          Cursor up
#ctrl-L          Cursor right
#ctrl-M          Carriage return
#ctrl-N          Disable xon/xoff to host
#ctrl-O          Enable xon/xoff to host
#ctrl-R          Enable bidirectional mode
#ctrl-T          Disable bidirectional mode
#ctrl-V          Cursor down
#ctrl-Z          Clear unprotected data to insert char
#ctrl-^          Cursor home
#ctrl-_          Newline
#
#ESC             lead-in char for multiple character command
#
#ESC space R     execute power on sequence
#ESC ! p1 p2     define scroll region:
#                p1 = scroll top    line:  20h - 37h
#                p1 = scroll bottom line:  20h - 37h
#ESC "           unlock keyboard
#ESC #           lock keyboard
#ESC $           Semi-graphics mode on
#ESC %           Semi-graphics mode off
#ESC &           protect mode on
#ESC '           protect mode off
#ESC (           write protect mode off (full intensity)
#ESC )           write protect mode on (half intensity)
#
#ESC *           clear screen
#ESC +           clear unprotected data to insert char
#ESC ,           clear unprotected data to half intensity spaces
#ESC - p1 p2 p3 p4     address cursor to page, row, column:
#                      p1 = page number  0 - 3
#                      p2 = row          20h - 7fh
#                      p3 = column (lo)  20h - 7fh
#                      p4 = column (hi)  20h - 21h (only 132 col)
#ESC . p1        set cursor style:
#                p1 = 0  invisible cursor
#                p1 = 1  block blinking cursor
#                p1 = 2  block steady cursor
#                p1 = 3  underline blinking cursor
#                p1 = 4  underline steady cursor
#ESC /           transmit cursor location (page, row, column)
#ESC 0 p1 p2 p3 p4     program edit key:
#                      p1 = edit key code: '@'-'S', '`'-'s'
#                      p2 p3 p4 = program data (3 bytes)
#
#ESC 1           set tab
#ESC 2           clear tab at cursor
#ESC 3           clear all tabs
#ESC 4           send unprotect line to cursor
#ESC 5           send unprotect page to cursor
#ESC 6           send line to cursor
#ESC 7           send page to cursor
#ESC 8 n         set scroll mode:
#                n = 0   set jump scroll
#                n = 1   set smooth scroll
#ESC 9 n         control display:
#                n = 0   display off
#                n = 1   display on
#ESC :           clear unprotected data to null
#ESC ;           clear unprotected data to insert char
#
#ESC <           keyclick on
#ESC = p1 p2     address cursor to row, column
#                p1 = row          20h - 7fh
#                p2 = column (lo)  20h - 7fh
#                p3 = column (hi)  20h - 21h (only 132 col)
#ESC >           keyclick off
#ESC ?           transmit cursor location (row, column)
#
#ESC @           copy print mode on
#ESC A           copy print mode off
#ESC B           block mode on
#ESC C           block mode off (conversation mode)
#ESC D F         set full duplex
#ESC D H         set half duplex
#ESC E           line insert
#ESC F p1 p2     set page colour (p1 = f/grnd, p2 = b/grnd)
#                0 = black, 1 = red,     2 = green, 3 = yellow
#                4 = blue,  5 = magenta, 6 = cyan,  7 = white
#ESC G n         set serial field attribute (n = 30h - 3Fh)
#ESC H n         full graphics mode:
#                n = 0  exit full graphics mode
#                n = 1  enter full graphics mode
#ESC I           back tab
#ESC J           back page
#ESC K           forward page
#
#ESC L           unformatted page print
#ESC M L         move window left  (132 col mode only)
#ESC M R         move window right (132 col mode only)
#ESC N           set page edit (clear line edit)
#ESC O           set line edit (clear page edit)
#ESC P           formatted page print
#ESC Q           character insert
#ESC R           line delete
#ESC S           send message unprotected only
#ESC T           erase line to insert char
#ESC U           set monitor mode   (see ESC X, ESC u)
#
#ESC V n         select video attribute mode:
#                n = 0   serial field attribute mode
#                n = 1   parallel character attribute mode
#ESC V 2 n       define line attribute:
#                n = 0   single width single height
#                n = 1   single width double height
#                n = 2   double width single height
#                n = 3   double width double height
#ESC V 3 n       select character font:
#                n = 0   system font
#                n = 1   user defined font
#ESC V 4 n       select screen mode:
#                n = 0   page screen mode
#                n = 1   virtual screen mode
#ESC V 5 n       control mouse mode:
#                n = 0   disable mouse
#                n = 1   enable sample mode
#                n = 2   send mouse information
#                n = 3   enable request mode
#ESC W           character delete
#ESC X           clear monitor mode (see ESC U, ESC u)
#ESC Y           erase page to insert char
#
#ESC Z n         send user/status line:
#                n = 0   send user line
#                n = 1   send status line
#                n = 2   send terminal ID
#ESC [ p1 p2 p3  set character attribute (parallel char mode):
#                p1: 0 = normal
#                    1 = blank
#                    2 = blink
#                    3 = blink blank (= blank)
#                    4 = reverse
#                    5 = reverse blank
#                    6 = reverse blink
#                    7 = reverse blink blank (= reverse blank)
#                    8 = underline
#                    9 = underline blank
#                    : = underline blink
#                    ; = underline blink blank
#                    < = reverse underline
#                    = = reverse underline blank
#                    > = reverse underline blink
#                    ? = reverse underline blink blank
#                p2, p3: f/grnd, b/grnd colour
#                (see ESC F for colours)
#                use ZZ for mono, eg.
#                    ESC [ 0 Z Z for normal
#                    ESC [ 4 Z Z for inverse etc.
#
#ESC \ n         set page size:
#                n = 1   24 lines/page
#                n = 2   48 lines/page
#                n = 3   72 lines/page
#                n = 4   96 lines/page
#ESC ] n         set Wordstar mode:
#                n = 0   normal (KDS7372) mode
#                n = 1   Wordstar mode
#
#ESC b           set foreground colour screen
#
#ESC c n         enter self-test mode:
#                n = 0   exit self test mode
#                n = 1   ROM test
#                n = 2   RAM test
#                n = 3   NVRAM test
#                n = 4   screen display test
#                n = 5   main/printer port test
#                n = 6   mouse port test
#                n = 7   graphics board test
#                n = 8   graphics memory test
#                n = 9   display all 'E'
#                n = :   display all 'H'
#ESC d           set background colour screen
#
#ESC e n         program insert char (n = insert char)
#ESC f text CR   load user status line with 'text'
#
#ESC g           display user status line on 25th line
#ESC h           display system status line on 25th line
#ESC i           tab
#ESC j           reverse linefeed
#ESC k n         duplex/local edit mode:
#                n = 0   duplex edit mode
#                n = 1   local edit mode
#ESC l n         select virtual screen:
#                n = 0   screen 1
#                n = 1   screen 2
#ESC m           save current config to NVRAM
#ESC n p1        select display screen:
#                p1 = 0  screen 1
#                p1 = 1  screen 2
#                p1 = 2  screen 3
#                p1 = 3  screen 4
#ESC o p1 p2     set characters/line and attribute:
#                p1 = 0  80 chars/line
#
#ESC o p1 p2     set characters/line and attribute:
#                p1 = 0  80 chars/line
#                p1 = 1  132 chars/line
#                p2 = 0  single width single height
#                p2 = 1  single width double height
#                p2 = 2  double width single height
#                p2 = 3  double width double height
#
#ESC q           insert mode on
#ESC r           edit mode on
#ESC s           send message all
#ESC t           erase line to null
#ESC u           clear monitor mode (see ESC U, ESC X)
#ESC v           autopage mode on
#ESC w           autopage mode off
#ESC x p1 p2 p3  define delimiter code...
#ESC y           erase page to null
#
#ESC z 2 p1 p2 p3 p4   draw quadrangle:
#                      p1 = starting row
#                      p2 = starting column
#                      p3 = end row
#                      p4 = end column
#
#ESC { p1 p2 p3 p4     configure main port
#                      (baud, stop bits, parity, word length)
#
#ESC | p1 p2 text Ctrl-Y    program function key with 'text':
#                        p1 = function key code:
#                             '1' - ';'  normal f1- f11
#                             '<' - 'F'  shifted f1 - f11
#                        p2 = program mode:
#                             1 = FDX
#                             2 = LOC
#                             3 = HDX
#                        Ctrl-Y = terminator
#                        (use Ctrl-P to escape ^P, ^Y )
#
#ESC } p1 p2 p3 p4     configure printer port
#                      (baud, stop bits, parity, word length)
#ESC ~           send system status
#
# Codes and info from Peter Disdale <pete@pdlmail.demon.co.uk> 12 May 1997
#
# Entry is by esr going solely on above information and is UNTESTED.
# This actually looks a lot like a TeleVideo 9xx.
# This entry uses page 0 and is monochrome; I'm not brave enough to try
# to make color work without a test terminal.  The <am> capability is a guess.
# The initialization string sets conversation mode, blinking underline cursor,
# full duplex, parallel attribute mode, display user status line, white
# foreground, black background, normal highlight.
#
icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
	OTbs, am, hs,
	cols#80, lines#24,
	bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*,
	cnorm=\E.3, cr=\r, csr=\E!%p1%{32}%+%c%p2%{32}%+%c,
	cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c,
	cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I,
	hts=\E1, il1=\EE, invis=\E[1ZZ,
	is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ,
	rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ,
	rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1,
	sgr=\E[%'0'%?%p1%t%'8'%|%;%?%p2%t%'8'%|%;%?%p3%t%'4'%|%;%?
	    %p4%t%'2'%|%;%?%p7%t%'1'%|%;%cZZ,
	sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3,
icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
	rs2=\Eo1, use=icl6404,

#### Interactive Systems Corp
#
# ISC used to sell OEMed and customized hardware to support ISC UNIX.
# ISC UNIX still exists in 1995, but ISC itself is no more; they got
# bought out by Sun.
#

# From: <cithep!eric>  Wed Sep 16 08:06:44 1981
# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
# ":le=^_:" later overridden -- esr)
intext|Interactive Systems Corporation modified owl 1200,
	OTbs, am,
	cols#80, it#8, lines#24, xmc#1,
	bel=^G, cbt=^Y, clear=\014$<132>, cr=\r, cub1=^H, cud1=\n,
	cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\,
	dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>,
	el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=\n, ip=$<5.5*>, kbs=^H,
	kcub1=^_, kcud1=\n, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r,
	kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r,
	kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<,
	rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036:\264\026%%,
	smso=^V$\,,
intext2|intextii|INTERACTIVE modified owl 1251,
	am, bw, ul,
	cols#80, lines#24, xmc#0,
	bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=\E[D,
	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
	flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u,
	hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
	kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
	kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r,
	kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r,
	khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
	lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
	lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
	smul=\E[18 D,

#### Kimtron (abm, kt)
#
# Kimtron seems to be history, but as March 1998 these people are still
# offering repair services for Kimtron equipment:
#
#    Com/Pair Monitor Service
#    1105 N. Cliff Ave.
#    Sioux Falls, South Dakota 57103
#
#    WATS voice:  1-800/398-4946
#    POTS   fax: +1 605/338-8709
#    POTS voice: +1 605/338-9650
#         Email: <compair@sd.cybernex.net>
#  Internet/Web: <http://www.com-pair.com>
#
# Kimtron entries include (undocumented) codes for: enter dim mode,
# enter bold mode, enter reverse mode, turn off all attributes.
#

# Kimtron ABM 85 added by Dual Systems
# (abm85: removed duplicated ":kd=^J:" -- esr)
abm85|Kimtron ABM 85,
	OTbs, am, bw, msgr,
	cols#80, it#8, lines#24, xmc#1,
	cbt=\EI, clear=\E*, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\Ey, el=\Et, ht=^I,
	if=/usr/share/tabset/stdcrt, il1=\EE,
	is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek,
	rmul=\Em, smir=\EQ, smso=\Ej, smul=\El,
# Kimtron ABM 85H added by Dual Systems.
# Some notes about the abm85h entries:
# 1) there are several firmware revs of 85H in the world. Use abm85h-old for
#    firmware revs prior to SP51
# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the
#    abm85e entry if it is in tvi920 emulation mode. They are incompatible
#    in some places and NOT software settable i.e., <is2> can't fix it)
# 3) In 85h mode, the arrow keys and special functions transmit when
#    the terminal is in dup-edit, and work only locally in local-edit.
#    Vi won't swallow `del char' for instance, but <smcup> turns on
#    dup-edit anyway so that the arrow keys will work right. If the
#    arrow keys don't work the way you like, change <smcup>, <rmcup>, and
#    <is2>.  Note that 920E mode does not have software commands to toggle
#    between dup and local edit, so you get whatever was set last on the
#    terminal.
# 4) <flash> attribute is nice, but seems too slow to work correctly
#    (\Eb<pad>\Ed)
# 5) Make sure `hidden' attributes are selected. If `embedded' attributes
#    are selected, the <xmc@> entry should be removed.
# 6) auto new-line should be on (selectable from setup mode only)
#
# From: Erik Fair <fair@ucbarpa>  Sun Oct 27 07:21:05 1985
abm85h|Kimtron ABM 85H native mode,
	hs,
	xmc@,
	bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@,
	fsl=\r, invis@,
	is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r
	    \EG0\Ed\E.4\El,
	kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr,
	use=abm85,
abm85e|Kimtron ABM 85H in 920E mode,
	xmc@,
	bel=^G, dim=\E), flash@,
	is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq
	    \Em,
	rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev.,
	xmc@,
	bel=^G, dim=\E),
	is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9
	    \EF,
	rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
# From: <malman@bbn-vax.arpa>
# (kt7: removed obsolete :ma=^V^J^L :" -- esr)
kt7|kimtron model kt-7,
	OTbs, am,
	cols#80, it#8, lines#24,
	cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
	if=/usr/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E",
	kbs=^H, kcbt=\EI, kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r,
	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr,
# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the
# other kt7 entry and the adjacent key capabilities).  Removed EE which is
# identical to :mh:.  Removed :ES=\EGD: which is some kind of highlight
# but we can't figure out what.
kt7ix|kimtron model kt-7 or 70 in IX mode,
	am, bw,
	cols#80, it#8, lines#25,
	acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI,
	civis=\E.0, clear=\E*, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=\r,
	home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=\n,
	is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER,
	ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ,
	nel=\r\n, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
	sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,

#### Microdata/MDIS
#
# This was a line of terminals made by McDonnell-Douglas Information Systems.
# These entries come direct from MDIS documentation.  I have edited them only
# to move primary names of the form p[0-9] * to aliases, and to comment out
# <rmacs>/<smacs> in a couple of entries without <acsc> strings.  I have
# also removed the change history; the last version indicates this is
# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989).
#

# McDonnell Information Systems Terminal Family History
# =========================================
#
# Prism-1, Prism-2 and P99:
#       Ancient Microdata and CMC terminals, vaguely like Adds Regent 25.
#
# Prism-4 and Prism-5:
#       Slightly less ancient range of Microdata terminals. Follow-on from
#       Prism-2, but with many enhancements. P5 has eight display pages.
#
# Prism-6:
#       A special terminal for use with library systems, primarily in Germany.
#       Limited numbers. Similar functionality to P5 (except attributes?).
#
# Prism-7, Prism-8 and Prism-9:
#       More recent range of MDIS terminals, in which P7 and P8
#       replace the P4 & P5, with added functionality, and P9 is the flagship.
#       The P9 has two emulation modes - P8 and ANSI - and includes a
#       large number of the DEC VT220 control sequences. Both
#       P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats.
#
# Prism-12 and Prism-14:
#       Latest range, functionally very similar to the P9.  The P14 has a
#       black-on-white overscanning screen.
#
# The terminfo definitions given here are:
#
# p2      - Prism-2 (or Prism-1 or P99).
#
# p4      - Prism-4 (and older P7s & P8s).
# p5      - Prism-5 (or Prism-6).
#
# p7      - Prism-7.
# p8      - Prism-8 (in national or multinational mode).
# p8-w    - 132 column version of p8.
# p9      - Prism-9 in ANSI mode.
# p9-w    - 132 column version of p9.
# p9-8    - Prism-9 in Prism-8 emulation mode.
# p9-8-w  - As p9-8, but with 132 columns.
#
# p12     - Prism-12 in ANSI mode.
# p12-w   - 132 column version of p12.
# p12-m   - Prism-12 in MDC emulation mode.
# p12-m-w - As p12-m, but with 132 columns.
# p14     - Prism-14 in ANSI mode.
# p14-w   - 132 column version of p14.
# p14-m   - Prism-14 in MDC emulation mode.
# p14-m-w - As p14-m, but with 132 columns.
#
# p2: Prism-2
# -----------
#
# Includes Prism-1 and basic P99 without SP or MP loaded.
# The simplest form of Prism-type terminal.
# Basic cursor movement and clearing operations only.
# No video attributes.
# Notes:
#  Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
#  value up, followed by backspace.
#
prism2|MDC Prism-2,
	am, bw, msgr,
	cols#80, lines#24,
	bel=^G, clear=\014$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
	cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?
	    %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
	cuu1=^Z, ed=\EJ, el=\EK, home=^A,
	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc
	    %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
	ind=\n, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c,

# p4: Prism-4
# -----------
#
# Includes early versions of P7 & P8.
# Basic family definition for most Prisms (except P2 and P9 ANSI).
# Notes:
#  Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
#  value up, followed by backspace.
#  Cursor key definitions removed because they interfere with vi and csh keys.
#
prism4|p4|P4|MDC Prism-4,
	am, bw, hs, mc5i, msgr,
	cols#80, lines#24, wsl#72, xmc#1,
	bel=^G, blink=^CB, civis=\035\344, clear=\014$<20>,
	cnorm=\035\342, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
	cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?
	    %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
	cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK,
	fsl=\035\345, home=^A,
	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc
	    %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
	ind=\n, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
	rev=^CD, rmso=^C\s, rmul=^C\s,
	sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}
	    %+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
	sgr0=^C\s, smso=^CD, smul=^CP, tsl=\035\343,
	vpa=\013%p1%{32}%+%c,

# p5: Prism-5
# -----------
#
# Same definition as p4. Includes Prism-6 (not tested!).
# Does not use any multi-page features.
#
prism5|p5|P5|MDC Prism-5,
	use=p4,

# p7: Prism-7
# -----------
#
# Similar definition to p4. Uses ANSI cursor motion to avoid network problems.
# Notes:
#  Use p4 for very early models of P7.
#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
#
prism7|p7|P7|MDC Prism-7,
	cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4,

# p8: Prism-8
# -----------
#
# Similar definition to p7. Uses ANSI cursor motion to avoid network problems.
# Supports national and multinational character sets.
# Notes:
#  Alternate char set operations only work in multinational mode.
#  Use p4 for very early models of P8.
#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
#
prism8|p8|P8|MDC Prism-8,
	cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h,
	vpa=\E[%i%p1%dd, use=p4,

# p8-w: Prism-8 in 132 column mode
# --------------------------------
#
# 'Wide' version of p8.
# Notes:
#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
#
prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
	cols#132,
	is2=\E[<12h\E[<14h, use=p8,

# p9: Prism-9 in ANSI mode
# -------------------------
#
# The "flagship" model of this generation of terminals.
# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones.
# Notes:
#  Tabs only reset by "reset". Otherwise assumes default (8 cols).
#  Fixes to deal with terminal firmware bugs:
#  . 'ri' uses insert-line since rev index doesn't always
#  . 'sgr0' has extra '0' since esc[m fails
#  . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25
#  Not covered in the current definition:
#  . Labels
#  . Programming Fn keys
#  . Graphic characters (defaults correctly to vt100)
#  . Padding values (sets xon)
# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
#
prism9|p9|P9|MDC Prism-9 in ANSI mode,
	am, bw, hs, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#72,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
	clear=^L, cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	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, dsl=\E[%}\024, ech=\E[%p1%dX,
	ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, nel=\r\n, prot=\E[32%{, rc=\E[%z,
	rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m,
	rs2=\E[&p\E[<12l\E\sF\E[3g\E[9;17;25;33;41;49;57;65;73
	    \sN,
	sc=\E[%y,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%?
	    %p8%t\E[32%%{%;%?%p9%t\016%e\017%;,
	sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
	use=ansi+pp,

# p9-w: Prism-9 in 132 column mode
# --------------------------------
#
# 'Wide' version of p9.
#
prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
	cols#132,
	is2=\E[&p\E[<12l\E F\E[<14h,
	rs2=\E[&p\E[<12l\E F\E[<14h, use=p9,

# p9-8: Prism-9 in P8 mode
# ------------------------
#
# P9 terminal in P8 emulation mode.
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8,

# p9-8-w: Prism-9 in P8 and 132 column modes
# ------------------------------------------
#
# P9 terminal in P8 emulation mode and 132 column mode.
#
prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w,

# p12: Prism-12 in ANSI mode
# ---------------------------
#
# See p9 definition.
#
prism12|p12|P12|MDC Prism-12 in ANSI mode,
	use=p9,

# p12-w: Prism-12 in 132 column mode
# ----------------------------------
#
# 'Wide' version of p12.
#
prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode,
	use=p9-w,

# p12-m: Prism-12 in MDC emulation mode
# -------------------------------------
#
# P12 terminal in MDC emulation mode.
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode,
	use=p9-8,

# p12-m-w: Prism-12 in MDC emulation and 132 column modes
# -------------------------------------------------------
#
# P12 terminal in MDC emulation mode and 132 column mode.
#
prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode,
	use=p9-8-w,

# p14: Prism-14 in ANSI mode
# ---------------------------
#
# See p9 definition.
#
prism14|p14|P14|MDC Prism-14 in ANSI mode,
	use=p9,

# p14-w: Prism-14 in 132 column mode
# ----------------------------------
#
# 'Wide' version of p14.
#
prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode,
	use=p9-w,

# p14-m: Prism-14 in MDC emulation mode
# -------------------------------------
#
# P14 terminal in MDC emulation mode.
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode,
	use=p9-8,

# p14-m-w: Prism-14 in MDC emulation and 132 column modes
# -------------------------------------------------------
#
# P14 terminal in MDC emulation mode and 132 column mode.
#
prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode,
	use=p9-8-w,

# End of McDonnell Information Systems Prism definitions

# These things were popular in the Pick database community at one time
# From: George Land <georgeland@aol.com> 24 Sep 1996
p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
	am, bw, hs, mir,
	cols#80, lines#24, ma#1, wsl#78, xmc#1,
	bel=^G, blink=^CB, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F,
	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P,
	ed=\EJ, el=\EK, home=^A, ind=\n, invis=^CH, kbs=^H, kcub1=^U,
	kcud1=\n, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ,
	kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r,
	kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^A, lf1=F1, lf10=F10, lf2=F2,
	lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=\n\r,
	pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE,
	smul=^C0,

#### Microterm (act, mime)
#
# The mime1 entries refer to the Microterm Mime I or Mime II.
# The default mime is assumed to be in enhanced act iv mode.
#

# New "safe" cursor movement (5/87) from <reuss@umd5.umd.edu>.  Prevents
# freakout with out-of-range args on Sytek multiplexors.  No <smso=^N> and
# <rmso=^N> since  it gets confused and it's too dim anyway.  No <ich1>
# since Sytek insists ^S means xoff.
# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
act4|microterm|microterm act iv,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\014$<12/>, cr=\r, cub1=^H, cud1=^K, cuf1=^X,
	cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c,
	cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>,
	ed=\037$<2.2*/>, el=\036$<.1*/>, home=^],
	il1=\001<2.3*/>, ind=\n, kcub1=^H, kcud1=^K, kcuf1=^X,
	kcuu1=^Z,
# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
act5|microterm5|microterm act v,
	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
	use=act4,
# Mimes using brightness for standout.  Half bright is really dim unless
# you turn up the brightness so far that lines show up on the screen.
mime-fb|full bright mime1,
	is2=^S\E, rmso=^S, smso=^Y, use=mime,
mime-hb|half bright mime1,
	is2=^Y\E, rmso=^Y, smso=^S, use=mime,
# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
# the more plausible ":do=^J:" -- esr)
# uc was at one time disabled to get around a curses bug, be wary of it
mime|mime1|mime2|mimei|mimeii|microterm mime1,
	OTbs, am,
	cols#80, it#8, lines#24, vt#9,
	bel=^G, clear=^]^C, cr=\r, cub1=^H, cud1=\n, cuf1=^X,
	cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c,
	cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>,
	il1=\001$<80>, ind=\n, is2=^S\E^Q, kcub1=^H, kcud1=^K,
	kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U,
# These termcaps (for mime2a) put the terminal in low intensity mode
# since high intensity mode is so obnoxious.
mime2a-s|microterm mime2a (emulating an enhanced Soroc iq120),
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED,
	dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^,
	il1=\001$<20*>, ind=\n, ip=$<2>, is2=\E), kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7,
	smir=\EE, smso=\E:, smul=\E6,
# This is the preferred mode (but ^X can't be used as a kill character)
mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52),
	OTbs,
	cols#80, it#8, lines#24,
	bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N,
	dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I,
	il1=\001$<20*>, ind=\n, ip=$<2>, is2=^Y, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
	rmul=\E5, smir=^O, smso=\E8, smul=\E4,
# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
mime3a|mime1 emulating 3a,
	am@,
	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
mime3ax|mime-3ax|mime1 emulating enhanced 3a,
	it#8,
	dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
	use=mime3a,
# Wed Mar  9 18:53:21 1983
# We run our terminals at 2400 baud, so there might be some timing problems at
# higher speeds. The major improvements in this model are the terminal now
# scrolls down and insert mode works without redrawing the rest of the line
# to the right of the cursor. This is done with a bit of a kludge using the
# exit graphics mode to get out of insert, but it does not appear to hurt
# anything when using vi at least. If you have some users using act4s with
# programs that use curses and graphics mode this could be a problem.
mime314|mm314|mime 314,
	am,
	cols#80, lines#24,
	clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z,
	dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H,
	kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S,
# Microterm mime 340 from University of Wisconsin
mm340|mime340|mime 340,
	cols#80, lines#24,
	clear=\032$<12/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>,
	el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=\n, is2=\E\,,
	kbs=^H, kcub1=^H, kcud1=\n, kcuu1=^K, nel=\r\n,
# This came from University of Wisconsin marked "astro termcap for jooss".
# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:";
# also added <rmam>/<smam> based  on the init string -- esr)
mt4520-rv|micro-term 4520 reverse video,
	am, hs, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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,
	cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
	fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H
	    \E[J,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
	ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100,
	ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
	rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
	sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
	tbc=\E[g, tsl=\E[25;1H,

# Fri Aug  5 08:11:57 1983
# This entry works for the ergo 4000 with the following setups:
# ansi,wraparound,newline disabled, xon/xoff disabled in both
# setup a & c.
#
# WARNING!!! There are multiple versions of ERGO 4000 microcode
# Be advised that very early versions DO NOT WORK RIGHT !!
# Microterm does have a ROM exchange program- use it or lose big
# (ergo400: added <rmam>/<smam> based on the init string -- esr)
ergo4000|microterm ergo 4000,
	da, db, msgr,
	cols#80, lines#66,
	bel=^G, clear=\E[H\E[2J$<80>, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[1P$<80>, dl1=\E[1M$<5*>, ed=\E[0J$<15>,
	el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>,
	is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
	lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
	smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
	smso=\E[7m$<20>,

#### NCR
#
# NCR's terminal group was merged with AT&T's when AT&T bought the company.
# For what happened to that group, see the ADDS section.
#
# There is an NCR4103 terminal that's just a re-badged Wyse-50.
#

# The following vendor-supplied termcaps were captured from the Boundless
# Technologies site, 8 March 1998.  I removed all-upper-case names that were
# identical, except for case, to lower-case ones.  I also uncommented the acsc
# capabilities.X
#
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300an,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300wan,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300pp,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300wpp,
# This definition for ViewPoint supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
ncr260vppp|NCR 2900_260 viewpoint,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32, xmc#1,
	acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5,
	cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
	dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>,
	el=\EK$<2>, fsl=\r, home=\036$<2>, ht=^I, hts=\E1,
	il1=\EM$<2>, ind=\n$<2>, invis=\EG1,
	is2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
	    \EcC1\Ee7$<100>,
	kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
	kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=\n, kcuf1=^F,
	kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B:\r,
	kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r,
	kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r,
	kf20=^B$\r, kf21=^B%^M, kf22=^B&\r, kf23=^B'\r, kf24=^B(\r,
	kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, kf28=\002\,\r,
	kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, kf32=^B0\r,
	kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, kf8=^B8\r,
	kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, kprt=\EP,
	ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
	nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
	    \EcC1\Ee7$<100>,
	sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
	smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
	    \EcC1\Ee7$<100>,
	rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
	    \EcC1\Ee7$<100>,
	use=ncr260vppp,
ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
	cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>,
	fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I,
	hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
	il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
	invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	khlp=\E[28~, kich1=\E[2~, krdo=\E[29~, nel=\EE$<5>, rc=\E8,
	rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+vtedit,
	use=vt220+cvis, use=vt220+keypad,
ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	use=ncr260vt100an,
ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	smkx=\E=, use=ncr260vt100an,
ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	use=ncr260vt100pp,
ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
	cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>,
	cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>,
	cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf0=\EOy, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
	kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~,
	kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~,
	kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~, kf31=\E[6~,
	kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf4=\EOS,
	kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khlp=\E[28~, krdo=\E[29~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
	use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, use=ncr260vt200an,
ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
	use=ncr260vt200an,
ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
	    200>,
	use=ncr260vt200pp,
ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
	cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>,
	cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>,
	cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
	    ;1H\E>$<200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf0=\EOy, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
	kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, kf24=\E[34~,
	kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, kf28=\E[3~,
	kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~,
	kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, mc0=\E[i,
	mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>,
	rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[27m, rmul=\E[24m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
	    ;1H\E>$<200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
	use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1
	    H$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1
	    H$<200>,
	use=ncr260vt300an,
ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
	use=ncr260vt300an,
NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
	    ;1H\E>$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
	    ;1H\E>$<200>,
	use=ncr260vt300pp,
# This terminfo file contains color capabilities for the Wyse325 emulation of
# the NCR 2900/260C color terminal.  Because of the structure of the command
# (escape sequence) used to set color attributes, one of the fore/background
# colors must be preset to a given value. I have set the background color to
# black.  The user can change this setup by altering the last section of the
# 'setf' definition.  The escape sequence to set color attributes is
#		ESC d y <foreground_color> <background_color> 1
# In addition, the background color can be changed through the desk accessories.
# The capability 'op' sets colors to green on black (default combination).
#
# NOTE:  The NCR Unix System Administrator's Shell will not function properly
#	    if the 'pairs' capability is defined. Un-Comment the 'pairs'
#	    capability and recompile if you wish to have it included.
#
ncr260wy325pp|NCR 2900_260 Wyse 325,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	colors#16, cols#80, lines#24, ncv#33, nlab#32,
	acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=\r,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<5>, ht=^I,
	hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
	kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
	kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
	kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
	kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
	kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r,
	kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r,
	kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ,
	kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	setb=\s,
	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}
	     %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}
	     %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}
	     %e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t
	     %{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=
	     %t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
	tsl=\EF,
ncr260wy325wpp|NCR 2900_260 Wyse 325 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	use=ncr260wy325pp,
# This definition for Wyse 350 supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
# In addition, color capabilities have been added to this file.  The drawback,
# however, is that the background color has to be black.  The foreground colors
# are numbered 0 through 15.
#
# NOTE:  The NCR Unix System Administrator's Shell does not function properly
#	    with the 'pairs' capability defined as below.  If you wish to
#	    have it included, Un-comment it and recompile (using 'tic').
#
ncr260wy350pp|NCR 2900_260 Wyse 350,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1,
	acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<10>, ht=^I,
	hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
	kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
	mc0=\EP$<10>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	setb=\s,
	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}
	     %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}
	     %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}
	     %e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t
	     %{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1
	     %{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
	sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
	tsl=\EF,
ncr260wy350wpp|NCR 2900_260 Wyse 350 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<200>,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<200>,
	use=ncr260wy350pp,
# This definition for Wyse 50+ supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
# (ncr260wy50+pp: originally contained commented-out
# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
ncr260wy50+pp|NCR 2900_260 Wyse 50+,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32, xmc#1,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
	cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
	ed=\EY$<5>, el=\ET$<5>, fsl=\r, home=\036$<10>,
	ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
	invis=\EG1,
	is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
	kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
	mc0=\EP$<10>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
	smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
ncr260wy50+wpp|NCR 2900_260 Wyse 50+ wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<200>,
	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<200>,
	use=ncr260wy50+pp,
ncr260wy60pp|NCR 2900_260 Wyse 60,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32,
	acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
	cr=\r, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<25>,
	ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>,
	invis=\EG1,
	is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
	kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK,
	kcbt=\EI$<15>, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
	kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
	kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r,
	kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r,
	kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
	tsl=\EF,
ncr260wy60wpp|NCR 2900_260 Wyse 60 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"
	    \Ee4\Ex@\E`9\Ee7$<100>,
	use=ncr260wy60pp,
ncr160vppp|NCR 2900_160 viewpoint,
	use=ncr260vppp,
ncr160vpwpp|NCR 2900_160 viewpoint wide mode,
	use=ncr260vpwpp,
ncr160vt100an|NCR 2900_160 vt100 with ansi kybd,
	use=ncr260vt100an,
ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd,
	use=ncr260vt100pp,
ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd,
	use=ncr260vt100wan,
ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+  kybd,
	use=ncr260vt100wpp,
ncr160vt200an|NCR 2900_160 vt200 with ansi kybd,
	use=ncr260vt200an,
ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd,
	use=ncr260vt200pp,
ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd,
	use=ncr260vt200wan,
ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+  kybd,
	use=ncr260vt200wpp,
ncr160vt300an|NCR 2900_160 vt300 with ansi kybd,
	use=ncr260vt300an,
ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd,
	use=ncr260vt300pp,
ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd,
	use=ncr260vt300wan,
ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+  kybd,
	use=ncr260vt300wpp,
ncr160wy50+pp|NCR 2900_160 Wyse 50+,
	use=ncr260wy50+pp,
ncr160wy50+wpp|NCR 2900_160 Wyse 50+ wide mode,
	use=ncr260wy50+wpp,
ncr160wy60pp|NCR 2900_160 Wyse 60,
	use=ncr260wy60pp,
ncr160wy60wpp|NCR 2900_160 Wyse 60 wide mode,
	use=ncr260wy60wpp,
ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
	am, hs, mc5i, mir, msgr, xon,
	cols#80, it#8, lines#24, nlab#32,
	acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
	bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
	clear=\E[2J\E[1;1H$<300>, cr=\r,
	csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
	cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
	cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
	cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
	dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
	ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
	enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
	ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
	ind=\ED,
	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
	kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=\r, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
	rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
	rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
	rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(
	    B\E)0\E%/0n\E[P\031$<200>,
	sc=\E7,
	sgr=%?%p9%t\016%e\017%;\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1
	    %p3%|%t;7%;%?%p4%t;5%;m$<120>,
	sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
	smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
	tsl=\E[>+1$<70>,
ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
	cols#132,
	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
	rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B
	    \E)0\E%/0n\E[P\031$<200>,
	use=ncrvt100an,
#
# Vendor-supplied NCR termcaps end here

# NCR7900 DIP switches:
#
# Switch A:
# 1-4 - Baud Rate
# 5   - Parity (Odd/Even)
# 6   - Don't Send or Do Send Spaces
# 7   - Parity Enable
# 8   - Stop Bits (One/Two)
#
# Switch B:
# 1   - Upper/Lower Shift
# 2   - Typewriter Shift
# 3   - Half Duplex / Full Duplex
# 4   - Light/Dark Background
# 5-6 - Carriage Return Without / With Line Feed
# 7   - Extended Mode
# 8   - Suppress Keyboard Display
#
# Switch C:
# 1   - End of line entry disabled/enabled
# 2   - Conversational mode / (Local?) Mode
# 3   - Control characters displayed / not displayed
# 4   - (2-wire?) / 4-wire communications
# 5   - RTS on and off for each character
# 6   - (50Hz?) / 60 Hz
# 7   - Exit after level zero diagnostics
# 8   - RS-232 interface
#
# Switch D:
# 1   - Reverse Channel (yes / no)
# 2   - Manual answer (no / yes)
# 3-4 - Cursor appearance
# 5   - Communication Rate
# 6   - Enable / Disable EXT turnoff
# 7   - Enable / Disable CR turnoff
# 8   - Enable / Disable backspace
#
# Since each attribute parameter is 0 or 1, we shift each attribute (standout,
# reverse, blink, dim, and underline) the appropriate number of bits (by
# multiplying the 0 or 1 by a correct factor to shift) so the bias character,
# '@' is (effectively) "or"ed with each attribute to generate the proper third
# character in the <ESC>0 sequence.  The <sgr> string implements the following
# equation:
#
# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17))    =>
# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17))
#
#	Where:  P1 <==> Standout attribute parameter
#		P2 <==> Underline attribute parameter
#		P3 <==> Reverse attribute parameter
#		P4 <==> Blink attribute parameter
#		P5 <==> Dim attribute parameter
# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
ncr7900i|ncr7900|n7900|NCR 7900 model 1,
	am, bw, ul,
	cols#80, lines#24, xmc#1,
	bel=^G, blink=\E0B, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
	cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=\n,
	is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=\n, kcuf1=^F,
	kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@,
	rmul=\E0@,
	sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}
	    %*%+%c,
	sgr0=\E0@, smso=\E0Q, smul=\E0`,
ncr7900iv|NCR 7900 model 4,
	am, bw, eslok, hs,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
	cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
	fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=\n, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
	kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
	khome=\EH, lf6=blue, lf7=red, lf8=white, nel=\r\n,
	tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
#	   The user can enter a CTRL-B to get out of this locked state.
# In <hpa>, we want to output the character given by the formula:
#		((col / 10) * 16) + (col % 10)		where "col" is "p1"
ncr7901|NCR 7901 model,
	am, bw, ul,
	cols#80, lines#24,
	bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=\r,
	cub1=^H, cud1=\n, cuf1=^F,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A,
	ed=\Ek, el=\EK,
	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=\n,
	is2=\E4^O, kclr=^L, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z,
	khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O,
	sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}
	    %*%+%c\016,
	sgr0=^O, smso=\E0Q\016, smul=\E0`\016,
	vpa=\013%p1%{64}%+%c,

# Newbury Data Recording Limited (Newbury Data)
#
# Have been manufacturing and reselling  various peripherals for a long time
# They don't make terminals anymore, but are still in business (in 2007).
# Their e-mail address is at ndsales@newburydata.co.uk
# and their post address is:
#
# Newbury Data Recording Ltd,
# Premier Park, Road One,
# Winsford, Cheshire, CW7 3PT
#
# Their technical support is still good, they sent me for free a printed copy
# of the 9500 user manual and I got it just 1 week after I first contacted them
# (in 2005)!

# NDR 9500
# Manufactured in the early/mid eighties, behaves almost the same as a
# TeleVideo 950.  Take a 950, change its cabinet for a more 80s-ish one (but
# keep the same keyboard layout), add an optional 25-line mode, replace the DIP
# switches with a menu and remove the "lock line" feature (ESC !  1 and ESC !
# 2), here is the NDR 9500.  Even the line-lock, albeit disabled, is
# recognized:  if you type in "ESC !", the next (third) character is not
# echoed, showing that the terminal was actually waiting for a parameter!
ndr9500|nd9500|Newbury Data 9500,
	am, bw, hs, mc5i, mir, msgr, ul, xon,
	cols#80, lines#24, wsl#79,
	acsc=jDkClBmAnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, civis=\E.0,
	clear=\E;, cnorm=\E.1, cr=\r, cub1=^H, cud1=^V, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
	flash=\Eb$<50/>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=\n, is2=\Ew\E'\EDF\El\Er\EO,
	kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z,
	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
	ked=\EY, kel=\ET, kent=\r, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r,
	kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r,
	kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, kprt=\EP, mc4=\Ea, mc5=\E`, nel=^_,
	pfloc=\E|%{48}%p1%+%c2%p2%s\031,
	pfx=\E|%{48}%p1%+%c1%p2%s\031, prot=\E), ri=\Ej,
	rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N,
	sgr=\EG0\E%%%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;,
	sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O,
	tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H,

ndr9500-nl|NDR 9500 with no status line,
	hs@,
	wsl@,
	dsl@, fsl@, tsl@, use=ndr9500,

ndr9500-25|NDR 9500 with 25th line enabled,
	lines#25, use=ndr9500,

ndr9500-25-nl|NDR 9500 with 25 lines and no status line,
	lines#25, use=ndr9500-nl,

ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink),
	msgr@,
	xmc#1,
	blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
	sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}
	    %+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
	sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500,

ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
	lines#25, use=ndr9500-mc,

ndr9500-mc-nl|NDR 9500 with magic cookies and no status line,
	hs@,
	wsl@,
	dsl@, fsl@, tsl@, use=ndr9500-mc,

ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line,
	lines#25, use=ndr9500-mc-nl,

#### Perkin-Elmer (Owl)
#
# These are official terminfo entries from within Perkin-Elmer.
#

bantam|pe550|pe6100|Perkin Elmer 550,
	OTbs,
	cols#80, lines#24,
	bel=^G, clear=\EK$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	el=\EI$<20>, home=\EH, ind=\n, ll=\EH\EA,
fox|pe1100|Perkin Elmer 1100,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n,
	cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003,
	home=\EH, hts=\E1, ind=\n, ll=\EH\EA, tbc=\E3,
owl|pe1200|Perkin Elmer 1200,
	OTbs, am, in,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n,
	cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
	el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
	hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>,
	kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
	kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
	rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3,
pe1251|pe6300|pe6312|Perkin Elmer 1251,
	am,
	cols#80, it#8, lines#24, pb#300, vt#8, xmc#1,
	bel=^G, clear=\EK$<332>, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=\n,
	kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE,
	kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3,
# (pe7000m: this had
#	rmul=\E!\0, smul=\E!\040,
# which is probably wrong, it collides with kf0
pe7000m|Perkin Elmer 7000 series monochrome monitor,
	am,
	cols#80, lines#24,
	bel=^G, cbt=\E!Y, clear=\EK, cr=\r, cub1=\ED, cud1=\EB,
	cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	ed=\EJ, el=\EI, home=\EH, ind=\n,
	is1=\E!\0\EW  7o\Egf\ES7\s, kbs=^H, kcub1=\E!V,
	kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A,
	kf10=\E!\n, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E,
	kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S,
	ll=\ES7\s, ri=\ER,
pe7000c|Perkin Elmer 7000 series colour monitor,
	is1=\E!\0\EW  7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0,
	rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m,

#### Sperry Univac
#
# Sperry Univac has merged with Burroughs to form Unisys.
#

# This entry is for the Sperry UTS30 terminal running the TTY
# utility under control of CP/M Plus 1R1. The functionality
# provided is comparable to the DEC vt100.
# (uts30: I added <rmam>/<smam> based on the init string -- esr)
uts30|Sperry UTS30 with cp/m@1R1,
	am, bw, hs,
	cols#80, lines#24, wsl#40,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L,
	cnorm=\ES, cr=\r, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
	cub=\E[%p1%dD, cub1=^H, 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=\EM,
	dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=\r, home=\E[H,
	ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN,
	ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H,
	rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI,
	rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m,
	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
	smul=\E[4m, tsl=\E], uc=\EPB,

#### Tandem
#
# Tandem builds these things for use with its line of fault-tolerant
# transaction-processing computers.  They aren't generally available
# on the merchant market, and so are fairly uncommon.
#

tandem6510|adm3a repackaged by Tandem,
	use=adm3a,

# A funny series of terminal that TANDEM uses.  The actual model numbers
# have a fourth digit after 653 that designates minor variants.  These are
# natively block-mode and rather ugly, but they have a character mode which
# this doubtless(?) exploits.  There is a 6520 that is slightly dumber.
# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
# removed <if=/usr/share/tabset/tandem653>, no such file -- esr)
tandem653|t653x|Tandem 653x multipage terminal,
	OTbs, am, da, db, hs,
	cols#80, lines#24, wsl#64, xmc#1,
	clear=\EI, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r,
	ed=\EJ, el=\EK, fsl=\r, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s,
	rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo,

#### Tandy/Radio Shack
#
# Tandy has a line of VDTs distinct from its microcomputers.
#

dmterm|deskmate terminal,
	am, bw,
	cols#80, lines#24,
	bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=\r, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I,
	ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
	kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
	khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
	lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
	use=adm+sgr,
dt100|dt-100|Tandy DT-100 terminal,
	xon,
	cols#80, lines#24, xmc#1,
	acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J,
	cr=\r, csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich1=\E[@, il1=\E[L, ind=\n, is2=\E[?3l\E)0\E(B,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[?3i,
	kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, kf4=\E[M, kf5=\E[17~,
	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, khome=\E[H,
	knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5,
	lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
	use=vt220+cvis,
dt100w|dt-100w|Tandy DT-100 terminal (wide mode),
	cols#132, use=dt100,
dt110|Tandy DT-110 emulating ansi,
	xon,
	cols#80, lines#24,
	acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[0P, dl1=\E[0M, ed=\E[0J, el=\E[0K, enacs=\E(B\E)0,
	home=\E[H, ht=^I, ich1=\E[0@, il1=\E[0L, ind=\n,
	is2=\E[?3l\E)0\E(B, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kend=\E[K, kf1=\E[1~, kf10=\E[10~, kf2=\E[2~,
	kf3=\E[3~, kf4=\E[4~, kf5=\E[5~, kf6=\E[6~, kf7=\E[7~,
	kf8=\E[8~, kf9=\E[9~, khome=\E[G, kich1=\E[@, knp=\E[26~,
	kpp=\E[25~, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
	lf6=f7, lf7=f8, lf8=f9, lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
	use=vt220+cvis,
pt210|TRS-80 PT-210 printing terminal,
	hc, os,
	cols#80,
	bel=^G, cr=\r, cud1=\n, ind=\n,

#### Tektronix (tek)
#
# Tektronix tubes are graphics terminals.  Most of them use modified
# oscilloscope technology incorporating a long-persistence green phosphor,
# and support vector graphics on a main screen with an attached "dialogue
# area" for interactive text.
#

tek|tek4012|Tektronix 4012,
	OTbs, os,
	cols#75, lines#35,
	bel=^G, clear=\E\014$<1000>, cr=\r, cub1=^H, cud1=\n,
	ff=\014$<1000>, is2=\E^O,
# (tek4013: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
tek4013|Tektronix 4013,
	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012,
tek4014|Tektronix 4014,
	cols#81, lines#38,
	is2=\E\017\E9, use=tek4012,
# (tek4015: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
tek4015|Tektronix 4015,
	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014,
tek4014-sm|Tektronix 4014 in small font,
	cols#121, lines#58,
	is2=\E\017\E:, use=tek4014,
# (tek4015-sm: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
tek4015-sm|Tektronix 4015 in small font,
	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm,
# Tektronix 4023 from Andrew Klossner <orca!andrew.tektronix@csnet-relay>
#
# You need to have "stty nl2" in effect.  Some versions of tset(1) know
# how to set it for you.
#
# It's got the Magic Cookie problem around stand-out mode.  If you can't
# live with Magic Cookie, remove the :so: and :se: fields and do without
# reverse video.  If you like reverse video stand-out mode but don't want
# it to flash, change the letter 'H' to 'P' in the :so: field.
tek4023|Tektronix 4023,
	OTbs, am,
	OTdN#4, cols#80, lines#24, vt#4, xmc#1,
	OTnl=\n, bel=^G, clear=\E\014$<4/>, cr=\r, cub1=^H, cud1=\n,
	cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H,
	rmso=^_@, smso=^_P,
# It is recommended that you run the 4025 at 4800 baud or less;
# various bugs in the terminal appear at 9600.  It wedges at the
# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
# on keyboard don't work.  You have to hit BREAK twice to get
# one break at any speed - this is a documented feature.
# Can't use cursor motion because it's memory relative, and
# because it only works in the workspace, not the monitor.
# Same for home. Likewise, standout only works in the workspace.
#
# <el> was commented out since vi and rogue seem to work better
# simulating it with lots of spaces!
#
# <il1> and <il> had 145ms of padding, but that slowed down vi's ^U
# and didn't seem necessary.
#
tek4024|tek4025|tek4027|Tektronix 4024/4025/4027,
	OTbs, am, da, db,
	cols#80, it#8, lines#34, lm#0,
	bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=\r,
	cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
	cud1=^F\n, cuf=\037rig %p1%d\r, cuf1=\037rig\r,
	cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r,
	dl=\037dli %p1%d\r\006, dl1=\037dli\r\006,
	ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010,
	il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r,
	ind=^F\n,
	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
	rmkx=\037lea\sp2\r\037lea\sp4\r\037lea\sp6\r\037lea\sp8\r
	     \037lea\sf5\r,
	smkx=\037lea\sp4\s/h/\r\037lea\sp8\s/k/\r\037lea\sp6\s/\s/
	     \r\037lea\sp2\s/j/\r\037lea\sf5\s/H/\r,
tek4025-17|Tektronix 4025 17 line window,
	lines#17, use=tek4025,
tek4025-17-ws|Tektronix 4025 17 line window in workspace,
	is2=!com\s31\r\n\037sto\s9\s17\s25\s33\s41\s49\s57\s65\s73
	    \r\037wor\s17\r\037mon\s17\r,
	rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r,
	smso=\037att e\r, use=tek4025-17,
tek4025-ex|tek4027-ex|Tektronix 4025/4027 w/!,
	is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r,
	rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
# Tektronix 4025a
# From: Doug Gwyn <gwyn@brl-smoke.ARPA>
# The following status modes are assumed for normal operation (replace the
# initial "!" by whatever the current command character is):
#	!COM 29			# NOTE: changes command character to GS (^])
#	^]DUP
#	^]ECH R
#	^]EOL
#	^]RSS T
#	^]SNO N
#	^]STO 9 17 25 33 41 49 57 65 73
# Other modes may be set according to communication requirements.
# If the command character is inadvertently changed, termcap can't restore it.
# Insert-character cannot be made to work on both top and bottom rows.
# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas.
# There also seems to be a problem with vertical motion, perhaps involving
# delete/insert-line, following a typed carriage return.  This terminal sucks.
# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
# work any more. -- esr)
tek4025a|Tektronix 4025A,
	OTbs, OTpt, am, bw, da, db, xon,
	cols#80, it#8, lines#34,
	bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^],
	cr=\r, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;,
	cud1=\n, cuf=\035rig %p1%d;, cuf1=\035rig;,
	cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;,
	dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;,
	el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I,
	il1=\013\035ili;, ind=\n, indn=\035dow %p1%d;,
	rs2=!com\s29\035del\s0\035rss\st\035buf\035buf\sn\035cle
	    \035dis\035dup\035ech\sr\035eol\035era\sg\035for\sn
	    \035pad\s203\035pad\s209\035sno\sn\035sto\s9\s17\s25
	    \s33\s41\s49\s57\s65\s73\035wor\s0;,
	tbc=\035sto;,
# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
# Here's the command file that I use to get rogue to work on the 4025.
# It should work with any program using the old curses (e.g. it better
# not try to scroll, or cursor addressing won't work.  Also, you can't
# see the cursor.)
# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
tek4025-cr|Tektronix 4025 for curses and rogue,
	OTbs, am,
	cols#80, it#8, lines#33,
	clear=\037era;, cub1=^H, cud1=^F\n, cuf1=\037rig;,
	cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F\n,
	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
	rmcup=\037wor 0, smcup=\037wor 33h,
# next two lines commented out since curses only allows 128 chars, sigh.
#	:ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\
#	:te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0:
tek4025ex|4025ex|4027ex|Tektronix 4025 w/!,
	is2=\037com\s33\r\n!sto\s9\,17\,25\,33\,41\,49\,57\,65\,73
	    \r,
	rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
tek4105|Tektronix 4105,
	OTbs, am, mir, msgr, ul, xenl, xt,
	cols#79, it#8, lines#29,
	acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z,
	clear=\E[2J\E[H, cr=\r, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P,
	dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m,
	is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B,
	kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T,
	rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m,
	rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m,
	smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
	smul=\E[=5;<2m, tbc=\E[1g,

# (tek4105-30: I added <rmam>/<smam> based on the init string -- esr)
tek4105-30|Tektronix 4015 emulating 30 line vt100,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#30, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
	    %;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
	use=vt100+fnkeys,

# Tektronix 4105 from BRL
# The following setup modes are assumed for normal operation:
#	CODE ansi		CRLF no			DABUFFER 141
#	DAENABLE yes		DALINES 30		DAMODE replace
#	DAVISIBILITY yes	ECHO no			EDITMARGINS 1 30
#	FLAGGING input		INSERTREPLACE replace	LFCR no
#	ORIGINMODE relative	PROMPTMODE no		SELECTCHARSET G0 B
#	SELECTCHARSET G1 0	TABS -2
# Other setup modes may be set for operator convenience or communication
# requirements; I recommend
#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 10 1
#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
#	PROMPTSTRING ''		QUEUESIZE 2460		WINDOW 0 0 4095 3132
#	XMTDELAY 0
# and factory color maps.  After setting these modes, save them with NVSAVE. No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
# "tek4105a" is just a guess:
tek4105a|Tektronix 4105,
	OTbs, OTpt, msgr, xon,
	OTkn#8, cols#80, it#8, lines#30, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
	cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
	kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR,
	kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8,
	ll=\E[30;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[m, rmul=\E[m,
	rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40
	    \ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l
	    \E[?7;8h\E[r\E[m\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=ecma+index,

#
# Tektronix 4106/4107/4109 from BRL
# The following setup modes are assumed for normal operation:
#	CODE ansi		COLUMNMODE 80		CRLF no
#	DABUFFER 141		DAENABLE yes		DALINES 32
#	DAMODE replace		DAVISIBILITY yes	ECHO no
#	EDITMARGINS 1 32	FLAGGING input		INSERTREPLACE replace
#	LFCR no			LOCKKEYBOARD no		ORIGINMODE relative
#	PROMPTMODE no		SELECTCHARSET G0 B	SELECTCHARSET G1 0
#	TABS -2
# Other setup modes may be set for operator convenience or communication
# requirements; I recommend
#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 9 3
#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
#	PROMPTSTRING ''		QUEUESIZE 2620		WINDOW 0 0 4095 3132
#	XMTDELAY 0
# and factory color maps.  After setting these modes, save them with NVSAVE.  No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
	msgr, xon,
	cols#80, it#8, lines#32, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
	cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
	kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR,
	kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8,
	ll=\E[32;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[m, rmul=\E[m,
	rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40
	    \ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3
	    ;5l\E[?7;8h\E[r\E[m\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g,
	use=ecma+index,

# Refer to:
# TEK Programmer's Reference
# Part No. 070-4893-00
# Product Group 18
# 4107/4109 Computer Display Terminal
# November 1983
#
# Tektronix 4107/4109 interpret 4 modes using "\E%!" followed by a code:
# 0 selects Tek mode, i.e., \E%!0
# 1 selects ANSI mode
# 2 selects ANSI edit-mode
# 3 selects VT52 mode
#
# One odd thing about the description (which has been unchanged since the 90s)
# is that the cursor addressing is using VT52 mode, and a few others use the
# VT52's non-CSI versions of ANSI, e.g., \EJ.  A possible explanation is that
# the developer used Emacs, which misuses cvvis (this description sets VT52
# mode in that capability).
tek4107|tek4109|Tektronix terminals 4107 4109,
	OTbs, am, mir, msgr, ul, xenl, xt,
	cols#79, it#8, lines#29,
	bel=^G, blink=\E%!1\E[5m$<2>\E%!0,
	bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=\r,
	cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3,
	dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=\n,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	rev=\E%!1\E[7m$<2>\E%!0, ri=\EI,
	rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0,
	sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;
	    %?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0,
	sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
	smul=\E%!1\E[4m$<2>\E%!0,
# Tektronix 4207 with sysline.  In the ancestral termcap file this was 4107-s;
# see the note attached to tek4207.
tek4207-s|Tektronix 4207 with sysline but no memory,
	eslok, hs,
	dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8,
	is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8
	    C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
	is2=\E7\E[?6l\E[2K\E[?6h\E8,
	tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,

# The 4110 series may be a wonderful graphics series, but they make the 4025
# look good for screen editing.  In the dialog area, you can't move the cursor
# off the bottom line.  Out of the dialog area, ^K moves it up, but there
# is no way to scroll.
#
# Note that there is a floppy for free from Tek that makes the
# 4112 emulate the vt52 (use the vt52 termcap). There is also
# an expected enhancement that will use ANSI standard sequences.
#
# 4112 in non-dialog area pretending to scroll. It really wraps
# but vi is said to work (more or less) in this mode.
#
# 'vi' works reasonably well with this entry.
#
otek4112|o4112-nd|otek4113|otek4114|old Tektronix 4110 series,
	am,
	cols#80, lines#34,
	bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ind=\n,
	rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
# The 4112 with the ANSI compatibility enhancement
tek4112|tek4114|Tektronix 4110 series,
	OTbs, am, db,
	cols#80, lines#34,
	cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P,
	dl1=\E[M, ed=\E[0J, el=\E[0K, ich1=\E[@, il1=\E[L,
	ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8,
	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
tek4112-nd|Tektronix 4112 not in dialog area,
	OTns,
	cuu1=^K, use=tek4112,
tek4112-5|Tektronix 4112 in 5 line dialog area,
	lines#5, use=tek4112,
# (tek4113: this used to have "<cuf1=\LM1\s\LM0>", someone's mistake;
# removed "<smacs=\E^N>, <rmacs=\E^O>", which had been commented out in 8.3.
# Note, the !0 and !1 sequences in <rmcup>/<smcup>/<cnorm>/<civis> were
# previously \0410 and \0411 sequences...I don't *think* they were supposed
# to be 4-digit octal -- esr)
tek4113|Tektronix 4113 color graphics with 5 line dialog area,
	OTbs, am, da, eo,
	cols#80, lines#5,
	clear=\ELZ, cub1=^H, cud1=\n, cuf1=\ELM1 \ELM0,
	flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4
	      \ERBA4\ERBA4\ERB0,
	is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0,
tek4113-34|Tektronix 4113 color graphics with 34 line dialog area,
	lines#34,
	is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113,
# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not
# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
# :vb: needs enough delay to let you see the background color being toggled.
tek4113-nd|Tektronix 4113 color graphics with no dialog area,
	OTbs, am, eo,
	cols#80, it#8, lines#34,
	clear=\E^L, cub1=^H, cud1=\n, cuf1=^I, cuu1=^K,
	cvvis=\ELZ\EKA0,
	flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4
	      \ERBA4\ERBA4\ERB0,
	home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @,
	ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0,
# This entry is from Tek. Inc.  (Brian Biehl)
# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
otek4115|Tektronix 4115,
	OTbs, am, da, db, eo,
	cols#80, it#8, lines#34,
	cbt=\E[Z, clear=\E[H\E[2J,
	cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, if=/usr/share/tabset/vt100,
	il1=\E[L,
	is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?
	    \E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
	kbs=^H, ri=\EM, rmam=\E[?7l,
	rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l,
	rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
	smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
	smul=\E[4m,
tek4115|newer Tektronix 4115 entry with more ANSI capabilities,
	am, xon,
	cols#80, lines#34,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n, invis=\E[8m, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rev=\E[7m,
	rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
	    %;%?%p7%t8;%;m,
	sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
# The tek4125 emulates a vt100 incorrectly - the scrolling region
# command is ignored.  The following entry replaces <csr> with the needed
# <il>, <il>, and <smir>; removes some cursor pad commands that the tek4125
# chokes on; and adds a lot of initialization for the Tektronix dialog area.
# Note that this entry uses all 34 lines and sets the cursor color to green.
# Steve Jacobson 8/85
# (tek4125: there were two "\!"s in the is that I replaced with "\E!";
# commented out, <smir>=\E1 because there's no <rmir>  -- esr)
tek4125|Tektronix 4125,
	lines#34,
	csr@, dl1=\E[1M, il1=\E[1L,
	is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2
	    \ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h
	    \E[?8h,
	rc@, sc@, smkx=\E=, use=vt100+4bsd,

# From: <jcoker@ucbic>
# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
# supplied another, less capable 4107 entry.  So we'll use that for 4107 and
# note that if jcoker wasn't confused you may be able to use this one.
# I merged in <msgr>,<ind>,<ri>,<invis>,<tbc> from a BRL entry -- esr)
tek4207|Tektronix 4207 graphics terminal with memory,
	am, bw, mir, msgr, ul, xenl,
	cols#80, it#8, lines#32,
	blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J$<156/>,
	cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\EM, dch1=\E[P$<4/>, dl1=\E[M$<3/>, ed=\E[J,
	el=\E[K$<5/>, home=\E[H, ht=^I, ich1=\E[@$<4/>,
	il1=\E[L$<3/>, ind=\E[S, invis=\E[=6;<5,
	is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8
	    C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
	kcub1=\E[D, kcud1=\ED, kcuf1=\E[C, kcuu1=\EM, khome=\E[H,
	rev=\E[7m, ri=\E[T,
	rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m,
	smul=\E[4m, tbc=\E[1g,

# From: <carolyn@dali.berkeley.edu>  Thu Oct 31 12:54:27 1985
# (tek4404: There was a "\!" in <smcup> that I replaced with "\E!".
# Tab had been given as \E2I,that must be the tab-set capability -- esr)
tek4404|Tektronix 4404,
	OTbs,
	cols#80, it#8, lines#32,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[1M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, il1=\E[1L,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rc=\E8,
	rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
	rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
	smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
	smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
# Some unknown person wrote:
# I added the is string - straight Unix has ESC ; in the login
# string which sets a ct8500 into monitor mode (aka 4025 snoopy
# mode). The is string here cleans up a few things (but not
# everything).
ct8500|Tektronix ct8500,
	am, bw, da, db,
	cols#80, lines#25,
	bel=^G, cbt=\E^I, clear=\E^E, cr=\r, cub1=^H, cud1=\n,
	cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER,
	dch1=\E^], dl1=\E\r, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\,
	il1=\E^L, ind=\n, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s,
	rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!,

# Tektronix 4205 terminal.
#
# am is not defined because the wrap around occurs not when the char.
# is placed in the 80'th column, but when we are attempting to type
# the 81'st character on the line.  (esr: hmm, this is like the vt100
# version of xenl, perhaps am + xenl would work!)
#
# Bold, dim, and standout are simulated by colors and thus not allowed
# with colors.  The Tektronix color table is mapped into the RGB color
# table by setf/setb. All colors are reset to factory specifications by oc.
# The <initc> cap uses RGB notation to define colors.  for arguments 1-3 the
# interval (0-1000) is broken into 8 smaller sub-intervals (125).  Each sub-
# interval then maps into pre-defined value.
tek4205|Tektronix 4205,
	ccc, mir, msgr,
	colors#8, cols#80, it#8, lines#30, ncv#49, pairs#63,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[=7;<4m, cbt=\E[Z,
	clear=\E[2J\E[H, cr=\r, 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,
	dch1=\E[1P, dim=\E[=1;<6m, dl=\E[%p1%dM, dl1=\E[1M,
	ech=\E%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
	home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L,
	ind=\ED,
	initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3
	      %e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%=
	      %t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%<
	      %tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE
	      1%e%p2%{875}%<%tE:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<
	      %tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD
	      4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE:%eF4%;%?%p4%{125}%<
	      %t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8
	      %e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE:%eF
	      4%;\E%%!1,
	invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA,
	kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER,
	kf7=\ES,
	oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40
	   \E%!1,
	op=\E[39;40m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=,
	rmir=\E[4l, rmso=\E[=0;<1m, rmul=\E[24m,
	setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1
	     %{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m
	     %e1m%;,
	setf=\E[<%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1
	     %{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m
	     %e1m%;,
	sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N,
	smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
	smul=\E[4m, tbc=\E[1g,

#### Teletype (tty)
#
# These are the hardcopy Teletypes from before AT&T bought the company,
# clattering electromechanical dinosaurs in Bakelite cases that printed on
# pulpy yellow roll paper.  If you remember these you go back a ways.
# Teletype-branded VDTs are listed in the AT&T section.
#
# The earliest UNIXes were designed to use these clunkers; nroff and a few
# other programs still default to emitting codes for the Model 37.
#

tty33|tty35|model 33 or 35 teletype,
	hc, os, xon,
	cols#72,
	bel=^G, cr=\r, cud1=\n, ind=\n,
tty37|model 37 teletype,
	OTbs, hc, os, xon,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8,
	ind=\n,

# There are known to be at least three flavors of the tty40, all seem more
# like IBM half duplex forms fillers than ASCII terminals.  They have lots of
# awful braindamage, such as printing a visible newline indicator after each
# newline.  The 40-1 is a half duplex terminal and is hopeless.  The 40-2 is
# braindamaged but has hope and is described here.  The 40-4 is a 3270
# lookalike and beyond hope.  The terminal has visible bell but I don't know
# it - it's null here to prevent it from showing the BL character.
# There is an \EG in <nl> because of a bug in old vi (if stty says you have
# a "newline" style terminal (-crmode) vi figures all it needs is nl
# to get crlf, even if <cr> is not ^M.)
# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
tty40|ds40|ds40-2|dataspeed40|Teletype dataspeed 40/2,
	OTbs, xon,
	cols#80, lines#24,
	clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB,
	cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>,
	ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1,
	ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^],
	kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4,
	rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>,
tty43|model 43 teletype,
	OTbs, am, hc, os, xon,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H,

#### Tymshare
#

# You can add <is2=\E<> to put this 40-column mode, though I can't
# for the life of me think why anyone would want to.
scanset|sc410|sc415|Tymshare Scan Set,
	am, bw, msgr,
	cols#80, lines#24,
	acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=\r, cub1=^H,
	cud1=\n, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=\n, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0,
	mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,

#### Volker-Craig (vc)
#
# If you saw a Byte Magazine cover with a terminal on it during the early
# 1980s, it was probably one of these.  Carl Helmers liked them because
# they could crank 19.2 and were cheap (that is, he liked them until he tried
# to program one...)
#

# Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
# every other linefeed.
vc303|vc103|vc203|Volker-Craig 303,
	OTbs, OTns, am,
	cols#80, lines#24,
	bel=^G, clear=\014$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
	cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=\n, kcuf1=^I,
	kcuu1=^N, ll=\017$<1>W,
vc303a|vc403a|Volker-Craig 303a,
	clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>,
	home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303,
# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
vc404|Volker-Craig 404,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\030$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
	ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=\n,
	kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z,
vc404-s|Volker-Craig 404 w/standout mode,
	cud1=\n, rmso=^O, smso=^N, use=vc404,
# From: <wolfgang@cs.sfu.ca>
# (vc414: merged in cup/dl1/home from an old vc414h-noxon)
vc414|vc414h|Volker-Craig 414H in sane escape mode.,
	OTbs, am,
	cols#80, lines#24,
	clear=\E\034$<40>, cud1=\E^K, cuf1=^P,
	cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3,
	dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R,
	ich1=\E:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P,
	kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE,
	kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2,
	lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8,
	rmso=\E^_, smso=\E^Y,
vc415|Volker-Craig 415,
	clear=^L, use=vc404,

######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS
#

#### IBM PC and clones
#

# The pcplot IBM-PC terminal emulation program is really messed up. It is
# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly,
# doesn't support scrolling regions, ignores add line commands, and ignores
# delete line commands. Consequently, the resulting behavior looks like a
# crude adm3a-type terminal.
# Steve Jacobson 8/85
pcplot|pc-plot terminal emulation program,
	xenl@,
	csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100+4bsd,
# KayPro II from Richard G Turner <rturner at Darcom-Hq.ARPA>
# I've found that my KayPro II, running MDM730, continues to emulate an
# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX
# system the following termcap entry works well:
# I have noticed a couple of minor glitches, but nothing I can't work
# around. (I added two capabilities from the BRL entry -- esr)
kaypro|kaypro2|kaypro II,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\032$<1/>, cr=\r, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W,
	el=^X, home=^^, il1=\EE, ind=\n, kcud1=\n, kcuf1=^L, kcuu1=^K,

# From IBM, Thu May  5 19:35:27 1983
# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS),
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L^K, cr=\r^^, cub1=^], cud1=\n, cuf1=^\,
	cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_,

ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
	OTbs, am, bw, eo, hs, km, msgr, ul,
	cols#80, it#8, lines#24,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
	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, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B,
	indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H,
	kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=^?, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, kf3=\242,
	kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, kf9=\250,
	khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V, ll=\E[24;1H,
	nel=\r, rev=\E[7m, ri=\E[T\E[A, rin=\E[%p1%dT\E[%p1%dA,
	rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;%?%p7%t30;40%;m,
	sgr0=\E[m, smso=\E[7m, smul=\E[4m,

#### Apple II
#
# Apple II firmware console first, then various 80-column cards and
# terminal emulators.  For two cents I'd toss all these in the UFO file
# along with the 40-column apple entries.
#

# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL
#	'it#8' tells UNIX that you have tabs every 8 columns.  This is a
#		function of TIC, not the firmware.
#	The clear key on a IIgs will do something like clear-screen,
#		depending on what you're in.
appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
	OTbs, am, bw, eo, msgr,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=\n,
	kcuf1=^U, kcuu1=^K, kdch1=^?, nel=\r^W, ri=^V, rmso=^N,
	smso=^O,
# Apple //e with 80-column card, entry from BRL
# The modem interface is permitted to discard LF (maybe DC1), otherwise
# passing characters to the 80-column firmware via COUT (PR#3 assumed).
# Auto-wrap does not work right due to newline scrolling delay, which also
# requires that you set "stty cr2".
# Note: Cursor addressing is only available via the Pascal V1.1 entry,
# not via the BASIC PR#3 hook.  All this nonsense can be avoided only by
# using a terminal emulation program instead of the built-in firmware.
apple2e|Apple //e,
	bw, msgr,
	cols#80, lines#24,
	bel=^G, clear=\014$<100/>, cub1=^H, cud1=\n, cuu1=^_,
	ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W,
	is2=^R^N, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^K,
	nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
	smso=^O,
# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
# 4.20, with incoming and outgoing terminals both on 0, emulation On.
apple2e-p|Apple //e via Pascal,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H,
	kcud1=\n, use=apple2e,
# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
# Enable DC3/DC1 flow control with "stty ixon -ixany".
apple-ae|ASCII Express,
	OTbs, am, bw, msgr, nxon, xon,
	cols#80, it#8, lines#24,
	bel=\007$<500/>, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=\n,
	kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
	smso=^O,
appleII|Apple II plus,
	OTbs, am,
	cols#80, it#8, lines#24,
	clear=^L, cnorm=^TC2, cub1=^H, cud1=\n, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6,
	ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I,
	is2=^TT1^N, kcud1=\n, kcuf1=^U, rmso=^N, sgr0=^N, smso=^O,
# Originally by Gary Ford 21NOV83
# From: <ee178aci%sdcc7@SDCSVAX.ARPA>  Fri Oct 11 21:27:00 1985
apple-80|Apple II with smarterm 80 col,
	OTbs, am, bw,
	cols#80, lines#24,
	cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=\n,
	cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_,
	ed=\013$<10*/>, el=\035$<10/>, home=^Y,
apple-soroc|Apple emulating Soroc 120,
	am,
	cols#80, lines#24,
	bel=^G, clear=\E*$<300>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
	home=^^, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
# From Peter Harrison, Computer Graphics Lab, San Francisco
#   ucbvax!ucsfmis!harrison  .....uucp
#   ucbvax!ucsfmis!harrison@BERKELEY   .......ARPA
# "These two work.  If you don't have the inverse video chip for the
# Apple with videx then remove the :so: and :se: fields."
# (apple-videx: this used to be called DaleApple -- esr)
apple-videx|Apple with videx videoterm 80 column board with inverse video,
	OTbs, am, xenl,
	cols#80, it#8, lines#24,
	clear=\014$<300/>, cub1=^H, cud1=\n, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ht=^I, kcub1=^H, kcud1=\n, kcuf1=^U, khome=^Y,
	rmso=^Z2, sgr0=^Z2, smso=^Z3,
# My system [for reference] : Apple ][+, 64K, Ultraterm display card,
#			      Apple Cat ][ 212 modem, + more all
#			      controlled by ASCII Express: Pro.
# From Dave Shaver <isucs1!shaver>
apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
	OTbs, am, eo, xt,
	cols#80, lines#24,
	acsc=, clear=^L, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	flash=^W35^W06, home=^Y,
	is2=^V4^W06\017\rVisible Bell Installed.\016\r\n,
	rmso=^N, smso=^O,
apple-uterm|Ultraterm for Apple micros,
	OTbs, am, eo, xt,
	cols#80, lines#24,
	acsc=, clear=^L, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O,
# from trwrba!bwong (Bradley W. Wong):
#
# This entry assumes that you are using an apple with the UCSD Pascal
# language card.  SYSTEM.MISCINFO is assumed to be the same as that
# supplied with the standard apple except that screenwidth should be set
# using SETUP to 80 columns.  Note that the right arrow is not mapped in
# this termcap entry.  This is because that key, on the Apple, transmits
# a ^U and would thus preempt the more useful "up" function of vi.
#
# HMH 2/23/81
apple80p|80-column apple with Pascal card,
	am, bw,
	cols#80, lines#24,
	clear=^Y^L, cuf1=^\:, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
	cuu1=^_, ed=^K, el=^], home=^Y, kcub1=^H,
#
# Apple II+ equipped with Videx 80 column card
#
# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL;
# manually converted by D A Gwyn
#
# DO NOT use any terminal emulation with this data base, it works directly
# with the Videx card.  This has been tested with vi 1200 baud and works fine.
#
# This works great for vi, except I've noticed in pre-R2, ^U will scroll back
# 1 screen, while in R2 ^U doesn't.
# For inverse alternate character set add:
#	<smacs>=^O:<rmacs>=^N:
# (apple-v: added it#8 -- esr)
apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520),
	am, xenl,
	cols#80, it#8, lines#24,
	bel=\007$<100/>, clear=\014$<16*/>, cr=\r, cub1=^H,
	cud1=\n, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
	cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
	ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_,
	khome=^Y, rmso=^Z2, smso=^Z3,
apple-videx3|vapple|Apple II with 80 col card,
	OTbs, am,
	cols#80, lines#24,
	clear=\Ev, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\Ex,
	home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!, kf5=\E", kf6=\E#,
	kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
aepro|Apple II+ running ASCII Express Pro--vt52,
	OTbs,
	cols#80, lines#24,
	clear=\014$<300/>, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH,
# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
apple-vm80|ap-vm80|Apple with viewmax-80,
	OTbs,
	cols#80, lines#24,
	clear=\014$<300/>, cuf1=^\:,
	cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_,
	ed=\013$<300/>, el=^], home=\031$<200/>,

#### Apple Lisa & Macintosh
#

# (lisa: changed <cvvis> to <cnorm> -- esr)
lisa|Apple Lisa console display (black on white),
	OTbs, am, eo, msgr,
	cols#88, it#8, lines#32,
	acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
	cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
	is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
liswb|Apple Lisa console display (white on black),
	is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
	smso=\E[m, smul=\E[4m, use=lisa,

# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL;
# <is2> revised by Ferd Brundick <fsbrn@BRL.ARPA>
#
# These entries assume that the 'Auto Wraparound' is enabled.
# Xon-Xoff flow control should also be enabled.
#
# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab
# settings are in non-volatile memory and don't need to be reset upon login.
# Also setting the number of columns glitches the screen annoyingly.
# You can type "reset" to get them set.
#
lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
	OTbs, OTpt, am, xenl, xon,
	OTkn#4, cols#80, it#8, lines#24, vt#3,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ,
	kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rc=\E8,
	rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
	sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g,
# Lisaterm in 132 column ("wide") mode.
lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
	cols#132,
	kbs=^H, kcub1=^H, kcud1=\n, use=lisaterm,
# Although MacTerminal has insert/delete line, it is commented out here
# since it is much faster and cleaner to use the "lock scrolling region"
# method of inserting and deleting lines due to the MacTerminal implementation.
# Also, the "Insert/delete ch" strings have an extra character appended to them
# due to a bug in MacTerminal V1.1.  Blink is disabled since it is not
# supported by MacTerminal.
mac|macintosh|Macintosh with MacTerminal,
	xenl,
	OTdN#30,
	blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa,
# Lisaterm in 132 column ("wide") mode.
mac-w|macterminal-w|Apple Macintosh with MacTerminal in 132 column mode,
	cols#132, use=mac,

#### Radio Shack/Tandy
#

# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7".
# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, blink=^_", bold=\E:^A, civis=^E\s,
	clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=\n, cuf1=^F,
	cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I,
	dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=\n,
	kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#,
	sgr0=\037!\E:\0, smso=^_\s, smul=^_",
# (trs2: removed obsolete ":nl=^_:" -- esr)
trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M,
	OTbs, am, msgr,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^_, cuf1=^],
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B,
	el=^A, home=^F, ht=^I, il1=^D, ind=\n, kbs=^H, kcub1=^\,
	kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N,
# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
# (This had extension capabilities
#	:BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\
#	:CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
trs16|trs-80 model 16 console,
	OTbs, am,
	cols#80, it#8, lines#24,
	acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L,
	cnorm=\ERC, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
	dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
	ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S,
	khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7,
	lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@,
	smacs=\ERG, smso=\ERD,

#### Commodore Business Machines
#
# Formerly located in West Chester, PA; went spectacularly bust in 1994
# after years of shaky engineering and egregious mismanagement.  Made one
# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64,
# C-128, VIC-20).  The C-64 is said to have been the most popular machine
# ever (most units sold); they can still be found gathering dust in closets
# everywhere.
#

# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
# Added a few more entries, converted caret-type control sequence (^x) entries
# to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998
#
# :as:, :ae:			Support for alternate character sets.
# :ve=\E[\040p:vi=\E[\060\040p:	cursor visible/invisible.
# :xn:  vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
#     This one appears to fix a problem I always had with a line ending
#     at 'width+1' (I think) followed by a blank line in vi. The blank
#     line tended to disappear and reappear depending on how the screen
#     was refreshed. Note that this is probably needed only if you use
#     something like a Dnet Fterm with the window sized to some peculiar
#     dimension larger than 80 columns.
# :k0=\E9~:	map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
# (amiga: removed obsolete :kn#10:,
# also added empty <acsc> to suppress a warning --esr)
amiga|Amiga ANSI,
	OTbs, am, bw, xenl,
	cols#80, lines#24,
	acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
	civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, 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, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	invis=\E[8m, is2=\E[20l, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
	kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~,
	kf8=\E[7~, kf9=\E[8~, rev=\E[7m, ri=\E[T, rmacs=^O,
	rmso=\E[m, rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N,
	smso=\E[7m, smul=\E[4m, use=ecma+index,

# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
# (amiga: added empty <acsc> to suppress a warning.
# I'm told this entry screws up badly with AS225, the Amiga
# TCP/IP package once from Commodore, and now sold by InterWorks.--esr)
amiga-h|Hans Verkuil's Amiga ANSI,
	OTbs, bw, msgr,
	cols#80, lines#24,
	acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z,
	civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=\r,
	cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
	cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
	dim=\2332m, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G,
	home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S,
	indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H,
	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
	kdch1=^?, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~,
	kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~,
	kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T,
	rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m,
	rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l,
	smso=\2337m, smul=\2334m,

# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
#
# Pavel Fedin added
#	Home    Shift+Left
#	End     Shift+Right
#	PgUp    Shift+Up
#	PgDn    Shift+Down
amiga-8bit|Amiga ANSI using 8-bit controls,
	acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
	ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S,
	kpp=\233T, ri=\215, rin@, use=amiga-h,

# From: Ruediger Kuhlmann <terminfo@ruediger-kuhlmann.de>, 18 Jul 2000
# requires use of appropriate preferences settings.
amiga-vnc|Amiga using VNC console (black on light gray),
	am, da, db, msgr, ndscr,
	btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#0x100,
	bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
	clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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,
	cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
	invis=\E8m,
	is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
	kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=^?, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
	kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~,
	kf8=\E[7~, kf9=\E[8~, khlp=\E[?~, khome=\E[44~, kll=\E[45~,
	kmous=\E[M, knp=\E[42~, kpp=\E[41~, nel=\EE, oc=\E[0m,
	rev=\E[7m, ri=\EM, rmcup=\E[?7h\E[r\E[J, rmkx=\E[?1l,
	rmso=\E[21m, rmul=\E[24m, rs1=\Ec,
	rs2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
	setab=\E[%?%p1%{8}%>%t%'F'%p1%+%d%e4%p1%d%;m,
	setaf=\E[%?%p1%{8}%>%t%'2'%p1%+%d%e3%p1%d%;m,
	sgr0=\E[0m\017\E[30;85;>15m, smcup=\E[?7h, smkx=\E[?1h,
	smso=\E[1m, smul=\E[4m, use=ecma+index,

# MorphOS on Genesi Pegasos
# By Pavel Fedin <sonic_amiga@rambler.ru>
morphos|MorphOS on Genesi Pegasos,
	acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
	ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~,
	khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~,
	ri=\215, rin@, use=amiga-h,

# Commodore B-128 microcomputer from Doug Tyrol <det@HEL-ACE.ARPA>
#	I'm trying to write a termcap for a commodore b-128, and I'm
# having a little trouble. I've had to map most of my control characters
# to something that unix will accept (my delete-char is a ctrl-t, etc),
# and create some functions (like cm), but thats life.
#	The problem is with the arrow keys - right, and up work fine, but
# left deletes the previous character and down I just can't figure out.
# Jove knows what I want, but I don't know what it's sending to me (it
# isn't thats bound to next-line in jove).
#	Anybody got any ideas? Here's my termcap.
# DAG -- I changed his "^n" entries to "\n"; see if that works.
#
commodore|b-128|Commodore B-128 micro,
	am, bw,
	OTdN#20, cols#80, lines#24, pb#150,
	OTbc=^H, OTnl=\r, clear=\E\006$<10/>, cr=\r, cud1=\n,
	cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P,
	dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>,
	home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>,
	kcub1=^B, kcud1=\n, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=,
	smir=,

#### North Star
#
# North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL
northstar|North Star Advantage,
	OTbs,
	cols#80, lines#24,
	clear=\004$<200/>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>,
	el=\016$<200/>, home=\034\032$<200/>,

#### Osborne
#
# Thu Jul  7 03:55:16 1983
#
# As an aside, be careful; it may sound like an anomaly on the
# Osborne, but with the 80-column upgrade, it's too easy to
# enter lines >80 columns!
#
# I've already had several comments...
# The Osborne-1 with the 80-col option is capable of being
# 52, 80, or 104 characters wide; default to 80 for compatibility
# with most systems.
#
# The tab is destructive on the Ozzie; make sure to 'stty -tabs'.
osborne-w|osborne1-w|Osborne I in 104-column mode,
	msgr, ul, xt,
	cols#104, lines#24,
	bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=\n, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El,
# Osborne I	from ptsfa!rhc (Robert Cohen) via BRL
osborne|osborne1|Osborne I in 80-column mode,
	OTbs, am, mir, msgr, ul, xhp,
	OTdB#4, cols#80, lines#24,
	clear=^Z, cub1=\010$<4>, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E),
	rmul=\Em, smir=\EQ, smso=\E(, smul=\El,
#
# Osborne Executive definition from BRL
# Similar to tvi920
# Added by David Milligan and Tom Smith (SMU)
osexec|Osborne executive,
	OTbs, am,
	OTug#1, cols#80, lines#24, xmc#1,
	OTnl=\n, bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE,
	is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L,
	kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
	kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
	kf9=^AI\r, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej,
	smul=\El, tbc=\E3,

#### Console types for obsolete UNIX clones
#
# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088
# machines that tried to emulate the UNIX look'n'feel.  Coherent and Venix
# were commercial, Minix an educational tool sold in conjunction with a book.
# Memory-segmentation limits and a strong tendency to look like V7 long after
# it was obsolete made all three pretty lame.  Venix croaked early.  Coherent
# and Minix were ported to 32-bit Intel boxes, only to be run over by a
# steamroller named `Linux' (which, to be fair, traces some lineage to Minix).
# Coherent's vendor, the Mark Williams Company, went belly-up in 1994.  There
# are also, I'm told, Minix ports that ran on Amiga and Atari machines and
# even as single processes under SunOS and the Macintosh OS.
#

# See
#	https://web.archive.org/web/20120703021949/http://www.minix3.org/manpages/html4/console.html
minix|minix console (v3),
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
	     \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
	     \301w\302x\263y\363z\362{\343|\330}\234~\376,
	kdch1=^?, kend=\E[Y, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[11;2~, kf12=\E[12;2~, kf13=\E[13;2~,
	kf14=\E[14;2~, kf15=\E[15;2~, kf16=\E[17;2~,
	kf17=\E[18;2~, kf18=\E[19;2~, kf19=\E[20;2~, kf2=\E[12~,
	kf20=\E[21;2~, kf21=\E[11;5~, kf22=\E[12;5~,
	kf23=\E[13;5~, kf24=\E[14;5~, kf25=\E[15;5~,
	kf26=\E[17;5~, kf27=\E[18;5~, kf28=\E[19;5~,
	kf29=\E[20;5~, kf3=\E[13~, kf30=\E[21;5~, kf31=\E[11;6~,
	kf32=\E[12;6~, kf33=\E[13;6~, kf34=\E[14;6~,
	kf35=\E[15;6~, kf36=\E[17;6~, kf37=\E[18;6~,
	kf38=\E[19;6~, kf39=\E[20;6~, kf4=\E[14~, kf40=\E[21;6~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	kich1=\E[@, knp=\E[U, kpp=\E[V, lf0@, lf1@, lf2@, lf3@, lf4@, lf5@,
	use=minix-3.0,

minix-3.0|minix console (v3.0),
	use=ecma+color, use=minix-1.7,

# See
#	https://web.archive.org/web/20030914201935/http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html
# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
minix-1.7|minix console (v1.7),
	am, xenl,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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, ed=\E[0J, el=\E[K, el1=\E[2K,
	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U,
	kf3=\E[T, kf4=\E[S, kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp,
	lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=\r\n,
	rev=\E[7m, ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m,
	smso=\E[7m, smul=\E[4m,
# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
minix-old|minix-1.5|minix console (v1.5),
	xon,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, 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, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G,
	khome=\E[H, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m,
	rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
# The linewrap option can be specified by editing /usr/include/minix/config.h
# before recompiling the minix 1.5 kernel.
minix-old-am|minix console with linewrap,
	am, use=minix-old,

pc-minix|minix console on an Intel box,
	use=klone+acs, use=minix-3.0,

# According to the Coherent 2.3 manual, the PC console is similar
# to a z19. The differences seem to be (1) 25 lines, (2) no status
# line, (3) standout is broken, (4) ins/del line is broken, (5)
# has blinking and bold.
pc-coherent|pcz19|coherent|IBM PC console running Coherent,
	am, mir,
	cols#80, it#8, lines#25,
	bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN,
	ed=\EJ, el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
	rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,

# According to the Venix 1.1 manual, the PC console is similar
# to a DEC vt52.  Differences seem to be (1) arrow keys send
# different strings, (2) enhanced standout, (3) added insert/delete line.
# Note in particular that it doesn't have automatic margins.
# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they
# not described here because this derives from an old termcap entry.
pc-venix|venix|IBM PC console running Venix,
	cols#80, it#8, lines#25,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\EK,
	kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI,

#### Miscellaneous microcomputer consoles
#
# If you know anything more about any of these, please tell me.
#

# The MAI Basic Four computer was obsolete at the end of the 1980s.
# It may be used as a terminal by putting it in "line" mode as seen on
# one of the status lines.
# Initialization is similar to CIT80. <is2> will set ANSI mode for you.
# Hardware tabs set by <if> at 8-spacing.  Auto line wrap causes glitches so
# wrap mode is reset by <cvvis>.  Using <ind>=\E[S caused errors so I
# used \ED instead.
# From: bf347@lafn.org (David Lawyer), 28 Jun 1997
mai|basic4|MAI Basic Four in ansi mode,
	am, da, db, mir, msgr,
	cols#82, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=^X,
	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P,
	dl1=\E[M, ed=^_, el=^^, home=^], ht=^I,
	if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED,
	is2=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, nel=\r\ED, rc=\E8, rev=\E[7m, ri=\E[T,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
	smir=\E[4h, smso=\E[7m, smul=\E[4m,
# basis from Peter Harrison, Computer Graphics Lab, San Francisco
#   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
#
# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
# The Basis 108 was a Apple II clone, manufactured by the "Basis
# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
# about 1,5 km from where I live, but doesn't build own computers any
# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
# equipped with one or two 5.25" disk drives, had a monochrome and colour
# video output for a TV set or a dedicated monitor and several slots for
# Apple II cards. Basis 108 were quite popular at german schools before
# the advent of the IBM PC. They run, for example, the UCSD Pascal
# development system (which I used even in 1993 to program the steering
# and data recording for our school's experimental solar panel :), Apple DOS
# or CP/M.
# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
basis|BASIS108 computer with terminal translation table active,
	clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
	kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
	smso=\E(, use=adm3a,
# luna's BMC terminal emulator
luna|luna68k|LUNA68K Bitmap console,
	cols#88, lines#46, use=ansi-mini,
megatek|pegasus workstation terminal emulator,
	am, os,
	cols#83, lines#60,
# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
# interface (pre-Macintosh by several years) that went nowhere.
xerox820|x820|Xerox 820,
	am,
	cols#80, lines#24,
	bel=^G, clear=\032$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
	home=^^, ind=\n,

#### Videotex and teletext
#

# \E\:1}	switch to te'le'informatique mode (ascii terminal/ISO 6429)
# \E[?3l	80 columns
# \E[?4l	scrolling on
# \E[12h	local echo off
# \Ec		reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen
# \E)0		G1 DEC set (line graphics)
#
# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique,
	OTbs, eslok, hs, xenl,
	cols#80, it#8, lines#24, wsl#72, xmc#0,
	acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
	blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
	cnorm=\E[<1l, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	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, ed=\E[J, el=\E[K, flash=^G, fsl=\n,
	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n, ip=$<7/>,
	is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
	is3=\E[?3l, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
	kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu,
	kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khome=\E[H,
	kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H,
	mc0=\E[i, nel=\r\n, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sc=\E7, sgr0=\E[m,
	smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A,
	u6=\E[%i%d;%dR, u7=\E[6n,

# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998, updated 19 Sep 2016
#
minitel1|minitel 1,
	am, bw, eslok, hs, hz, .msgr, G0,
	colors#8, cols#40, lines#24, pairs#8, .ncv#16,
	acsc=j+k+l+m+n+o~q`s_t+u+v+w+x|, bel=^G, blink=\EH,
	civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
	cup=\037%p1%'A'%+%c%p2%'A'%+%c, cuu1=^K,
	dsl=\037@A\030\n, el=^X,
	flash=\037@A\EW \177\022\177\022P\r\030\n, fsl=\n,
	home=^^, ind=\n, is2=\E;`ZQ\E:iC\E:iE\021, kbs=^SG,
	kcan=^SE, kend=^SI, kent=^SA, khlp=^SD, knp=^SH, kpp=^SB,
	krfr=^SC, nel=\r\n, op=\EG, rep=%p1%c\022%p2%'?'%+%c,
	rev=\E], ri=^K, rmso=\E\\,
	rs2=\024\037XA\030\n\030\n\030\n\030\n\030\n\030\n\030\n
	    \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n
	    \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\014
	    \021,
	setab=\0, setaf=\E%p1%'@'%+%c, setb=\0,
	setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=
	     %tC%e%p1%'@'%+%c%;,
	sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
	sgr0=\EI\E\\\EG, smso=\E], tsl=\037@%p1%'A'%+%c,
	u6=\037%c%'A'%-%c%'A'%-, u7=\Ea,
	u8=\001%[BCDEFGHIJKLbcresdfg0123456789]\004, u9=\E9{,
	.dim=\EB, .hup=\E9g, .rs2=^L, .u8=^ABr4^D,
	C0=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$, E0=^O,
	S0=^N,
	XC=B\031%\,\241!\,\242"\,\243#\,\244$\,\245%\,\246&\,\247'\,
	   \250(\,\253+\,\257P\,\2600\,\2611\,\2622\,\2633\,\2655\,
	   \2677\,\272k\,\273;\,\274<\,\275=\,\276>\,\277?\,\300AA\,
	   \301BA\,\302CA\,\303DA\,\304HA\,\305JA\,\306a\,\307KC\,
	   \310AE\,\311BE\,\312CE\,\313HE\,\314AI\,\315BI\,\316CI\,
	   \317HI\,\320b\,\321DN\,\322AO\,\323BO\,\324CO\,\325DO\,
	   \326HO\,\3274\,\330i\,\331AU\,\332BU\,\333CU\,\334HU\,
	   \335BY\,\336l\,\337{\,\340Aa\,\341Ba\,\342Ca\,\343Da\,
	   \344Ha\,\345Ja\,\346q\,\347Kc\,\350Ae\,\351Be\,\352Ce\,
	   \353He\,\354Ai\,\355Bi\,\356Ci\,\357Hi\,\360r\,\361Dn\,
	   \362Ao\,\363Bo\,\364Co\,\365Do\,\366Ho\,\3678\,\370y\,
	   \371Au\,\372Bu\,\373Cu\,\374Hu\,\375By\,\376|\,\377Hy\,
	   \252c\,\,0\017\031%\016\,}#\,f0\,g1\,\\\,\\\,\,+.\,./\,0
	   \177\,--,
minitel1b|minitel 1-bistandard (in 40cols mode),
	mir,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
	is1=\E;iYA\E;jYC, kbs@, kcan@, kclr=\E[2J, kctab=^I,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
	kdl1=\E[M, kent@, kf1=^SD, kf10=^Y0, kf11=^Y1, kf12=^Y/,
	kf13=^Y{1, kf14=^Y{2, kf15=^Y{3, kf16=^Y{4, kf17=^Y{5,
	kf18=^Y{6, kf19=^Y{7, kf2=^SC, kf20=^Y{8, kf21=^Y{9,
	kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kf3=^SF, kf4=^SA, kf5=^SG,
	kf6=^SE, kf7=^Y8, kf8=^Y\,, kf9=^Y., khlp@, khome=\E[H,
	kich1=\E[4h, kil1=\E[L, krfr@, lf1=Guide, lf2=Repetition,
	lf3=Sommaire, lf4=Envoi, lf5=Correction, lf6=Annulation,
	rmir=\E[4l, smir=\E[4h,
	u8=\001%[ABCPtuvwxyz0123456789:;<=>?]\004,
	.ich=\E[%p1%d@, .ich1=\E[@, .kLFT=\E[P, .kRIT=\E[4h,
	.kb2=^Y{g, .kcbt=^Y{i, .kel=^X, .mc0=\E:|k, .rmkx=\E;jYA,
	.rs1=\E[4l\E[2l, .smkx=\E;iYA\E;jYC, .u8=^ACu<^D,
	use=minitel1,
# rmkx posait des problemes (logout en sortant de vi).
minitel1b-80|minitel 1-bistandard (standard teleinformatique),
	am@, bw@, eslok@, hz@, msgr, G0,
	colors@, cols#80, it#8, pairs@,
	acsc@, blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
	clear=\E[H\E[J, cnorm=\037@A\021\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	ht=^I, ind=\ED, is1@, is2@, kbs=\EOl, kcan=\EOQ, kend=\E)4\r,
	kent=\EOM, kf1=\EOq, kf10=\EOp, kf11=\EOP1, kf12=\EOP2,
	kf13=\EOP3, kf14=\EOP4, kf15=\EOP5, kf16=\EOP6, kf17=\EOP7,
	kf18=\EOP8, kf19=\EOP9, kf2=\EOr, kf20=\EOP0, kf21=\EOP*,
	kf22=\EOP#, kf23@, kf24@, kf3=\EOs, kf4=\EOt, kf5=\EOu,
	kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khlp=\EOm, knp=\EOn,
	kpp=\EOR, krfr=\EOS, lf1@, lf2@, lf3@, lf4@, lf5@, lf6@, nel=\EE,
	op@, rc=\E8, rep@, rev=\E[7m, ri=\EM, rmkx@, rmso=\E[27m,
	rmul=\E[24m,
	rs2=\036\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[
	    H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M
	    \E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2
	    M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[2M\E[H\E[L\E[12H\E[
	    2M\E[H\E[J\E[m,
	sc=\E7, setab@, setaf@, setb@, setf@, sgr@, sgr0=\E[m, smkx@,
	smso=\E[7m, smul=\E[4m,
	tsl=\037@%?%p1%{63}%<%t%p1%'A'%+%c%e\177%p1%{62}%-%Pa%?%ga
	    %{1}%&%t\011%;%?%ga%{2}%&%t\011\011%;%?%ga%{4}%&%t\011
	    \011\011\011%;%?%ga%{07}%>%t\011\011\011\011\011\011
	    \011\011%;%?%ga%{15}%>%t\011\011\011\011\011\011\011
	    \011%;%;,
	u6@, u7@, u8@, u9@, .acsc=}#f[, .enacs=^O, .kb2=\EOPg,
	.kcbt=\EOPi, .ll=\E[24H, .mc0=\E[i, .rmacs=^O, .rs2=\Ec,
	.sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1
	     ;%;m,
	.smacs=^N, C0=}#f[j+k+l+m+n+o~q=s_t+u+v+w+x!0\032,
	E0=^O, S0=^N,
	XC=B\016%\017\,\243#\,\247]\,\260[\,\340@\,\347\\\\\,\351{\,
	   \350}\,\371|\,\300A\,\301A\,\302A\,\303A\,\304A\,\305A\,
	   \306E\,\307C\,\310E\,\311E\,\312E\,\313E\,\314I\,\315I\,
	   \316I\,\317I\,\320D\,\321N\,\322O\,\323O\,\324O\,\325O\,
	   \326O\,\331U\,\332U\,\333U\,\334U\,\335Y\,\337s\,\341a\,
	   \342a\,\343a\,\344a\,\345a\,\346e\,\352e\,\353e\,\354i\,
	   \355i\,\356i\,\357i\,\360d\,\361n\,\362o\,\363o\,\364o\,
	   \365o\,\366o\,\372u\,\373u\,\374u\,\375y\,\377y\,\267.\,
	   \327x\,\367/\,\261\E7\E[4m+\E8\E[C\,\,0\017%\016\,x|\,y
	   \E7\E[4m<\E8\E[C\,z\E7\E[4m>\E8\E[C\,g\E7\E[4m+\E8\E[C,
	use=minitel1b,

minitel1-nb|minitel 1 (40cols) noir & blanc sans couleurs avec bold et dim ...,
	colors@, pairs@,
	bold=\EG, clear=^L\EB,
	cup=\037%p1%'A'%+%c%p2%'A'%+%c\EB, dim=\ED, home=^^\EB,
	op@, rs2=^L\EB, setab@, setaf@, setb@, setf@,
	sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;,
	sgr0=\EI\E\\\EB, tsl=\037@%p1%'A'%+%c\EB, .invis=\E@,
	use=minitel1,

minitel1b-nb|minitel 1b (40cols) noir & blanc sans couleurs avec bold et dim ...,
	msgr,
	colors@, pairs@,
	acsc=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$,
	bold=\EG, clear=^L\EB, cup=\E[%i%p1%d;%p2%dH, dim=\ED,
	home=^^\EB, kend=\E)4\r, kf1=\E$4\r, kf2=\E#4\r,
	kf3=\E&4\r, kf4=\E!4\r, kf5=\E'4\r, kf6=\E/4\r, knp=\E(4\r,
	kpp=\E"4\r, op@, rmacs=^O, rs2=^L\EB, setab@, setaf@, setb@,
	setf@,
	sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;,
	sgr0=\EI\E\\\EB, smacs=^N, tsl=\037@%p1%'A'%+%c\EB,
	u8=\001%[ABCPpqrstuvwxyz{|}~\177]\004\r, .invis=\E@,
	.u8=\001Cu|\004r, use=minitel1b,

# Note:
#
# Faire, Fnct T puis "/" (TS+"?") pour activer les touches en 40cols :
#
# TS+Connexion/Fin(Fin),Retour(Page Up),Suite(Page Down),Guide(F1),
# Repetition(F2),Sommaire(F3),Envoi(F4),Correction(F5),Annulation(F6),
# Ctrl+7(F7),Ctrl+8(F8),Ctrl+9(F9),Ctrl+0(F10),Ctrl+*(F11),Ctrl+#(F12).
#
# Ctrl+Suite-1(F13), Ctrl+Suite-2(F14), Ctrl+Suite-3(F15),
# Ctrl+Suite-4(F16), Ctrl+Suite-5(F17), Ctrl+Suite-6(F18),
# Ctrl+Suite-7(F19), Ctrl+Suite-8(F20), Ctrl+Suite-9(F21),
# Ctrl+Suite-0(F22), Ctrl+Suite-*(F23), Ctrl+Suite-#(F24).
#
# Fonctionne par exemple avec Midnight Commander (mc).

minitel2-80|minitel 2 (80cols) avec filets vt100 (DEC),
	G0,
	acsc=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
	enacs=\E)0, rmacs=^O, smacs=^N, u6=\E[%i%d;%dR,
	C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}}, E0=^O,
	S0=\E)0\016,
	XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
	   \E(3g\,\265\E(3Y\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276
	   \E(3Q\,\277\E(3Z\,\300A\,\301A\,\302A\,\303A\,\304\E(3R\,
	   \305A\,\306E\,\307C\,\310E\,\311\E(3S\,\312E\,\313E\,
	   \314\E(3T\,\315I\,\316I\,\317I\,\320D\,\321\E(3W\,\322\E(
	   3U\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U\,\332U\,
	   \333U\,\334\E(3V\,\335Y\,\337\E(3{\,\340\E(3A\,\341a\,
	   \342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E(R\\\\\,
	   \350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i\,\355i
	   \,\356\E(3H\,\357\E(3I\,\360d\,\361\E(3X\,\362o\,\363o\,
	   \364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L\,\372u
	   \,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0\,\\\,m
	   \,+k\,.l\,0\177\,-j,
	use=minitel12-80,

minitel12-80|minitel 12 (80cols),
	G0,
	civis=\E[<1h, cnorm=\E[<1l, is2=\E[12h, u6=\E[%i%d;%dH,
	u7=\E[6n,
	.acsc=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0
	      \177,
	.enacs=\E)3, .rmacs=^O, .rs3=\E[?4l, .scs=\E(%p1%c,
	.smacs=^N,
	C0=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0\177,
	E0=^O, S0=\E)3\016,
	XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
	   \E(3g\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276\E(3Q\,\300A
	   \,\301A\,\302A\,\303A\,\304A\,\305A\,\306E\,\307C\,\310E
	   \,\311E\,\312E\,\313E\,\314I\,\315I\,\316I\,\317I\,\320D
	   \,\321N\,\322O\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U
	   \,\332U\,\333U\,\334U\,\335Y\,\337\E(3{\,\340\E(3A\,
	   \341a\,\342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E(
	   R\\\\\,\350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i
	   \,\355i\,\356\E(3H\,\357\E(3I\,\360d\,\361n\,\362o\,
	   \363o\,\364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L
	   \,\372u\,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0
	   \,\\\,m\,+k\,.l\,0\177\,-j,
	use=minitel1b-80,

#
# Add these in your ~/.screenrc for inputting some special glyphs like french
# accentuated chars in 40 cols mode:
#
# bindkey ^YA digraph '`'  # Saisi accent grave.
# bindkey ^YB digraph "'"  # Saisi accent aigu.
# bindkey ^YC digraph '^'  # Saisi accent circonflexe.
# bindkey ^YH digraph '"'  # Saisi accent trema.
#
# bindkey ^Y#      stuff \243  # Livre.
# bindkey "^Y\047" stuff \247  # Paragraphe.
# bindkey ^Yj      stuff \306  # AE
# bindkey ^Yz      stuff \346  # ae
# bindkey ^YKc     stuff \347  # c cedille.
#

screen.minitel1|Screen specific for minitel1,
	ncv@,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz||}}~~,
	bel=\007\E\^ \E\\, bold@, csr@, flash=\Eg\E\^ \E\\, kmous@,
	rmul@, smul@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ,
	use=xterm+x11mouse, use=screen4,

screen.minitel1b|Screen specific for minitel1b,
	kclr=\E[2J, kdl1=\E[M, kf13=^Y{1, kf14=^Y{2, kf15=^Y{3,
	kf16=^Y{4, kf17=^Y{5, kf18=^Y{6, kf19=^Y{7, kf20=^Y{8,
	kf21=^Y{9, kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kil1=\E[L,
	use=screen.minitel1,

screen.minitel1b-80|screen.minitel2-80|screen.minitel12-80|Screen specific for minitel1b-80 minitel2-80 and minitel12-80,
	colors@, ncv@, pairs@,
	bold=\E[1m, kent=\EOM, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@,
	kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, khlp=\EOm, op@,
	rmul=\E[24m, setab@, setaf@, setb@, setf@, smul=\E[4m,
	use=screen.minitel1b,

screen.minitel1-nb|Screen specific for minitel1-nb,
	colors@, ncv@, pairs@,
	bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@,
	use=screen.minitel1,

screen.minitel1b-nb|Screen specific for minitel1b-nb,
	colors@, ncv@, pairs@,
	bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@,
	use=screen.minitel1b,

# From: Alexandre Montaron, 29 Sep 2016

linux-m1|Linux Minitel 1 "like" Couleurs,
	am, bw@, ccc, mir, msgr, xenl,
	colors#8, it#8, ncv#16, pairs#64,
	acsc=a\261f\370g\361h\260j\274k\273l\311m\310n\316q\315t
	     \314u\271v\312w\313x\272y\363z\362{\343|\252~\372,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)U,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
	initc=\E]P%p1%{15}%&%X%p2%{255}%&%02X%p3%{255}%&%02X%p4
	      %{255}%&%02X,
	is2=\E]R\E]P3FFFF80\E[?8c, ka1=\EOw, ka3=\EOy, kb2=\E[G,
	kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E^I, kclr=\E\r, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E\E[A, kent=\EOM,
	kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
	kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kil1=\E\E[B,
	kmous=\E[M, nel=\EE, oc=\E]R\E]P3FFFF80, op=\E[39;49m,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
	rmpch=\E[10m, rmso=\E[27m, rs1=\Ec, rs3=\E[37;40m\E[8],
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
	smacs=^N, smam=\E[?7h, smir=\E[4h, smpch=\E[11m,
	smso=\E[7m, tbc=\E[3g, vpa=\E[%i%p1%dd, .VN=\E[?5l,
	.VR=\E[?5h, .am@, .ich=\E[%p1%d@, .ich1=\E[@, .ll=\E[99H,
	.rmcup=, .rmul=\E[24m, .smcup=\E]R\E]P3FFFF80\E[?8c,
	.smul=\E[4m,
	E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n,
	use=vt220+pcedit, use=vt220+cvis, use=linux+decid,

# 1. Using double-shapes for vt100 graphical chars (eg: mc).
# 2. Native brown color corrected to good yellow color.
# 3. Adding "Insert" and "Delete Line" keys as ESC Up and ESC Down arrow keys.
# 4. Suppressed nonexistent underlined mode (normally as bright).
# 5. ich/ich1 not filled because of non-curses programs.
#--
# 6. Suppressed nonexistent invisible mode.
#(7.)Adding forgotten "cub/cud/cuf/cuu" sequences deplacement.

linux-m1b|Linux Minitel 1B "like" Monochrome (Gris/Blanc/Noir+Dim),
	ccc@,
	colors@, ncv@, pairs@,
	acsc@, bold=\E[33m, enacs@, initc@,
	is2=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5A9A
	    9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E]PCFFFF
	    FF\E]PDFFFFFF\E]PEFFFFFF\E[?2c,
	oc@, op@, rmacs@, setab=^A, setaf=^A, smacs@, .setab@, .setaf@,
	.smcup=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5
	       A9A9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E]
	       PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E[?2c,
	use=linux-m1,

linux-m2|Linux Minitel 2 "like" Couleurs (Vert/Blanc/Noir+Bleu),
	ccc@,
	colors@, ncv@, pairs@,
	acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
	     uvvwwxxyyzz{{||}}~~,
	bold=\E[33m, cnorm=\E[?2c\E[?25h, cvvis=\E[?8c\E[?25h,
	enacs=\E)0, initc@,
	is2=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P500A
	    900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]PAFFFF
	    FF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E]PFFFFFF
	    F\E[;37m,
	oc@, op@, rmacs=^O, setab=^A, setaf=^A, sgr0=\E[;37m, smacs=^N,
	.setab@, .setaf@,
	.smcup=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P5
	       00A900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]
	       PAFFFFFF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF
	       \E]PFFFFFFF\E[;37m,
	use=linux-m1,

# From: Alexandre Montaron, 27 May 2020
linux-s|Linux console with added status line at bottom,
	hs,
	clear=\E[255;255H\E[A\E[1J\E[H, csr@,
	dsl=\E7\E[255H\E[K\E8, ed@, fsl=\E8,
	iprog=\sbash\s-c\s'echo\s-ne\s"\E[?6l\E[255H\E[A\E[6n"\s;
	      \sread\s-d\sR\sTMP\s;\sLINES=`echo\s$TMP\s|\scut\s-f1
	      \s-d\s";"\s|\scut\s-f2\s-d\s"["`\s;\sstty\srows\s$LINE
	      S\s;\secho\s-ne\s"\E[;"$LINES"r\E[J"',
	rs1=\E]R, tsl=\E7\E[255;%p1%dH, .rc@, .sc@, use=linux,

# Screen entries counterpart :

screen.linux-m1|Linux m1 specific for screen,
	ncv@,
	dim=\E[2m, kbs=^?, kclr=\E\r, kdl1=\E\E[A, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kil1=\E\E[B, rmul@,
	smul@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ,
	E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
	   \n\n\n\n\n\n\n\n\n\n,
	use=xterm+x11mouse, use=screen4,

screen.linux-m1b|Linux m1b specific for screen,
	colors@, pairs@,
	op@, setab@, setaf@, setb@, setf@, use=screen.linux-m1,

screen.linux-m2|Linux m2 specific for screen,
	acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
	     uvvwwxxyyzz{{||}}~~,
	use=screen.linux-m1b,

# Putty :

putty-m1|Putty Minitel 1 "like" Couleurs,
	hs,
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
	smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
	use=putty+screen, use=xterm+sl-twm, use=ecma+index,
	use=linux-m1,

putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir),
	hs,
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
	smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
	use=putty+screen, use=xterm+sl-twm, use=ecma+index,
	use=linux-m1b,

putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir),
	hs,
	acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{
	     {||}}~~,
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m,
	smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S,
	use=putty+screen, use=xterm+sl-twm, use=ecma+index,
	use=linux-m2,

putty+screen|PuTTY with screen resizing extensions,
	.WS=\E[8;%p1%d;%p2%dt, Z0=\E[?3h, Z1=\E[?3l,

putty-screen|PuTTY with screen resizing extensions,
	WS=\E[8;%p1%d;%p2%dt, Z0=\E[?3h, Z1=\E[?3l, use=putty,

screen.putty-m1|Putty m1 specific for screen,
	dim@, rmul=\E[24m, smul=\E[4m, E3@, use=screen.linux-m1,

screen.putty-m1b|Putty m1b specific for screen,
	colors@, pairs@,
	op@, setab@, setaf@, setb@, setf@, use=screen.putty-m1,

screen.putty-m2|Putty m2 specific for screen,
	acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu
	     uvvwwxxyyzz{{||}}~~,
	use=screen.putty-m1b,
# From: Alexandre Montaron, 19 Nov 2015, updated 19 Sep 2016
#
# He comments:
# viewdata lacks a true cup capability,
# so I achieved it with home and cud1/cuf1 sequences only !
viewdata|Prestel/Viewdata terminals,
	am, bw, eslok, hz,
	cols#40, lines#24,
	bel=^G, civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n,
	cuf1=^I,
	cup=\036%?%p1%{07}%>%t\n\n\n\n\n\n\n\n%;%?%p1%{15}%>%t\n\n
	    \n\n\n\n\n\n%;%?%p1%{4}%&%t\n\n\n\n%;%?%p1%{2}%&%t\n\n%;
	    %?%p1%{1}%&%t\n%;%?%p2%{07}%>%t\011\011\011\011\011\011
	    \011\011%;%?%p2%{15}%>%t\011\011\011\011\011\011\011
	    \011%;%?%p2%{23}%>%t\011\011\011\011\011\011\011\011%;%?
	    %p2%{31}%>%t\011\011\011\011\011\011\011\011%;%?%p2%{4}
	    %&%t\011\011\011\011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%&
	    %t\011%;,
	cuu1=^K, home=^^, nel=\r\n, rs2=^L, .el=^X, .ind=\n,
	.rep=%p1%c\022%p2%'?'%+%c, .ri=^K,

viewdata-o|optimized version of Viewdata Prestel/Viewdata terminals,
	cup=\036%p1%?%p2%{20}%>%t%?%p1%{23}%=%t%Pa%{1}%e%{1}%+%;%;
	    %Pa%?%ga%{13}%<%t%?%ga%{07}%>%t\n\n\n\n\n\n\n\n%;%?%ga
	    %{4}%&%t\n\n\n\n%;%?%ga%{2}%&%t\n\n%;%?%ga%{1}%&%t\n%;%e
	    %{24}%ga%-%Pa%?%ga%{07}%>%t\013\013\013\013\013\013\013
	    \013%;%?%ga%{4}%&%t\013\013\013\013%;%?%ga%{2}%&%t\013
	    \013%;%?%ga%{1}%&%t\013%;%;%?%p2%{21}%<%t%?%p2%{07}%>%t
	    \011\011\011\011\011\011\011\011%;%?%p2%{15}%>%t\011
	    \011\011\011\011\011\011\011%;%?%p2%{4}%&%t\011\011\011
	    \011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%&%t\011%;%e%{40}
	    %p2%-%Pa%?%ga%{07}%>%t\010\010\010\010\010\010\010\010%;
	    %?%ga%{15}%>%t\010\010\010\010\010\010\010\010%;%?%ga
	    %{4}%&%t\010\010\010\010%;%?%ga%{2}%&%t\010\010%;%?%ga
	    %{1}%&%t\010%;%?%p1%{23}%=%t\013%;%;,
	.ll=^^^K, use=viewdata,

# Samples with TERM=viewdata and TERM=viewdata-rv: http://canal.chez.com/blog/

viewdata-rv|Prestel/Viewdata terminals with reverse capabilitie (as green),
	xmc#1,
	rmso=\EG, smso=\EB, use=viewdata-o,

######## OBSOLETE VDT TYPES
#
# These terminals are *long* dead -- these entries are retained for
# historical interest only.

#### Amtek Business Machines
#

# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y",
# but these caps were commented out in 8.3; also, removed overridden
# ":do=^J:" -- esr)
abm80|amtek business machines 80,
	OTbs, am, bw,
	cols#80, lines#24,
	cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P,
	cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L,
	dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z,

#### Bell Labs blit terminals
#
# These were AT&T's official entries.  The 5620 FAQ maintained by
# David Breneman <daveb@dgtl.com> has this to say:
#
#  Actually, in the beginning was the Jerq, and the Jerq was white with a
#  green face, and Locanthi and Pike looked upon the Jerq and said the Jerq
#  was good.  But lo, upon the horizon loomed a mighty management-type person
#  (known now only by the initials VP) who said, the mighty Jerq must stay
#  alone, and could not go forth into the world. So Locanthi and Pike put the
#  Jerq to sleep, cloned its parts, and the Blit was brought forth unto the
#  world. And the Jerq lived the rest of its days in research, but never
#  strayed from those paths.
#
#  In all seriousness, the Blit was originally known as the Jerq, but when
#  it started to be shown outside of the halls of the Bell Labs Research
#  organization, the management powers that be decided that the name could
#  not remain. So it was renamed to be Blit. This was in late 1981.
#
# (The AT&T 5620 was the commercialized Blit.  Its successors were the 630,
# 730, and 730+.)
#

blit|jerq|blit running teletype rom,
	am, eo, ul, xon,
	cols#87, it#8, lines#72,
	bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
	dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c,
	dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!,
	il=\EF%p1%{32}%+%c, il1=\EF!, ind=\n, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,

# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
cbblit|fixterm|blit running columbus code,
	cols#88,
	ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d,
	rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!,
	smul=\EU", use=blit,

oblit|ojerq|first version of blit rom,
	am, da, db, eo, mir, ul, xon,
	cols#88, it#8, lines#72,
	bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO,
	dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G,
	ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=\n, kbs=^H, rmir=\ER,
	smir=\EQ,

#### Bolt, Beranek & Newman (bbn)
#
# The BitGraph was a product of the now-defunct BBN Computer Corporation.
# The parent company, best known as the architects of the Internet, is
# still around.
#
# Jeff DelPapa <dp@world.std.com> writes:
# The bitgraph was a large white box that contained a monochrome bitmap
# display, and a 68000 to run it.  You could download code and run it on
# the cpu, it had 128kb (I think) of memory.  I used one in the late
# 70's, sure beat a vt100.  It had one strange feature tho -- it used
# the cpu to bitblt pixels to scroll, it took longer than the refresh
# rate, and looked like a rubber sheet stretching, then snapping
# upwards.  It had everything the early mac had, except a floppy drive a
# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt
# Beranek and Neuman) sold at most a few hundred of them to the real
# world.  DOD may have bought more...
#

# Entries for the BitGraph terminals.  The problem
# with scrolling in vi can only be fixed by getting BBN to put
# smarter scroll logic in the terminal or changing vi or padding
# scrolls with about 500 ms delay.
#
# I always thought the problem was related to the terminal
# counting newlines in its input buffer before scrolling and
# then moving the screen that much. Then vi comes along and
# paints lines in on the bottom line of the screen, so you get
# this big white gap.

bitgraph|bg2.0nv|bg3.10nv|BBN BitGraph 2.0 or later (normal video),
	flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
	use=bg2.0,
bg2.0rv|bg3.10rv|BBn BitGraph 2.0 (reverse video),
	flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
	use=bg2.0,
bg2.0|bg3.10|BBN BitGraph 2.0 or later (no init),
	OTbs, xenl,
	cols#85, lines#64,
	bel=^G, clear=\E[H\E[J$<150>, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, dl1=\E[M$<2*>,
	ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>,
	ind=\n$<280>, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
	lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
	sgr0=\E[m, smkx=\E=, smso=\E[7m,

bg1.25rv|BBN BitGraph 1.25 (reverse video),
	flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
	use=bg1.25,
bg1.25nv|BBN BitGraph 1.25 (normal video),
	flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
	use=bg1.25,
# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
bg1.25|BBN BitGraph 1.25,
	cols#85, lines#64,
	bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A,
	dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I,
	il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
	lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
	rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
	smso=\E[7m,

#### Bull (bq, dku, vip)
#
# (Adapted for terminfo; AIX extension capabilities translated -- esr)

#============================================#
# BULL QUESTAR 210 `SDP' terminals emulation #
#============================================#
#
# Description written by R.K.Saunders (Bull Transac)
#
# Modifications written by F. Girard (Bull MTS)
#		19-05-87 V02.00.01
#		17-12-87 V02.00.02
#		15-09-89 V02.00.05
#
#	Typical technical selections F1 (modes SDP/ROLL):
# -------------------------------------------------------
# |   01   02   03   04   05   06   07   08   09   10   |
# |  1010 0011 1010 0110 0110 0001 0100 0000 0000 0000  |
# |                                                     |
# |   11   12   13   14   15   16   17   18   19   20   |
# |  0000 0110 100? 0000 0000 0000 0001 0000 0000 0001  |
# |                                                     |
# |   21   22   23   24   25   26   27   28   29   30   |
# |  0011 0000 0001 1000 0000 0000 0000 0000 0000 0000  |
# |                                                     |
# |   31   32   33   34   35   36   37   38   39   40   |
# |  1010 0011 0000 0000 0000 0000 0000 0000 0000 0000  |
# -------------------------------------------------------
#	Typical firmware identification F5 "etat 6":
#  P287.02.04b	(AZERTY)
#  P297.11.04	(24-pin: 2732)	or P798.11.04	(28-pin: 2764)
#  P298.03.03	(monochrome)	or P374.03.02	(colour)
#
#	SM SDP mode (VIP command):	^[[?=h
#	RIS (erases screen):		^[c
#	DMI disable keyboard:		^[`
#	SM double rendition mode:	^[[?>h
#	RM solicited status mode:	^[[5l
#	RM character mode:		^[[>l
#	RM echoplex mode:		^[[12l
#	RM column tab mode:		^[[18l
#	RM forbid SS2 keyboard mode:	^[[?<l
#	SM scroll mode:			^[[=h
#	FCF enable XON/XOFF:		^[P1s^[\
#	MTL select end msg character:	^[[^Wp
#	EMI enable keyboard:		^[b
#	RIS retour etat initial:	^[c
#	enable FC keypad:		^[[?<h,
#	MPW map status line window:	^[PY99:98^[\
#	SCP select status line:		^[[0;98v
#	ED erase entire partition:	^[[2J
#	SCP select main partition:	^[[v
#	SM character insertion mode:	^[[4h
#	RM character replacement mode:	^[[4l
#	COO cursor on:			^[[r
#	COO cursor off:			^[[1r
#	SGR dim (turquoise) rev attr:	^[[2;7m
#	SGR Data normal attr:		^[[m
#	SO Line-graphic mode ON:	^N
#	SI Line-graphic mode OFF:	^O
#	MC start routing to printer:	^[[5i
#	MC stop routing to printer:	^M^[[4i
#

# This entry covers the following terminals:
# dku7102, tws2102, and tws models 2105 to 2112
tws-generic|dku7102|Bull Questar tws terminals,
	am, eslok, hs, mir, msgr, xenl, xhp@, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
	bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
	cnorm=\E[r, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
	cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
	fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
	il1=\E[L, ind=\n, invis=\E[0;8m,
	is1=\E[?=h\Ec\E`\E[?>h\EPY99:98\E\\,
	is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
	is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
	ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
	kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
	kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
	khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
	mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
	rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
	rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?
	    %p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99:98\E\\,
	smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g,
	tsl=\EPY99:98\E\\\E[0;98v\E[2;7m,
tws2102-sna|dku7102-sna|Bull Questar tws2102 for SNA,
	dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
	use=tws-generic,
tws2103|xdku|Bull Questar tws2103,
	ht=^I, use=tws-generic,
tws2103-sna|dku7103-sna|Bull Questar tws2103 for SNA,
	ht=^I, use=tws2102-sna,
dku7102-old|Bull Questar 200 DKU7102 (microcode version < 6),
	clear=\E[2J\E[H, cup@, dl@, dl1@,
	dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m,
	il@, il1@, tsl=\EPY99:98\E\\\E[0;98v\E[H\E[2;7m,
	use=tws-generic,
dku7202|Bull Questar 200 DKU7202 (colour/character attributes),
	blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
	sgr=\E[0%?%p1%t;2;4;5;7%;%?%p3%t;7%;%?%p2%t;2%;%?%p4%t;2;4%;
	    %?%p5%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,

#=========================================================#
# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
#=========================================================#
#
# Description written by J. Staerck (BULL SA)
#       Copyright (c) 1989 BULL SA
#---------------------------------------------------------------------------
#  This entry is used for terminals with vt320 emulation mode
#  and following set-up :
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    7 bit Control Characters,
#    80 columns screen.
#  Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
#  They are used in string capabilities with vt220-320 emulation mode.
#  In the following DEC definitions, two kinds of terminfo databases are
#    provided :
#    1. the first with Command Sequence Introducer starting with escape
#       sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
#    2. the second with Command Sequence Introducer starting with escape
#       sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
#	Soft Terminal Reset		esc [ ! p
#	RIS (erases screen):		esc c
#	DECKPNM numeric keypad mode:	esc >
#	DECKPAM applic. keypad mode:	esc =
#	DECSTBM Scrolling region:	esc [ r
#	SCS select G0 = US:		esc ( B
#	SCS select G1 = line-graphic:	esc ) 0
#	Select 7-bit C1 controls:	esc sp F
#	Select 8-bit C1 controls:	esc sp G
#	Select cursor home:		esc [  H
#	Select erase screen:		esc [  J
#	SM KAM lock keyboard:		esc [ 2 h
#	RM KAM unlock keyboard:		esc [ 2 l
#	SM SRM local echo off:		esc [ 1 2 h
#	RM SRM local echo on:		esc [ 1 2 l
#	SM LNM New line :		esc [ 2 0 h
#	RM LNM return = CR only:	esc [ 2 0 l
#	SM DECCKM cursor keys mode:	esc [ ? 1 h
#	RM DECCKM appli. keys mode:	esc [ ? 1 l
#	SM DECANM ANSI mode on:		esc [ ? 2 h
#	RM DECANM ANSI mode off:	esc [ ? 2 l
#	SM DECCOLM 132-column screen:	esc [ ? 3 h
#	RM DECCOLM 80-column screen:	esc [ ? 3 l
#	SM DECSCLM Smooth scroll:	esc [ ? 4 h
#	RM DECSCLM Jump scroll:		esc [ ? 4 l
#	SM DECSCNM screen light backgr.	esc [ ? 5 h
#	RM DECSCNM screen dark backgr.	esc [ ? 5 l
#	SM DECOM move within margins:	esc [ ? 6 h
#	RM DECOM move outside margins:	esc [ ? 6 l
#	SM DECAWM auto right margin:	esc [ ? 7 h
#	RM DECAWM auto right margin:	esc [ ? 7 l
#	SM DECARM auto repeat:		esc [ ? 8 h
#	RM DECARM auto repeat:		esc [ ? 8 l
#	DECSASD Select active main:	esc [ 0 $ }
#	DECSASD Select active status:	esc [ 1 $ }
#	DECSSDT Select status none:	esc [ 0 $ ~
#	DECSSDT Select status indic.:	esc [ 1 $ ~
#	DECSSDT Select status host-wr:	esc [ 2 $ ~
#	SM DECTCEM Visible cursor:	esc [ ? 2 5 h
#	RM DECTCEM Invisible cursor:	esc [ ? 2 5 l
#	SM DECNCRM 7 bits NCR set:	esc [ ? 4 2 h
#	RM DECNCRM Multi or ISO latin:	esc [ ? 4 2 l
#	SM DECNKM numeric keypad mode:	esc [ ? 6 6 h
#	RM DECNKM numeric keypad appl.:	esc [ ? 6 6 l
#	SM DECKBUM clavier informatique	esc [ ? 6 8 h
#	RM DECKBUM clavier bureautique:	esc [ ? 6 8 l
#	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 " p
# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 0 " p
# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 2 " p
#	DECSCL vt300 mode 7-bit ctrl:	esc [ 6 3 ; 1 " p
#	Char. and Line attributes:	esc [ Ps ... Ps m
# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
#

# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
bq300|Bull vt320 ISO Latin 1 80 columns terminal,
	am, eo, eslok, hs, km, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, 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,
	dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is1=\E[63;1"p\E[2h,
	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
	kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~,
	krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l,
	rmcup=\E[?7h, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0,
	sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0m\E(B, smacs=\E(0, smam=\E[?7h,
	smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~,
	use=vt220+vtedit, use=ansi+pp, use=vt220+cvis,
bq300-rv|Bull vt320 reverse 80 columns,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	use=bq300,
bq300-w|Bull vt320 132 columns,
	cols#132, wsl#132,
	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300,
bq300-w-rv|Bull vt320 reverse mode 132 columns,
	cols#132, wsl#132,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300,

#  This entry is used for terminals with vt320 emulation mode
#  and following set-up :
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    8 bit Control Characters, (CSI coded as x9B for ESC [)
#    80 columns screen.
#	Soft Terminal Reset		csi ! p
#	RIS (erases screen):		esc c
#	DECKPNM numeric keypad mode:	esc >
#	DECKPAM applic. keypad mode:	esc =
#	DECSTBM Scrolling region:	esc [ r
#	SCS select G0 = US:		esc ( B
#	SCS select G1 = line-graphic:	esc ) 0
#	Select 7-bit C1 controls:	esc sp F
#	Select 8-bit C1 controls:	esc sp G
#	Select cursor home:		csi H
#	Select erase screen:		csi J
#	SM KAM lock keyboard:		csi 2 h
#	RM KAM unlock keyboard:		csi 2 l
#	SM SRM local echo off:		csi 1 2 h
#	RM SRM local echo on:		csi 1 2 l
#	SM LNM New line :		csi 2 0 h
#	RM LNM return = CR only:	csi 2 0 l
#	SM DECCKM cursor keys mode:	csi ? 1 h
#	RM DECCKM appli. keys mode:	csi ? 1 l
#	SM DECANM ANSI mode on:		csi ? 2 h
#	RM DECANM ANSI mode off:	csi ? 2 l
#	SM DECCOLM 132-column screen:	csi ? 3 h
#	RM DECCOLM 80-column screen:	csi ? 3 l
#	SM DECSCLM Smooth scroll:	csi ? 4 h
#	RM DECSCLM Jump scroll:		csi ? 4 l
#	SM DECSCNM screen light backgr.	csi ? 5 h
#	RM DECSCNM screen dark backgr.	csi ? 5 l
#	SM DECOM move within margins:	csi ? 6 h
#	RM DECOM move outside margins:	csi ? 6 l
#	SM DECAWM auto right margin:	csi ? 7 h
#	RM DECAWM auto right margin:	csi ? 7 l
#	SM DECARM auto repeat:		csi ? 8 h
#	RM DECARM auto repeat:		csi ? 8 l
#	DECSASD Select active main:	csi 0 $ }
#	DECSASD Select active status:	csi 1 $ }
#	DECSSDT Select status none:	csi 0 $ ~
#	DECSSDT Select status indic.:	csi 1 $ ~
#	DECSSDT Select status host-wr:	csi 2 $ ~
#	SM DECTCEM Visible cursor:	csi ? 2 5 h
#	RM DECTCEM Invisible cursor:	csi ? 2 5 l
#	SM DECNCRM 7 bits NCR set:	csi ? 4 2 h
#	RM DECNCRM Multi or ISO latin:	csi ? 4 2 l
#	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 " p
# or	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 ; 0 " p
#	DECSCL vt300 mode 7-bit ctrl:	csi 6 3 ; 1 " p
#	Char. and Line attributes:	csi Ps ... Ps m
# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
bq300-8|Bull vt320 full 8 bits 80 columns,
	am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r,
	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D,
	cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C,
	cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A,
	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
	dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J,
	el=\233K, el1=\2331K, enacs=\E(B\E)0,
	flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
	ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L,
	ind=\ED, is1=\E[63;2"p\E[2h,
	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
	ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
	kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
	kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
	kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
	khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
	krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
	lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8,
	rev=\2337m, ri=\EM, rmacs=\E(B, rmam=\233?7l,
	rmcup=\233?7h, rmir=\2334l, rmkx=\233?1l\E>,
	rmso=\23327m, rmul=\23324m, rs1=\E[!p, rs2=\E[?3l,
	s0ds=\E(B, s1ds=\E(0, sc=\E7,
	sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;
	    1%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
	smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
	smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
	use=vt220+cvis8,
bq300-8rv|Bull vt320 8-bit reverse mode 80 columns,
	flash=\233?5l$<50>\233?5h,
	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	use=bq300-8,
bq300-8w|Bull vt320 8-bit 132 columns,
	cols#132, wsl#132,
	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	rs2=\233?3h, use=bq300-8,
bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns,
	cols#132, wsl#132,
	flash=\233?5l$<50>\233?5h,
	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	rs2=\233?3h, use=bq300-8,

#  This entry is used for terminals with vt320 emulation mode
#  a 102 keys keyboard (PC scancode !) and following set-up :
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    7 bit Control Characters,
#    80 columns screen.
bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns,
	kbs=^H, kf1=\E[17~, kf10=\E[28~, kf11=\E[29~, kf12=\E[31~,
	kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E[18~, kf20@,
	kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~,
	kf8=\E[25~, kf9=\E[26~, kfnd@, khlp@, krdo@, kslt@, lf1@, lf2@,
	lf3@, lf4@, use=vt220+pcedit, use=bq300,
bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	use=bq300-pc,
bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal,
	cols#132, wsl#132,
	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300-pc,
bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns,
	cols#132, wsl#132,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300-pc,
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    8 bit Control Characters,
#    80 columns screen.
bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
	kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
	kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
	khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
	kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	use=bq300-8-pc,
bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns,
	cols#132, wsl#132,
	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300-8-pc,
bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
	cols#132, wsl#132,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
	    l,
	rs2=\E[?3h, use=bq300-8-pc,

#======================================================#
# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
#======================================================#

# normal mode, 8 bits, 80 columns terminal.
#	BLD  bell disable			^[g
#	BLE  bell enable			^[h
#	CAMR char. attr. mode reset		^[[G
#	CAMS char. attr. mode set		^[[D
#	CLR  clear				^[`
#	CM   character mode (async.)		^[k
#	EP   echoplex mode (by host)		^[m
#	IM   insert mode set			^[[I
#	IMR  insert mode reset			^[[J
#	KBL  keyboard lock (reset)		^[[X
#	KBU  keyboard unlock (set)		^[[W
#	LGR  Line-graphic mode reset		^[F
#	LGS  Line-graphic mode set		^[G
#	NEP  non echoplex mode (by host)	^[l
#	PDS  print data space			^[[0p
#	PDT  print data terminator		^[[<p
#	PHD  print host data			^[[3p
#	PRES print adapter reset		^[[2p
#	RBM  block mode reset			^[[E
#	RES  reset :				^[e
#	RIS  reset initial state:		^[c
#	RMR  roll mode reset			^[q
#	RMS  roll mode set			^[r
#	SCD  scroll down (72 lines)		^[[1s
#	SCU  scroll up	(72 lines)		^[[0s
#	SLL  status line lock			^[O
#	SLR  status line reset			^[v
#	SLS  status line set			^[w
#	SM78 set mode vip7800			^[[1q
#	SSP0 partition 0 set			^[[00u
#	SSP1 partition n format 1		^[[PnPnSTRINGu
#	SSP2 partition n format 2		^[[PnPnSTRINGu
#	SSP3 partition n format 3		^[[PnPnu
#	SSPR multi-part. reset			^[[<>u
#	TBC  tab clear (at cursor pos.)		^[[g
#	TBI  tab initialize			^[[N
#	TBS  tab set (at cursor pos.)		^[p
#
#	ATR attribute (visual)
#	    blink :				^[sB
#	    dim :				^[sL
#	    hide (blank) :			^[sH
#	    inverse video :			^[sI
#	    protected :				^[sP
#	    reset :				^[sR
#	    underline :				^[s_
#
# This covers the vip7800 and BQ3155-vip7800
vip|Bull Questar 3155-7800,
	am, eslok, hs, km, mc5i, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
	cbt=\E[Z, clear=\E`, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
	dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
	flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
	hts=\Ep, ich1=\E[I, ind=\n, invis=\EsH,
	is2=\E[00u\E[<>001001024080024080u\E[01u,
	is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
	kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
	kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
	kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
	kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_,
	kf4=\E8, kf5=\E:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER,
	khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s,
	kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1,
	lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p,
	mc5=\E[3p, nel=\r, prot=\EsP, rev=\EsI,
	ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
	rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
	sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
	smul=\Es_, tbc=\E[N, tsl=\Ew,
# normal screen, 8 bits, 132 columns terminal.
vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
	cols#132, wsl#132,
	is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip,
vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines,
	lines#72,
	is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip,
vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
	cols#132, lines#72, wsl#132,
	is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip,

#### Chromatics
#

# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window
# that is smaller than the screen, and puts up a warning message
# outside the window. Te erases the warning message, puts the
# window back to be the whole screen, and puts the cursor at just
# below the small window. I defined <cnorm> and <civis> to really turn
# the cursor on and off, but I have taken this out since I don't
# like the cursor being turned off when vi exits.
cg7900|chromatics|chromatics 7900,
	am,
	cols#80, lines#40,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^],
	cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2,
	ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=\n, ll=^A|,
	rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40
	      \,,
	rmso=\001C1\,\001c2\,,
	smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARN
	      ING\sDOUBLE\sENTER\sESCAPE\sand\s\025\001C1\,\001c2\,
	      \001W0\,0\,79\,39\,,
	smso=\001C4\,\001c7\,, uc=^A^A_^A\0,

#### Computer Automation
#

ca22851|Computer Automation 22851,
	am,
	cols#80, lines#24,
	bel=^G, clear=\014$<8>, cr=\r, cub1=^U, cud1=\n, cuf1=^I,
	cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=\n,
	kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^,

#### Cybernex
#

# This entry has correct padding and the undocumented "ri" capability
cyb83|xl83|Cybernex xl-83,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\014$<62>, cr=\r, cub1=^H, cud1=\n, cuf1=^I,
	cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
	ed=\020$<62>, el=\017$<3>, home=^K, ind=\n, kcub1=^H,
	kcud1=\n, kcuf1=^I, kcuu1=^N, ri=^N,
# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
cyb110|mdl110|Cybernex mdl-110,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\030$<70>, cr=\r, cub1=^H, cud1=\n, cuf1=^U,
	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
	dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>,
	ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y,
	ht=\011$<43>, ich1=\016A\035$<3.5>,
	il1=\016A\016\035$<65>, ind=\n, rmso=^NG, smso=^NF,

#### Datapoint
#
# Datapoint is gone.  They used to be headquartered in Texas.
# They created ARCnet, an Ethernet competitor that flourished for a while
# in the early 1980s before 3COM got wise and cut its prices.  The service
# side of Datapoint still lives (1995) in the form of Intelogic Trace.
#

dp3360|datapoint|Datapoint 3360,
	OTbs, am,
	cols#82, lines#25,
	bel=^G, clear=^]^_, cr=\r, cub1=^H, cud1=\n, cuf1=^X, cuu1=^Z,
	ed=^_, el=^^, home=^], ind=\n,

# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997
# The Datapoint 8242 Workstation was sold at least between 1985
# and 1989. To make the terminal work with this entry, press
# CONTROL-INT-INT to take the terminal off-line, and type (opt).
# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO
# CR/LF off. Use control-shift-[] as escape key, control-I as tab,
# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in
# fact unusable because the strings sent by the terminal conflict
# with other keys).
# The terminal is capable of displaying "box draw" characters.
# For each graphic character you must send 2 ESC's (\E\E) followed
# by a control character as follows:
#         character        meaning
#         =========        =======
#         ctrl-E           top tee
#         ctrl-F           right tee
#         ctrl-G           bottom tee
#         ctrl-H           left tee
#         ctrl-I           cross
#         ctrl-J           top left corner
#         ctrl-K           top right corner
#         ctrl-L           bottom left corner
#         ctrl-M           bottom right corner
#         ctrl-N           horizontal line
#         ctrl-O           vertical line
# Unfortunately this cannot be fitted into the termcap/terminfo
# description scheme.
dp8242|Datapoint 8242,
	msgr,
	cols#80, lines#25,
	bel=^G, civis=^Y, clear=^U\E^D^W^X, cnorm=^X, cr=\r, cub1=^H,
	cud1=\n, cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z,
	ed=^W, el=^V, home=^U, ht=^I, il1=\E^T, ind=^C,
	is1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
	kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee,
	kf10=\EK\Ea, kf2=^I\Ed, kf3=\n\Ec, kf4=\n\Eb, kf5=^S\Ea,
	kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=\r\n,
	rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D,
	rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
	smso=\E^E, smul=\E^F,
	wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'
	     \0'%+%c\025,

#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
#
# These entries came from DEC's official terminfos for its older terminals
# (which happen to be identical to the AT&T/SCO terminal descriptions),
# Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support Engineering
# may have had more information.  Updated terminfos and termcaps were available
# at ftp://gatekeeper.dec.com/pub/DEC/termcaps.

# DEC's terminfos did not describe the auxiliary keypad.
#
# DECScope of course had no "function keys", but this building block assigns
# the three blank keys at the top of the auxiliary (numeric) keypad, using
# the same analogy as vt100 (also lacking function-keys).
#
# These assignments use the same layout for 0-9 as vt100+keypad; the vt52
# keypad had its cursor-keys on the right-column as shown -TD
#   _______________________________________
#  |   PF1   |   PF2   |   PF3   | c-up    |
#  |   \EP   |   \EQ   |   \ER   |   \EA   |
#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|kcuu1_k4_|
#  |    7         8         9      c-down  |
#  |   \E?w  |   \E?x  |   \E?y  |   \EB   |
#  |_kf9__k9_|_kf10_k;_|_kf0__k0_|kcud1____|
#  |    4    |    5    |    6    | c-right |
#  |   \E?t  |   \E?u  |   \E?v  |   \EC   |
#  |_kf5__k5_|_kf6__k6_|_kf7__k7_|kcuf1_k8_|
#  |    1    |    2    |    3    | c-left  |
#  |   \E?q  |   \E?r  |   \E?s  |   \ED   |
#  |_ka1__K1_|_kb2__K2_|_ka3__K3_|kcub1____|
#  |         0         |   .     |  enter  |
#  |        \E?p       |  \E?n   |  \E?M   |
#  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
#
vt52+keypad|DECScope auxiliary keypad,
	ka1=\E?q, ka3=\E?s, kb2=\E?r, kc1=\E?p, kc3=\E?n, kf0=\E?y,
	kf1=\EP, kf2=\EQ, kf3=\ER, kf5=\E?t, kf6=\E?u, kf7=\E?v,
	kf8=\E?w, kf9=\E?x,

gt40|DEC gt40,
	OTbs, os,
	cols#72, lines#30,
	bel=^G, cr=\r, cub1=^H, cud1=\n,
gt42|DEC gt42,
	OTbs, os,
	cols#72, lines#40,
	bel=^G, cr=\r, cub1=^H, cud1=\n,

vt50|DEC vt50,
	OTbs,
	cols#80, lines#12,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n, u8=\E/A, u9=\EZ,
vt50h|DEC vt50h,
	cub1=\ED, cud1=\EB, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, u8=\E/[HJ],
	use=vt52+keypad, use=vt50,

# (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>)
vt61|vt-61|vt61.5|DEC vt61,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=\n,
	cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>,
	cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I,
	ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	ri=\E$<20>I,

# The gigi does standout with red!
# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
gigi|vk100|DEC gigi graphics terminal,
	OTbs, am, xenl,
	cols#84, lines#24,
	bel=^G, clear=\E[H\E[2J, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
	el=\E[K, ht=^I, ind=\n,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
	smul=\E[4m,

# DEC PRO-350 console (VT220-style).  The 350 was DEC's attempt to produce
# a PC differentiated from the IBM clones.  It was a total, ludicrous,
# grossly-overpriced failure (among other things, DEC's OS didn't include
# a format program, so you had to buy pre-formatted floppies from DEC at
# a hefty premium!).
pro350|decpro|DEC pro console,
	OTbs,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
	kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
	rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,

dw1|DECwriter I,
	OTbs, hc, os,
	cols#72,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n,
dw2|decwriter|dw|DECwriter II,
	OTbs, hc, os,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H,
# \E(B		Use U.S. character set (otherwise # => british pound !)
# \E[20l	Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
# \E[w		10 char/in pitch
# \E[1;132	full width horizontal margins
# \E[2g		clear all tab stops
# \E[z		6 lines/in
# \E[66t	66 lines/page (for \f)
# \E[1;66r	full vertical page can be printed
# \E[4g		clear vertical tab stops
# \E>		disable alternate keypad mode (so it transmits numbers!)
# \E[%i%p1%du	set tab stop at column %d (origin == 1)
#		(Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is
#		a tab stop)
#
#       The dw3 does standout with wide characters.
#
dw3|la120|DECwriter III,
	OTbs, hc, os,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n,
	is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>,
	is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u
	    \r,
	kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w,
dw4|DECwriter IV,
	OTbs, am, hc, os,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, is2=\Ec, kbs=^H,
	kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,

# These aren't official
ln03|DEC ln03 laser printer,
	hc,
	cols#80, lines#66,
	bel=^G, cr=\r, cud1=\n, hd=\EK, ht=^I, hu=\EL, ind=\n, nel=\r\n,
	rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m,
	smul=\E[4m,
ln03-w|DEC ln03 laser printer 132 cols,
	cols#132,
	bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H,
	kcud1=\n, nel=\r\n, use=ln03,

#### Delta Data (dd)
#

# Untested. The cup sequence is hairy enough that it probably needs work.
# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'.
# There are BSD-derived termcap entries floating around for this puppy
# that are *certainly* wrong.
delta|dd5000|delta data 5000,
	OTbs, am,
	cols#80, lines#27,
	bel=^G, clear=^NR, cub1=^H, cud1=\n, cuf1=^Y,
	cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-
	    %{57}%+%c,
	cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=\n,

#### Digital Data Research (ddr)
#

# (ddr: I added <rmam>/<smam> based on the init string -- esr)
ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
	OTbs, am, xenl,
	cols#80, it#8, lines#24, vt#3,
	blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
	cud1=\n, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
	cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
	ht=^I, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m$<2/>,

#### Evans & Sutherland
#

# Jon Leech <leech@cs.unc.edu> tells us:
# The ps300 was the Evans & Sutherland Picture System 300, a high
# performance 3D vector graphics system with a bunch of specialized hardware.
# Approximate date of release was 1982 (early 80s, anyway), and it had several
# evolutions including (limited) color versions such as the PS330C. PS300s
# were effectively obsolete by the late 80s, replaced by raster graphics
# systems, although specialized applications like molecular modeling
# hung onto them for a while longer.  AFAIK all E&S vector graphics systems
# are out of production, though of course E&S is very much alive (in 1996).
# (ps300: changed ":pt@:" to "it@" -- esr)
#
ps300|Picture System 300,
	xt,
	it@,
	rmso@, rmul@, smso@, smul@, use=vt100+4bsd,

#### General Electric (ge)
#

terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
	OTbs, hc, os,
	cols#120,
	bel=^G, cr=\r, cud1=\n, ind=\n,

#### Heathkit/Zenith
#

# Here is a description of the H19 DIP switches:
#
# S401
# 0-3 = baud rate as follows:
#
#         3       2       1       0
#	---	---	---	---
#         0       0       1       1       300 baud
#         0       1       0       1       1200 baud
#         1       0       0       0       2400 baud
#         1       0       1       0       4800 baud
#         1       1       0       0       9600 baud
#         1       1       0       1       19.2K baud
#
# 4 = parity (0 = no parity)
# 5 = even parity (0 = odd parity)
# 6 = stick parity (0 = normal parity)
# 7 = full duplex (0 = half duplex)
#
# S402
# 0 = block cursor (0 = underscore cursor)
# 1 = no key click (0 = keyclick)
# 2 = wrap at end of line (0 = no wrap)
# 3 = auto LF on CR (0 = no LF on CR)
# 4 = auto CR on LF (0 = no CR on LF)
# 5 = ANSI mode (0 = VT52 mode)
# 6 = keypad shifted (0 = keypad unshifted)
# 7 = 50Hz refresh (1 = 60Hz refresh)
#
# Factory Default settings are as follows:
#          7 6 5 4 3 2 1 0
# S401     1 0 0 0 1 1 0 0
# S402     0 0 0 0 0 0 0 0
# (h19: I added <rmam>/<smam> based on the init string;
# also added empty <acsc> to suppress a tic warning -- esr)
h19-a|h19a|heath-ansi|heathkit-a|Heathkit h19 ansi mode,
	OTbs, am, mir, msgr,
	cols#80, it#8, lines#24,
	acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=\r, cub1=^H,
	cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[1A, cvvis=\E[>4h, dch1=\E[1P, dl1=\E[1M$<1*>,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[1L$<1*>, ind=\n,
	is2=\E<\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m\E[?7h,
	kbs=^H, kcub1=\E[1D, kcud1=\E[1B, kcuf1=\E[1C, kcuu1=\E[1A,
	kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP,
	kf7=\EOQ, kf8=\EOR, khome=\E[H, lf6=blue, lf7=red, lf8=white,
	ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, rmso=\E[m,
	smacs=\E[10m, smam=\E[?7h, smir=\E[4h, smso=\E[7m,
h19-bs|Heathkit w/keypad shifted,
	rmkx=\Eu, smkx=\Et, use=h19-b,
h19-us|h19us|h19-smul|Heathkit w/keypad shifted/underscore cursor,
	rmkx=\Eu, smkx=\Et, use=h19-u,
# (h19: merged in <ip> from BSDI hp19-e entry>;
# also added empty <acsc> to suppress a tic warning --esr)
# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998
# Tim tells us that:
# I have an old Zenith-19 terminal at home that still gets a lot of use.
# This terminal suffers from the same famous insert-mode padding lossage
# that has been acknowledged for the Z29 terminal.  Emacs is nearly
# unusable on this box, since even a half-scroll up or down the window
# causes flaming terminal death.
#
# On the Z19, the only way I have found around this problem is to remove
# the :al: and :dl: entries entirely.  No amount of extra padding will
# help (I have tried up to 20000).  Removing <il1=\EL$> and <dl1=\EM$>
# makes Emacs a little slower, but it remains in the land of the living.
# Big win.
h19|heath|h19-b|heathkit|heath-19|z19|zenith|Heathkit h19,
	OTbs, am, eslok, hs, mir, msgr,
	cols#80, it#8, lines#24,
	acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, bel=^G,
	clear=\EE, cnorm=\Ey4, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4,
	dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=\n,
	ip=$<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW,
	kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red,
	lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
	smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
h19-u|Heathkit with underscore cursor,
	cnorm@, cvvis@, use=h19-b,
h19-g|h19g|Heathkit w/block cursor,
	cnorm=\Ex4, cvvis@, use=h19-b,
alto-h19|altoh19|altoheath|alto-heath|alto emulating Heathkit h19,
	lines#60,
	dl1=\EM, il1=\EL, use=h19,

# The major problem with the Z29 is that it requires more padding than the Z19.
#
# The problem with declaring an H19 to be synonymous with a Z29 is that
# it needs more padding. It especially loses if a program attempts
# to put the Z29 into insert mode and insert text at 9600 baud. It
# even loses worse if the program attempts to insert tabs at 9600
# baud. Adding padding to text that is inserted loses because in
# order to make the Z29 not die, one must add so much padding that
# whenever the program tries to use insert mode, the effective
# rate is about 110 baud.
#
# What program would want to put the terminal into insert mode
# and shove stuff at it at 9600 baud you ask?
#
# Emacs. Emacs seems to want to do the mathematically optimal
# thing in doing a redisplay rather than the practical thing.
# When it is about to output a line on top of a line that is
# already on the screen, instead of just killing to the end of
# the line and outputting the new line, it compares the old line
# and the new line and if there are any similarities, it
# constructs the new line by deleting the text on the old line
# on the terminal that is already there and then inserting new
# text into the line to transform it into the new line that is
# to be displayed. The Z29 does not react kindly to this.
#
# But don't cry for too long.... There is a solution. You can make
# a termcap entry for the Z29 that says the Z29 has no insert mode.
# Then Emacs cannot use it. "Oh, no, but now inserting into a
# line will be really slow", you say. Well there is a sort of a
# solution to that too. There is an insert character option on
# the Z29 that will insert one character. Unfortunately, it
# involves putting the terminal into ansi mode, inserting the
# character, and changing it back to H19 mode. All this takes 12
# characters. Pretty expensive to insert one character, but it
# works. Either Emacs doesn't try to use its inserting hack when
# it's only given an insert character ability or the Z29 doesn't
# require padding with this (the former is probably more likely,
# but I haven't checked it out).
# (z29: added empty <acsc> to suppress a tic warning, merged in
# status line capabilities from BRL entry --esr)
z29|zenith29|z29b|Zenith z29b,
	OTbs, OTpt, am, eslok, hs, mir, msgr,
	OTkn#10, cols#80, lines#24,
	OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4,
	cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A,
	cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1,
	ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I,
	ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
	is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
	kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
	lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
	rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
# the world is stable. <rs1> causes the terminal to be reset to the state
# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
# cursor, bc -> block cursor.
# From: Mike Meyers
# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> because <hts>
# looks vt100-compatible -- esr)
z29a|z29a-kc-bc|h29a-kc-bc|Heath/Zenith 29 in ansi mode,
	OTbs, OTpt, am, eslok, hs, mir, msgr,
	OTkn#10, cols#80, it#8, lines#24,
	OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, 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[1P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l,
	home=\E[H, ht=^I, hts=\EH, if=/usr/share/tabset/vt100,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, kbs=^H, kclr=\E[J,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, ked=\E[J,
	kf0=\E[~, kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW,
	kf6=\EOP, kf7=\EOQ, kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help,
	mc0=\E#7, nel=\r\ED, rc=\E[r, rev=\E[7m, ri=\EM,
	rmcup=\E[?7h, rmso=\E[m, rmul=\E[m,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m
	    \E[11m,
	sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K,
z29a-kc-uc|h29a-kc-uc|Zenith z29 ansi mode with keyclick and underscore cursor,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11
	    m,
	use=z29a,
z29a-nkc-bc|h29a-nkc-bc|Zenith z29 ansi mode with block cursor and no keyclick,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m
	    \E[11m,
	use=z29a,
z29a-nkc-uc|h29a-nkc-uc|Zenith z29 ansi mode with underscore cursor and no keyclick,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m
	    \E[11m,
	use=z29a,
# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
	am, eslok, hs, mc5i, mir, msgr, xon,
	cols#80, lines#24,
	acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h,
	clear=\E[2J\E[H, cnorm=\E[>5l, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	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[1P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K,
	fsl=\E[u, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L,
	ind=\n, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
	ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS,
	kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
	kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
	mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
	rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
	rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
	smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[s\E[>1h\E[25;%i%p1%dH,

# From: Brad Brahms <Brahms@USC-ECLC>
z100|h100|z110|z-100|h-100|Heath/Zenith z-100 pc with color monitor,
	cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw,
# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
z100bw|h100bw|z110bw|z-100bw|h-100bw|Heath/Zenith z-100 pc,
	OTbs, OTpt, mir, msgr,
	OTkn#10, cols#80, it#8, lines#24,
	acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^,
	clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA,
	cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK,
	home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU,
	kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI,
	khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
	smir=\E@, smso=\Ep,
p19|h19-b with il1/dl1,
	dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
# (ztx: removed duplicate :sr: -- esr)
ztx|ztx11|zt-1|htx11|ztx-1-a|Heath/Zenith ztx-10 or 11,
	OTbs, am, eslok, hs,
	cols#80, it#8, lines#24,
	clear=\EE, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I,
	il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
	kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
	ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,

#### IMS International (ims)
#
# There was a company called IMS International located in Carson City,
# Nevada, that flourished from the mid-70s to mid-80s.  They made S-100
# bus/Z80 hardware and a line of terminals called Ultimas.
#

# From: Erik Fair <fair@ucbarpa.berkeley.edu>  Sun Oct 27 07:21:05 1985
ims950-b|bare ims950 no init string,
	is2@, use=ims950,
# (ims950: removed obsolete ":ko@:" -- esr)
ims950|IMS TeleVideo 950 emulation,
	xenl@,
	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950,
# (ims950-rv: removed obsolete ":ko@:" -- esr)
ims950-rv|IMS tvi950 rev video,
	xenl@,
	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
ims-ansi|ultima2|ultimaII|IMS Ultima II,
	OTbs, am,
	cols#80, it#8, lines#24,
	clear=\E[H\E[2J, cub1=^H, cud1=\ED, cuf1=\EC,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K,
	ht=^I, if=/usr/share/tabset/vt100,
	is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM,
	rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m,

#### Intertec Data Systems
#
# I think this company is long dead as of 1995.  They made an early CP/M
# micro called the "Intertec Superbrain" that was moderately popular,
# then sank out of sight.
#

superbrain|Intertec Superbrain,
	OTbs, am, bw,
	cols#80, lines#24,
	OTbc=^U, bel=^G, clear=\014$<5*>, cr=\r, cub1=^H, cud1=\n,
	cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
	ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=\n, kcub1=^U,
	kcud1=\n, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L,
# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>,
# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM,
# and the reverse is actually true.  Try it. -- esr)
intertube|intertec|Intertec InterTube,
	OTbs, am,
	cols#80, lines#25,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
	ind=\n, rmso=\E0@, smso=\E0P,
# The intertube 2 has the "full duplex" problem like the Tektronix 4025: if you
# are typing and a command comes in, the keystrokes you type get interspersed
# with the command and it messes up
intertube2|Intertec data systems InterTube 2,
	OTbs,
	cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
	el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c,
	ll=^K^X\r, vpa=\013%p1%c, use=intertube,

#### Ithaca Intersystems
#
# This company made S100-bus personal computers long ago in the pre-IBM-PC
# past.  They used to be reachable at:
#
#	Ithaca Intersystems
#	1650 Hanshaw Road
#	Ithaca, New York 14850
#
# However, the outfit went bankrupt years ago.
#

# The Graphos III was a color graphics terminal from Ithaca Intersystems.
# These entries were written (originally in termcap syntax) by Brian Yandell
# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the
# University of Wisconsin.

# (graphos: removed obsolete and syntactically incorrect :kn=4:,
# removed <if=/usr/share/tabset/init.graphos> and
# <rf=/usr/share/tabset/init.graphos> no such file & no <hts> -- esr)
graphos|graphos III,
	am, mir,
	cols#80, it#8, lines#24,
	clear=\E[H\E[2J, cnorm=\Ez56;2;0;0z\Ez73z\Ez4;1;1z,
	cr=\r, cub=\E[%p1%dD, cub1=^H, 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,
	cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
	rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h,
	smir=\E[4h, smso=\E[7m,
graphos-30|graphos III with 30 lines,
	lines#30,
	cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,

#### Modgraph
#
# These people used to be reachable at:
#
#	Modgraph, Inc
#	1393 Main Street,
#	Waltham, MA 02154
#	Vox: (617)-890-5796.
#
# However, if you call that number today you'll get an insurance company.
# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
# 26 Feb 1997 that says:
#
# Modgraph GX-1000, replaced by GX-2000.  Both are out of production, have been
# for ~7 years.  Modgraph still in business.  Products are rugged laptop and
# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount
# panel-mount etc).  I can be emailed at sonfour@aol.com
#
# Peter D. Smith <pdsmith@nbbn.com> notes that his modgraph manual was
# dated 1984.  According to the manual, it featured Tek 4010/4014
# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard.
#

modgraph|mod24|modgraph terminal emulating vt100,
	xenl@,
	cols#80, lines#24,
	cvvis=\E\^9;0s\E\^7;1s,
	is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11
	    ;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s
	    \E\^11;81s\E\^11;89s,
	rf@, ri=\EM\E[K$<5/>, use=vt100+4bsd,
# The GX-1000 manual is dated 1984.  This looks rather like a VT-52.
modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
	am, da, db,
	cols#80, it#8, lines#24,
	clear=\EH\EJ$<50/>, cub1=^H, cud1=\EB$<2/>,
	cuf1=\EC$<2/>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>,
	cuu1=\EA$<2/>, ed=\EJ$<50/>, el=\EK$<3/>, ht=^I,
	is2=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E
	    \^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;7
	    3s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;
	    1s\E\^9;1s\E\^27;1,
	ri=\EI$<5/>,
#
# Modgraph from Nancy L. Cider <nancyc@brl-tbd>
# BUG NOTE from Barbara E. Ringers <barb@brl-tbd>:
# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a
# mark and using delete-to-killbuffer work correctly.  However, we would
# like normal mode of operation to be using a Modgraph with 48 line setting.
# If we set TERM=mod (which is a valid entry in termcap with 48 lines)
# the setting mark and delete-to-killbuffer results in the deletion of only
# the line the mark is set on.
# We've discovered that the delete-to-killbuffer works correctly
# with TERM=mod and screen set to 80x48 but it's not obvious.  Only
# the first line disappears but a ctrl-l shows that it did work
# correctly.
modgraph48|mod|Modgraph w/48 lines,
	OTbs, OTpt, am, xenl,
	cols#80, it#8, lines#48, vt#3,
	OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q,
	home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
	ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m,

#### Morrow Designs
#
# This was George Morrow's company.  They started in the late 1970s making
# S100-bus machines.  They used to be reachable at:
#
#        Morrow
#        600 McCormick St.
#        San Leandro, CA 94577
#
# but they're long gone now (1995).
#

# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
# Jeff's specimen was dated June 1984.
# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
mt70|mt-70|Morrow MD-70; native Morrow mode,
	am, mir, msgr, xon,
	cols#80, it#8, lines#24,
	acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G,
	cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=\r, cub1=^H,
	cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>,
	cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>,
	flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE,
	ind=\n, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r,
	kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r,
	kcuu1=^AJ\r, kdch1=^?, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r,
	kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r,
	kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_,
	rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E],
	smul=\EG1, tbc=\E0, use=adm+sgr,

#### Motorola
#

# Motorola EXORterm 155	from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL
# (Seth H Zirin)
ex155|Motorola Exorterm 155,
	OTbs, am, bw,
	OTkn#5, OTug#1, cols#80, lines#24,
	cbt=\E[, clear=\EX, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\ET,
	el=\EU, home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
	kcud1=\n, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
	rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED,

#### Omron
#
# This company is still around in 1995, manufacturing point-of-sale systems.

omron|Omron 8025AG,
	OTbs, am, da, db,
	cols#80, lines#24,
	bel=^G, clear=\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, cuu1=\EA,
	cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH,
	il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef,

#### Ramtek
#
# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they
# were competition for things like the Tektronix 4025.
#

# Ramtek 6221 from BRL, probably by Doug Gwyn
# The following SET-UP modes are assumed for normal operation:
#	UNDERLINE_CURSOR	ANSI_MODE	AUTO_XON/XOFF_ON
#	NEWLINE_OFF		80_COLUMNS
# Other SET-UP modes may be set for operator convenience or communication
# requirements; I recommend
#	SMOOTH_SCROLL	AUTO_REPEAT_ON	3_#_SHIFTED	WRAP_AROUND_ON
# Hardware tabs are assumed to be every 8 columns; they can be set up by the
# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this).
# Note that the Control-E key is useless on this brain-damaged terminal.  No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
rt6221|Ramtek 6221 80x24,
	OTbs, OTpt, msgr, xon,
	OTkn#4, cols#80, it#8, lines#24, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l,
	clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I,
	hts=\EH, ind=\n, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR,
	kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H,
	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>,
	rmso=\E[m, rmul=\E[m,
	rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h
	    \E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#
	    5\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
rt6221-w|Ramtek 6221 160x48,
	cols#160, lines#48,
	ll=\E[48;1H, use=rt6221,

#### RCA
#

# RCA VP3301 or VP3501
rca|RCA vp3301/vp3501,
	OTbs,
	cols#40, lines#24,
	clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1,


#### Selanar
#

# Selanar HiREZ-100 from BRL, probably by Doug Gwyn
# The following SET-UP modes are assumed for normal operation:
#	SET_DEFAULT_TABS	48_LINES		80_COLUMNS
#	ONLINE			ANSI			CURSOR_VISIBLE
#	VT102_AUTO_WRAP_ON	VT102_NEWLINE_OFF	VT102_MONITOR_MODE_OFF
#	LOCAL_ECHO_OFF		US_CHAR_SET		WPS_TERMINAL_DISABLED
#	CPU_AUTO_XON/XOFF_ENABLED			PRINT_FULL_SCREEN
# For use with graphics software, all graphics modes should be set to factory
# default.  Other SET-UP modes may be set for operator convenience or
# communication requirements.  No delays are specified; use "stty ixon -ixany"
# to enable DC3/DC1 flow control!
# I commented out the scrolling capabilities since they are too slow.
hirez100|Selanar HiREZ-100,
	OTbs, OTpt, mir, msgr, xon,
	OTkn#4, cols#80, it#8, lines#48, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	hts=\EH, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
	kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
	lf3=PF4, ll=\E[48H, mc0=\E[i, mc4=\E[4i\E[?4i,
	mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;1
	    9l\E[r\E[m\E(B\017\E)0\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
hirez100-w|Selanar HiREZ-100 in 132-column mode,
	cols#132, use=hirez100,

#### Signetics
#

# From University of Wisconsin
vsc|Signetics Vsc Video driver by RMC,
	am, msgr,
	cols#80, it#8, lines#26,
	clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rev=^_\s,
	rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",

#### Soroc
#
# Alan Frisbie <frisbie@flying-disk.com> writes:
#
# As you may recall, the Soroc logo consisted of their name,
# with the letter "S" superimposed over an odd design.   This
# consisted of a circle with a slightly smaller 15 degree (approx.)
# wedge with rounded corners inside it.   The color was sort of
# a metallic gold/yellow.
#
# If I had been more of a beer drinker it might have been obvious
# to me, but it took a clue from their service department to make
# me exclaim, "Of course!"   The circular object was the top of
# a beer can (the old removable pop-top style) and "Soroc" was an
# anagram for "Coors".
#
# I can just imagine the founders of the company sitting around
# one evening, tossing back a few and trying to decide what to
# call their new company and what to use for a logo.
#

# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
soroc120|iq120|soroc|Soroc iq120,
	clear=\E*$<2>, cud1=\n, ed=\EY, el=\ET, kcub1=^H, kcud1=\n,
	kcuf1=^L, kcuu1=^K, use=adm3a,
soroc140|iq140|Soroc iq140,
	OTbs, am, mir,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew,
	dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=\n,
	kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A@\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8, rmso=\E^?,
	rmul=\E^A, smir=\E9, smso=\E^?, smul=\E^A,

#### Southwest Technical Products
#
# These guys made an early personal micro called the M6800.
# The ct82 was probably its console terminal.
#

# (swtp: removed obsolete ":bc=^D:" -- esr)
swtp|ct82|Southwest Technical Products ct82,
	am,
	cols#82, lines#20,
	bel=^G, clear=^L, cr=\r, cub1=^D, cud1=\n, cuf1=^S,
	cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F,
	home=^P, ich1=^\^X, il1=^\^Y, ind=^N,
	is2=\034\022\036\023\036\004\035\027\011\023\036\035\036
	    \017\035\027\022\011,
	ll=^C, ri=^O, rmso=^^^F, smso=^^^V,

#### Synertek
#
# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995):
#
# Synertek used to make ICs, various 6502-based single-board process
# control and hobbyist computers, and assorted peripherals including a
# series of small inexpensive terminals (I think they were one of the
# first to have a "terminal-on-a-keyboard", where the terminal itself
# was only slightly larger than the keyboard).
#
# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40
# was a 40x24 terminal that could connect to a standard TV through a
# video modulator.  The KTM-2/80 was the 80-column version (the 2/40
# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM).
# I have a KTM-2/80 still in working order.  The KTM-2s had fully
# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program
# ROM and 2 ROMs as character generators. They were incredibly simple,
# and I've never had any problems with mine (witness the fact that mine
# was made in 1981 and is still working great... I've blown the video
# output transistor a couple of times, but it's a 2N2222 :-)
#
# The KTM-3 (which is what is listed in the terminfo file) was their
# attempt at putting a KTM-2 in a box (and some models came with a
# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
# control and escape sequences are very different. The KTM-3 was always
# real broken, at least according to the folks I've talked to about it.
#
# The padding in the entry is probably off--these terminals were very
# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
# anyone with any sanity replaced the ROMs with something that provided
# a reasonable subset of VT100 functionality, since the usual ROMs were
# obviously very primitive... oh, you could get an upgraded ROM from
# Synertek for some incredible amount of money, but what hacker with an
# EPROM burner would do that? :)
#
# Sorry I don't have any contact info; I believe they were located in
# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
# business these days.
#

# Tested, seems to work fine with vi.
synertek|ktm|synertek380|Synertek KTM 3/80 tubeless terminal,
	am,
	cols#80, lines#24,
	clear=^Z, cub1=^H, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,

#### Tab Office Products
#
#	TAB Products Co. - Palo Alto, California
#	Electronic Office Products,
#	1451 California Avenue 94304
#
# I think they're out of business.
#

# The tab 132 uses xon/xoff, so no padding needed.
# <smkx>/<rmkx> have nothing to do with arrow keys.
# <is2> sets 80 col mode, normal video, autowrap on (for <am>).
# Seems to be no way to get rid of status line.
# The manual for this puppy was dated June 1981.  It claims to be VT52-
# compatible but looks more vt100-like.
tab132|tab|tab132-15|tab 132/15,
	da, db,
	OTdN@, cols#80, lines#24, lm#96,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
	il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B,
	kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@,
	use=vt100+4bsd,
tab132-w|tab132 in wide mode,
	cols#132,
	is2=\E[?7h\E[?3h\E[?5l, use=tab132,
tab132-rv|tab132 in reverse-video mode,
	is2=\E[?7h\E[?3l\E[?5h, use=tab132,
tab132-w-rv|tab132 in reverse-video/wide mode,
	is2=\E[?7h\E[?3h\E[?5h, use=tab132-w,


#### Teleray
#
#	Research Incorporated
#	6425 Flying Cloud Drive
#	Eden Prairie, MN 55344
#	Vox: (612)-941-3300
#
# The Teleray terminals were all discontinued in 1992-93.  RI still services
# and repairs these beasts, but no longer manufactures them.  The Teleray
# people believe that all the types listed below are very rare now (1995).
# There was a newer line of Telerays (Model 7, Model 20, Model 30, and
# Model 100) that were ANSI-compatible.
#
# Note two things called "teleray".  Reorder should move the common one
# to the front if you have either.  A dumb Teleray with the cursor stuck
# on the bottom and no obvious model number is probably a 3700.
#

t3700|dumb Teleray 3700,
	OTbs,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ind=\n,
t3800|Teleray 3800 series,
	OTbs,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
	home=\EH, ht=^I, ind=\n, ll=\EY7\s,
t1061|teleray|Teleray 1061,
	OTbs, am, km, xhp, xt,
	cols#80, it#8, lines#24, xmc#1,
	bel=^G, clear=\014$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
	dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF,
	ich1=\EP, il1=\EL$<2*>, ind=\n, ip=$<0.4*>,
	is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5
	    \EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef,
	kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7,
	kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH,
	tbc=\EG,
t1061f|Teleray 1061 with fast PROMs,
	dl1=\EM, il1=\EL, ip@, use=t1061,
# "Teleray Arpa Special", officially designated as
# "Teleray Arpa network model 10" with "Special feature 720".
# This is the new (1981) fast microcode updating the older "arpa" proms
# (which gave meta-key and programmable-fxn keys).  720 is much much faster,
# converts the keypad to programmable function keys, and has other goodies.
# Standout mode is still broken (magic cookie, etc) so is suppressed as no
# programs handle such lossage properly.
# Note: this is NOT the old termcap's "t1061f with fast proms."
# From: J. Lepreau <lepreau@utah-cs> Tue Feb  1 06:39:37 1983, Univ of Utah
# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr)
t10|Teleray 10 special,
	OTbs, km, xhp, xt,
	cols#80, it#8, lines#24, xmc#2,
	clear=\Ej$<30/>, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
	dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
	ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD,
	smul=\ERH,
# Teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and
# back/forth words. Put the function keys (f1-f10) where they can be
# found, and turn off the other magic keys along the top row, except
# for line/local. Do the magic appropriate to make the page shifts work.
# Also toggle ^S/^Q for those of us who use Emacs.
t16|Teleray 16,
	am, da, db, mir, xhp, xt,
	cols#80, lines#24,
	bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L,
	ind=\n, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
	kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T,
	rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smcup=\E[U\E[?38l, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

#### Texas Instruments (ti)
#

# The Silent 700 was so called because it was built around a quiet thermal
# printer.  It was portable, equipped with an acoustic coupler, and pretty
# neat for its day.
ti700|ti733|ti735|ti745|ti800|Texas Instruments Silent 700/733/735/745 or OMNI 800,
	OTbs, hc, os,
	cols#80,
	bel=^G, cr=\r$<162>, cub1=^H, cud1=\n, ind=\n,

# Terminal entries for the Texas Instruments 703/707
# hardcopy terminals.
#
# http://www.bitsavers.org/pdf/ti/terminal/silent_700/
# Refer to:
#	Model 707 Data Terminal User's Manual
#	http://www.bitsavers.org/pdf/ti/terminal/silent_700/2310451-0001_Silent_700_Model_707_Users_Manual_Nov1983.pdf
#
# pages 2-7 and 2-8 say that the model 707 prints 10.2 characters per inch
# (cpi) (80 characters per line) by default, and can be switched to/from 17.0
# cpi using an escape sequence.  There is no 80/132-column capability in
# terminfo (only the more general cpi which allows any value).
ti703|ti707|Texas Instruments Silent 703/707,
	am, xenl,
	it#8,
	cuf1=\s, is2=\EPC\\, nel=\r\n, use=ti700,
ti703-w|ti707-w|Texas Instruments Silent 703/707,
	cols#132,
	is2=\EPD\\, use=ti703,

#
# Texas Instruments 916 VDT 7 bit control mode
#
ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
	da, db, in, msgr,
	cbt=\E[Z, clear=\E[H\E[2J$<6>, cub=\E[%p1%dD,
	cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, dch=\E[%p1%dP$<250>, dch1=\E[P,
	dl=\E[%p1%dM, ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K,
	el1=\E[1K, enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
	hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>,
	il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H,
	kcmd=\E[29~, kdch1=\E[P, kent=\n, kf1=\E[17~, kf10=\E[28~,
	kf11=\E[29~, kf12=\E[31~, kf2=\E[18~, kf3=\E[19~,
	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
	kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T,
	kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@,
	smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
	use=vt220,
#
# Texas Instruments 916 VDT 8 bit control mode
#
ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL,
	kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
	kcuu1=\233A, kdch1=\233P, kent=\n, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
	kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
	kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
#
ti916-132|Texas Instruments 916 VDT vt220 132 column,
	cols#132, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode
#
ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column,
	cols#132, use=ti916-8,
ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
	OTbs, am, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r,
	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kich1=\E[@, rc=\E8, rev=\E[7m,
	ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=vt220+cvis,
ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL,
	am, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r,
	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\233P, kf1=\217P, kf2=\217Q,
	kf3=\217R, kf4=\217S, kf5=\23316~, kf6=\23317~,
	kf7=\23318~, kf8=\23319~, kf9=\23320~, kich1=\233@, rc=\E8,
	rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt220+cvis,
ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode,
	cols#132, use=ti924,
ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
	cols#132, use=ti924-8,
ti931|Texas Instruments 931 VDT,
	OTbs, am, xon,
	cols#80, lines#24,
	bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=\r, cub1=\ED,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
	ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
	is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
	kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
	kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
	sgr0=\E4@, smso=\E4A, smul=\E4D,
ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
	csr@, ind=\E[1S, ri=\E[1T, use=ti924,
# (ti926-8: I corrected this from the broken SCO entry -- esr)
ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL,
	csr@, ind=\2331S, ri=\2331T, use=ti924-8,
ti_ansi|basic entry for ti928,
	am, bce, eo, xenl, xon,
	colors#8, cols#80, it#8, lines#25, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
	cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
	il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
	kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
	kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
	op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m,
#
#       928 VDT 7 bit control mode
#
ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
	kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~,
	kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~,
	kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~,
	kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
	kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
#
#       928 VDT 8 bit control mode
#
ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
	kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~,
	kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~,
	kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~,
	kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S,
	kpp=\233T, kprt=\23335~, use=ti_ansi,

#### Zentec (zen)
#

# (zen30: removed obsolete :ma=^L ^R^L^K^P:.  This entry originally
# had just <smso>=\EG6 which I think means standout was supposed to be
# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
# <invis> might work-- esr)
zen30|z30|Zentec 30,
	OTbs, am, mir, ul,
	cols#80, lines#24,
	bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^,
	il1=\EE$<1.5*>, ind=\n, rmir=\Er, rmul@, smir=\Eq, smso=\EG6,
	smul@, use=adm+sgr,
# (zen50: this had extension capabilities
#	:BS=^U:CL=^V:CR=^B:
# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
# which were also in the original entry -- esr)
# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
zen50|z50|Zentec Zephyr,
	OTbs, am,
	cols#80, lines#24, xmc#1,
	clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE,
	invis@, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
	rmul@, smul@, use=adm+sgr,

# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
cci|cci1|z8001|zen8001|CCI Custom Zentec 8001,
	OTbs, am, bw,
	cols#80, lines#24,
	blink=\EM", clear=\EH\EJ, cnorm=\EP,
	csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\n,
	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH,
	invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
	rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
	smso=\EM$, smul=\EM0,

######## OBSOLETE UNIX CONSOLES
#

#### Apollo consoles
#
# Apollo got bought by Hewlett-Packard.  The Apollo workstations are
# labeled HP700s now.
#

# From: Gary Darland <goodmanc@garnet.berkeley.edu>
apollo|Apollo console,
	OTbs, am, mir,
	cols#88, lines#53,
	clear=^L, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL,
	ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED,
	rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ,
	smso=\ES, smul=\EU, vpa=\EO+\s,

# We don't know whether or not the apollo guys replicated DEC's firmware bug
# in the VT132 that reversed <rmir>/<smir>.  To be on the safe side, disable
# both these capabilities.
apollo_15P|Apollo 15 inch display,
	rmir@, smir@, use=vt132,
apollo_19L|Apollo 19 inch display,
	rmir@, smir@, use=vt132,
apollo_color|Apollo color display,
	rmir@, smir@, use=vt132,

#### AT&T consoles

# This actually describes the generic SVr4 display driver for Intel boxes.
# The <dim=\E[2m> isn't documented and therefore may not be reliable.
# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
att6386|at386|386at|AT&T WGS 6386 console,
	am, bw, eo, xon,
	cols#80, it#8, lines#25,
	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C,
	clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, 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, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, invis=\E[9m,
	is2=\E[0;10;39m, kbs=^H, kcbt=^], kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kend=\E[Y, kf1=\EOP,
	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX,
	khome=\E[H, kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0,
	nel=\r\E[S, rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m,
	rmso=\E[m, rmul=\E[m, sc=\E7,
	sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;
	    2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
	sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, vpa=\E[%i%p1%dd, use=ecma+index,
	use=klone+color,
# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
pc6300plus|AT&T 6300 plus,
	OTbs, am, xon,
	cols#80, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C,
	clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
	dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K,
	home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=\n,
	invis=\E[9m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOc, kf10=\EOu, kf2=\EOd, kf3=\EOe,
	kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\EOk,
	nel=\r\n, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g,

# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
#
# I have a UNIX PC which I use as a terminal attached to my Linux PC.
# Unfortunately, the UNIX PC terminfo entry that comes with ncurses
# is broken. All the special key sequences are broken, making it unusable
# with Emacs. The problem stems from the following:
#
# The UNIX PC has a plethora of keys (103 of them, and there's no numeric
# keypad!), loadable fonts, and strange highlighting modes ("dithered"
# half-intensity, "smeared" bold, and real strike-out, for example.) It also
# uses resizable terminal windows, but the bundled terminal program always
# uses an 80x24 window (and doesn't support seem to support a 132-column
# mode.)
#
# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a
# library which was a superset of SVr3.5 curses (called tam, for "terminal
# access method".) tam includes support for real, overlapping windows,
# onscreen function key labels, and bitmap graphics. But since the primary
# user interface on the UNIX PC was a GUI program (ua, for "user
# assistant",) and remote administration was considered important for the
# machine, tam also supported VT100-compatible terminals attached to the
# serial port or used across the StarLan network. To simulate the extra keys
# not present on a VT100, users could press ESC and a two-letter sequence,
# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
# however, were not the same as those sent by the actual Undo key. The
# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
# (If you're interested in adding some of the tam calls to ncurses, btw, I
# have the full documentation and several programs which use tam. It also
# used an extended terminfo format to describe key sequences, special
# highlighting modes, etc.)
#
# KEYS: This means that ncurses would quite painful on the UNIX PC, since
# there are two sequences for every key-modifier combination (local keyboard
# sequence and remote "VT100" sequence.) But I doubt many people are trying
# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the
# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
# seem to have been built from the manual describing the VT100 sequences.
# This means it doesn't work for a real live UNIX PC.
#
# FONTS: The UNIX PC also has a strange interpretation of "alternate
# character set". Rather than the VT100 graphics you might expect, it allows
# up to 8 custom fonts to be loaded at any given time. This means that
# programs expecting VT100 graphics will usually be disappointed. For this
# reason I have disabled the smacs/rmacs sequences, but they could easily be
# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
# manpage), should you wish to do so:
#
# SGR10 - Select font 0 - ESC [ 10 m or SO
# SGR11 - Select font 1 - ESC [ 11 m or SI
# SGR12 - Select font 2 - ESC [ 12 m
# ... (etc.)
# SGR17 - Select font 7 - ESC [ 17 m
#
# Graphics for line drawing are not reliably found at *any* character
# location because the UNIX PC has dynamically reloadable fonts. I use font
# 0 for regular text and font 1 for italics, but this is by no means
# universal. So ASCII line drawing is in order if smacs/rmacs are enabled.
#
# MISC: The cursor visible/cursor invisible sequences were swapped in the
# distributed terminfo.
#
# To ameliorate these problems (and fix a few highlighting bugs) I rewrote
# the UNIX PC terminfo entry. The modified version works great with Lynx,
# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC
# attached by serial cable. In Emacs, even the Undo key works, and many
# applications can now use the F1-F8 keys.
#
# esr's notes:
#	Terminfo entry for the AT&T Unix PC 7300
#	from escape(7) in Unix PC 7300 Manual.
#	Somewhat similar to a vt100-am (but different enough
#	to redo this from scratch.)
#
#	/***************************************************************
#	*
#	*           FONT LOADING PROGRAM FOR THE UNIX PC
#	*
#	*     This routine loads a font defined in the file ALTFONT
#	*     into font memory slot #1.  Once the font has been loaded,
#	*     it can be used as an alternative character set.
#	*
#	*     The call to ioctl with the argument WIOCLFONT is the key
#	*     to this routine.  For more information, see window(7) in
#	*     the PC 7300 documentation.
#	***************************************************************/
#	#include <string.h>		/* needed for strcpy call */
#	#include <sys/window.h>         /* needed for ioctl call */
#	#define FNSIZE	60		/* font name size */
#	#define ALTFONT  "/usr/lib/wfont/special.8.ft"  /* font file */
#	/*
#	*     The file /usr/lib/wfont/special.8.ft comes with the
#	*     standard PC software.  It defines a graphics character set
#	*     similar to that of the Teletype 5425 terminal.  To view
#	*     this or other fonts in /usr/lib/wfont, use the command
#	*     cfont <filename>.  For further information on fonts see
#	*     cfont(1) in the PC 7300 documentation.
#	*/
#
#	struct altfdata		/* structure for alt font data */
#	{
#	short	altf_slot;		/* memory slot number */
#	char	altf_name[FNSIZE];	/* font name (file name) */
#	};
#	ldfont()
#	{
#		int wd;		/* window in which altfont will be */
#		struct altfdata altf;
#		altf.altf_slot=1;
#		strcpy(altf.altf_name,ALTFONT);
#		for (wd =1; wd < 12; wd++) {
#		     ioctl(wd, WIOCLFONT,&altf);
#	        }
#	}
#
# (att7300: added <civis>/<cnorm>/<ich1>/<invis> from the BSDI entry,
# they're confirmed by the man page for the System V display---esr)
#
att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
	am, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C,
	clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD,
	cub1=^H, 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, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\n, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
	kCAN=\EOW, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE,
	kEND=\ENN, kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM,
	kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR,
	kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
	kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
	kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
	ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
	kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
	kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
	kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
	kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
	kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
	ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
	rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
	smul=\E[4m,

#### Convergent Technology
#
# Burroughs bought Convergent shortly before it merged with Univac.
# CTOS is (I believe) dead.  Probably the aws is too (this entry dates
# from 1991 or earlier).
#

# Convergent AWS workstation from Gould/SEL UTX/32 via BRL
# (aws: removed unknown :dn=^K: -- esr)
aws|Convergent Technologies AWS workstation under UTX and Xenix,
	am,
	OTug#0, cols#80, lines#28, xmc#0,
	OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=\n, acsc=,
	clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A,
	dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c,
	ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K,
	kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF,
	rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN,
	vpa=\EV%p1%c,
awsc|Convergent Technologies AWS workstation under CTOS,
	am,
	OTug#0, cols#80, lines#24, xmc#0,
	OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L,
	cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF,
	el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A,
	rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE,
	smul=\EAC,

#### DEC consoles
#

# The MicroVax console.  Tim Theisen <tim@cs.wisc.edu> writes:
# The digital uVax II's had a graphic display called a qdss.  It was
# supposed to be a high performance graphic accelerator, but it was
# late to market and barely appeared before faster dumb frame buffers
# appeared.  I have only used this display while running X11.  However,
# during bootup, it was in text mode, and probably had a terminal emulator
# within it.  And that is what your termcap entry is for.  In graphics
# mode the screen size is 1024x864 pixels.
qdss|qdcons|qdss glass tty,
	OTbs, am,
	cols#128, lines#57,
	clear=\032$<1/>, cub1=^H, cud1=\n, cuf1=^L,
	cup=\E=%p1%c%p2%c, cuu1=^K,

#### Fortune Systems consoles
#
# Fortune made a line of 68K-based UNIX boxes that were pretty nifty
# in their day; I (esr) used one myself for a year or so around 1984.
# They had no graphics, though, and couldn't compete against Suns and
# the like.  R.I.P.
#

# From: Robert Nathanson <c160-3bp@Coral> via tut   Wed Oct 5, 1983
# (This had extension capabilities
#	:rv=\EH:re=\EI:rg=0:GG=0:\
#	:CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\
#	:RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\
#	:PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F:
# It had both ":bs:" and ":bs=^H:"; I removed the latter.  Also, it had
# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily)
# to force both magic cookie glitches off.  Once upon a time, I
# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are
# function keys; thus the "Al" value for HM was certainly an error.  I renamed
# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC.
# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent
# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard
# names below.  I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
fos|fortune|Fortune system,
	OTbs, am, bw,
	cols#80, lines#25,
	acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E],
	clear=\014$<20>, cnorm=\E\\, cr=\r, cub1=^H, cud1=\n$<3>,
	cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>,
	cvvis=\E:, dch1=\034W$<5>, dl1=\034R$<15>, ed=\034Y$<3*>,
	el=^\Z, home=\036$<10>, ht=^Z, ich1=\034Q$<5>,
	il1=\034E$<15>, ind=\n, is2=^_.., kbs=^H, kcub1=^Aw\r,
	kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r, kend=^Ak\r,
	kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r, kf4=^Ad\r,
	kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r, khome=^A?\r,
	knp=^Ao\r, kpp=^An\r, nel=\r\n, rev=\EH, rmacs=^O, rmso=^\I`,
	rmul=^\IP, sgr0=\EI, smacs=\Eo, smso=^\H`, smul=^\HP,

#### Masscomp consoles
#
# Masscomp has gone out of business.  Their product line was purchased by a
# company in Georgia (US) called "XS International", parts and service may
# still be available through them.
#

# (masscomp: ":MT:" changed to ":km:";  -- esr)
masscomp|masscomp workstation console,
	OTbs, km, mir,
	cols#80, it#8, lines#24,
	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
	rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
masscomp1|masscomp large screen version 1,
	cols#104, lines#36, use=masscomp,
masscomp2|masscomp large screen version 2,
	cols#64, lines#21, use=masscomp,

#### OSF Unix
#

# OSF/1 1.1 Snapshot 2
pmcons|pmconsole|PMAX console,
	am,
	cols#128, lines#57,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ht=^I,
	ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,

#### Other consoles
# The following is a version of the ibm-pc entry distributed with PC/IX,
# (Interactive Systems' System 3 for the Big Blue), modified by Richard
# McIntosh at UCB/CSM.  The :pt: and :uc: have been removed from the original,
# (the former is untrue, and the latter failed under UCB/man); standout and
# underline modes have been added.  Note: this entry describes the "native"
# capabilities of the PC monochrome display, without ANY emulation; most
# communications packages (but NOT PC/IX connect) do some kind of emulation.
pcix|PC/IX console,
	am, bw, eo,
	cols#80, lines#24,
	clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m,

# (ibmpcx: this entry used to be known as ibmx.
# It formerly included the following extension capabilities:
#	:GC=b:GL=v:GR=t:RT=^J:\
#	:GH=\E[196g:GV=\E[179g:\
#	:GU=\E[193g:GD=\E[194g:\
#	:G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
#	:CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
#	:WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
# ":kh=\E[Y:".  Added IBM-PC forms characters and highlights, they match
# what was there before. -- esr)
ibmpcx|xenix|ibmx|IBM PC xenix console display,
	OTbs, am, msgr,
	cols#80, lines#25,
	clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
	kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
	kpp=\E[Z, use=klone+acs, use=klone+sgr8,

######## OTHER OBSOLETE TYPES
#
# These terminals are *long* dead -- these entries are retained for
# historical interest only.
#

#### Obsolete non-ANSI software emulations
#

# CTRM terminal emulator
# 1. underlining is not allowed with colors: first, is is simulated by
# black on white, second, it disables background color manipulations.
# 2. BLINKING, REVERSE and BOLD are allowed with colors,
# so we have to save their status in the static registers A, B and H
# respectively, to be able to restore them when color changes
# (because any color change turns off ALL attributes)
# 3. <bold> and <rev> sequences alternate modes,
# rather than simply  entering them.  Thus we have to check the
# static register B and H to determine the status, before sending the
# escape sequence.
# 4. <sgr0> now must set the status of all 3 register (A,B,H) to zero
# and then reset colors
# 5. implementation of the protect mode would badly penalize the performance.
# we would have to use \E&bn sequence to turn off colors (as well as all
# other attributes), and keep the status of protect mode in yet another
# static variable.  If someone really needs this mode, they would have to
# create another terminfo entry.
# 6. original color-pair is white on black.
# store the information about colors into static registers
# 7. set foreground color.  it performs the following steps.
#   1) turn off all attributes
#   2) turn on the background and video attributes that have been turned
#      on before (this information is stored in static registers X,Y,Z,A,B,H,D).
#   3) turn on foreground attributes
#   4) store information about foreground into U,V,W static registers
# 8. turn on background: similar to turn on foreground above
ctrm|C terminal emulator,
	am, bce, xon,
	colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0,
	pairs#63, pb#19200, vt#6,
	bel=^G, blink=\E&dA%{1}%PA,
	bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei,
	clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM,
	ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1,
	il1=\EL, ind=\n, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
	kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r,
	kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r,
	kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r,
	op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV
	   %{1}%PU,
	rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA,
	setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t
	     \E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb
	     %{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1
	     %{4}%&%t\E&br%{1}%e%{0}%;%PX,
	setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t
	     \E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB
	     %{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1
	     %{4}%&%t\E&bR%{1}%e%{0}%;%PU,
	sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB
	    %{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2
	    %t\E&dD%;,
	sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB,
	smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,

# gs6300 - can't use blue foreground, it clashes with underline;
# it's simulated with cyan
# Bug: The <op> capability probably resets attributes.
# (gs6300: commented out <rmln> (no <smln>) --esr)
gs6300|emots|AT&T PC6300 with EMOTS terminal emulator,
	am, bce, msgr, xon,
	colors#8, cols#80, it#8, lines#24, pairs#63,
	acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyz
	     z{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
	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, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s,
	kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s,
	khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
	ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
	setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
	sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,

# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
# MS-Kermit with Heath-19 emulation mode enabled
# (h19k: changed ":pt@:" to ":it@"
h19k|h19kermit|Heathkit emulation provided by Kermit (no auto margin),
	am@, da, db, xt,
	it@,
	ht@, use=h19-u,

# Apple Macintosh with VersaTerm, a terminal emulator distributed by Synergy
# Software (formerly Peripherals Computers & Supplies, Inc) of
# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376.  They can
# also be reached at support@synergy.com.
versaterm|VersaTerm vt100 emulator for the Macintosh,
	am, xenl,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
	dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, ed=\E[J$<50/>,
	el=\E[K$<3/>, home=\E[H, ht=^I, ich1=\E[1@$<7/>,
	il1=\E[1L$<9/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
	rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>,
	sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>,
	smul=\E[4m$<2/>,

# From: Rick Thomas <ihnp4!btlunix!rbt>
# (xtalk: I added <rmam>/<smam> based on the init string.
xtalk|IBM PC with xtalk communication program (versions up to 3.4),
	am, mir, msgr, xon,
	cols#80, it#8, lines#24, vt#3, xmc#1,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>,
	el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L$<99>, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m\s,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
	smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
	tbc=\E[3g, use=vt100+fnkeys,

# The official PC terminal emulator program of the AT&T Product Centers.
# Note - insert mode commented out - doesn't seem to work on AT&T PC.
simterm|attpc running simterm,
	am,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER,
	dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=\n, rmcup=\EVE,
	rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB,

#### Daisy wheel printers
#
# This section collects Diablo, DTC, Xerox, Qume, and other daisy
# wheel terminals.  These are now largely obsolete.
#

# (diablo1620: removed <if=/usr/share/tabset/xerox1720>, no such file -- esr)
diablo1620|diablo1720|diablo450|ipsi|Diablo 1620,
	hc, os,
	cols#132, it#8,
	cub1=^H, cud1=\n, cuu1=\E\n, hd=\ED, hpa=\E\011%i%p1%c,
	ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2,
diablo1620-m8|diablo1640-m8|Diablo 1620 w/8 column left margin,
	cols#124,
	is2=\r        \E9, use=diablo1620,
# (diablo1640: removed <if=/usr/share/tabset/xerox1730>, no such file -- esr)
diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|Diablo 1640,
	bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE,
	use=diablo1620,
# (diablo1640-lm: removed <if=/usr/share/tabset/xerox1730-lm>, no such
# file -- esr)
diablo1640-lm|diablo-lm|xerox-lm|Diablo 1640 with indented left margin,
	cols#124,
	rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620,
diablo1740-lm|630-lm|1730-lm|x1700-lm|Diablo 1740 printer,
	use=diablo1640-lm,
# DTC 382 with VDU.  Has no <ed> so we fake it with <el>.  Standout
# <smso=^P\s\002^PF> works but won't go away without dynamite <rmso=^P\s\0>.
# The terminal has tabs, but I'm getting tired of fighting the braindamage.
# If no tab is set or the terminal's in a bad mood, it glitches the screen
# around all of memory.  Note that return puts a blank ("a return character")
# in the space the cursor was at, so we use ^P return (and thus ^P newline for
# newline).  Note also that if you turn off :pt: and let Unix expand tabs,
# curses won't work (some old BSD versions) because it doesn't clear this bit,
# and cursor addressing sends a tab for row/column 9.  What a losing terminal!
# I have been unable to get tabs set in all 96 lines - it always leaves at
# least one line with no tabs in it, and once you tab through that line,
# it completely weirds out.
# (dtc382: change <rmcup> to <smcup> -- it  just does a clear --esr)
dtc382|DTC 382,
	am, da, db, xhp,
	cols#80, lines#24, lm#96,
	bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P\r, cub1=^H,
	cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB,
	dch1=^X, dl1=^P^S, ed=^P^U^P^S^P^S, el=^P^U, home=^P^R,
	il1=^P^Z, ind=\n, pad=^?, rmcup=, rmir=^Pi, rmul=^P \0,
	smcup=\020\035$<20>, smir=^PI, smul=^P ^P,
dtc300s|DTC 300s,
	hc, os,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
	hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3,
gsi|mystery gsi terminal,
	hc, os,
	cols#132,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH,
	ind=\n,
aj830|aj832|aj|Anderson Jacobson,
	hc, os,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8,
	ind=\n,
# From: Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST
aj510|Anderson-Jacobson model 510,
	am, mir,
	cols#80, lines#24,
	clear=^L, cub1=^H, cuf1=\EX,
	cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY,
	dch1=\E'D$<.1*>, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=,
	il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ,
	kcuf1=\EX, kcuu1=\EY, pad=^?, rmcup=\E"N, rmir=\E'J,
	rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I,
	smul=\E"U,
# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
# This is incomplete, but it's a start.
nec5520|nec|spinwriter|NEC 5520,
	hc, os,
	cols#132, it#8,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E9, ff=^L,
	hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=\n,
	kbs=^H, tbc=\E3,
qume5|qume|Qume Sprint 5,
	hc, os,
	cols#80, it#8,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
	hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3,
# I suspect the Xerox 1720 is the same as the Diablo 1620.
xerox1720|x1720|x1750|Xerox 1720,
	hc, os,
	cols#132, it#8,
	bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ht=^I, hts=\E1, ind=\n,
	tbc=\E2,

#### Miscellaneous obsolete terminals, manufacturers unknown
#
# If you have any information about these (like, a manufacturer's name,
# and a date on the serial-number plate) please send it!

cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars,
	OTbs, am,
	cols#73, lines#36,
	clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^,
cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars,
	OTbs, am,
	cols#85, lines#39,
	clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3,
	kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7,
	kf4=\E8, rmso=\Em^C, smso=\Em^L,
cops10|cops|cops-10|cops 10,
	am, bw,
	cols#80, lines#24,
	bel=^G, clear=\030$<30/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V,
	ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
	khome=^Y,

# http://www.bitsavers.org/pdf/datapro/alphanumeric_terminals/Datapro_C25_Datagraphix.pdf
#
# DatagraphiX, Inc.
# (a subsidiary of General Dynamics),
# P.O. Box 82449, San Diego, California 92138.
#
# (d132: removed duplicate :ic=\E5:,
# merged in capabilities from a BRL entry -- esr)
d132|datagraphix|DatagraphiX 132a,
	da, db, in,
	cols#80, lines#30,
	bel=^G, clear=^L, cnorm=\Em\En, cr=\r, cub1=^H, cud1=\n,
	cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex,
	dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=\n, kbs=^H,
	kcub1=^H, kcud1=\n, nel=\r\n, ri=\Ew,
# The d800 was an early portable terminal from c.1984-85 that looked a lot
# like the original Compaq `lunchbox' portable (but no handle).  It had a vt220
# mode (which is what this entry looks like) and several other lesser-known
# emulations.
d800|Direct 800/A,
	OTbs, am, da, db, msgr, xhp,
	cols#80, it#8, lines#24,
	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
	bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=\r, cub1=^H,
	cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	cvvis=\E[>12l, ed=\E[J, el=\E[K, ht=^I, ind=\ED, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
	ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smacs=\E[1m, smso=\E[7m, smul=\E[4m,
digilog|digilog 333,
	OTbs,
	cols#80, lines#16,
	bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=^I, cuu1=^O, el=^X,
	home=^N, ind=\n,
# The DWK was a terminal manufactured in the Soviet Union c.1986
dwk|dwk-vt|dwk terminal,
	am,
	cols#80, it#8, lines#24,
	acsc=+\^\,Q-S.M0\177`+a:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~
	     _,
	bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
	ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=\n, kbs=^?,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
	kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
	kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh,
	kpp=\Eg, nel=\r\n, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
	sgr0=\EX, smacs=\EF, smso=\ET,
env230|envision230|envision 230 graphics terminal,
	xenl@,
	enacs@, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rmacs@,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;
	    1%;m$<2>,
	sgr0=\E[0m$<2>, smacs@, smso=\E[7m, use=vt100+4bsd,
# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
# coupler attached, the whole rig fitting in a suitcase and more or less
# portable.  Hot stuff for c.1977 :-) -- esr
ep48|ep4080|execuport 4080,
	OTbs, am, os,
	cols#80,
	bel=^G, cr=\r, cub1=^H, cud1=\n, hd=^\, hu=^^, ind=\n,
ep40|ep4000|execuport 4000,
	cols#136, use=ep4080,
# Adam Thompson <athompso@pangea.ca> tells us:
# Informer series - these are all portable units, resembling older
# automatic bread-baking machines.  The terminal looks like a `clamshell'
# design, but isn't.  The structure is similar to the Direct terminals,
# but only half the width.  The entire unit is only about 10" wide.
# It features an 8" screen (6" or 7" if you have color!), and an 9"x6"
# keyboard.  All the keys are crammed together, much like some laptop
# PCs today, but perhaps less well organized...all these units have a
# bewildering array of plugs on the back, including a built-in modem.
# The 305 was a color version of the 304; the 306 and 307 were mono and
# color terminals built for IBM bisync protocols.
# From: Paul Leondis <unllab@amber.berkeley.edu>
ifmr|Informer D304,
	OTbs, am,
	cols#80, lines#24,
	clear=\EZ, cub1=^H, cud1=\n, cuf1=\EC,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\,
	ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK,
	smso=\EJ,
# Entry largely based on wy60 and has the features of wy60ak.
opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
	am, bw, hs, km, mir, msgr, ul, xon,
	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=\r,
	cub1=^H, cud1=\n, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K,
	dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r,
	ed=\EY$<100>, el=\ET, fsl=\r, home=\036$<2>, ht=\011$<5>,
	hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=\n,
	ip=$<3>,
	is2=\E`:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B
	    \177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F
	    \177\EA1*\EZH12,
	kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
	mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
	rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
	rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
	rs3=\EwG\Ee($<150>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2
	    %t%{8}%|%;%?%p1%p3%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|
	    %t%{64}%|%;%?%p7%t%{1}%|%;%c,
	sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
	smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177
	      \Ezz<\E[Q\177,
	smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
	uc=\EG8\EG0, use=adm+sgr,
teletec|Teletec Datascreen,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^K,
	home=^^, ind=\n,
# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
# This description is for the LANPAR Technologies VISION 3220
# terminal from 1984/85.  The function key definitions k0-k5 represent the
# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys.
#
# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
# I had a couple of scopes (3221) like this once where I used to work, around
# the 1987 time frame if memory serves me correctly.  These scopes were made
# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
# compatible.  The 3220 was a plain text terminal like the VT-220, the 3221
# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
# was like the VT-241 (color with Regis + Sixel Graphics).  These terminals
# (3221) cost about $1500 each, and one was always broken -- had to be sent
# back to the shop for repairs.
# The only real advantage these scopes had over the VT-240's were:
# 1) They were faster in the Regis display, or at least the ones I did
# 2) They had a handy debugging feature where you could split-screen the
# scope, the graphics would appear on the top, and the REGIS commands would
# appear on the bottom.  I don't remember the VT-240s being able to do that.
# I would swear that LANPAR Technologies was in MA someplace, but since I
# don't work at the same place anymore, and those terminals and manuals were
# long since junked, I cannot be any more sure than that.
#
# (v3220: removed obsolete ":kn#10:",
# I added <rmam>/<smam> based on the init string -- esr)
v3220|LANPAR Vision II model 3220/3221/3222,
	OTbs, am, mir, xenl,
	cols#80, it#8, lines#24,
	clear=\E[H\E[J, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
	is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
	kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
	kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
######## ICH/ICH1 VERSUS RMIR/SMIR
#
# Some non-curses applications get confused if both ich/ich1 and rmir/smir
# are present; the symptom is doubled characters in an update using insert.
# These applications are technically correct; in both 4.3BSD termcap and
# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir
# unless the terminal needs both.  To my knowledge, no terminal still in this
# file requires both other than the very obsolete dm2500.
#
# For ncurses-based applications this is not a problem, as ncurses uses
# one or the other as appropriate but never mixes the two.  Therefore we
# have not corrected entries like `linux' and `xterm' that specify both.
# If you see doubled characters from these, use the linux-nic and xterm-nic
# entries that suppress ich/ich1.  And upgrade to ncurses!
#

######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS
#
# ANSI X3.64 has been withdrawn and replaced by ECMA-48.  The ISO 6429 and
# ECMA-48 standards are said to be almost identical, but are not the same
# as X3.64 (though for practical purposes they are close supersets of it).
#
# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch
# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for
# Coded Character Sets"), include your snail-mail address, and you should
# receive the document in due course.  Don't expect an email acknowledgment.
#
# Related standards include "X3.4-1977: American National Standard Code for
# Information Interchange" (the ASCII standard) and "X3.41.1974:
# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of
# American National Standard for Information Interchange."  I believe (but
# am not certain) that these are effectively identical to ECMA-6 and ECMA-35
# respectively.
#

#### VT100/ANSI/ECMA-48
#
# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
# and ECMA-48 Control Functions for Coded Character Sets.
#
# Much of the content of this comment is adapted from a table prepared by
# Richard Shuford, based on a 1984 Byte article.  Terminfo correspondences,
# discussion of some terminfo-related issues, and updates to capture ECMA-48
# have been added.  Control functions described in ECMA-48 only are tagged
# with * after their names.
#
# The table is a complete list of the defined ANSI X3.64/ECMA-48 control
# sequences.  In the main table, \E stands for an escape (\033) character,
# SPC for space.  Pn stands for a single numeric parameter to be inserted
# in decimal ASCII.  Ps stands for a list of such parameters separated by
# semicolons.  Parameter meanings for most parameterized sequences are
# described in the notes.
#
# Sequence     Sequence                             Parameter   or
# Mnemonic     Name              Sequence           Value      Mode   terminfo
# -----------------------------------------------------------------------------
# APC  Applicatn Program Command \E _                -         Delim  -
# BEL  Bell *                    ^G                  -         -      bel
# BPH  Break Permitted Here *    \E B                -         *      -
# BS   BackSpace *               ^H                  -         EF     -
# CAN  Cancel *                  ^X                  -         -      -   (A)
# CBT  Cursor Backward Tab       \E [ Pn Z           1         eF     cbt
# CCH  Cancel Previous Character \E T                -         -      -
# CHA  Cursor Horizntal Absolute \E [ Pn G           1         eF     hpa (B)
# CHT  Cursor Horizontal Tab     \E [ Pn I           1         eF     tab (C)
# CMD  Coding Method Delimiter * \E
# CNL  Cursor Next Line          \E [ Pn E           1         eF     nel (D)
# CPL  Cursor Preceding Line     \E [ Pn F           1         eF     -
# CPR  Cursor Position Report    \E [ Pn ; Pn R      1, 1      -      -   (E)
# CSI  Control Sequence Intro    \E [                -         Intro  -
# CTC  Cursor Tabulation Control \E [ Ps W           0         eF     -   (F)
# CUB  Cursor Backward           \E [ Pn D           1         eF     cub
# CUD  Cursor Down               \E [ Pn B           1         eF     cud
# CUF  Cursor Forward            \E [ Pn C           1         eF     cuf
# CUP  Cursor Position           \E [ Pn ; Pn H      1, 1      eF     cup (G)
# CUU  Cursor Up                 \E [ Pn A           1         eF     cuu
# CVT  Cursor Vertical Tab       \E [ Pn Y           -         eF     -   (H)
# DA   Device Attributes         \E [ Pn c           0         -      -
# DAQ  Define Area Qualification \E [ Ps o           0         -      -
# DCH  Delete Character          \E [ Pn P           1         eF     dch
# DCS  Device Control String     \E P                -         Delim  -
# DL   Delete Line               \E [ Pn M           1         eF     dl
# DLE  Data Link Escape *        ^P                  -         -      -
# DMI  Disable Manual Input      \E \                -         Fs     -
# DSR  Device Status Report      \E [ Ps n           0         -      -   (I)
# DTA  Dimension Text Area *     \E [ Pn ; Pn SPC T  -         PC     -
# EA   Erase in Area             \E [ Ps O           0         eF     -   (J)
# ECH  Erase Character           \E [ Pn X           1         eF     ech
# ED   Erase in Display          \E [ Ps J           0         eF     ed  (J)
# EF   Erase in Field            \E [ Ps N           0         eF     -
# EL   Erase in Line             \E [ Ps K           0         eF     el  (J)
# EM   End of Medium *           ^Y                  -         -      -
# EMI  Enable Manual Input       \E b                          Fs     -
# ENQ  Enquire                   ^E                  -         -      -
# EOT  End Of Transmission       ^D                  -         *      -
# EPA  End of Protected Area     \E W                -         -      -   (K)
# ESA  End of Selected Area      \E G                -         -      -
# ESC  Escape                    ^[                  -         -      -
# ETB  End Transmission Block    ^W                  -         -      -
# ETX  End of Text               ^C                  -         -      -
# FF   Form Feed                 ^L                  -         -      -
# FNK  Function Key *            \E [ Pn SPC W       -         -      -
# GCC  Graphic Char Combination* \E [ Pn ; Pn SPC B  -         -      -
# FNT  Font Selection            \E [ Pn ; Pn SPC D  0, 0      FE     -
# GSM  Graphic Size Modify       \E [ Pn ; Pn SPC B  100, 100  FE     -   (L)
# GSS  Graphic Size Selection    \E [ Pn SPC C       none      FE     -
# HPA  Horz Position Absolute    \E [ Pn `           1         FE     -   (B)
# HPB  Char Position Backward    \E [ j              1         FE     -
# HPR  Horz Position Relative    \E [ Pn a           1         FE     -   (M)
# HT   Horizontal Tab *          ^I                  -         FE     -   (N)
# HTJ  Horz Tab w/Justification  \E I                -         FE     -
# HTS  Horizontal Tab Set        \E H                -         FE     hts
# HVP  Horz & Vertical Position  \E [ Pn ; Pn f      1, 1      FE     -   (G)
# ICH  Insert Character          \E [ Pn @           1         eF     ich
# IDCS ID Device Control String  \E [ SPC O          -         *      -
# IGS  ID Graphic Subrepertoire  \E [ SPC M          -         *      -
# IL   Insert Line               \E [ Pn L           1         eF     il
# IND  Index                     \E D                -         FE     -
# INT  Interrupt                 \E a                -         Fs     -
# JFY  Justify                   \E [ Ps SPC F       0         FE     -
# IS1  Info Separator #1 *       ^_                  -         *      -
# IS2  Info Separator #1 *       ^^                  -         *      -
# IS3  Info Separator #1 *       ^]                  -         *      -
# IS4  Info Separator #1 *       ^\                  -         *      -
# LF   Line Feed                 ^J                  -         -      -
# LS1R Locking Shift Right 1 *   \E ~                -         -      -
# LS2  Locking Shift 2 *         \E n                -         -      -
# LS2R Locking Shift Right 2 *   \E }                -         -      -
# LS3  Locking Shift 3 *         \E o                -         -      -
# LS3R Locking Shift Right 3 *   \E |                -         -      -
# MC   Media Copy                \E [ Ps i           0         -      -   (S)
# MW   Message Waiting           \E U                -         -      -
# NAK  Negative Acknowledge *    ^U                  -         *      -
# NBH  No Break Here *           \E C                -         -      -
# NEL  Next Line                 \E E                -         FE     nel (D)
# NP   Next Page                 \E [ Pn U           1         eF     -
# NUL  Null *                    ^@                  -         -      -
# OSC  Operating System Command  \E ]                -         Delim  -
# PEC  Pres. Expand/Contract *   \E Pn SPC Z         0         -      -
# PFS  Page Format Selection *   \E Pn SPC J         0         -      -
# PLD  Partial Line Down         \E K                -         FE     -   (T)
# PLU  Partial Line Up           \E L                -         FE     -   (U)
# PM   Privacy Message           \E ^                -         Delim  -
# PP   Preceding Page            \E [ Pn V           1         eF     -
# PPA  Page Position Absolute *  \E [ Pn SPC P       1         FE     -
# PPB  Page Position Backward *  \E [ Pn SPC R       1         FE     -
# PPR  Page Position Forward *   \E [ Pn SPC Q       1         FE     -
# PTX  Parallel Texts *          \E [ \              -         -      -
# PU1  Private Use 1             \E Q                -         -      -
# PU2  Private Use 2             \E R                -         -      -
# QUAD Typographic Quadding      \E [ Ps SPC H       0         FE     -
# REP  Repeat Char or Control    \E [ Pn b           1         -      rep
# RI   Reverse Index             \E M                -         FE     -   (V)
# RIS  Reset to Initial State    \E c                -         Fs     -
# RM   Reset Mode *              \E [ Ps l           -         -      -   (W)
# SACS Set Add. Char. Sep. *     \E [ Pn SPC /       0         -      -
# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ]       0         -      -   (X)
# SCI  Single-Char Introducer    \E Z                -         -      -
# SCO  Sel. Char. Orientation *  \E [ Pn ; Pn SPC k  -         -      -
# SCS  Set Char. Spacing *       \E [ Pn SPC g       -         -      -
# SD   Scroll Down               \E [ Pn T           1         eF     rin
# SDS  Start Directed String *   \E [ Pn ]           1         -      -
# SEE  Select Editing Extent     \E [ Ps Q           0         -      -   (Y)
# SEF  Sheet Eject & Feed *      \E [ Ps ; Ps SPC Y  0,0       -      -
# SGR  Select Graphic Rendition  \E [ Ps m           0         FE     sgr (O)
# SHS  Select Char. Spacing *    \E [ Ps SPC K       0         -      -
# SI   Shift In                  ^O                  -         -      -   (P)
# SIMD Sel. Imp. Move Direct. *  \E [ Ps ^           -         -      -
# SL   Scroll Left               \E [ Pn SPC @       1         eF     -
# SLH  Set Line Home *           \E [ Pn SPC U       -         -      -
# SLL  Set Line Limit *          \E [ Pn SPC V       -         -      -
# SLS  Set Line Spacing *        \E [ Pn SPC h       -         -      -
# SM   Select Mode               \E [ Ps h           none      -      -   (W)
# SO   Shift Out                 ^N                  -         -      -   (Q)
# SOH  Start Of Heading *        ^A                  -         -      -
# SOS  Start of String *         \E X                -         -      -
# SPA  Start of Protected Area   \E V                -         -      -   (Z)
# SPD  Select Pres. Direction *  \E [ Ps ; Ps SPC S  0,0       -      -
# SPH  Set Page Home *           \E [ Ps SPC G       -         -      -
# SPI  Spacing Increment         \E [ Pn ; Pn SPC G  none      FE     -
# SPL  Set Page Limit *          \E [ Ps SPC j       -         -      -
# SPQR Set Pr. Qual. & Rapid. *  \E [ Ps SPC X       0         -      -
# SR   Scroll Right              \E [ Pn SPC A       1         eF     -
# SRCS Set Reduced Char. Sep. *  \E [ Pn SPC f       0         -      -
# SRS  Start Reversed String *   \E [ Ps [           0         -      -
# SSA  Start of Selected Area    \E F                -         -      -
# SSU  Select Size Unit *        \E [ Pn SPC I       0         -      -
# SSW  Set Space Width *         \E [ Pn SPC [       none      -      -
# SS2  Single Shift 2 (G2 set)   \E N                -         Intro  -
# SS3  Single Shift 3 (G3 set)   \E O                -         Intro  -
# ST   String Terminator         \E \                -         Delim  -
# STAB Selective Tabulation *    \E [ Pn SPC ^       -         -      -
# STS  Set Transmit State        \E S                -         -      -
# STX  Start pf Text *           ^B                  -         -      -
# SU   Scroll Up                 \E [ Pn S           1         eF     indn
# SUB  Substitute *              ^Z                  -         -      -
# SVS  Select Line Spacing *     \E [ Pn SPC \       1         -      -
# SYN  Synchronous Idle *        ^F                  -         -      -
# TAC  Tabul. Aligned Centered * \E [ Pn SPC b       -         -      -
# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a       -         -      -
# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC `       -         -      -
# TBC  Tab Clear                 \E [ Ps g           0         FE     tbc
# TCC  Tabul. Centered on Char * \E [ Pn SPC c       -         -      -
# TSR  Tabulation Stop Remove  * \E [ Pn SPC d       -         FE     -
# TSS  Thin Space Specification  \E [ Pn SC E        none      FE     -
# VPA  Vert. Position Absolute   \E [ Pn d           1         FE     vpa
# VPB  Line Position Backward *  \E [ Pn k           1         FE     -
# VPR  Vert. Position Relative   \E [ Pn e           1         FE     -   (R)
# VT   Vertical Tabulation *     ^K                  -         FE     -
# VTS  Vertical Tabulation Set   \E J                -         FE     -
#
# ---------------------------------------------------------------------------
#
# Notes:
#
# Some control characters are listed in the ECMA-48 standard without
# being assigned functions relevant to terminal control there (they
# referred to other standards such as ISO 1745 or ECMA-35).  They are listed
# here anyway for completeness.
#
# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation.
#
# (B) There seems to be some confusion abroad between CHA and HPA.  Most
# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls
# the capability (hpa).  ECMA-48 calls this "Cursor Character Absolute" but
# preserved the CHA abbreviation.
#
# (C) CHT corresponds to terminfo (tab).  Usually it has the value ^I.
# Occasionally (as on, for example, certain HP terminals) this has the HTJ
# value.  ECMA-48 calls this "Cursor Forward Tabulation" but preserved the
# CHT abbreviation.
#
# (D) terminfo (nel) is usually \r\n rather than ANSI \EE.
#
# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR
# abbreviation.
#
# (F) CTC parameter values:
#	0 = set char tab,
#	1 = set line tab,
#	2 = clear char tab,
#	3 = clear line tab,
#	4 = clear all char tabs on current line,
#	5 = clear all char tabs,
#	6 = clear all line tabs.
#
# (G) CUP and HVP are identical in effect.  Some ANSI.SYS versions accept
# HVP, but always allow CUP as an alternate.  ECMA-48 calls HVP "Character
# Position Absolute" but retains the HVP abbreviation.
#
# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT
# abbreviation.
#
# (I) DSR parameter values:
#	0 = ready,
#	1 = busy,
#	2 = busy, will send DSR later,
#	3 = malfunction,
#	4 = malfunction, will send DSR later,
#	5 = request DSR,
#	6 = request CPR response.
#
# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters:
#	0 = clear to end,
#	1 = clear from beginning,
#	2 = clear.
#
# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation.
#
# (L) The GSM parameters are vertical and horizontal parameters to scale by.
#
# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals
# use CUF for this function and ignore HPR.  ECMA-48 calls this "Character
# Position Relative" but retains the HPR abbreviation.
#
# (N) ECMA-48 calls this "Character Tabulation" but retains the HT
# abbreviation.
#
# (O) SGR parameter values:
#	0 = default mode (attributes off),
#	1 = bold,
#	2 = dim,
#	3 = italicized,
#	4 = underlined,
#	5 = slow blink,
#	6 = fast blink,
#	7 = reverse video,
#	8 = invisible,
#	9 = crossed-out (marked for deletion),
#	10 = primary font,
#	10 + n (n in 1..9) = nth alternative font,
#	20 = Fraktur,
#	21 = double underline,
#	22 = turn off 2,
#	23 = turn off 3,
#	24 = turn off 4,
#	25 = turn off 5,
#	26 = proportional spacing,
#	27 = turn off 7,
#	28 = turn off 8,
#	29 = turn off 9,
#	30 = black fg,
#	31 = red fg,
#	32 = green fg,
#	33 = yellow fg,
#	34 = blue fg,
#	35 = magenta fg,
#	36 = cyan fg,
#	37 = white fg,
#	38 = set fg color as in CCITT T.416,
#	39 = set default fg color,
#	40 = black bg
#	41 = red bg,
#	42 = green bg,
#	43 = yellow bg,
#	44 = blue bg,
#	45 = magenta bg,
#	46 = cyan bg,
#	47 = white bg,
#	48 = set bg color as in CCITT T.416,
#	49 = set default bg color,
#	50 = turn off 26,
#	51 = framed,
#	52 = encircled,
#	53 = overlined,
#	54 = turn off 51 & 52,
#	55 = not overlined,
#	56-59 = reserved,
#	61-65 = variable highlights for ideograms.
#
# (P) SI is also called LSO, Locking Shift Zero.
#
# (Q) SI is also called LS1, Locking Shift One.
#
# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals
# use CUD for this function and ignore VPR.  ECMA calls it `Line Position
# Absolute' but retains the VPA abbreviation.
#
# (S) MC parameters:
#	0 = start xfer to primary aux device,
#	1 = start xfer from primary aux device,
#	2 = start xfer to secondary aux device,
#	3 = start xfer from secondary aux device,
#	4 = stop relay to primary aux device,
#	5 = start relay to primary aux device,
#	6 = stop relay to secondary aux device,
#	7 = start relay to secondary aux device.
#
# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD
# abbreviation.
#
# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU
# abbreviation.
#
# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
#
# (W) RM/SM modes are as follows:
#	1 = Guarded Area Transfer Mode (GATM),
#	2 = Keyboard Action Mode (KAM),
#	3 = Control Representation Mode (CRM),
#	4 = Insertion Replacement Mode (IRM),
#	5 = Status Report Transfer Mode (SRTM),
#	6 = Erasure Mode (ERM),
#	7 = Line Editing Mode (LEM),
#	8 = Bi-Directional Support Mode (BDSM),
#	9 = Device Component Select Mode (DCSM),
#	10 = Character Editing Mode (HEM),
#	11 = Positioning Unit Mode (PUM),
#	12 = Send/Receive Mode (SRM),
#	13 = Format Effector Action Mode (FEAM),
#	14 = Format Effector Transfer Mode (FETM),
#	15 = Multiple Area Transfer Mode (MATM),
#	16 = Transfer Termination Mode (TTM),
#	17 = Selected Area Transfer Mode (SATM),
#	18 = Tabulation Stop Mode (TSM),
#	19 = Editing Boundary Mode (EBM),
#	20 = Line Feed New Line Mode (LF/NL),
#	21 = Graphic Rendition Combination Mode (GRCM),
#	22 = Zero Default Mode (ZDM).
#
# The EBM and LF/NL modes have actually been removed from ECMA-48's 5th edition
# but are listed here for reference.
#
# (X) Select Alternate Presentation Variants is used only for non-Latin
# alphabets.
#
# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM).
#
# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA
# abbreviation.
#
# ---------------------------------------------------------------------------
#
# Abbreviations:
#
# Intro  an Introducer of some kind of defined sequence; the normal 7-bit
#        X3.64 Control Sequence Introducer is the two characters "Escape ["
#
# Delim  a Delimiter
#
# x/y    identifies a character by position in the ASCII table (column/row)
#
# eF     editor function (see explanation)
#
# FE     format effector (see explanation)
#
# F      is a Final character in
#             an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
#             a control sequence (F from 4/0 to 7/14)
#
# Gs     is a graphic character appearing in strings (Gs ranges from
#        2/0 to 7/14) in the ASCII table
#
# Ce     is a control represented as a single bit combination in the C1 set
#        of controls in an 8-bit character set
#
# C0     the familiar set of 7-bit ASCII control characters
#
# C1     roughly, the set of control chars available only in 8-bit systems.
#        This is too complicated to explain fully here, so read Jim Fleming's
#        article in the February 1983 BYTE, especially pages 214 through 224.
#
# Fe     is a Final character of a 2-character Escape sequence that has an
#        equivalent representation in an 8-bit environment as a Ce-type
#        (Fe ranges from 4/0 to 5/15)
#
# Fs     is a Final character of a 2-character Escape sequence that is
#        standardized internationally with identical representation in 7-bit
#        and 8-bit environments and is independent of the currently
#        designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
#
# I      is an Intermediate character from 2/0 to 2/15 (inclusive) in the
#        ASCII table
#
# P      is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
#        table
#
# Pn     is a numeric parameter in a control sequence, a string of zero or
#        more characters ranging from 3/0 to 3/9 in the ASCII table
#
# Ps     is a variable number of selective parameters in a control sequence
#        with each selective parameter separated from the other by the code
#        3/11 (which usually represents a semicolon); Ps ranges from
#        3/0 to 3/9 and includes 3/11
#
# *      Not relevant to terminal control, listed for completeness only.
#
# Format Effectors versus Editor Functions
#
# A format effector specifies how following output is to be displayed.
# An editor function allows you to modify the display.  Informally
# format effectors may be destructive; format effectors should not be.
#
# For instance, a format effector that moves the "active position" (the
# cursor or equivalent) one space to the left would be useful when you want to
# create an overstrike, a compound character made of two standard characters
# overlaid. Control-H, the Backspace character, is actually supposed to be a
# format effector, so you can do this. But many systems use it in a
# nonstandard fashion, as an editor function, deleting the character to the
# left of the cursor and moving the cursor left. When Control-H is assumed to
# be an editor function, you cannot predict whether its use will create an
# overstrike unless you also know whether the output device is in an "insert
# mode" or an "overwrite mode". When Control-H is used as a format effector,
# its effect can always be predicted. The familiar characters carriage
# return, linefeed, formfeed, etc., are defined as format effectors.
#
# NOTES ON THE DEC VT100 IMPLEMENTATION
#
# Control sequences implemented in the VT100 are as follows:
#
#      CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
#      LNM, NEL, RI, RIS, RM, SGR, SM, TBC
#
# plus several private DEC commands.
#
# Erasing parts of the display (EL and ED) in the VT100 is performed thus:
#
#      Erase from cursor to end of line           Esc [ 0 K    or Esc [ K
#      Erase from beginning of line to cursor     Esc [ 1 K
#      Erase line containing cursor               Esc [ 2 K
#      Erase from cursor to end of screen         Esc [ 0 J    or Esc [ J
#      Erase from beginning of screen to cursor   Esc [ 1 J
#      Erase entire screen                        Esc [ 2 J
#
# Some brain-damaged terminal/emulators respond to Esc [ J as if it were
# Esc [ 2 J, but this is wrong; the default is 0.
#
# The VT100 responds to receiving the DA (Device Attributes) control
#
#      Esc [ c    (or Esc [ 0 c)
#
# by transmitting the sequence
#
#      Esc [ ? l ; Ps c
#
# where Ps is a character that describes installed options.
#
# The VT100's cursor location can be read with the DSR (Device Status
# Report) control
#
#      Esc [ 6 n
#
# The VT100 reports by transmitting the CPR sequence
#
#      Esc [ Pl ; Pc R
#
# where Pl is the line number and Pc is the column number (in decimal).
#
# The specification for the DEC VT100 is document EK-VT100-UG-003.

#### ANSI.SYS
#
# Here is a description of the color and attribute controls supported in the
# the ANSI.SYS driver under MS-DOS.  Most console drivers and ANSI
# terminal emulators for Intel boxes obey these.  They are a proper subset
# of the ECMA-48 escapes.
#
# 0	all attributes off
# 1	foreground bright
# 4	underscore on
# 5	blink on/background bright (not reliable with brown)
# 7	reverse-video
# 8	set blank (non-display)
# 10	set primary font
# 11	set first alternate font (on PCs, display ROM characters 1-31)
# 12	set second alternate font (on PCs, display IBM high-half chars)
#
#			Color attribute sets
# 3n	set foreground color       / 0=black, 1=red,     2=green, 3=brown,
# 4n	set background color       \ 4=blue,  5=magenta, 6=cyan,  7=white
# Bright black becomes gray.  Bright brown becomes yellow,
# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard.
#
# * If the 5 attribute is on and you set a background color (40-47) it is
#   supposed to enable bright background.
#
# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing
#   when you try to set a "bright brown" (yellow) background with attribute
#   5 (you get a blinking yellow foreground instead).  A few displays
#   (including the System V console) support an attribute 6 that undoes this
#   braindamage (this is required by iBCS2).
#
# * Some older versions of ANSI.SYS have a bug that causes them to require
#   ESC [ Pn k as EL rather than the ANSI ESC [ Pn K.  (This is not ECMA-48
#   compatible.)

#### Intel Binary Compatibility Standard
#
# For comparison, here are the capabilities implied by the Intel Binary
# Compatibility Standard for UNIX systems (Intel order number 468366-001).
# These recommendations are optional.  IBCS2 allows the leading escape to
# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with
# the ANSI X.364/ISO 6429/ECMA-48 standard.  Here are the iBCS2 capabilities
# (as described in figure 9-3 of the standard).  Those expressed in the ibcs2
# terminfo entry are followed with the corresponding capability in parens:
#
#	CSI <n>k		disable (n=0) or enable (n=1) keyclick
#	CSI 2h			lock keyboard
#	CSI 2i			send screen as input
#	CSI 2l			unlock keyboard
#	CSI 6m			enable background color intensity
#	CSI <0-2>c		reserved
#	CSI <0-59>m		select graphic rendition
#	CSI <n>;<m>H	(cup)	cursor to line n and column m
#	CSI <n>;<m>f		cursor to line n and column m
#	CSI <n>@	(ich)	insert characters
#	CSI <n>A	(cuu)	cursor up n lines
#	CSI <n>B	(cud)	cursor down n lines
#	CSI <n>C	(cuu)	cursor right n characters
#	CSI <n>D	(cud)	cursor left n characters
#	CSI <n>E		cursor down n lines and in first column
#	CSI <n>F		cursor up n lines and in first column
#	CSI <n>G	(hpa)	position cursor at column n-1
#	CSI <n>J	(ed)	erase in display
#	CSI <n>K	(el)	erase in line
#	CSI <n>L	(il)	insert line(s)
#	CSI <n>P	(dch)	delete characters
#	CSI <n>S	(indn)	scroll up n lines
#	CSI <n>T	(rin)	scroll down n lines
#	CSI <n>X	(ech)	erase characters
#	CSI <n>Z	(cbt)	back up n tab stops
#	CSI <n>`		cursor to column n on line
#	CSI <n>a	(cuu)	cursor right n characters
#	CSI <n>d	(vpa)	cursor to line n
#	CSI <n>e		cursor down n lines and in first column
#	CSI <n>g	(cbt)	clear all tabs
#	CSI <n>z		make virtual terminal n active
#	CSI ?7h		(smam)	turn automargin on
#	CSI ?7l		(rmam)	turn automargin off
#	CSI s			save cursor position
#	CSI u			restore cursor position to saved value
#	CSI =<c>A		set overscan color
#	CSI =<c>F		set normal foreground color
#	CSI =<c>G		set normal background color
#	CSI =<c>H		set reverse foreground color
#	CSI =<c>I		set reverse foreground color
#	CSI =<c>J		set graphic foreground color
#	CSI =<c>K		set graphic foreground color
#	CSI =<n>g	(dispc) display n from alternate graphics character set
#	CSI =<p>;<d>B		set bell parameters
#	CSI =<s>;<e>C		set cursor parameters
#	CSI =<x>D		enable/disable intensity of background color
#	CSI =<x>E		set/clear blink vs. bold background
#	CSI 7		(sc)	(sc) save cursor position
#	CSI 8		(rc)	(rc) restore cursor position to saved value
#	CSI H		(hts)	(hts) set tab stop
#	CSI Q<n><string>	define function key string
#				(string must begin and end with delimiter char)
#	CSI c		(clear) clear screen
#
# The lack of any specification for attributes in SGR (among other things)
# makes this a wretchedly weak standard. The table above is literally
# everything iBSC2 has to say about terminal escape sequences; there is
# no further discussion of their meaning or how to set the parameters
# in these sequences at all.
#

######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE
#
# The historical termcap file entries were written primarily in 4.4BSD termcap.
# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set,
# with the extension names chosen for compatibility with the termcap names
# assigned in System V terminfo.  There are some variant extension sets out
# there.  We try to describe them here.
#
#### XENIX extensions:
#
# The XENIX extensions include a set of function-key capabilities as follows:
#
#       code	XENIX variable name	terminfo name	name clashes?
#	----	-------------------	-------------	-----------------------
#	CL	key_char_left
#	CR	key_char_right
#	CW	key_change_window			create_window
#	EN	key_end			kend
#	HM	key_home		khome
#	HP	??
#	LD	key_delete_line		kdl1
#	LF	key_linefeed				label_off
#	NU	key_next_unlocked_cell
#	PD	key_page_down		knp
#	PL	??
#	PN	start_print		mc5
#	PR	??
#	PS	stop_print		mc4
#	PU	key_page_up		kpp		pulse
#	RC	key_recalc				remove_clock
#	RF	key_toggle_ref				req_for_input
#	RT	key_return		kent
#	UP	key_up_arrow		kcuu1		parm_up_cursor
#	WL	key_word_left
#	WR	key_word_right
#
# The XENIX extensions also include the following character-set and highlight
# capabilities:
#
#	XENIX	terminfo	function
#	-----	--------	------------------------------
#	GS	smacs		start alternate character set
#	GE	rmacs		end alternate character set
#	GG			:as:/:ae: glitch (analogous to :sg:/:ug:)
#	bo	blink		begin blink (not used in /etc/termcap)
#	be			end blink (not used in /etc/termcap)
#	bb			blink glitch  (not used in /etc/termcap)
#	it	dim		begin dim (not used in /etc/termcap)
#	ie			end dim (not used in /etc/termcap)
#	ig			dim glitch  (not used in /etc/termcap)
#
# Finally, XENIX also used the following forms-drawing capabilities:
#
#	single	double  type             ASCII approximation
#	------	------	-------------    -------------------
#	GV	Gv	vertical line             |
#	GH	Gv	horizontal line       -   _
#	G1	G5	top right corner       _   |
#	G2	G6	top left corner       |
#	G3	G7	bottom left corner         |_
#	G4	G8	bottom right corner   _|
#	GD	Gd	down-tick character        T
#	GL	Gl	left-tick character   -|
#	GR	Gr	right-tick character       |-
#	GC	Gc	middle intersection   -|-
#	GU	Gu	up-tick character          _|_
#
# These were invented to take advantage of the IBM PC ROM character set.  One
# can compose an acsc string from the single-width characters as follows
#	"j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}"
# When translating a termcap file, ncurses tic will do this automatically.
# The double forms characters don't fit the SVr4 terminfo model.
#
#### AT&T Extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities.  Its signature is the KM capability, used to name
# some sort of keymap file.  EE, BO, CI, CV, XS, DS, FL and FE are in this
# set.  Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh:
# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights),
# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make
# cursor invisible), and CV=:ve: (make cursor normal).
#
#### HP Extensions
#
# The HP library (as of mid-1995, their term.h file version 70.1) appears to
# have the System V capabilities up to SVr1 level.  After that, it supports
# two nonstandard caps meml and memu corresponding to the old termcap :ml:,
# :mu: capabilities.  After that, it supports caps plab_norm, label_on,
# label_off, and key_f11..key_f63 capabilities like SVr4's.  This makes the
# HP binary format incompatible with SVr4's.
#
#### IBM Extensions
#
# There is a set of nonstandard terminfos used by IBM's AIX operating system.
# The AIX terminfo library diverged from SVr1 terminfo, and replaces all
# capabilities following prtr_non with the following special capabilities:
# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab,
# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr,
# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml,
# rvert, lvert.   Some of these are identical to XPG4/SVr4 equivalents:
# kcmd, kend, khlp, and kf11...kf63.  Two others (kbtab and ksel) can be
# renamed (to kcbt and kslt).  The places in the box[12] capabilities
# correspond to acsc chars, here is the mapping:
#
#	box1[0]  = ACS_ULCORNER
#	box1[1]  = ACS_HLINE
#	box1[2]  = ACS_URCORNER
#	box1[3]  = ACS_VLINE
#	box1[4]  = ACS_LRCORNER
#	box1[5]  = ACS_LLCORNER
#	box1[6]  = ACS_TTEE
#	box1[7]  = ACS_RTEE
#	box1[8]  = ACS_BTEE
#	box1[9]  = ACS_LTEE
#	box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
# The AIX binary terminfo format is incompatible with SVr4's.
#
#### Iris console extensions:
#
# HS is half-intensity start; HE is half-intensity end
# CT is color terminal type (for Curses & rogue)
# CP is color change escape sequence
# CZ are color names (for Curses & rogue)
#
# The ncurses tic utility recognizes HS as an alias for mh <dim>.
#
#### TC Extensions:
#
# There is a set of extended termcaps associated with something
# called the "Terminal Control" or TC package created by MainStream Systems,
# Winfield Kansas.  This one also uses GS/GE for as/ae, and also uses
# CF for civis and CO for cvvis.  Finally, they define a boolean :ct:
# that flags color terminals.
#
######## NCURSES USER-DEFINABLE CAPABILITIES
#
# Extensions added after ncurses 5.0 generally use the "-x" option of tic and
# infocmp to manipulate user-definable capabilities.  Those that are intended
# for use in either terminfo or termcap use 2-character names.  Extended
# function keys do not use 2-character names, and are available only with
# terminfo.
#
# Beginning in 2010, NetBSD curses has also provided a "-x" option for
# tic/infocmp, and uses this database (with a few changes).  There are a few
# differences, noted in
#	https://invisible-island.net/ncurses/ncurses-netbsd.html
#
# ncurses makes explicit checks for a few user-definable capabilities:  AX,
# RGB, U8, XM, which are documented in the user_caps(5) manual page.
#
#### SCREEN Extensions:
#
# The screen program uses the termcap interface.  It recognizes a few useful
# nonstandard capabilities.  Those are used in this file.
#
#       AX   (bool)  Does  understand  ANSI  set  default fg/bg color (\E[39m /
#                    \E[49m).
#       G0   (bool)  Terminal can deal with ISO 2022  font  selection sequences.
#       E0   (str)   Switch charset 'G0' back to standard charset.
#       S0   (str)   Switch charset 'G0' to the specified charset.
#       XT   (bool)  Terminal understands special xterm sequences  (OSC,  mouse
#                    tracking).
#
# AX is relatively straightforward; it is interpreted by ncurses to say that
# SGR 39/49 reset the terminal's foreground and background colors to their
# "default".
#
# XT is harder, since screen's manpage does not give more details.  For that,
# we must read screen's source-code.  For example, when XT is set, screen
# assumes
#
# a) OSC 1 sets the title string, e.g., for the icon.  Recent versions of
#    screen may also set the terminal's name, which is (for xterm) distinct
#    from the icon name.
# b) OSC 20 sets the background pixmap.  This is an rxvt feature.
# c) OSC 39 and OSC 49 set the default foreground/background colors.  Again
#    this is an rxvt feature.
# d) certain mode settings enable the mouse: 9, 1000, 1001, 1002, 1003.
#    These are from xterm, although xterm accepts mouse codes that may not be
#    recognized by screen, e.g., 1005, 1006.
# e) colors beyond 0..7 are implemented by xterm's aixterm-like 16-color
#    sequence.  However, because screen uses only termcap, the values returned
#    by Af/Ab are not usable because they rely on expressions that termcap
#    does not support.  Therefore, screen uses a hardcoded string to work
#    around the limitation.  In a few cases, screen also uses tparm, which
#    is a terminfo function rather than termcap.
# f) all entries named "*xterm*" or "*rxvt*" have the bce flag set.
# g) screen also uses the feature to decide whether to pay attention to other
#    xterm-related features which are unrelated to the description in the
#    manual page.
#
# Since XT is useful only when the outer terminal matches screen's assumptions,
# it is appropriate to use it in the derived terminal descriptions such as
# "screen.xterm", but not in the generic "screen", "screen-bce" entries.
#
# The other ISO-2022 features are rarely used, but provided here to make
# screen's termcap features available.
#
#### XTERM Extensions:
#
# Most of the xterm extensions are for function-keys.  Since xterm patch #94 (in
# 1999), xterm has supported shift/control/alt/meta modifiers which produce
# additional function-key strings.  Some other developers copied the feature,
# though they did not follow xterm's lead in xterm patch #167 (in 2002), to make
# these key definitions less ambiguous.
#
# A few terminals provide similar functionality (sending distinct keys when
# a modifier is used), including rxvt.
#
# These are the extended keys defined in this file:
#
# kDC3 kDC4 kDC5 kDC6 kDC7 kDN kDN3 kDN4 kDN5 kDN6 kDN7 kEND3 kEND4 kEND5 kEND6
# kEND7 kHOM3 kHOM4 kHOM5 kHOM6 kHOM7 kIC3 kIC4 kIC5 kIC6 kIC7 kLFT3 kLFT4
# kLFT5 kLFT6 kLFT7 kNXT3 kNXT4 kNXT5 kNXT6 kNXT7 kPRV3 kPRV4 kPRV5 kPRV6 kPRV7
# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 ka2 kb1 kb3 kc2
#
# Here are the other xterm-related extensions which are used in this file:
#
# Cr is a string capability which resets the cursor color
# Cs is a string capability which sets the cursor color to a given value.
#    The single string parameter is the color name/number, according to the
#    implementation.
# Ms modifies the selection/clipboard.  Its parameters are
#	p1 = the storage unit (clipboard, selection or cut buffer)
#	p2 = the base64-encoded clipboard content.
# Se resets the cursor style to the terminal power-on default.
# Ss is a string capability with one numeric parameter.  It is used to set the
#    cursor style as described by the DECSCUSR function to a block or
#    underline.
# TS is a string capability which acts like "tsl", but uses no parameter and
#    goes to the first column of the "status line".
# XM is a string capability which overrides ncurses's built-in string which
#    enables/disables xterm mouse mode.
# xm shows the format of the mouse responses.  Parameters:
#	p1 = y-ordinate
#	p2 = x-ordinate
#	p3 = button
#	p4 = state, e.g., pressed or released
#	p5 = y-ordinate starting region
#	p6 = x-ordinate starting region
#	p7 = y-ordinate ending region
#	p8 = x-ordinate ending region
# Other extensions, used in xm:
#	%u = UTF-8
#
#### Miscellaneous extensions:
#
# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
#    This was implemented for the Hurd.
# rmxx/smxx describes the ECMA-48 strikeout/crossed-out attributes, as an
#    experimental feature of tmux.
# CO gives the number of indexed ("ANSI") colors which overlay an RGB color
#    space.
# E3 clears the terminal's scrollback buffer.  This was implemented in the
#    Linux 3.0 kernel as a security feature.  It matches a feature which was
#    added in xterm patch #107.
# U8 is a numeric capability which denotes a terminal emulator which does not
#    support VT100 SI/SO when processing UTF-8 encoding.  Set this to a nonzero
#    value to enable it.
# Smulx modifies the appearance of underlines in VTE, December 2017.
#
######## CHANGE HISTORY
#
# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
# Releases 9 and 10 (up until the release of ncurses 4.2 in 1998) were
# maintained by Eric S. Raymond as part of the ncurses project.
#
# This file contains all the capability information present in John Kunze's
# last version of the termcap master file, except as noted in the change
# comments at end of file.  Some information about very ancient obsolete
# capabilities has been moved to comments.  Some all-numeric names of older
# terminals have been retired.
#
# I changed :MT: to :km: (the 4.4BSD name) everywhere.  I commented out some
# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer
# used by BSD curses.
#
# The 9.1.0 version of this file was translated from my lightly-edited copy of
# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for
# the purpose.  Unless the ncurses tic implementation and the Lisp code were
# making perfectly synchronized mistakes which I then failed to catch by
# eyeball, the translation was correct and perfectly information-preserving.
#
# Major version number bumps correspond to major version changes in ncurses.
#
# Here is a log of the changes since then:
#
# 9.1.0 (Wed Feb  1 04:50:32 EST 1995):
#	* First terminfo master translated from 8.3.
# 9.2.0 (Wed Feb  1 12:21:45 EST 1995):
#	* Replaced Wyse entries with updated entries supplied by vendor.
#
# 9.3.0 (Mon Feb  6 19:14:40 EST 1995):
#	* Added contact & status info from G. Clark Brown <clark@sssi.com>.
# 9.3.1 (Tue Feb  7 12:00:24 EST 1995):
#	* Better XENIX keycap translation.  Describe TC termcaps.
#	* Contact and history info supplied by Qume.
# 9.3.2 (Sat Feb 11 23:40:02 EST 1995):
#	* Raided the Shuford FTP site for recent termcaps/terminfos.
#	* Added information on X3.64 and VT100 standard escape sequences.
# 9.3.3 (Mon Feb 13 12:26:15 EST 1995):
#	* Added a correct X11R6 xterm entry.
#	* Fixed terminfo translations of padding.
# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
#	* Added correct acsc/smacs/rmacs strings for vt100 and xterm.
#	* Added u6/u7/u8/u9 capabilities.
#	* Added PCVT entry.
# 9.3.5 (Thu Feb 23 09:37:12 EST 1995):
#	* Emacs uses :so:, not :mr:, for its mode line.  Fix linux entry
#	  to use reverse-video standout so Emacs will look right.
#	* Added el1 capability to ansi.
#	* Added smacs/rmacs to ansi.sys.
#
# 9.4.0 (Sat Feb 25 16:43:25 EST 1995):
#	* New mt70 entry.
#	* Added COPYRIGHTS AND OTHER DELUSIONS.
#	* Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics
#	  smartvid & smarterm, ampex 175 & 219 & 232,
#	  env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20,
#	  ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2,
#	  screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan,
#	  adm36, mime314, ergo4000, ca22851.  Replaced att7300, esprit, dd5500.
#	* Replaced the Perkin-Elmer entries with vendor's official ones.
#	* Restored the old minimal-ansi entry, luna needs it.
#	* Fixed some incorrect ip and proportional-padding translations.
# 9.4.1 (Mon Feb 27 14:18:33 EST 1995):
#	* Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly.
#	* Make the xterm entry 65 lines again; create xterm25 and xterm24
#	  to force a particular height.
#	* Added beehive4 and reorganized other Harris entries.
# 9.4.2 (Thu Mar  9 01:45:44 EST 1995):
#	* Merged in DEC's official entries for its terminals.  The only old
#	  entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
#	* Replaced the translated BBN BitGraph entries with purpose-built
#	  ones from AT&T's SVr3.
#	* Replaced the AT&T entries with AT&T's official terminfos.
#	* Added Teleray 16, vc415, cops10.
#	* Merged in many individual capabilities from SCO terminfo files.
# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
#	* Typo fixes.
#	* Change linux entry so A_PROTECT enables IBM-PC ROM characters.
# 9.4.4 (Mon Mar 27 12:32:35 EST 1995):
#	* Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803,
#	  pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21,
#	  simterm, citoh and variants.
#	* Replaced sol entry with sol1 and sol2.
#	* Replaced Qume QVT and Freedom-series entries with purpose-built
#	  terminfo entries.
#	* Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
#	  and dg200 entries using caps from from SCO.
#	* Added the usual set of function-key mappings to ANSI entry.
#	* Corrected xterm's function-key capabilities.
# 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
#	* Fix in xterm entry, cub and cud are not reliable under X11R6.
# 9.4.6 (Thu Mar 30 14:52:15 EST 1995):
#	* Fix in xterm entry, get the arrow keys right.
#	* Change some \0 escapes to \200.
# 9.4.7 (Tue Apr  4 11:27:11 EDT 1995)
#	* Added apple (Videx card), adm1a, oadm31.
#	* Fixed malformed ampex csr.
#	* Fixed act4, cyb110; they had old-style prefix padding left in.
#	* Changed mandatory to advisory padding in many entries.
#	* Replaced HP entries up to hpsub with purpose-built ones.
#	* Blank rmir/smir/rmdc/smdc capabilities removed.
#	* Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
# 9.4.8 (Fri Apr  7 09:36:34 EDT 1995):
#	* Replaced the Ann Arbor entries with SCO's, the init strings are
#	  more efficient (but the entries otherwise identical).
#	* Added dg211 from Shuford archive.
#	* Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk,
#	  adm42-nl, pc52, gs6300, xerox820, uts30.
#	* Pull SCO's padding into vi200 entry.
#	* Improved capabilities for tvi4107 and other TeleVideo and Viewpoint
#	  entries merged in from SCO's descriptions.
#	* Fixed old-style prefix padding on zen50, h1500.
#	* Moved old superbee entry to superbee-xsb, pulled in new superbee
#	  entry from SCO's description.
#	* Reorganized the special entries.
#	* Added lm#0 to cbunix and virtual entries.
#
# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995):
#	* Restored cdc456tst.
#	* Fixed sb1 entry, SCO erroneously left out the xsb glitch.
#	* Added megatek, beacon, microkit.
#	* Freeze for ncurses-1.9 release.
# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995):
#	* Added historical data for TAB.
#	* Comment fixes from David MacKenzie.
#	* Added the new BSDI pc3 entry.
# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995)
#	* A change in the tic -C logic now ensures that all entries in
#	  the termcap translation will fit in < 1024 bytes.
#	* Added `bobcat' and `gator' HP consoles and the Nu machine entries
#	  from GNU termcap file.  This merges in all their local information.
# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995)
#	* Changed tic -C logic to dump all capabilities used by GNU termcap.
#	* Added warnings about entries with long translations (restoring
#	  all the GNU termcaps pushes a few over the edge).
# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995)
#	* Yet another tic change, and a couple of entry tweaks, to reduce the
#	  number of long (> 1024) termcap translations back to 0.
#
# 9.6.0 (Mon May  1 10:35:54 EDT 1995)
#	* Added kf13-kf20 to Linux entry.
#	* Regularize Prime terminal names.
#	* Historical data on Synertek.
#	* Freeze for ncurses-1.9.1.
# 9.6.1 (Sat May  6 02:00:52 EDT 1995):
#	* Added true xterm-color entry, renamed djm's pseudo-color entry.
#	* Eliminate whitespace in short name fields, this tanks some scripts.
#	* Name field changes to shorten some long entries.
#	* Termcap translation now automatically generates empty rmir/smir
#	  when ich1/ich is present (copes with an ancient vi bug).
#	* Added `screen' entries from FSF's screen-3.6.2.
#	* Added linux-nic and xterm-nic entries.
# 9.6.2 (Sat May  6 17:00:55 EDT 1995):
#	* Change linux entry to use smacs=\E[11m and have an explicit acsc,
#	  eliminating some special-case code in ncurses.
#
# 9.7.0 (Tue May  9 18:03:12 EDT 1995):
#	* Added vt320-k3, rsvidtx from the Emacs termcap.dat file.  I think
#	  that captures everything unique from it.
#	* Added reorder script generator.
#	* Freeze for ncurses 1.9.2 release.
# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995):
#	* Added Sean Farley's kspd, flash, rs1 capabilities for linux.
#	* Added Olaf Siebert's corrections for adm12.
#	* ansi-pc-color now includes the colors and pairs caps, so that
#	  entries which use it will inherit them automatically.
#	* The linux entry can now recognize the center (keypad 5) key.
#	* Removed some junk that found its way into Linux acsc.
#
# 9.8.0 (Fri Jul  7 04:46:57 EDT 1995):
#	* Add 50% cut mark as a desperate hack to reduce tic's core usage.
#	* xterm doesn't try to use application keypad mode any more.
#	* Freeze for ncurses-1.9.3 release.
# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995):
#	* Added corrected sun entry from vendor.
#	* Added csr capability to linux entry.
#	* Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG.
#	* Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators.
#	* Some commented-out caps in long entries come back in, my code
#	  for computing string-table lengths had a bug in it.
#	* pcansi series modified to fit comm-program reality better.
# 9.8.2 (Sat Sep  9 23:35:00 EDT 1995):
#	* BSD/OS actually ships the ibmpc3 bold entry as its console.
#	* Correct some bad aliases in the pcansi series
#	* Added entry for QNX console.
#	* Clean up duplicate long names for use with 4.4 library.
#	* Change vt100 standout to be normal reverse vide, not bright reverse;
#	  this makes the Emacs status line look better.
# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995):
#	* Added Adam Thompson's VT320 entries, also his dtx-sas and z340.
#	* Minor surgery, mostly on name strings, to shorten termcap version.
#
# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995):
#	* Added dec-vt100 for use with the EWAN emulator.
#	* Added kmous to xterm for use with xterm's mouse-tracking facility.
#	* Freeze for 1.9.5 alpha release.
# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995):
#	* Changed xterm lines to 24, the X11R6 default.
# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995):
#	* Added 7 newly discovered, undocumented acsc characters to linux
#	  entry (the pryz{|} characters).
#	* ncurses no longer steals A_PROTECT.  Simplify linux sgr accordingly.
#	* Correct two typos in the xterm entries introduced in 9.9.1.
#	* I finally figured out how to translate ko capabilities.  Done.
#	* Added tvi921 entries from Tim Theisen.
#	* Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl.
#	* Removed mystery tec entry, it was neither interesting nor useful.
#	* shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f,
#	  vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a,
#	  trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211,
#	  by making them relative to use capabilities
#	* Added cuf1=^L to tvi925 from deleted variant tvi925a.
#	* fixed cup in adm22 entry and parametrized strings in vt320-k3.
#	* added it#8 to entries that used to have :pt: -- tvi912, vi200,
#	  ampex80,
#	* Translate all home=\E[;H capabilities to home=\E[H, they're
#	  equivalent.
#	* Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of
#	  vt100 and ANSI-like terminals.
# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995):
#	* Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic
#	  does this now, too.
#	* fviewpoint is gone, it duplicated screwpoint.
#	* Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c,
#	  ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3,
#	  versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW.
#	  The UW vi50 replaces the old one, which becomes vi50adm,
#	* No more embedded commas in name fields.
#
# 9.10.0 (Wed Oct  4 15:39:37 EDT 1995):
#	* XENIX forms characters in fos, trs16, scoansi become acsc strings,
#	* Introduced klone+* entries for describing Intel-console behavior.
#	* Linux kbs is default-mapped to delete for some brain-dead reason.
#	* -nsl -> -ns.  The -pp syntax is obsolete.
#	* Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs.
#	* Make xterm entry do application-keypad mode again.  I got complaints
#	  that it was messing up someone's 3270 emulator.
#	* Added some longname fields in order to avoid warning messages from
#	  older tic implementations.
#	* According to ctlseqs.ms, xterm has a full vt100 graphics set.  Use
#	  it! (This gives us pi, greater than, less than, and a few more.)
#	* Freeze for ncurses-1.9.6 release.
# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995):
#	* Add xon to a number of console entries, they're memory-mapped and
#	  don't need padding.
#	* Correct the use dependencies in the ansi series.
#	* Hand-translate more XENIX capabilities.
#	* Added hpterm entry for HP's X terminal emulator.
#	* Added aixterm entries.
#	* Shortened four names so everything fits in 14 chars.
#
# 9.11.0 (Thu Nov  2 17:29:35 EST 1995):
#	* Added ibcs2 entry and info on iBCS2 standard.
#	* Corrected hpa/vpa in linux entry.  They still fail the worm test.
#	* We can handle the HP meml/memu capability now.
#	* Added smacs to klone entries, just as documentation.
#	* Corrected ansi.sys and cit-500 entries.
#	* Added z39, vt320-k311, v220c, and avatar entries.
#	* Make pcansi use the ansi.sys invis capability.
#	* Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c,
#	  tvi925, tvi950, dt80, ncr7900i, h19.
#	* X3.64 has been withdrawn, change some references.
#	* Removed function keys from ansi-m entry.
#	* Corrected ansi.sys entry.
#	* Freeze for ncurses-1.9.7 release.
# 9.11.1 (Tue Nov  6 18:18:38 EST 1995):
#	* Added rmam/smam capabilities to many entries based on init strings.
#	* Added correct hpa/vpa to linux.
#	* Reduced several entries relative to vt52.
# 9.11.2 (Tue Nov  7 00:21:06 EST 1995):
#	* Exiled some utterly unidentifiable custom and homebrew types to the
#	  UFO file; also, obsolete small-screen hardware; also, entries which
#	  look flat-out incorrect, garbled, or redundant.  These include the
#	  following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec,
#	  tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile,
#	  apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu,
#	  fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55,
#	  yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2,
#	  vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200,
#	  trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40,
#	  att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w,
#	  tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na,
#	  c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na,
#	  regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb,
#	  vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam,
#	  vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms.
#	* Corrected pcvt25h as suggested by Brian C. Grayson
#	  <bgrayson@pine.ece.utexas.edu>.
# 9.11.3 (Thu Nov  9 12:14:40 EST 1995):
#	* Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
#	* Added kent=\EOM to xterm entry.
#
# 9.11.4 (Fri Nov 10 08:31:35 EST 1995):
#	* Corrected gigi entry.
#	* Restored cuf/cud1 to xterm, their apparent bugginess was due to
#	  bad hpa/vpa capabilities.
#	* Corrected flash strings to have a uniform delay of .2 sec.  No
#	  more speed-dependent NUL-padding!
#	* terminfo capabilities in comments bracketed with <>.
# 9.11.5 (Fri Nov 10 15:35:02 EST 1995):
#	* Replaced pcvt with the 3.31 pcvt entries.
#	* Freeze for 1.9.7a.
# 9.11.6 (Mon Nov 13 10:20:24 EST 1995):
#	* Added emu entry from the X11R6 contrib tape sources.
#
# 9.12.0 (Wed Nov 29 04:22:25 EST 1995):
#	* Improved iris-ansi and sun entries.
#	* More flash string improvements.
#	* Corrected wy160 & wy160 as suggested by Robert Dunn
#	* Added dim to at386.
#	* Reconciled pc3 and ibmpc3 with the BSDI termcap file.  Keith says
#	  he's ready to start using the termcap generated from this one.
#	* Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m,
#	  ln03, lno3-w, h19-g, z29a*, qdss.  Made vt200 an alias of vt220.
#	* Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925,
#	  att610, att620, att630,
#	* Changed hazeltine name prefix from h to hz.
#	* Sent t500 to the UFI file.
#	* I think we've sucked all the juice out of BSDI's termcap file now.
#	* Freeze for ncurses 1.9.8 release
# 9.12.1 (Thu Nov 30 03:14:06 EST 1995)
#	* Unfreeze, linux kbs needed to be fixed.
#	* Tim Theisen pinned down a bug in the DMD firmware.
# 9.12.2 (Thu Nov 30 19:08:55 EST 1995):
#	* Fixes to ansi and klone capabilities (thank you, Aaron Ucko).
#	  (The broken ones had been shadowed by sgr.)
# 9.12.3 (Thu Dec  7 17:47:22 EST 1995):
#	* Added documentation on ECMA-48 standard.
#	* New Amiga entry.
# 9.12.4 (Thu Dec 14 04:16:39 EST 1995):
#	* More ECMA-48 stuff
#	* Corrected typo in minix entry, added pc-minix.
#	* Corrected khome/kend in xterm (thank you again, Aaron Ucko).
#	* Added rxvt entry.
#	* Added 1.3.x color-change capabilities to linux entry.
# 9.12.5 (Tue Dec 19 00:22:10 EST 1995):
#	* Corrected rxvt entry khome/kend.
#	* Corrected linux color change capabilities.
#	* NeXT entries from Dave Wetzel.
#	* Cleaned up if and rf file names (all in /usr/share now).
#	* Changed linux op capability to avoid screwing up a background color
#	  pair set by setterm.
# 9.12.6 (Wed Feb  7 16:14:35 EST 1996):
#	* Added xterm-sun.
# 9.12.7 (Fri Feb  9 13:27:35 EST 1996):
#	* Added visa50.
#
# 9.13.0 (Sun Mar 10 00:13:08 EST 1996):
#	* Another sweep through the Shuford archive looking for new info.
#	* Added dg100 alias to dg6053 based on a comp.terminals posting.
#	* Added st52 from Per Persson.
#	* Added eterm from the GNU Emacs 19.30 distribution.
#	* Freeze for 1.9.9.
# 9.13.1 (Fri Mar 29 14:06:46 EST 1996):
#	* FreeBSD console entries from Andrew Chernov.
#	* Removed duplicate Atari st52 name.
# 9.13.2 (Tue May  7 16:10:06 EDT 1996)
#	* xterm doesn't actually have ACS_BLOCK.
#	* Change klone+color setf/setb to simpler forms that can be
#	  translated into termcap.
#	* Added xterm1.
#	* Removed mechanically-generated junk capabilities from cons* entries.
#	* Added color support to bsdos.
# 9.13.3 (Thu May  9 10:35:51 EDT 1996):
#	* Added Wyse 520 entries from Wm. Randolph Franklin <wrf@ecse.rpi.edu>.
#	* Created ecma+color, linux can use it.  Also added ech to linux.
#	* Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates.
#	* Add descriptions to FreeBSD console entries.  Also shorten
#	  some aliases to <= 14 chars for portability.
#	* Added x68k console
#	* Added OTbs to several VT-series entries.
# 9.13.4 (Wed May 22 10:54:09 EDT 1996):
#	* screen entry update for 3.7.1 from Michael Alan Dorman.
# 9.13.5 (Wed Jun  5 11:22:41 EDT 1996):
#	* kterm correction due to Kenji Rikitake.
#	* ACS correction in vt320-kll due to Phillippe De Muyter.
# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996):
#	* Sun console entry correction from J.T. Conklin.
#	* Changed all DEC VT300 and up terminals to use VT300 tab set
# 9.13.7 (Mon Jul  8 20:14:32 EDT 1996):
#	* Added smul to linux entry (we never noticed it was missing
#	  because of sgr!).
#	* Added rmln to hp+labels (deduced from other HP entries).
#	* Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas,
#	  pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3.
#	* Corrected vt220 acsc.
#	* The klone+sgr and klone+sgr-dumb entries now use klone+acs;
#	  this corresponds to reality and helps prevent some tic warnings.
#	* Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2,
#	  hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11,
#	  adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200,
#	  qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc,
#	  wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90,
#	  adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p,
#	  f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000,
#	  owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx,
#	  lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25,
#	  dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800,
#	  ifmr, v3220, wy100q, tandem653, ibmaed.
#	* Added DWK terminal description.
# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996):
#	* Many entries now have highlights inherited from adm+sgr.
#	* xterm entry now corresponds to XFree86 3.1.2E, with color.
#	* xtitle and xtitle-twm enable access to the X status line.
#	* Added linux-1.3.6 color palette caps in conventional format.
#	* Added adm1178 terminal.
#	* Move fos and apollo terminals to obsolete category.
#	* Aha! The BRL terminals file told us what the Iris extensions mean.
#	* Added, from the BRL termcap file: rt6221, rt6221-w, northstar,
#	  commodore, cdc721-esc, excel62, osexec.  Replaced from the BRL file:
#	  cit500, adm11.
# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996):
#	* Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756,
#	  aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155.
#	* Corrected, from BRL termcap file: vi50.
#	* Better rxvt entry & corrected xterm entries from Thomas Dickey.
# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996):
#	* Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1,
#	  att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne
#	  (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi,
#	  tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro,
#	  apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae.
#	* Paired-attribute fixes to various terminals.
#	* Sun entry corrections from A. Lukyanov & Gert-Jan Vons.
#	* xterm entry corrections from Thomas Dickey.
# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996):
#	* Added t916 entry, translated from a termcap in SCO's support area.
#	* New qnx entry from Michael Hunter.
# 9.13.12 (Mon Aug  5 14:31:11 EDT 1996):
#	* Added hpex2 from Ville Sulko.
#	* Fixed a bug that ran the qnx and pcvtXX together.
# 9.13.13 (Fri Aug  9 01:16:17 EDT 1996):
#	* Added dtterm entry from Solaris CDE.
# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996):
#	* corrected pairs#8 typo in dtterm entry.
#	* added tvi9065.
# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996):
#	* updated xterm entry to cover 3.1.2E's new features.
# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996):
#	* Added new minix entry
#	* Removed aliases of the form ^[0-9]* for obsolete terminals.
#	* Commented out linux-old, nobody's using pre-1.2 kernels now.
# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996):
#	* Added Prism entries and kt7ix.
#	* Caution notes about EWAN and tabset files.
#	* Changed /usr/lib/tabset -> /usr/share/tabset.
#	* Added acsc/rmacs/smacs to vt52.
# 9.13.18 (Mon Oct 28 13:24:59 EST 1996):
#	* Merged in Thomas Dickey's reorganization of the xterm entries;
#	  added technical corrections to avoid warning messages.
# 9.13.19 (Sat Nov 16 16:05:49 EST 1996):
#	* Added rmso=\E[27m in Linux entry.
#	* Added koi8-r support for Linux console.
#	* Replace xterm entries with canonical ones from XFree86 3.2.
# 9.13.20 (Sun Nov 17 23:02:51 EST 1996):
#	* Added color_xterm from Jacob Mandelson
# 9.13.21 (Mon Nov 18 12:43:42 EST 1996):
#	* Back off the xterm entry to use r6 as a base.
# 9.13.22 (Sat Nov 30 11:51:31 EST 1996):
#	* Added dec-vt220 at Adrian Garside's request.
#
#-(original-changelog-1996/12/29-to-1998/02/28-by-TD)---------------------------
#
# 10.1.0 (Sun Dec 29 02:36:31 EST 1996): withdrawn
#	* Minor corrections to xterm entries.
#	* Replaced EWAN telnet entry.
#	* Dropped the reorder script generator.  It was a fossil.
# 9.13.23 (Fri Feb 21 16:36:06 EST 1997):
#	* Replaced minitel-2 entry.
#	* Added MGR, ansi-nt.
# 9.13.24 (Sun Feb 23 20:55:23 EST 1997):
#	* Thorsten Lockert added termcap `bs' to a lot of types, working from
#	  the 4.4BSD Lite2 file.
#
# 10.1.1 (Sat May  3 21:41:27 EDT 1997):
#	* Use setaf/setab consistently with SVr4.
#	* Remove ech, el1 from cons25w, they do not work in FreeBSD 2.1.5
# 10.1.2 (Sat May 24 21:10:57 EDT 1997)
#	* update xterm-xf86-v32 to match XFree86 3.2A (changes F1-F4)
#	* add xterm-16color, for XFree86 3.3
# 10.1.3 (Sat May 31 12:21:05 EDT 1997)
#	* correct typo in emu
#	* correct typo in vt102-w (Robert Wuest)
#	* make new entry xterm-xf86-v33, restored xterm-xf86-v32.
# 10.1.4 (Sun Jun 15 08:29:05 EDT 1997)
#	* remove ech capability from rxvt (it does the wrong thing)
# 10.1.5 (Sat Jun 28 21:34:36 EDT 1997)
#	* remove spurious newlines from several entries (hp+color, wy50,
#	  wy350, wy370-nk, wy99gt-tek, wy370-tek, ibm3161, tek4205, ctrm,
#	  gs6300)
# 10.1.6 (Sat Jul  5 15:08:16 EDT 1997)
#	* correct rmso capability of wy50-mc
# 10.1.7 (Sat Jul 12 20:05:55 EDT 1997)
#	* add cbt to xterm-xf86-v32
#	* disentangle some entries from 'xterm', preferring xterm-r6 in case
#	  'xterm' is derived from xterm-xf86-v32, which implements ech and
#	  other capabilities not in xterm-r6.
#	* remove alternate character set from kterm entry.
# 10.1.8 (Sat Aug  2 18:43:18 EDT 1997)
#	* correct acsc entries for ACS_LANTERN, which is 'i', not 'I'.
# 10.1.9 (Sat Aug 23 17:54:38 EDT 1997)
#	* add xterm-8bit entry.
# 10.1.10 (Sat Oct  4 18:17:13 EDT 1997)
#	* repair several places where early version of tic replaced \, with \\\,
#	* make acsc entries canonical form (sorted, uniq).
#	* modify acsc entries for linux, linux-koi8
#	* new rxvt entry, from corrected copy of distribution in rxvt 2.21b
#	* add color, mouse support to kterm.
# 10.1.11 (Sat Oct 11 14:57:10 EDT 1997)
#	* correct wy120 smxon/tbc capabilities which were stuck together.
# 10.1.12 (Sat Oct 18 17:38:41 EDT 1997)
#	* add entry for xterm-xf86-v39t
# 10.1.13 (Sat Nov  8 13:43:33 EST 1997)
#	* add u8,u9 to sun-il description
# 10.1.14 (Sat Nov 22 19:59:03 EST 1997)
#	* add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97
#	  version.
#	* add hds200 description (Walter Skorski)
#	* add EMX 0.9b descriptions
#	* correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver)
#	* rename xhpterm back to hpterm.
# 10.1.15 (Sat Nov 29 19:21:59 EST 1997)
#	* change initc in linux-c-nc to use 0..1000 range.
# 10.1.16 (Sat Dec 13 19:41:59 EST 1997)
#	* remove hpa/vpa from rxvt, which implements them incorrectly.
#	* add sgr0 for rxvt.
#	* remove bogus smacs/rmacs from EMX descriptions.
# 10.1.17 (Sat Dec 20 17:54:10 EST 1997)
#	* revised entry for att7300
# 10.1.18 (Sat Jan  3 17:58:49 EST 1998)
#	* use \0 rather than \200.
#	* rename rxvt-color to rxvt to match rxvt 2.4.5 distribution.
# 10.1.19 (Sat Jan 17 14:24:57 EST 1998)
#	* change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset.
#	* rename xterm-xf86-v39t to xterm-xf86-v40
#	* remove bold/underline from sun console entries since they're not
#	  implemented.
# 10.1.20 (Sat Jan 24 11:02:51 EST 1998)
#	* add beterm entry (Fred Fish)
#	* add irix-color/xwsh entry.
#	* turn ncv off for linux.
# 10.1.21 (Sat Jan 31 17:39:16 EST 1998)
#	* set ncv for FreeBSD console (treat colors with reverse specially).
#	* remove sgr string from qnx based on report by Xiaodan Tang
# 10.1.22 (Wed Feb 11 18:40:12 EST 1998)
#	* remove spurious commas from descriptions
#	* correct xterm-8bit to match XFree86 3.9Ad F1-F4.
# 10.1.23 (Sat Feb 28 17:48:38 EST 1998)
#	* add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
#	  apparently based on cp-866).
#
#-(replaced-changelog-1998/02/28-by-ESR)----------------------------------------
#
# 9.13.23 (Fri Feb 21 16:36:06 EST 1997):
#	* Replaced minitel-2 entry.
#	* Added MGR, ansi-nt.
#	* Minor corrections to xterm entries.
#	* Replaced EWAN telnet entry.
#	* Dropped the reorder script generator.  It was a fossil.
# 9.13.24 (Sun Feb 23 20:55:23 EST 1997):
#	* Thorsten Lockert added termcap `bs' to a lot of types, working from
#	  the 4.4BSD Lite2 file.
# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997):
#	* Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js.
#	* Updated iris-ansi; corrected vt102-w.
#	* Switch base xterm entry to 3.3 level.
# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997)
#	* Added basic4.
#	* Removed rmir/smir from tv92B.
#
# 10.2.0 (Sat Feb 28 12:47:36 EST 1998):
#	* add hds200 description (Walter Skorski)
#	* add beterm entry (Fred Fish)
#	* add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color,
#	  iris-color entries.
#	* add emx entries.
#	* Replaced unixpc entry with Benjamin Sittler's corrected version.
#	* Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's
#	  versions.
#	* remove sgr string from qnx based on report by Xiaodan Tang
#	* Added u8/u9, removed rmul/smul from sun-il.
#	* 4.2 tic displays \0 rather than \200.
#	* add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
#	  apparently based on cp-866).
#	* Merged in Pavel Roskin's acsc for linux-koi8
#	* Corrected some erroneous \\'s to \.
#	* 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV.
#	* II -> ii in pcvtXX, screen, xterm.
#	* Removed \n chars following ANSI escapes in sgr & friends.
#	* Updated Wyse entries.
#	* h19 corrections from Tim Pierce.
#	* Noted that the dm2500 has both ich and smir.
#	* added pccons for the Alpha under OSF/1.
#	* Added Sony NEWS workstation entries and cit101e-rv.
#	* Reverted `amiga'; to Kent Polk's version, as I'm told
#	  the Verkuil entry messes up with Amiga Telnet.
# 10.2.1 (Sun Mar  8 18:32:04 EST 1998):
#	* Corrected attributions in 10.2.0 release notes.
#	* Scanned the Shuford archive for new terminfos and information.
#	* Removed sgr from qnx entry (Thomas Dickey).
#	* Added entries for ICL and Kokusai Data Systems terminals.
#	* Incorporated NCR terminfos from the Boundless Technology FTP site.
#	* Incorporated att700 from the Boundless Technology FTP site.
#	* Miscellaneous contact-address and Web-page updates.
#
#-(changelog-beginning-ncurses-4.2)---------------------------------------------
#
# 1998/5/9
#	* add nxterm and xterm-color terminfo description (request by Cristian
#	  Gafton <gafton@redhat.com>).
#	* modify rxvt terminfo description to clear alternate screen before
#	  switching back to normal screen, for compatibility with applications
#	  which use xterm (reported by Manoj Kasichainula <manojk@io.com>).
#	* modify linux terminfo description to reset color palette (reported
#	  by Telford Tendys <telford@eng.uts.edu.au>).
#
# 1998/7/4
#	* merge changes from current XFree86 xterm terminfo descriptions.
#
# 1998/7/25
#	* Added minitel1 entries from Alexander Montaron.
#	* Added qnxt2 from Federico Bianchi.
#	* Added arm100 terminfo entries from Dave Millen.
#
# 1998/8/6
#	* Added ncsa telnet entries from Francesco Potorti
#
# 1998/8/15
#	* modify ncsa telnet entry to reflect color, other capabilities based on
#	  examination of the source code - T.Dickey.
#
# 1998/8/22
#	* Corrected some erroneous \\'s to \ (eterm, osborne) - TD.
#
# 1998/8/29
#	* Added Francesco Potorti's tuned Wyse 99 entries.
#	* dtterm enacs correction from Alexander V. Lukyanov.
#	* Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
#	* correct a typo in icl6404 entry.
#	* add xtermm and xtermc
#
# 1998/9/26
#	* format most %'char' sequences to %{number}
#	* adapt IBM AIX 3.2.5 terminfo - T.Dickey
#	* merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD
#
# 1998/10/10
#	* update xterm-xfree86 to current (xterm patch #84), for is2/rs2 changes - TD
#	* correct initialization string in xterm-r5, add misc other features
#	  to correspond with xterm patch #84 - TD
#
# 1998/12/19
#	* update xterm-xfree86 to current (xterm patch #90), smcur/rmcur changes - TD
#	* add Mathew Vernon's mach console entries
#	* corrections for ncsa function-keys (report by Larry Virden)
#
# 1998/12/19
#	* change linux to use ncv#2, since underline does not work with color - TD
#
# 1999/1/9
#	* add kbt to iris-ansi, document other shift/control functionkeys - TD
#	* correct iris-ansi and iris-ansi-ap with respect to normal vs keypad
#	  application modes, change kent to use the correct keypad code - TD
#
# 1999/1/10
#	* add entry for Tera Term - TD
#
# 1999/1/23
#	* minor improvements for teraterm entry - TD
#	* rename several entries used by BSDI: bsdos to bsdos-pc-nobold,
#	  and bsdos-bold to bsdos-pc (Jeffrey C Honig)
#
# 1999/2/20
#	* resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
#	  xterm and ncsa entries by removing the unneeded ones.  Note that
#	  some entries will return kend & khome versus kslt and kfnd, for
#	  PC-style keyboards versus strict vt220 compatibility - TD
#
# 1999/3/13
#	* adjust xterm-xfree86 khome/kend to match default PC-style keyboard
#	  tables - TD
#	* add 'crt' entry - TD
#	* correct typos in 'linux-c' entry - TD
#
# 1999/3/14
#	* update entries for BSD/OS console to use klone+sgr and klone+color
#	  (Jeffrey C Honig)
#
# 1999/3/27
#	* adjust xterm-xfree86 miscellaneous keypad keys, as per xterm patch #94 - TD.
#
# 1999/4/10
#	* add linux-lat, from RedHat patches to ncurses 4.2
#
# 1999/4/17
#	* add complete set of default function-key definitions for scoansi - TD.
#
# 1999/7/3
#	* add cnorm, cvvis for Linux 2.2 kernels
#
# 1999/7/24
#	* add kmous to xterm-r5 -TD
#	* correct entries xterm+sl and xterm+sl-twm, which were missing the
#	  parent "use" clause -TD
#
# 1999/7/31
#	* corrected cnorm, added el1 in 'screen' description -TD
#
# 1999/8/14
#	* add ms-vt100 -TD
#
# 1999/8/21
#	* corrections to beterm entry -TD
#
# 1999/8/28
#	* add cygwin entry -TD
#
# 1999/9/4
#	* minor corrections for beterm entry -TD
#
# 1999/9/18
#	* add acsc string to HP 70092 terminfo entry -Joerg Wunsch
#
# 1999/9/25
#	* add amiga-8bit entry
#	* add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons,
#	  rcons-color, based on
#	  ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src
#	* add alias for iris-ansi-net
#
# 1999/10/2
#	* corrected scoansi entry's acsc, some function keys, add color -TD
#
# 1999/10/23
#	* add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD
#	* reorder ncsa entries to make ncsa-vt220 use the alternate function
#	  key mapping, leaving Potorti's entries more like he named them -TD
#	* remove enter/exit am-mode from cygwin -TD
#
# 1999/10/30
#	* correct typos in several entries (missing '[' from CSI):
#	  mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir
#	  strings for avt-ns -TD
#	* add 'dim' to ncv mask for linux (report by Klaus Weide).
#
# 1999/11/27
#	* correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD
#	* add hts to xterm-r6, and u6-u9 to xterm-r5 -TD
#	* add xterm-88color and xterm-256color -TD
#
# 1999/12/4
#	* add "obsolete" termcap strings -TD
#	* add kvt and gnome entries -TD
#
# 1999/12/11
#	* correct cup string for regent100 -TD
#
# 2000/1/1
#	* update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD
#	* add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD
#	* change OTrs capabilities to rs2 -TD
#	* add obsolete and extended capabilities to 'screen' -TD
#
# 2000/1/5
#	* remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts
#	  with kf10 -TD
#	* updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove',
#	  and adding kcbt -TD
#
# 2000/1/12
#	* remove incorrect khome/kend from xterm-xf86-v333, which was based on
#	  nonstandard resource settings -TD
#
# 2000/2/26
#	* minor fixes for xterm-*, based on Debian #58530 -TD
#
# 2000/3/4
#	* add several terminal types from esr's "11.0", as well as comments.
#	  bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*,
#	  vt220-8bit, vt220-old, wy85-8bit
#
# 2000/3/18
#	* add several terminal types from esr's "11.0.1" (ansi-*).
#	* update OTxx capabilities for changes on 2000/3/4.
#	* revert part of vt220 change (request by Todd C Miller for OpenBSD)
#
# 2000/3/26
#	* move screen's AX extension to ecma+color, modify several entries to
#	  use that, adjusting ncv as needed -TD
#
# 2000/4/8
#	* add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig)
#	* correct spelling error in entry name: bq300-rv was given as bg300-rv
#	  in esr's version.
#
# 2000/4/15
#	* add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD
#	* correct color definition for ibm3164, make minor changes to other
#	  IBM terminal definitions based on recent terminfo descriptions -TD
#
# 2000/4/22
#	* add mgterm, from NetBSD -TD
#	* add alias sun-cgsix for sun-ss5 as per NetBSD
#	* change cons25w to use rs2 for reset rather than rs1 -TD
#	* add rc/sc to aixterm based on manpage -TD
#
# 2000/5/13
#	* remove ncv from xterm-16color, xterm-256color
#
# 2000/6/10
#	* add kmous capability to linux to use Joerg Schoen's gpm patch.
#
# 2000/7/1
#	* add Eterm (Michael Jennings)
#
# 2000-07-18
#       * add amiga-vnc entry.
#
# 2000-08-12
#	* correct description of Top Gun Telnet.
#	* add kterm-color
#
# 2000-08-26
#	* add qansi* entries from QNX ftp site.
#
# 2000-09-16
#	* add Matrix Orbital entries by Eric Z. Ayers).
#	* add xterm-basic, xterm-sco entries, update related entries to XFree86
#	  4.0.1c -TD
#
# 2000-09-17
#	* add S0, E0 extensions to screen's entry -TD
#
# 2000-09-23
#	* several corrections based on tic's new parameter-checking code -TD
#	* modify xterm-r6 and similar rs2 sequences which had \E7...\E8
#	  bracketing sequences that reset video attributes (\E8 would restore
#	  them) -TD
#
# 2000-11-11
#	* rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD
#
# 2000-12-16
#	* improved scoansi, based on SCO man-page, and testing console,
#	  scoterm with tack -TD
#
# 2001-01-27
#	* modify kterm to use acsc via SCS controls.
#
# 2001-02-10
#	* screen 3.9.8 allows xterm mouse controls to pass-through
#
# 2001-03-11
#	* remove spurious "%|" from some xterm entries.
#
# 2001-03-31
#	* modify 'screen' khome/kend to match screen 3.09.08
#	* add examples of 'screen' customization (screen.xterm-xfree86,
#	  screen.xterm-r6, screen.teraterm) -TD
#
# 2001-04-14
#	* correct definitions of shifted editing keys for xterm-xfree86 -TD
#	* add "Apple_Terminal" entries -Benjamin Sittler
#	* remove time-delays from "Apple_Terminal" entries -TD
#	* make sgr entries time-delays consistent with individual caps -TD
#
# 2001-05-05
#	* corrected/updated screen.xterm-xfree86
#
# 2001-05-19
#	* ELKS descriptions, from Federico Bianchi
#	* add u6 (CSR) to Eterm (Michael Jennings).
#
# 2001-07-21
#	* renamed "Apple_Terminal" entries to "nsterm" to work with Solaris's
#	  tic which handles names no longer than 14 characters.  Add
#	  corresponding descriptions for the Darwin PowerPC console named
#	  "xnuppc" -Benjamin Sittler
#
# 2001-09-01
#	* change kbs in mach entries to ^? (Marcus Brinkmann).
#
# 2001-11-17
#	* add "putty" entry -TD
#	* updated "Apple_Terminal" entries -Benjamin Sittler
#
# 2001-11-24
#	* add ms-vt100-color entry -TD
#	* add "konsole" entries -TD
#
# 2001-12-08
#	* update gnome entry to Redhat 7.2 -TD
#
# 2002-05-25
#	* add kf13-kf48 strings to cons25w -TD
#	* add pcvt25-color entry -TD
#	* changed a few /usr/lib/tabset -> /usr/share/tabset.
#	* improve some features of scoansi entry based on SCO's version -TD
#	* add scoansi-new entry corresponding to OpenServer 5.0.6
#
# 2002-06-15
#	* add kcbt to screen entry -TD
#
# 2002-06-22
#	* add rxvt-16color, ibm+16color, mvterm entries -TD
#
# 2002-09-28
#	* split out linux-basic entry, making linux-c inherit from that, and
#	  in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect
#	  the history of this console type -TD
#	* scaled the linux-c terminfo entry to match linux-c-nc, i.e., the
#	  r/g/b parameters of initc are in the range 0 to 1000 -TD
#
# 2002-10-05
#	* minor fix for scale-factor of linux-c and linux-c-nc -TD
#
# 2002-11-09
#	* split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2
#	  in the latter -TD
#
# 2002-11-16
#	* add entries for mterm (mterm, mterm-ansi, decansi) -TD
#	* ncr260wy350pp has only 16 color pairs -TD
#	* add sun-type4 from NetBSD -TD
#	* update xterm-xfree86 to current (xterm patch #170) -TD
#	* add screen-bce, screen-s entries -TD
#	* add xterm-1002, xterm-1003 entries -TD
#
# 2003-01-11
#	* update homepage for Top Gun Telnet/SSH
#
# 2003-01-25
#	* reduce duplication in emx entries, added emx-base -TD
#
# 2003-05-24
#	* corrected acs for screen.teraterm -TD
#	* add tkterm entry -TD
#
# 2003-07-15
#	* cygwin changes from Charles Wilson:
#	  misc/terminfo.src (nxterm|xterm-color): make xterm-color
#	  primary instead of nxterm, to match XFree86's xterm.terminfo
#	  usage and to prevent circular links.
#	  (rxvt): add additional codes from rxvt.org.
#	  (rxvt-color): new alias
#	  (rxvt-xpm): new alias
#	  (rxvt-cygwin): like rxvt, but with special acsc codes.
#	  (rxvt-cygwin-native): ditto.  rxvt may be run under XWindows, or
#	  with a "native" MSWin GUI.  Each takes different acsc codes,
#	  which are both different from the "normal" rxvt's acsc.
#	  (cygwin): cygwin-in-cmd.exe window.  Lots of fixes.
#	  (cygwinDBG): ditto.
#
# 2003-09-27
#	* update gnome terminal entries -TD
#
# 2003-10-04
#	* add entries for djgpp 2.03 and 2.04 -TD
#
# 2003-10-25
#	* add alias for vtnt -TD
#	* update xterm-xfree86 for XFree86 4.4 -TD
#
# 2003-11-22
#	* add linux-vt (Andrey V Lukyanov)
#
# 2003-12-20
#	* add screen.linux -TD
#
# 2004-01-10
#	* revised/improved entries for tvi912b, tvi920b (Benjamin Sittler)
#
# 2004-01-17
#	* add OpenNT/Interix/SFU entries (Federico Bianchi)
#	* add vt100+ and vt-utf8 entries -TD
#	* add uwin entry -TD
#
# 2004-03-27
#	* add sgr strings to several common entries lacking them, e.g.,
#	  screen, to make the entries more portable -TD
#	* remove cvvis from rxvt entry, since it is the same as cnorm -TD
#	* similar fixups for cvvis/cnorm various entries -TD
#
# 2004-05-22
#	* remove 'ncv' from xterm-256color (xterm patch #188) -TD
#
# 2004-06-26
#	* add mlterm -TD
#	* add xterm-xf86-v44 -TD
#	* modify xterm-new aka xterm-xfree86 to accommodate luit, which relies
#	  on G1 being used via an ISO-2022 escape sequence (report by
#	  Juliusz Chroboczek) -TD
#	* add 'hurd' entry -TD
#
# 2004-07-03
#	* make xterm-xf86-v43 derived from xterm-xf86-v40 rather than
#	  xterm-basic -TD
#	* align with xterm #192's use of xterm-new -TD
#	* update xterm-new and xterm-8bit for cvvis/cnorm strings -TD
#	* make xterm-new the default "xterm" -TD
#
# 2004-07-10
#	* minor fixes for emu -TD
#	* add emu-220
#	* add rmam/smam to linux (Trevor Van Bremen)
#	* change wyse acsc strings to use 'i' map rather than 'I' -TD
#	* fixes for avatar0 -TD
#	* fixes for vp3a+ -TD
#
# 2004-07-17
#	* add xterm-pc-fkeys -TD
#	* review/update gnome and gnome-rh90 entries (prompted by
#	  Redhat Bugzilla #122815) -TD
#	* review/update konsole entries -TD
#	* add sgr, correct sgr0 for kterm and mlterm -TD
#	* correct tsl string in kterm -TD
#
# 2004-07-24
#	* make ncsa-m rmacs/smacs consistent with sgr -TD
#	* add sgr, rc/sc and ech to syscons entries -TD
#	* add function-keys to decansi -TD
#	* add sgr to mterm-ansi -TD
#	* add sgr, civis, cnorm to emu -TD
#	* correct/simplify cup in addrinfo -TD
#	* corrections for gnome and konsole entries
#	  (Redhat Bugzilla #122815) -Hans de Goede
#	* modify DEC entries (vt220, etc), to add sgr string, and to use
#	  ISO-2022 strings for rmacs/smacs -TD
#
# 2004-07-31
#	* rename xterm-pc-fkeys to xterm+pcfkeys -TD
#
# 2004-08-07
#	* improved putty entry -Robert de Bath
#
# 2004-08-14
#	* remove dch/dch1 from rxvt because they are implemented inconsistently
#	  with the common usage of bce/ech -TD
#	* remove khome from vt220 (vt220's have no home key) -TD
#	* add rxvt+pcfkeys -TD
#
# 2004-08-21
#	* modify several entries to ensure xterm mouse and cursor visibility
#	  are reset in rs2 string:  hurd, putty, gnome, konsole-base, mlterm,
#	  Eterm, screen.  (The xterm entries are left alone - old ones for
#	  compatibility, and the new ones do not require this change) -TD
#
# 2004-08-28
#	* add morphos entry -Pavel Fedin
#	* modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin
#	* corrected \E[5?l to \E[?5l in vt320 entries -TD
#
# 2004-11-20
#	* update wsvt25 entry -TD
#
# 2005-01-29
#	* update pairs for xterm-88color and xterm-256color to reflect the
#	  ncurses extended-color support -TD
#
# 2005-02-26
#	* modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD
#	* add aixterm-16color to demonstrate 16-color capability -TD
#
# 2005-04-23
#	* add media-copy to vt100 -TD
#	* corrected acsc string for vt52 -TD
#
# 2005-04-30
#	* add kUP, kDN (user-defined shifted up/down arrow) definitions for
#	  xterm-new -TD
#	* add kUP5, kUP6, etc., for xterm-new and rxvt -TD
#
# 2005-05-07
#	* re-corrected acsc string for vt52 -TD
#
# 2005-05-28
#	* corrected sun-il sgr string which referred to bold and underline -TD
#	* add sun-color entry -TD
#
# 2005-07-23
#	* modify sgr0 in several entries to reset alternate-charset as in the
#	  sgr string -TD
#	* modify sgr string of prism9 to better match the individual
#	  attributes -TD
#
# 2005-10-15
#	* correct order of use= in rxvt-basic -TD
#
# 2005-10-26
#	* use kind/kri as shifted up/down cursor keys for xterm-new -TD
#
# 2005-11-12
#	* other minor fixes to cygwin based on tack -TD
#	* correct smacs in cygwin (report by Baurzhan Ismagulov).
#
# 2006-02-18
#	* add nsterm-16color entry -TD
#	* remove ncv flag from xterm-16color -TD
#	* remove setf/setb from xterm-256color to match xterm #209 -TD
#	* update mlterm entry to 2.9.2 -TD
#
# 2006-02-25
#	* fixes to make nsterm-16color match report
#	  by Christian Ebert -Alain Bench
#
# 2006-04-22
#	* add xterm+256color building block -TD
#	* add gnome-256color, putty-256color, rxvt-256color -TD
#
# 2006-05-06
#	* add hpterm-color -TD
#
# 2006-06-24
#	* add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD
#	* add gnome-fc5 (prompted by GenToo #122566) -TD
#	* remove obsolete/misleading comments about kcbt on Linux -Alain Bench
#	* improve xterm-256color by combining the ibm+16color setaf/setab
#	  strings with SGR 48.  The setf/setb strings also are cancelled here
#	  rather than omitted so derived entries will cancel those also -Alain
#	  Bench
#
# 2006-07-01
#	* add some notes regarding copyright to terminfo.src -TD
#	* use rxvt+pcfkeys in Eterm -TD
#	* remove km and flash from gnome, Eterm and rxvt since they do not work
#	  as one would expect (km sends ESC rather than setting the 8th bit
#	  of the key) -TD
#	* add/use ansi+enq, vt100+enq and vt102+enq -TD
#	* add konsole-solaris -TD
#
# 2006-07-22
#	* update xterm-sun and xterm-sco entries to match xterm #216 -TD
#	* modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD
#	* modify xterm-24 to inherit from "xterm" -TD
#	* add xiterm entry -TD
#	* add putty-vt100 entry -TD
#	* corrected spelling of Michael A Dorman's name, prompted by
#	  http://www.advogato.org/person/mdorman/diary.html -TD
#
# 2006-08-05
#	* add xterm+pcf0, xterm+pcf2 from xterm #216 -TD
#	* update xterm+pcfkeys to match xterm #216 -TD
#
# 2006-08-17
#	* make descriptions of xterm entries consistent with its terminfo -TD
#
# 2006-08-26
#	* add xfce, mgt -TD
#
# 2006-09-02
#	* correct acsc string in kterm -TD
#
# 2006-09-09
#	* add kon entry -TD
#	* remove invis from linux and related entries, add klone+sgr8 for those
#	  that implement the feature (or have not been shown to lack it) -TD
#
# 2006-09-23
#	* add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD
#	* minor improvements to rxvt+pcfkeys -TD
#
# 2006-09-30
#	* fix a few typos in if/then/else expressions -TD
#
# 2006-10-07
#	* add several GNU Screen variations with 16- and 256-colors, and
#	  status line (Alain Bench).
#
# 2007-03-03
#	* add Newbury Data entries (Jean-Charles Billaud).
#
# 2007-06-10
#	* corrected xterm+pcf2 modifiers for F1-F4, match xterm #226 -TD
#
# 2007-07-14
#	* restore section of pre-ncurses-4.2 changelog to fix attribution -TD
#	* add konsole-256color entry -TD
#
# 2007-08-18
#	* add 9term entry (request by Juhapekka Tolvanen) -TD
#
# 2007-10-13
#	* correct kIC in rxvt+pcfkeys (prompted by Debian #446444) -TD
#	* add shift-control- and control-modified keys for rxvt editing
#	  keypad -TD
#	* update mlterm entry to 2.9.3 -TD
#	* add mlterm+pcfkeys -TD
#
# 2007-10-20
#	* move kLFT, kRIT, kind and kri capabilities from xterm-new to
#	  xterm+pcc0, etc., to make the corresponding building blocks reflect
#	  xterm's capabilities -TD
#	* add mrxvt entry -TD
#	* add xterm+r6f2, use in mlterm and mrxvt entries -TD
#
# 2007-11-03
#	* correct acsc strings for h19 and z100 (Benjamin Sittler)
#
# 2007-11-11
#	* use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to
#	  xterm starting with xterm patch #216 -TD
#	* make legacy xterm entries such as xterm-24 inherit from xterm-old,
#	  to match xterm #230 -TD
#	* extend xterm+pccX entries to match xterm #230 -TD
#	* add xterm+app, xterm+noapp, from xterm #230 -TD
#	* add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD
#
# 2008-04-19
#	* add screen.rxvt -TD
#
# 2008-04-28
#	* add screen+fkeys (prompted by Debian #478094) -TD
#
# 2008-06-28
#	* add screen.mlterm -TD
#	* improve mlterm and mlterm+pcfkeys -TD
#
# 2008-08-23
#	* add Eterm-256color, Eterm-88color -TD
#	* add rxvt-88color -TD
#
# 2008-10-12
#	* add teraterm4.59 entry, use that as primary teraterm entry, rename
#	  original to teraterm2.3 -TD
#	* update "gnome" to 2.22.3 -TD
#	* update "konsole" to 1.6.6 -TD
#	* add "aterm" -TD
#	* add "linux2.6.26" -TD
#
# 2008-11-15
#	* change several \E[2g (clear tab at current column) to \E[3g
#	  (clear all tabs) to match definition for tbc capability -TD
#
# 2008-11-29
#	* add eterm-color -TD
#
# 2009-01-10
#	* add screen.Eterm -TD
#
# 2009-03-28
#	* correct typo in pfkey of ansi.sys-old
#	  (report by Kalle Olavi Niemitalo)
#	* move function- and cursor-keys from emx-base to ansi.sys, and create
#	  a pfkey capability which handles F1-F48 -TD
#
# 2009-05-02
#	* add vwmterm entry (Bryan Christ)
#
# 2009-09-19
#	* change ncv and op capabilities in sun-color to match Sun's entry for
#	  this (report by Laszlo Peter)
#	* improve interix smso by using reverse rather than bold (report by
#	  Kristof Zelechovski).
#
# 2009-10-03
#	* remove unnecessary kcan assignment to ^C from putty (Sven Joachim)
#	* add linux-16color (Benjamin Sittler)
#	* correct initc capability of linux-c-nc end-of-range (Benjamin Sittler)
#	* similar change for dg+ccc and dgunix+ccc (Benjamin Sittler)
#	* add ccc and initc capabilities to xterm-16color -TD
#
# 2009-10-31
#	* updated nsterm* entries (Benjamin Sittler, prompted by GenToo #206201)
#
# 2009-12-12
#	* updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta)
#
# 2009-12-19
#	* add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler)
#	* rename minix to minix-1.7, add minix entry for Minix3 -TD
#
# 2009-12-26
#	* add bterm (bogl 0.1.18) -TD
#	* minor fix to rxvt+pcfkeys -TD
#
# 2010-02-06
#	* update mrxvt to 0.5.4, add mrxvt-256color -TD
#
# 2010-02-13
#	* add several screen-bce.XXX entries -TD
#
# 2010-02-23
#	* modify screen-bce.XXX entries to exclude ech, since screen's color
#	  model does not clear with color for that feature -TD
#
# 2010-03-20
#	* rename atari and st52 to atari-old, st52-old, use newer entries from
#	  FreeMiNT by Guido Flohr (from patch/report by Alan Hourihane).
#
# 2010-06-12
#	* add mlterm-256color entry -TD
#
# 2010-07-17
#	* add hard-reset for rs2 to wsvt25 to help ensure that reset ends
#	  the alternate character set (patch by Nicholas Marriott)
#
# 2010-08-28
#	* improve acsc for vt52 (Benjamin Sittler)
#	* modify nsterm entries for consistent sgr/sgr0 -TD
#	* modify xnuppc entries for consistent sgr/sgr0 -TD
#	* add invis to tek4115 sgr -TD
#
# 2010-09-11
#	* reformat acsc strings to canonical format -TD
#
# 2010-09-25
#	* add "XT" capability to entries for terminals that support both
#	  xterm-style mouse- and title-controls, for "screen" which
#	  special-cases TERM beginning with "xterm" or "rxvt" -TD
#
# 2010-10-02
#	* fill in no-parameter forms of cursor-movement where a parameterized
#	  form is available -TD
#	* fill in missing cursor controls where the form of the controls is
#	  ANSI -TD
#	* add parameterized cursor-controls to linux-basic (report by Dae) -TD
#
# 2010-10-09
#	* correct comparison used for setting 16-colors in linux-16color
#	  entry (Novell #644831) -TD
#	* improve linux-16color entry, using "dim" for color-8 which makes it
#	  gray rather than black like color-0 -TD
#
# 2010-11-20
#	* make "vte" the principal entry defining "gnome", since GNOME terminal
#	  is merely one of several terminals whose behavior is provided by this
#	  library -TD
#
# 2010-11-27
#	* fix typo in rmso for tek4106 -Goran Weinholt
#
# 2010-12-11
#	* suppress ncv in screen entry, allowing underline -Alejandro R. Sedeno
#	* also suppress ncv in konsole-base -TD
#
# 2011-02-05
#	* add U8 feature to denote entries for terminal emulators which do not
#	  support VT100 SI/SO when processing UTF-8 encoding -TD
#	* add xterm-utf8 as a demo of the U8 feature -TD
#
# 2011-02-20
#	* add cons25-debian entry (Brian M Carlson, Debian #607662).
#
# 2011-06-11
#	* update minix entry to minix 3.2 (Thomas Cort).
#
# 2011-07-09
#	* fix inconsistent tabset path in pcmw (Todd C. Miller).
#	* remove a backslash which continued comment, obscuring altos3
#	  definition with OpenBSD toolset (Nicholas Marriott).
#
# 2011-07-16
#	* add/use xterm+tmux chunk from xterm #271 -TD
#	* resync xterm-new entry from xterm #271 -TD
#	* add E3 extended capability to linux-basic (Miroslav Lichvar)
#	* add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD
#	* add SI/SO change to linux2.6 entry (Debian #515609) -TD
#
# 2011-07-21
#	* add kich1 to sun (Yuri Pankov)
#	* use bold rather than reverse for smso in sun-color (Yuri Pankov).
#
# 2011-08-06
#	* corrected k9 in dg460-ansi, add other features based on manuals -TD
#
# 2011-08-20
#	* minor cleanup of X-terminal emulator section -TD
#	* add terminator entry -TD
#	* add simpleterm entry -TD
#
# 2011-09-10
#	* add xterm+kbs fragment from xterm #272 -TD
#
# 2011-11-12
#	* add pccon entries for OpenBSD console (Alexei Malinin)
#
# 2011-12-17
#	* corrected old changelog comments -TD
#
# 2011-11-24
#	* add putty-sco -TD
#
# 2012-01-28
#	* add mach-gnu (Samuel Thibault)
#	* add mach-gnu-color, tweaks to mach-gnu -TD
#	* make sgr for sun-color agree with smso -TD
#	* make sgr for prism9 agree with other caps -TD
#	* make sgr for icl6404 agree with other caps -TD
#	* make sgr for ofcons agree with other caps -TD
#	* make sgr for att5410v1, att4415, att620 agree with other caps -TD
#	* make sgr for aaa-unk, aaa-rv agree with other caps -TD
#	* make sgr for avt-ns agree with other caps -TD
#
# 2012-02-11
#	* make sgr for xterm-pcolor agree with other caps -TD
#	* make sgr for att5425 agree with other caps -TD
#	* make sgr for att630 agree with other caps -TD
#	* make sgr for linux entries agree with other caps -TD
#	* make sgr for tvi9065 agree with other caps -TD
#	* make sgr for ncr260vt200an agree with other caps -TD
#	* make sgr for ncr160vt100pp agree with other caps -TD
#	* make sgr for ncr260vt300an agree with other caps -TD
#	* make sgr for aaa-60-dec-rv, aaa+dec agree with other caps -TD
#	* make sgr for cygwin, cygwinDBG agree with other caps -TD
#
# 2012-03-31
#	* correct order of use-clauses in st-256color -TD
#
# 2012-04-01
#	* revert 2011-07-16 change to "linux" alias, return to "linux2.2" -TD
#
# 2012-04-14
#	* document all of the user-defined capabilities in one place -TD
#	* add XT to some places to improve usefulness for other applications
#	  than screen, which would like to pretend that xterm's title is
#	  a status-line. -TD
#	* change use-clauses in ansi-mtabs, hp2626, and hp2622 based on review
#	  of ordering and overrides -TD
#
# 2012-04-21
#	* add msgr to vt420, similar DEC vtXXX entries -TD
#	* add several missing vt420 capabilities from vt220 -TD
#	* factor out ansi+pp from several entries -TD
#	* change xterm+sl and xterm+sl-twm to include only the status-line
#	  capabilities and not "use=xterm", making them more generally useful
#	  as building-blocks -TD
#	* add dec+sl building block, as example -TD
#
# 2012-04-28
#	* fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
#	* add eslok flag to dec+sl -TD
#	* dec+sl applies to vt320 and up -TD
#	* drop wsl width from xterm+sl -TD
#	* reuse xterm+sl in putty and nsca-m -TD
#	* add ansi+tabs to vt520 -TD
#	* add ansi+enq to vt220-vt520 -TD
#
# 2012-05-05
#	* remove p6 (bold) from opus3n1+ for consistency -TD
#	* remove acs stuff from env230 per clues in Ingres termcap -TD
#	* modify env230 sgr/sgr0 to match other capabilities -TD
#	* modify smacs/rmacs in bq300-8 to match sgr/sgr0 -TD
#	* make sgr for dku7202 agree with other caps -TD
#	* make sgr for ibmpc agree with other caps -TD
#	* make sgr for tek4107 agree with other caps -TD
#	* make sgr for ndr9500 agree with other caps -TD
#	* make sgr for sco-ansi agree with other caps -TD
#	* make sgr for d410 agree with other caps -TD
#	* make sgr for d210 agree with other caps -TD
#	* make sgr for d470c, d470c-7b agree with other caps -TD
#
# 2012-05-12
#	* rewrite vt520 entry based on vt420 -TD
#	* corrected 'op' for bterm (report by Samuel Thibault) -TD
#
# 2012-06-02
#	* add kdch1 to wsvt25 entry from NetBSD CVS (reported by David Lord,
#	  analysis by Martin Husemann).
#	* add cnorm/civis to wsvt25 entry from NetBSD CVS (report/analysis by
#	  Onno van der Linden).
#	* add kdch1 aka "Remove" to vt220 and vt220-8 entries -TD
#	* add kdch1, etc., to qvt108 -TD
#	* add dl1/il1 to some entries based on dl/il values -TD
#	* add dl to simpleterm -TD
#
# 2012-06-10
#	* modify some older xterm entries to align with xterm source -TD
#	* separate "xterm-old" alias from "xterm-r6" -TD
#
# 2012-07-28
#	* add E3 to xterm-basic and putty -TD
#
# 2012-08-11
#	* add nsterm-256color, make this the default nsterm -TD
#	* remove bw from nsterm-bce, per testing with tack -TD
#
# 2012-10-12
#       * add vte-2012, gnome-2012, making these the defaults for vte/gnome
#	  (patch by Christian Persch).
#
# 2012-11-02
#	* reviewed vte-2012, reverted most of the change since it was incorrect
#	  based on testing with tack -TD
#	* un-cancel the initc in vte-256color, since this was implemented
#	  starting with version 0.20 in 2009 -TD
#
# 2013-03-16
#	* correct typo in sgr string for sun-color,
#	  add bold for consistency with sgr,
#	  change smso for consistency with sgr -TD
#	* correct typo in sgr string for terminator -TD
#	* add blink to the attributes masked by ncv in linux-16color (report
#	  by Benjamin Sittler)
#
# 2013-03-23
#	* change initialization for vt220, similar entries for consistency
#	  with cursor-key strings (NetBSD #47674) -TD
#	* further improvements to linux-16color (Benjamin Sittler)
#
# 2013-05-11
#	* move nsterm-related entries out of "obsolete" section to more
#	  plausible "ansi consoles" -TD
#	* additional cleanup of table-of-contents by reordering -TD
#
# 2013-06-07
#	* added note to clarify Terminal.app's non-emulation of the various
#	  terminal types listed in the preferences dialog -TD
#
# 2013-11-02
#	* use TS extension to describe xterm's title-escapes -TD
#	* modify terminator and nsterm-s to use xterm+sl-twm building block -TD
#	* update hurd.ti, add xenl to reflect 2011-03-06 change in
#	  http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/display.c
#	  (Debian #727119).
#	* simplify pfkey expression in ansi.sys -TD
#
# 2013-11-10
#	* split-out building blocks xterm+sm+1002 and xterm+sm+1003 -TD
#
# 2014-02-22
#	* updated notes for wsvt25 based on tack and vttest -TD
#	* add teken entry to show actual properties of FreeBSD's "xterm"
#	  console -TD
#
# 2014-03-22
#	* add terminology entry -TD
#	* add mlterm3 entry, use that as "mlterm" -TD
#	* inherit mlterm-256color from mlterm -TD
#
# 2014-03-23
#	* fix typo in "mlterm" entry (report by Gabriele Balducci) -TD
#
# 2014-03-30
#	* cancel ccc in putty-256color and konsole-256color for consistency
#	  with the cancelled initc capability (patch by Sven Zuhlsdorf).
#	* add xterm+256setaf building block for various terminals which only
#	  get the 256-color feature half-implemented -TD
#	* updated "st" entry (leaving the 0.1.1 version as "simpleterm") to
#	  0.4.1 -TD
#
# 2014-05-03
#	* add vt520ansi (Mike Gran)
#
# 2014-05-24
#	* correct several entries which had termcap-style padding used in
#	  terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD
#	* correct syntax for padding in some entries: dg211, h19 -TD
#	* correct ti924-8 which had confused padding versus octal escapes -TD
#	* correct padding in sbi entry -TD
#
# 2014-06-07
#	* update xterm-new to xterm patch #305 -TD
#	+ change screen's smso to use SGR 7 (ECMA-80 reverse) rather than SGR 3
#	  (italic).  This was a long-ago typo in screen 3.1.1 which was
#	  overlooked until a few terminal emulators implemented the feature -TD
#
# 2014-06-09
#	> fix regression in screen terminfo entries (reports by Christian
#	  Ebert, Gabriele Balducci) -TD
#	+ revert the change to screen; see notes for why this did not work -TD
#	+ cancel sitm/ritm for entries which extend "screen", to work around
#	  screen's hardcoded behavior for SGR 3 -TD
#
# 2014-06-14
#	+ modify sgr for screen.xterm-new to support dim capability -TD
#	+ add dim capability to nsterm+7 -TD
#	+ cancel dim capability for iterm -TD
#	+ add dim, invis capabilities to vte-2012 -TD
#	+ add sitm/ritm to konsole-base and mlterm3 -TD
#
# 2014-10-06
#	+ add xterm-1005 and xterm-1006 entries, with suggested extension
#	  capability "xm" -TD
#
# 2014-10-07
#	+ update test-report for mrxvt -TD
#
# 2014-10-11
#	+ add xterm-x10mouse, xterm-x11mouse, etc. -TD
#
# 2014-10-18
#	+ reviewed terminology 0.6.1, add function key definitions.  None of
#	  the vt100-compatibility issues were improved -TD
#
# 2015-04-22
#	+ add 'dim' capability to screen entry (report by Leonardo B Schenkel)
#	+ add several key definitions to nsterm-bce to match preconfigured
#	  keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel)
#
# 2015-05-02
#	+ remove unnecessary ';' from E3 capabilities -TD
#	+ add tmux entry, derived from screen (patch by Nicholas Marriott).
#	+ split-out recent change to nsterm-bce as nsterm-build326, and add
#	  nsterm-build342 to reflect changes with successive releases of OSX
#	  (discussion with Leonardo B Schenkel)
#	+ add xon, ich1, il1 to ibm3161 (patch by Stephen Powell,
#	  Debian #783806)
#
# 2015-05-17
#	+ remove screen-bce.mlterm, since mlterm does not do "bce" -TD
#	+ add several screen.XXX entries to support the respective variations
#	  for 256 colors -TD
#
# 2015-05-23
#	+ add putty+fnkeys* building-block entries -TD
#
# 2015-05-30
#	+ remove spurious "%;" from st entry (report by Daniel Pitts) -TD
#	+ add vte-2014, update vte to use that -TD
#
# 2015-06-27
#	+ comment-out "screen.xterm" entry, and inherit screen.xterm-256color
#	  from xterm-new (report by Richard Birkett) -TD
#
# 2015-07-25
#	+ add status line to tmux via xterm+sl (patch by Nicholas Marriott).
#	+ fixes for st 0.5 from testing with tack -TD
#
# 2015-10-24
#	+ updated minitel entries to fix kel problem with emacs, and add
#	  minitel1b-nb (Alexandre Montaron).
#	+ reviewed/updated nsterm entry Terminal.app in OSX -TD
#	+ replace some dead URLs in commands with equivalents from the
#	  Internet Archive -TD
#
# 2015-11-14
#	+ add bold to pccon+sgr+acs and pccon-base (Tati Chevron).
#	+ add keys f12-f124 to pccon+keys (Tati Chevron).
#
# 2015-11-21
#	+ fix some inconsistencies in the pccon* entries -TD
#
# 2015-11-28
#	+ add viewdata (Alexandre Montaron).
#
# 2016-01-16
#	+ tidy up comments about hardcoded 256color palette (report by
#	  Leonardo Brondani Schenkel) -TD
#	+ add putty-noapp entry, and amend putty entry to use application mode
#	  for better consistency with xterm (report by Leonardo Brondani
#	  Schenkel) -TD
#
# 2016-04-23
#	+ add 'oc' capability to xterm+256color, allowing palette reset for
#	  xterm -TD
#
# 2016-05-14
#	+ modify linux2.6 entry to improve line-drawing -TD
#	+ make linux3.0 entry the default linux entry (Debian #823658) -TD
#
# 2016-05-29
#	+ modify rs1 for xterm-16color, xterm-88color and xterm-256color to
#	  reset palette using "oc" string as in linux -TD
#
# 2016-06-11
#	+ use ANSI reply for u8 in xterm-new, to reflect vt220-style responses
#	  that could be returned -TD
#	+ added a few capabilities fixed in recent vte -TD
#
# 2016-08-17
#	+ correct a typo in interix -TD
#
# 2016-09-24
#	+ updated minitel entries to use status line with screen(1), as well as
#	  printing special G2 videotex chars like french accentuated glyph
#	  using special cap XC= (patch by Alexandre Montaron).
#
# 2016-10-01
#	+ add linux-m1 minitel entries (patch by Alexandre Montaron).
#	+ correct rs2 string for vt100-nam -TD
#
# 2016-11-26
#	+ modify linux-16color to not mask dim, standout or reverse with the
#	  ncv capability -TD
#	+ add 0.1sec mandatory delay to flash capabilities using the VT100
#	  reverse-video control -TD
#	+ omit selection of ISO-8859-1 for G0 in enacs capability from linux2.6
#	  entry, to avoid conflict with the user-defined mapping.  The reset
#	  feature will use ISO-8859-1 in any case (Mikulas Patocka).
#
# 2016-12-30
#	+ merge current st description (report by Harry Gindi) -TD
#
# 2016-12-31
#	+ modify flash capability for linux and wyse entries to put the delay
#	  between the reverse/normal escapes rather than after -TD
#
# 2017-01-28
#	+ minor comment-fixes to help automate links to bug-urls -TD
#	+ add dvtm, dvtm-256color -TD
#	+ add settings corresponding to xterm-keys option to tmux entry to
#	  reflect upcoming change to make that option "on" by default
#	  (patch by Nicholas Marriott).
#	+ uncancel Ms in tmux entry (Harry Gindi, Nicholas Marriott).
#	+ add dumb-emacs-ansi -TD
#
# 2017-03-05
#	+ correct a few spelling errors in comments -TD
#	+ add fbterm -TD
#
# 2017-03-11
#	+ add vt100+4bsd building block, use that for older terminals rather
#	  than "vt100" which is now mostly used as a building block for
#	  terminal emulators -TD
#	+ modify vt100 rs2 string to reset vt52 mode and scrolling regions
#	  (report/analysis by Robert King) -TD
#
# 2017-04-01
#	+ minor fixes for vt100+4bsd, e.g., delay in sgr for consistency -TD
#	+ add smso for env230, to match sgr -TD
#	+ remove p7/protect from sgr in fbterm -TD
#	+ drop setf/setb from fbterm; setaf/setab are enough -TD
#	+ make xterm-pcolor sgr consistent with other capabilities -TD
#	+ add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic
#	  (discussion with Nicholas Marriott)
#
# 2017-04-22
#	+ correct missing comma-separator between string capabilities in
#	  icl6402 and m2-nam -TD
#	+ update formatting with ncurses 6.0.20170422 -TD
#	+ restore rmir/smir in ansi+idc to better match original ansiterm+idc,
#	  add alias ansiterm (report by Robert King).
#
# 2017-05-13
#	+ reformatted using hexadecimal numbers to improve readability -TD
#
# 2017-07-29
#	+ update interix entry using tack and SFU on Windows 7 Ultimate -TD
#	+ use ^? for kdch1 in interix (reported by Jonathan de Boyne Pollard)
#	+ add "rep" to xterm-new, available since 1997/01/26 -TD
#	+ move SGR 24 and 27 from vte-2014 to vte-2012 (request by Alain
#	  Williams) -TD
#
# 2017-08-16
#	+ update "iterm" entry -TD
#	+ add "iterm2" entry (report by Leonardo Brondani Schenkel) -TD
#
# 2017-08-18
#	+ update notes on user-defined capabilities -TD
#
# 2017-08-26
#	+ fixes for "iterm2" (report by Leonardo Brondani Schenkel) -TD
#
# 2017-11-11
#	+ add "op" to xterm+256setaf -TD
#	+ reviewed terminology 1.0.0 -TD
#	+ reviewed st 0.7 -TD
#
# 2017-11-18
#	+ modify old terminology entry and a few other terminal emulators to
#	  account for xon -TD
#	+ correct sgr string for tmux, which used screen's "standout" code
#	  rather than the standard code (patch by Roman Kagan)
#	+ correct sgr/sgr0 strings in a few other cases reported by tic, making
#	  those correspond to the non-sgr settings where they differ, but
#	  otherwise use ECMA-48 consistently:
#	  jaixterm, aixterm, att5420_2, att4424, att500, decansi, d410-7b,
#	  dm80, hpterm, emu-220, hp2, iTerm2.app, mterm-ansi, ncrvt100an,
#	  st-0.7, vi603, vwmterm -TD
#
# 2017-12-30
#	+ add xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title
#	  blocks from xterm #331 -TD
#	+ add xterm+direct, xterm+indirect, xterm-direct entries from xterm
#	  #331 -TD
#	+ modify xterm+256color and xterm+256setaf to use correct number of
#	  color pairs, for ncurses 6.1 -TD
#	+ add rs1 capability to xterm-256color -TD
#	+ modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs to
#	  match xterm #272, reflecting packager's changes -TD
#	+ remove "boolean" Se, Ss from st-0.7 -TD
#
# 2018-01-04
#	+ add konsole-direct and st-direct -TD
#	+ remove unsupported "Tc" capability from st-0.7; use st-direct if
#	  direct-colors are wanted -TD
#
# 2018-01-17
#	+ add vte-direct -TD
#	+ add XT, hpa, indn, and vpa to screen, and invis, E3 to tmux (patch by
#	  Pierre Carru)
#
# 2018-01-21
#	+ use xterm+sm+1006 in xterm-new, vte-2014 -TD
#	+ use xterm+x11mouse in iterm, iterm2, mlterm3 because xterm's 1006
#	  mode does not work with those programs.  konsole is debatable -TD
#	+ add "termite" entry (report by Markus Pfeiffer) -TD
#
# 2018-01-27
#	+ trim "XT" from screen entry -TD
#	+ modify iterm to use xterm+sl-twm building block -TD
#	+ mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting
#	  konsole's removal in 2008 -TD
#	+ expanded the history section of konsole to explain its flawed
#	  imitation of xterm's keyboard -TD
#	+ use xterm+x11mouse in screen.* entries because screen does not yet
#	  support xterm's 1006 mode -TD
#	+ add nsterm-build400 for macOS 10.13 -TD
#	+ add ansi+idc1, use that in ansi+idc adding dch for consistency -TD
#	+ update vte to vte-2017 -TD
#	+ add ecma+strikeout to vte-2017 -TD
#	+ add iterm2-direct -TD
#	+ updated teraterm, added teraterm-256color -TD
#	+ add mlterm-direct -TD
#	+ add descriptions for ANSI building-blocks -TD
#
# 2018-02-24
#	+ correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
#	+ fix remaining flash capabilities with trailing mandatory delays -TD
#
# 2018-03-17
#	+ trim some redundant capabilities from st-0.7 -TD
#	+ trim unnecessary setf/setb from interix -TD
#
# 2018-05-19
#	+ trim spurious whitespace from tmux in 2018-02-24 changes;
#	  fix some inconsistencies in/between tmux- and iterm2-entries for SGR
#	  (report by C Anthony Risinger)
#	+ improve iterm2 using some xterm features which it has adapted -TD
#
# 2018-06-30
#	+ add acsc string to vi200 (Nibby Nebbulous)
#	  add right/down-arrow to vi200's acsc -TD
#
# 2018-07-21
#	+ corrected acsc for wy50 -TD
#	+ add wy50 and wy60 shifted function-keys as kF1 to kF16 -TD
#	+ remove ansi+rep mis-added to interix in 2018-02-23 -TD
#
# 2018-07-28
#	+ fix typo in tvi955 -TD
#	+ corrected acsc for regent60 -TD
#	+ add alias n7900 -TD
#
# 2018-09-29
#	+ corrected acsc for tvi950 -TD
#	+ remove bogus kf0 from tvi950 -TD
#	+ added function-key definitions to agree with TeleVideo 950 manual -TD
#	+ add bel to tvi950 -TD
#	+ add shifted function-keys to regent60 -TD
#	+ renumber regent40 function-keys to match manual -TD
#	+ add cd (clr_eos) to adds200 -TD
#
# 2018-10-27
#	+ add OpenGL clients alacritty and kitty -TD
#	+ add Smulx for tmux, vte-2018 -Nicholas Marriott
#
# 2018-12-15
#	+ fix a typo in comments (Aaron Gyes).
#	+ add nsterm-build309 to replace nsterm-256color, assigning the latter
#	  as an alias of nsterm, to make mouse work with nsterm-256color -TD
#	+ base gnome-256color entry on "gnome", not "vte", for consistency -TD
#
# 2019-01-12
#	+ add nsterm-direct -TD
#	+ use SGR 1006 mouse for konsole-base -TD
#	+ use SGR 1006 mouse for putty -TD
#	+ add ti703/ti707, ti703-w/ti707-w (Robert Clausecker)
#
# 2019-02-23
#	+ fix typo in adds200 -TD
#
# 2019-03-30
#	+ add "screen5", to mention italics (report by Stefan Assmann)
#	+ modify description of xterm+x11hilite to eliminate unused p5 -TD
#
# 2019-05-18
#	+ update xterm-new to xterm patch #345 -TD
#	+ add/use xterm+keypad in xterm-new (report by Alain D D Williams) -TD
#	+ update terminator entry -TD
#	+ remove hard-tabs from ti703 (report by Robert Clausecker)
#	+ add Smol/Rmol for tmux, vte-2018 -Nicholas Marriott
#
# 2019-06-01
#	+ add rs1 to konsole, mlterm -TD
#
# 2019-06-08
#	+ add mintty, mintty-direct (Thomas Wolff)
# 2019-06-09
#	+ comment-out some user-defined capabilities in mintty+common to allow
#	  builds with existing releases 5.9-6.1 -TD
#
# 2019-06-30
#	+ add ms-terminal -TD
#	+ add vscode, vscode-direct -TD
#	+ use ecma+index in screen, st -TD
#
# 2019-07-06
#	+ add domterm -TD
#	+ improve comments for recent changes, add alias xterm.js -TD
#
# 2019-08-03
#	+ amend the change to screen, because tmux relies upon that entry
#	  and does not support that feature (Debian #933572) -TD
#	+ updated ms-terminal entry & notes -TD
#	+ updated kitty entry & notes -TD
#	+ updated alacritty+common entry & notes -TD
#	+ use xterm+sl-twm for consistency -TD
#
# 2019-09-22
#	+ correct a comment -TD
#
# 2019-10-26
#	+ modify linux-16color to accommodate Linux console driver change in
#	  early 2018 (report by Dino Petrucci).
#
# 2019-11-02
#	+ add "xterm-mono" to help packagers (report by Sven Joachim) -TD
#
# 2019-11-09
#	+ drop ich1 from rxvt-basic, Eterm and mlterm to improve compatibility
#	  with old non-curses programs -TD
#	+ reviewed st 0.8.2, updated some details -TD
#	+ use ansi+rep several places -TD
#
# 2020-01-12
#	+ update alacritty entries for 0.4.0 (prompted by patch by
#	  Christian Duerr) -TD
#
# 2020-01-18
#	+ spelling fixes per codespell -TD
#	+ improve xm example for xterm+x11mouse, xterm+sm+1006 -TD
#
# 2020-02-22
#	+ improve vt50h and vt52 based on DECScope manual -TD
#	+ add/use vt52+keypad and vt52-basic -TD
#
# 2020-04-18
#	+ use vt52+keypad in xterm-vt52, from xterm #354 -TD
#
# 2020-04-25
#	+ use vt100+fnkeys in putty -TD
#
# 2020-05-02
#	+ add details on the change to Linux SGR 21 in 2018 -TD
#	+ add xterm-direct16 and xterm-direct256 -TD
#
# 2020-05-03
#	+ fix some dead URLs -TD
#
# 2020-05-16
#	+ update notes on vscode / xterm.js -TD
#
# 2020-05-30
#	+ re-enable "bel" in konsole-base (report by Nia Huang)
#	+ add linux-s entry (patch by Alexandre Montaron).
#
# 2020-06-06
#	+ add xterm+256color2, xterm+88color2, to deprecate nonstandard usage
#	  in xterm+256color, xterm+88color -TD
#	+ add shifted Linux console keys in linux+sfkeys entry for
#	  screen.linux (report by Alexandre Montaron).
#	+ use vt100+enq in screen (report by Alexandre Montaron).
#	+ add screen.linux-s alias (suggested by Alexandre Montaron).
#
# 2020-07-11
#	+ fix pound-sign mapping in acsc of linux2.6 entry (report by Ingo
#	  Bruckl).
#
# 2020-08-28
#	+ correct icl6404 csr (report by Florian Weimer).
#	+ correct ti916 cup (report by Florian Weimer).
#	+ improve ndr9500 (report by Florian Weimer).
#
# 2020-09-05
#	+ correct description of vt330/vt340 (Ross Combs).
#
# 2020-09-19
#	+ update mlterm3 for 3.9.0 (report by Premysl Eric Janouch).
#
# 2020-09-29
#	+ add tmux-direct (tmux #2370)
#	+ simplify mlterm initialization with DECSTR -TD
#	+ change tmux's kbs to ^? (report by Premysl Eric Janouch)
#
# 2020-10-10
#	+ correct sgr in aaa+rv (report by Florian Weimer) -TD
#	+ fix some sgr inconsistencies in d230c, ibm6153, ibm6154,
#	  ncrvt100an -TD
#
# 2020-10-17
#	+ expanded notes about tek4107 -TD
#
# 2020-11-07
#	+ update kitty+common -TD
#	+ add putty+screen and putty-screen (suggested by Alexandre Montaron).
#
# 2020-11-28
#	+ add Smulx to alacritty (Christian Duerr).
#	+ add rep to PuTTY -TD
#	+ add putty+keypad -TD
#
# 2020-12-05
#	+ correct mlterm3 kf1-kf4 (Debian #975322) -TD
#	+ add flash to mlterm3 -TD
#
# 2020-12-27
#	+ update terminology to 1.8.1 -TD
#
# 2021-01-16
#	+ add comment for linux2.6 regarding CONFIG_CONSOLE_TRANSLATIONS
#	  (report by Patrick McDermott) -TD
#
# 2021-01-25
#	+ split-out att610+cvis, vt220+cvis, vt220+cvis8 -TD
#	+ add vt220-base, for terminal emulators which generally have not
#	  supported att610's blinking cursor control -TD
#	+ use vt220+cvis in vt220, etc -TD
#	+ use att610+cvis, xterm+tmux and ansi+enq in kitty -TD
#	+ use vt220+cvis in st, terminology, termite since they ignore
#	  blinking-cursor detail in att610+cvis -TD
#
# 2021-02-20
#	+ add/use vt220+pcedit and vt220+vtedit  -TD
#	+ add scrt/securecrt and absolute -TD
#	+ add nel to xterm-new, though supported since X11R5 -TD
#	+ add/use xterm+nofkeys -TD
#	+ move use of ecma+italics from xterm-basic to xterm+nofkeys -TD
#
# 2021-02-27
#	+ remove a duplicate "use" in xterm-vt220 -TD
#
# 2021-03-14
#	+ correct use-ordering in some xterm-direct flavors -TD
#
# 2021-03-20
#	+ add hterm, hterm-256color (Mike Frysinger)
#
# 2021-06-26
#	+ use default colors in pccon "op" -TD
#	+ correct rmacs/smacs in aaa+dec, aaa+rv -TD
#	+ add hpterm-color2 and hp98550-color (Martin Trusler)
#
# 2021-07-17
#	+ correct typo in "vip" comments (report by Nick Black), reviewed this
#	  against Glink manual -TD
#	+ fill in some missing pieces for pccon, to make it comparable to the
#	  vt220 entry -TD
#
# 2021-07-24
#	+ trim "flash" from pccon+base -TD
#	+ revert change for aaa+rv -TD
#	+ add workaround for Windows Terminal's problems with CR/LF mapping to
#	  ms-terminal (patch by Juergen Pfeifer).
#	+ review/update current Windows Terminal vs ms-terminal -TD
#
# 2021-07-31
#	+ add extensions in xterm+tmux and ecma+strikeout to ms-terminal,
#	  but cancel the non-working Cr and Ms capabilities -TD
#	+ add foot and foot-direct -TD
#
# 2021-08-15
#	+ fix missing "%d" for setaf/setab code 8-15 in xterm+direct16 (report
#	  by Florian Weimer) -TD
#
# 2021-08-16
#	+ corrected tsl capability for terminator -TD
#
# 2021-09-04
#	+ modify linux3.0 entry to reflect default mapping of shift-tab by
#	  kbd 1.14 (report by Jan Engelhardt) -TD
#
# 2021-09-11
#	+ add testing note for xterm-{hp|sco|sun} -TD
#	+ corrected description for ansi.sys-old -TD
#	+ add xterm+nopcfkeys, to fill in keys for xterm-hp, xterm-sun -TD
#	+ use hp+arrows in a few places -TD
#	+ use hp+pfk-cr in a few places -TD
#
# 2021-09-21
#	+ add kbeg to xterm+keypad to accommodate termcap applications -TD
#	+ add smglp and smgrp to vt420+lrmm, to provide useful data for the
#	  "tabs" +m option -TD
#
# 2021-10-09
#	+ fill in some details for infoton -TD
#	+ fix spelling/consistency in several descriptions -TD
#	+ use vt420+lrmm in vt420 -TD
#
# 2021-10-13
#	+ trim some redundant definitions -TD
#
######## SHANTIH!  SHANTIH!  SHANTIH!
