######## 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.341 $
#	$Date: 2008/10/12 23:03:54 $
#
# 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.
#
#------------------------------------------------------------------------------
#	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=^M, cud1=^J, ind=^J,
unknown|unknown terminal type,
	gn, use=dumb,
lpr|printer|line printer,
	OTbs, hc, os,
	cols#132, lines#66,
	bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J,
glasstty|classic glass tty interpreting ASCII control characters,
	OTbs, am,
	cols#80,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H,
	kcud1=^J, nel=^M^J, .kbs=^H,

vanilla|dumb tty,
	OTbs,
	bel=^G, cr=^M, cud1=^J, ind=^J,

# 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=^J, bel=^G, cud1=^J,

#### 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,
	cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
ansi+local,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, use=ansi+local1,
ansi+tabs,
	cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[2g,
ansi+inittabs,
	it#8, use=ansi+tabs,
ansi+erase,
	clear=\E[H\E[J, ed=\E[J, el=\E[K,
ansi+rca,
	hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
ansi+cup,
	cup=\E[%i%p1%d;%p2%dH, home=\E[H,
ansi+rep,
	rep=%p1%c\E[%p2%{1}%-%db,
ansi+idl1,
	dl1=\E[M, il1=\E[L,
ansi+idl,
	dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1,
ansi+idc,
	dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6,
ansi+arrows,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	khome=\E[H,
ansi+sgr|ansi graphic renditions,
	blink=\E[5m, invis=\E[8m, rev=\E[7m,
	sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E[0m,
ansi+sgrso|ansi standout only,
	rmso=\E[m, smso=\E[7m,
ansi+sgrul|ansi underline only,
	rmul=\E[m, smul=\E[4m,
ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim,
	bold=\E[1m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold,
	dim=\E[2m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m,
	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
ansi+pp|ansi printer port,
	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
ansi+csr|ansi scroll-region plus cursor save & restore,
	csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,

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

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

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

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

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

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

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

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

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

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

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

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

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

# 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=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

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

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

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

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

# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
# all the normal ANSI stuff with no extensions. It assumes
# insert/delete line/char is there, so it won't work with
# vt100 clones. It assumes video attributes for bold, blink,
# underline, and reverse, which won't matter much if the terminal
# can't do some of those. Padding is assumed to be zero, which
# shouldn't hurt since xon/xoff is assumed.
ansi-generic|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
ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
	OTbs, am, mir, msgr, xon,
	cols#80, lines#25,
	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
	is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
	khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s", rc=\E[u,
	rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR,
	u7=\E[6n, use=klone+color, use=klone+sgr8,
ansi.sys|ANSI.SYS 3.1 and later versions,
	el=\E[K, 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 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-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 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p,
	use=ansi.sysk,

#### ANSI console types
#

#### BeOS
#
# BeOS entry for Terminal program Seems to be almost ANSI
beterm|BeOS Terminal,
	am, eo, mir, msgr, xenl, xon,
	colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
	kend=\E[4~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
	nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
	rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm,
	sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m,
	smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
	vpa=\E[%i%p1%dd,

#### Linux consoles
#

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

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

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

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

# 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://groups.google.com/group/fa.linux.kernel/browse_thread/thread/87f98338f0d636bb/aa96e8b86cee0d1e?lnk=st&q=#aa96e8b86cee0d1e
linux2.6.26|linux console w/o bce,
	bce@, use=linux,

# 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``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
	rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
	smpch@, use=linux,

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

#### Mach
#

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

# From: Marcus Brinkmann
# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/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, xon,
	colors#8, it#8, ncv#18, pairs#64,
	acsc=++\,\,--..00ii``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\Ec, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[34l, dch=\E[%p1%dP,
	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\Eg,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
	invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
	kend=\E[4~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T,
	rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E[10m, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	sgr0=\E[0m, sitm=\E[3m, smacs=\E[11m, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l,
	gsbom=\E[>1h,

#### OSF Unix
#

# OSF/1 1.1 Snapshot 2
pmcons|pmconsole|PMAX console,
	am,
	cols#128, lines#57,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I,
	ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,

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

# This actually describes the generic SVr4 display driver for Intel boxes.
# The <dim=\E[2m> isn't documented and therefore may not be reliable.
# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
att6386|at386|386at|AT&T WGS 6386 console,
	am, bw, eo, xon,
	cols#80, it#8, lines#25,
	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C,
	clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S,
	indn=\E[%p1%dS, invis=\E[9m, is2=\E[0;10;39m, kbs=^H,
	kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
	kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kich1=\E[@,
	knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m,
	ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
	sc=\E7,
	sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
	sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
	tbc=\E[2g, vpa=\E[%i%p1%dd, 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=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
	dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K,
	home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=^J,
	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=^M^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g,

# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
#
# I have a UNIX PC which I use as a terminal attached to my Linux PC.
# Unfortunately, the UNIX PC terminfo entry that comes with ncurses
# is broken. All the special key sequences are broken, making it unusable
# with Emacs. The problem stems from the following:
#
# The UNIX PC has a plethora of keys (103 of them, and there's no numeric
# keypad!), loadable fonts, and strange highlighting modes ("dithered"
# half-intensity, "smeared" bold, and real strike-out, for example.) It also
# uses resizable terminal windows, but the bundled terminal program always
# uses an 80x24 window (and doesn't support seem to support a 132-column
# mode.)
#
# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a
# library which was a superset of SVr3.5 curses (called tam, for "terminal
# access method".) tam includes support for real, overlapping windows,
# onscreen function key labels, and bitmap graphics. But since the primary
# user interface on the UNIX PC was a GUI program (ua, for "user
# assistant",) and remote administration was considered important for the
# machine, tam also supported VT100-compatible terminals attached to the
# serial port or used across the StarLan network. To simulate the extra keys
# not present on a VT100, users could press ESC and a two-letter sequence,
# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
# however, were not the same as those sent by the actual Undo key. The
# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
# (If you're interested in adding some of the tam calls to ncurses, btw, I
# have the full documentation and several programs which use tam. It also
# used an extended terminfo format to describe key sequences, special
# highlighting modes, etc.)
#
# KEYS: This means that ncurses would quite painful on the UNIX PC, since
# there are two sequences for every key-modifier combination (local keyboard
# sequence and remote "VT100" sequence.) But I doubt many people are trying
# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the
# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
# seem to have been built from the manual describing the VT100 sequences.
# This means it doesn't work for a real live UNIX PC.
#
# FONTS: The UNIX PC also has a strange interpretation of "alternate
# character set". Rather than the VT100 graphics you might expect, it allows
# up to 8 custom fonts to be loaded at any given time. This means that
# programs expecting VT100 graphics will usually be disappointed. For this
# reason I have disabled the smacs/rmacs sequences, but they could easily be
# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
# manpage), should you wish to do so:
#
# SGR10 - Select font 0 - ESC [ 10 m or SO
# SGR11 - Select font 1 - ESC [ 11 m or SI
# SGR12 - Select font 2 - ESC [ 12 m
# ... (etc.)
# SGR17 - Select font 7 - ESC [ 17 m
#
# Graphics for line drawing are not reliably found at *any* character
# location because the UNIX PC has dynamically reloadable fonts. I use font
# 0 for regular text and font 1 for italics, but this is by no means
# universal. So ASCII line drawing is in order if smacs/rmacs are enabled.
#
# MISC: The cursor visible/cursor invisible sequences were swapped in the
# distributed terminfo.
#
# To ameliorate these problems (and fix a few highlighting bugs) I rewrote
# the UNIX PC terminfo entry. The modified version works great with Lynx,
# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC
# attached by serial cable. In Emacs, even the Undo key works, and many
# applications can now use the F1-F8 keys.
#
# esr's notes:
#	Terminfo entry for the AT&T Unix PC 7300
#	from escape(7) in Unix PC 7300 Manual.
#	Somewhat similar to a vt100-am (but different enough
#	to redo this from scratch.)
#
#	/***************************************************************
#	*
#	*           FONT LOADING PROGRAM FOR THE UNIX PC
#	*
#	*     This routine loads a font defined in the file ALTFONT
#	*     into font memory slot #1.  Once the font has been loaded,
#	*     it can be used as an alternative character set.
#	*
#	*     The call to ioctl with the argument WIOCLFONT is the key
#	*     to this routine.  For more information, see window(7) in
#	*     the PC 7300 documentation.
#	***************************************************************/
#	#include <string.h>		/* needed for strcpy call */
#	#include <sys/window.h>         /* needed for ioctl call */
#	#define FNSIZE	60		/* font name size */
#	#define ALTFONT  "/usr/lib/wfont/special.8.ft"  /* font file */
#	/*
#	*     The file /usr/lib/wfont/special.8.ft comes with the
#	*     standard PC software.  It defines a graphics character set
#	*     similar to that of the Teletype 5425 terminal.  To view
#	*     this or other fonts in /usr/lib/wfont, use the command
#	*     cfont <filename>.  For further information on fonts see
#	*     cfont(1) in the PC 7300 documentation.
#	*/
#
#	struct altfdata 	/* structure for alt font data */
#	{
#	short	altf_slot;		/* memory slot number */
#	char	altf_name[FNSIZE];	/* font name (file name) */
#	};
#	ldfont()
#	{
#		int wd;		/* window in which altfont will be */
#		struct altfdata altf;
#		altf.altf_slot=1;
#		strcpy(altf.altf_name,ALTFONT);
#		for (wd =1; wd < 12; wd++) {
#		     ioctl(wd, WIOCLFONT,&altf);
#	        }
#	}
#
# (att7300: added <civis>/<cnorm>/<ich1>/<invis> from the BSDI entry,
# they're confirmed by the man page for the System V display---esr)
#
att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
	am, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C,
	clear=\E[2J\E[H, cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD,
	cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
	ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=^J, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
	kCAN=\EOW, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE,
	kEND=\ENN, kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM,
	kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR,
	kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
	kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
	kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
	ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
	kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
	kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
	kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
	kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
	kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
	ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
	rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
	smul=\E[4m,

# 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=^M, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P,
	kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q,
	kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
	kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q,
	kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q,
	kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
	kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
	knp=\E[154q, kpp=\E[150q, kprt=\E[209q, krmir=\E[146q,
	kspd=\E[217q, nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\,
	rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
	sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
	tbc=\E[3g,
iris-ansi-ap|IRIS ANSI in application-keypad mode,
	is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
	kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,

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

# The following is a version of the ibm-pc entry distributed with PC/IX,
# (Interactive Systems' System 3 for the Big Blue), modified by Richard
# McIntosh at UCB/CSM.  The :pt: and :uc: have been removed from the original,
# (the former is untrue, and the latter failed under UCB/man); standout and
# underline modes have been added.  Note: this entry describes the "native"
# capabilities of the PC monochrome display, without ANY emulation; most
# communications packages (but NOT PC/IX connect) do some kind of emulation.
pcix|PC/IX console,
	am, bw, eo,
	cols#80, lines#24,
	clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m,

# (ibmpcx: this entry used to be known as ibmx.
# It formerly included the following extension capabilities:
#	:GC=b:GL=v:GR=t:RT=^J:\
#	:GH=\E[196g:GV=\E[179g:\
#	:GU=\E[193g:GD=\E[194g:\
#	:G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
#	:CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
#	:WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
# ":kh=\E[Y:".  Added IBM-PC forms characters and highlights, they match
# what was there before. -- esr)
ibmpcx|xenix|ibmx|IBM PC xenix console display,
	OTbs, am, msgr,
	cols#80, lines#25,
	clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
	kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
	kpp=\E[Z, use=klone+acs, use=klone+sgr8,

#### 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=^M, cub1=^H, cud1=^J, 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=^J, kBEG=\377\356, kCAN=\377\263,
	kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
	kDL=\377\366, kEND=\377\301, kEOL=\377\311,
	kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
	kHOM=\377\260, kIC=\377\340, kLFT=\377\264,
	kMOV=\377\306, kMSG=\377\304, kNXT=\377\272,
	kOPT=\377\372, kPRT=\377\275, kPRV=\377\262,
	kRDO=\377\315, kRES=\377\374, kRIT=\377\266,
	kRPL=\377\373, kSAV=\377\307, kSPD=\377\303,
	kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0,
	kclo=\377\343, kclr=\377\341, kcmd=\377\245,
	kcpy=\377\265, kcrt=\377\305, kctab=\377\237,
	kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246,
	kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274,
	ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320,
	kext=\377\270, kf1=\377\201, kf10=\377\212,
	kf11=\377\256, kf12=\377\257, kf13=\377\213,
	kf14=\377\214, kf15=\377\215, kf16=\377\216,
	kf17=\377\217, kf18=\377\220, kf19=\377\221,
	kf2=\377\202, kf20=\377\222, kf21=\377\223,
	kf22=\377\224, kf23=\377\333, kf24=\377\334,
	kf25=\377\225, kf26=\377\226, kf27=\377\227,
	kf28=\377\230, kf29=\377\231, kf3=\377\203,
	kf30=\377\232, kf31=\377\233, kf32=\377\234,
	kf33=\377\235, kf34=\377\236, kf35=\377\276,
	kf36=\377\277, kf37=\377\321, kf38=\377\322,
	kf39=\377\323, kf4=\377\204, kf40=\377\324,
	kf41=\377\325, kf42=\377\326, kf43=\377\327,
	kf44=\377\330, kf45=\377\331, kf46=\377\332,
	kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206,
	kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346,
	khlp=\377\350, khome=\377\240, khts=\377\342,
	kich1=\377\253, kil1=\377\273, kind=\377\261,
	kmov=\377\351, kmrk=\377\355, kmsg=\377\345,
	knp=\377\252, knxt=\377\312, kopn=\377\357,
	kopt=\377\353, kpp=\377\242, kprt=\377\255,
	kprv=\377\302, krdo=\377\336, kref=\377\354,
	kres=\377\360, krfr=\377\347, kri=\377\271,
	krmir=\377\313, krpl=\377\362, krst=\377\352,
	ksav=\377\361, kslt=\377\247, kspd=\377\335,
	ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER,
	rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER,
	rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d,
	setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei,
	smso=\E(, smul=\E[,
#
#
qnxt|qnxt4|QNX4 terminal,
	crxm, use=qnx4,
#
qnxm|QNX4 with mouse events,
	maddr#1,
	chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h,
	mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l,
	mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l,
	smicm=\E/>2h, use=qnx4,
#
qnxw|QNX4 windows,
	xvpa, use=qnxm,
#
#	Monochrome QNX4 terminal or console. Setting this terminal type will
#	allow an application running on a color console to behave as if it
#	were a monochrome terminal. Output will be through stdout instead of
#	console writes because the term routines will recognize that the
#	terminal name starts with 'qnxt'.
#
qnxtmono|Monochrome QNX4 terminal or console,
	colors@, pairs@,
	scp@, use=qnx4,

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

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

#### 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``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS,
	is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=\177,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
	khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~,
	nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100,
	ri=\EM, rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,

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

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

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

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

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

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

# <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=\2337;2m, bold=\2331m, clear=^L, cr=^M,
	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=^J, 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=^M^J, rev=\2337m,
	rmso=\2330m, rmul=\2330m,
	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
	sgr0=\2330m,

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

# `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,
	OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
	colors#8, cols#80, it#8, lines#18, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
	kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N,
	kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
	kf9=\E[U, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I,
	nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
	rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm,
	setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,

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

# for syscons
# common entry without semigraphics
# Bug: The <op> capability resets attributes.
# Bug? The ech and el1 attributes appear to move the cursor in some cases; for
# instance el1 does if the cursor is moved to the right margin first.  Removed
# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K)
#
# Setting colors turns off reverse; we cannot guarantee order, so use ncv.
# Note that this disables standout with color.
#
# The emulator sends difference strings based on shift- and control-keys,
# like scoansi:
#	F13-F24 are shifted F1-F12
#	F25-F36 are control F1-F12
#	F37-F48 are shift+control F1-F12
cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode),
	am, bce, bw, eo, msgr, npc,
	colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
	cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
	kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y,
	kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
	kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
	kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
	kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
	kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
	kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
	kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
	kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
	kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
	knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m,
	ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?%p6%t;1%;m,
	sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
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-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,

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

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

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

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

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

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

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

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

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

#### DEC VT52
# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
#
# Actually (TD pointed this out at the time the acsc string was added):
# vt52 shouldn't define full acsc since most of the cells don't match.
# see vt100 manual page A-31.  This is the list that does match:
#	f degree
#	g plus/minus
#	h right-arrow
#	k down-arrow
#	m scan-1
#	o scan-3
#	q scan-5
#	s scan-7
# The line-drawing happens to work in several terminal emulators, but should
# not be used as a guide to the capabilities of the vt52.  Note in particular
# that vt52 does not support line-drawing characters (the scan-X values refer
# to a crude plotting feature) -TD
vt52|dec vt52,
	OTbs,
	cols#80, it#8, lines#24,
	acsc=ffgghhompoqqss.k, bel=^G, clear=\EH\EJ, cr=^M,
	cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,

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

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

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

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

# 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
vt220|vt200|dec vt220,
	OTbs, am, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
	flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
	il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E[?7h\E[>\E[?1h\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~, kfnd=\E[1~, khlp=\E[28~,
	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, mc4=\E[4i,
	mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
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=^M,
	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
	cud=\233%p1%dB, cud1=^J, 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?1h\E F\233?4l, kbs=^H,
	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
	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,

# 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)
vt200-js|vt220-js|dec vt200 series with jump scroll,
	am,
	cols#80,
	bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=^J, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	il1=\E[L, ind=\ED,
	is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\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=^M\ED, rc=\E8,
	rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,

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

# 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, eslok, hs, mir, msgr, xenl,
	cols#80, lines#24, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$},
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
	il1=\E[L, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I,
	kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i,
	mc5=\E[?5i, nel=\EE, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[1$}\E[H\E[K, use=vt220+keypad,
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 latter has only 2 planes and a monochrome
#   monitor, the former 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, civis=\E[?25l, clear=\E[H\E[J,
	cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, dsl=\E[2$~\r\E[1$}\E[K\E[$},
	ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
	il1=\E[L, ind=\ED,
	is2=\E<\E F\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=^M\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}\E[1;%dH,

# 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 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 entry,
#
# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:";
# also, added <rmam>/<smam> based on the init string -- esr)
vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
	am, eslok, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
	el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E<\E F\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=^M\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E<\E[?3l\E[!p\E[?7h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}\E[1;%dH,

# (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
# a missing <sc> -- esr)
vt420|DEC VT420,
	am, mir, xenl, xon,
	cols#80, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
	is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~, rc=\E8, rev=\E[7m$<2>,
	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B$<4>,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smkx=\E=, smso=\E[7m, smul=\E[4m,

# 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=\177, 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=\177, 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: I added <rmam>/<smam> based on the init string, also <sc> -- esr)
vt520|DEC VT520,
	am, mir, xenl, xon,
	cols#80, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
	is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~,
	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\\,
	rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
	ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

# (vt525: I added <rmam>/<smam> based on the init string;
# removed <rmso>=\E[m, <rmul>=\E[m, added <sc> -- esr)
vt525|DEC VT525,
	am, mir, xenl, xon,
	cols#80, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
	is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~,
	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\\,
	rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
	ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

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

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

# PuTTY 0.55 (released 3 August 2004)
# http://www.chiark.greenend.org.uk/~sgtatham/putty/
#
# Comparing with 0.51, vttest is much better (only a few problems with the
# cursor position reports and wrapping).
#
# PuTTY 0.51 (released 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 (unrelease version may).
#
# Several features such as backspace/delete are optional; this entry documents
# the default behavior -TD

putty|PuTTY terminal emulator,
	am, bce, bw, ccc, hs, mir, msgr, xenl, xon,
	colors#8, it#8, ncv#22, pairs#64,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	dch=\E[%p1%dP, dch1=\E[P,
	dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
	dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX,
	ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
	indn=\E[%p1%dS,
	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,
	kb2=\E[G, kbs=\177, kcan=^C, kcbt=\E[Z, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
	kend=\E[4~, 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[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	kspd=^Z, nel=^M^J, oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m,
	ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l,
	rmcup=\E[2J\E[?47l, rmir=\E[4l, rmpch=\E[10m,
	rmso=\E[27m, rmul=\E[24m,
	rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
	s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
	smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq,
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,
# palette is hardcoded...
putty-256color|PuTTY 0.58 with xterm 256-colors,
	initc@, use=xterm+256color, 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,
	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,

# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by
# T. Teranishi dated Mar 10, 1998.  It is a free software terminal emulator
# (communication program) which supports:
#
#	- Serial port connections.
#	- TCP/IP (telnet) connections.
#	- VT100 emulation, and selected VT200/300 emulation.
#	- TEK4010 emulation.
#	- File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and
#	  Quick-VAN).
#	- Scripts using the "Tera Term Language".
#	- Japanese and Russian character sets.
#
# The program does not come with terminfo or termcap entries.  However, the
# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no
# vt52 or doublesize character support; blinking is done with color).  Besides
# the HPA, VPA extensions it also implements CPL and CNL.
#
# All of the function keys can be remapped.  This description shows the default
# mapping, as installed.  Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys
# are supported.  F13-F20 are obtained by shifting F3-F10.  The editing keypad
# is laid out like vt220, rather than the face codes on the PC keyboard, i.e,
#	kfnd	Insert
#	kslt	Delete
#	kich1	Home
#	kdch1	PageUp
#	kpp	End
#	knp	PageDown
#
# ANSI colors are implemented, but cannot be combined with video attributes
# except for reverse.
#
# No fonts are supplied with the program, so the acsc string is chosen to
# correspond with the default Microsoft terminal font.
#
# Tera Term recognizes some xterm sequences, including those for setting and
# retrieving the window title, and for setting the window size (i.e., using
# "resize -s"), though it does not pass SIGWINCH to the application if the
# user resizes the window with the mouse.
teraterm2.3|Tera Term Pro,
	km, xon@,
	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, civis=\E[?25l, clear=\E[H\E[J,
	cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG,
	il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~,
	kpp=\E[5~, kslt=\E[4~, 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=vt100+enq,
	use=klone+color, use=vt100,

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

teraterm|Tera Term,
	use=teraterm4.59,

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

# a minimal subset of a vt100 (compare with "news-unk).
tt|tkterm|Don Libes' tk text widget terminal emulator,
	clear=\E[H\E[J, cr=^M, cuf1=\E[C, cup=\E[%p1%d;%p2%dH,
	cuu1=\E[A, ind=^J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
	kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, rmso=\E[m,
	smso=\E[7m,

#### X terminal emulators
#
# 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=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
	il1=\E[L, ind=^J, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m,
# Compatible with the R5 xterm
# (from the XFree86 3.2 distribution, <blink=@> removed)
# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD
# corrected typos in rs2 string - TD
# added u6-u9 -TD
xterm-r5|xterm R5 version,
	OTbs, am, km, msgr, xenl,
	cols#80, it#8, lines#24,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
	kdl1=\E[31~, kel=\E[8~, kend=\E[4~, 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~, kich1=\E[2~,
	kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8,
	rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m,
	rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
	sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
	sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=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-old|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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
	il1=\E[L, ind=^J,
	is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7,
	sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	use=vt100+enq,
# 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,
	cols#80, it#8, lines#24, ncv@,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=^J,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
	kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kdch1=\177, kend=\EOF, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~,
	kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
	kf9=\E[20~, kfnd=\E[1~, khome=\EOH, kich1=\E[2~,
	kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El,
	memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmso=\E[27m, rmul=\E[24m, rs1=^O,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq,
	use=ecma+color, use=vt220+keypad,

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

# This version was released in XFree86 3.3.3 (November 1998).
# Besides providing printer support, it exploits a new feature that allows
# xterm to use terminfo-based descriptions with the titeInhibit resource.
# -- the distribution contained incorrect khome/kend values -TD
xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
	mc5i,
	blink=\E[5m, ich1@, invis=\E[8m,
	is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, 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=xterm-xf86-v33,

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

# This version was released in XFree86 4.4.
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
	cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, indn=\E[%p1%dS,
	rin=\E[%p1%dT, use=xterm-xf86-v43,

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

# This version reflects the current xterm features.
xterm-new|modern xterm terminal emulator,
	npc,
	indn=\E[%p1%dS, kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H,
	kIC=\E[2;2~, kNXT=\E[6;2~, kPRV=\E[5;2~, kb2=\EOE,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kend=\EOF, kent=\EOM, khome=\EOH, kich1=\E[2~, kmous=\E[M,
	knp=\E[6~, kpp=\E[5~, rin=\E[%p1%dT, use=xterm+pcfkeys,
	use=xterm-basic,
#
# This fragment describes as much of XFree86 xterm's "pc-style" function
# keys as will fit into terminfo's 60 function keys.
# From ctlseqs.ms:
#    Code     Modifiers
#  ---------------------------------
#     2       Shift
#     3       Alt
#     4       Shift + Alt
#     5       Control
#     6       Shift + Control
#     7       Alt + Control
#     8       Shift + Alt + Control
#  ---------------------------------
# The meta key may also be used as a modifier in this scheme, adding another
# bit to the parameter.
xterm+pcfkeys|fragment for PC-style fkeys,
	use=xterm+app, use=xterm+pcf2, use=xterm+pcc2,
	use=xterm+pce2,
#
xterm+noapp|fragment with cursor keys in normal mode,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F,
	khome=\E[H,

xterm+app|fragment with cursor keys in application mode,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF,
	khome=\EOH,
#
# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
# and revised in 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.
xterm+pcc3|fragment with modifyCursorKeys:3,
	kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B,
	kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B,
	kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B,
	kLFT3=\E[>1;3D, kLFT4=\E[>1;4D, kLFT5=\E[>1;5D,
	kLFT6=\E[>1;6D, kLFT7=\E[>1;7D, kRIT3=\E[>1;3C,
	kRIT4=\E[>1;4C, kRIT5=\E[>1;5C, kRIT6=\E[>1;6C,
	kRIT7=\E[>1;7C, kUP=\E[>1;2A, kUP3=\E[>1;3A,
	kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A,
	kUP7=\E[>1;7A,

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

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

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

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

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

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

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

#
# Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
# Alternatively, the same scheme with old-style function keys as in xterm-r6
# is shown here (because that is used in mrxvt and mlterm):
xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2,
	kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~,
	kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~,
	kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~,
	kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~,
	kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~,
	kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~,
	kf63=\E[13;4~, use=xterm+pcf2,
#
# This chunk is used for building the VT220/Sun/PC keyboard variants.
xterm-basic|modern xterm terminal emulator - common,
	OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^H,
	kmous=\E[M, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
	memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
	smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq,

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

# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
xterm-16color|xterm with 16 colors like aixterm,
	use=ibm+16color, use=xterm-new,

# This is a compile-time feature of XFree86 xterm beginning with
# patch #111 (1999/7/10) -TD
xterm+256color|xterm 256-color feature,
	ccc,
	colors#256, pairs#32767,
	initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	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@,

# This is a compile-time feature of XFree86 xterm beginning with
# 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|xterm 88-color feature,
	colors#88, pairs#7744, use=xterm+256color,

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

# These two are used to demonstrate the any-event mouse support, i.e., by
# using an extended name "XM" which tells ncurses to put the terminal into
# a special mode when initializing the xterm mouse.
xterm-1002|testing xterm-mouse,
	XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new,
xterm-1003|testing xterm-mouse,
	XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new,

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

xterm-hp|xterm with hpterm function keys,
	kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es,
	kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ,
	knp=\ES, kpp=\ET, use=xterm-basic,

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

# 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,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	use=xterm+app, use=xterm+edit, use=xterm-basic,
	use=vt220+keypad,

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

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

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

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

# These entries allow access to the X titlebar and icon name as a status line.
# Note that 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 it.
xterm+sl|access X title line and icon name,
	hs,
	wsl#40,
	dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm,
xterm+sl-twm|access X title line (pacify twm-descended window managers),
	hs,
	wsl#40,
	dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm,

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

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

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

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

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

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

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

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

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

# 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).
gnome-2008|GNOME Terminal snapshot 2.22.3,
	use=gnome+pcfkeys, use=gnome-2007,

# GNOME terminal may 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 is built into the program (which addresses the inadvertant use of
# random terminfo data, though using a set of values which does not correspond
# to any that xterm produces - still not solving the problem that GNOME
# terminal hardcodes 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.
gnome+pcfkeys|gnome variation on xterm+pcfkeys,
	kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R,
	kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q,
	kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P,
	kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S,
	kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S,
	kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R,
	use=xterm+pcfkeys,

gnome|GNOME Terminal,
	use=gnome-2008,

# palette is hardcoded...
gnome-256color|GNOME Terminal with xterm 256-colors,
	initc@, use=xterm+256color, use=gnome,

# 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=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,
	indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333,

# 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=\177, kend=\E[F, khome=\E[H, use=xterm-color,

# Konsole 1.0.1
# (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.
#
# 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.
konsole-base|KDE console window,
	bce, km@, npc,
	bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h,
	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
	hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1@,
	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@, rin=\E[%p1%dT, rmam=\E[?7l,
	rmso=\E[27m, rmul=\E[24m,
	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%;m%?%p9%t\016%e\017%;,
	sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
	use=ecma+color, use=xterm-r6,
konsole-linux|KDE console window with linux keyboard,
	kdch1=\E[3~, 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,
# KDE's "XFree86 3.x.x" keyboard is based on reading the xterm terminfo 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 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 does not implement shifted cursor-keys.
konsole+pcfkeys|konsole subset of xterm+pcfkeys,
	kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2,
	use=xterm+pcf0,
# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
# it is still useful for deriving the other entries.
konsole-vt100|KDE console window with vt100 (sic) keyboard,
	kbs=\177, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@,
	kf18@, kf19@, kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, use=konsole-base,
konsole-vt420pc|KDE console window with vt420 pc keyboard,
	kbs=^H, kdch1=\177, use=konsole-vt100,
konsole-16color|klone of xterm-16color,
	ncv#32, use=ibm+16color, use=konsole,
# make a default entry for konsole
konsole|KDE console window,
	use=konsole-xf4x,

# palette is hardcoded...
konsole-256color|KDE console window with xterm 256-colors,
	initc@, use=xterm+256color, use=konsole,

# 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~
#
mlterm|multi lingual terminal emulator,
	am, eslok, km, mc5i, mir, msgr, npc, xenl,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
	kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~,
	khome=\EOH, kich1=\E[2~, kind=\EO1;2B, kmous=\E[M,
	knp=\E[6~, kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i,
	nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
	vpa=\E[%i%p1%dd, use=mlterm+pcfkeys, use=xterm+r6f2,

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

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

rxvt|rxvt terminal emulator (X Window System),
	ncv@,
	hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017,
	vpa=\E[%i%p1%dd, use=rxvt-basic, use=ecma+color,
rxvt-color|rxvt terminal emulator (X Window System),
	use=rxvt,
rxvt-256color|rxvt 2.7.9 with xterm 256-colors,
	use=xterm+256color, use=rxvt,
rxvt-88color|rxvt 2.7.9 with xterm 88-colors,
	use=xterm+88color, use=rxvt,
rxvt-xpm|rxvt terminal emulator (X Window System),
	use=rxvt,
rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin,
	acsc=0\333+\257\,\256-\^`\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=0\333+\257\,\256-\^`\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|xterm with 16 colors like aixterm,
	ncv#32, use=ibm+16color, use=rxvt,

# mrxvt 0.5.3
#
# 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
mrxvt|multitabbed rxvt,
	use=xterm+pcc2, use=xterm+r6f2, use=rxvt,

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

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

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

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

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

# 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 (monocrome),
	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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy,
	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_,
	knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM,
	rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
	smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys,

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

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

# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in
# from BSD termcap.  (hpterm:  added empty <acsc>, we have no idea what ACS
# chars look like --esr)
hpterm|X-hpterm|hp X11 terminal emulator,
	am, da, db, mir, xhp,
	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=^M,
	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=^J, kbs=^H,
	kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
	kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
	khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
	knp=\EU, kpp=\EV, kri=\ET, 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@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
	smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
# 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,

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

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

### MTERM
#
# This application is available by email from <mouse@Rodents.Montreal.QC.CA>.
#
# "mterm -type ansi" sets $TERM to "ansi"
mterm-ansi|ANSI emulation,
	am, bw, mir, msgr,
	it#8,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=,
	il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
	invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m,
	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m,
	rmul=\E[24m,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	vpa=\E[%i%p1%dd,
# mterm normally sets $TERM to "mterm"
mterm|mouse-sun|Der Mouse term,
	am, bw, mir,
	it#8,
	bel=^G, clear=^L, cr=^M, 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=^M^U, ri=^W,
	rmir=^O, rmso=^T, smir=^Q, smso=^V,
# "mterm -type decansi" sets $TERM to "decansi"
#
# note: kdch1, kfnd, kslt are in the source code, but do not work -TD
decansi|ANSI emulation with DEC compatibility hacks,
	am, mir, msgr, xenl,
	colors#8, it#8, pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0,
	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL,
	il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m,
	is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~,
	kpp=\E[5~, kslt=\E[4~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m,
	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR,
	u7=\E[6n, vpa=\E[%i%p1%dd,

#### 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,
	bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M,
	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=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, nel=^M^J, 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,

######## 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=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL,
	el=\EK, ich1=\EO, il1=\EP, ind=^J, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
	smso=\Ea^D, smul=\Ea^A,
# (vremote: removed obsolete ":nl@:" -- esr)
vremote|virtual remote terminal,
	am@,
	cols#79, use=cbunix,

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

# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
eterm|gnu emacs term.el terminal emulation,
	am, mir, xenl,
	cols#80, lines#24,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m,
	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
	smul=\E[4m,

# 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.
#
# tested with screen 3.09.08
screen|VT 100/ANSI X3.64 virtual terminal,
	OTbs, OTpt, am, km, mir, msgr, xenl, G0,
	colors#8, cols#80, it#8, lines#24, pairs#64,
	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
	rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B,
	S0=\E(%p1%c, use=ecma+color,
# 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, 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, 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,
	ccc@,
	initc@, use=xterm+256color, use=screen,

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

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

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

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

# 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@,
#
# 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.
#
#	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@,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
	use=screen+fkeys, use=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=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=screen,
# Other terminals
screen.rxvt|screen in rxvt,
	bw,
	cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, use=screen+fkeys, use=vt100+enq,
	use=rxvt+pcfkeys, use=vt220+keypad, use=screen,
# fix the backspace key
screen.linux|screen in linux console,
	bw,
	kbs=\177, kcbt@, use=screen+fkeys, use=screen,
screen.mlterm|screen in mlterm,
	use=screen+fkeys, use=mlterm,

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

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

# 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, hs, km, mir, msgr, xenl,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
	flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
	il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
	kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
	kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
	kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
	khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
	rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
	rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
	rmso=\E[27m, rmul=\E[24m,
	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
	smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;,
	u8=\E[?62;1;6c, use=ansi+enq,
ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
	use=ncsa-m, use=klone+color,
ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
	hs@,
	dsl@, fsl@, tsl@, use=ncsa,
ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
	hs@,
	dsl@, fsl@, tsl@, use=ncsa-m,
# alternate -TD:
# The documented function-key mapping refers to the Apple Extended Keyboard
# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6).  We use the VT220-style
# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
# some keyboards and many applications require these as F1-F4.
#
ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, use=ncsa,

#### Pilot Pro Palm-Top
#
# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
# 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=^M, cub1=^H, cud1=^J,
	cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I,
	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 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=^M, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
	nel=^M^J,

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

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

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

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

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

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

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

#### Alpha consoles
#

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

#### Sun consoles
#

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

# From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
sun-s|Sun Microsystems Workstation window with status line,
	hs,
	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun,
sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
	hs,
	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e,
sun-48|Sun 48-line window,
	cols#80, lines#48, use=sun,
sun-34|Sun 34-line window,
	cols#80, lines#34, use=sun,
sun-24|Sun 24-line window,
	cols#80, lines#24, use=sun,
sun-17|Sun 17-line window,
	cols#80, lines#17, use=sun,
sun-12|Sun 12-line window,
	cols#80, lines#12, use=sun,
sun-1|Sun 1-line window for sysline,
	eslok, hs,
	cols#80, lines#1,
	dsl=^L, fsl=\E[K, tsl=^M, 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
sun-color|Sun Microsystems Workstation console with color support (IA systems),
	colors#8, pairs#64,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, home=\E[H, op=\E[m\E[p, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	use=sun,

#### Iris consoles
#

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

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

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

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

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

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

#### Common Desktop Environment
#

# This ships with Sun's CDE in Solaris 2.5
# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
dtterm|CDE desktop terminal,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, lm#0, ncv@,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
	ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, 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~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
	sc=\E7,
	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
	smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,

#### Non-Unix Consoles
#

### EMX termcap.dat compatibility modes
#
# 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.
#
# 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, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q,
	kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H,
	kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205,
	kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W,
	kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\,
	kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_,
	kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d,
	kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212,
	kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l,
	kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q,
	kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B,
	kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I,
	use=ansi.sys,

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

# 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,
	kdch1=\E[3~, kend=\E[4~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@,
	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 ignnored after 80 cols] messes up last line? Ehud Karni
#   smpch [Start PC charset] is \E[11m, same as smacs
#   rmpch [End PC charset] is \E[10m, same as rmacs
#   mir   [move in insert mode] fails in tack?
#   bce   [back color erase] causes problems with change background color?
#   cvvis [make cursor very visible] causes a stackdump when testing with
#         testcurs using the output option? \E[?25h\E[?8c
#   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
#   ech   [erase characters param] broken \E[%p1%dX
#   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
#
# 2005/11/12 -TD
#	Remove cbt since it does not work in current cygwin
#	Add 'mir' and 'in' flags based on tack
cygwin|ansi emulation for Cygwin,
	am, hs, mir, msgr, xon,
	colors#8, it#8, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD,
	cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G,
	kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
	nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
	rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
	rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R,
	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
	sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h,
	smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];,
	vpa=\E[%i%p1%dd, use=vt102+enq,

# I've supplied this so that you can help test new values and add other
# features.  Cheers, earnie_boyd@yahoo.com.
#
# Some features are from pcansi.  The op value is from linux.  Function-keys
# are from linux.  These have been tested not to cause problems.  xenl was in
# this list, but DOES cause problems so it has been removed
cygwinDBG|Debug Version for Cygwin,
	am, eo, mir, msgr, xon,
	colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
	flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=^J, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$,
	kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, 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~, kich1=\E[2~,
	knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m,
	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l,
	rmso=\E[m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
	sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[2g, vpa=\E[%i%p1%dd, use=vt102+enq,

# Key definitions:
# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc.  match the
# encodings used by other x86 environments.  All others are invented for DJGPP.
# Oddly enough, while several combinations of modifiers are tabulated, there is
# none for shifted cursor keys.
#
#	F1			\E[[A
#	F2			\E[[B
#	F3			\E[[C
#	F4			\E[[D
#	F5			\E[[E
#	F6			\E[17~
#	F7			\E[18~
#	F8			\E[19~
#	F9			\E[20~
#	F10			\E[21~
#	F11			\E[23~
#	F12			\E[24~
#
#	Delete			\E[3~
#	Down Arrow		\E[B
#	End			\E[4~
#	Home			\E[1~
#	Insert			\E[2~
#	Left Arrow		\E[D
#	Page Down		\E[6~
#	Page Up			\E[5~
#	Right Arrow		\E[C
#	Up Arrow		\E[A
#
#	Shift-F1		\E[25~
#	Shift-F2		\E[26~
#	Shift-F3		\E[27~
#	Shift-F4		\E[28~
#	Shift-F5		\E[29~
#	Shift-F6		\E[30~
#	Shift-F7		\E[31~
#	Shift-F8		\E[32~
#	Shift-F9		\E[33~
#	Shift-F10		\E[34~
#	Shift-F11		\E[35~
#	Shift-F12		\E[36~
#
#	Ctrl-F1			\E[47~
#	Ctrl-F2			\E[48~
#	Ctrl-F3			\E[49~
#	Ctrl-F4			\E[50~
#	Ctrl-F5			\E[51~
#	Ctrl-F6			\E[52~
#	Ctrl-F7			\E[53~
#	Ctrl-F8			\E[54~
#	Ctrl-F9			\E[55~
#	Ctrl-F10		\E[56~
#	Ctrl-F11		\E[57~
#	Ctrl-F12		\E[58~
#
#	Ctrl-Delete		\E[43~
#	Ctrl-Down Arrow		\E[38~
#	Ctrl-End		\E[44~
#	Ctrl-Home		\E[41~
#	Ctrl-Insert		\E[42~
#	Ctrl-Left Arrow		\E[39~
#	Ctrl-Page Down		\E[46~
#	Ctrl-Page Up		\E[45~
#	Ctrl-Right Arrow	\E[40~
#	Ctrl-Up Arrow		\E[37~
#
#	Alt-F1			\E[59~
#	Alt-F2			\E[60~
#	Alt-F3			\E[61~
#	Alt-F4			\E[62~
#	Alt-F5			\E[63~
#	Alt-F6			\E[64~
#	Alt-F7			\E[65~
#	Alt-F8			\E[66~
#	Alt-F9			\E[67~
#	Alt-F10			\E[68~
#	Alt-F11			\E[79~
#	Alt-F12			\E[80~
#
#	Alt-Delete		\E[65~
#	Alt-Down Arrow		\E[60~
#	Alt-End			\E[66~
#	Alt-Home		\E[41~
#	Alt-Insert		\E[64~
#	Alt-Left Arrow		\E[61~
#	Alt-Page Down		\E[68~
#	Alt-Page Up		\E[67~
#	Alt-Right Arrow		\E[62~
#	Alt-Up Arrow		\E[59~
#
# Also:
#	Alt-A			\E[82~
#	Alt-B			\E[82~
#	Alt-C			\E[83~
#	Alt-D			\E[84~
#	Alt-E			\E[85~
#	Alt-F			\E[86~
#	Alt-G			\E[87~
#	Alt-H			\E[88~
#	Alt-I			\E[89~
#	Alt-J			\E[90~
#	Alt-K			\E[91~
#	Alt-L			\E[92~
#	Alt-M			\E[93~
#	Alt-N			\E[94~
#	Alt-O			\E[95~
#	Alt-P			\E[96~
#	Alt-Q			\E[97~
#	Alt-R			\E[98~
#	Alt-S			\E[99~
#	Alt-T			\E[100~
#	Alt-U			\E[101~
#	Alt-V			\E[102~
#	Alt-W			\E[103~
#	Alt-X			\E[104~
#	Alt-Y			\E[105~
#	Alt-Z			\E[106~
djgpp|ansi emulation for DJGPP alpha,
	am, bce, msgr, xhp, xon, xt,
	colors#8, it#8, pairs#64,
	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
	clear=\E[H\E[J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, invis=\E[8m, kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=^M^J,
	op=\E[37;40m, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, 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,

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

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=^M, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E[3~, 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~, kich1=\E[2~,
	kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=^M^J, rev=\E[7m,
	ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m,

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

# 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
# <http://www.nentug.org/unix-to-nt/ntposix.htm>.
#
# 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=^M, cub1=^H, cud1=^J, 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=^M, cub1=^H, cud1=^J,
	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/lib/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 compatability.
# 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 contains ncurses 4.2 (that is header files and executables,
# the documentation dates from 1.9.9e) -TD

interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color,
	am, bw, msgr,
	colors#8, cols#80, lines#25, ncv#3, pairs#64,
	acsc=`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~q\304r\362s_t\303u\264v\301w\302x\263y\371z\372{\373|\374}\375~\376.\031-\030\,\021+^P0\333p\304r\304y\363z\362{\343|\330}\234,
	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[2J, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[M, 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, kf61=\EF+, kf62=\EF-,
	kf63=\EF\014 kf64=\EF$, kf7=\EF7, kf8=\EF8, kf9=\EF9,
	kich1=\E[L, kll=\E[U, knp=\E[T, kpp=\E[S, ll=\E[U, nel=^M^J,
	op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
	rmcup=\E[2b\E[u\r\E[K, rmso=\E[m, rmul=\E[m, rs1=\Ec,
	sc=\E[s, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	setb=\E[%p1%{40}%+%dm, setf=\E[%p1%{30}%+%dm,
	sgr0=\E[0m, smcup=\E[s\E[1b, smso=\E[1m, smul=\E[4m,

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=^M, 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=^J,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r,
	kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r,
	kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
	kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
	kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
	kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r,
	nel=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smam=\E[?7h, smso=\E[7m, smul=\E[4m,
# (altos3: had extension capabilities
#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
#	:XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
#	:HL=^AP\r:SP=\E[i:\
#	:IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V,
	blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
altos4|alt4|altos-4|altos IV,
	use=wy50,
# (altos7: had extension capabilities:
#	:GG#0:GI=\EH8:GF=\EH7:\
#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
# Comparison with the k* capabilities makes it obvious that the c* things are
# shift keys.  I have renamed them to keys 32 and up accordingly.  I have
# also made this entry relative to adm12 in order to give it an <sgr>. The
# <invis> imported by use=adm+sgr may work, let me know. -- esr)
altos7|alt7|altos VII,
	am, mir,
	cols#80, lines#24, xmc#0,
	acsc=j5k3l2m1n8q\:t4u9v=w0x6, blink=\EG2, bold=\EGt,
	clear=\E+^^, cr=^M, cub1=^H, cud1=^J, 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=^J, 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=^J, 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=^M^J, 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=^M, cub1=^H, cud1=^J, 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=^J, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@,
	sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY,

hp110|hewlett-packard model 110 portable,
	lines#16, use=hpgeneric,

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

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

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

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

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

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

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

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

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

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

# 2621 using all 48 lines of memory, only 24 visible at any time.
hp2621-48|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 \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \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 \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r,
	use=hp2626,
# Various entries useful for small windows on 2626.
hp2626-12|hewlett-packard 2626 12 lines,
	lines#12, use=hp2626,
hp2626-12x40|hewlett-packard 2626 12 lines 40 columns,
	cols#40, lines#12, use=hp2626,
hp2626-x40|hewlett-packard 2626 40 columns,
	cols#40, use=hp2626,
hp2626-12-s|hewlett-packard 2626 11 lines plus status,
	lines#11, use=hp2626-s,

#
# hp2627 color tubes from University of Wisconsin
#
hp2627a-rev|hp 2627 with reverse video colors,
	cr=^M, cud1=^J, ht=^I, ind=^J,
	is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r,
	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@,
	smul=\E&dD\E&v1S, use=hp2621-nl,
hp2627a|hp 2627 color terminal with no labels,
	cr=^M, cud1=^J, ht=^I, ind=^J,
	is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmso=\E&v0S,
	rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S,
	use=hp2621-nl,
hp2627c|hp 2627 color (cyan) terminal with no labels,
	cr=^M, cud1=^J, ht=^I, ind=^J,
	is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, 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=^M, cub1=^H, cud1=^J, 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=^J,
	is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
	rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
	vpa=\E&a%p1%2dY,

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

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

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

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

# newer hewlett packard terminals

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

newhp|generic entry for new hewlett packard terminals,
	am, bw, mir, xhp, xon,
	cols#80, lines#24, pb#4800,
	acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRmFn/q\,t5u6v8w7x.,
	bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=^M, cub1=^H,
	cud1=^J, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH,
	dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=^J,
	invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=^M^J,
	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 %;%p2%s,
	rmln=\E&j@, smln=\E&jB,

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


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

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

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

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

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

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

hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer,
	use=hp+printer, use=hp2624,

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

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

# Color manipulations for HP terminals
hp+color|hp with colors,
	ccc,
	colors#16, ncv#17, pairs#7,
	initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI,
	oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\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, civis=\E[?25l, clear=\E[2J\E[H,
	cnorm=\E[?25h, cr=^M, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
	ind=^J,
	is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\,
	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
	kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~,
	kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~,
	kpp=\E[5~, rmam=\E[?7l,
	rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
	smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
	smul=\E[4m, xoffc=g, xonc=e,
#
# (hp2392: copied <rmir> here from hpex -- esr)
hp2392|239x series,
	cols#80,
	cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r,
	kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r,
	kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
	rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
	use=hpsub,

hpsub|hp terminals -- capability subset,
	am, da, db, mir, xhp, xon,
	lines#24,
	bel=^G, clear=\EH\EJ, cr=^M, 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=^J,
	is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@,
	sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,

# hpex:
#	May be used for most 24 x 80 hp terminals,
# but has no padding added, so may allow runover in some terminals at high
# baud rates.  Will not work for hp2640a or hp2640b terminals, hp98x6 and
# hp98x5 terminal emulators or hp98x6 consoles.
# 	Adds xy-cursor addressing, vertical cursor addressing, home,
# last line, and underline capabilities.
#
# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
# moved <rmir> here from hpsub -- esr)
hpex|hp extended capabilites,
	cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H,
	kcub1=^H, kcud1=^J, nel=^M^J, 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=^M, 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=^J, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
	ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
	kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
	kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
	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@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB,
	smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,

# 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=^M, 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=^J, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
	rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
	smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3,
	vpa=\E&a%p1%dY,
# From: Greg Couch <gregc@ernie.berkeley.edu>
hp9837|hp98720|hp98721|HP 9000/300 workstations,
	OTbs, am, da, db, mir, xhp,
	cols#128, it#8, lines#46, lm#0,
	bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
	il1=\EL, ind=^J, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
	ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU,
	kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@,
	sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
	tbc=\E3, vpa=\E&a%p1%dY,
# HP 9845 desktop computer from BRL
# (hp9845: removed unknown capability :gu: -- esr)
hp9845|HP 9845,
	OTbs, am, da, db, eo, mir, xhp,
	cols#80, lines#21,
	OTbc=\ED, clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY,
	cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK,
	if=/usr/share/tabset/std, il1=\EL, rmir=\ER, rmso=\E&d@,
	smir=\EQ, smso=\E&dB,
# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
# (hp98550: replaced /usr/share/tabset/9837 with std because <it#8>,<hts=\E1>;
# added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
hp98550|hp98550a|HP 9000 Series 300 color console,
	OTbs, am, da, db, mir, xhp,
	cols#128, it#8, lines#49, lm#0,
	acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR,
	clear=\EH\EJ, cnorm=\E*dQ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH,
	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
	if=/usr/share/tabset/std, il1=\EL, ind=^J, invis=\E&ds,
	kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
	kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
	khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
	knp=\EU, kpp=\EV, kri=\ET, 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,
# From: Victor Duchovni <vic@fine.princeton.edu>
# (hp700-wy: removed obsolete ":nl=^J:";
# replaced /usr/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr)
hp700-wy|HP700/41 emulating wyse30,
	OTbs, am, bw, mir, msgr,
	cols#80, it#8, lines#24, xmc#1,
	cbt=\EI, clear=^Z, cr=^M, 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=\177, 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=^M, 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, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
	ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
	kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
	kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
	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,

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=^M, 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=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=^M^J, rmir=\ER,
	rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ,
	smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>,
gator-t|HP 9000 model 237 emulating extra-tall AAA,
	lines#94, use=gator,
gator|HP 9000 model 237 emulating AAA,
	bw, km, mir, ul,
	cols#128, it#8, lines#47,
	bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
	dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, il=\E[%p1%dL$<1*/>,
	il1=\E[L, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
	rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
gator-52|HP 9000 model 237 emulating VT52,
	cols#128, lines#47, use=vt52,
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=^M, 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=^J, kbs=^H, kcub1=^Y,
	kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=^M^J,
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 (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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
	ind=^J,
adm2|lsi adm2,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, 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=^J,
	kcub1=^H, kcud1=^J, 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=^M, cub1=^H, cud1=^J, ind=^J,
# 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=^J, bel=^G, clear=\032$<1/>, cr=^M, cub1=^H,
	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L,
	kcuu1=^K, rs2=^N,
adm3a+|adm3a plus,
	kbs=^H, use=adm3a,
# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
adm5|lsi adm5,
	xmc#1,
	bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^,
	rmso=\EG, smso=\EG, use=adm3a+,
# A lot of terminals other than adm11s use these.  Wherever you see
# use=adm+sgr with some of its capabilities disabled, try the
# disabled ones.  They may well work but not have been documented or
# expressed in the using entry.  We'd like to cook up an <sgr> but the
# <rmacs>/<smacs> sequences of the using entries vary too much.
adm+sgr|adm style highlight capabilities,
	invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0,
	smso=\EG4, smul=\EG8,
# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL
# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs>
# <khome> from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>.  <clear> could also
# be ^Z, according to his entry.
# (adm11: <smul>=\EG4 was obviously erroneous because it also said
# <rev>=\EG4.  Looking at other ADMs confirms this -- esr)
adm11|LSI ADM-11,
	OTbs, am, hs,
	OTkn#8, cols#80, lines#24,
	OTnl=^J, bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H,
	cud1=^J, 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=^J, 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=^M^J, 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=^M, cub1=^H, cud1=^J, 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        \E1        \E1        \E1        \E1        \E1        \E1        \E1        \E1,
	kcub1=^H, kcud1=^J, 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=^M, cub1=^H, cuf1=^L,
	cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE,
	kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(,
	sgr0=\E(, smso=\E),
adm21|lear siegler adm21,
	xmc#1,
	bel=^G, cr=^M, cud1=^J, dch1=\EW, dl1=30*\ER, ed=\EY, el=\ET,
	ich1=\EQ, il1=30*\EE, ind=^J, invis@, kbs=^H, kcub1=^H,
	kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, use=adm+sgr,
	use=adm3a,
# (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
# removed bogus-looking \200 from before <cup>. -- esr)
adm22|lsi adm22,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, 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=^J, 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 conjuction 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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=^J, is2=\Eu\E0,
	kcub1=^H, kcud1=^J, 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,
# (adm42: removed obsolete ":ma=^K^P:" -- esr)
adm42|lsi adm42,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, 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=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J,
	kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, 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=^M, cub1=^H, cud1=^J,
	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=^J, ip=$<6*/>, kbs=^H, kcub1=^H,
	kcud1=^J, nel=^M^J, pad=\177, 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=^M, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA,
	cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M,
	ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P,
	home=\E$B, ht=^I, il1=\E[L\E[t, ind=^J, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J,
	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[>12l\E[1Q,
	smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH, use=pt100,
pt250|Prime PT250,
	rmso@, smso@, use=pt100,
pt250w|Prime PT250 in 132-column mode,
	rmso@, smso@, use=pt100w,

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

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

# This used to have <cvvis=\E.2> but no <cnorm> or <civis>.  The BSD termcap
# file had <cvvis=\EM4 \200\200\200>.  I've done the safe thing and yanked
# both. The <rev> is from BSD, which also claimed bold=\E( and dim=\E).
# What seems to be going on here is that this entry was designed so that
# the normal highlight is bold and standout is dim plus something else
# (reverse-video maybe?  But then, are there two <rev> sequences?)
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=^M, cub1=^H, cud1=^J,
	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=^M, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=^J, invis@, kbs=^H, kcbt=\EI, kcub1=^H,
	kcud1=^J, kcuf1=^L, kcuu1=^K, 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=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
	hts=\EH, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8,
	rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>,
	rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
	sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
qvt103-w|qume qvt103 132 cols,
	cols#132, lines#24,
	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals,
	am, hs, mir, msgr,
	cols#80, lines#24, xmc#0,
	bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=^M, cub1=^H,
	cud1=^J, 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=^M, home=^^, ht=^I,
	hts=\E1, il1=\EE, ind=^J, is2=\EDF\EC\EG0\Er\E(\E%EX,
	kbs=^H, kcub1=^H, kcud1=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
	home=\E=\001\001, hpa=\E]%p1%{32}%+%c, ht=^I,
	if=/usr/share/tabset/stdcrt, ind=^J, invis@, kbs=^H,
	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r,
	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
# From: Alan R. Rogers <rogers%albany@csnet-relay>
# as subsequently hacked over by someone at SCO
# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr)
#
# Here are the 910+'s DIP switches (U = up, D = down, X = don't care):
#
# S1  1 2 3 4:
#     D D D D  9600     D D D U    50     D D U D    75     D D U U   110
#     D U D D   135     D U D U   150     D U U D   300     D U U U   600
#     U D D D  1200     U D D U  1800     U D U D  2400     U D U U  3600
#     U U D D  4800     U U D U  7200     U U U D  9600     U U U U 19200
#
# S1  5 6 7 8:
#     U D X D  7N1     U D X U  7N2     U U D D  7O1     U U D U  7O2
#     U U U D  7E1     U U U U  7E2     D D X D  8N1     D D X U  8N2
#     D U D D  8O1     D U U U  8E2
#
# S1  9  Autowrap            (U = on, D = off)
# S1 10  CR/LF               (U = CR/LF on CR received, D = CR on CR received)
# S2  1  Mode                (U = block, D = conversational)
# S2  2  Duplex              (U =  half, D = full)
# S2  3  Hertz               (U = 50, D = 60)
# S2  4  Edit mode           (U = local, D = duplex)
# S2  5  Cursor type         (U = underline, D = block)
# S2  6  Cursor down key     (U = send ^J, D = send ^V)
# S2  7  Screen colour       (U = green on black, D = black on green)
# S2  8  DSR status (pin 6)  (U = disconnected, D = connected)
# S2  9  DCD status (pin 8)  (U = disconnected, D = connected)
# S2 10  DTR status (pin 20) (U = disconnected, D = connected)
#
tvi910+|televideo 910+,
	dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>,
	kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r,
	kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r,
	ll=\E=7\s, use=tvi910,

# (tvi912: removed obsolete ":ma=^K^P^L :", added  <flash> and
# <khome> from BRL entry -- esr)
tvi912|tvi914|tvi920|old televideo 912/914/920,
	OTbs, OTpt, am, msgr,
	cols#80, it#8, lines#24, xmc#1,
	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, 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=^J, kbs=^H, kcub1=^H, kcud1=^J, 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/
#
# 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 reqire 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=^M, cub1=^H, cud1=^J, 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=^J,
	kcuf1=^L, kcuu1=^K, kdch1=\177, kent=^M, 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(%; \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=^M, 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=^J, 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=^M^J, 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=^M, 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=^J,
	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=^M^J, 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=^M, 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=^J,
	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=^M, 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=^M\Eg, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=^J, invis@, is2=\El\E", kbs=^H, kclr=^Z,
	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
	ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r,
	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
	kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3,
	tsl=\Eh\Ef, use=adm+sgr,
# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
# to avoid "magic cookie" standout glitch:
tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
	xmc@,
	kbs=^H, kcub1=^H, kcud1=^J, 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)
tvi950|televideo 950,
	OTbs, am, hs, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, xmc#1,
	acsc=b\011c\014d\re\ni\013, bel=^G, cbt=\EI, clear=\E*,
	cr=^M, cub1=^H, cud1=^J, 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=^M, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=^J,
	invis@,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \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, 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=^^,
	kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej, rmacs=^X,
	rmir=\Er, smacs=^U, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
	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|televideo950 w/2 pages,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \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 \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|televideo950 w/4 pages,
	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \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 \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|televideo950 rev video,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \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|televideo950 rev video w/2 pages,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \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|televideo950 rev video w/4 pages,
	flash=\Ed$<200/>\Eb,
	is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s,
	rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
	smkx=\El, use=tvi950,
# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
# the :rs: string, inserted the <ich> implied by the termcap :ko: string.  Note
# the :ko: string had :cl: in it, which means that one of the original
# <clear=\E*>, <kclr=\EY> had to be wrong; set <kclr=\E*> because that's what
# the 950 has.   Finally, corrected the <kel> string to match the 950 and what
# ko implies -- esr)
# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
# also work.
tvi955|televideo 955,
	OTbs, mc5i, msgr@,
	it#8, xmc@,
	acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
	civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1,
	is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1,
	knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%%,
	rmam=\E[=7l, rmxon=^N,
	rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r,
	sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
	use=tvi950,
tvi955-w|955-w|televideo955 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|televideo955 half-bright,
	bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El,
	sgr0=\EG0\E[=5h, use=tvi955,
# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
# (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m;
# added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL.
# According to BRL we could have <rmkx>=\E>, <smkx>=\E= but I'm not sure what
# it does to the function keys.  I deduced <rmam>/<smam>.
# also added empty <acsc> to suppress tic warning,  -- esr)
tvi970|televideo 970,
	OTbs, OTpt, am, da, db, mir, msgr,
	cols#80, it#8, lines#24,
	acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
	cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r,
	ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
	is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\E?a, kf2=\E?b, kf3=\E?c, kf4=\E?d, kf5=\E?e, kf6=\E?f,
	kf7=\E?g, kf8=\E?h, kf9=\E?i, khome=\E[H, ri=\EM, rmacs=\E(B,
	rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
	smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, vpa=\E[%i%p1%dd,
tvi970-vb|televideo 970 with visual bell,
	flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
	use=tvi970,
tvi970-2p|televideo 970 with using 2 pages of memory,
	rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q,
	use=tvi970,
# Works with vi and rogue.  NOTE: Esc v sets autowrap on, Esc u sets 80 chars
# per line (rather than 40), Esc K chooses the normal character set.  Not sure
# padding is needed, but adapted from the tvi920c termcap.  The <smso> and
# <smul> strings are klutzy, but at least use no screen space.
# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:".  I wish we knew <rmam>,
# its absence means <smam>=\Ev isn't safe to use. -- esr)
# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
# The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says:
# F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
tvipt|televideo personal terminal,
	OTbs, am,
	cols#80, lines#24,
	cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
	ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt,
	il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J,
	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=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
	cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA,
	cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
	dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
	el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
	ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt,
	il=\E[%p1%dL, il1=\EE, ind=^J, indn=\E[%p1%dS, 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=^M^J,
	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, rin=\E[%p1%dT,
	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[=13.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 \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%;%?%p9%t\E$%e\E%%%;,
	sgr0=\EG0, 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,

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

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

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

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

# Visual 500 prototype entry from University of Wisconsin.
# The best place to look for the escape sequences is page A1-1 of the
# Visual 500 manual.  The initialization sequence given here may be
# overkill, but it does leave out some of the initializations which can
# be done with the menus in set-up mode.
# The :xp: line below is so that emacs can understand the padding requirements
# of this slow terminal.  :xp: is 10 time the padding factor.
# (vi500: removed unknown :xp#4: termcap;
# also added empty <acsc> to suppress tic warning -- esr)
vi500|visual 500,
	am, mir, msgr,
	cols#80, it#8, lines#33,
	acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M,
	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=^J,
	is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	khome=\EH, nel=^M^J, rmacs=^O, rmir=\Ej, rmso=\E^G,
	rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,

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

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

#### 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
# <http://www.wyse.co.uk/support/appnotes/idxappnt.htm>.
#
# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995.
# They now own the Qume and Amdek brands, too.  So these are the people to
# talk with about all Link, Qume, and Amdek terminals.
#
# These entries include a few small fixes.
# I canceled the bel capacities in the vb entries.
# I made two trivial syntax fixes in the wyse30 entry.
# I made some entries relative to adm+sgr.
#
#
# Note: The wyse75, wyse85, and wyse99 have been discontinued.

#	   Although the Wyse 30 can support more than one attribute
#	it requires magic cookies to do so.  Many applications do not
#	function well with magic cookies.  The following terminfo uses
#	the protect mode to support one attribute (dim) without cookies.
#	If more than one attribute is needed then the wy30-mc terminfo
#	should be used.
#
wy30|wyse30|Wyse 30,
	am, bw, hs, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
	civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=^M, cub1=^H,
	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>,
	dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9,
	fsl=^M, 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=^J, 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=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
	rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
	sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
	smso=\E`7\E), tbc=\E0, tsl=\EF,
#
#	This terminal description uses the non-hidden attribute mode
#	(with magic cookie).
#
# (wy30-mc: added <smcup> to suppress tic warning --esr)
wy30-mc|wyse30-mc|wyse 30 with magic cookies,
	msgr@,
	ma@, xmc#1,
	blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003,
	rmcup=\EG0, rmso=\EG0,
	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
	smso=\EG4, use=wy30, use=adm+sgr,
#	The mandatory pause used by <flash> does not work with
#	older versions of terminfo.  If you see this effect then
#	unset xon and delete the / from the delay.
#	i.e. change $<100/> to $<100>
wy30-vb|wyse30-vb|wyse 30 visible bell,
	bel@, use=wy30,
#
#	   The Wyse 50 can support one attribute (e.g. Dim, Inverse,
#	Normal) without magic cookies by using the protect mode.
#	The following description uses this feature, but when more
#	than one attribute is put on the screen at once, all attributes
#	will be changed to be the same as the last attribute given.
#	   The Wyse 50 can support more attributes when used with magic
#	cookies.  The wy50-mc terminal description uses magic cookies
#	to correctly handle multiple attributes on a screen.
#
wy50|wyse50|Wyse 50,
	am, bw, hs, mc5i, mir, msgr, xon,
	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
	civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, cub1=^H,
	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r,
	ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M,
	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=^J, 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=^M^J,
	pfx=\Ez%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
	ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
	sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
	smso=\E`6\E), tbc=\E0, tsl=\EF,
#
#	This terminal description uses the non-hidden attribute mode
#	(with magic cookie).
#
#	The mandatory pause used by flash does not work with some
#	older versions of terminfo.  If you see this effect then
#	unset <xon> and delete the / from the delay.
#	i.e. change $<100/> to $<100>
# (wy50-mc: added <smcup> to suppress tic warning --esr)
wy50-mc|wyse50-mc|wyse 50 with magic cookies,
	msgr@,
	ma@, xmc#1,
	blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4,
	rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0,
	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
	smso=\EGt, use=wy50, use=adm+sgr,
wy50-vb|wyse50-vb|wyse 50 visible bell,
	bel@, use=wy50,
wy50-w|wyse50-w|wyse 50 132-column,
	cols#132, lw#7, nlab#16, wsl#97,
	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
	use=wy50,
wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
	bel@, use=wy50-w,

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

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

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

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

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

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

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

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

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

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

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

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

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

# Vendor-supplied Wyse entries end here.

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

# From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
# (wyse-vp: removed <if=/usr/share/tabset/wyse-adds>, there's no such
# file and we don't know what <hts> is -- esr)
wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on,
	OTbs, am,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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=^J,
	is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=^J, kcuf1=^F,
	kcuu1=^Z, khome=^A, ll=^A^Z, nel=^M^J, 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=^J, 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=^J,
	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, 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=^J, kcuf1=^L, kcuu1=^K, khome=^^,
kermit-am|standard kermit plus auto-margin,
	am,
	is2=K1 Standard Kermit plus Automatic Margins\n,
	use=kermit,
# IBMPC Kermit 1.2.
# Bugs: <ed>, <el>: do not work except at beginning of line!  <clear> does
# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
# line).
# From: greg small <gts@populi.berkeley.edu> 8-30-84
pckermit|pckermit12|UCB IBMPC Kermit 1.2,
	am,
	lines#25,
	clear=\EH\EJ, ed@, el@,
	is2=K2 UCB IBMPC Kermit 1.2  8-30-84\n, use=kermit,
# IBMPC Kermit 1.20
# Cannot use line 25, now acts funny like ansi special scrolling region.
# Initialization must escape from that region by cursor position to line 24.
# Cannot use character insert because 1.20 goes crazy if insert at col 80.
# Does not use :am: because autowrap is lost when kermit dropped and restarted.
# From: greg small <gts@populi.berkeley.edu> 12-19-84
pckermit120|UCB IBMPC Kermit 1.20,
	it#8, lines#24,
	cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I,
	il1=\EL,
	is2=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20  12-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 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n,
	kcub1=^H, kcud1=^J, 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 K5 MS Kermit 2.27 +automatic margins 3-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 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n,
	kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6,
	kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smso=\E[1m, smul=\E[4m, use=mskermit227,
# This was designed for a VT320 emulator, but it is probably a good start
# at support for the VT320 itself.
# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
vt320-k3|MS-Kermit 3.00's vt320 emulation,
	am, eslok, hs, km, mir, msgr, xenl,
	cols#80, it#8, lines#49, pb#9600, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l,
	fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
	is2=\E>\E F\E[?1l\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=^M^J, rc=\E8,
	rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs1=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E[4i\E[?4i\E[m\E[r\E[2$~,
	sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd,
# 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, civis=\E[?25l,
	clear=\E[;H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
	flash=\E[?5h\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, hts=\EH,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
	lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt100, ri=\EM, rmacs=^O,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
	smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH,

######## 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 idiosyncracies, 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 poition 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=^M, cub1=^V^E, cud1=^V^D,
	cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G,
	ind=^J, 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, civis=\E[?25l,
	clear=^L, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=^C, cuf1=^B,
	cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W,
	dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I,
	il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m,
	is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H,
	kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=^M\ED,
	rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=,
	rmir=^], rmkx=\E>, rmso=^U, rmul=^U,
	rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m,
	smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T,
rbcomm-nam|IBM PC with RBcomm without autowrap,
	am@,
	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
	is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
	kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
rbcomm-w|IBM PC with RBcomm in 132 column mode,
	cols#132,
	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
	is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
	kcub1=^H, kcud1=^J, nel=^M^J, 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^A, clear=\376X\376C\376R\376K\376T,
	cnorm=\376K\376T, cub1=\376L, cuf1=\376M,
	flash=\376B\001$<200>\376F, home=\376H,
MtxOrb204|20x4 Matrix Orbital LCD display,
	cols#20, lines#4, use=MtxOrb,
MtxOrb162|16x2 Matrix Orbital LCD display,
	cols#16, lines#2, use=MtxOrb,
# The end

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
# I also added <rmam>/<smam> -- esr)
att4426|tty4426|teletype 4426S,
	am, da, db, xon,
	cols#80, lines#24, lm#48,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V,
	cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EA, dch=\E[%p1%dP, dch1=\EP,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H,
	hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^,
	il=\E[%p1%dL, il1=\EL, ind=^J, indn=\E[%p1%dS,
	is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO,
	kclr=\E[2J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
	kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H, ll=\E[24H,
	nel=^M^J, rc=\E8, rev=\E[7m, ri=\ET, rin=\E[%p1%dT,
	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,

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

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

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

# 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#8192, 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=^M,
	csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%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}%=%tsecurity%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmosaic%;,
	cud=\E[%p1%de, cud1=^J, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM,
	ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r,
	lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;,
	rshm=\E[m,
	scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t\E(}%;,
	smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds,
	smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m,
	u0=\E[%p1%dt, vpa=\E[%p1%dd,

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

# 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|5620 terminal 88 columns,
	OTbs, am, msgr, npc, xon,
	cols#88, it#8, lines#70,
	bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H,
	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=^J,
	pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T,
	rin=\E[%p1%dT, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7,
	sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
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|5620 S layer,
	OTbs, OTpt, am,
	cols#80, it#8, lines#72,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED,
	el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=^J, kbs=^H, kclr=\E[2J,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
	kll=\E[70;1H,

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

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

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

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

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

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

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

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

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

# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
# (ampex80: some capabilities merged in from SCO's entry -- esr)
ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80,
	OTbs, am, bw, ul,
	cols#80, it#8, lines#24,
	bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J,
	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=^J, 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=^M, cub1=^H, cud1=^J, 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=^J,
	is2=\EX\EA\EF, kcub1=^H, kcud1=^J, 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=^M,
	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=^J,
	is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~,
	kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~,
	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
	rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>,
	rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
	smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>,
ampex219w|ampex-219w|amp219w|Ampex 132 cols,
	cols#132, lines#24,
	bel=^G, cr=^M, cud1=^J, ind=^J,
	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219,
# (ampex232: removed <if=/usr/share/tabset/ampex>, no file and no <hts> --esr)
ampex232|ampex-232|Ampex Model 232,
	am,
	cols#80, lines#24, xmc#1,
	cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V,
	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
	dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET,
	flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>,
	invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L,
	kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
	kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
	kf9=^AI\r, khome=^^, use=adm+sgr,
# (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr)
ampex232w|Ampex Model 232 / 132 columns,
	cols#132, lines#24,
	is2=\E\034Eg\El, use=ampex232,

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


# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
# Highly modified 6/22 by Mike O'Brien.
# split out into several for the various screen sizes by dave-yost@rand
# Modifications made 3/82 by Mark Horton
# Modified by Tom Quarles at UCB for greater efficiency and more diversity
# status line moved to top of screen, <flash> removed 5/82
# Some unknown person at SCO then hacked the init strings to make them more
# efficient.
#
# assumes the following setup:
#   A menu: 0000 1010  0001 0000
#   B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
#   C menu: 56   66   0    0    9600  0110 1100
#   D menu: 0110 1001   1   0
#
#	Briefly, the settings are for the following modes:
#	   (values are for bit set/clear with * indicating our preference
#	    and the value used to test these termcaps)
#	Note that many of these settings are irrelevent 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=^M, cub1=^H, cud1=^J, 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=^J, kbs=^^, kcub1=^H,
	kcud1=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^N,
	home=^K, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, ll=^O\0c,
	nel=^M^J,

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

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

# C. Itoh printers begin here
citoh|ci8510|8510|c.itoh 8510a,
	cols#80, it#8,
	bold=\E!, cub1@,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073.,
	rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY,
	smul=\EX, use=lpr,
citoh-pica|citoh in pica,
	is1=\EN, use=citoh,
citoh-elite|citoh in elite,
	cols#96,
	is1=\EE,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089.,
	use=citoh,
citoh-comp|citoh in compressed,
	cols#136,
	is1=\EQ,
	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129.,
	use=citoh,
# citoh has infinite cols because we don't want lp ever inserting \n\t**.
citoh-prop|citoh-ps|ips|citoh in proportional spacing mode,
	cols#32767,
	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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
	el=^V, home=^Y, il1=\EL, ind=^J,

# 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=^J, kcuf1=^I,
	kcuu1=^W, khome=^Y,
cdc721ll|CDC Vikingll,
	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=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^U,
	cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V,
	home=\E1\s\s, ind=^J, 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=^M, cub1=^H, cud1=^J, 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=^J,
	kbs=^H, kcub1=^H, kcud1=^J, 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=\031\030\002\003\017,
#
# 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 =\036\022Z\036\011C1-` `!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=\017\025\035\036E\036\022\\, 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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
	is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h,
	ka1=\E[f, ka3=\EOQ, kb2=\EOP, kbs=^H, kc1=\EOR, kc3=\EOS,
	kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
	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=^M^J, rev=\E[7m, rmacs=\E[3l,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m,
	rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h,
	smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
	vpa=\E[%i%p1%dd,

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

# From: <vax135!hpk>  Sat Jun 27 07:41:20 1981
# Extensive changes to c108 by arpavax:eric Feb 1982
# Some unknown person at SCO then translated it to terminfo.
#
# There seem to be a number of different versions of the C108 PROMS
# (with bug fixes in its Z-80 program).
#
# The first one that we had would lock out the keyboard of you
# sent lots of short lines (like /usr/dict/words) at 9600 baud.
# Try that on your C108 and see if it sends a ^S when you type it.
# If so, you have an old version of the PROMs.
#
# You should configure the C108 to send ^S/^Q before running this.
# It is much faster (at 9600 baud) than the c100 because the delays
# are not fixed.
# new status line display entries for c108-8p:
# <is3> - init str #3 - setup term for status display -
# set programmer mode, select window 2, define window at last
# line of memory, set bkgnd stat mesg there, select window 0.
#
# <tsl> - to status line - select window 2, home cursor, erase to
# end-of-window, 1/2 bright on, goto(line#0, col#?)
#
# <fsl> - from status line - 1/2 bright off, select window 0
#
# <dsl> - disable status display - set bkgnd status mesg with
# illegal window #
#
# There are probably more function keys that should be added but
# I don't know what they are.
#
# No delays needed on c108 because of ^S/^Q handshaking
#
c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages,
	is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev  \001\177p\Ep\n,
	rmcup=\Ev  \001\177p\Ep\r\n, use=c108-4p,
c108-4p|concept108-4p|concept 108 w/4 pages,
	OTbs, eslok, hs, xon,
	pb@,
	acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=^M,
	cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c,
	cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
	ind=^J, 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=^J, 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=^J, 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@ \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|c100 rev 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
#	strikethru, 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 "auxilliary 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, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, lm#0,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{,
	clear=\E[H\E[J, cnorm=\E[+{, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
	fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	invis=\E[0;8m,
	is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P\177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u\177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177\E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177\E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
	kDC=\E$\177, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
	kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\177, kent=^M, kf1=^\001\r, kf10=^\010\r,
	kf11=^\011\r, kf12=^\012\r, kf13=\EOP, kf14=\EOQ,
	kf15=\EOR, kf16=\EOS, kf17=^\017\r, kf18=^\018\r,
	kf19=^\019\r, kf2=^\002\r, kf20=^\020\r, kf21=^\021\r,
	kf22=^\022\r, kf23=^\023\r, kf3=^\003\r, kf31=^\031\r,
	kf32=^\032\r, kf33=^\033\r, kf34=^\034\r, kf35=^\035\r,
	kf36=^\036\r, kf37=^\037\r, kf38=^\038\r, kf39=^\039\r,
	kf4=^\004\r, kf40=^\040\r, kf41=^\041\r, kf42=^\042\r,
	kf43=\E$P, kf44=\E$Q, kf45=\E$R, kf46=\E$S, kf47=^\047\r,
	kf48=^\048\r, kf49=^\049\r, kf5=^\005\r, kf50=^\050\r,
	kf51=^\051\r, kf52=^\052\r, kf53=^\053\r, kf6=^\006\r,
	kf7=^\007\r, kf8=^\008\r, kf9=^\009\r, khome=\E[H,
	kind=\E[T, knp=\E[U, kpp=\E[V, kri=\E[S, ll=\E[H\E[A,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\E[E, rc=\E8,
	rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017,
	rmul=\E[m\017, sc=\E7,
	sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m,
	smul=\E[0;4m, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG,
	vpa=\E[%i%p1%dd,

# <ht> through <el> included to specify padding needed in raw mode.
# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
avt-ns|concept avt no status line,
	OTbs, am, eo, mir, ul, xenl, xon,
	cols#80, it#8, lines#24, lm#192,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[=119h, dch1=\E[P, dim=\E[1!{, dl=\E[%p1%dM$<4*>,
	dl1=\E[M$<4>, ed=\E[J$<96>, el=\E[K$<6>, home=\E[H,
	hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>,
	invis=\E[8m, ip=$<4>, is1=\E[=103l\E[=205l,
	is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[!y\E[!z\E>\E[0\:0\:32!r\E[0*w\E[w\E2\r\n\E[2;27!t,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\E^B\r, ked=\E^D\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, khome=\E[H, kich1=\E^A\r, kil1=\E^C\r, ll=\E[24H,
	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
	pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#,
	prot=\E[99m, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m,
	ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n,
	rmir=\E[4l, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{,
	sc=\E7,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
	sgr0=\E[m, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r,
	smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m,
	tbc=\E[2g, vpa=\E[%p1%{1}%+%dd,
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|avt w/80 columns,
	use=avt+s, use=avt-ns,
avt-rv|avt-rv-s|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|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=^M, cub1=^H, cud1=^J, 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=^J, ip=$<5.5*>,
	kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
	kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
	rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3,
# Contel c301 and c321 terminals.
contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
	flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>,
	use=contel300,

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

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

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

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

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

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

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

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

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

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

dg+color|Color info for Data General D470C terminals in ANSI mode,
	colors#16, ncv#53, pairs#256,
	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#256,
	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%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%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%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
	oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\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=^M, cub1=^Y, cud1=^Z, cuf1=^X,
	cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C,
	mc0=^Q, nel=^J, 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=^M, cub1=^Y, cud1=^Z, cuf1=^X,
	cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=^J,
	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=^J, 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, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH,
	cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
	nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m,
	smul=\E[4;m,
# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
# courtesy of Carlos Rucalde of Vantage Software, Inc.
# (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
# I suspect the d200 function keys actually work on the dg211, check it out.)
dg211|Data General d211,
	cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^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:"
# fixed garbled ":k9=\E[00\:z:" capability -- esr)
dg460-ansi|Data General Dasher 460 in ANSI-mode,
	OTbs, am, msgr, ul,
	cols#80, it#8, lines#24,
	OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
	dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
	kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
	kf8=\E[009z, kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
	lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m,
	ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m,
# 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=^M, 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=^P\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=\017\025\035\036E, 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=^M,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l,
	ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m,
	sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,

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

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

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

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

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

# Enhanced DG mode with changes to be more UNIX compatible.
d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
	mc5i,
	it#8,
	acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
	clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
	el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J,
	is1=\022\003\036P@1, is3=\036Fz0, 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=\036F?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%t11%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=\036Fz2, 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=\036FQ2, 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=^M^J,
	rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
	sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\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=\036FQ0,
	cnorm=\036FQ2, 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=\036FG\027, 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=\017\025\035\036E\036O, smacs=^^N,
	vpa=\020\177%p1%c, use=d210-dg,

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

# Initialization string 2 sets:
#	\E[3;2;2;0;1;0v
#		3;2	- default cursor (solid rectangle)
#		2;0	- 7 bit operations
#		1;0	- 7 bit (native) keyboard language
#	\E(0		- default character set (the keyboard native language)
#	^O		- primary character set
#
# Reset string 2 sets:
#	\E[4;0;2;0;1;0v
#		4;0	- jump scrolling
#		2;0	- 7 bit operations
#		1;0	- 7 bit (native) keyboard language
#	\E(0		- default character set (the keyboard native language)
#
d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode,
	km@,
	enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
	rs2=\E[4;0;2;0;1;0v\E(0,
	sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;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%e00%;,
	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=\036FQ0, clear=^^FE, cnorm=\036FQ5,
	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=\036P@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=\036Fz2,
	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[%?%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}%;%PDm\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[%?%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}%;%PDm%?%p9%t\016%e\017%;,
	use=dg+color, use=d460-7b,

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

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

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

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

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

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

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

# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
dm1520|dm1521|datamedia 1520,
	OTbs, am, xenl,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, 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=^^^^\177, cub1=^H, cud1=^J, 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=^J, 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=^M, cub1=^H, cud1=^J, 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=^J, ip=$<6>,
	is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
	smir=\EP, smso=\EO1,
dm3045|datamedia 3045a,
	OTbs, am, eo, km@, ul, xenl,
	dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
	kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
	kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
	khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
	use=dm3025,
# Datamedia DT80 soft switches:
# 1	0=Jump  1=Smooth
# 	Autorepeat 	0=off  1=on
# 	Screen		0=Dark 1=light
# 	Cursor		0=u/l  1=block
#
# 2	Margin Bell	0=off  1=on
# 	Keyclick	0=off  1=on
# 	Ansi/VT52	0=VT52 1=Ansi
# 	Xon/Xoff	0=Off  1=On
#
# 3	Shift3		0=Hash 1=UK Pound
# 	Wrap		0=Off  1=On
# 	Newline		0=Off  1=On
# 	Interlace	0=Off  1=On
#
# 4	Parity		0=Odd  1=Even
# 	Parity		0=Off  1=On
# 	Bits/Char	0=7    1=8
# 	Power		0=60Hz 1=50Hz
#
# 5	Line Interface  0=EIA  1=Loop
# 	Aux Interface   0=EIA  1=Loop
# 	Local Copy    	0=Off  1=On
# 	Spare
#
# 6	Aux Parity	0=Odd  1=Even
# 	Aux Parity	0=Off  1=On
# 	Aux Bits/Char   0=7    1=8
# 	CRT Saver	0=Off  1=On
# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
dm80|dmdt80|dt80|datamedia dt80/1,
	clear=\E[2J\E[H, cud1=^J, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM,
	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
	use=vt100,
# 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=^J,
	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=^M,
	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=^J,
	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=^J, 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=^J, 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=^J,
	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=^M, cub1=^H, cud1=^J, 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=^J, is2=\Eu\E3, kcub1=^H, kcud1=^J, 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=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A,
	dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I,
	il1=\EE, ind=^J, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er,
	rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq,
	smso=\Eg4, smul=\Eg1,
# (ts100: I added <rmam>/<smam> based on the init string -- esr)
ts100|ts100-sp|falco ts100-sp,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>,
	el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
	ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
	use=vt100+fnkeys,
ts100-ctxt|falco ts-100 saving context,
	rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,

#### Florida Computer Graphics
#

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

# From: David Bryant <cbosg!djb> 1/7/83
beacon|FCG Beacon System,
	am, da, db,
	cols#80, lines#32,
	bel=\ESTART\r\E37\r\EEND\r$<1>,
	blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=^M,
	cub1=^H, cud1=^J, 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=^J, 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=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J,
	el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^],
	kcuf1=^^, kcuu1=^\, ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m,

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

# From: <faletti@berkeley.edu>
# (f100: added empty <acsc> to suppress a tic warning;
# made this relative to adm+sgr -- note that <invis> isn't
# known to work for f100 but does on the f110. --esr)
f100|freedom|freedom100|freedom model 100,
	OTbs, am, bw, hs, mir, msgr, xon,
	cols#80, lines#24,
	acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J,
	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=^M, home=^^, hpa=\E]%p1%{32}%+%c,
	ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=^J, ip=$<6>,
	is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V,
	kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er,
	smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
f100-rv|freedom-rv|freedom 100 in reverse video,
	flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100,
# The f110 and f200 have problems with vi(1).  They use the ^V
# code for the down cursor key. When kcud1 is defined in terminfo
# as ^V, the Control Character Quoting capability (^V in insert mode)
# is lost! It cannot be remapped in vi because it is necessary to enter
# a ^V to to quote the ^V that is being remapped!!!
#
# f110/f200 users will have to decide whether
# to lose the down cursor key or the quoting capability. We will opt
# initially for leaving the quoting capability out, since use of VI
# is not generally applicable to most interactive applications
# (f110: added <ht>, <khome> & <kcbt> from f100 -- esr)
f110|freedom110|Liberty Freedom 110,
	bw@, eslok,
	it#8, wsl#80,
	blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V,
	dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE,
	ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET,
	kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
	ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq,
	smso=\EG<, tsl=\Ef, use=f100,
f110-14|Liberty Freedom 110 14inch,
	dch1@, use=f110,
f110-w|Liberty Freedom 110 - 132 cols,
	cols#132, use=f110,
f110-14w|Liberty Freedom 110 14in/132 cols,
	cols#132,
	dch1@, use=f110,
# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
f200|freedom200|Liberty Freedom 200,
	OTbs, am, eslok, hs, mir, msgr, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0,
	clear=^Z, cnorm=\E.1, cr=^M,
	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=^M, home=^^,
	hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=^J, 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=^J, 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, cuf1=\E[C,
	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J$<10/>, el=\E[K, ht=^I,
	if=/usr/share/tabset/vt100, il1=\E[L,
	is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
go140w|graphon go-140 in 132 column mode,
	am,
	cols#132,
	is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q,
	use=go140,
# Hacked up vt200 termcap to handle GO-225/VT220
# From: <edm@nwnexus.WA.COM>
# (go225: I added <rmam>/<smam> based on the init string -- esr)
go225|go-225|Graphon 225,
	OTbs, am, mir, xenl,
	cols#80, it#8, lines#25, vt#3,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
	rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
	rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
	rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
	sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
	smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,

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

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

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

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

# (bee: <ich1> was empty, which is obviously bogus -- esr)
beehive|bee|harris beehive,
	OTbs, am, mir,
	cols#80, lines#24,
	cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
	dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
	kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
	krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
	smir=\EQ, smso=\EdP, smul=\Ed`,
# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
# good grief - does this entry make :sg:/:ug: when it doesn't have to?
# look at those spaces in <rmso>/<smso>.  Seems strange to me...
# (beehive: <if=/usr/share/tabset/beehive> removed, no such file.  If you
# really care, cook up one using ^F -- esr)
beehive3|bh3m|beehiveIIIm|harris beehive 3m,
	OTbs, am,
	cols#80, it#8, lines#20,
	bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K,
	dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F,
	il1=\023$<160>, ind=^J, ll=^E^K, rmso=\s^_, smso=^]\s,
beehive4|bh4|beehive 4,
	am,
	cols#80, lines#24,
	bel=^G, clear=\EE, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
	cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=^J,
# 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=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
	kf6=\Eu, kf7=\Ev, kf8=\Ew, kf9=\Ex, khome=\EH, rmso=\Ed@,
	rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`,

# 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=^J, kf6=^T, kf7=^H,
	kf8=\177, 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"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#,
	kf1=\002\Ep\003, kf10=\Ej, kf11=\EW, kf12=\002\E{\003,
	kf13=\002\E|\003, kf14=\002\E}\003, kf15=\002\E~\003,
	kf16=\002\E\177\003, kf2=\002\Eq\003, kf3=\002\Er\003,
	kf4=\002\Es\003, 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=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K,
	ind=^J,
# 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=^M, cub1=^H, cud1=^J, 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=^J, 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=^M, 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=^J, kcub1=^H, kcud1=^J, 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=^M, 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=^J,
# 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=^M, cub1=^H, cud1=^J,
	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=^J, kbs=^H,
	kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L,
	kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z,
	rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_,
# This version works with the escape switch off
# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
hz1520-noesc|hazeltine 1520,
	am, hz,
	cols#80, lines#24,
	bel=^G, clear=~^\, cr=^M, 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=^J, 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=^J, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue,
	lf2=red, lf3=green, use=vt52,
hz1552-rv|hazeltine 1552 reverse video,
	cud1=^J, 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=^J,
	cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
	il1=~\032$<6>, ind=^J, pad=\177,
# 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=^M, 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=^J, is2=\E?, kbs=^H,
	kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0^J,
	kf1=^B1^J, kf2=^B2^J, kf3=^B3^J, kf4=^B4^J, kf5=^B5^J,
	kf6=^B6^J, kf7=^B7^J, kf8=^B8^J, kf9=^B9^J, 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=^M, cub1=^H, cud1=~^K, cuf1=^P,
	cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
	ind=^J, 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=^J, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=^J, cuf1=\E[C$<2/>,
	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
	ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
	rmkx=\E[?1l\E>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
	smul=\E[4m$<2/>,

#### IBM
#

ibm327x|line mode IBM 3270 style,
	gn,
	clear=^M^J, el=^M, home=^M,

ibm3101|i3101|IBM 3101-10,
	OTbs, am, xon,
	cols#80, lines#24,
	bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH,
ibm3151|IBM 3151 display,
	is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
	sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
# removed kend, knp, kpp -TD
ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
	OTbs, am, mir, msgr,
	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=^M, 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, ind=^J,
	invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ,
	kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r,
	kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r,
	kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r,
	kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r,
	kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r,
	kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r,
	kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN,
	ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, rmcup=\E>A,
	rmso=\E4@, rmul=\E4@,
	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;,
	sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B,

ibm3161-C|IBM 3161-C NLS terminal using cartridge,
	rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161,
ibm3162|IBM 3162 display,
	blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a,
	rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
	use=ibm3161-C,

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

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

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

#
# AIX entries.  IBM ships these with AIX 3.2.5.
# -- added rc, sc based on manpage -TD
# Note that we could use ibm+16color, but that is not how IBM defines this one.
aixterm|IBM Aixterm Terminal Emulator,
	eslok, hs,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
	fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6154,
aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
	eslok, hs,
	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
	fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
	sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153,
aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
	eslok, hs,
	bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
	tsl=\E[?%p1%dT, use=ibm6153,
jaixterm|IBM Kanji Aixterm Terminal Eemulator,
	acsc@, use=aixterm,
jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
	acsc@, 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=^M, cub1=^H, cud1=^J, 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=^J, rmso=\Ea, smso=\Eb,
i400|infoton 400,
	OTbs, am,
	cols#80, lines#25,
	bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, 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=^J, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q,
# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
addrinfo,
	am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y,
	cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=^J, ll=^H^\,
# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr)
infoton,
	am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\,
	ed=^K, ind=^J, 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          Horiz 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=^M,
	csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, 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%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ,
	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=^M, cub1=^H, cud1=^J,
	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=^J, ip=$<5.5*>, kbs=^H,
	kcub1=^_, kcud1=^J, 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=^M, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J, el=\E[K,
	flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u,
	hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
	kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
	kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r,
	kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r,
	khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
	lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
	lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
	smul=\E[18 D,

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

# Kimtron ABM 85 added by Dual Systems
# (abm85: removed duplicated ":kd=^J:" -- esr)
abm85|Kimtron ABM 85,
	OTbs, am, bw, msgr,
	cols#80, it#8, lines#24, xmc#1,
	cbt=\EI, clear=\E*, cub1=^H, cud1=^J, 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=^J, 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=^M, 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=^M, 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=^M,
	home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=^J,
	is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER,
	ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ,
	nel=^M^J, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
	sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,

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

# McDonnell Information Systems Terminal Family History
# =========================================
#
# Prism-1, Prism-2 and P99:
#       Ancient Microdata and CMC terminals, vaguely like Adds Regent 25.
#
# Prism-4 and Prism-5:
#       Slightly less ancient range of Microdata terminals. Follow-on from
#       Prism-2, but with many enhancements. P5 has eight display pages.
#
# Prism-6:
#       A special terminal for use with library systems, primarily in Germany.
#       Limited numbers. Similar functionality to P5 (except attributes?).
#
# Prism-7, Prism-8 and Prism-9:
#       More recent range of MDIS terminals, in which P7 and P8
#       replace the P4 & P5, with added functionality, and P9 is the flagship.
#       The P9 has two emulation modes - P8 and ANSI - and includes a
#       large number of the DEC VT220 control sequences. Both
#       P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats.
#
# Prism-12 and Prism-14:
#       Latest range, functionally very similar to the P9.  The P14 has a
#       black-on-white overscanning screen.
#
# The terminfo definitions given here are:
#
# p2      - Prism-2 (or Prism-1 or P99).
#
# p4      - Prism-4 (and older P7s & P8s).
# p5      - Prism-5 (or Prism-6).
#
# p7      - Prism-7.
# p8      - Prism-8 (in national or multinational mode).
# p8-w    - 132 column version of p8.
# p9      - Prism-9 in ANSI mode.
# p9-w    - 132 column version of p9.
# p9-8    - Prism-9 in Prism-8 emulation mode.
# p9-8-w  - As p9-8, but with 132 columns.
#
# p12     - Prism-12 in ANSI mode.
# p12-w   - 132 column version of p12.
# p12-m   - Prism-12 in MDC emulation mode.
# p12-m-w - As p12-m, but with 132 columns.
# p14     - Prism-14 in ANSI mode.
# p14-w   - 132 column version of p14.
# p14-m   - Prism-14 in MDC emulation mode.
# p14-m-w - As p14-m, but with 132 columns.
#
# p2: Prism-2
# -----------
#
# Includes Prism-1 and basic P99 without SP or MP loaded.
# The simplest form of Prism-type terminal.
# Basic cursor movement and clearing operations only.
# No video attributes.
# Notes:
#  Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
#  value up, followed by backspace.
#
prism2|MDC Prism-2,
	am, bw, msgr,
	cols#80, lines#24,
	bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, 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=^J, 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=^]\344, clear=\014$<20>,
	cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, 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=^]\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=^J, 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=^]\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 ANSII mode,
	am, bw, hs, mc5i, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#72,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
	clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX,
	ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`,
	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
	is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
	kf18=\E[32~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
	khome=\E[H, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J,
	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 F\E[3g\E[9;17;25;33;41;49;57;65;73 N,
	sc=\E[%y,
	sgr=\E[%{0}%?%p1%p3%|%t%{7}%+%;%?%p2%t%{2}%+%;%?%p4%t%{5}%+%;%?%p6%t%{1}%+%;m%?%p8%t\E[%{32}%+%d%%{%;%?%p9%t\016%e\017%;,
	sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
	tbc=\E[2g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,

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

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

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

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

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

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

# p12-m-w: Prism-12 in MDC emulation and 132 column modes
# -------------------------------------------------------
#
# P12 terminal in MDC emulation mode and 132 column mode.
#
prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode,
	use=p9-8-w,

# p14: Prism-14 in ANSII mode
# ---------------------------
#
# See p9 definition.
#
prism14|p14|P14|MDC Prism-14 in ANSII 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=^M, cub1=^U, cud1=^J, 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=^J, invis=^CH, kbs=^H, kcub1=^U,
	kcud1=^J, 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=^J^M,
	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=^M, 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=^J, kcub1=^H, kcud1=^K, kcuf1=^X,
	kcuu1=^Z,
# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
act5|microterm5|microterm act v,
	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
	use=act4,
# Mimes using brightness for standout.  Half bright is really dim unless
# you turn up the brightness so far that lines show up on the screen.
mime-fb|full bright mime1,
	is2=^S\E, rmso=^S, smso=^Y, use=mime,
mime-hb|half bright mime1,
	is2=^Y\E, rmso=^Y, smso=^S, use=mime,
# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
# the more plausible ":do=^J:" -- esr)
# uc was at one time disabled to get around a curses bug, be wary of it
mime|mime1|mime2|mimei|mimeii|microterm mime1,
	OTbs, am,
	cols#80, it#8, lines#24, vt#9,
	bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, 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=^J, 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=^M, cub1=^H, cud1=^J, 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=^J, ip=$<2>, is2=\E), kcub1=^H, kcud1=^J,
	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=^M, cub1=^H, cud1=^J, 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=^J, ip=$<2>, is2=^Y, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
	rmul=\E5, smir=^O, smso=\E8, smul=\E4,
# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
mime3a|mime1 emulating 3a,
	am@,
	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
mime3ax|mime-3ax|mime1 emulating enhanced 3a,
	it#8,
	dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
	use=mime3a,
# Wed Mar  9 18:53:21 1983
# We run our terminals at 2400 baud, so there might be some timing problems at
# higher speeds. The major improvements in this model are the terminal now
# scrolls down and insert mode works without redrawing the rest of the line
# to the right of the cursor. This is done with a bit of a kludge using the
# exit graphics mode to get out of insert, but it does not appear to hurt
# anything when using vi at least. If you have some users using act4s with
# programs that use curses and graphics mode this could be a problem.
mime314|mm314|mime 314,
	am,
	cols#80, lines#24,
	clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z,
	dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H,
	kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S,
# Microterm mime 340 from University of Wisconsin
mm340|mime340|mime 340,
	cols#80, lines#24,
	clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, 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=^J, is2=\E\,,
	kbs=^H, kcub1=^H, kcud1=^J, kcuu1=^K, nel=^M^J,
# This came from University of Wisconsin marked "astro termcap for jooss".
# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:";
# also added <rmam>/<smam> based  on the init string -- esr)
mt4520-rv|micro-term 4520 reverse video,
	am, hs, msgr, xenl, xon,
	cols#80, it#8, lines#24, wsl#80,
	bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
	fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H\E[J,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
	ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100,
	ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
	rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
	sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
	tbc=\E[g, tsl=\E[25;1H,

# Fri Aug  5 08:11:57 1983
# This entry works for the ergo 4000 with the following setups:
# ansi,wraparound,newline disabled, xon/xoff disabled in both
# setup a & c.
#
# WARNING!!! There are multiple versions of ERGO 4000 microcode
# Be advised that very early versions DO NOT WORK RIGHT !!
# Microterm does have a ROM exchange program- use it or lose big
# (ergo400: added <rmam>/<smam> based on the init string -- esr)
ergo4000|microterm ergo 4000,
	da, db, msgr,
	cols#80, lines#66,
	bel=^G, clear=\E[H\E[2J$<80>, cr=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	dch1=\E[1P$<80>, dl1=\E[1M$<5*>, ed=\E[0J$<15>,
	el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>,
	is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
	lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
	smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
	smso=\E[7m$<20>,

#### NCR
#
# NCR's terminal group was merged with AT&T's when AT&T bought the company.
# For what happened to that group, see the ADDS section.
#
# There is an NCR4103 terminal that's just a re-badged Wyse-50.
#

# The following vendor-supplied termcaps were captured from the Boundless
# Technologies site, 8 March 1998.  I removed all-upper-case names that were
# identical, except for case, to lower-case ones.  I also uncommented the acsc
# capabilities.X
#
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300an,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300wan,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300pp,
# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
# DEC vt200/300 with color capabilities added.
ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode,
	colors#8, pairs#64,
	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	use=ncr260vt300wpp,
# This definition for ViewPoint supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
ncr260vppp|NCR 2900_260 viewpoint,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32, xmc#1,
	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5,
	cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
	dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>,
	el=\EK$<2>, fsl=^M, 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=^J, 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=\002%^M, kf22=^B&\r, kf23=^B'\r,
	kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r,
	kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r,
	kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
	kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ,
	kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
	nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
	sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
	smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
	rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
	use=ncr260vppp,
ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>,
	fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I,
	hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
	il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
	invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
	knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>,
	rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad,
ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	use=ncr260vt100an,
ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	smkx=\E=, use=ncr260vt100an,
ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	use=ncr260vt100pp,
ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
	csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~,
	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
	kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, kf22=\E[32~,
	kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, kf26=\E[1~,
	kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~,
	kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~,
	kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
	ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
	use=vt220+keypad,
ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
	use=ncr260vt200an,
ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
	use=ncr260vt200an,
ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	use=ncr260vt200pp,
ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
	am, hs, mir, msgr, xenl, xon,
	cols#80, lines#24, nlab#32,
	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
	csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, 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~, kfnd=\E[1~,
	khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
	rmul=\E[24m,
	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
	use=vt220+keypad,
ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
	use=ncr260vt300an,
ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
	use=ncr260vt300an,
NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+  kybd,
	cols#132,
	cup=\E[%i%p1%d;%p2%dH$<30>,
	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
	use=ncr260vt300pp,
# This terminfo file contains color capabilities for the Wyse325 emulation of
# the NCR 2900/260C color terminal.  Because of the structure of the command
# (escape sequence) used to set color attributes, one of the fore/background
# colors must be preset to a given value. I have set the background color to
# black.  The user can change this setup by altering the last section of the
# 'setf' definition.  The escape sequence to set color attributes is
#		ESC d y <foreground_color> <background_color> 1
# In addition, the background color can be changed through the desk accessories.
# The capablitiy 'op' sets colors to green on black (default combination).
#
# NOTE:  The NCR Unix System Administrator's Shell will not function properly
# 	    if the 'pairs' capability is defined. Un-Comment the 'pairs'
#	    capability and recompile if you wish to have it included.
#
ncr260wy325pp|NCR 2900_260 wyse 325,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	colors#16, cols#80, lines#24, ncv#33, nlab#32,
	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, 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=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
	kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
	kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
	kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
	kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r,
	kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r,
	kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ,
	kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	setb=\s,
	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
	tsl=\EF,
ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	use=ncr260wy325pp,
# This definition for Wyse 350 supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
# In addition, color capabilities have been added to this file.  The drawback,
# however, is that the background color has to be black.  The foreground colors
# are numbered 0 through 15.
#
# NOTE:  The NCR Unix System Administrator's Shell does not function properly
# 	    with the 'pairs' capability defined as below.  If you wish to
#	    have it included, Un-comment it and recompile (using 'tic').
#
ncr260wy350pp|NCR 2900_260 wyse 350,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1,
	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I,
	hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
	kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
	mc0=\EP$<10>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	setb=\s,
	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
	sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
	tsl=\EF,
ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
	use=ncr260wy350pp,
# This definition for Wyse 50+ supports several attributes.  This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies.  The System
# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
# attributes can be removed.
# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
# (ncr260wy50+pp: originally contained commented-out
# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
ncr260wy50+pp|NCR 2900_260 wyse 50+,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32, xmc#1,
	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
	cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
	ed=\EY$<5>, el=\ET$<5>, fsl=^M, 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=^J, kcuf1=^L,
	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
	mc0=\EP$<10>, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
	smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
	use=ncr260wy50+pp,
ncr260wy60pp|NCR 2900_260 wyse 60,
	am, bw, hs, km, mc5i, mir, msgr, xon,
	cols#80, lines#24, nlab#32,
	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
	cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
	cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, 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=^J, kcuf1=^L, kcuu1=^K,
	kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
	kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
	kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r,
	kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r,
	kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
	tsl=\EF,
ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode,
	cols#132,
	cup=\Ea%i%p1%dR%p2%dC$<30>,
	is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
	use=ncr260wy60pp,
ncr160vppp|NCR 2900_160 viewpoint,
	use=ncr260vppp,
ncr160vpwpp|NCR 2900_160 viewpoint wide mode,
	use=ncr260vpwpp,
ncr160vt100an|NCR 2900_160 vt100 with ansi kybd,
	use=ncr260vt100an,
ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd,
	use=ncr260vt100pp,
ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd,
	use=ncr260vt100wan,
ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+  kybd,
	use=ncr260vt100wpp,
ncr160vt200an|NCR 2900_160 vt200 with ansi kybd,
	use=ncr260vt200an,
ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd,
	use=ncr260vt200pp,
ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd,
	use=ncr260vt200wan,
ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+  kybd,
	use=ncr260vt200wpp,
ncr160vt300an|NCR 2900_160 vt300 with ansi kybd,
	use=ncr260vt300an,
ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd,
	use=ncr260vt300pp,
ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd,
	use=ncr260vt300wan,
ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+  kybd,
	use=ncr260vt300wpp,
ncr160wy50+pp|NCR 2900_160 wyse 50+,
	use=ncr260wy50+pp,
ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode,
	use=ncr260wy50+wpp,
ncr160wy60pp|NCR 2900_160 wyse 60,
	use=ncr260wy60pp,
ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode,
	use=ncr260wy60wpp,
ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
	am, hs, mc5i, mir, msgr, xon,
	cols#80, it#8, lines#24, nlab#32,
	acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
	bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
	clear=\E[2J\E[1;1H$<300>, cr=^M,
	csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
	cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
	cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
	cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
	dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
	ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
	enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
	ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
	ind=\ED,
	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
	kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, 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=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>,
	sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
	smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
	tsl=\E[>+1$<70>,
ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
	cols#132,
	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
	rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
	use=ncrvt100an,
#
# Vendor-supplied NCR termcaps end here

# NCR7900 DIP switches:
#
# Switch A:
# 1-4 - Baud Rate
# 5   - Parity (Odd/Even)
# 6   - Don't Send or Do Send Spaces
# 7   - Parity Enable
# 8   - Stop Bits (One/Two)
#
# Switch B:
# 1   - Upper/Lower Shift
# 2   - Typewriter Shift
# 3   - Half Duplex / Full Duplex
# 4   - Light/Dark Background
# 5-6 - Carriage Return Without / With Line Feed
# 7   - Extended Mode
# 8   - Suppress Keyboard Display
#
# Switch C:
# 1   - End of line entry disabled/enabled
# 2   - Conversational mode / (Local?) Mode
# 3   - Control characters displayed / not displayed
# 4   - (2-wire?) / 4-wire communications
# 5   - RTS on and off for each character
# 6   - (50Hz?) / 60 Hz
# 7   - Exit after level zero diagnostics
# 8   - RS-232 interface
#
# Switch D:
# 1   - Reverse Channel (yes / no)
# 2   - Manual answer (no / yes)
# 3-4 - Cursor appearance
# 5   - Communication Rate
# 6   - Enable / Disable EXT turnoff
# 7   - Enable / Disable CR turnoff
# 8   - Enable / Disable backspace
#
# Since each attribute parameter is 0 or 1, we shift each attribute (standout,
# reverse, blink, dim, and underline) the appropriate number of bits (by
# multiplying the 0 or 1 by a correct factor to shift) so the bias character,
# '@' is (effectively) "or"ed with each attribute to generate the proper third
# character in the <ESC>0 sequence.  The <sgr> string implements the following
# equation:
#
# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17))    =>
# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17))
#
#	Where:  P1 <==> Standout attribute parameter
#		P2 <==> Underline attribute parameter
#		P3 <==> Reverse attribute parameter
#		P4 <==> Blink attribute parameter
#		P5 <==> Dim attribute parameter
# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
ncr7900i|ncr7900|ncr 7900 model 1,
	am, bw, ul,
	cols#80, lines#24, xmc#1,
	bel=^G, blink=\E0B, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
	cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=^J,
	is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, 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=^M, cub1=^H, cud1=^J,
	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=^J, kbs=^H,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
	kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
	khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J,
	tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
#	   The user can enter a CTRL-B to get out of this locked state.
# In <hpa>, we want to output the character given by the formula:
#		((col / 10) * 16) + (col % 10)		where "col" is "p1"
ncr7901|ncr 7901 model,
	am, bw, ul,
	cols#80, lines#24,
	bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M,
	cub1=^H, cud1=^J, 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=^J,
	is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, 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=qKnImAjDwNuLtMvOlBkCxJ, bel=^G, cbt=\EI, civis=\E.0,
	clear=\E;, cnorm=\E.1, cr=^M, 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=^M, home=^^, ht=^I, hts=\E1,
	ich1=\EQ, il1=\EE, ind=^J, 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=^M, 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\031,
	pfx=\E|%{48}%p1%+%c1%p2\031, prot=\E), ri=\Ej,
	rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N,
	sgr=\E%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;,
	sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O,
	tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H,

ndr9500-nl|NDR 9500 with no status line,
	hs@,
	wsl@,
	dsl@, fsl@, tsl@, use=ndr9500,

ndr9500-25|NDR 9500 with 25th line enabled,
	lines#25, use=ndr9500,

ndr9500-25-nl|NDR 9500 with 25 lines and no status line,
	lines#25, use=ndr9500-nl,

ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink),
	msgr@,
	xmc#1,
	blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
	sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
	sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500,

ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
	lines#25, use=ndr9500-mc,

ndr9500-mc-nl|NDR 9500 with magic cookies and no status line,
	hs@,
	wsl@,
	dsl@, fsl@, tsl@, use=ndr9500-mc,

ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line,
	lines#25, use=ndr9500-mc-nl,

#### Perkin-Elmer (Owl)
#
# These are official terminfo entries from within Perkin-Elmer.
#

bantam|pe550|pe6100|perkin elmer 550,
	OTbs,
	cols#80, lines#24,
	bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
	el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA,
fox|pe1100|perkin elmer 1100,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
	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=^J, ll=\EH\EA, tbc=\E3,
owl|pe1200|perkin elmer 1200,
	OTbs, am, in,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
	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=^J, 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=^M, 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=^J,
	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=^M, cub1=\ED, cud1=\EB,
	cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	ed=\EJ, el=\EI, home=\EH, ind=^J,
	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!^J, 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=^M, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB,
	cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EM,
	dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=^M, home=\E[H,
	ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN,
	ind=^J, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H,
	rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI,
	rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m,
	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
	smul=\E[4m, tsl=\E], uc=\EPB,

#### Tandem
#
# Tandem builds these things for use with its line of fault-tolerant
# transaction-processing computers.  They aren't generally available
# on the merchant market, and so are fairly uncommon.
#

tandem6510|adm3a repackaged by Tandem,
	use=adm3a,

# A funny series of terminal that TANDEM uses.  The actual model numbers
# have a fourth digit after 653 that designates minor variants.  These are
# natively block-mode and rather ugly, but they have a character mode which
# this doubtless(?) exploits.  There is a 6520 that is slightly dumber.
# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
# removed <if=/usr/share/tabset/tandem653>, no such file -- esr)
tandem653|t653x|Tandem 653x multipage terminal,
	OTbs, am, da, db, hs,
	cols#80, lines#24, wsl#64, xmc#1,
	clear=\EI, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r,
	ed=\EJ, el=\EK, fsl=^M, 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=^M, cub1=^H,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I,
	ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
	kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
	khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
	lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
	use=adm+sgr,
dt100|dt-100|Tandy DT-100 terminal,
	xon,
	cols#80, lines#24, xmc#1,
	acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
	il1=\E[L, ind=^J, 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,
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, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[0B, cuf1=\E[C,
	cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[0A, 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=^J, 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,
pt210|TRS-80 PT-210 printing terminal,
	hc, os,
	cols#80,
	bel=^G, cr=^M, cud1=^J, ind=^J,

#### 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=^M, cub1=^H, cud1=^J,
	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=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J,
	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=^M,
	cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
	cud1=^F^J, 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^J,
	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
	rmkx=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r,
	smkx=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r,
tek4025-17|tek 4025 17 line window,
	lines#17, use=tek4025,
tek4025-17-ws|tek 4025 17 line window in workspace,
	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r,
	rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r,
	smso=\037att e\r, use=tek4025-17,
tek4025-ex|tek4027-ex|tek 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=^M, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;,
	cud1=^J, 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=^J, indn=\035dow %p1%d;,
	rs2=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;,
	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|tek 4025 for curses and rogue,
	OTbs, am,
	cols#80, it#8, lines#33,
	clear=\037era;, cub1=^H, cud1=^F^J, cuf1=\037rig;,
	cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F^J,
	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|tek 4025 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,
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=^M, 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|4015 emulating 30 line vt100,
	am, mir, msgr, xenl, xon,
	cols#80, it#8, lines#30, vt#3,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
	use=vt100+fnkeys,

# Tektronix 4105 from BRL
# The following setup modes are assumed for normal operation:
#	CODE ansi		CRLF no			DABUFFER 141
#	DAENABLE yes		DALINES 30		DAMODE replace
#	DAVISIBILITY yes	ECHO no			EDITMARGINS 1 30
#	FLAGGING input		INSERTREPLACE replace	LFCR no
#	ORIGINMODE relative	PROMPTMODE no		SELECTCHARSET G0 B
#	SELECTCHARSET G1 0	TABS -2
# Other setup modes may be set for operator convenience or communication
# requirements; I recommend
#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 10 1
#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
#	PROMPTSTRING ''		QUEUESIZE 2460		WINDOW 0 0 4095 3132
#	XMTDELAY 0
# and factory color maps.  After setting these modes, save them with NVSAVE. No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
# "tek4105a" is just a guess:
tek4105a|Tektronix 4105,
	OTbs, OTpt, msgr, xon,
	OTkn#8, cols#80, it#8, lines#30, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
	cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
	kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5,
	lf5=F6, lf6=F8, ll=\E[30;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,

#
# Tektronix 4106/4107/4109 from BRL
# The following setup modes are assumed for normal operation:
#	CODE ansi		COLUMNMODE 80		CRLF no
#	DABUFFER 141		DAENABLE yes		DALINES 32
#	DAMODE replace		DAVISIBILITY yes	ECHO no
#	EDITMARGINS 1 32	FLAGGING input		INSERTREPLACE replace
#	LFCR no			LOCKKEYBOARD no		ORIGINMODE relative
#	PROMPTMODE no		SELECTCHARSET G0 B	SELECTCHARSET G1 0
#	TABS -2
# Other setup modes may be set for operator convenience or communication
# requirements; I recommend
#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 9 3
#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
#	PROMPTSTRING ''		QUEUESIZE 2620		WINDOW 0 0 4095 3132
#	XMTDELAY 0
# and factory color maps.  After setting these modes, save them with NVSAVE.  No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
	msgr, xon,
	cols#80, it#8, lines#32, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
	cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
	kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5,
	lf5=F6, lf6=F8, ll=\E[32;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
	rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1,
	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g,

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=^M,
	cub1=^H, cud1=^J, 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=^J,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	rev=\E%!1\E[7m$<2>\E%0, ri=\EI,
	rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0,
	sgr=\E%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>\E%%!0,
	sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
	smul=\E%!1\E[4m$<2>\E%!0,
# Tektronix 4207 with sysline.  In the ancestral termcap file this was 4107-s;
# see the note attached to tek4207.
tek4207-s|Tektronix 4207 with sysline but no memory,
	eslok, hs,
	dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8,
	is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
	is2=\E7\E[?6l\E[2K\E[?6h\E8,
	tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,

# The 4110 series may be a wonderful graphics series, but they make the 4025
# look good for screen editing.  In the dialog area, you can't move the cursor
# off the bottom line.  Out of the dialog area, ^K moves it up, but there
# is no way to scroll.
#
# Note that there is a floppy for free from Tek that makes the
# 4112 emulate the vt52 (use the vt52 termcap). There is also
# an expected enhancement that will use ANSI standard sequences.
#
# 4112 in non-dialog area pretending to scroll. It really wraps
# but vi is said to work (more or less) in this mode.
#
# 'vi' works reasonably well with this entry.
#
otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series,
	am,
	cols#80, lines#34,
	bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ind=^J,
	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, 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|4112 not in dialog area,
	OTns,
	cuu1=^K, use=tek4112,
tek4112-5|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=^J, 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=^J, cuf1=^I, cuu1=^K,
	cvvis=\ELZ\EKA0,
	flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0,
	home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @,
	ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0,
# This entry is from Tek. Inc.  (Brian Biehl)
# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
otek4115|Tektronix 4115,
	OTbs, am, da, db, eo,
	cols#80, it#8, lines#34,
	cbt=\E[Z, clear=\E[H\E[2J,
	cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
	cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, if=/usr/share/tabset/vt100,
	il1=\E[L,
	is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?\E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
	kbs=^H, ri=\EM, rmam=\E[?7l,
	rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l,
	rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
	smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
	smul=\E[4m,
tek4115|newer tektronix 4115 entry with more ANSI capabilities,
	am, xon,
	cols#80, lines#34,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG,
	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
	il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rmam=\E[?7l,
	rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
	sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
	vpa=\E[%p1%{1}%+%dd,
# 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 tek 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,

# 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=^J, 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[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
	kcub1=\E[D, kcud1=\ED, kcuf1=\E[C, kcuu1=\EM, khome=\E[H,
	rev=\E[7m, ri=\E[T,
	rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m,
	smul=\E[4m, tbc=\E[1g,

# From: <carolyn@dali.berkeley.edu>  Thu Oct 31 12:54:27 1985
# (tek4404: There was a "\!" in <smcup> that I replaced with "\E!".
# Tab had been given as \E2I,that must be the tab-set capability -- esr)
tek4404|tektronix 4404,
	OTbs,
	cols#80, it#8, lines#32,
	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[1M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, il1=\E[1L,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rc=\E8,
	rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
	rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
	smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
	smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
# Some unknown person wrote:
# I added the is string - straight Unix has ESC ; in the login
# string which sets a ct8500 into monitor mode (aka 4025 snoopy
# mode). The is string here cleans up a few things (but not
# everything).
ct8500|tektronix ct8500,
	am, bw, da, db,
	cols#80, lines#25,
	bel=^G, cbt=\E^I, clear=\E^E, cr=^M, cub1=^H, cud1=^J,
	cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER,
	dch1=\E^], dl1=\E^M, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\,
	il1=\E^L, ind=^J, 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=^M, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch1=\E[1P, dim=\E[=1;<6m, 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}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%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\:%eF4%;\E%%!1,
	invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA,
	kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER,
	kf7=\ES,
	oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40\E%!1,
	op=\E[39;40m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=,
	rmir=\E[4l, rmso=\E[=0;<1m, rmul=\E[24m,
	setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
	setf=\E[<%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
	sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N,
	smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
	smul=\E[4m, tbc=\E[1g,

#### Teletype (tty)
#
# These are the hardcopy Teletypes from before AT&T bought the company,
# clattering electromechanical dinosaurs in Bakelite cases that printed on
# pulpy yellow roll paper.  If you remember these you go back a ways.
# Teletype-branded VDTs are listed in the AT&T section.
#
# The earliest UNIXes were designed to use these clunkers; nroff and a few
# other programs still default to emitting codes for the Model 37.
#

tty33|tty35|model 33 or 35 teletype,
	hc, os, xon,
	cols#72,
	bel=^G, cr=^M, cud1=^J, ind=^J,
tty37|model 37 teletype,
	OTbs, hc, os, xon,
	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
	ind=^J,

# 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=^M, cub1=^H, cud1=^J, ind=^J, 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=^M, cub1=^H,
	cud1=^J, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=^J, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0,
	mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,

#### Volker-Craig (vc)
#
# If you saw a Byte Magazine cover with a terminal on it during the early
# 1980s, it was probably one of these.  Carl Helmers liked them because
# they could crank 19.2 and were cheap (that is, he liked them until he tried
# to program one...)
#

# Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
# every other linefeed.
vc303|vc103|vc203|volker-craig 303,
	OTbs, OTns, am,
	cols#80, lines#24,
	bel=^G, clear=\014$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
	cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^U,
	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
	ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J,
	kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z,
vc404-s|volker-craig 404 w/standout mode,
	cud1=^J, 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,
# 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=^M, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W,
	el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, 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=^M^^, cub1=^], cud1=^J, cuf1=^\,
	cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_,

ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
	OTbs, am, bw, eo, hs, km, msgr, ul,
	cols#80, it#8, lines#24,
	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B,
	indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H,
	kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241,
	kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247,
	kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V,
	ll=\E[24;1H, nel=^M, rev=\E[7m, ri=\E[T\E[A,
	rin=\E[%p1%dT\E[%p1%dA, rmso=\E[m, rmul=\E[m,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
	sgr0=\E[m, smso=\E[7m, smul=\E[4m,

#### Apple II
#
# Apple II firmware console first, then various 80-column cards and
# terminal emulators.  For two cents I'd toss all these in the UFO file
# along with the 40-column apple entries.
#

# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL
#	'it#8' tells UNIX that you have tabs every 8 columns.  This is a
#		function of TIC, not the firmware.
#	The clear key on a IIgs will do something like clear-screen,
#		depending on what you're in.
appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
	OTbs, am, bw, eo, msgr,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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=^J,
	kcuf1=^U, kcuu1=^K, kdch1=\177, nel=^M^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=^J, cuu1=^_,
	ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W,
	is2=^R^N, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^K,
	nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
	smso=^O,
# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
# 4.20, with incoming and outgoing terminals both on 0, emulation On.
apple2e-p|Apple //e via Pascal,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H,
	kcud1=^J, 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=^M, cub1=^H, cud1=^J, 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=^J,
	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=^J, 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=\024T1\016, kcud1=^J, 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=^J,
	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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
	home=^^, ind=^J, kcub1=^H, kcud1=^J, 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=^J, cuf1=^\,
	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
	home=^Y, ht=^I, kcub1=^H, kcud1=^J, 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 in 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=^M, cub1=^H,
	cud1=^J, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
	cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 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, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
	kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
aepro|Apple II+ running ASCII Express Pro--vt52,
	OTbs,
	cols#80, lines#24,
	clear=\014$<300/>, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH,
# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
apple-vm80|ap-vm80|apple with viewmax-80,
	OTbs,
	cols#80, lines#24,
	clear=\014$<300/>, cuf1=^\\:,
	cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_,
	ed=\013$<300/>, el=^], home=\031$<200/>,

#### Apple Lisa & Macintosh
#

# (lisa: changed <cvvis> to <cnorm> -- esr)
lisa|apple lisa console display (black on white),
	OTbs, am, eo, msgr,
	cols#88, it#8, lines#32,
	acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
	cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
	is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
liswb|apple lisa console display (white on black),
	is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
	smso=\E[m, smul=\E[4m, use=lisa,

# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL;
# <is2> revised by Ferd Brundick <fsbrn@BRL.ARPA>
#
# These entries assume that the 'Auto Wraparound' is enabled.
# Xon-Xoff flow control should also be enabled.
#
# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab
# settings are in non-volatile memory and don't need to be reset upon login.
# Also setting the number of columns glitches the screen annoyingly.
# You can type "reset" to get them set.
#
lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
	OTbs, OTpt, am, xenl, xon,
	OTkn#4, cols#80, it#8, lines#24, vt#3,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
	el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, kcub1=\EOD,
	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ,
	kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rc=\E8,
	rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
	sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
	tbc=\E[3g,
# Lisaterm in 132 column ("wide") mode.
lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
	cols#132,
	kbs=^H, kcub1=^H, kcud1=^J, 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,

# 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.
#
# * 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-compatbility.
#
# * 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"
#     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"
#          else
#              setenv TERM "nsterm-c-7"
#          endif
#     endif
# endif

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

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

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

nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
	hs,
	wsl#50,
	dsl=\E]2;\007, fsl=^G, tsl=\E]2;,

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

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

# These are different combinations of the building blocks

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

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

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

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

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

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

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

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

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

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

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

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

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

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

nsterm|Apple_Terminal|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,


# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
# and D P Schreber comparing to nsterm-c-s-acs.
#
# D P Schreber notes that $TERM can be set in Terminal.app, e.g.,
#	defaults write com.apple.Terminal TermCapString nsterm-c-s-acs
# and that it is not set in Terminal's preferences dialog.
nsterm-16color|AppKit Terminal.app v100.1.8 with MacOS X 10.3.9,
	kdch1=\E[3~, 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~, use=nsterm-c-s-acs,

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

# The '+' entries are building blocks
xnuppc+basic|Darwin PowerPC Console basic capabilities,
	am, bce, mir, xenl,
	it#8,
	bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K,
	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
	sc=\E7,
	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
	sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, use=vt100+keypad,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
	cols#256, 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,

#### 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=^J, 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=^J,
	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=^M, 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=^J, 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=^M, 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=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S,
	khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7,
	lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@,
	smacs=\ERG, smso=\ERD,

#### Atari ST
#

# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
atari|atari st,
	OTbs, am,
	cols#80, it#8, lines#25,
	clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
# UniTerm terminal program for the Atari ST:  49-line VT220 emulation mode
# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
uniterm|uniterm49|UniTerm VT220 emulator with 49 lines,
	lines#49,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H,
	use=vt220,
# 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|Atari ST with VT52 emulation,
	am, km,
	cols#80, lines#25,
	bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, 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=^J, 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=^M^J, rc=\Ek,
	ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
	smcup=\Ee, smso=\Ep,

#### Commodore Business Machines
#
# Formerly located in West Chester, PA; went spectacularly bust in 1994
# after years of shaky engineering and egregious mismanagement.  Made one
# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64,
# C-128, VIC-20).  The C-64 is said to have been the most popular machine
# ever (most units sold); they can still be found gathering dust in closets
# everywhere.
#

# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
# Added a few more entries, converted caret-type control sequence (^x) entries
# to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998
#
# :as:, :ae:			Support for alternate character sets.
# :ve=\E[\040p:vi=\E[\060\040p:	cursor visible/invisible.
# :xn:  vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
#     This one appears to fix a problem I always had with a line ending
#     at 'width+1' (I think) followed by a blank line in vi. The blank
#     line tended to disappear and reappear depending on how the screen
#     was refreshed. Note that this is probably needed only if you use
#     something like a Dnet Fterm with the window sized to some peculiar
#     dimension larger than 80 columns.
# :k0=\E9~:	map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
# (amiga: removed obsolete :kn#10:,
# also added empty <acsc> to suppress a warning --esr)
amiga|Amiga ANSI,
	OTbs, am, bw, xenl,
	cols#80, lines#24,
	acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
	civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD,
	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
	indn=\E[%p1%dS, 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, rin=\E[%p1%dT, rmacs=^O, rmso=\E[m, rmul=\E[m,
	rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,

# 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=^M,
	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=\177, 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#256,
	bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
	clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
	indn=\E[%p1%dS, invis=\E8m,
	is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
	kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kdch1=\177, 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, rin=\E[%p1%dT, 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,

# MorphOS on Genesi Pegasos
# By Pavel Fedin <sonic_amiga@rambler.ru>
morphos,
	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=^M, clear=\E\006$<10/>, cr=^M, cud1=^J,
	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=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
	dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=^J, kcub1=^H, kcud1=^J,
	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=^J, 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=^J, 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=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, 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=^J, 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.
#

# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
minix|minix console (v1.7),
	am, xenl,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
	is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S,
	kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp, lf2=PgDn, lf3=Num +,
	lf4=Num -, lf5=Num 5, nel=^M^J, rev=\E[7m, ri=\EM,
	rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
minix-old|minix console (v1.5),
	xon,
	cols#80, it#8, lines#25,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
	kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G,
	khome=\E[H, nel=^M^J, rev=\E[7m, ri=\EM, rmso=\E[0m,
	rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
# The linewrap option can be specified by editing /usr/include/minix/config.h
# before recompiling the minix 1.5 kernel.
minix-old-am|minix console with linewrap,
	am, use=minix-old,

pc-minix|minix console on an Intel box,
	use=klone+acs, use=minix,

# 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=^M, 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=^J, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
	rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,

# According to the Venix 1.1 manual, the PC console is similar
# to a DEC vt52.  Differences seem to be (1) arrow keys send
# different strings, (2) enhanced standout, (3) added insert/delete line.
# Note in particular that it doesn't have automatic margins.
# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they
# not described here because this derives from an old termcap entry.
pc-venix|venix|IBM PC console running Venix,
	cols#80, it#8, lines#25,
	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=^J, 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=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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=^M\ED, rc=\E8, rev=\E[7m, ri=\E[T,
	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
	smir=\E[4h, smso=\E[7m, smul=\E[4m,
# basis from Peter Harrison, Computer Graphics Lab, San Francisco
#   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
#
# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
# The Basis 108 was a Apple II clone, manufactured by the "Basis
# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
# about 1,5 km from where I live, but doesn't build own computers any
# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
# equipped with one or two 5.25" disk drives, had a monochrome and colour
# video output for a TV set or a dedicated monitor and several slots for
# Apple II cards. Basis 108 were quite popular at german schools before
# the advent of the IBM PC. They run, for example, the UCSD Pascal
# development system (which I used even in 1993 to program the steering
# and data recording for our school's experimental solar panel :), Apple DOS
# or CP/M.
# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
basis|BASIS108 computer with terminal translation table active,
	clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
	smso=\E(, use=adm3a,
# luna's BMC terminal emulator
luna|luna68k|LUNA68K Bitmap console,
	cols#88, lines#46, use=ansi-mini,
megatek|pegasus workstation terminal emulator,
	am, os,
	cols#83, lines#60,
# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
# interface (pre-Macintosh by several years) that went nowhere.
xerox820|x820|Xerox 820,
	am,
	cols#80, lines#24,
	bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
	home=^^, ind=^J,

#### Videotex and teletext
#

# \E\:1}	switch to te'le'informatique mode (ascii terminal/ISO 6429)
# \E[?3l	80 columns
# \E[?4l	scrolling on
# \E[12h	local echo off
# \Ec		reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen
# \E)0		G1 DEC set (line graphics)
#
# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique,
	OTbs, eslok, hs, xenl,
	cols#80, it#8, lines#24, wsl#72, xmc#0,
	acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
	blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
	cnorm=\E[<1l, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=^J,
	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, ip=$<7/>,
	is1=\E\:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
	is3=\E[?3l kbs=\010, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
	kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu,
	kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khome=\E[H,
	kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H,
	mc0=\E[i, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sc=\E7, sgr0=\E[m,
	smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A,
	u6=\E[%i%d;%dR, u7=\E[6n,

# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998
#
minitel1|minitel 1,
	am, bw, eslok, hs, hz, msgr,
	colors#8, cols#40, lines#24, pairs#8,
	acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L,
	cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
	cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X,
	enacs=^Y, fsl=^J, home=^^, ind=^J,
	is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG,
	rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\,
	setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;,
	sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
	sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c,
# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
minitel1b|minitel 1-bistandard (in 40cols mode),
	mir,
	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
	is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
	kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l,
	smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
# <rmkx> posait des problemes (logout en sortant de vi).
minitel1b-80|minitel 1-bistandard (standard teleinformatique),
	am@, bw@, hz@,
	colors@, cols#80, it#8, pairs@,
	blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
	clear=\E[H\E[2J, 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@, kent=\EOM, kf0=\EOp, kf1=\EOq,
	kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw,
	kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m,
	ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@,
	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
	sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,

######## 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=^M, cub1=\ED, cud1=^J, 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=^J, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,

# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
cbblit|fixterm|blit running columbus code,
	cols#88,
	ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d,
	rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!,
	smul=\EU", use=blit,

oblit|ojerq|first version of blit rom,
	am, da, db, eo, mir, ul, xon,
	cols#88, it#8, lines#72,
	bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, 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=^J, 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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, dl1=\E[M$<2*>,
	ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>,
	ind=\n$<280>, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
	lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
	sgr0=\E[m, smkx=\E=, smso=\E[7m,

bg1.25rv|bbn bitgraph 1.25 (reverse video),
	flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
	use=bg1.25,
bg1.25nv|bbn bitgraph 1.25 (normal video),
	flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
	use=bg1.25,
# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
bg1.25|bbn bitgraph 1.25,
	cols#85, lines#64,
	bel=^G, clear=\E[H\E[J$<150>, cr=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A,
	dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I,
	il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
	lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
	rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
	smso=\E[7m,

#### Bull (bq, dku, vip)
#
# (Adapted for terminfo; AIX extension capabilities translated -- esr)

#============================================#
# BULL QUESTAR 210 `SDP' terminals emulation #
#============================================#
#
# Description written by R.K.Saunders (Bull Transac)
#
# Modifications written by F. Girard (Bull MTS)
#		19-05-87 V02.00.01
#		17-12-87 V02.00.02
#		15-09-89 V02.00.05
#
#	Typical technical selections F1 (modes SDP/ROLL):
# -------------------------------------------------------
# |   01   02   03   04   05   06   07   08   09   10   |
# |  1010 0011 1010 0110 0110 0001 0100 0000 0000 0000  |
# |                                                     |
# |   11   12   13   14   15   16   17   18   19   20   |
# |  0000 0110 100? 0000 0000 0000 0001 0000 0000 0001  |
# |                                                     |
# |   21   22   23   24   25   26   27   28   29   30   |
# |  0011 0000 0001 1000 0000 0000 0000 0000 0000 0000  |
# |                                                     |
# |   31   32   33   34   35   36   37   38   39   40   |
# |  1010 0011 0000 0000 0000 0000 0000 0000 0000 0000  |
# -------------------------------------------------------
#	Typical firmware identification F5 "etat 6":
#  P287.02.04b	(AZERTY)
#  P297.11.04	(24-pin: 2732)	or P798.11.04	(28-pin: 2764)
#  P298.03.03	(monochrome)	or P374.03.02	(colour)
#
#	SM SDP mode (VIP command):	^[[?=h
#	RIS (erases screen):		^[c
#	DMI disable keyboard:		^[`
#	SM double rendition mode:	^[[?>h
#	RM solicited status mode:	^[[5l
#	RM character mode:		^[[>l
#	RM echoplex mode:		^[[12l
#	RM column tab mode:		^[[18l
#	RM forbid SS2 keyboard mode:	^[[?<l
#	SM scroll mode:			^[[=h
#	FCF enable XON/XOFF:		^[P1s^[\
#	MTL select end msg character:	^[[^Wp
#	EMI enable keyboard:		^[b
#	RIS retour etat initial:	^[c
#	enable FC keypad:		^[[?<h,
#	MPW map status line window:	^[PY99:98^[\
#	SCP select status line:		^[[0;98v
#	ED erase entire partition:	^[[2J
#	SCP select main partition:	^[[v
#	SM character insertion mode:	^[[4h
#	RM character replacement mode:	^[[4l
#	COO cursor on:			^[[r
#	COO cursor off:			^[[1r
#	SGR dim (turquoise) rev attr:	^[[2;7m
#	SGR Data normal attr:		^[[m
#	SO Line-graphic mode ON:	^N
#	SI Line-graphic mode OFF:	^O
#	MC start routing to printer:	^[[5i
#	MC stop routing to printer:	^M^[[4i
#

# This entry covers the following terminals:
# dku7102, tws2102, and tws models 2105 to 2112
tws-generic|dku7102|Bull Questar tws terminals,
	am, eslok, hs, mir, msgr, xenl, xhp@, xon,
	cols#80, it#8, lines#24, wsl#80,
	acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
	bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
	cnorm=\E[r, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
	cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
	fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
	il1=\E[L, ind=^J, invis=\E[0;8m,
	is1=\E[?=h\Ec\E`\E[?>h\EPY99\:98\E\\,
	is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
	is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
	ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
	kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
	kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
	khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
	mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
	rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
	rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
	sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99\:98\E\\,
	smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[2g,
	tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m,
tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA,
	dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
	use=tws-generic,
tws2103|xdku|BULL Questar tws2103,
	ht=^I, use=tws-generic,
tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA,
	ht=^I, use=tws2102-sna,
dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
	clear=\E[2J\E[H, cup@, dl@, dl1@,
	dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m,
	il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m,
	use=tws-generic,
dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
	blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
	smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,

#=========================================================#
# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
#=========================================================#
#
# Description written by J. Staerck (BULL SA)
#       Copyright (c) 1989 BULL SA
#---------------------------------------------------------------------------
#  This entry is used for terminals with vt320 emulation mode
#  and following set-up :
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    7 bit Control Characters,
#    80 columns screen.
#  Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
#  They are used in string capabilities with vt220-320 emulation mode.
#  In the following DEC definitions, two kinds of terminfo databases are
#    provided :
#    1. the first with Command Sequence Introducer starting with escape
#       sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
#    2. the second with Command Sequence Introducer starting with escape
#       sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
#	Soft Terminal Reset		esc [ ! p
#	RIS (erases screen):		esc c
#	DECKPNM numeric keypad mode:	esc >
#	DECKPAM applic. keypad mode:	esc =
#	DECSTBM Scrolling region:	esc [ r
#	SCS select G0 = US:		esc ( B
#	SCS select G1 = line-graphic:	esc ) 0
#	Select 7-bit C1 controls:	esc sp F
#	Select 8-bit C1 controls:	esc sp G
#	Select cursor home:		esc [  H
#	Select erase screen:		esc [  J
#	SM KAM lock keyboard:		esc [ 2 h
#	RM KAM unlock keyboard:		esc [ 2 l
#	SM SRM local echo off:		esc [ 1 2 h
#	RM SRM local echo on:		esc [ 1 2 l
#	SM LNM New line :		esc [ 2 0 h
#	RM LNM return = CR only:	esc [ 2 0 l
#	SM DECCKM cursor keys mode:	esc [ ? 1 h
#	RM DECCKM appli. keys mode:	esc [ ? 1 l
#	SM DECANM ANSI mode on:		esc [ ? 2 h
#	RM DECANM ANSI mode off:	esc [ ? 2 l
#	SM DECCOLM 132-column screen:	esc [ ? 3 h
#	RM DECCOLM 80-column screen:	esc [ ? 3 l
#	SM DECSCLM Smooth scroll:	esc [ ? 4 h
#	RM DECSCLM Jump scroll:		esc [ ? 4 l
#	SM DECSCNM screen light backgr.	esc [ ? 5 h
#	RM DECSCNM screen dark backgr.	esc [ ? 5 l
#	SM DECOM move within margins:	esc [ ? 6 h
#	RM DECOM move outside margins:	esc [ ? 6 l
#	SM DECAWM auto right margin:	esc [ ? 7 h
#	RM DECAWM auto right margin:	esc [ ? 7 l
#	SM DECARM auto repeat:		esc [ ? 8 h
#	RM DECARM auto repeat:		esc [ ? 8 l
#	DECSASD Select active main:	esc [ 0 $ }
#	DECSASD Select active status:	esc [ 1 $ }
#	DECSSDT Select status none:	esc [ 0 $ ~
#	DECSSDT Select status indic.:	esc [ 1 $ ~
#	DECSSDT Select status host-wr:	esc [ 2 $ ~
#	SM DECTCEM Visible cursor:	esc [ ? 2 5 h
#	RM DECTCEM Invisible cursor:	esc [ ? 2 5 l
#	SM DECNCRM 7 bits NCR set:	esc [ ? 4 2 h
#	RM DECNCRM Multi or ISO latin:	esc [ ? 4 2 l
#	SM DECNKM numeric keypad mode:	esc [ ? 6 6 h
#	RM DECNKM numeric keypad appl.:	esc [ ? 6 6 l
#	SM DECKBUM clavier informatique	esc [ ? 6 8 h
#	RM DECKBUM clavier bureautique:	esc [ ? 6 8 l
#	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 " p
# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 0 " p
# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 2 " p
#	DECSCL vt300 mode 7-bit ctrl:	esc [ 6 3 ; 1 " p
#	Char. and Line attributes:	esc [ Ps ... Ps m
# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
#

# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
bq300|Bull vt320 ISO Latin 1 80 columns terminal,
	am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
	dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J,
	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
	flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
	is1=\E[63;1"p\E[2h,
	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
	is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
	kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kfnd=\E[1~,
	khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
	ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E[!p,
	rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
	sgr0=\E[0m\E(B, smacs=\E(0, smam=\E[?7h,
	smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~,
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 F\E[?42l\E[?4l,
	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 F\E[?42l\E[?4l,
	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 F\E[?42l\E[?4l,
	rs2=\E[?3h, use=bq300,

#  This entry is used for terminals with vt320 emulation mode
#  and following set-up :
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    8 bit Control Characters, (CSI coded as x9B for ESC [)
#    80 columns screen.
#	Soft Terminal Reset		csi ! p
#	RIS (erases screen):		esc c
#	DECKPNM numeric keypad mode:	esc >
#	DECKPAM applic. keypad mode:	esc =
#	DECSTBM Scrolling region:	esc [ r
#	SCS select G0 = US:		esc ( B
#	SCS select G1 = line-graphic:	esc ) 0
#	Select 7-bit C1 controls:	esc sp F
#	Select 8-bit C1 controls:	esc sp G
#	Select cursor home:		csi H
#	Select erase screen:		csi J
#	SM KAM lock keyboard:		csi 2 h
#	RM KAM unlock keyboard:		csi 2 l
#	SM SRM local echo off:		csi 1 2 h
#	RM SRM local echo on:		csi 1 2 l
#	SM LNM New line :		csi 2 0 h
#	RM LNM return = CR only:	csi 2 0 l
#	SM DECCKM cursor keys mode:	csi ? 1 h
#	RM DECCKM appli. keys mode:	csi ? 1 l
#	SM DECANM ANSI mode on:		csi ? 2 h
#	RM DECANM ANSI mode off:	csi ? 2 l
#	SM DECCOLM 132-column screen:	csi ? 3 h
#	RM DECCOLM 80-column screen:	csi ? 3 l
#	SM DECSCLM Smooth scroll:	csi ? 4 h
#	RM DECSCLM Jump scroll:		csi ? 4 l
#	SM DECSCNM screen light backgr.	csi ? 5 h
#	RM DECSCNM screen dark backgr.	csi ? 5 l
#	SM DECOM move within margins:	csi ? 6 h
#	RM DECOM move outside margins:	csi ? 6 l
#	SM DECAWM auto right margin:	csi ? 7 h
#	RM DECAWM auto right margin:	csi ? 7 l
#	SM DECARM auto repeat:		csi ? 8 h
#	RM DECARM auto repeat:		csi ? 8 l
#	DECSASD Select active main:	csi 0 $ }
#	DECSASD Select active status:	csi 1 $ }
#	DECSSDT Select status none:	csi 0 $ ~
#	DECSSDT Select status indic.:	csi 1 $ ~
#	DECSSDT Select status host-wr:	csi 2 $ ~
#	SM DECTCEM Visible cursor:	csi ? 2 5 h
#	RM DECTCEM Invisible cursor:	csi ? 2 5 l
#	SM DECNCRM 7 bits NCR set:	csi ? 4 2 h
#	RM DECNCRM Multi or ISO latin:	csi ? 4 2 l
#	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 " p
# or	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 ; 0 " p
#	DECSCL vt300 mode 7-bit ctrl:	csi 6 3 ; 1 " p
#	Char. and Line attributes:	csi Ps ... Ps m
# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
bq300-8|Bull vt320 full 8 bits 80 columns,
	am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l,
	clear=\233H\233J, cnorm=\233?25h, cr=^M,
	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB,
	cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA,
	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM,
	dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J,
	el=\233K, el1=\2331K, enacs=\E(B\E)0,
	flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
	ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, ind=\ED,
	is1=\E[63;2"p\E[2h,
	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
	is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
	ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
	kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
	kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
	kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
	khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
	krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
	lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8,
	rev=\2337m, ri=\EM, rmacs=^O, 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=^N, smam=\233?7h,
	smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
	smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
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 G\E[?42l\E[?4l,
	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 G\E[?42l\E[?4l,
	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 G\E[?42l\E[?4l,
	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, kdch1=\E[3~, kend=\E[4~, 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@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
	krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, 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 F\E[?42l\E[?4l,
	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 F\E[?42l\E[?4l,
	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 F\E[?42l\E[?4l,
	rs2=\E[?3h, use=bq300-pc,
#    8 bit ISO Latin Character Set (ISO 8859-1),
#    8 bit Control Characters,
#    80 columns screen.
bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
	kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
	kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
	khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
	kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
	flash=\E[?5l$<50>\E[?5h,
	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
	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 G\E[?42l\E[?4l,
	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 G\E[?42l\E[?4l,
	rs2=\E[?3h, use=bq300-8-pc,

#======================================================#
# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
#======================================================#

# normal mode, 8 bits, 80 columns terminal.
#	RES reset :			^[e
#	RIS reset initial state:	^[c
#	BLE bell enable			^[h
#	BLD bell disable		^[g
#	CAMS char. attr. mode set	^[[D
#	CAMR char. attr. mode reset	^[[G
#	CLR clear			^[`
#	KBU keyboard unlock (set)	^[[W
#	KBL keyboard lock (reset)	^[[X
#	CM  character mode (async.) 	^[k
#	NEP non echoplex mode (by host)	^[l
#	EP  echoplex mode (by host) 	^[m
#	IM  insert mode set		^[[I
#	IM  insert mode reset 		^[[J
#	RMS roll mode set 		^[r
#	RMR roll mode reset 		^[q
#	SM78 set mode vip7800	 	^[[1q
#	SD  scroll up  	(72 lines) 	^[[0s
#	SD  scroll down	(72 lines) 	^[[1s
#	RBM block mode reset		^[[E
#	SLS status line set 		^[w
#	SLR status line reset 		^[v
#	SLL status line lock 		^[O
#	LGS Line-graphic mode set 	^[G
#	LGR Line-graphic mode reset 	^[F
#	TBC tab clear (at cursor pos.)	^[[g
#	TBI tab initialize 		^[[N
#	TBS tab set (at cursor pos.)	^[p
#	PDS  print data space		^[[0p
#	PHD  print host data 		^[[3p
#	PDT  print data terminator	^[[<p
#	PRES print adapter reset	^[[2p
#	SSPR multi-part. reset		^[[<>u
#	SSP0 partition 0 set		^[[00u
#	SSP1 partition n format 1 	^[[PnPnSTRINGu
#	SSP2 partition n format 2 	^[[PnPnSTRINGu
#	SSP3 partition n format 3 	^[[PnPnu
#	ATR attribute (visual)
#	    blink :			^[sB
#	    dim :			^[sL
#	    hide (blank) :		^[sH
#	    restore :			^[sR
#	    inverse video :		^[sI
#	    prot. :			^[sP
#	    underline :			^[s_
#	    reset :			^{
#
# This covers the vip7800 and BQ3155-vip7800
vip|Bull Questar 3155-7800,
	am, eslok, hs, km, mc5i, msgr, xenl, xon,
	cols#80, it#8, lines#24, vt#3, wsl#80,
	acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
	cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
	dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
	flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
	hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH,
	is2=\E[00u\E[<>001001024080024080u\E[01u,
	is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
	kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
	kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
	kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
	kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_,
	kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER,
	khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s,
	kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1,
	lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p,
	mc5=\E[3p, nel=^M, prot=\EsP, rev=\EsI,
	ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
	rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
	sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
	smul=\Es_, tbc=\E[N, tsl=\Ew,
# normal screen, 8 bits, 132 columns terminal.
vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
	cols#132, wsl#132,
	is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip,
vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines,
	lines#72,
	is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip,
vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
	cols#132, lines#72, wsl#132,
	is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip,

#### Chromatics
#

# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window
# that is smaller than the screen, and puts up a warning message
# outside the window. Te erases the warning message, puts the
# window back to be the whole screen, and puts the cursor at just
# below the small window. I defined <cnorm> and <civis> to really turn
# the cursor on and off, but I have taken this out since I don't
# like the cursor being turned off when vi exits.
cg7900|chromatics|chromatics 7900,
	am,
	cols#80, lines#40,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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=^J, 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\,WARNING DOUBLE ENTER ESCAPE and \025\001C1\,\001c2\,\001W0\,0\,79\,39\,,
	smso=\001C4\,\001c7\,, uc=\001\001_\001\0,

#### Computer Automation
#

ca22851|computer automation 22851,
	am,
	cols#80, lines#24,
	bel=^G, clear=\014$<8>, cr=^M, cub1=^U, cud1=^J, cuf1=^I,
	cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=^J,
	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=^M, cub1=^H, cud1=^J, cuf1=^I,
	cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
	ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H,
	kcud1=^J, 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=^M, cub1=^H, cud1=^J, 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=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z,
	ed=^_, el=^^, home=^], ind=^J,

# 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=\025\E\004\027\030, cnorm=^X,
	cr=^M, cub1=^H, cud1=^J,
	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=^J\Ec, kf4=^J\Eb, kf5=^S\Ea,
	kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=^M^J,
	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 are DEC's official terminfos for its older terminals.
# 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.
#

gt40|dec gt40,
	OTbs, os,
	cols#72, lines#30,
	bel=^G, cr=^M, cub1=^H, cud1=^J,
gt42|dec gt42,
	OTbs, os,
	cols#72, lines#40,
	bel=^G, cr=^M, cub1=^H, cud1=^J,
vt50|dec vt50,
	OTbs,
	cols#80, lines#12,
	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J,
vt50h|dec vt50h,
	OTbs,
	cols#80, lines#12,
	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, ht=^I, ind=^J, ri=\EI,
# (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=^J,
	cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>,
	cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I,
	ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
	ri=\E$<20>I,

# The gigi does standout with red!
# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
gigi|vk100|dec gigi graphics terminal,
	OTbs, am, xenl,
	cols#84, lines#24,
	bel=^G, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
	el=\E[K, ht=^I, ind=^J,
	is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
	smul=\E[4m,

# DEC PRO-350 console (VT220-style).  The 350 was DEC's attempt to produce
# a PC differentiated from the IBM clones.  It was a total, ludicrous,
# grossly-overpriced failure (among other things, DEC's OS didn't include
# a format program, so you had to buy pre-formatted floppies from DEC at
# a hefty premium!).
pro350|decpro|dec pro console,
	OTbs,
	cols#80, it#8, lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
	el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
	kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
	rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,

dw1|decwriter I,
	OTbs, hc, os,
	cols#72,
	bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
dw2|decwriter|dw|decwriter II,
	OTbs, hc, os,
	cols#132,
	bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, 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=^M, cub1=^H, cud1=^J, ht=^I, ind=^J,
	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=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, 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=^M, cud1=^J, hd=\EK, ht=^I, hu=\EL, ind=^J, nel=^M^J,
	rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m,
	smul=\E[4m,
ln03-w|dec ln03 laser printer 132 cols,
	cols#132,
	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H,
	kcud1=^J, nel=^M^J, 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=^J, 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=^J,

#### Digital Data Research (ddr)
#

# (ddr: I added <rmam>/<smam> based on the init string -- esr)
ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
	OTbs, am, xenl,
	cols#80, it#8, lines#24, vt#3,
	blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
	cud1=^J, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
	cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
	ht=^I, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H,
	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
	sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m$<2/>,

#### Evans & Sutherland
#

# Jon Leech <leech@cs.unc.edu> tells us:
# The ps300 was the Evans & Sutherland Picture System 300, a high
# performance 3D vector graphics system with a bunch of specialized hardware.
# Approximate date of release was 1982 (early 80s, anyway), and it had several
# evolutions including (limited) color versions such as the PS330C. PS300s
# were effectively obsolete by the late 80s, replaced by raster graphics
# systems, although specialized applications like molecular modelling
# 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,

#### General Electric (ge)
#

terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
	OTbs, hc, os,
	cols#120,
	bel=^G, cr=^M, cud1=^J, ind=^J,

#### 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=^M, 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=^J,
	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=~\^x`qanbkcjdmelfgg+hai.kwsutvutvozs{, bel=^G,
	clear=\EE, cnorm=\Ey4, cr=^M, 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=^J,
	ip=<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW,
	kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red,
	lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
	smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
h19-u|heathkit with underscore cursor,
	cnorm@, cvvis@, use=h19-b,
h19-g|h19g|heathkit w/block cursor,
	cnorm=\Ex4, cvvis@, use=h19-b,
alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
	lines#60,
	dl1=\EM, il1=\EL, use=h19,

# The major problem with the Z29 is that it requires more padding than the Z19.
#
# The problem with declaring an H19 to be synonymous with a Z29 is that
# it needs more padding. It especially loses if a program attempts
# to put the Z29 into insert mode and insert text at 9600 baud. It
# even loses worse if the program attempts to insert tabs at 9600
# baud. Adding padding to text that is inserted loses because in
# order to make the Z29 not die, one must add so much padding that
# whenever the program tries to use insert mode, the effective
# rate is about 110 baud.
#
# What program would want to put the terminal into insert mode
# and shove stuff at it at 9600 baud you ask?
#
# Emacs. Emacs seems to want to do the mathematically optimal
# thing in doing a redisplay rather than the practical thing.
# When it is about to output a line on top of a line that is
# already on the screen, instead of just killing to the end of
# the line and outputting the new line, it compares the old line
# and the new line and if there are any similarities, it
# constructs the new line by deleting the text on the old line
# on the terminal that is already there and then inserting new
# text into the line to transform it into the new line that is
# to be displayed. The Z29 does not react kindly to this.
#
# But don't cry for too long.... There is a solution. You can make
# a termcap entry for the Z29 that says the Z29 has no insert mode.
# Then Emacs cannot use it. "Oh, no, but now inserting into a
# line will be really slow", you say. Well there is a sort of a
# solution to that too. There is an insert character option on
# the Z29 that will insert one character. Unfortunately, it
# involves putting the terminal into ansi mode, inserting the
# character, and changing it back to H19 mode. All this takes 12
# characters. Pretty expensive to insert one character, but it
# works. Either Emacs doesn't try to use its inserting hack when
# it's only given an insert character ability or the Z29 doesn't
# require padding with this (the former is probably more likely,
# but I haven't checked it out).
# (z29: added empty <acsc> to suppress a tic warning, merged in
# status line capabilities from BRL entry --esr)
z29|zenith29|z29b|zenith z29b,
	OTbs, OTpt, am, eslok, hs, mir, msgr,
	OTkn#10, cols#80, lines#24,
	OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4,
	cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A,
	cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1,
	ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I,
	ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
	is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
	kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
	lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
	rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
# the world is stable. <rs1> causes the terminal to be reset to the state
# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
# cursor, bc -> block cursor.
# From: Mike Meyers
# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> befause <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=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
	dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, home=\E[H,
	ht=^I, hts=\EH, if=/usr/share/tabset/vt100, il=\E[%p1%dL,
	ind=\ED, kbs=^H, kclr=\E[J, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, ked=\E[J, kf0=\E[~, kf1=\EOS,
	kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
	kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help, mc0=\E#7,
	nel=^M\ED, rc=\E[r, rev=\E[7m, ri=\EM, rmcup=\E[?7h,
	rmso=\E[m, rmul=\E[m,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m,
	sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m,
	tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K,
z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick 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[11m,
	use=z29a,
z29a-nkc-bc|h29a-nkc-bc|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|z29 ansi mode with underscore cursor and no keyclick,
	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m,
	use=z29a,
# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
	am, eslok, hs, mc5i, mir, msgr, xon,
	cols#80, lines#24,
	acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
	blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h,
	clear=\E[2J\E[H, cnorm=\E[>5l, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
	dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K,
	fsl=\E[u, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L,
	ind=^J, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
	ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D,
	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS,
	kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
	kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
	mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
	rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
	rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
	smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	tsl=\E[s\E[>1h\E[25;%i%p1%dH,

# From: Brad Brahms <Brahms@USC-ECLC>
z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor,
	cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw,
# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc,
	OTbs, OTpt, mir, msgr,
	OTkn#10, cols#80, it#8, lines#24,
	acsc=~\^x`qanbkcjdmelfgg+hai.kwsutvutvozs{,
	clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA,
	cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK,
	home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB,
	kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU,
	kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI,
	khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
	smir=\E@, smso=\Ep,
p19|h19-b with il1/dl1,
	dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
# (ztx: removed duplicate :sr: -- esr)
ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11,
	OTbs, am, eslok, hs,
	cols#80, it#8, lines#24,
	clear=\EE, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
	dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I,
	il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>,
	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
	kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
	ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,

#### IMS International (ims)
#
# There was a company called IMS International located in Carson City,
# Nevada, that flourished from the mid-70s to mid-80s.  They made S-100
# bus/Z80 hardware and a line of terminals called Ultimas.
#

# From: Erik Fair <fair@ucbarpa.berkeley.edu>  Sun Oct 27 07:21:05 1985
ims950-b|bare ims950 no init string,
	is2@, use=ims950,
# (ims950: removed obsolete ":ko@:" -- esr)
ims950|ims televideo 950 emulation,
	xenl@,
	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950,
# (ims950-rv: removed obsolete ":ko@:" -- esr)
ims950-rv|ims tvi950 rev video,
	xenl@,
	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
ims-ansi|ultima2|ultimaII|IMS Ultima II,
	OTbs, am,
	cols#80, it#8, lines#24,
	clear=\E[H\E[2J, cub1=^H, cud1=\ED,
	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=^M, cub1=^H, cud1=^J,
	cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
	ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U,
	kcud1=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^F,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
	ind=^J, rmso=\E0@, smso=\E0P,
# The intertube 2 has the "full duplex" problem like the tek 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=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
	kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
	rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h,
	smir=\E[4h, smso=\E[7m,
graphos-30|graphos III with 30 lines,
	lines#30,
	cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,

#### Modgraph
#
# These people used to be reachable at:
#
#	Modgraph, Inc
#	1393 Main Street,
#	Waltham, MA 02154
#	Vox: (617)-890-5796.
#
# However, if you call that number today you'll get an insurance company.
# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
# 26 Feb 1997 that says:
#
# Modgraph GX-1000, replaced by GX-2000.  Both are out of production, have been
# for ~7 years.  Modgraph still in business.  Products are rugged laptop and
# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount
# panel-mount etc).  I can be emailed at sonfour@aol.com
#
# Peter D. Smith <pdsmith@nbbn.com> notes that his modgraph manual was
# dated 1984.  According to the manual, it featured Tek 4010/4014
# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard.
#

modgraph|mod24|modgraph terminal emulating vt100,
	xenl@,
	cols#80, lines#24,
	cvvis=\E\^9;0s\E\^7;1s,
	is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s,
	rf@, ri=\EM\E[K$<5/>, use=vt100,
# 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, 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;73s\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=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
	flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q,
	home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h,
	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
	ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
	smso=\E[7m, smul=\E[4m,

#### Morrow Designs
#
# This was George Morrow's company.  They started in the late 1970s making
# S100-bus machines.  They used to be reachable at:
#
#        Morrow
#        600 McCormick St.
#        San Leandro, CA 94577
#
# but they're long gone now (1995).
#

# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
# Jeff's specimen was dated June 1984.
# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
mt70|mt-70|Morrow MD-70; native Morrow mode,
	am, mir, msgr, xon,
	cols#80, it#8, lines#24,
	acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G,
	cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=^M, cub1=^H,
	cud1=^J, 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=^J, 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=\177, 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, cud1=\EB, cuf1=\ED,
	cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU,
	home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
	kcud1=^J, 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=^M, cub1=^H, cud1=^J, 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 Tektronics 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=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
	cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I,
	hts=\EH, ind=^J, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR,
	kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H,
	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>,
	rmso=\E[m, rmul=\E[m,
	rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h\E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#5\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
rt6221-w|Ramtek 6221 160x48,
	cols#160, lines#48,
	ll=\E[48;1H, use=rt6221,

#### RCA
#

# RCA VP3301 or VP3501
rca|rca vp3301/vp3501,
	OTbs,
	cols#40, lines#24,
	clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1,


#### Selanar
#

# Selanar HiREZ-100 from BRL, probably by Doug Gwyn
# The following SET-UP modes are assumed for normal operation:
#	SET_DEFAULT_TABS	48_LINES		80_COLUMNS
#	ONLINE			ANSI			CURSOR_VISIBLE
#	VT102_AUTO_WRAP_ON	VT102_NEWLINE_OFF	VT102_MONITOR_MODE_OFF
#	LOCAL_ECHO_OFF		US_CHAR_SET		WPS_TERMINAL_DISABLED
#	CPU_AUTO_XON/XOFF_ENABLED			PRINT_FULL_SCREEN
# For use with graphics software, all graphics modes should be set to factory
# default.  Other SET-UP modes may be set for operator convenience or
# communication requirements.  No delays are specified; use "stty ixon -ixany"
# to enable DC3/DC1 flow control!
# I commented out the scrolling capabilities since they are too slow.
hirez100|Selanar HiREZ-100,
	OTbs, OTpt, mir, msgr, xon,
	OTkn#4, cols#80, it#8, lines#48, vt#3,
	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	hts=\EH, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
	kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
	lf3=PF4, ll=\E[48H, mc0=\E[i, mc4=\E[4i\E[?4i,
	mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>,
	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
hirez100-w|Selanar HiREZ-100 in 132-column mode,
	cols#132, use=hirez100,

#### Signetics
#

# From University of Wisconsin
vsc|Signetics Vsc Video driver by RMC,
	am, msgr,
	cols#80, it#8, lines#26,
	clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
	ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rev=^_\s,
	rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",

#### Soroc
#
# Alan Frisbie <frisbie@flying-disk.com> writes:
#
# As you may recall, the Soroc logo consisted of their name,
# with the letter "S" superimposed over an odd design.   This
# consisted of a circle with a slightly smaller 15 degree (approx.)
# wedge with rounded corners inside it.   The color was sort of
# a metallic gold/yellow.
#
# If I had been more of a beer drinker it might have been obvious
# to me, but it took a clue from their service department to make
# me exclaim, "Of course!"   The circular object was the top of
# a beer can (the old removable pop-top style) and "Soroc" was an
# anagram for "Coors".
#
# I can just imagine the founders of the company sitting around
# one evening, tossing back a few and trying to decide what to
# call their new company and what to use for a logo.
#

# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
soroc120|iq120|soroc|soroc iq120,
	clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J,
	kcuf1=^L, kcuu1=^K, use=adm3a,
soroc140|iq140|soroc iq140,
	OTbs, am, mir,
	cols#80, lines#24,
	bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, 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=^J,
	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\177, rmul=\E^A, smir=\E9, smso=\E\177, 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=^M, cub1=^D, cud1=^J, cuf1=^S,
	cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F,
	home=^P, ich1=^\^X, il1=^\^Y, ind=^N,
	is2=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011,
	ll=^C, ri=^O, rmso=^^^F, smso=^^^V,

#### Synertek
#
# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995):
#
# Synertek used to make ICs, various 6502-based single-board process
# control and hobbyist computers, and assorted peripherals including a
# series of small inexpensive terminals (I think they were one of the
# first to have a "terminal-on-a-keyboard", where the terminal itself
# was only slightly larger than the keyboard).
#
# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40
# was a 40x24 terminal that could connect to a standard TV through a
# video modulator.  The KTM-2/80 was the 80-column version (the 2/40
# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM).
# I have a KTM-2/80 still in working order.  The KTM-2s had fully
# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program
# ROM and 2 ROMs as character generators. They were incredibly simple,
# and I've never had any problems with mine (witness the fact that mine
# was made in 1981 and is still working great... I've blown the video
# output transistor a couple of times, but it's a 2N2222 :-)
#
# The KTM-3 (which is what is listed in the terminfo file) was their
# attempt at putting a KTM-2 in a box (and some models came with a
# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
# control and escape sequences are very different. The KTM-3 was always
# real broken, at least according to the folks I've talked to about it.
#
# The padding in the entry is probably off--these terminals were very
# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
# anyone with any sanity replaced the ROMs with something that provided
# a reasonable subset of VT100 functionality, since the usual ROMs were
# obviously very primitive... oh, you could get an upgraded ROM from
# Synertek for some incredible amount of money, but what hacker with an
# EPROM burner would do that? :)
#
# Sorry I don't have any contact info; I believe they were located in
# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
# business these days.
#

# Tested, seems to work fine with vi.
synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
	am,
	cols#80, lines#24,
	clear=^Z, cub1=^H, cuf1=^L,
	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,

#### Tab Office Products
#
#	TAB Products Co. - Palo Alto, California
#	Electronic Office Products,
#	1451 California Avenue 94304
#
# I think they're out of business.
#

# The tab 132 uses xon/xoff, so no padding needed.
# <smkx>/<rmkx> have nothing to do with arrow keys.
# <is2> sets 80 col mode, normal video, autowrap on (for <am>).
# Seems to be no way to get rid of status line.
# The manual for this puppy was dated June 1981.  It claims to be VT52-
# compatible but looks more vt100-like.
tab132|tab|tab132-15|tab 132/15,
	da, db,
	OTdN@, cols#80, lines#24, lm#96,
	cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
	il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B,
	kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, use=vt100,
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=^M, cub1=^H, cud1=^J, ind=^J,
t3800|teleray 3800 series,
	OTbs,
	cols#80, it#8, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
	home=\EH, ht=^I, ind=^J, 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=^M, cub1=^H, cud1=^J, 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=^J, 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, 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=^M, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L,
	ind=^J, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
	kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T,
	rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, rmso=\E[m,
	rmul=\E[m, sgr0=\E[m, smcup=\E[U\E[?38l, smir=\E[4h,
	smso=\E[7m, smul=\E[4m,

#### Texas Instruments (ti)
#

# The Silent 700 was so called because it was built around a quiet thermal
# printer.  It was portable, equipped with an acoustic coupler, and pretty
# neat for its day.
ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800,
	OTbs, hc, os,
	cols#80,
	bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J,

#
# Texas Instruments 916 VDT 7 bit control mode
#
ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
	da, db, in, msgr,
	cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>,
	cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB,
	cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
	dch=\E[%p1%dP$<250>, dch1=\E[P, dl=\E[%p1%dM,
	ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, el1=\E[1K,
	enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
	hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>,
	il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H,
	kcmd=\E[29~, kdch1=\E[P, kent=^J, kf1=\E[17~, kf10=\E[28~,
	kf11=\E[29~, kf12=\E[31~, kf2=\E[18~, kf3=\E[19~,
	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
	kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T,
	kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@,
	smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
	use=vt220,
#
# Texas Instruments 916 VDT 8 bit control mode
#
ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL,
	kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
	kcuu1=\233A, kdch1=\233P, kent=^J, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
	kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
	kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
#
ti916-132|Texas Instruments 916 VDT vt220 132 column,
	cols#132, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode
#
ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column,
	cols#132, use=ti916-8,
ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
	OTbs, am, xon,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
	clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kf1=\EOP, kf2=\EOQ,
	kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, kich1=\E[@, rc=\E8, rev=\E[7m,
	ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g,
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, civis=\E[?25l,
	clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=P$<\233>, kf1=P$<\217>,
	kf2=Q$<\217>, kf3=R$<\217>, kf4=S$<\217>, 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,
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=^M, cub1=\ED,
	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
	cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
	ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
	is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
	kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
	kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
	kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
	sgr0=\E4@, smso=\E4A, smul=\E4D,
ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
	csr@, ind=\E[1S, ri=\E[1T, use=ti924,
# (ti926-8: I corrected this from the broken SCO entry -- esr)
ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL,
	csr@, ind=\2331S, ri=\2331T, use=ti924-8,
ti_ansi|basic entry for ti928,
	am, bce, eo, xenl, xon,
	colors#8, cols#80, it#8, lines#25, pairs#64,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
	il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
	kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
	kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
	op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
	smso=\E[7m, smul=\E[4m,
#
#       928 VDT 7 bit control mode
#
ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
	kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~,
	kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~,
	kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~,
	kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
	kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
#
#       928 VDT 8 bit control mode
#
ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
	kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~,
	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~,
	kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~,
	kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~,
	kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S,
	kpp=\233T, kprt=\23335~, use=ti_ansi,

#### Zentec (zen)
#

# (zen30: removed obsolete :ma=^L ^R^L^K^P:.  This entry originally
# had just <smso>=\EG6 which I think means standout was supposed to be
# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
# <invis> might work-- esr)
zen30|z30|zentec 30,
	OTbs, am, mir, ul,
	cols#80, lines#24,
	bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, 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=^J, 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=^J, 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=^J,
	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
	cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH,
	invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED,
	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
	rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
	smso=\EM$, smul=\EM0,

######## OBSOLETE UNIX CONSOLES
#

#### Apollo consoles
#
# Apollo got bought by Hewlett-Packard.  The Apollo workstations are
# labeled HP700s now.
#

# From: Gary Darland <goodmanc@garnet.berkeley.edu>
apollo|apollo console,
	OTbs, am, mir,
	cols#88, lines#53,
	clear=^L, cub1=^H, cud1=\EB, cuf1=\EC,
	cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL,
	ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED,
	rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ,
	smso=\ES, smul=\EU, vpa=\EO+\s,

# We don't know whether or not the apollo guys replicated DEC's firmware bug
# in the VT132 that reversed <rmir>/<smir>.  To be on the safe side, disable
# both these capabilities.
apollo_15P|apollo 15 inch display,
	rmir@, smir@, use=vt132,
apollo_19L|apollo 19 inch display,
	rmir@, smir@, use=vt132,
apollo_color|apollo color display,
	rmir@, smir@, use=vt132,

#### 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=^J, 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=^J, 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=^M, 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=^J, 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=^M^J, 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
# comany in Georgia (US) called "XS International", parts and service may
# still be available through them.
#

# (masscomp: ":MT:" changed to ":km:";  -- esr)
masscomp|masscomp workstation console,
	OTbs, km, mir,
	cols#80, it#8, lines#24,
	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
	rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
masscomp1|masscomp large screen version 1,
	cols#104, lines#36, use=masscomp,
masscomp2|masscomp large screen version 2,
	cols#64, lines#21, use=masscomp,

######## 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=^M, cub1=^H, cud1=^J, 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=^J, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
	kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r,
	kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r,
	kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r,
	op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU,
	rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA,
	setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t\E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX,
	setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t\E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU,
	sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2%t\E&dD%;,
	sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB,
	smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,

# gs6300 - can't use blue foreground, it clashes with underline;
# it's simulated with cyan
# Bug: The <op> capability probably resets attributes.
# (gs6300: commented out <rmln> (no <smln>) --esr)
gs6300|emots|AT&T PC6300 with EMOTS terminal emulator,
	am, bce, msgr, xon,
	colors#8, cols#80, it#8, lines#24, pairs#63,
	acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
	is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s,
	kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s,
	khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
	ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
	setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
	sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,

# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
# MS-Kermit with Heath-19 emulation mode enabled
# (h19k: changed ":pt@:" to ":it@"
h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin),
	am@, da, db, xt,
	it@,
	ht@, use=h19-u,

# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy
# Software (formerly Peripherals Computers & Supplies, Inc) of
# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376.  They can
# also be reached at support@synergy.com.
versaterm|versaterm vt100 emulator for the macintosh,
	am, xenl,
	cols#80, it#8, lines#24,
	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
	clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
	cub1=^H, cud1=^J, 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=^M^J, rc=\E8, rev=\E[7m$<2/>,
	rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
	rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>,
	sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>,
	smul=\E[4m$<2/>,

# From: Rick Thomas <ihnp4!btlunix!rbt>
# (xtalk: I added <rmam>/<smam> based on the init string.
xtalk|IBM PC with xtalk communication program (versions up to 3.4),
	am, mir, msgr, xon,
	cols#80, it#8, lines#24, vt#3, xmc#1,
	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
	cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>,
	el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH,
	il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB,
	kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
	rmkx=\E[?1l\E>, rmso=\E[m\s,
	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
	smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
	tbc=\E[3g, use=vt100+fnkeys,

# The official PC terminal emulator program of the AT&T Product Centers.
# Note - insert mode commented out - doesn't seem to work on AT&T PC.
simterm|attpc running simterm,
	am,
	cols#80, lines#24,
	bel=^G, clear=\EH\EJ, cr=^M, 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=^J, 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=^J, cuu1=\E^J, 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^M, cub1=^H,
	cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB,
	dch1=^X, dl1=^P^S, ed=\020\025\020\023\020\023, el=^P^U,
	home=^P^R, il1=^P^Z, ind=^J, pad=\177, 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=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
	hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3,
gsi|mystery gsi terminal,
	hc, os,
	cols#132,
	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH,
	ind=^J,
aj830|aj832|aj|anderson jacobson,
	hc, os,
	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
	ind=^J,
# 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=.1*\E'D, 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=\177, 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=^M, cub1=^H, cud1=^J, cuu1=\E9, ff=^L,
	hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=^J,
	kbs=^H, tbc=\E3,
qume5|qume|Qume Sprint 5,
	hc, os,
	cols#80, it#8,
	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
	hts=\E1, hu=\EH, ind=^J, 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=^M, cub1=^H, cud1=^J, ff=^L, ht=^I, hts=\E1, ind=^J,
	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=^M, cub1=^H, cud1=^J, cuf1=^L,
	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V,
	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
	khome=^Y,
# (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=^M, cub1=^H, cud1=^J,
	cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex,
	dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=^J, kbs=^H,
	kcub1=^H, kcud1=^J, nel=^M^J, 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=^M, cub1=^H,
	cud1=^J, 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=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X,
	home=^N, ind=^J,
# The DWK was a terminal manufactured in the Soviet Union c.1986
dwk|dwk-vt|dwk terminal,
	am,
	cols#80, it#8, lines#24,
	acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_,
	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
	ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177,
	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
	kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
	kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh,
	kpp=\Eg, nel=^M^J, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
	sgr0=\EX, smacs=\EF, smso=\ET,
env230|envision230|envision 230 graphics terminal,
	xenl@,
	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
	sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
	use=vt100,
# 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=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J,
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=^J, 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=^M,
	cub1=^H, cud1=^J, 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=^M, home=\036$<2>, ht=\011$<5>,
	hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=^J,
	ip=$<3>,
	is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12,
	kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY,
	kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r,
	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
	mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
	rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
	rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
	rs3=\EwG\Ee($<150>,
	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%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=\EH^B, smam=\Ed/,
	smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
	smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
	uc=\EG8\EG0, use=adm+sgr,
teletec|Teletec Datascreen,
	OTbs, am,
	cols#80, lines#24,
	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K,
	home=^^, ind=^J,
# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
# This description is for the LANPAR Technologies VISION 3220
# terminal from 1984/85.  The function key definitions k0-k5 represent the
# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys.
#
# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
# I had a couple of scopes (3221) like this once where I used to work, around
# the 1987 time frame if memory serves me correctly.  These scopes were made
# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
# compatible.  The 3220 was a plain text terminal like the VT-220, the 3221
# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
# was like the VT-241 (color with Regis + Sixel Graphics).  These terminals
# (3221) cost about $1500 each, and one was always broken -- had to be sent
# back to the shop for repairs.
# The only real advantage these scopes had over the VT-240's were:
# 1) They were faster in the Regis display, or at least the ones I did
# 2) They had a handy debugging feature where you could split-screen the
# scope, the graphics would appear on the top, and the REGIS commands would
# appear on the bottom.  I don't remember the VT-240s being able to do that.
# I would swear that LANPAR Technologies was in MA someplace, but since I
# don't work at the same place anymore, and those terminals and manuals were
# long since junked, I cannot be any more sure than that.
#
# (v3220: removed obsolete ":kn#10:",
# I added <rmam>/<smam> based on the init string -- esr)
v3220|LANPAR Vision II model 3220/3221/3222,
	OTbs, am, mir, xenl,
	cols#80, it#8, lines#24,
	clear=\E[H\E[J, cub1=^H, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
	ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
	is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
	kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
	kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
	kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
	rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
	smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
######## ICH/ICH1 VERSUS RMIR/SMIR
#
# Some non-curses applications get confused if both ich/ich1 and rmir/smir
# are present; the symptom is doubled characters in an update using insert.
# These applications are technically correct; in both 4.3BSD termcap and
# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir
# unless the terminal needs both.  To my knowledge, no terminal still in this
# file requires both other than the very obsolete dm2500.
#
# For ncurses-based applications this is not a problem, as ncurses uses
# one or the other as appropriate but never mixes the two.  Therefore we
# have not corrected entries like `linux' and `xterm' that specify both.
# If you see doubled characters from these, use the linux-nic and xterm-nic
# entries that suppress ich/ich1.  And upgrade to ncurses!
#

######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS
#
# ANSI X3.64 has been withdrawn and replaced by ECMA-48.  The ISO 6429 and
# ECMA-48 standards are said to be almost identical, but are not the same
# as X3.64 (though for practical purposes they are close supersets of it).
#
# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch
# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for
# Coded Character Sets"), include your snail-mail address, and you should
# receive the document in due course.  Don't expect an email acknowledgement.
#
# 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 parametrized sequences are
# decribed 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   Backpace *                ^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 CCIT 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 CCIT T.416, 39 = 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, 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, 13 = Format Effector Action Mode (FEAM),
# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer
# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer
# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed
# New Line Mode (LF/NL), 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 thems 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 capabilties:
# 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.
#
######## CHANGE HISTORY
#
# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses
# project.
#
# This file contains all the capability information present in John Kunze's
# last version of the termcap master file, except as noted in the change
# comments at end of file.  Some information about very ancient obsolete
# capabilities has been moved to comments.  Some all-numeric names of older
# terminals have been retired.
#
# I changed :MT: to :km: (the 4.4BSD name) everywhere.  I commented out some
# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer
# used by BSD curses.
#
# The 9.1.0 version of this file was translated from my lightly-edited copy of
# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for
# the purpose.  Unless the ncurses tic implementation and the Lisp code were
# making perfectly synchronized mistakes which I then failed to catch by
# eyeball, the translation was correct and perfectly information-preserving.
#
# Major version number bumps correspond to major version changes in ncurses.
#
# Here is a log of the changes since then:
#
# 9.1.0 (Wed Feb  1 04:50:32 EST 1995):
#	* First terminfo master translated from 8.3.
# 9.2.0 (Wed Feb  1 12:21:45 EST 1995):
#	* Replaced Wyse entries with updated entries supplied by vendor.
#
# 9.3.0 (Mon Feb  6 19:14:40 EST 1995):
#	* Added contact & status info from G. Clark Brown <clark@sssi.com>.
# 9.3.1 (Tue Feb  7 12:00:24 EST 1995):
#	* Better XENIX keycap translation.  Describe TC termcaps.
#	* Contact and history info supplied by Qume.
# 9.3.2 (Sat Feb 11 23:40:02 EST 1995):
#	* Raided the Shuford FTP site for recent termcaps/terminfos.
#	* Added information on X3.64 and VT100 standard escape sequences.
# 9.3.3 (Mon Feb 13 12:26:15 EST 1995):
#	* Added a correct X11R6 xterm entry.
#	* Fixed terminfo translations of padding.
# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
#	* Added correct acsc/smacs/rmacs strings for vt100 and xterm.
#	* Added u6/u7/u8/u9 capabilities.
#	* Added PCVT entry.
# 9.3.5 (Thu Feb 23 09:37:12 EST 1995):
#	* Emacs uses :so:, not :mr:, for its mode line.  Fix linux entry
#	  to use reverse-video standout so Emacs will look right.
#	* Added el1 capability to ansi.
#	* Added smacs/rmacs to ansi.sys.
#
# 9.4.0 (Sat Feb 25 16:43:25 EST 1995):
#	* New mt70 entry.
#	* Added COPYRIGHTS AND OTHER DELUSIONS.
#	* Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics
#	  smartvid & smarterm, ampex 175 & 219 & 232,
#	  env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20,
#	  ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2,
#	  screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan,
#	  adm36, mime314, ergo4000, ca22851.  Replaced att7300, esprit, dd5500.
#	* Replaced the Perkin-Elmer entries with vendor's official ones.
#	* Restored the old minimal-ansi entry, luna needs it.
#	* Fixed some incorrect ip and proportional-padding translations.
# 9.4.1 (Mon Feb 27 14:18:33 EST 1995):
#	* Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly.
#	* Make the xterm entry 65 lines again; create xterm25 and xterm24
#	  to force a particular height.
#	* Added beehive4 and reorganized other Harris entries.
# 9.4.2 (Thu Mar  9 01:45:44 EST 1995):
#	* Merged in DEC's official entries for its terminals.  The only old
#	  entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
#	* Replaced the translated BBN Bitgraph entries with purpose-built
#	  ones from AT&T's SVr3.
#	* Replaced the AT&T entries with AT&T's official terminfos.
#	* Added teleray 16, vc415, cops10.
#	* Merged in many individual capabilities from SCO terminfo files.
# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
#	* Typo fixes.
#	* Change linux entry so A_PROTECT enables IBM-PC ROM characters.
# 9.4.4 (Mon Mar 27 12:32:35 EST 1995):
#	* Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803,
#	  pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21,
#	  simterm, citoh and variants.
#	* Replaced sol entry with sol1 and sol2.
#	* Replaced Qume QVT and Freedom-series entries with purpose-built
#	  terminfo entries.
#	* Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
#	  and dg200 entries using caps from from SCO.
#	* Added the usual set of function-key mappings to ANSI entry.
#	* Corrected xterm's function-key capabilities.
# 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
#	* Fix in xterm entry, cub and cud are not reliable under X11R6.
# 9.4.6 (Thu Mar 30 14:52:15 EST 1995):
#	* Fix in xterm entry, get the arrow keys right.
#	* Change some \0 escapes to \200.
# 9.4.7 (Tue Apr  4 11:27:11 EDT 1995)
#	* Added apple (Videx card), adm1a, oadm31.
#	* Fixed malformed ampex csr.
#	* Fixed act4, cyb110; they had old-style prefix padding left in.
#	* Changed mandatory to advisory padding in many entries.
#	* Replaced HP entries up to hpsub with purpose-built ones.
#	* Blank rmir/smir/rmdc/smdc capabilities removed.
#	* Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
# 9.4.8 (Fri Apr  7 09:36:34 EDT 199):
#	* 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.
#	* Carrected 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 (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 (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 compatiblity - 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 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 (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 (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 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
#
# The following sets edit modes for GNU EMACS.
# Local Variables:
# fill-prefix:"\t"
# fill-column:75
# comment-column:0
# comment-start-skip:"^#+"
# comment-start:"# "
# compile-command:"tic -c terminfo.master"
# End:
######## SHANTIH!  SHANTIH!  SHANTIH!
