######## 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.1143 $
#	$Date: 2024/03/09 20:01:40 $
#
# 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 (1-based),
	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 home and cursor-keys,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	khome=\E[H,
ansi+apparrows|ANSI application-mode home and cursor-keys,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\EOH,
	use=ansi+arrows,
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 with invis,
	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),
	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, use=ansi+sgrbold,
	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,
	op=\E[39;49m, use=klone+color,

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, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, 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=ansi+local, 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 (relative addressing),
	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, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M$<5*/>,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED,
	kf1=\EOP, kf2=\EOR, kf4=\EOS, nel=\r\ED, ri=\EM, rmir=\E[4l,
	rmso=\E[m, rmul=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	use=ansi+arrows, use=ansi+csr, use=ansi+local1,

# 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, lines#24,
	bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
	home=\E[H, ht=^I, il1=\E[L, ind=\n, use=ansi+arrows,
	use=ansi+erase, use=ansi+inittabs, use=ansi+local1,
	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,
	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,
	kcbt=\E[Z, 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, vpa=\E[%i%p1%dd, use=ansi+local,
	use=ecma+index, use=pcansi-m,

# ECMA-48 addresses three of the four capabilities here:
#
# u6 -
#	8.3.14 CPR - ACTIVE POSITION REPORT
#	Notation: (Pn1;Pn2) Representation: CSI Pn1;Pn2 05/02
#	Parameter default values: Pn1 = 1; Pn2 = 1
#
# u7
#	8.3.35 DSR - DEVICE ST A TUS REPORT
#	Notation: (Ps) Representation: CSI Ps 06/14
#	Parameter default value: Ps = 0
#	DSR is used either to report the status of the sending device or to
#	request a status report from the receiving device, depending on the
#	parameter values:
#	6 a report of the active presentation position or of the active data
#	  position in the form of ACTIVE POSITION REPORT (CPR) is requested
#
# u9 -
#	8.3.24 DA - DEVICE ATTRIBUTES
#	Notation: (Ps) Representation: CSI Ps 06/03
#	Parameter default value: Ps = 0
#	With a parameter value not equal to 0, DA is used to identify the
#	device which sends the DA.  The parameter value is a device type
#	identification code according to a register which is to be established. 
#	If the parameter value is 0, DA is used to request an identifying DA
#	from a device.
#
# DEC (and most "ANSI") terminals reply with a private-mode ("?") sequence,
# but that register "which is to be" in ECMA-48 was never established.
# For terminals that support DA1, a more specific u8 capability is preferred,
# except for those (such as xterm) which can be configured to return different
# responses.
ansi+cpr|ncurses extension for ANSI CPR,
	u6=\E[%i%d;%dR, u7=\E[6n,
ansi+enq|ncurses extension for ANSI ENQ,
	u8=\E[?%[;0123456789]c, u9=\E[c, use=ansi+cpr,
# DEC terminals provided DECID, subsumed into DA1:
decid+cpr|ncurses extension for DECID,
	u8=\E[?%[;0123456789]c, u9=\EZ, use=ansi+cpr,

# 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, cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+cpr,
	use=ansi+local1, 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, 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+arrows, 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,
	civis=\Ef, clear=\EE, cnorm=\Ee, dl1=\EM, el1=\Eo, il1=\EL,
	is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, 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,
	rc=\Ek, rev=\Ep, rmso=\Eq, rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq,
	smso=\Ep, use=vt52-basic,
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, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, 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, 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, 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>,
	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,
	use=ansi+apparrows, use=ansi+csr, use=ansi+local,

# The entries for stv52 and stv52pc probably need a revision.
stv52|MiNT virtual console,
	am, msgr,
	lines#30,
	blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, cnorm=\E. \Ee,
	cub1=^H, cvvis=\E.", dim=\Em, dl1=\EM, il1=\EL, ind=\n$<2*/>,
	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, use=vt52-basic,
stv52pc|MiNT virtual console with PC charset,
	am, msgr,
	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,
	blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, cnorm=\E. \Ee,
	cub1=^H, cvvis=\E.", dim=\Em, dl1=\EM, il1=\EL, ind=\n$<2*/>,
	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, use=vt52-basic,

# 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, ri=\EI, rmso=\Eq, sgr0=\Eq,
	smso=\Ep, use=vt52+arrows,
# 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,
	cols#80, it#8, lines#25, ncv#5,
	bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, el1=\E[1K,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n,
	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~, khome=\E[1~, kspd=^Z,
	nel=\r\n, op=\E[m, rev=\E[7m, ri=\EM, rmkx=\E[?4l, rmso=\E[m,
	rmul=\E[24m, rs1=\Ec, setb=\E[%p1%{40}%+%cm,
	setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, 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=ansi+arrows, use=ansi+csr,
	use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, use=klone+color, use=vt220+pcedit,

#### Linux consoles
#

# release 1.2.13: 1995/03
#
# 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 (basic),
	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, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, 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~, kmous=\E[M, kspd=^Z,
	nel=\r\n, ri=\EM, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E]R,
	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, tbc=\E[3g, vpa=\E[%i%p1%dd, use=ansi+arrows,
	use=ansi+csr, use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, use=vt220+pcedit, use=vt102+enq,
	use=klone+sgr, use=ecma+color, use=linux+sfkeys,

linux+decid|ncurses extension for Linux console DECID,
	u8=\E[?6c, use=decid+cpr,

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,

# release 1.3: 1995/06
#
# 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,

# release 2.2: 1999/01
#
# 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,

# release 2.6: 2003/12 - 2004/12
#
# 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,

# release: 0.3.9b 1997/01 to 2000/05
#
# 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|Kanji ON Linux console,
	am, bce, ccc, eo, eslok, hs, mir, msgr, xenl, xon,
	it#8, ncv#18,
	bel=^G, civis=\E[?25l, cnorm=\E[?25h, cr=\r, cub1=^H,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m,
	dsl=\E[?H\E[?E, el1=\E[1K, fsl=\E[?F, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n,
	initc=\E]P%p1%x%p2%02x%p3%02x%p4%02x, kb2=\E[G, kbs=^?,
	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~, khome=\E[1~, kspd=^Z,
	nel=\r\n, op=\E[37;40m, ri=\EM, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec,
	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;11%;m,
	sgr0=\E[0;10m, tbc=\E[3g, tsl=\E[?T, u8=\E[?6c,
	vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr,
	use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, use=ansi+sgrbold, use=ecma+sgr,
	use=klone+color, use=vt220+pcedit,

# release: 0.4.7 2005/05
#
jfbterm|japanese framebuffer terminal,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	sgr0=\E[0m, use=kon,

# 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,
	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~, khome=\E[1~,
	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=ansi+arrows,
	use=vt220+pcedit, use=vt220+cvis,

#### Mach
#

# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
mach|Mach console,
	am, km, NQ,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r, cub1=^H,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, ind=\n, kbs=^?, 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, 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, use=ansi+arrows,
	use=ansi+idl, use=ansi+local,

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|GNU 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, NQ,
	it#8, ncv#18,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, cbt=\E[Z, clear=\Ec, cr=\r, cub1=^H, cvvis=\E[34l,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
	el1=\E[1K, flash=\Eg, ht=^I, ich=\E[%p1%d@, ind=\E[S,
	kb2=\E[G, kbs=^?, kcbt=\E[Z, 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~,
	khome=\E[1~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m,
	ri=\E[T, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	rs1=\EM\E[?1000l,
	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,
	smir=\E[4h, grbom=\E[>1l, gsbom=\E[>1h,
	use=ansi+apparrows, use=ansi+csr, use=ansi+cup,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+rca2, use=ansi+sgrbold, use=vt220+pcedit,
	use=ecma+index, use=ecma+italics, use=klone+acs,
	use=klone+color, 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, lines#25, ncv#19, pairs#64, wsl#80,
	acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, clear=\E[2J\E[H, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cup=\E[%i%p1%d;%p2%dH$<5>, 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, 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,
	kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, kcmd=\E[G,
	kcpy=\E[g, kctab=\E[z, 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,
	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, 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,
	tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+arrows,
	use=ansi+local, use=ansi+rep, use=ansi+inittabs,
	use=ansi+sgrbold, use=att610+cvis0, use=decid+cpr,
	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, NQ,
	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,
	cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=0;12C,
	dch=\E[%p1%dP, dch1=\E[P, dispc=\E[=%p1%dg, 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[@, ind=\E[S, invis=\E[8m, kbeg=\E[E,
	kcbt=\E[Z, 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, 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=ansi+arrows, use=ansi+idl,
	use=ansi+local, 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, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, 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, kcbt=\E[Z, 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, 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, use=ansi+arrows, use=ansi+idl, use=ansi+local,

iris-ansi-ap|IRIS ANSI in application-keypad mode,
	is2=\E[?1l\E=\E[?7h, kent=\EOM, 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@, rmul=\E[24m, rs1=\Ec,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	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=^?, 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~, krfr=^R, use=ansi+arrows,
	use=vt220+pcedit,
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,
	ncv#2,
	op=\E[49;39m, use=klone+color,
# 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, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, nel=\EE,
	ri=\EM, rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, smam=\E[?7h,
	smul=\E[4m, tbc=\E[3g, use=ansi+cpr, use=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+local,

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, cr=\r, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED,
	is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?,
	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, 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, 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=ansi+apparrows,
	use=ansi+csr, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=decid+cpr, 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),
	bce, xenl, xon,
	lines#30,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	blink=\E[5m$<2>, bold=\E[1m$<2>, cub1=^H, cud1=\n,
	cuf1=\E[C$<2>, cuu1=\E[A$<2>, invis=\E[8m$<2>, ka1=\E[q,
	ka3=\E[s, kb2=\E[r, kc1=\E[p, kc3=\E[n, 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, rev=\E[7m$<2>,
	rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
	rmul=\E[m$<2>,
	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>, use=ansi+csr,
	use=ansi+local, use=ecma+sgr, use=vt100+4bsd,
	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,
	kbs=^?, 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.  The emulator renders
# underlined text in red.  Colors are otherwise usable.  NetBSD developers
# prefer to not specify the corresponding ncv value.
#
# 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,
	colors#8, lines#25, pairs#64,
	is2=\E[r\E[25;1H, kdch1=\E[3~, kend=\E[8~, kf1=\E[11~,
	kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
	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, cr=\r, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[30;1m, ech=\E[%p1%dX, el1=\E[1K, home=\E[H,
	hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S,
	kb2=\E[E, kcbt=\E[Z, 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,
	kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rev=\E[7m,
	ri=\E[T, rmso=\E[m, rs2=\E[x\E[m\Ec, setb=\E[4%p1%dm,
	setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+local, use=ecma+index,

#### FreeBSD console entries

# Originally from termcap:
#
# 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.

# syscons, sc - the console driver
#
# 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 different 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,
	cols#80, it#8, lines#25, ncv#21,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cnorm=\E[=0C,
	cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=1C,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, ech=\E[%p1%dX,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, ind=\E[S, kb2=\E[E, kcbt=\E[Z, 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, 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,
	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=ansi+arrows,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ecma+index, use=klone+color,

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,

# vt - virtual terminal console driver
#
# 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
#
# Some of the documentation refers to this as "vt"; its proper name is "teken".
#
# The sc(4) manual page states that it is possible to switch between the two
# by editing /boot/loader.conf, adding
#	kern.vty=sc
# Doing that does not change the default TERM variable.  That is hard-coded in
# /etc/ttys, rather than deriving it from the kernel state.
#
# For FreeBSD 12 and 13:
# ---------------------
# In newer releases, it is no longer possible to boot into a configuration that
# works with syscons.  According to efi(4),
# "The vt(4) system console is automatically selected when booting via UEFI."
# See FreeBSD #264226.
#
# FreeBSD 13 supports 64-bit machines which boot with UEFI:
#	https://www.freebsd.org/platforms/
# The i386 platform does not use UEFI (and modifying the loader configuration
# does load sysconf); however because no updates (fixes) are available, most
# developers will regard that as unsupported.
#
# With FreeBSD 13, even when syscons is loaded (e.g., with the i386 platform),
# its function-keys are not configured.  Using
#	vidcontrol -T cons25
# repairs this.
#
# When teken is loaded, vidcontrol can switch at runtime between the
# teken/cons25 function keys:
#	vidcontrol -T cons25
#	vidcontrol -T xterm
# However due to a limitation in the implementation, only the first 12 function
# keys are available.  The real syscons supports 48 function keys (using the
# shift and control modifiers), while xterm supports more than twice as many.
#
# vidcontrol does not change the emulation. As a result, the quarter (17/73) of
# non-function key capabilities which differ between syscons and teken are
# unsupported in the UEFI-based configurations.
#
# tack:
#	VT100 line-drawing does not work (UTF-8 equivalents do).
#	Shift/control modifiers have no effect on special keys.
#	Meta does not work.
# vttest:
#	supports REP (repeat).
#	still does not support left/right margins
#	SU/SD work, but not SL/SR
#	alternate screen does not work
#	ENQ/DA1 is unimplemented (the terminal does not identify itself)
#	CPR, XCPR are unimplemented (i.e., vttest and resize are broken)
#	implements X11 (original) xterm-mouse.
# ncurses:
#	UTF-8 line-drawing works, including some double/thick lines
#
# 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-2018|teken as of 2018,
	bw@, mir, xenl, NQ,
	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, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	rmir=\E[4l, smir=\E[4h, tbc=\E[3g, use=vt220+cvis,
	use=cons25,

teken-2022|teken as of 2022,
	am, bce, eo, mir, msgr, npc, NQ,
	cols#80, it#8, lines#25, ncv#21, U8#1,
	bold=\E[1m, cr=\r, cub1=^H, dim=\E[30;1m, ech=\E[%p1%dX,
	ind=\E[S, kent=\r, nel=\E[E, op=\E[x, rev=\E[7m, ri=\E[T,
	rmso=\E[27m, rs2=\E[x\E[m\Ec,
	sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p5%t;30;1%;%?%p6%t;1%;m,
	sgr0=\E[m, use=vt220+cvis, use=ecma+index,
	use=ansi+arrows, use=ansi+csr, use=ansi+cup,
	use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, use=ansi+rca2, use=ansi+sgrso,
	use=ansi+tabs, use=klone+color,

teken-vt+fkeys|teken's xterm special keys,
	kend=\E[F, 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,
	use=vt220+pcedit,

teken-sc+fkeys|teken's syscons special keys,
	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,

teken-sc|teken imitating syscons,
	use=teken-sc+fkeys, use=teken-2022,

teken|teken-vt|teken imitating xterm,
	xenl, use=teken-vt+fkeys, use=xterm+x11mouse,
	use=teken-2022,

teken-16color|teken using 16 colors,
	use=ibm+16color, use=teken,

#### 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, cup=\E[%i%p1%2d;%p2%2dH,
	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, use=ansi+local1,

# 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, kich1=\E[L, kll=\E[F, knp=\E[G,
	kpp=\E[I, nel=\r\n, sgr0=\E[=R, use=ansi+arrows,

# 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ind=\n, 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=ansi+arrows, use=ansi+idl, use=ansi+local,
	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,
	lines#24,
	acsc=+h.k0affggolpnqprrss, rmacs=\EG, rmkx=\E>,
	smacs=\EF, smkx=\E=, u8=\E/[KL], use=vt50h, use=vt52-basic,

# 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, nel=\r\n, ri=\EI,
	use=vt52+arrows,

vt52+arrows|cursor keys for VT52,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,

#### 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 (kf1-kf4),
	kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	use=vt100+keypad,
vt100+fnkeys|DEC VT100 numeric keypad (kf0-kf10),
	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, ka2=\EOx,
	kb1=\EOt, kb3=\EOv, kc2=\EOr, use=vt100+pfkeys,
#
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, xenl, xon,
	vt#3,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1,
	lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r,
	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=ansi+csr, use=ansi+pp, use=decid+cpr, 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, 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>, 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, use=ansi+local,

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, 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, 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,
	sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr,

# 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, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH$<10>, dch1=\E[P, ed=\E[J$<50>,
	el=\E[K$<3>, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt100, ind=\ED$<20/>,
	is2=\E[1;24r\E[24;1H, 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~, khome=\E[1~, kich1=\E[2~,
	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,
	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=ansi+arrows, use=ansi+csr,
	use=ansi+idl1, use=ansi+local1, 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, cr=\r, cub1=^H, cud1=\n,
	dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
	enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt100, 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, 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, rev=\E[7m, ri=\EM,
	rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l,
	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=ansi+csr,
	use=ansi+cup, use=ansi+pp, use=ansi+enq, use=ansi+erase,
	use=ansi+idl, use=ansi+local, use=vt220+vtedit,

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, 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,
	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,
	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, smdc=,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
	use=ansi+csr, use=ansi+erase, 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, 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,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
	dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	kbs=^?, 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, 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,
	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=ansi+apparrows, use=ansi+csr, use=ansi+enq,
	use=ansi+idl, use=ansi+local, use=dec+pp, use=vt220+cvis,
	use=vt220+keypad, use=dec+sl,

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, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dsl=\E[2$~\r\E[1$}\E[K\E[$},
	flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, 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, 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,
	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=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+local, 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, 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,
	cub1=^H, cud1=\n, 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[$}, ht=^I, hts=\EH, 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, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\E<\E[?3l\E[!p\E[?7h,
	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, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, use=ansi+cup,
	use=ansi+idc, use=ansi+idl, use=ansi+local, 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH$<10>, dch=\E[%p1%dP, dch1=\E[P,
	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,
	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, 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,
	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=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+pp,
	use=ansi+local, use=dec+sl, use=vt220+cvis,
	use=vt420+lrmm, use=vt220+vtedit,

# 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, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, el1=\E[1K, ht=^I,
	hts=\EH, ind=\n, kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kent=\EOM, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	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=, tbc=\E[3g,
	use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=ansi+sgrbold, use=vt100+enq,
	use=vt100+pfkeys,

nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
	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, use=nsterm+7, use=vt100+4bsd,

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,
	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, use=nsterm+7, use=vt100+4bsd,

# 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,
	ncv#37,
	op=\E[0m, use=klone+color,

# 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,
	flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
	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~,
	vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C, use=ansi+idc,
	use=xterm+alt47, 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,

nsterm-build440|Terminal.app in MacOS 11.6.8,
	use=xterm+alt1049, use=nsterm-build400,

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

#### 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,
	bce, mir, npc, xenl, xon,
	wsl#50,
	blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, el1=\E[1K,
	flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
	kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?, kcbt=\E[Z, kdch1=\E[3~,
	kend=\EOF, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	knp=\E[6~, kpp=\E[5~, op=\E[0m, rev=\E[7m, ri=\EM,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	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, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, kEND5=\E[1;5F,
	kHOM5=\E[1;5H, use=ansi+apparrows, use=ansi+csr,
	use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, use=vt100+4bsd, use=vt100+keypad,
	use=vt100+pfkeys, use=xterm+alt47, use=xterm+sl-twm,
	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,
	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~, 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,
	use=bracketed+paste,

# 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, NQ,
	it#8,
	bold=\E[1m, cr=\r, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	dsl=\E]2;\007, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n,
	kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g,
	use=ansi+csr, use=ansi+erase, use=ansi+local,
	use=ansi+sgrso, use=ansi+sgrul, use=vt100+keypad,

xnuppc+c|Darwin PowerPC console ANSI color support,
	ncv#32, use=klone+color,

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,
	ncv@, 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, 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=linux+kbs, 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
# http://www.chiark.greenend.org.uk/~sgtatham/putty/
#
# PuTTY 0.78 (September 2020, tested 12 August 2023)
# Testing with tack:
#	implements cross-out text (shortly after 0.74)
#	restore kLFT as kLFT5, etc. (mentioned in October 2021)
#	does not support direct-colors (mentioned in July 2021)
#
# PuTTY 0.74 (27 June 2020)
#	(unchanged)
#
# 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,
	it#8, ncv#22, U8#1,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, cr=\r, cub1=^H, cud1=\ED, cup=\E[%i%p1%d;%p2%dH,
	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%;,
	ech=\E[%p1%dX, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	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, khome=\E[1~, kind=\E[B, kri=\E[A, kspd=^Z,
	nel=\r\n, oc=\E]R, op=\E[39;49m, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, 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,
	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, smir=\E[4h,
	smkx=\E[?1h\E=, vpa=\E[%i%p1%dd, E3=\E[3J,
	use=ansi+apparrows, use=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+local, use=ansi+tabs,
	use=ansi+rep, use=bracketed+paste, use=ecma+index,
	use=ecma+strikeout, use=klone+color, use=klone+sgr,
	use=putty+cursor, use=putty+fnkeys, use=vt220+pcedit,
	use=xterm+alt1049, use=vt102+enq, use=xterm+sm+1006,
	use=xterm+sl, use=vt100+fnkeys, use=putty+keypad,
	use=vt220+cvis,

# older versions (e.g., before 0.71) of PuTTY used a shift-modifier to toggle
# between normal- and application-mode for the cursor-keys.  That was dropped,
# and a few years later (after 0.74) restored as the control-modifier.
putty+cursor|PuTTY modified cursor-keys,
	kDN5=\E[B, kLFT5=\E[D, kRIT5=\E[C, kUP5=\E[A,
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,
	use=kitty+setal, 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=linux+kbs, use=ansi+rep,
	use=ecma+strikeout, use=ecma+index, use=vt420+lrmm,
	use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys,
	use=xterm+tmux, use=ecma+italics, use=xterm-basic,
	use=bracketed+paste, use=report+version,
# 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 2.3,
	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, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, 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=ansi+idl,
	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 4.59,
	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 4.97,
	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+,

# VT-UTF-8 and VT100+ Protocols
# https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-vuvp/969416c0-ccd6-4a75-a9b3-597d7713845b
#
# This Microsoft "protocol" adapted the aixterm 16-color feature from xterm's
# documentation in 2015, as seen in successive revisions:
#
# 2013/07/22 has 8 colors
# 2015/10/16 has 16 colors using SGR 90-97, 100-107 as well as SGR 24 and 27,
#            adds "informative" reference to xterm's ctlseqs
#
# The cnorm/civis definitions added in 2015 are unrelated to any standard.
ms-vt100-16color|VT-UTF-8 and VT100+,
	civis=\E[?h, cnorm=\E[?l, rmso=\E[27m, rmul=\E[24m,
	use=ibm+16color, use=ms-vt100+,

# Based on
# https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
# We use this scheme to map function keys
#       terminfo        modifier        code    keys
#       kf13-kf24       shift           2       F1 to F12
#       kf25-kf36       alt             3       F1 to F12
#       kf37-kf48       control         4       F1 to F12
#       kf49-kf60       ctrl-alt        7       F1 to F12
#
# Unclear: smam and rmam implemented?
# Unclear: rmkx, smkx, rmir, smir - irrelevant?
#
# TD:
# +	According to tack, tbc and cbt fail.
# +	The line-drawing (acsc) does not work in telnet or ssh.  I added the
#	U8 extension to tell ncurses to use UTF-8 for line-drawing (when the
#	locale uses UTF-8).  That won't work for telnet (which uses ASCII),
#	but seems to work for OpenSSH's ssh.  I set the codepage to 65001,
#	of course.
# +	Function keys... do not work consistently in telnet and ssh.  With
#	telnet, kf1-kf4 are \EOP to \EOS, and kf5-kf12 match the terminfo.
#	But with ssh, it's entirely different (reminds me of rxvt).
winconsole|Windows 10 new console,
	am, km, mir, msgr, xenl,
	ncv@, U8#1,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz~~,
	bel=^G, blink@, cr=\r, ech=\E[%p1%dX, el1=\E[0K, ich1@, ind=\n,
	invis@, is1=\E[!p, 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~, kf20=\E[19;2~,
	kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[24;2~,
	kf24=\E[25;2~, kf25=\E[11;3~, kf26=\E[12;3~,
	kf27=\E[13;3~, kf28=\E[14;3~, kf29=\E[15;3~,
	kf30=\E[17;3~, kf31=\E[18;3~, kf32=\E[19;3~,
	kf33=\E[20;3~, kf34=\E[21;3~, kf35=\E[24;3~,
	kf36=\E[25;3~, kf37=\E[11;4~, kf38=\E[12;4~,
	kf39=\E[13;4~, kf40=\E[14;4~, kf41=\E[15;4~,
	kf42=\E[17;4~, kf43=\E[18;4~, kf44=\E[19;4~,
	kf45=\E[20;4~, kf46=\E[21;4~, kf47=\E[24;4~,
	kf48=\E[25;4~, kf49=\E[11;7~, kf50=\E[12;7~,
	kf51=\E[13;7~, kf52=\E[14;7~, kf53=\E[15;7~,
	kf54=\E[17;7~, kf55=\E[18;7~, kf56=\E[19;7~,
	kf57=\E[20;7~, kf58=\E[21;7~, kf59=\E[24;7~,
	kf60=\E[25;7~, khome=\E[1~, nel=\r\n, ri=\E[T, rmacs=\E(B,
	rmir@, rmpch@, rs1=\E[!p,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t
	    \E(0%e\E(B%;,
	sgr0=\E[0m\E(B, smacs=\E(0, smir@, smpch@, use=ansi+arrows,
	use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idc,
	use=ansi+idl, use=ecma+index, use=ansi+inittabs,
	use=ansi+local, use=ecma+sgr, use=ecma+color,
	use=vt220+cvis, use=vt220+pcedit, use=xterm+nopcfkeys,

# Windows Terminal (Preview)
# https://github.com/microsoft/terminal
#
# Windows 10 22H2 (also Windows 11)
# Version 1.16.10261.0
#
# - Windows Terminal #1553: "Feature Request:  Mouse/Touch/Pointer Bindings
#   (like middle-click paste, right-click context menu, etc.)", compare to
#   https://learn.microsoft.com/en-us/windows/console/mouse-event-record-str
#   This appears to be related to a problem with its implementation of the
#   Console API; the mouse does not work in a "Command Window" (e.g., as used
#   in the ncurses MinGW driver), although escape sequences work.
#
# 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=linux+kbs, 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=linux+kbs,
	use=xterm+256setaf, use=ecma+index, use=xterm+focus,
	use=xterm+sm+1006, use=xterm+pcfkeys, use=ecma+italics,
	use=xterm-basic, use=bracketed+paste,
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, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, 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, use=ansi+idl,

# csl is extension which clears the status line
x10term+sl|status-line for X10 xterm,
	eslok, hs,
	dsl=\E[?H, fsl=\E[?F, tsl=\E[?E\E[?%i%p1%dT, csl=\E[?E,

# 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	hts=\EH, ind=\n, 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, rev=\E[7m, ri=\EM, 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,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;m,
	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, use=xterm+kbs, use=ansi+apparrows,
	use=ansi+csr, use=ansi+idc, use=ansi+idl, use=ansi+local,
	use=vt220+pcedit, use=vt100+enq,

# 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
	dch1=\E[P, ed=\E[J, el=\E[K, enacs=\E)0, home=\E[H, ht=^I,
	hts=\EH, 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,
	rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>,
	rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
	sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
	use=xterm+alt47, use=ansi+csr, use=ansi+idl,
	use=ansi+local, use=ansi+sgrso, use=ansi+sgrul,
	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, lines#24, ncv@,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, 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, ind=\n,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
	kbeg=\EOE, kbs=^?, 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~, kmous=\E[M, kslt=\E[4~,
	meml=\El, memu=\Em, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
	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>,
	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, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
	use=ansi+apparrows, use=ansi+csr, use=ansi+idc,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=xterm+alt47, use=xterm+kbs, use=vt100+enq,
	use=ecma+color, use=vt220+cvis, use=vt220+keypad,
	use=vt220+pcedit,

# 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, 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~,
	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 first block is for terminals which did not support blinking cursor.
att610+cvis0|AT&T 610 cursor-visibility,
	civis=\E[?25l, cnorm=\E[?12l\E[?25h,
att610+cvis|AT&T 610 cursor-visibility with blink,
	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, nel=\EE, use=ecma+index, use=ansi+rep,
	use=ecma+strikeout, use=vt420+lrmm, use=xterm+focus,
	use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
	use=xterm+keypad, use=xterm-basic,

xterm-p370|xterm patch #370,
	rv=\E\\[41;[1-6][0-9][0-9];0c,
	xr=\EP>\\|XTerm\\([1-9][0-9]+\\)\E\\\\,
	use=ecma+index, use=ansi+rep, use=ecma+strikeout,
	use=xterm+pcfkeys, use=xterm+nofkeys,
	use=bracketed+paste, use=report+version,
	use=xterm+focus,

xterm-p371|xterm patch #371,
	use=dec+sl, use=xterm-p370,

# This version reflects the current xterm features.
xterm-new|modern xterm terminal emulator,
	use=xterm-p370,

# This fragment is for people who cannot agree on what the backspace key
# should send.  The ncurses configure script option "--with-xterm-kbs" can
# set it to BS (standard) or DEL (Linux's notion of "vt220").  xterm provides
# either, depending on how the pseudoterminals are configured.
xterm+kbs|fragment for backspace key,
	kbs=^H,

# Use this fragment for terminals that always use DEL for "backspace".
linux+kbs|fragment for "backspace" key,
	kbs=^?,
#
# 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|xterm 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~,

vt100+noapp|fragment with cursor keys in normal mode,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	use=vt100+noapp+pc,

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,
	use=xterm+app+pc,

vt100+noapp+pc|fragment for noapp pc-style home/end,
	kend=\E[F, khome=\E[H,

xterm+app+pc|fragment for app pc-style home/end,
	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, 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,
	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~,
	kf60=\E[24;3~, kf61=\EO4P, kf62=\EO4Q, kf63=\EO4R,
	use=xterm+nopcfkeys,
#
xterm+pcf2|fragment with modifyFunctionKeys:2,
	kf1=\EOP, 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, 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~, kf60=\E[24;3~,
	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R,
	use=xterm+nopcfkeys,
#
# Chunks from xterm #230:
xterm+pce2|fragment with modifyCursorKeys:2 editing-keys,
	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
	kNXT=\E[6;2~, kPRV=\E[5;2~, 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,
	use=xterm+pc+edit, use=vt220+pcedit,

xterm+decedit|fragment for vt220 6-key editing-keypad,
	kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	use=xterm+vt+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+alt47|X11R4 alternate-screen,
	rmcup=\E[2J\E[?47l\E8, smcup=\E7\E[?47h,

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,
#
xterm+acs|ISO-2022 alternate character-switching for xterm,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	enacs@, rmacs=\E(B, smacs=\E(0,

# 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, lines#24, pairs#64,
	bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, 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,
	ich=\E[%p1%d@, ind=\n, is2=\E[!p\E[?3;4l\E[4l\E>,
	kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, ri=\EM,
	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>,
	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, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
	vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+csr, use=ansi+enq,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+pp, use=ansi+sgrbold, use=xterm+kbs,
	use=xterm+alt+title, use=att610+cvis, use=xterm+acs,
	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 (old building-block),
	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 (building-block),
	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 legacy building-block),
	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 (16-color building-block),
	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 (256-color building-block),
	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 (cursor style 2),
	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,
	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, 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, smam=\233?7h, smcup=\233?1049h,
	smir=\2334h, smkx=\233?1h\E=, smso=\2337m, smul=\2334m,
	tbc=\2333g, u6=\233[%i%d;%dR, u8=\233[?%[;0123456789]c,
	vpa=\233%i%p1%dd, use=ansi+enq, use=xterm+acs,
	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, kdch1=\EP, kend=\EF, khome=\Eh, kich1=\EQ, knp=\ES,
	kpp=\ET, use=hp+pfk-cr, use=vt52+arrows,
	use=xterm+nofkeys, use=xterm+nopcfkeys,

xterm-sco|xterm with SCO function keys,
	kbeg=\E[E, kbs=^?, 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,
	kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I,
	use=ansi+arrows, 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, kend=\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~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kmous=\E[M, 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+focus, use=xterm+sm+1006,
	use=xterm+tmux, use=xterm+keypad, use=xterm-basic,

xterm-vt52|xterm emulating DEC VT52,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	clear=\EH\EJ, rmacs=\EG, smacs=\EF, use=xterm+kbs,
	use=vt52+keypad, use=vt52-basic,

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 24-line (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.
# c) fsl ends the escape sequence begun by tsl.  Printable characters between
#    those (probably) will appear in the window title.  Nonprintable characters
#    may cause the escape sequence to end with an error.
# d) the BEL (^G or \007) used in the original title-as-statusline came from 
#    David J. MacKenzie's "pseudo-color" entry in 20 Apr 1995.  At that time
#    xterm used BEL as the string-terminator rather than ST (\E\\).  Either
#    BEL or ST has worked since xterm patch #28 in 1996, but most uses of
#    this feature have been embedded in shell scripts.
#
# But that issue regarding the parameter for tsl means that applications may
# not rely on it.  The SVr4 documentation says tsl will "move to status line,
# column #1".  At the point in time when ESR added DJM's "pseudo-color" entry
# with the split-up escape sequence for tsl/fsl, there were 65 entries using
# tsl:
#    32 used a parameter, matching the documentation (including x10term).
#    21 used a parameterless control, exiting from the status line on ^M.
#     6 used parameterless controls for tsl and fsl
#     6 used a split-up escape sequence, e.g., the same approach.
#
# 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;,
xterm+sl-alt|alternate access X title line,
	hs,
	dsl=\E]2;\E\\, fsl=\E\\, 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[0$~, 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,

# https://invisible-island.net/xterm/xterm-paste64.html
#
# Bracketed paste was introduced by xterm patch #203 in May 2005, as part of a
# larger feature for manipulating the clipboard selection.  Few terminals aside
# from xterm fully implement the clipboard feature, but several copy this
# detail.  The names for the extended capabilities here were introduced by vim
# in January 2017, but used internally.  In 2023, vim patch 9.0.1117 is needed
# to work with this change.
bracketed+paste|xterm bracketed paste,
	BD=\E[?2004l, BE=\E[?2004h, PE=\E[201~, PS=\E[200~,

# https://invisible-island.net/xterm/xterm.log.html#xterm_354
#
# The response is a DSR sequence identifying the version: DCS > | text ST
# For example:
#	^[P>|XTerm(354)^[\
report+version|Report xterm name and version (XTVERSION),
	XR=\E[>0q, xr=\EP>\\|[ -~]+\E\\\\, use=report+da2,

# Vim uses RV to denote the secondary device attributes.  Xterm documents the
# - first parameter as the terminal type (extending it to VT100),
# - the second as the patch number for xterm, and
# - the third parameter as zero.
# Other terminals may provide useful responses, though few are documented.
report+da2|report secondary device attributes (DA2),
	RV=\E[>c, rv=\E\\[[0-9]+;[0-9]+;[0-9]+c,

#### 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.
#
# These building blocks incorporate later features as well:
# xterm patch #224 (2007/2/11) added private mode 1004, for enabling/disabling
# focus in/out event reporting.
# xterm patch #277 (2012/01/07) added private mode 1006

xterm+sm+1002|xterm any-button mouse,
	kmous=\E[<, XM=\E[?1006;1004;1002%?%p1%{1}%=%th%el%;,
	xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
	use=xterm+focus,
xterm-1002|example of xterm any-button mouse,
	use=xterm+sm+1002, use=xterm,

xterm+sm+1003|xterm any-event mouse,
	XM=\E[?1006;1004;1003%?%p1%{1}%=%th%el%;,
	use=xterm+sm+1002,
xterm-1003|example of xterm any-event mouse,
	use=xterm+sm+1003, use=xterm,

# Some terminal emulators implement xterm focus in/out, but do it incorrectly,
# interfering with user applications.
# https://lists.gnu.org/archive/html/bug-ncurses/2023-10/msg00087.html
xterm+focus|xterm focus-in/out event "keys",
	XF,
	fd=\E[?1004l, fe=\E[?1004h, kxIN=\E[I, kxOUT=\E[O,

# 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 (building block),
	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 (building block),
	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,

# Some terminal emulators implement xterm focus in/out, but do it incorrectly,
# interfering with user applications.
# https://lists.gnu.org/archive/html/bug-ncurses/2023-10/msg00087.html
oldxterm+sm+1006|xterm SGR-mouse (building block),
	kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
	xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,

#### 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),
	XT,
	ncv@,
	acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~, enacs=,
	rmacs=\E(B, rmam=\E[?7l,
	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, use=x10term+sl,
	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, cud1=\n,
	dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K$<3>, enacs=\E(B\E)0,
	getm=\E[%p1%dY, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	ind=\n, 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, reqmp=\E[492Z, rev=\E[7m,
	ri=\EM, rmacs=^O, rmcup=\E@0\E[?4r,
	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,
	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,
	tbc=\E[3g, use=ansi+apparrows, use=ansi+csr,
	use=ansi+cup, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=ansi+sgrso, use=decid+cpr,
	use=vt100+fnkeys,

xtermc|xterm terminal emulator (color),
	ncv#7,
	op=\E[100m,
	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, use=klone+color,

# 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 was mentioned
#	http://unix.stackexchange.com/questions/119/colors-in-man-pages
# pointing to
#	http://nion.modprobe.de/blog/archives/569-colored-manpages.html
#	(blog posting by Nico Golde, June 24 2007)
# archive:
#	https://web-beta.archive.org/web/20070921042430/http://nion.modprobe.de/mostlike.txt
# The comment hints where it started, but there are differences:
#	Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
mostlike|manpages with color looking like most,
	OTbs@,
	bold=\E[1m\E[31m,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H,
	meml@, memu@, rev=\E[7m\E[34m,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sgr@,
	smso=\E[1;30m\E[47m, smul=\E[32m, TS@, use=xterm-pcolor,

# This describes the capabilities of color_xterm, an xterm variant from
# before ECMA-48 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ind=\n, is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l,
	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~,
	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<,
	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=ansi+apparrows, use=ansi+csr,
	use=ansi+idl, use=ansi+local, use=decid+cpr,
	use=ecma+color, use=vt220+keypad,

# The IRAF source has a terminfo using "xterm-r5", but line-drawing does not
# work in that case.  This entry uses xterm+acs, to work around that problem.
#
# Home/end keys do not work, due to a bug in the X Consortium xterm on which
# this is based:
#
#	https://invisible-island.net/xterm/xterm.faq.html#bug_xterm_r6
#
# Comparing to the X11R5 source, xgterm has dynamic and ANSI colors (probably
# not bce).  It interchanges mouse buttons 2/3 for menus.
#
# It also has a few features found in later versions of xterm:
# - vi-button and dired-button,
# - i18n stuff like X11R6.
# - colorBD, colorUL
# - scrollBarRight
#
# Debian provides a package for xgterm (and iraf).  Although the source for
# xgterm implements the control-sequences for ANSI color, the packaged xgterm
# does nothing with those, even after installing the app-defaults file which
# was overlooked by the Debian packager.
xgterm|graphic terminal for IRAF,
	enacs=\E(B\E)0, rmacs=^O,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t
	    \016%e\017%;,
	sgr0=\E[m\017, smacs=^N, use=xterm+acs, use=xterm-r5,
	use=xterm+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, 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+kbs, use=ansi+apparrows, use=xterm+nofkeys,
	use=xterm+nopcfkeys,

xterms-sun|small (80x24) xterm with sunFunctionKeys true,
	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=linux+kbs, 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 in RedHat 7,
	bce, km@,
	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=linux+kbs, 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 in RedHat 8,
	bce@, msgr@,
	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, 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 in RedHat 9,
	bce, msgr, XT,
	hpa=\E[%i%p1%dG, kLFT=\EO2D, kRIT=\EO2C, kb2=\E[E,
	kcbt=\E[Z, 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 in Fedora Core 5,
	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 (building block),
	kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R, kf16=\EO1;2S,
	kf25=\EO1;5P, kf26=\EO1;5Q, kf27=\EO1;5R, kf28=\EO1;5S,
	kf37=\EO1;6P, kf38=\EO1;6Q, kf39=\EO1;6R, 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|GHOME Terminal's variation on xterm+pcfkeys (building block),
	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=oldxterm+sm+1006, use=xterm+pcfkeys, use=vte-2012,
	use=bracketed+paste,

# As of January 2018, this was the  most recent release,
# e.g., with gnome-terminal 3.26.2
vte-2017|VTE 0.50.2,
	E3=\E[3J, 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,
	AX,
	blink=\E[5m, enacs=\E(B\E)0, nel=\EE,
	rep=%p1%c\E[%p2%{1}%-%db,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;
	    8%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
	Rmol=\E[55m, Se=\E[1 q, Smol=\E[53m, Smulx=\E[4:%p1%dm,
	use=xterm+alt+title, use=xterm+tmux, use=kitty+setal,
	use=vte-2017,

# Summarizing as of March 2022, these terminfo-capabilities of xterm are
# absent from VTE:
# - DEC application keypad mode
# - DEC-compatible status-line
# - DEC left/right margin support
# - DEC printer controls
# - AT&T cursor-blinking
# - meta mode, as documented in terminfo(5)
# - xterm's extension to clear scrollback
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=linux+kbs,
	use=xterm+osc104, use=ecma+index, use=ansi+rep,
	use=ecma+strikeout, use=vt420+lrmm, use=xterm+focus,
	use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
	use=xterm+pcfkeys, use=xterm-basic,
	use=bracketed+paste,
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, km, mir, msgr, npc, xenl,
	cols#80, lines#24, ncv@,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, 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, 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, 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%;%?%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, vpa=\E[%i%p1%dd, use=ansi+csr,
	use=ansi+enq, use=ansi+idc, use=ansi+idl,
	use=ansi+inittabs, use=ecma+index, use=ecma+italics,
	use=ansi+local, use=xterm+alt1049, 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=linux+kbs,
	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 (common),
	bce, km@, npc, XT,
	ncv@,
	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
	hpa=\E[%i%p1%dG, 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=ansi+sgrdim, use=ecma+index, use=xterm+focus,
	use=xterm+sm+1006, use=ecma+strikeout,
	use=ecma+italics, use=ecma+color, use=xterm-r6,
	use=vt220+cvis, use=bracketed+paste,
	use=report+version,

# 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,
	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 3.x,
	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=bracketed+paste, use=mlterm2,
	use=report+version,

# 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 2.x,
	am, eslok, km, mc5i, mir, msgr, npc, xenl, XT,
	colors#8, cols#80, lines#24, pairs#64,
	acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=,
	home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\n,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?,
	kcbt=\E[Z, kend=\EOF, kent=\EOM, kind=\EO1;2B, kmous=\E[M,
	kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, 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,
	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, u8=\E[?1;2c,
	vpa=\E[%i%p1%dd, use=ansi+apparrows, use=ansi+csr,
	use=ansi+enq, use=ansi+idl, use=ansi+inittabs,
	use=ansi+local, 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|mlterm 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, bce, eo, mir, xenl, xon, XT,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, ich=\E[%p1%d@,
	is1=\E[?47l\E=\E[?1l,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
	kcbt=\E[Z, kmous=\E[M, rev=\E[7m, ri=\EM, 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,
	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, smir=\E[4h, smkx=\E=, smso=\E[7m,
	smul=\E[4m, use=ansi+csr, use=ansi+idl, use=ansi+local,
	use=xterm+alt47, use=vt100+enq, use=vt100+4bsd,
	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|rxvt 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~,
	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\^, 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\^, kf40=\E[32\^,
	kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@,
	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, use=xterm+nopcfkeys,

# 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-color|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-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 with xpm),
	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,
	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),
	bce, bw, eo, mc5i, mir, xenl, xon, XT,
	btns#5, lm#0, ncv@,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, 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, kc1=\E[8~,
	kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, mc4=\E[4i,
	mc5=\E[5i, rev=\E[7m, ri=\EM, rmam=\E[?7l, 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,
	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, smam=\E[?7h, smir=\E[4h, smkx=, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl,
	use=ansi+local, use=xterm+alt47, use=vt100+enq,
	use=rxvt+pcfkeys, use=ecma+color, use=vt100+4bsd,
	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@, 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 (old),
	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 (new),
	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,
	cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
	cup=\E[%i%p1%d;%p2%dH, 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~, 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,
	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=ansi+csr,
	use=ansi+local, 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,
	km, mir, xenl, xon,
	colors#8, pairs#64,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
	el=\E[K, ich=\E[%p1%d@, ich1=\E[@, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, op=\E[100m, rev=\E[7m, ri=\EM,
	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,
	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, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	use=ansi+csr, use=ansi+idl, use=ansi+local,
	use=xterm+alt47, use=vt100+fnkeys, use=vt100+4bsd,
	use=x10term+sl,

#### 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, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
	dim=\E[2m, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, ich1=, ind=\E[S, is2=\E)0\017, kbs=^H, nel=\EE, ri=\E[T,
	rmacs=^O, 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, vpa=\E[%i%p1%dd, use=ansi+erase,
	use=ansi+idc1, use=ansi+idl, use=ansi+local,
	use=ansi+sgrbold, 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, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
	dim=\E[2m, ech=\E[%p1%dX, enacs=\E(B\E)0, home=\E[H,
	hpa=\E[%i%p1%d`, ht=^I, ich1=, ind=\E[S, 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, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>,
	rmso=\E[27m, rmul=\E[24m, 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, smkx=\E[?1h\E=,
	vpa=\E[%i%p1%dd, use=ansi+cpr, use=ansi+csr,
	use=ansi+erase, use=ansi+idc1, use=ansi+idl,
	use=ansi+local, use=ansi+sgrbold, 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 terminal,
	am, bce, ccc, mir, msgr, npc, xenl, xon,
	colors#8, pairs#64,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E[?25h, dim=\E[2m, home=\E[H, il1=\E[L, ind=\n,
	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~, 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=ansi+erase, use=ansi+local, use=ansi+sgr,
	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|aka 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.8,
	kcbt@, kent@, oc=\E]104\007, 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,
	kcbt@, kent@, 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, use=xterm+256color,

# 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,
	bce, mir, npc, xenl, XT,
	colors#8, pairs#64,
	acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyy
	     zz{{||}}~~,
	clear=\E[H\E[2J, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
	ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
	flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG,
	ich=\E[%p1%d@, 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~, kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F,
	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, 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, 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%;%?%p5%t;2%;%?%p7%t;8%;m,
	smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=, u8=\E[?1;2c,
	vpa=\E[%i%p1%dd, Se=\E[2 q, Ss=\E[%p1%d q,
	use=ansi+apparrows, use=ansi+csr, use=ansi+enq,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+sgrbold, use=vt100+4bsd, use=vt100+pfkeys,
	use=vt220+pcedit, use=ecma+index, use=xterm+alt1049,
	use=vt220+cvis, use=xterm+sl, use=ecma+italics,
	use=ecma+strikeout, use=bracketed+paste,
	use=xterm+pcf2,
#
# 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,
	cols#80, it#8, lines#24,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, 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, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, ich=\E[%p1%d@, ind=\n, kbs=^?, 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~, rev=\E[7m, rmso=\E[m,
	rmul=\E[m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
	    %t;7%;m,
	sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
	use=ansi+csr, use=ansi+idl, use=vt220+cvis,
	use=ecma+index, use=klone+color, use=xterm+acs,

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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, 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, 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=^?,
	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~, khome=\E[1~, 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,
	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, vpa=\E[%i%p1%dd, use=ansi+arrows,
	use=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+local,
	use=vt220+pcedit, use=ecma+italics, use=ecma+index,
	use=xterm+256setaf, use=xterm+sl-twm,
	use=xterm+alt1049, use=vt220+cvis, use=bracketed+paste,

#### 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 (0.6.1),
	mc5i@,
	blink@, ed@, el@, el1@, invis=\E[8m, kLFT=\E[1;2D,
	kRIT=\E[1;2C, 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=ansi+enq, 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 (1.0.0),
	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=bracketed+paste,
	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 (1.8.1),
	km@,
	cvvis@, flash@, initc@, kcbt=\E[Z, rmm@, smm@, Ms@,
	use=linux+kbs, use=ecma+index, use=xterm+256setaf,
	use=ansi+rep, use=ecma+strikeout, use=xterm+focus,
	use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
	use=vt220+cvis, use=ecma+italics, use=xterm-basic,
	use=report+version,

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, kcbt=\E[Z, kent=\EOM, Se=\E[0 q,
	Smulx=\E[4:%p1%dm, use=ecma+index, use=xterm+focus,
	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, use=bracketed+paste,

# https://github.com/raphamorim/rio
# derived from alacritty
rio|fork of alacritty,
	use=alacritty,
rio-direct|fork of alacritty,
	use=alacritty-direct,

#### 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.21.2 (June 28, 2021)
# changes since 0.19.1
# Notes:
#	Repeatable tests with tack and vttest assume a standard screensize --
#	measured in characters.  However, kitty uses pixel-measurements and
#	does not readily use characters.
#	Resizing with twm shows only pixel-based hint rather than characters
#	manual page states that it is possible to override initial window size,
#	but configuration file has no effect on initial window size.
#	The same problem with XFCE4, but editing the cached json file works
#	for setting the window size (the "c" suffix for cells does not):
#		{"window-size": [720, 440]}
#	though the values depend upon the font in use.
# vttest
# tack
#	flash works
#	invisible text still does not work
#	function/special key modifiers finally work
#
# Version 0.19.1 (October 6, 2020)
# 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 (January 19, 2019)
# 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, lines#24,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, 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,
	ich=\E[%p1%d@, ind=\n, kBEG=\E[1;2E, kbeg=\EOE, kbs=^?,
	kcbt=\E[Z, op=\E[39;49m, 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,
	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, vpa=\E[%i%p1%dd,
	Smulx=\E[4:%p1%dm, use=ansi+csr, use=ansi+enq,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+rep, use=xterm+focus, use=xterm+sm+1006,
	use=ecma+index, use=xterm+pcfkeys, use=xterm+sl-twm,
	use=ecma+strikeout, use=ecma+italics,
	use=xterm+alt1049, use=att610+cvis, use=xterm+tmux,
	use=bracketed+paste, use=report+version,

kitty+setal|set underline colors (nonstandard),
	setal=\E[58:2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1
	      %{255}%&%dm,

######## 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, mir, msgr, npc, xenl, AX, XT,
	cols#80, it#8, lines#24,
	bel=^G, 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, is2=\E[!p\E[4l\E>, kbs=^?,
	kcbt=\E[Z, oc=\E]104\E\\, op=\E[39;49m, ri=\EM,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec, rs2=\E[!p\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, smam=\E[?7h, smkx=\E[?1h\E=, 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=ansi+sgrbold, use=ecma+index, use=ecma+italics,
	use=ecma+strikeout, use=xterm+acs, use=xterm+alt+title,
	use=xterm+pcfkeys, use=xterm+sm+1006, use=xterm+tmux2,
	use=xterm+sl-alt, use=bracketed+paste,
	use=report+version, use=xterm+focus,

######## 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=linux+kbs, use=xterm+256setaf,
	use=ecma+index, use=xterm+focus, use=xterm+sm+1006,
	use=xterm+pcfkeys, use=xterm-basic,
	use=bracketed+paste,

######## Miscellaneous

#### WezTerm
# https://wezfurlong.org/wezterm/
# https://github.com/wez/wezterm
#
# which says:
# "wezterm is a terminal emulator with support for modern features
#  such as fonts with ligatures, hyperlinks, tabs and multiple windows."
#
# wezterm-20230712_072601_f4abf8fd-1.fedora38.x86_64
# tested with MacOS and Fedora 38/39.
#
# General:
# + written in Rust.
# + initial screensize is odd, i.e., 81x24
#   provides no visual feedback on resize
#   ignores "resize -s"
#   manual resize and then running resize got off-by-one adjustment
# + leaves debris (unerased cells) when switching between normal/alternate
#   screens.
# + sets TERM=xterm-256color
# tack:
# + misplaced message in "am" screen
# + fails xenl (should be false)
# + cvvis is same as cnorm, block
# + has blink and dim
# + in bce test, blue isn't really blue but some pale purple
# + modified keys mostly work, but its tab control interferes with some
# + rmm/smm don't work (always uses escape-prefix)
# wraptest:
# + poor (doesn't copy anyone, most of the results are wrong)
# vttest:
# + DA is VT5xx with sixel, selective erase, user windows, color
# + DA2 is VT220 version 277
# + only the VT100 character set works, contrary to DA/DA2.
# + no NRCS, either
# + double-sized character work, with some debris
# + doesn't switch between 80/132 columns.
# + numeric keypad ANSI application mode escapes don't work.
# + numeric keypad ANSI mode misses "0", ".", ","
# + uses PC-style editing keypad \E[H and \E[F for Find and Select
# + no VT52
# + DECSED selective erase doesn't work
# + SRM doesn't work
# + 8-bit controls don't work
# + DECNCSM doesn't work
# + most DECRQSS do not work (DECSCL, DECSTBM, DECSLRM respond)
# + DECRQM/DECRPM don't work (most reply permanently reset)
# + DECLRMM responds to DECRPM, but VT420 rectangle tests do not work.
#   Some of the left/right margin tests work with the cursor-movement screen,
#   but DECFI/DECBI do not work.  The other cursor-movement tests are buggy.
# + implements ECMA-48 cursor movement, but not SL/SR or protected area
# + implements xterm normal, any-event and button-event mouse, none of the rest
# + reports window size, none of the other window reports
wezterm|Wez's Terminal Emulator,
	km@, xenl@,
	cvvis@, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@,
	use=xterm-256color,

#### Contour
# https://github.com/contour-terminal/contour
#
# "Modern C++ Terminal Emulator"
# Contour is a modern and actually fast, modal, virtual terminal emulator,
# for everyday use. It is aiming for power users with a modern feature mindset.
#
# That is three occurrences of "modern" too many -TD
#
# MacOS
# - cannot run, because the package is not signed.
#
# Fedora rawhide
# contour-terminal-0.3.12.262-6.fc39.x86_64
# - dumps core, cannot test
#
# Fedora 39
# contour-terminal-0.4.0.6245-1.fc38.x86_64
# - starts but doesn't display
#
# Fedora 38
# contour-terminal-0.4.0.6245-1.fc38.x86_64
# - starts but doesn't display
# contour-terminal-0.3.12.262-1.fc38.x86_64
# + testable (see below)
# + initial screensize 62x23, no visual feedback on resize, no "resize -s"
#
# Sets TERM=contour (which is preferable to xterm).
#
# tack:
# + cvvis is same as cnorm, "|"
# + sitm/ritm don't work
# + rmm/smm don't work (always uses escape, but terminfo defines km)
# + initp interchanges red/blue (bug in tack?)
# + modified F1-F4 are wrong, sending SS3 with modifier numbers
# + shifted editing-keypad doesn't send anything
# + meta key doesn't work
# + status-line works (based on xterm, including window-resizing)
# + dots don't line up for home test
#
# wraptest:
# + poor 7/25 differences from xterm (perhaps copying iTerm2)
#
# vttest:
# + hangs in menu 1, etc., when it tries to resize
#
# infocmp vs xterm-256color
# + missing XM/xm
# + rmcup/smcup doesn't use title-stack (but is implemented)
# + doesn't use SGR mouse (but is implemented)
# + sgr doesn't define dim, but dim capability is in terminfo (implemented)
#
# Developer's terminfo (compiled-in) uses some extensions.
contour|contour-latest|Contour Terminal Emulator,
	am, bce, eslok, hs, km, mc5i, mir, msgr, npc, xenl, xvpa,
	cols#80, lines#24, pairs#0x7fff,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
	dim=\E[2m, dsl=\E[$~, ech=\E[%p1%dX, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, hpa=\E[%i%p1%dG,
	ind=\n, indn=\E[%p1%dS, invis=\E[8m, ka1=, ka3=, kbs=^?, kc1=,
	kc3=, kcbt=\E[Z, kend=\EOF, khlp=, kmous=\E[M, kund=,
	oc=\E]104\E\\, op=\E[39;49m, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dT, rmam=\E[?7l, rmkx=\E[?1l, rmso=\E[27m,
	rmul=\E[24m, rs1=\E]\E\\\Ec,
	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(B\E[m, smam=\E[?7h, smkx=\E[?1h, smso=\E[7m,
	smul=\E[4m, tsl=\E[2$~\E[1$}\E[H\E[2J, vpa=\E[%i%p1%dd,
	Cs=\E]12;%p1%s\E\\, E3=\E[3J, Rmol=\E[55m, Se=\E[ q,
	Smol=\E[53m, Smulx=\E[4:%p1%dm, Ss=\E[%p1%d q,
	use=ansi+apparrows, use=ansi+cup, use=ansi+csr,
	use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local, use=ansi+rep,
	use=att610+cvis, use=ecma+italics, use=ecma+strikeout,
	use=xterm+256color, use=xterm+acs, use=xterm+alt1049,
	use=xterm+pcc2, use=xterm+pce2, use=xterm+pcf2,

contour-direct|Contour terminal with direct colors,
	use=xterm+direct, use=contour,

######## 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, khome=\EE, rmso=\Eb^D,
	rmul=\Eb^A, smso=\Ea^D, smul=\Ea^A, use=vt52+arrows,
# (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, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ind=\n,
	rev=\E[7m, rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smir=\E[4h, smso=\E[7m, smul=\E[4m, use=ansi+cpr,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=xterm+alt47,

# 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,
	msgr,
	colors#8, pairs#64,
	kbs=^?, khome=\E[1~, op=\E[39;49m, ri=\EM, rmso=\E[27m,
	rmul=\E[24m, rs1=\Ec, 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, use=ansi+apparrows, use=ansi+csr,
	use=ansi+sgr, use=vt220+pcedit, use=eterm,

# 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,
	it#8, ncv#13,
	bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m,
	rmul=\E[24m, sgr0=\E[m, smul=\E[4m, use=ecma+italics,
	use=klone+color,

#### 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-base|VT 100/ANSI X3.64 virtual terminal (base),
	OTbs, OTpt, km, mir, xenl, G0,
	ncv@, U8#1,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
	     yzz{{||}}~~,
	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	cnorm=\E[34h\E[?25h, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, cvvis=\E[34l,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K, flash=\Eg,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, indn=\E[%p1%dS, is2=\E)0,
	kbs=^?, kcbt=\E[Z, 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~, kmous=\E[M, nel=\EE, rev=\E[7m, ri=\EM,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m,
	rs2=\Ec\E[?1000l\E[?25h,
	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, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[3m,
	smul=\E[4m, vpa=\E[%i%p1%dd, E0=\E(B, S0=\E(%p1%c,
	use=ansi+apparrows, use=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=xterm+kbs, use=vt220+pcedit, use=xterm+alt1049,
	use=ecma+color, use=vt100+enq, use=vt100+4bsd,

screen|VT 100/ANSI X3.64 virtual terminal,
	use=screen4,

no+brackets|cancel bracketed paste,
	BD@, BE@, PE@, PS@,

# 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=screen,
screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
	dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen,

# ======================================================================
# 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=screen,

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=screen,

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,
	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,
	XR@, 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,
	XR@, 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.
# (g)	the xterm-new compatibility does not include bracketed paste.
#
#	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=ecma+index, use=ansi+rep,
	use=ecma+strikeout, use=xterm+pcfkeys,
	use=xterm+nofkeys,

# Don't use this, because not everyone has "screen.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=screen,
# 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=screen,
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=no+brackets, use=vte,
screen.gnome|screen in GNOME Terminal,
	use=xterm+x11mouse, use=screen+italics,
	use=screen+fkeys, use=no+brackets, use=gnome,
screen.konsole|screen in KDE console window,
	XR@, use=xterm+x11mouse, use=screen+italics,
	use=screen+fkeys, use=no+brackets, use=konsole,
# fix the backspace key
screen.linux|screen.linux-s|screen in Linux console,
	bw,
	kcbt@, use=linux+sfkeys, use=xterm+x11mouse,
	use=screen+fkeys, use=screen,
screen.mlterm|screen in mlterm,
	XR@, use=xterm+x11mouse, use=screen+fkeys,
	use=no+brackets, use=mlterm,
screen.putty|screen in putty,
	use=xterm+x11mouse, use=screen+fkeys, use=no+brackets,
	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,
	ech@, use=screen+italics, use=screen.gnome,
screen-bce.konsole|screen optimized for KDE console window,
	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=screen,

screen2|VT 100/ANSI X3.64 virtual terminal (old 2.x),
	cols#80, lines#24,
	clear=\E[2J\E[H, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	ed=\E[J, el=\E[K, ich1=, ind=\n, kbs=^H, 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, rmso=\E[23m,
	rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smso=\E[3m,
	smul=\E[4m, use=ansi+idc, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local, use=vt52+arrows,

# (screen3: removed unknown ":xv:LP:G0:" -- esr)
screen3|VT 100/ANSI X3.64 virtual terminal (old 3.x),
	km, mir, msgr,
	cols#80, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch=\E[%p1%dP,
	dch1=\E[P, home=\E[H, ich=\E[%p1%d@, 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, rev=\E[7m,
	ri=\EM, rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m,
	rs1=\Ec, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
	smul=\E[4m, use=ansi+csr, use=ansi+erase, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local,

# 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 (4.x),
	use=ecma+index, use=screen-base,

# As of December 2022, 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=ecma+index,
	use=screen-base,

#### 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, 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, use=bracketed+paste, use=report+version,
	use=xterm+focus,

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

tmux-direct|tmux with direct-color indexing,
	use=kitty+setal, use=xterm+direct, use=tmux,

#### Mosh
# https://mosh.org/
# mosh 1.3.2
#
# mosh's DA1 identifies it as a VT220, but sets $TERM to "xterm" or
# "xterm-256color" (hard-coded), which in its pretense that it is xterm, is
# several years out of date.
#
# There is little documentation; the existing manpages amount to a quarter of
# the length of mosh.org's heavily promotional website.  This entry is based
# on testing, and reading the source-code.  For the latter, analysis is aided
# by the developer's extensive use of hard-coded strings.
#
# The website has an example "Tricky unicode", which shows a shell command
# with a typo (i.e., assuming that a byte in octal uses 4 digits) and suggests
# that mosh and OS X Terminal "gets it right".
#
# The example as shown would not work.  Correcting the typo, xterm gives the
# result expected by the mosh developer.
#
# The other examples follow in a similar vein.
#
# It does not support these xterm features:
#	use=ansi+rep (xterm patch #36, 1997)
#	use=ecma+strikeout (xterm patch #305, 2014)
#	use=vt420+lrmm (xterm patch #279, 2012)
#	titlestack in smcup/rmcup has no effect (xterm patch #251, 2009)
#	does not support "dim" (xterm patch #305, 2014)
# In tack
#	rmkx/smkx has no effect on numeric keypad
#	acs stuff has no effect, is included here for ease of comparison
#
# Unlike screen and tmux, mosh has only limited awareness of a terminal
# description.  It assumes that the underlying terminal is xterm, and would
# not work well with terminals using other key-definitions, such as urxvt.
mosh|mobile shell,
	U8#1,
	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(B\E[m, use=ansi+enq, use=xterm+meta,
	use=ecma+italics, use=ecma+index, use=xterm+acs,
	use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys,
	use=xterm-xfree86, use=bracketed+paste,

mosh-256color|mosh using 256-colors,
	use=xterm+256color, use=mosh,

#### 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,
	eo, mir, xenl,
	ncv@,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, el1=\E[1K,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@,
	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, 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, rev=\E[7m,
	ri=\EM, 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,
	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, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr,
	use=ansi+idl, use=ansi+local, use=xterm+alt47,
	use=vt220+vtedit, use=vt220+cvis, use=ecma+color,
	use=ecma+italics, use=vt100+4bsd,

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,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
	dch1=\E[P, 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,
	ind=\n$<150*>,
	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>,
	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,
	rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
	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>,
	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, smam=\E[?7h, smcup=\E7, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g, u8=\E[?62;1;6c,
	use=ansi+arrows, use=ansi+csr, use=ansi+idl,
	use=ansi+local, use=vt220+cvis, use=xterm+acs,
	use=xterm+sl, use=ansi+enq,

ncsa|NCSA Telnet 2.7 for Macintosh in VT220-8 mode (color),
	use=ncsa-m, use=klone+color,
ncsa-ns|NCSA Telnet 2.7 for Macintosh in VT220-8 mode (color w/o status line),
	hs@,
	dsl@, fsl@, tsl@, use=ncsa,
ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in VT220-8 mode (no status line),
	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, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	el=\E[K, home=\E[H, use=ansi+local1, use=ansi+sgrso,
	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, nel=\r\n,
	rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
	use=ansi+arrows,

#### 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, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, 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, use=ansi+idl, use=ansi+local1,

# 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, ed=\E[J, el=\E[K, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	ind=\n, kb2=\E[218z, 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, use=ansi+arrows,
	use=ansi+idl,

# 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,

# The Sun console was documented in the wscons manual page (apparently
# unrelated to the "wscons" used by some of the BSDs).
#
#    https://illumos.org/man/4D/wscons
#    https://www.bitsavers.org/pdf/sun/sun1/800-0345_Sun-1_System_Reference_Manual_Jul82.pdf
#
# The early cmdtool and shelltool programs in Sun's NeWS were based on this.
# After NeWS was discontinued, XView provided a similar shelltool, with an
# incomplete manual page.  Presumably the intent was to document features of
# shelltool not in wscons:
#
#    https://manpages.ubuntu.com/manpages/bionic/en/man1/shelltool.1.html
#    https://manpages.ubuntu.com/manpages/bionic/en/man1/cmdtool.1.html
#
# The wscons manual page and the XView source show that it had no feature that
# could be used in ncurses u6/u7/u8/u9 extensions.  Interesting, the XView
# source shows that its shelltool could tell the host what a particular mode
# was set to.  But neither that nor its CSI..t controls support u6/u7/u8/u9.
#
# 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,
	use=sun+sl, use=sun,
sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
	use=sun+sl, use=sun-e,
sun-48|Sun 48-line window,
	cols#80, lines#48, use=sun,
sun-34|Sun 34-line window,
	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),
	bold=\E[1m, cub1=^H, cud1=\n, home=\E[H, op=\E[0m,
	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, use=ansi+local,
	use=sun, use=klone+color,

#### 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, 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, use=vt52+arrows,

#### 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, 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,
	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, 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, sgr0=\E[m,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
	use=ansi+idl,
#
# (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|old 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, 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, 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, sgr0=\E[m,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
#
# (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
nwp512|news|nwp514|news40|vt100-bm|nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|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|old Sony VT100 emulator 42 line,
	lines#42,
	is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8,
	use=news-old-unk,
#
# (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
nwp513|nwp518|nwe501|newscbm|news31|nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old Sony VT100 emulator 31 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,
#
# (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr)
news28|old 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|old 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/>, 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/>, use=ansi+local1,
# (news517: this had :TY=sjis:. --esr)
nwp517|nwp-517|nwp-517 VT200 80 cols 30 rows,
	cols#80, lines#30,
	OTi2=\E[2$~\n, dsl=\E[1$~,
	is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	tsl=\E[1$}\E[;%df, use=dec+sl, 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, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, ech=\E[%p1%dX, 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@, ind=\ED, 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, ri=\EM, rmacs=^O, rmam=\E[?7l,
	rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
	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=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+sgr, use=decid+cpr, 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,
	eo,
	clear=\E[1;33;44m\E[H\E[J, cr=\r, cud1=\n, dch=\E[%p1%dp,
	ed=\E[J, flash=\E[?5h$<100/>\E[?5l, ht=^I, hts=\EH,
	ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kf0=\0D, kll=\0O,
	kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l,
	rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec,
	sgr0=\E[0m\E[1;33;44m, smir=\E[4h, 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, 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, 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>, cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

#### 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,
	bel=^G, bold=\E[1m, cr=\r, cub=\E[%p1%dD, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, el1=\E[1K, fsl=^G, home=\E[H, ht=^I,
	ind=\n, invis=\E[8m, kb2=\E[G, 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~,
	khome=\E[1~, kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8,
	rev=\E[7m, ri=\EM, 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, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
	tsl=\E];, use=ansi+arrows, use=ansi+erase, use=ansi+idc,
	use=ansi+idl, use=ansi+local, use=ansi+rca2,
	use=vt220+pcedit, use=vt102+enq, use=klone+acs,
	use=xterm+alt47,

# 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,
	cols#80, lines#24, ncv#3,
	bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ind=\n, kNXT=\E[6$, kPRV=\E[5$, kb2=\E[G, kcbt=\E[Z,
	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~, khome=\E[1~, kspd=^Z,
	nel=\r\n, op=\E[39;49m, rc=\E8, ri=\EM, 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%;%?%p7%t;8%;%?%p9%t;12%;m,
	sgr0=\E[0;10m, vpa=\E[%i%p1%dd, use=ansi+arrows,
	use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local, use=ansi+sgrbold,
	use=klone+acs, use=klone+color, 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, bold=\E[1m, cbt=\E[Z, civis=\E[1v, cnorm=\E[v, cr=\r,
	cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v,
	dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, ind=\E[S, 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~, nel=\r\n, op=\E[37;40m, 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=ansi+arrows, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=ansi+sgr, 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,
	cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v, dch=\E[%p1%dP,
	dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m,
	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~, khome=\E[1~, 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=ansi+arrows,
	use=ansi+idl, use=ansi+local, 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,
	it#8, ncv#58,
	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, cr=\r, cub1=^H, cud1=\n,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dim=\E[2m,
	ech=\E[%p1%dX, el1=\E[1K, home=\E[H, ht=^I, hts=\EH,
	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, kich1=\E[@, nel=\r\n,
	op=\E[39;49m, rc=\E8, rev=\E[7m, rmacs=\E[10m,
	rmpch=\E[10m, rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
	sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=ansi+arrows, use=ansi+cpr,
	use=ansi+erase, use=ansi+idc, use=klone+color,
	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, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ind=\E[S, kLFT=\EF\^, kRIT=\EF$, kcbt=\E[Z, 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, 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=ansi+arrows,
	use=ansi+idl, use=ansi+local, 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, kcbt=^AK\r, kclr=^AL\r, 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, use=ansi+arrows,

# (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,
	khome=\Eh, kind=\ES, kll=\EF, kri=\ET, use=vt52+arrows,

# 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>, 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,
	use=vt52+arrows,

# 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@, smkx=\E&jB, smso=\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|HP 2621p 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, khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
	use=vt52+arrows,

# 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,
	ht=^I,
	is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3
	    \r,
	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,
	ht=^I,
	is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
	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,
	is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
	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, 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, use=hpgeneric, use=vt52+arrows,
# 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, 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, use=vt52+arrows,

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,
	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, use=vt52+arrows,

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,
	cup=\E[%i%p1%d;%p2%dH, 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\\,
	kcbt=\E[Z, 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=ansi+arrows,
	use=ansi+local1, use=vt220+cvis,
#
# (hp2392: copied <rmir> here from hpex -- esr)
hp2392|239x series,
	cols#80,
	cbt=\Ei, cup=\E&a%p1%dy%p2%dC, 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, use=hp+pfk+cr,

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, khome=\Eh, rmkx=\E&s0A,
	rmso=\E&d@, sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,
	use=vt52+arrows,

# 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,
	cud1=\n, cup=\E&a%p1%dy%p2%dC, 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,
	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, use=vt52+arrows,
# 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, 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, use=vt52+arrows,
# 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, 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, 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=ansi+inittabs,
	use=hp+arrows,

# From: Martin Trusler
hp98550-color|hp98550a-color|HP 9000 Series 300 color console (Trusler),
	OTbs, am, ccc, da, db, km, mir, xhp,
	colors#8, cols#128, 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, 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=ansi+inittabs, 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|HP 700/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, 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/>, use=vt52+arrows,
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, 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, 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,
	use=ansi+erase,

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,
	ed=\EY, el=\ET, 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,
	dch1=\EW, dl1=\ER$<30*>, ed=\EY, el=\ET, ich1=\EQ,
	il1=\EE$<30*>, invis@, kbs=^H, 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, cub1=^H, cud1=\ED,
	cup=\E0%p1%{33}%+%c%p2%{33}%+%c, 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, 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,
	use=ansi+arrows, use=ansi+local,

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, 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, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	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,
	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, use=ansi+csr,
	use=ansi+local,

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|TeleVideo 912/914/920 (old),
	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@,
	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,
	mc5i, msgr@,
	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, 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,
	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, 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, use=ansi+arrows,

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, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, 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=ansi+local,
	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,
	OTnl=\n, cbt=\Ez$<4/>, cub1=^H, dl1=\EM$<3*/>,
	el=\EK$<16/>, il1=\EL, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
	kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
	rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, use=vt52-basic,
# 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,
	khome=\EH, rmso=\ET, smso=\EU, use=vt52+arrows,
# 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, ri=\EI,
	rmir=\Eb, rmso=\ET, smir=\Ea, smso=\EU, use=vt52+arrows,

# 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, 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, use=vt52+arrows,
# 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, rmso@, smso@, use=vi200,
vi200-rv|Visual 200 reverse video,
	cnorm@, cvvis@, ri@, 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,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

# 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, 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,
	use=vt52+arrows,

# 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,
	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,
	dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, 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=ansi+idl1, use=decid+cpr, 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, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8,
	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>,
	ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9, 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, use=wyse+sl,
#
#	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, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8,
	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, ed=\EY$<20>,
	el=\ET, flash=\E`8$<100/>\E`9, 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, 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=wyse+sl,
wyse+sl|status line for Wyse terminals,
	hs,
	wsl#45,
	dsl=\EF\r, fsl=\r, tsl=\EF,
#
#	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, mc5i, mir, xon,
	colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8,
	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, ed=\EY$<20>, el=\ET,
	flash=\E`8$<100/>\E`9, 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, use=adm+sgr, use=wyse+sl,
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, km, mc5i, mir, msgr, xon,
	cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601,
	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>, ed=\EY$<50>, el=\ET$<4>,
	flash=\E`8$<100/>\E`9, 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, use=adm+sgr, use=wyse+sl,
#
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, km, mc5i, mir, msgr,
	cols#80, lh#1, lines#24, lw#8, nlab#8,
	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>,
	ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, 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, 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, use=wyse+sl,
#
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,
	cup=\Ea%i%p1%dR%p2%dC$<2>, dch1=\EW$<19>,
	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>, 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@, 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, mir, msgr, xenl,
	cols#80, it#8, lines#25, vt#3,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
	bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<200>,
	cnorm=\E[34h\E[?25h, cr=\r, 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, 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@, ind=\n$<1>,
	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,
	nel=\EE, prot=\E[1"q, 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,
	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, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl,
	use=ansi+pp, use=ansi+sgrbold,

#   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, km, mc5i, mir, msgr, xon,
	cols#80, it#8, lines#25,
	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, ed=\EY$<8*>,
	el=\ET$<8>, enacs=\Ec@1J$<2000>,
	flash=\E\^1$<30/>\E\^0, 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, use=wyse+sl,

# 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, 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>, ed=\EY$<30>, el=\ET$<5>,
	flash=\E`8$<100/>\E`9, 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, use=adm+sgr, use=wyse+sl,
#
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, mir, msgr, xenl, xon,
	cols#80, lines#24, ma#1, pb#1201, wsl#78,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, clear=\E[H\E[J$<30>, cr=\r,
	csr=\E[%i%p1%d;%p2%dr$<2>, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, 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, 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, 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~, kich1=\E[@, kil1=\E[L, knp=\E[6~, kpp=\E[5~,
	kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, 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,
	tsl=\E[>\,\001, use=ansi+arrows, use=ansi+local,
	use=ansi+pp, use=ansi+tabs, use=decid+cpr,
	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,
	hs, mir, xenl, xon,
	wsl#80,
	clear=\E[H\E[J$<110>, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH$<1>, 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,
	ht=\011$<1>, ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>,
	il1=\E[L$<5>, ind=\n$<3>, 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, 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, ri=\EM$<3>, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p,
	rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l,
	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, smam=\E[?7h, smir=\E[4h, smkx=\E[?1l\E=,
	tsl=\E[40h\E7\E[25;%i%p1%dH, use=ansi+arrows,
	use=ansi+csr, use=ansi+inittabs, use=ansi+local,
	use=ansi+pp, use=ansi+sgrbold, use=decid+cpr,
	use=vt100+4bsd, 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,
	hs, mir, xenl, xon,
	wsl#80,
	clear=\E[H\E[J$<110>, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH$<1>, 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,
	ht=\011$<1>, ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>,
	il1=\E[L$<5>, ind=\n$<3>, 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,
	kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
	kcuu1=\233A, kdch1=\2333~, kf10=\23321~, kf11=\23323~,
	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
	kf20=\23334~, 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, ri=\EM$<3>,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p,
	rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l,
	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, smam=\E[?7h, smir=\E[4h, smkx=\E[?1l\E=,
	tsl=\E[40h\E7\E[25;%i%p1%dH, use=ansi+csr,
	use=ansi+inittabs, use=ansi+local, use=ansi+pp,
	use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,
	use=vt100+pfkeys, 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,
	hs, km, mir, xenl, xon,
	wsl#80,
	civis=\E[?25l, clear=\E[H\E[J$<40>,
	cnorm=\E[34h\E[?25h, csr=\E[%i%p1%d;%p2%dr$<20>,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	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,
	hpa=\E[%i%p1%d`, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>,
	il1=\E[L$<3>, ind=\n$<2>, 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, kcbt=\E[Z, 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, rc=\E8, ri=\EM$<2>,
	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, smam=\E[?7h, smcup=\E[ Q, smir=\E[4h,
	smkx=\E[?1l\E=, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+inittabs, use=ansi+local,
	use=ansi+pp, use=ansi+sgrbold, use=decid+cpr,
	use=vt100+4bsd, 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, mc5i, mir,
	cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601,
	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>, ed=\EY$<50>, el=\ET$<4>,
	flash=\E`8$<100/>\E`9, 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,
	use=adm+sgr, use=wyse+sl,

#
# 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, mir, msgr, xenl, xon,
	colors#64, cols#80, lines#24, ncv#48, pairs#64, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>,
	cnorm=\E[34h\E[?25h, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH$<1>, 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>,
	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,
	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,
	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, 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, 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=,
	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, use=ansi+csr,
	use=ansi+inittabs, use=ansi+local, use=ansi+pp,
	use=ansi+sgrbold, use=decid+cpr,
#
#	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,
	kcbt=\E[Z, 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~, kich1=\EOP, kil1=\EOP, knp=\E[U,
	kpp=\E[V, use=ansi+arrows, use=wy370-nk,
#
#	Function key set for the VT-320 (and wy85) compatible keyboard
#
wy370-105k|Wyse 370 with 105 key keyboard,
	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=ansi+arrows, 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,
	kcbt=\E[Z, 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~,
	kich1=\E[2~, knp=\E[U, kpp=\E[V, use=ansi+arrows,
	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, mir, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>,
	cnorm=\E[34h\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr$<20>,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	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`,
	ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
	ind=\n$<2>, 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, kcbt=\E[Z, ked=\E[1~, 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~, khlp=\E[28~,
	khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
	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,
	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,
	tsl=\E[2$~\E[1$}\E[%i%p1%d`, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+csr, use=ansi+local,
	use=ansi+pp, use=ansi+sgrbold, use=ansi+tabs,
	use=decid+cpr, 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 (132 column),
	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 (132 column),
	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 (132 column),
	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,
	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, km, mir, msgr, xenl,
	cols#80, it#8, lines#49, pb#9600, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cmdch=\E, cr=\r, cub1=^H,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX,
	flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[
	      ?5l,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	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, 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$~,
	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=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+local, use=dec+sl,
	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,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
	dch1=\E[P, 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@, 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, 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, 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=ansi+csr,
	use=ansi+idl, use=ansi+local, 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,
	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,
	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, sgr0=\E[m, smcup=,
	smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T, use=ansi+csr,
	use=vt220+cvis,

rbcomm-nam|IBM PC with RBcomm without autowrap,
	am@,
	cud1=\n, ind=\n,
	is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kcub1=^H,
	kcud1=\n, nel=\r\n, use=rbcomm,
rbcomm-w|IBM PC with RBcomm in 132 column mode,
	cols#132,
	cud1=\n, ind=\n,
	is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, 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, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ind=\n, kcbt=\E[Z, kclr=\E[J, 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, 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,
	use=ansi+arrows, use=ansi+cpr, use=ansi+erase,
	use=ansi+idl, use=ansi+local,

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, bold=\E[2;7m, cr=\r, cub1=^H, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, dl1=\E[M,
	fsl=\E8, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
	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,
	kclr=\E[2J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
	kf6=\EOU, kf7=\EOV, kf8=\EOW, 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, ri=\EM, rmacs=^O,
	rs2=\Ec\E[?3l\E[2;0y,
	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, tsl=\E7\E[25;%p1%{1}%+%dH,
	use=ansi+arrows, use=ansi+csr, use=ansi+erase,
	use=ansi+local1, use=ansi+sgrbold,

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, 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,
	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,
	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=ansi+csr, use=decid+cpr, 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,
	db,
	lm#78, wsl#55,
	clear=\E[x\E[J, cnorm=\E[11;0j, cub1=^H,
	cup=\E[%i%p1%d;%p2%dx, cvvis=\E[11;1j,
	ech=\E[%p1%ds\E[%p1%dD, flash=\E[?5h$<200>\E[?5l,
	home=\E[x, ich1@, 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, 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, smkx=\E[19;1j\E[21;4j\Eent,
	smln=\E~, tsl=\E7\E[25;%p1%{8}%+%dH, use=ansi+idc,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+rca, 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, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, cr=\EG, cub1=^H,
	cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[1A, cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P,
	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, ich=\E[%p1%d@, ich1=\E[@, ind=\n,
	indn=\E[%p1%dE,
	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, kcbt=\E[Z, kclr=\E[2J, 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,
	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, ri=\EM,
	rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j, rmln=\E|,
	rs2=\Ec\E[?3l\E[2;0y,
	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~,
	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
	use=ansi+arrows, use=ansi+csr, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local, use=ansi+sgrdim,
	use=decid+cpr,

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,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P,
	dim=\E[2m, ed=\E[0J, el=\E[0K, home=\E[H, ich=\E[%p1%d@,
	ich1=\E[1@, 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, use=ansi+idl,
	use=ansi+local,

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, 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\\, use=vt52+arrows,

#  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, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\E[%i%p1%d;%p2%dH, 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, kclr=\EJ, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, 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, use=ansi+arrows, use=ansi+local,

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, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m, use=ansi+arrows,

# 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,
	da, db, hs, mir, xenl, xon,
	lh#2, lm#78, lw#8, nlab#8, wsl#55,
	bold=\E[2;7m, cnorm=\E[12;0j, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, cvvis=\E[12;1j, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, ech=\E[%p1%ds\E[%p1%dD, el1=\E[1K,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, hpa=\E[%p1%{1}%+%dG,
	ich=\E[%p1%d@, indn=\E[%p1%dE, 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, kcbt=\E[Z, kclr=\E[J, 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, 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, ri=\EM,
	rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
	rs2=\Ec\E[?3l\E[2;0y,
	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, smam=\E[?7h, smir=\E[4h,
	smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~,
	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
	use=ansi+arrows, use=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,

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, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\EP,
	ed=\E[J, el=\E[0K, home=\E[H, hpa=\E[%p1%dG, ht=^I, hts=\E1,
	ich=\E[%p1%d@, ich1=\E\^, il1=\EL, ind=\n, is1=\Ec\E[?7h,
	is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, 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=ansi+idl,
	use=ansi+local, use=ecma+index, use=vt52+arrows,

# 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, civis=\E[11;0|,
	clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K, el1=\E[1K,
	enacs=\E(B\E)1, ff=^L, home=\E[H, 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, use=ansi+cpr, use=ansi+idl, use=ansi+local,
	use=ansi+tabs,

# 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, bold=\E[2;7m, clear=\E[H\E[J, cnorm=\E[11;3|,
	cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K,
	el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H,
	hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n,
	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, ri=\EM, rmacs=^O,
	rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, 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?, smxon=\E[29;0|,
	vpa=\E[%p1%{1}%+%dd, use=ansi+cpr, use=ansi+idl,
	use=ansi+local, use=ansi+rep, use=ansi+sgrbold,
	use=ansi+tabs, 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, bold=\E[2;7m, cnorm=\E[11;0|, cr=\r,
	csr=%i\E[%p1%d;%p2%dr, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;1|, dch=\E[%p1%dP,
	dch1=\E[P$<1>, dim=\E[2m, el1=\E[1K, enacs=\E(B\E)1,
	home=\E[H, hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n,
	indn=\E[%p1%dE,
	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, kcan=\EOw,
	kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
	kcrt=\EOn, 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, 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, ri=\EM, rin=\E[%p1%dF,
	rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|\E[21;1|\212,
	rmln=\E<,
	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?,
	vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+erase,
	use=ansi+idl, use=ansi+local, use=ansi+rep,
	use=ansi+sgrbold, use=ansi+tabs, use=decid+cpr,

# 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, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, ind=\n, kclr=\E[2J, kll=\E[70;1H, nel=\r\n,
	rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ansi+arrows,
	use=ansi+erase, use=ansi+idl, use=ansi+local1,
	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, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, kclr=\E[2J,
	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=ansi+arrows,
	use=ansi+erase, use=ansi+idl, use=ansi+local1,
	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, kclr=\E[2J,
	khome=\E[H, kll=\E[70;1H, use=ansi+arrows,

# 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, cr=\r, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	el1=\E[1K, fsl=\E8, ht=^I, 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[ @, kcbt=\E[Z, kclr=\E[2J, 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, 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, rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l,
	sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, smln=\E[p,
	smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
	use=ansi+arrows, use=ansi+cpr, use=ansi+erase,
	use=ansi+idc, use=ansi+local1,

att605-pc|AT&T 605 in pc term mode,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
	     \263,
	cub1=\E[D, 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, 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, cbt=\E[Z, cr=\r, cub1=^H, cvvis=\E[?12;25h,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
	ind=\ED,
	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,
	kcbt=\E[Z, kclr=\E[2J, 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,
	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, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p, rs2=\Ec\E[?3l,
	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, tsl=\E7\E[25;%i%p1%dx, use=ansi+arrows,
	use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=ansi+sgrbold, use=decid+cpr,
	use=ecma+index, use=att610+cvis,

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, cbt=\E[Z, cr=\r, cub1=^H, cvvis=\E[?12;25h,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
	ind=\ED,
	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[ @,
	kcbt=\E[Z, kclr=\E[2J, 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, 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, ri=\EM,
	rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p,
	rs2=\Ec\E[?3l,
	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, tsl=\E7\E[25;%i%p1%dx,
	use=ansi+arrows, use=ansi+csr, use=ansi+cup,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+sgrbold, use=decid+cpr, use=ecma+index,
	use=att610+cvis,

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, cr=\r, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K, home=\E[H,
	ht=^I, ind=\ED, is2=\E[m, kcbt=\E[Z, kclr=\E[2J, 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, 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,
	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, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
	use=ansi+cpr, use=ansi+erase, use=ansi+idc, use=ansi+idl,
	use=ansi+local, 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, lh#2, lines#24, lw#8, nlab#8, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l,
	fln=4\,4, fsl=\E8, home=\E[H, ich=\E[%p1%d@, ind=\ED,
	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[ @, kcbt=\E[Z,
	kclr=\E[2J, 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, kich1=\E[@,
	kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, 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, 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|,
	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,
	smxon=\E[53;0|, tsl=\E7\E[99;%i%p1%dx, use=ansi+arrows,
	use=ansi+csr, use=ansi+erase, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local, use=ansi+rep,
	use=ansi+sgrbold, use=decid+cpr, use=dec+pp,
	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, cbt=\E[Z, cr=\r, cub1=^H, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
	ind=\ED,
	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,
	kcbt=\E[Z, kclr=\E[2J, 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, kich1=\E[@,
	kil1=\E[L, kind=\E[S, kri=\E[T, mc0=\E[?19h\E[0i, 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, 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,
	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, smxon=\E[?21h, swidm=\E#6,
	tsl=\E7\E[;%i%p1%dx, use=ansi+arrows, use=ansi+csr,
	use=ansi+cup, use=ansi+erase, use=ansi+idl,
	use=ansi+local, use=ansi+rep, use=ansi+sgrbold,
	use=decid+cpr, use=dec+pp, use=att610+cvis,

# "MGT" is "Multi-Tasking Graphics Terminal"
att730-41|730MTG-41|AT&T 730-41 windowing terminal,
	lines#41, use=att730,
att730-24|730MTG-24|AT&T 730-24 windowing terminal,
	lines#24, use=att730,
att730r|730MTGr|AT&T 730 rev video windowing terminal,
	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,
	lines#41, use=att730r,
att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal,
	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, cup=\E[%p1%d;%p2%dH, cvvis=\E[>h,
	dch=\E[%p1%dP, dch1=\E[P, ed=\E[0J, el=\E[0K, el1=\E[2K,
	home=\E[H, ht=^I, 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,
	use=ansi+cpr, use=ansi+idl, use=ansi+local,

# 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,
att505-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,
	cud1=\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,
	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,
	bel=^G, clear=\E[H\E[J$<156>, cr=\r, cub1=^H, cud1=^K,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
	el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG,
	ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il1=\E[L$<3>, ind=^K,
	is1=\E[m\E7\E[H\E9\E8,
	is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kcbt=\E[Z, kclr=\E[J,
	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,
	kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i, mc4=^C,
	mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8,
	rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E
	     \\,
	rmm=\E[>52l, 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, vpa=\E[%p1%{1}%+%dd, use=ansi+arrows,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	use=ansi+rep, use=ansi+sgrbold,

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, cup=\E[%i%p1%2d;%p2%2dH,
	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=,
	use=ansi+local1,

# 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,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

# 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=, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
	cup=\E[%i%p1%2d;%p2%2dH, cvvis=\E[?1l\E[?4l\E[?7h,
	dch1=\E[P, dl1=\E[M, 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,
	use=ansi+erase, use=ansi+local1,

# 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, lines#24,
	OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[1v,
	cnorm=\E[0;3;4v, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E[3;5v, flash=\E[?5l$<200/>\E[?5h, home=\E[H,
	hpa=\E[%i%p1%dG, 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, rev=\E[7m,
	ri=\EM, rmcup=, rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g,
	sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smso=\E[7m,
	smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u8=\E[?6c,
	use=ansi+enq, use=ansi+csr, use=ansi+erase, use=ansi+idc,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	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, lines#64, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	dch1=\E[P, ed=\EJ, el=\EK, home=\E[H, ind=\n, is2=\E<\E)0,
	kcbt=\E[Z, 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, 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>,
	sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	use=ansi+apparrows, use=ansi+csr, use=ansi+idl,
	use=ansi+inittabs, use=ansi+local,

# 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, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, ed=\E[J, el=\E[K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, 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, kc1=\EOR, kc3=\EOS, 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, rmkx=\E>, rmso=\E[0;2m, rmul=\E[0m,
	sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, smkx=\E=,
	smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+idc, use=ansi+idl,
	use=ansi+local,

#### 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,
	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,
	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, NQ,
	cols#80, lines#24, lm#0,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[0;5m, bold=\E[0;1m, civis=\E[6+{, cnorm=\E[+{,
	cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dsl=\E[2!w\r\n\E[!w, el1=\E[1K, fsl=\E[!w, home=\E[H,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, 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, kcbt=\E$I,
	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, kind=\E[T, knp=\E[U, kpp=\E[V,
	kri=\E[S, ll=\E[H\E[A, nel=\E[E, rev=\E[0;7m, ri=\EM,
	rmacs=^O, rmir=\E[4l, rmso=\E[m\017, rmul=\E[m\017,
	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, tsl=\E[2!w\E[%i%p1%dG, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+csr, use=ansi+erase,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	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, lines#24, lm#192,
	acsc=, bel=^G, clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=119h,
	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>, ich=\E[%p1%d@,
	il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, 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,
	kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, 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, ri=\EM$<4>, rmacs=\016$<1>,
	rmcup=\E[w\E2\r\n, rmkx=\E[!z\E[0;2u, rmso=\E[7!{,
	rmul=\E[4!{,
	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, smkx=\E[1!z\E[0;3u,
	vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+csr,
	use=ansi+idc1, use=ansi+inittabs, use=ansi+local,
	use=ansi+rep, use=ansi+sgrbold,

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,
	ncv#53, use=dgmode+color,

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, cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

# 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,
	cup=\E[%i%p1%2d;%p2%2dH, 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, 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, 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, u8=\E[5n, u9=\E[0n,
	use=ansi+arrows, use=ansi+cpr, use=ansi+local1,

# 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,
	cub1=^H, cup=\E[%i%p1%d;%p2%dH, 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=ansi+local,
	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,
	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, ich=\E[%p1%d@,
	ich1=\E[@,
	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, 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,
	use=ansi+idl, use=ansi+pp,

# 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, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, 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, use=ansi+erase,

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,
	am, eo, km@, ul, xenl,
	dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
	kf0=\Ey\r, kf9=\Ex\r, khome=\EH, pad=^?, rmdc@, rmir=\EP,
	rmso@, smdc@, smso@, use=dm3025, use=hp+pfk+cr,
# 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, cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH,
	cuu1=\E[A, ed=\E[J, el=\E[K, 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,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, 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, use=ansi+local1,

# (ts100: I added <rmam>/<smam> based on the init string -- esr)
ts100|ts100-sp|Falco ts100-sp,
	mir, xenl, xon,
	vt#3,
	cub1=^H, cud1=\n, cuf1=\E[C$<2>, cuu1=\E[A$<2>, dch1=\E~W,
	dl1=\E~R, ich1=\E~Q, il1=\E~E, is1=\E~)\E~ea, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmam=\E[?7l,
	rmkx=\E[?1l\E>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smam=\E[?7h,
	smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
	use=decid+cpr, use=vt100+4bsd, 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,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

#### 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|Liberty 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|Liberty 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,
	cup=\E[%i%p1%2d;%p2%2dH, 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, use=ansi+local1,

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, cub1=^H, cud1=\n, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	home=\E[H, ht=^I, il1=\E[L, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, 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,
	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,
	use=ansi+arrows, use=ansi+csr, use=ansi+erase,

#### 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=^_, 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,
	use=vt52+arrows,
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 (improved),
	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,
	khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3,
	use=hp+pfk-cr, use=vt52+arrows,
# 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, 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`, use=vt52+arrows,
# 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, kf9=\Ex, khome=\EH, rmso=\Ed@,
	rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`,
	use=hp+pfk-cr, use=vt52+arrows,

# 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 (no escape),
	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, 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, 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,
	sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
	smul=\E[4m$<2/>, use=ansi+csr,

#### 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, nel=\r\n, tbc=\EH,
	use=vt52+arrows,
ibm3151|IBM 3151 display,
	is2=\E S, rmacs=\E>B, rs2=\E S,
	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, 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, 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,
	use=vt52+arrows,

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, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
	dch1=\E[P, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%dG,
	ind=\E[S, is2=\Ec, kcbt=\E[Z, kclr=\E[144q, 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, kich1=\E[139q,
	kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q,
	kri=\E[155q, krmir=\E[4l, ri=\E[T, rmir=\E[4l, rs2=\Ec,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;%?%p7%t;8%;m,
	smir=\E[4h, use=ansi+arrows, use=ansi+erase,
	use=ansi+idl, use=ansi+local, use=ansi+sgrbold,
	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, rmso=\E0, sgr0=\E0, smso=\E0,
	use=vt52+arrows,
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,
	ht=^I, kcub1=^H, kcud1=\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,
	ncv@,
	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,
	ht=^I, kcub1=^H, kcud1=\n, use=ibmega-c,
ibmvga|IBM VGA display,
	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 (36-line),
	cols#90, lines#36,
	blink@, bold@, use=ibm5151,
ibm6153-40|IBM 6153 Black & White display (12-line),
	cols#40, lines#12, use=ibm6153-90,
ibm8512|ibm8513|IBM color VGA Terminal,
	mir,
	cub1=\E[D, is2=\Eb\E[m\017\E[?7h, kf0=\E[010q, rc=\E[u,
	rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
	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, use=ibm8503,
hft-c|HFT with Color,
	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,
	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, 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, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
	invis=\E[8m, 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, 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=ansi+arrows, use=ansi+erase, 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, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, home=\E[H,
	hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, is2=\Ec,
	kcbt=\E[Z, kclr=\E[144q, 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, kich1=\E[139q, kil1=\E[140q,
	kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q,
	krmir=\E[4l, 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%;,
	smacs=\E(0, smir=\E[4h, tbc=\E[3g, use=ansi+arrows,
	use=ansi+idl, use=ansi+local, use=ansi+sgrbold,
	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,
	lines#33,
	dsl=\Ej\EYA \EI\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,
	lines#41,
	dsl=\Ej\EYI \EI\Ek, ht=^I, kcub1=^H, kcud1=\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,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, 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, use=ibm6154,
	use=aixterm+sl,
aixterm+sl|status line for AIXterm,
	eslok, hs,
	dsl=\E[?E, fsl=\E[?F, tsl=\E[?%p1%dT,

aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, 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, use=ibm6153, use=aixterm+sl,
aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
	bold=\E[1m, ri@,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
	    %t;8%;m,
	use=ibm6153, use=aixterm+sl,
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,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,

#### 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~, kcbt=\EI, kclr=\E*, 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,
	use=ansi+arrows,

#### 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, lines#24, vt#3, wsl#72,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[<4l, clear=^L,
	cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v, cub1=^H,
	cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	dsl=\E[%}\024, ech=\E[%p1%dX, ed=\E[J$<10>, el=\E[K,
	fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, ind=\n,
	is2=\E[&p\E[<12l\E F, kclr=^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~,
	kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 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,
	tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, use=ansi+arrows,
	use=ansi+idl, use=ansi+inittabs, use=ansi+local,
	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, ich=\E[%p1%d@, ich1=\E[@,
	use=ansi+idl, 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, ich=\E[%p1%d@, ich1=\E[@,
	use=ansi+idl, 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,
	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, ri=\EA, rmir=^Z,
	rmso=\E9, rmul=\E5, smir=^O, smso=\E8, smul=\E4,
	use=vt52+arrows,
# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
mime3a|mime1 emulating 3a,
	am@,
	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, cnorm=\E[0V\E8, cr=\r, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P,
	flash=\E[?5l$<200/>\E[?5h, fsl=\E[?5l\E[?5h, home=\E[H,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 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,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ll=\E[24;1H, nel=\EE,
	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,
	sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[g,
	tsl=\E[25;1H, use=ansi+arrows, use=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+local,

# 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,
	cup=\E[%i%p1%d;%p2%dH, 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>, use=ansi+local1,

#### 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=decid+cpr, 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 (132 column),
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=decid+cpr, 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 (132 column),
	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, 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>, ed=\Ek$<2>,
	el=\EK$<2>, 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, use=ncr260vp+sl,

ncr260vp+sl|NCR 2900/260 viewpoint with status-line,
	hs,
	dsl=\E`c, fsl=\r, 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 keyboard,
	am, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	clear=\E[2J\E[1;1H$<20>, cr=\r$<1>, 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>, ech=\E[%p1%dX,
	ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, 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>,
	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>,
	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>,
	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, tbc=\E[3g,
	vpa=\E[%p1%dd$<40>, use=ansi+csr, use=ansi+sgrbold,
	use=decid+cpr, use=vt220+vtedit, use=vt220+cvis,
	use=vt220+keypad, use=ncr260vt+sl,

ncr260vt+sl|NCR 2900/260 VT100 status line,
	hs,
	dsl=\E[0$~\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$},
ncr260vt100wan|NCR 2900/260 VT100 wide mode ANSI keyboard,
	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+ keyboard,
	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~, kpp=\E[3~, lf1=pf1,
	lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
	use=ncr260vt100an,
ncr260vt100wpp|NCR 2900/260 VT100 wide mode PC+  keyboard,
	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 keyboard,
	am, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	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>, ech=\E[%p1%dX$<5>,
	ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, 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>,
	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~, 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, 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=, tbc=\E[3g,
	vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr,
	use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
	use=ncr260vt+sl,

ncr260vt200wan|NCR 2900/260 VT200 wide mode ANSI keyboard,
	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+ keyboard,
	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, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
	rmkx=\E>, smkx=\E=, use=ncr260vt200an,
ncr260vt200wpp|NCR 2900/260 VT200 wide mode PC+  keyboard,
	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 keyboard,
	am, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	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>, ech=\E[%p1%dX$<5>,
	ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, 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>,
	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, 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=, tbc=\E[3g,
	vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr,
	use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
	use=ncr260vt+sl,

ncr260vt300wan|NCR 2900/260 VT300 wide mode ANSI keyboard,
	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+ keyboard,
	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, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
	rmkx=\E>, smkx=\E=, use=ncr260vt300an,
ncr260vt300wpp|NCR260VT300WPP|NCR 2900/260 VT300 wide mode PC+  keyboard,
	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, 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>, ed=\Ey$<5>,
	el=\Et$<5>, 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,
	use=ncr260vp+sl,
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,
	colors#16, ncv#33, pairs#16,
	acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, cbt=\EI,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, ed=\Ey$<5>,
	el=\Et$<5>, ht=^I, hts=\E1,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
	    \Ee7$<100>,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
	rmacs=\EH\003\EcB0,
	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, tbc=\E0,
	use=ncr260vp+sl, use=ncr160wy50+pp,
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, 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>,
	ed=\EY$<5>, el=\ET$<5>, 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>,
	use=ncr260vp+sl,
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, 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>, ed=\Ey$<5>,
	el=\Et$<5>, 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>,
	use=ncr260vp+sl,
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 keyboard,
	use=ncr260vt100an,
ncr160vt100pp|NCR 2900/160 VT100 with PC+  keyboard,
	use=ncr260vt100pp,
ncr160vt100wan|NCR 2900/160 VT100 wide mode ANSI keyboard,
	use=ncr260vt100wan,
ncr160vt100wpp|NCR 2900/160 VT100 wide mode PC+  keyboard,
	use=ncr260vt100wpp,
ncr160vt200an|NCR 2900/160 VT200 with ANSI keyboard,
	use=ncr260vt200an,
ncr160vt200pp|NCR 2900/160 VT200 with PC+  keyboard,
	use=ncr260vt200pp,
ncr160vt200wan|NCR 2900/160 VT200 wide mode ANSI keyboard,
	use=ncr260vt200wan,
ncr160vt200wpp|NCR 2900/160 VT200 wide mode PC+  keyboard,
	use=ncr260vt200wpp,
ncr160vt300an|NCR 2900/160 VT300 with ANSI keyboard,
	use=ncr260vt300an,
ncr160vt300pp|NCR 2900/160 VT300 with PC+ keyboard,
	use=ncr260vt300pp,
ncr160vt300wan|NCR 2900/160 VT300 wide mode ANSI keyboard,
	use=ncr260vt300wan,
ncr160vt300wpp|NCR 2900/160 VT300 wide mode PC+  keyboard,
	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,
	hs, mc5i, mir, xon,
	nlab#32,
	acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
	blink=\E[5m$<30>, bold=\E[1m$<30>,
	clear=\E[2J\E[1;1H$<300>,
	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>, cup=\E[%i%p1%d;%p2%dH$<100>,
	cuu=\E[%p1%dA$<30>, 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>, 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, 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>, use=decid+cpr, use=vt100+4bsd,
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,
	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, use=vt52+arrows,
# 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,
	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,
	cub1=^H, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH, 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,
	khome=\E[H, rc=\EX, rev=\E[7m,
	rf=/usr/share/tabset/vt100, ri=\EI, rin=\E[%p1%dA,
	rmacs=\Ed, rmam=\E[?7l,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\EW,
	sgr0=\E[m, smacs=\EF, smam=\E[?7m, tsl=\E], uc=\EPB,
	use=ansi+apparrows, use=ansi+local, use=ansi+sgrso,
	use=ansi+sgrul,

#### 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@, 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, use=vt52+arrows,
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,
	cup=\010\E[%i%p1%d;%p2%dH, 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=ansi+local1, 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,
	cup=\010\E[%i%p1%d;%p2%dH, 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=ansi+local1,
	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,
	mir, xenl, xon,
	lines#30, vt#3,
	cub1=^H, cud1=\n, cuf1=\E[C$<2>, cuu1=\E[A$<2>, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m$<2>, smam=\E[?7h,
	smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
	use=vt100+4bsd, 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 (BRL),
	OTbs, OTpt, msgr, xon,
	OTkn#8, cols#80, lines#30, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m,
	civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX, home=\E[H, 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, 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>,
	sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
	use=ansi+local, 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, lines#32, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m,
	civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P,
	ech=\E[%p1%dX, home=\E[H, 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, 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>,
	sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, use=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
	use=ansi+local, 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, 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, use=vt52+arrows,
# 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|Tektronix 4110 series (old),
	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 (old),
	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,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,
tek4115|Tektronix 4115 entry with more ANSI capabilities (new),
	am, xon,
	cols#80, lines#34,
	bel=^G, cr=\r, cub1=^H, cud1=\n, dch1=\E[P, ich=\E[%p1%d@,
	ich1=\E[@, ind=\n, kcuu1=\E[A, rmam=\E[?7l, sgr0=\E[m,
	smam=\E[?7h, use=ansi+arrows, use=ansi+cup,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+rep, use=ansi+rca, use=ansi+sgrbold,
	use=ansi+tabs,

# 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, 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,
	rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
	rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, 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, use=ansi+csr,

# 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, cup=\E[%i%p1%d;%p2%dH,
	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, use=ansi+local,

#### 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, mc0=\E;3, mc4=\E;0,
	mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,
	use=vt52+arrows,

#### 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, clear=\Ec, cr=\r, cup=\E[%i%p1%d;%p2%dH,
	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, kcbt=^], kdch1=^?, kend=\E[Y, kf1=\240,
	kf10=\251, kf2=\241, kf3=\242, kf4=\243, kf5=\244, kf6=\245,
	kf7=\246, kf8=\247, kf9=\250, 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,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
	    %;%?%p7%t30;40%;m,
	sgr0=\E[m, use=ansi+arrows, use=ansi+local,
	use=ansi+sgrbold,

#### 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, 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, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
	kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
	use=vt52+arrows,
#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, cup=\E[%i%p1%d;%p2%dH, 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,
	use=ansi+local1,
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,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, 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, 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,
	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, use=ansi+csr, use=ansi+local,

# 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, 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,
	use=vt52+arrows,

#### 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, cnorm=\E[ p, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H,
	ich=\E[%p1%d@, ich1=\E[@, 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=ansi+erase, use=ansi+idl, use=ansi+local,
	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,
	cnorm=\E[p\E[>?6l, cr=\r, csr=\E[%i%p1%d;%p2%dr,
	cup=\E[%i%p1%d;%p2%dH, cvvis=\E[>?6h, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[1M, 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,
	kcbt=\233Z, 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=ansi+arrows, use=ansi+erase,
	use=ansi+local, 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),
	NQ,
	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 matches the entry provided with minix 1.7.4, with bogus :ri: removed.
minix-1.7|minix console (v1.7),
	am, xenl, xon@,
	el1=\E[2K, is2=\E[0m, lf0=End, lf1=PgUp, lf2=PgDn, lf3=Num +,
	lf4=Num -, lf5=Num 5, use=minix-1.5,
# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
minix-old|minix-1.5|minix console (v1.5),
	xon, NQ,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
	cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	ed=\E[0J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, ind=\n, kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T,
	kf4=\E[S, kf5=\E[G, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m,
	rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
	use=ansi+arrows, use=ansi+idl, use=ansi+local,

# 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, khome=\EH,
	ri=\EI, rmir=\EO, rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
	use=vt52+arrows,

# 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, 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, rev=\E[7m, ri=\E[T,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, use=ansi+csr,

# 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,
	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, cnorm=\E[<1l, cr=\r,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	flash=^G, fsl=\n, home=\E[H, ht=^I, ind=\n, ip=$<7/>,
	is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
	is3=\E[?3l, kclr=\E[2J, 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, kich1=\E[4h,
	kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, mc0=\E[i,
	nel=\r\n, 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, sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tsl=^_@A, use=ansi+arrows, use=ansi+cpr,
	use=ansi+csr, use=ansi+erase, use=ansi+idl,
	use=ansi+local,

# 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,
	cub1=^H, cud1=\n, cuf1=^I, cuu1=^K, dch=\E[%p1%dP, dch1=\E[P,
	ed=\E[J, el1=\E[1K, is1=\E;iYA\E;jYC, kbs@, kcan@,
	kclr=\E[2J, kctab=^I, 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@, 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=ansi+arrows, use=ansi+idl, use=ansi+local,
	use=minitel1,

# rmkx posait des problemes (logout en sortant de vi).
minitel1b-80|minitel 1-bistandard (standard teleinformatique),
	am@, bw@, eslok@, hz@, msgr,
	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,
	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),
	acsc=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
	enacs=\E)0, rmacs=^O, smacs=^N, u6=\E[%i%d;%dR,
	C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
	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),
	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,
	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@, u8=\E[?1;2c, use=decid+cpr,
	use=xterm+x11mouse, use=screen,

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, 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,
	it#8, ncv#16,
	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, cr=\r, cub1=^H, cud1=\n,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
	el1=\E[1K, enacs=\E)U, flash=\E[?5h$<100/>\E[?5l,
	hpa=\E[%i%p1%d`, ht=^I, hts=\EH, 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,
	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~,
	khome=\E[1~, kil1=\E\E[B, kmous=\E[M, nel=\EE,
	oc=\E]R\E]P3FFFF80, op=\E[39;49m, 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], 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=ansi+arrows, use=ansi+csr, use=ansi+cup,
	use=ansi+erase, use=ansi+idl, use=ansi+local1,
	use=klone+color, 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@, setab=^A, setaf=^A, sgr0=\E[;37m, .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@,
	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@,
	u8=\E[?1;2c,
	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=decid+cpr, use=xterm+x11mouse, use=screen,

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,
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S,
	use=xterm+alt47, use=putty+screen, use=xterm+sl-twm,
	use=ecma+index, use=linux-m1,

putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir),
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S,
	use=xterm+alt47, use=putty+screen, use=xterm+sl-twm,
	use=ecma+index, use=linux-m1b,

putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir),
	acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{
	     {||}}~~,
	dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S,
	use=xterm+alt47, use=putty+screen, use=xterm+sl-twm,
	use=ecma+index, use=linux-m2,

putty+screen|PuTTY with screen resizing extensions (building-block),
	.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, kf1=\Ex,
	kf2=\Ey, kf3=\Ez, use=vt52+arrows,

# (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, cub1=^H,
	cup=%i\E[%p1%d;%p2%dH, 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, rmkx=\E>, rmso=\E[m, sgr0=\E[m, smkx=\E=,
	smso=\E[7m, use=ansi+csr, use=ansi+local1,

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,
	cup=%i\E[%p1%d;%p2%dH, dl1=\E[M$<2*>, ed=\E[J$<150>,
	el=\E[K$<2>, ht=^I, il1=\E[L$<2*>, ind=\n$<280>, 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, use=ansi+local1,
	use=vt52+arrows,

#### 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, lines#24, wsl#80,
	acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
	bel=^G, blink=\E[0;5m, civis=\E[1r, clear=\E[2J,
	cnorm=\E[r, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%df,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[0;2m,
	dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, fsl=\E[v,
	home=\E[H, ht=\E[I, 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, kcbt=\E[Z, kctab=\E[g, 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, 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, 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,
	tsl=\EPY99:98\E\\\E[0;98v\E[2;7m, use=ansi+arrows,
	use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
	use=ansi+local, use=ansi+sgrdim,

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,
	eo, km, mir, xenl, xon,
	vt#3, wsl#80,
	blink=\E[5m, bold=\E[1m, cup=\E[%i%p1%d;%p2%dH,
	dch=\E[%p1%dP, dch1=\E[P, dsl=\E[1$}\E[2$~\n\E[0$},
	ech=\E[%p1%dX, el1=\E[1K, flash=\E[?5h$<50>\E[?5l,
	ich=\E[%p1%d@, 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, kc1=\EOq, kc3=\EOs, 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, 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,
	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, tsl=\E[1$}\E[2$~, use=ansi+enq, use=ansi+csr,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+pp, use=dec+sl, use=vt100+4bsd, use=vt220+cvis,
	use=vt220+vtedit,

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,
	eo, eslok, hs, km, mc5i, mir, xenl, xon,
	vt#3, wsl#80,
	blink=\2335m, bold=\2331m, clear=\233H\233J,
	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, flash=\233?5h$<50>\233?5l,
	fsl=\2330$}, home=\233H, 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, 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=vt100+4bsd, 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,
	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~, 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,
	vt#3, wsl#80,
	acsc=0pjdkblamcnkqitgufvhwexj, blink=\EsB, clear=\E`,
	cub1=^H, cud1=\n, cup=\E[%i%p1%03d%p2%03df, dch1=\E[P,
	dim=\EsL, dl1=\E[M, dsl=\Ev,
	flash=\007$<80>\007$<80>\007, fsl=\EO, hts=\Ep,
	ich1=\E[I, invis=\EsH,
	is2=\E[00u\E[<>001001024080024080u\E[01u,
	is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kcbt=\E[Z,
	kclr=\E`, kctab=\E[g, 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, use=ansi+inittabs,
	use=vt52-basic,
# 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,
	u8=\E/[HJ], use=vt52+keypad, use=vt50, use=vt52+arrows,

# (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>, ri=\E$<20>I, use=vt52+arrows,

# 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local,

# 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, 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, use=vt52+arrows,

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,
	kbs=^H, kcub1=^H, kcud1=\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/>, 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, 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,
	sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m$<2/>, use=ansi+csr,

#### 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, 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, use=vt52+arrows,
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, 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, use=vt52+arrows,
# 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, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P,
	dim=\E[2m, 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,
	ind=\ED, kclr=\E[J, 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,
	use=ansi+apparrows, use=ansi+idl, use=ansi+local,

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, 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, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
	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, 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, kc1=\EOq, kc3=\EOs, ked=\E[J, kf1=\EOS, kf2=\EOT,
	kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR,
	kf9=\EOX, khlp=\E[~, ll=\E[24;1H, mc0=\E[?19h\E[i, 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,
	tsl=\E[s\E[>1h\E[25;%i%p1%dH, use=ansi+arrows,
	use=ansi+local, use=ansi+pp, use=ansi+tabs,

# 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, 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, use=vt52+arrows,
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, 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, use=vt52+arrows,

#### 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, cub1=^H, cud=\E[%p1%dB, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, ind=\ED, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
	rmir=\E[4l, sc=\E7, sgr0=\E[m, smdc=\E[4h, smir=\E[4h,
	use=ansi+arrows, use=ansi+idl, use=ansi+local,
	use=ansi+sgrso,

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@,
	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, 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, rev=\E[7m, ri=\EM,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\E=\E[0q\E>,
	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	use=ansi+csr,

#### 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, cub1=^H,
	cud1=^K, cup=\E[%i%p1%d;%p2%dH, 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, 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>,
	sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, use=ansi+csr, use=ansi+local,

# [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, cr=\r, cub=\E[%p1%dD,
	cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, hts=\EH,
	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>,
	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=, tbc=\E[3g,
	use=ansi+erase, use=ansi+idl, use=ansi+local,
	use=ansi+sgrso, use=ansi+sgrul,

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>, ed=\EY, el=\ET, 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 -esr
#
# According to
# https://ub.fnwi.uva.nl/computermuseum/tab13215g.html
#	This monochrome graphics terminal of TAB Products, California, is a DEC
#	VT52/VT100/VT132 compatible alphanumeric terminal (TAB 132/15),
#	factory-fitted with additional hardware for Tektronix 4010 emulation. 
#	Also the terminal understands a selection of Tektronix 4027 commands. 
tab132|tab|tab132-15|tab 132/15,
	da, db,
	OTdN@, lm#96,
	cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, il1=\E[L,
	is2=\E[?7h\E[?3l\E[?5l, rmir=\E[4l, rmkx@, smir=\E[4h,
	smkx@, use=decid+cpr, 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,
	cup=%i\E[%p1%d;%p2%df, 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,
	use=ansi+local1,

#### 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 (132 column),
	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,
	cbt=\E[Z, clear=\E[H\E[2J$<6>, dch=\E[%p1%dP$<250>,
	ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K,
	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>, 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, 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, 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, cup=%i\E[%p1%d;%p2%dH,
	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=ansi+local1, 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, cup=%i\E[%p1%d;%p2%dH,
	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=ansi+local1,
	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), 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,
	use=vt52+arrows,
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,
	cup=\E[%i%p1%d;%p2%dH, 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,
	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, 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, use=ansi+arrows, use=ansi+local1,
#
#       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, khome=\EH,
	mc4=^T, mc5=^R, rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s,
	sgr0=\EM\s, smso=\EM$, smul=\EM0, use=vt52+arrows,

######## 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+vt132|Apollo console emulating VT132,
	rmir@, smir@, use=vt132,

apollo_15P|Apollo 15 inch display,
	use=apollo+vt132,
apollo_19L|Apollo 19 inch display,
	use=apollo+vt132,
apollo_color|Apollo color display,
	use=apollo+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, lines#25,
	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
	bel=^G, civis=\E[=C, clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r,
	cup=\E[%i%p1%d;%p2%dH, 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, 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, kcbt=^], 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,
	kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S,
	rc=\E8, ri=\E[T, rmacs=\E[10m, 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, vpa=\E[%i%p1%dd,
	use=ansi+arrows, use=ansi+inittabs, use=ansi+local,
	use=ansi+sgrbold, 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,
	cup=\E[%i%p1%2d;%p2%2dH, 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,
	use=ansi+local1,

# 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, cub1=^H,
	cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, ed=\E[0J,
	el=\E[0K, home=\E[H, ich1=\E[@, 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, kcan=\EOw,
	kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
	kcrt=\EOn, 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,
	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, use=ansi+arrows,
	use=ansi+idl, use=ansi+local,

#### 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, cup=\E[%i%p1%d;%p2%dH, 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, use=ansi+local1,
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, cup=\E[%i%p1%2d;%p2%2dH, ed=\E[J,
	el=\E[K, home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m, use=ansi+local1,

# (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, cup=\E[%p1%d;%p2%dH, dch1=\E[P,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L,
	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=ansi+arrows,
	use=ansi+local1, 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, 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,
	use=hp+pfk+cr,

# 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, cr=\r, cub1=^H, cud1=\n,
	cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\n, is2=\E[m,
	kcbt=^R^I, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, kf4=\E[23s,
	kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, 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,
	use=ansi+arrows, use=ansi+erase, use=ansi+idl,
	use=ansi+local,

# 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, 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,
	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>, sgr0=\E[m$<2/>, smkx=\E=\E[?1h,
	smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr,

# 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, cub1=^H, cud1=\n,
	cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
	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=ansi+local, 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,
	acsc=+\^\,Q-S.M0\177`+a:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~
	     _,
	clear=\EH\EJ, cub1=^H, cud1=\n, dch1=\EP, ich1=\EQ, kbs=^?,
	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, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
	sgr0=\EX, smacs=\EF, smso=\ET, use=vt52-basic,
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{, kcbt=\EI, 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=ansi+arrows, 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,
	cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, 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, use=ansi+erase, use=ansi+local1,
######## 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, E3,
# 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:
#
# For a discussion of "xterm", "xterm-256color" as values for TERM, see
#	https://invisible-island.net/ncurses/ncurses.faq.html#xterm_generic
#	https://invisible-island.net/ncurses/ncurses.faq.html#xterm_256color
#
# For xterm control sequences, see
#	https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
#
# For function-keys with modifiers, see
#	https://invisible-island.net/ncurses/ncurses.faq.html#modified_keys
#
# For a discussion of "bracketed paste", see
#	https://invisible-island.net/xterm/xterm-paste64.html
#
# 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 kxIN kxOUT ka2 kb1
# kb3 kc2
#
# Bracketed paste is described with these capabilities in vim:
#
# BE enables bracketed paste
# BD disables bracketed paste
# PS is sent before the pasted text
# PE is sent after the pasted text
#
# vim also uses these names for xterm focus:
#
# fe enables focus events
# fd disables focus events
#
# 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.
# RV requests the terminal to report secondary device attributes (i.e, version).
# rv shows the format of the terminal responses, as a regular expression.
# 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".
# XF is set/true for terminals which support the xterm focus-in/focus-out
#    escape sequences sent from the terminal to the host when private mode
#    1004 is set.  Those are defined as kxIN and kxOUT, to take advantage of
#    ncurses keypad mode to interpret them like a function key.  Because the
#    1004 mode is usually combined with other flags to set the mouse protocol,
#    this flag provides an application with the information that the focus
#    mode is assumed to be set, e.g., in XM.
# 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
# XR requests the terminal to report its version as a free-format string.
# xr shows the format of the terminal responses, as a regular expression.
#
#### Miscellaneous extensions:
#
# csr clears the status line
# 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.
# NQ denotes a terminal which does not support the standard query/response used
#    in u6/u7 (cursor position) and u8/u9 (device attributes).
# 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 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 mintty, 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
#
# 2021-11-13
#	+ add xterm+sl-alt, use that in foot+base (report by Jonas Grosse
#	  Sundrup) -TD
#
# 2021-11-20
#	+ add dim, ecma+strikeout to st-0.6 -TD
#
# 2021-11-27
#	+ fix errata in description fields (report by Eric Lindblad) -TD
#	+ add x10term+sl, aixterm+sl, ncr260vp+sl, ncr260vp+vt, wyse+sl -TD
#
# 2022-01-23
#	+ update kitty -TD
#
# 2022-03-12
#	+ add xterm+acs building-block -TD
#	+ add xterm-p370, for use in older terminals -TD
#	+ add dec+sl to xterm-new, per patch #371 -TD
#	+ add mosh and mosh-256color -TD
#
# 2022-03-19
#	+ add xgterm -TD
#	+ correct setal in mintty/tmux entries, add to vte-2018 (report by
#	  Robert Lange)
#	+ add blink to vte-2018 (report by Robert Lange)
#
# 2022-03-26
#	+ update teken -TD
#	+ add teken-16color, teken-vt and teken-sc -TD
#	+ add a few missing details for vte-2018 (report by Robert Lange) -TD
#
# 2022-03-27
#	+ make description-fields distinct -TD
#
# 2022-04-30
#	+ modify samples for xterm mouse 1002/1003 modes to use 1006 mode, and
#	  also provide for focus in/out responses -TD
#
# 2022-05-28
#	+ expanded notes for teken/syscons -TD
#
# 2022-06-04
#	+ remove u6-u9 from teken-2018 -TD
#	+ set "xterm-new" to "xterm-p370", add "xterm-p371" -TD
#
# 2022-06-18
#	+ revise kon/kon2/jfbterm to undo "linux2.6" change to
#	  smacs/rmacs/enacs (Debian #1012800) -TD
#	+ amended note for att610+cvis0, as per documentation for att610,
#	  att620, att730 -TD
#
# 2022-06-25
#	+ correct dsl in dec+sl (report by Rajeev Pillai) -TD
#	+ add/use ansi+cpr, decid+cpr -TD
#
# 2022-07-03
#	+ use NQ to flag entries where the terminal does not support query and
#	  response -TD
#	+ use ansi+enq and decid+cpr in cases where the terminal probably
#	  supported the u6-u9 extension -TD
#	+ add/use apollo+vt132, xterm+alt47 -TD
#
# 2022-08-27
#	+ modify nsterm to use xterm+alt1049 (report by Paul Handly) -TD
#	+ modify putty to use xterm+alt1049 -TD
#
# 2022-12-24
#	+ add/use bracketed+paste to help identify terminals supporting this
#	  xterm feature (prompted by discussion with Bram Moolenaar) -TD
#
# 2022-12-29
#	+ correct PS vs PE names in bracketed+paste (report by Bram Moolenaar)
#	  -TD
#
# 2023-01-07
#	+ add comment to bracketed+paste explaining that vim patch 9.0.1117 is
#	  needed for use with the updated xterm descriptions (suggested by Bram
#	  Moolenaar).
#	+ add RV report+version (suggested by Bram Moolenaar).
#
# 2023-01-14
#	+ change RV to XR/xr, to avoid conflict with pre-existing usage in vim,
#	  to use RV/rv to denote DA2 and its response (discussion with Bram
#	  Moolenaar) -TD
#	+ add XF flag to xterm+focus so that termcap applications can be aware
#	  of terminals which may support focus in/out -TD
#	+ use xterm+focus in xterm-p370 and tmux -TD
#
# 2023-01-28
#	+ document XF, kxIN and kxOUT -TD
#	+ add note on sun/wscons/cmdtool/shelltool -TD
#
# 2023-04-01
#	+ remove DECCOLM+DECSCLM from foot (patch by Daniel Ekloef).
#
# 2023-04-08
#	+ add xterm+focus to alacritty+common (patch by Christian Duerr).
#
# 2023-05-08
#	+ add mode 1004 to xterm+sm+1006 from xterm #380 -TD
#
# 2023-06-05
#	+ add xterm+focus to foot+base (patch by Daniel Ekloef).
#
# 2023-07-08
#	+ add linux+kbs for terminals which imitate xterm's behavior with
#	  Linux -TD
#
# 2023-07-15
#	+ mention E3 in regard to user_caps(5) -TD
#
# 2023-08-12
#	+ add/use putty+cursor to reflect amending of modified cursor-keys in
#	  2021 -TD
#	+ add ecma+strikeout to putty -TD
#
# 2023-10-21
#	+ use oldxterm+sm+1006 in vte-2014 (report by Benno Schulenberg) -TD
#	+ add ansi+apparrows -TD
#
# 2023-10-28
#	+ move xterm focus mode 1004 from xterm+sm+1006 into xterm+focus as
#	  fe/fd capabilities, like vim (vim-pr #13440).
#
# 2023-11-11
#	+ used "infocmp -u" to help trim redundant capabilities -TD
#
# 2023-12-09
#	+ remove xterm+sm+1006 from tmux (Debian #1057688).
#	+ used "infocmp -u" to help trim redundant capabilities -TD
#
# 2023-12-16
#	+ used "infocmp -u" to help trim redundant capabilities -TD
#
# 2023-12-30
#	+ add ms-vt100-16color, winconsole -TD
#	+ add rio, rio-direct -TD
#	+ add mostlike -TD
#	+ add wezterm, contour -TD
#
# 2024-01-06
#	+ use ansi+arrows, ansi+apparrows, ansi+csr, ansi+erase, ansi+idc,
#	  ansi+idc1, ansi+idl, ansi+idl1, ansi+inittabs to trim -TD
#
# 2024-01-07
#	+ restore padding for wy520* and vt320-k311 (report by Sven Joachim).
#
# 2024-01-13
#	+ use ansi+local, ansi+local1, ansi+pp, ansi+rca, ansi+rca2, ansi+sgr
#	  to trim -TD
#
# 2024-01-14
#	+ use ansi+sgrbold, ansi+sgrdim, ansi+sgrso, ansi+sgrul, ansi+tabs
#	  ecma+color, ecma+sgr, vt100+4bsd, vt100+pfkeys, vt220+pcedit
#	  xterm+256color, xterm+acs, xterm+nopcfkeys, xterm+pcf2 to trim -TD
#
# 2024-01-27
#	+ amend change to z39-a (report by Sven Joachim).
#	+ use xterm+nopcfkeys, vt52-basic, dec+pp, dec+sl, vt52+arrows,
#	  hp+pfk+cr, klone+acs, klone+color, klone+sgr, ncr160wy50+pp
#	  to trim -TD
#	+ NetBSD-related fixes for x68k and wsvt52 (patch by Thomas Klausner)
#
# 2024-02-11
#	+ add vt100+noapp, vt100+noapp+pc, xterm+app+pc, xterm+decedit from
#	  xterm #389 -TD
#
# 2024-03-09
#	+ modify xgterm to work around line-drawing bug -TD
#	+ use CSI 3J in vte-2017 (report by Sven Joachim)
#
######## SHANTIH!  SHANTIH!  SHANTIH!
