# $XTermId: terminfo,v 1.216 2026/02/12 22:20:25 tom Exp $
#
# Updates/notes/new entries (e.g., xterm-8bit, xterm-16color, xterm-256color)
# - Thomas E. Dickey
#
#------------------------------------------------------------------------------
# Copyright 1996-2025,2026 by Thomas E. Dickey
#
#                         All Rights Reserved
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name(s) of the above copyright
# holders shall not be used in advertising or otherwise to promote the
# sale, use or other dealings in this Software without prior written
# authorization.
#------------------------------------------------------------------------------
# format (ncurses 6.1): tic -I -W -1 -f -x terminfo
#------------------------------------------------------------------------------
#
# Special Capabilities:
# --------------------
# ich has a corresponding capability that inserts a single blank.  We could
#	have used ich1=\E[@, which works with ncurses, but that is not standard
#	behavior.  If it is set, then SVr4 vi (e.g., Solaris 2.6) emits both
#	smir/rmir and ich1.
# meml locks memory above the cursor; memu unlocks (ala HP terminals).  This
#	is not recognized by some older (e.g., SVr3) tic programs, but none
#	do more than warn about it.  Ignore the warning.
# smcup clears memory before switching to the alternate screen.  The older
#	(deprecated) \E[?47h did not do this, requiring applications to
#	embed a \E[2J in the rmcup string.  However, that behavior cannot
#	be disabled via titeInhibit, making that resource not function as
#	intended on systems with terminfo.
# rs2/is2 are shorter with XFree86 xterm because it supports DECSTR.  We
#	use the shorter sequence for compatibility with the termcap, which
#	is trimmed to keep it shorter than 1023 characters.  It (escape \E[!p)
#	replaces these in the conventional vt100 reset-string:
#		\E7	- save cursor (fixes origin-mode side-effect)
#		\E[r	- reset scrolling margins
#		\E[m	- reset SGR (including color)
#		\E[?7h	- reset wraparound mode (DECAWM)
#		\E[?1l	- reset application cursor keys (DECCKM)
#		\E[?6l	- reset origin mode (DECOM)
#		\E8	- restore cursor
#	DECSTR is recognized by XFree86 xterm even in vt52 mode.
#
# Editing Keypad:
# --------------
# XFree86 xterm emulates vt220 if the decTerminalID resource is set to 200 or
# higher.  Otherwise it emulates a vt100 or vt52 depending on the value of the
# resource.  When emulating a vt220, we support the editing keypad.  Sun and PC
# keyboards have an editing keypad which is similar to the vt220:
#
#	VT220 editing keypad
#	----------------------------
#	Find      Insert      Remove
#	Select    Prev        Next
#	----------------------------
#
#	Sun/PC editing keypad
#	----------------------------
#	Insert    Home        PageUp
#	Delete    End         PageDn
#	----------------------------
#
# If the sunKeyboard resource is true, we map it this way (adjusting the values
# of Home, End and Delete):
#	VT220		      Sun/PC
#	----------------------------
#	Find		      Home
#	Select		      End
#	Insert		      Insert
#	Remove		      Delete
#	Prev		      PageUp
#	Next		      PageDn
#	----------------------------
#
# Note that all of the keys on the editing keypad transmit escape sequences.  A
# vt220 does this only when in vt220 mode; when emulating a vt100 the editing
# keypad is inactive.
#
# Alternative keycodes:
# --------------------
# Several of the function keys have alternative names, depending on the type of
# host which your xterm is connected to.  DEC (i.e., the VMS system) uses F15
# as the HELP key, F16 as the DO key.  Unix applications generally do not do
# this.  Curses applications in particular, assign a unique keycode to each
# capability string.  These terminal descriptions do not have conflicting
# definitions, to ensure that Unix curses applications use a consistent set of
# keycodes.  To get a VMS-bias, make these substitutions:
#	1. change khome to kfnd
#	2. change kend to kslt
# The original xterm-r6 entry does in fact have a VMS bias.
#
# Some legacy applications using the termcap emulation may expect kll where
# we have specified kend.
#
# Function keys with modifiers (Sun/PC):
# -------------------------------------
#	Shift-Fx          - kf{12+x}
#	Control-Fx        - kf{24+x}
#	Shift-Control-Fx  - kf{36+x}
#
# The terminfo defines some special keys which are documented as "shifted",
# e.g., kDC is shifted-delete-character.
#
# Note however, that even though the terminfo says a key might be sent, there
# may be conflicts which prevent this.  For example, it is common to use
# shifted pageup and pagedown for window manager functions.  The default
# translation for xterm since X11R4 has overridden shifted Insert, Select,
# PageUp and PageDown, which correspond to terminfo kIC, kEND, kPRV and kNXT
# respectively.
#
xterm-new|modern xterm terminal emulator,
	rv=\E\\[>41;[1-6][0-9][0-9];0c,
	xr=\EP>\\|XTerm\\(([1-9][0-9]+)
	   \\)\E\\\\,
	use=dec+sl,
	use=ecma+index,
	use=xterm+keypad,
	use=vt420+lrmm,
	use=xterm+sm+1006,
#	use=ansi+rep,
	use=ecma+strikeout,
	use=xterm+pcfkeys,
	use=xterm+tmux,
	use=xterm+nofkeys,
	use=bracketed+paste,
	use=report+version,
	use=xterm+focus,
	use=xterm+3keys,

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

# These "ansi+XXX" blocks were added in ncurses 5.0 or 5.1:
ansi+arrows|ANSI normal-mode home and cursor-keys,
	kbs=^H,
	kcub1=\E[D,
	kcud1=\E[B,
	kcuf1=\E[C,
	kcuu1=\E[A,
	khome=\E[H,

ansi+csr|ANSI scroll-region plus cursor save & restore,
	csr=\E[%i%p1%d;%p2%dr,
	rc=\E8,
	sc=\E7,

ansi+cup|ANSI absolute cursor-addressing,
	cup=\E[%i%p1%d;%p2%dH,
	home=\E[H,

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

ansi+erase|ANSI clear screen/line,
	clear=\E[H\E[J,
	ed=\E[J,
	el=\E[K,

ansi+idc1|ANSI insert/delete one character,
	dch1=\E[P,
	ich1=\E[@,
	rmir=\E[4l,
	smir=\E[4h,

ansi+idc|ANSI insert/delete characters,
	dch=\E[%p1%dP,
	ich=\E[%p1%d@,
	use=ansi+idc1,

ansi+idl1|ANSI insert/delete one line,
	dl1=\E[M,
	il1=\E[L,

ansi+idl|ANSI insert/delete lines,
	dl=\E[%p1%dM,
	il=\E[%p1%dL,
	use=ansi+idl1,

ansi+inittabs|ANSI initial tab-stops,
	it#8,
	use=ansi+tabs,

ansi+local1|ANSI normal-mode cursor-keys,
	cub1=\E[D,
	cud1=\E[B,
	cuf1=\E[C,
	cuu1=\E[A,

ansi+local|ANSI normal-mode parameterized cursor-keys,
	cub=\E[%p1%dD,
	cud=\E[%p1%dB,
	cuf=\E[%p1%dC,
	cuu=\E[%p1%dA,
	use=ansi+local1,

ansi+pp|ANSI printer port,
	mc5i,
	mc0=\E[i,
	mc4=\E[4i,
	mc5=\E[5i,

ansi+rep|ANSI repeat-character,
	rep=%p1%c\E[%p2%{1}%-%db,

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+tabs|ANSI tab-stops,
	cbt=\E[Z,
	ht=^I,
	hts=\EH,
	tbc=\E[3g,

# These were added after ncurses 6.0:
ansi+apparrows|ANSI application-mode home and cursor-keys,
	kcub1=\EOD,
	kcud1=\EOB,
	kcuf1=\EOC,
	kcuu1=\EOA,
	khome=\EOH,
	use=ansi+arrows,

ansi+cpr|ncurses extension for ANSI CPR,
	u6=\E[%i%d;%dR,
	u7=\E[6n,

ansi+rca2|ANSI relative cursor-addressing,
	hpa=\E[%i%p1%dG,
	vpa=\E[%i%p1%dd,

# Encode modifiers using parameters (see "Xterm Control Sequences" ctlseqs.ms).
# Note that this is unrelated to PCTERM.
#
# Some names are extensions allowed by ncurses, e.g.,
#	kDN, kDN5, kDN6, kLFT5, kLFT6, kRIT5, kRIT6, kUP, kUP5, kUP6
#
# The uppercase names are made up, since there are no standards that apply.
# If they were limited to two characters, they could in principle be translated
# to termcap.  However, termcap sizes are limited to 1023 bytes, so there is
# little point in ensuring that extended key names can be translated to
# termcap.  A terminfo file can be up to 4096 bytes; using all extended keys
# that xterm can generate would in fact exceed that limit.
#
# The numbers correspond to the modifier parameters documented in Xterm
# Control Sequences:
#
#	2	Shift
#	3	Alt
#	4	Shift + Alt
#	5	Control
#	6	Shift + Control
#	7	Alt + Control
#	8	Shift + Alt + Control
#
# X/Open Curses defines some shift combinations, which are also used here
# where applicable.  Since it does define some shift combinations, no number
# (2) is used for suffixing the made-up names.  Some combinations are not
# useful, e.g., they may reboot your computer, or they may require too many
# fingers.  I stopped at modifier 7, just to keep things simple -TD
#
# XTerm resources:
# ---------------
# The xterm+pcfn, xterm+pcf0, xterm+pcf1, xterm+pcf2 and xterm+pcf3 fragments
# correspond to default resource settings for xterm on a 104-key PC keyboard
# with 12 function-keys:
#
#	*sunKeyboard:false
#	*oldXtermFKeys:false
#	*modifyCursorKeys:2
#	*modifyFunctionKeys:2
#	*ctrlFKeys:10
#
# The key numbers are computed based on the modifiers:
#
#	kf1-kf12 are F1-F12
#	kf13-kf24 are shift F1-F12
#	kf25-kf36 are control F1-F12
#	kf37-kf48 are control+shift F1-F12
#	kf49-kf60 are alt F1-F12
#	kf61-kf63 are shift-alt F1-F3
#
# Note that ncurses would allow definition of kf64 and beyond, if there were
# an application that required it.
#
xterm+pcfkeys|fragment for PC-style keys,
	use=xterm+app,
	use=xterm+pcf2,
	use=xterm+pce2,
	use=xterm+pcc2,

# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who
# asked for some of xterm's advanced features to be added to its terminfo
# entry.  It defines extended capabilities not found in standard terminfo or
# termcap.  These are useful in tmux, for instance, hence the name.
#
# One caveat in adding extended capabilities in ncurses is that if the names
# are longer than two characters, then they will not be visible through the
# termcap interface.
#
# Ms modifies the selection/clipboard.  Its parameters are
#	p1 = the storage unit (clipboard, selection or cut buffer)
#	p2 = the base64-encoded clipboard content.
#
# Ss is used to set the cursor style as described by the DECSCUSR
#	function to a block or underline.
# Se resets the cursor style to the terminal power-on default.
#
# Cs and Ce set and reset the cursor colour.
xterm+tmux|advanced xterm features used in tmux,
	Cr=\E]112\E\\,
	Cs=\E]12;%p1%s\E\\,
	Ms=\E]52;%p1%s;%p2%s
	   \E\\,
	Se=\E[2\sq,
	Ss=\E[%p1%d\sq,
#
# The ctrlFKeys resource is only relevant to the xterm+pcfn and xterm+pcfN
# entries, since the modifyFunctionKeys resource overrides ctrlFKeys when it is
# positive.  A different choice of ctrlFKeys would give a different set of
# function-key strings.
xterm+pcfn|fragment with modifyFunctionKeys:-1 and ctrlFKeys:10,
	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~,
	kf21=\E[42~,
	kf22=\E[43~,
	kf23=\E[44~,
	kf24=\E[45~,
	kf25=\E[46~,
	kf26=\E[47~,
	kf27=\E[48~,
	kf28=\E[49~,
	kf29=\E[50~,
	kf3=\EOR,
	kf30=\E[51~,
	kf31=\E[52~,
	kf32=\E[53~,
	kf33=\E[54~,
	kf34=\E[55~,
	kf35=\E[56~,
	kf36=\E[57~,
	kf37=\E[58~,
	kf38=\E[59~,
	kf39=\E[60~,
	kf4=\EOS,
	kf40=\E[61~,
	kf41=\E[62~,
	kf42=\E[63~,
	kf43=\E[64~,
	kf44=\E[65~,
	kf45=\E[66~,
	kf46=\E[67~,
	kf47=\E[68~,
	kf48=\E[69~,
	kf5=\E[15~,
	kf6=\E[17~,
	kf7=\E[18~,
	kf8=\E[19~,
	kf9=\E[20~,

# Changing ctrlFKeys to 12 would let us number the keys using just shift- and
# control- modifiers:
#	kf1-kf12 are F1-F12
#	kf13-kf24 are shift F1-F12
#	kf25-kf36 are control F1-F12
#	kf37-kf48 are control+shift F1-F12
xterm+pcfN|fragment with modifyFunctionKeys:-1 and ctrlFKeys:12,
	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~,
	kf21=\E[42~,
	kf22=\E[43~,
	kf23=\E[44~,
	kf24=\E[45~,
	kf25=\E[46~,
	kf26=\E[47~,
	kf27=\E[48~,
	kf28=\E[49~,
	kf29=\E[50~,
	kf3=\EOR,
	kf30=\E[51~,
	kf31=\E[52~,
	kf32=\E[53~,
	kf33=\E[54~,
	kf34=\E[55~,
	kf35=\E[56~,
	kf36=\E[57~,
	kf37=\E[58~,
	kf38=\E[59~,
	kf39=\E[60~,
	kf4=\EOS,
	kf40=\E[61~,
	kf41=\E[62~,
	kf42=\E[63~,
	kf43=\E[64~,
	kf44=\E[65~,
	kf45=\E[66~,
	kf46=\E[67~,
	kf47=\E[68~,
	kf48=\E[69~,
	kf5=\E[15~,
	kf6=\E[17~,
	kf7=\E[18~,
	kf8=\E[19~,
	kf9=\E[20~,

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

# This is almost the same as xterm+pcf2 because the unmodified keys all happen
# to have a pattern that forces the modifier to the same position.
xterm+pcf1|fragment with modifyFunctionKeys:1,
	kf1=\EOP,
	kf10=\E[21~,
	kf11=\E[23~,
	kf12=\E[24~,
	kf13=\E[2P,
	kf14=\E[2Q,
	kf15=\E[2R,
	kf16=\E[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[5P,
	kf26=\E[5Q,
	kf27=\E[5R,
	kf28=\E[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[6P,
	kf38=\E[6Q,
	kf39=\E[6R,
	kf4=\EOS,
	kf40=\E[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[3P,
	kf5=\E[15~,
	kf50=\E[3Q,
	kf51=\E[3R,
	kf52=\E[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[4P,
	kf62=\E[4Q,
	kf63=\E[4R,
	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~,

xterm+pcf3|fragment with modifyFunctionKeys:3,
	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~,
#
# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
# and revised in patch #167 (2002/8/24).
#
# 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,

# The home/end keys on the editing keypad are also treated as cursor keys.
xterm+pce3|editing fragment with modifyCursorKeys:3,
	kDC=\E[>3;2~,
	kEND=\E[>1;2F,
	kHOM=\E[>1;2H,
	kIC=\E[>2;2~,
	kNXT=\E[>6;2~,
	kPRV=\E[>5;2~,
	kDC3=\E[>3;3~,
	kDC4=\E[>3;4~,
	kDC5=\E[>3;5~,
	kDC6=\E[>3;6~,
	kDC7=\E[>3;7~,
	kEND3=\E[>1;3F,
	kEND4=\E[>1;4F,
	kEND5=\E[>1;5F,
	kEND6=\E[>1;6F,
	kEND7=\E[>1;7F,
	kHOM3=\E[>1;3H,
	kHOM4=\E[>1;4H,
	kHOM5=\E[>1;5H,
	kHOM6=\E[>1;6H,
	kHOM7=\E[>1;7H,
	kIC3=\E[>2;3~,
	kIC4=\E[>2;4~,
	kIC5=\E[>2;5~,
	kIC6=\E[>2;6~,
	kIC7=\E[>2;7~,
	kNXT3=\E[>6;3~,
	kNXT4=\E[>6;4~,
	kNXT5=\E[>6;5~,
	kNXT6=\E[>6;6~,
	kNXT7=\E[>6;7~,
	kPRV3=\E[>5;3~,
	kPRV4=\E[>5;4~,
	kPRV5=\E[>5;5~,
	kPRV6=\E[>5;6~,
	kPRV7=\E[>5;7~,
	use=xterm+pce0,

xterm+pce2|editing 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~,
	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+pce0,

xterm+pce1|editing fragment with modifyCursorKeys:1,
	kDC=\E[3;2~,
	kEND=\E[2F,
	kHOM=\E[2H,
	kIC=\E[2;2~,
	kNXT=\E[6;2~,
	kPRV=\E[5;2~,
	kDC3=\E[3;3~,
	kDC4=\E[3;4~,
	kDC5=\E[3;5~,
	kDC6=\E[3;6~,
	kDC7=\E[3;7~,
	kEND3=\E[3F,
	kEND4=\E[4F,
	kEND5=\E[5F,
	kEND6=\E[6F,
	kEND7=\E[7F,
	kHOM3=\E[3H,
	kHOM4=\E[4H,
	kHOM5=\E[5H,
	kHOM6=\E[6H,
	kHOM7=\E[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+pce0,

xterm+pce0|editing fragment with modifyCursorKeys:0,
	kDC=\E[3;2~,
	kEND=\EO2F,
	kHOM=\EO2H,
	kIC=\E[2;2~,
	kNXT=\E[6;2~,
	kPRV=\E[5;2~,
	kDC3=\E[3;3~,
	kDC4=\E[3;4~,
	kDC5=\E[3;5~,
	kDC6=\E[3;6~,
	kDC7=\E[3;7~,
	kEND3=\EO3F,
	kEND4=\EO4F,
	kEND5=\EO5F,
	kEND6=\EO6F,
	kEND7=\EO7F,
	kHOM3=\EO3H,
	kHOM4=\EO4H,
	kHOM5=\EO5H,
	kHOM6=\EO6H,
	kHOM7=\EO7H,
	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=vt220+pcedit,

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

# The rmxx/smxx capabilities are an ncurses extension
ecma+strikeout|ECMA-48 strikeout/crossed-out,
	rmxx=\E[29m,
	smxx=\E[9m,

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

# The XM capability is an ncurses extension
xterm+sm+1006|xterm SGR-mouse,
	kmous=\E[<,
	XM=\E[?1006;1000
		%?
			%p1%{1}%=
			%th
		%e
			l
		%;,
	xm=\E[<%i
		%p3%d;
		%p1%d;
		%p2%d;
		%?
			%p4
			%tM
		%e
			m
		%;,

# By default, ncurses knows that xterm private mode 1000 enables/disables
# the X11 xterm mouse protocol.  So XM is not needed here, except for clarity.
xterm+x11mouse|X11 xterm mouse protocol,
	kmous=\E[M,
	XM=\E[?1000
		%?
			%p1%{1}%=
			%th
		%e
			l
		%;,
	xm=\E[M
		%?
			%p4
			%t
			%p3
		%e%{3}
		%;
		%'\s'%+%c
		%p2%'!'%+%c
		%p1%'!'%+%c,

# xterm patch #224 2007/2/11 added private mode 1004, for enabling/disabling
# focus in/out event reporting.  The 1004 is normally part of XM in a different
# building-block, e.g., for reporting any events.
xterm+focus|xterm focus-in/out event "keys",
	XF,
	fd=\E[?1004l,
	fe=\E[?1004h,
	kxIN=\E[I,
	kxOUT=\E[O,

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

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

# Vim uses RV to denote the secondary device attributes.  Xterm documents the
# - first parameter as the terminal type (extending it to VT100),
# - the second as the patch number for xterm, and
# - the third parameter as zero.
# Other terminals may provide useful responses, though few are documented.
#
# Since patch #280 2012/06/24, xterm by default reports itself as a VT420.
# This generic building-block matches ncurses.
report+da2|report secondary device attributes (DA2),
	RV=\E[>c,
	rv=\E\\[>[0-9]+;[0-9]+;[0-9]+c,

# This chunk is used for building the VT220/Sun/PC keyboard variants.
xterm-basic|modern xterm terminal emulator - common,
	OTbs,
	am,
	bce,
	km,
	mir,
	msgr,
	xenl,
	AX,
	XT,
	colors#8,
	cols#80,
	lines#24,
	pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqr
	     rssttuuvvwwxxyyzz{{||}}~~,
	bel=^G,
	civis=\E[?25l,
	clear=\E[H\E[2J,
	cnorm=\E[?12l\E[?25h,
	cr=\r,
	cub1=^H,
	cud1=\n,
	cup=\E[%i%p1%d;%p2%dH,
	cvvis=\E[?12;25h,
	dch=\E[%p1%dP,
	dch1=\E[P,
	ech=\E[%p1%dX,
	ed=\E[J,
	el=\E[K,
	el1=\E[1K,
	flash=\E[?5h$<100/>\E[?5l,
	home=\E[H,
	ich=\E[%p1%d@,
	ind=\n,
	is2=\E[!p\E[?3;4l\E[4l\E>,
	kmous=\E[M,
	meml=\El,
	memu=\Em,
	op=\E[39;49m,
	ri=\EM,
	rmacs=\E(B,
	rmam=\E[?7l,
	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>,
	setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	setb=\E[4
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	setf=\E[3
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	sgr=
		%?
			%p9
			%t\E(0
		%e
			\E(B
		%;
		\E[0
		%?
			%p6
			%t;1
		%;
		%?
			%p5
			%t;2
		%;
		%?
			%p2
			%t;4
		%;
		%?
			%p1
			%p3%|
			%t;7
		%;
		%?
			%p4
			%t;5
		%;
		%?
			%p7
			%t;8
		%;
		m,
	sgr0=\E(B\E[m,
	smacs=\E(0,
	smam=\E[?7h,
	smir=\E[4h,
	smkx=\E[?1h\E=,
	smm=\E[?1034h,
	E3=\E[3J,
	use=ansi+csr,
	use=ansi+enq,
	use=ansi+idl,
	use=ansi+inittabs,
	use=ansi+local,
	use=ansi+pp,
	use=ansi+rca2,
	use=ansi+sgrbold,
	use=ansi+sgrdim,
	use=xterm+alt+title,
	use=xterm+kbs,

xterm+nofkeys|building block for xterm fkey-variants,
	npc,
	kcbt=\E[Z,
	kent=\EOM,
	nel=\EE,
	use=ecma+index,
	use=ansi+rep,
	use=ecma+strikeout,
	use=vt420+lrmm,
	use=xterm+sm+1006,
	use=xterm+tmux,
	use=xterm+focus,
	use=ecma+italics,
	use=xterm+keypad,
	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.
#
# Some packagers modify xterm's resource definitions to provide extra function
# keys by using the shift-modifier in the translations resource.  However, that
# interferes with the DECUDK functionality.
#
xterm-vt220|xterm emulating vt220,
	npc,
	kcbt=\E[Z,
	kend=\E[4~,
	kf10=\E[21~,
	kf11=\E[23~,
	kf12=\E[24~,
	kf13=\E[25~,
	kf14=\E[26~,
	kf15=\E[28~,
	kf16=\E[29~,
	kf17=\E[31~,
	kf18=\E[32~,
	kf19=\E[33~,
	kf20=\E[34~,
	kf5=\E[15~,
	kf6=\E[17~,
	kf7=\E[18~,
	kf8=\E[19~,
	kf9=\E[20~,
	khome=\E[1~,
	kmous=\E[M,
	nel=\EE,
	use=xterm+app,
	use=vt220+keypad,
	use=vt220+pcedit,
	use=ecma+italics,
	use=ecma+index,
	use=ansi+rep,
	use=ecma+strikeout,
	use=xterm+focus,
	use=xterm+sm+1006,
	use=xterm+tmux,
	use=xterm+keypad,
	use=xterm-basic,
#
xterm-vt52|xterm emulating dec vt52,
	cols#80,
	it#8,
	lines#24,
	acsc=``aaffggjjkkllmmnnooppqqrrs
	     sttuuvvwwxxyyzz{{||}}~~,
	bel=^G,
	clear=\EH\EJ,
	cr=\r,
	cub1=\ED,
	cud1=\EB,
	cuf1=\EC,
	cup=\EY%p1%'\s'%+%c%p2%'\s'%+%c,
	cuu1=\EA,
	ed=\EJ,
	el=\EK,
	home=\EH,
	ht=^I,
	ind=\n,
	kcub1=\ED,
	kcud1=\EB,
	kcuf1=\EC,
	kcuu1=\EA,
	nel=\r\n,
	ri=\EI,
	rmacs=\EG,
	smacs=\EF,
	use=xterm+kbs,
	use=vt52+keypad,

# from ncurses 6.2:
# DECScope of course had no "function keys", but this building block assigns
# the three blank keys at the top of the auxiliary (numeric) keypad, using
# the same analogy as vt100 (also lacking function-keys).
#
# These assignments use the same layout for 0-9 as vt100+keypad; the vt52
# keypad had its cursor-keys on the right-column as shown -TD
#   _______________________________________
#  |   PF1   |   PF2   |   PF3   | c-up    |
#  |   \EP   |   \EQ   |   \ER   |   \EA   |
#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|kcuu1_k4_|
#  |    7         8         9      c-down  |
#  |   \E?w  |   \E?x  |   \E?y  |   \EB   |
#  |_kf9__k9_|_kf10_k;_|_kf0__k0_|kcud1____|
#  |    4    |    5    |    6    | c-right |
#  |   \E?t  |   \E?u  |   \E?v  |   \EC   |
#  |_kf5__k5_|_kf6__k6_|_kf7__k7_|kcuf1_k8_|
#  |    1    |    2    |    3    | c-left  |
#  |   \E?q  |   \E?r  |   \E?s  |   \ED   |
#  |_ka1__K1_|_kb2__K2_|_ka3__K3_|kcub1____|
#  |         0         |   .     |  enter  |
#  |        \E?p       |  \E?n   |  \E?M   |
#  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
#
vt52+keypad|DECScope auxiliary keypad,
	ka1=\E?q,
	ka3=\E?s,
	kb2=\E?r,
	kc1=\E?p,
	kc3=\E?n,
	kf0=\E?y,
	kf1=\EP,
	kf2=\EQ,
	kf3=\ER,
	kf5=\E?t,
	kf6=\E?u,
	kf7=\E?v,
	kf8=\E?w,
	kf9=\E?x,
#
# Sun does not number the function keys this way in their sparse termcap; their
# terminal descriptions ignore the keypads.  kb(7M) states that there are codes
# reserved for 64 function keys, 16 each in left, right, top and bottom.  Each
# keyboard type has a different number of function keys in different
# arrangements.  Using xkeycaps for reference:
#
# Type 3:  left 10, top 9, right 15
# ------
# kf1-kf9 are XK_F1-XK_F9
# There is no kf10 on this keyboard type.
# kf11-kf20 are keysyms XK_L1 through XK_L10.
# kf31-kf45 are keysyms XK_R1 through XK_R15.
#
# However, X's keysymdef.h is hard-coded to make
#	XK_L1==XK_F11 and
#	XK_R1==XK_F21,
# by someone who was unfamiliar with terminal types other than Sun's.  So
# xterm uses the internal X keysymbols, but the terminfo entry uses the Sun
# numbering scheme.
#
# Type 4:  left 11, top 12, right 15
# ------
# The left-keypad contains an unnumbered Help-key.
# The right-keypad also contains NumLock, Ins, Del, Enter, + and - keys which
# do not appear to be part of the R-sequence.
#
# Type 5:  left 9, top 12, right (more than one keypad)
# ------
# These keyboards do not use the same naming convention, look like a hybrid of
# the type 4 and IBM keyboards.
#
# XTerm resources:
# ---------------
# Set the modifyFunctionKeys resource to negative (-1) to make it simple to
# enter the higher function-key values using shift- and control-modifiers.
#
xterm-sun|xterm with sun function keys,
	kb2=\E[218z,
	kcpy=\E[197z,
	kdch1=\E[3z,
	kend=\E[220z,
	kf1=\E[224z,
	kf10=\E[233z,
	kf11=\E[192z,
	kf12=\E[193z,
	kf13=\E[194z,
	kf14=\E[195z,
	kf15=\E[196z,
	kf17=\E[198z,
	kf18=\E[199z,
	kf19=\E[200z,
	kf2=\E[225z,
	kf20=\E[201z,
	kf3=\E[226z,
	kf31=\E[208z,
	kf32=\E[209z,
	kf33=\E[210z,
	kf34=\E[211z,
	kf35=\E[212z,
	kf36=\E[213z,
	kf38=\E[215z,
	kf4=\E[227z,
	kf40=\E[217z,
	kf42=\E[219z,
	kf44=\E[221z,
	kf45=\E[222z,
	kf46=\E[234z,
	kf47=\E[235z,
	kf5=\E[228z,
	kf6=\E[229z,
	kf7=\E[230z,
	kf8=\E[231z,
	kf9=\E[232z,
	kfnd=\E[200z,
	khlp=\E[196z,
	khome=\E[214z,
	kich1=\E[2z,
	knp=\E[222z,
	kpp=\E[216z,
	kund=\E[195z,
	use=xterm+kbs,
	use=ansi+apparrows,
	use=xterm+nopcfkeys,
	use=xterm+nofkeys,

# Note: normally xterm supports modified function-keys as described in
#	XTerm - "Other" modified keys
#	https://invisible-island.net/xterm/modified-keys.html
#
# However, xterm-hp, xterm-sco and xterm-sun assume no modifiers.  Here is
# a simple script which demonstrates these descriptions:
#	#!/bin/sh
#	export TERM=xterm-$1
#	xterm \
#		-kt $1 \
#		-fs 16 -fa mono \
#		-title $TERM \
#		-tn $TERM \
#		-xrm '*modifyCursorKeys:-1' \
#		-xrm '*modifyFunctionKeys:-1' \
#		-e tack
# e.g., "foo sun" if the script is named "foo" -TD

xterm-hp|xterm with hpterm function keys,
	kclr=\EJ,
	kcub1=\ED,
	kcud1=\EB,
	kcuf1=\EC,
	kcuu1=\EA,
	kdch1=\EP,
	kend=\EF,
	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+nofkeys,
	use=xterm+nopcfkeys,
#
# scoterm implements 48 function-keys using shift- and control-modifiers to
# multiple 12 function-keys.  X has a hard-coded limit of 35 function-keys,
# but xterm can represent larger values.
#
# XTerm resources:
# ---------------
# Set the modifyFunctionKeys resource to negative (-1) to make it simple to
# enter the higher function-key values using shift- and control-modifiers.
#
# Also, set ctrlFKeys resource to 12 (the default is 10) to make xterm see 48
# function-keys on a keyboard with 12 function-keys and 4 control/shift
# modifier combinations.
#
xterm-sco|xterm with SCO function keys,
	kbeg=\E[E,
	kdch1=^?,
	kf1=\E[M,
	kf10=\E[V,
	kf11=\E[W,
	kf12=\E[X,
	kf13=\E[Y,
	kf14=\E[Z,
	kf15=\E[a,
	kf16=\E[b,
	kf17=\E[c,
	kf18=\E[d,
	kf19=\E[e,
	kf2=\E[N,
	kf20=\E[f,
	kf21=\E[g,
	kf22=\E[h,
	kf23=\E[i,
	kf24=\E[j,
	kf25=\E[k,
	kf26=\E[l,
	kf27=\E[m,
	kf28=\E[n,
	kf29=\E[o,
	kf3=\E[O,
	kf30=\E[p,
	kf31=\E[q,
	kf32=\E[r,
	kf33=\E[s,
	kf34=\E[t,
	kf35=\E[u,
	kf36=\E[v,
	kf37=\E[w,
	kf38=\E[x,
	kf39=\E[y,
	kf4=\E[P,
	kf40=\E[z,
	kf41=\E[@,
	kf42=\E[[,
	kf43=\E[\\,
	kf44=\E[],
	kf45=\E[\^,
	kf46=\E[_,
	kf47=\E[`,
	kf48=\E[{,
	kf5=\E[Q,
	kf6=\E[R,
	kf7=\E[S,
	kf8=\E[T,
	kf9=\E[U,
	kich1=\E[L,
	kmous=\E[>M,
	knp=\E[G,
	kpp=\E[I,
	use=vt100+noapp,
	use=xterm+nofkeys,
#
# Other variants (these are all very old entries, from X11R5):
xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
	lines#24,
	use=xterm-old,
xterm-65|xterm with tall window 65x80 (X Window System),
	lines#65,
	use=xterm-old,
xterm-bold|xterm with bold instead of underline (X Window System),
	sgr=
		%?
			%p9
			%t\016
		%e
			\017
		%;
		B\E[0
		%?
			%p6
			%t;1
		%;
		%?
			%p2
			%t;1
		%;
		%?
			%p1
			%p3%|
			%t;7
		%;
		m,
	smso=\E[7m,
	smul=\E[1m,
	use=xterm-old,
xterm-boldso|xterm with bold for standout (X Window System),
	rmso=\E[m,
	smso=\E[1m,
	use=xterm-old,
xterm-mono|monochrome xterm,
	use=xterm-old,
#
# VTxxx terminals are usually set up so that full-screen applications will use
# the cursor application mode strings.  This is good for full-screen
# applications, including legacy applications which may have hard-coded
# behavior, but bad for interactive shells (e.g., tcsh, bash) which use arrow
# keys to scroll through a history of command strings.
#
# To see the difference between normal/application modes, consider this example:
#	+ In normal (non-application) mode, the terminal transmits a down-arrow
#	  as \E[C, which happens to echo as a down-arrow.
#	+ In application mode the terminal transmits \EOC, which echoes as C.
#	  That is because the \EO is the SS3 control, which says to use the
#	  character from the G3 character set for the next cell.
#
# One example of hard-coded behavior would be for applications written to work
# with VT52 and VT100 terminals.  If the application's parser ignores 'O' and
# '?' characters after the escape, then the cursor and keypad strings for the
# two terminals are the same.  (Indeed, one of the first curses applications
# which I used did something like this to cover "ANSI" terminals -TD).
#
# To make this work (leaving the cursor keys in normal mode), we have to adjust
# the terminal initialization sequences:
#
#	smkx/rmkx set/reset the cursor and keypad application modes.  We retain
#		the latter (otherwise many applications fail).
#
#	smcup/rmcup set/restore cursor-addressing mode for full-screen
#		applications.  For xterm, this normally means the alternate
#		screen, which is not compatible with interactive shells.  Some
#		programs are "smart" and disable these.
#
xterm-noapp|xterm with cursor keys in normal mode,
	rmcup@,
	rmkx=\E>,
	smcup@,
	smkx=\E=,
	use=vt100+noapp,
	use=xterm,

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

xterm+acs|ISO-2022 alternate character-switching for xterm,
	acsc=``aaffggiijjkkllmmnnooppqqr
	     rssttuuvvwwxxyyzz{{||}}~~,
	enacs@,
	rmacs=\E(B,
	smacs=\E(0,

xterm+app|fragment with cursor keys in application mode,
	kcub1=\EOD,
	kcud1=\EOB,
	kcuf1=\EOC,
	kcuu1=\EOA,
	use=xterm+app+pc,

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

xterm+app+pc|fragment for app pc-style home/end,
	kend=\EOF,
	khome=\EOH,

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

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

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

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

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

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

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

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

# from development after ncurses 6.1:
# Xterm's emulation of the VT100 numeric keypad on a PC-keyboard runs into the
# problem that the keypad layout is different, and that the natural choice for
# PF1 is NumLock (which happens to be reserved for other use).  To work around
# that, PF1-PF4 are emulated via F1-F4, which leaves the "/", "*" and "+" not
# directly related to VT100.
#
# With the VT220 keypad block that uses the 1-9 keys as suggested in
# terminfo(5), the other keys can be handled with user-defined capabilities:
#
#   _______________________________________
#  | NumLock |    /    |    *    |    -    |
#  |         |   $Oo   |   $Oj   |   $OS   |
#  |_________|__kpDIV__|__kpMUL__|__kpSUB__|
#  |    7         8         9    |    +    |
#  |   $Ow   |   $Ox   |   $Oy   |   $Ok   |
#  |_ka1__K1_|_________|_ka3__K3_|  kpADD  |
#  |    4    |    5    |    6    |         |
#  |   $Ot   |   $Ou   |   $Ov   |         |
#  |_________|_kb2__K2_|_________|_________|
#  |    1    |    2    |    3    |         |
#  |   $Oq   |   $Or   |   $Os   |         |
#  |_kc1__K4_|_________|_kc3__K5_|  enter  |
#  |         0         |    .    |   $OM   |
#  |        $Op        |   $On   |         |
#  |_______kpZRO_______|__kpDOT__|_kent_@8_|
#
# ka2, kb1, kb3 and kc2 are extensions, as are the mixed-case names.
# There are no termcap equivalents for these extensions.
#
# kpCMA (comma) is used here for the VT100 keypad, which xterm emulates with
# shifted-keypad-plus, though normally that invokes a font-size change.
#
# Old versions of xterm, e.g., xterm-xfree86, documented \EOE as kb2, which
# does not fit into this layout.  The extension kp5 fits, but is not visible
# to termcap applications.  As an alternative, kbeg (which does have a termcap
# equivalent) is provided.

xterm+keypad|xterm emulating VT100/VT220 numeric keypad,
	kbeg=\EOE,
	kp5=\EOE,
	kpADD=\EOk,
	kpCMA=\EOl,
	kpDIV=\EOo,
	kpDOT=\EOn,
	kpMUL=\EOj,
	kpSUB=\EOm,
	kpZRO=\EOp,
	use=vt220+keypad,

# 2026-01-31 ncurses
xterm+3keys|X11 3-keys,
	kPause=\E[26;2~,
	kPrint=\E[25~,
	kPrint2=\E[25;2~,
	kPrint3=\E[25;3~,
	kPrint4=\E[25;4~,
	kPrint5=\E[25;5~,
	kPrint6=\E[25;6~,
	kPrint7=\E[25;7~,
	kScroll=\E[28;2~,

# from development after ncurses 5.2:
# 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,
#
# This should work for the commonly used "color xterm" variations (XFree86
# xterm, color_xterm, nxterm, rxvt).  Note that it does not set 'bce', so for
# XFree86 and and rxvt, some applications that use colors will be less
# efficient, and in a few special cases (with "smart" optimization) the wrong
# color will be painted in spots.
xterm-color|generic "ANSI" color xterm (X Window System),
	colors#8,
	ncv@,
	pairs#64,
	op=\E[m,
	setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	use=xterm-r6,
#
# vi may work better with this entry, because vi
# doesn't use insert mode much
xterm-ic|xterm-vi|xterm with insert character instead of insert mode,
	mir@,
	ich=\E[%p1%d@,
	ich1=\E[@,
	rmir@,
	smir@,
	use=xterm,
#
# This is used only for testing (it's not relevant to DEC VTxxx terminals, but
# to ncurses).
xterm-xmc|xterm with magic-cookie glitch,
	xmc#1,
	use=xterm-new,
#
# This one was originally for testing ncurses.  While the ISO 6429 defines the
# REP control, none of the DEC VTxxx terminals (VT52 through VT525) support it.
#
# The feature's inclusion in xterm was prompted by changes in ncurses to
# support testing repeat_char by Alexander Lukyanov, since no readily-available
# terminal supported this:
#
# + Alexander's patch was integrated in ncurses 1996/09/28
# + xterm patch #32 1996/11/21 was released in XFree86 3.2A 1997/01/26
#
# In July 2017, the feature was added to xterm-new in ncurses, making this
# entry obsolete (but it is kept for reference).
xterm-rep|xterm with repeat-character control,
	rep=%p1%c\E[%p2%{1}%-%db,
	use=xterm-new,
#
# This is mainly for testing xterm; the real VT220 will not let you switch
# character sets without first altering the keyboard language in the setup
# screen.  Some emulators allow this anyway.  (Note that these strings are
# normally used only for printers).  The parameter to csnm and scs is the same
# in both cases:  the keyboard language parameter returned by CSI ? 2 6 n.
xterm-nrc|xterm with VT220 national replacement character sets,
	csnm=
		%?
			%p1%{1}%=
			%tNorth\sAmerican
		%e
			%p1%{2}%=
			%tBritish
		%e
			%p1%{3}%=
			%tFlemish
		%e
			%p1%{4}%=
			%tFrench\sCanadian
		%e
			%p1%{5}%=
			%tDanish
		%e
			%p1%{6}%=
			%tFinnish
		%e
			%p1%{7}%=
			%tGerman
		%e
			%p1%{8}%=
			%tDutch
		%e
			%p1%{9}%=
			%tItalian
		%e
			%p1%{10}%=
			%tSwiss\s(French)
		%e
			%p1%{11}%=
			%tSwiss\s(German)
		%e
			%p1%{12}%=
			%tSwedish
		%e
			%p1%{13}%=
			%tNorwegian
		%e
			%p1%{14}%=
			%tFrench/Belgian
		%e
			%p1%{15}%=
			%tSpanish
		%;,
	scs=
		%?
			%p1%{1}%=
			%t\E(B
		%e
			%p1%{2}%=
			%t\E(A
		%e
			%p1%{3}%=
			%t\E(R
		%e
			%p1%{4}%=
			%t\E(9
		%e
			%p1%{5}%=
			%t\E(E
		%e
			%p1%{6}%=
			%t\E(5
		%e
			%p1%{7}%=
			%t\E(K
		%e
			%p1%{8}%=
			%t\E(4
		%e
			%p1%{9}%=
			%t\E(Y
		%e
			%p1%{10}%=
			%t\E(=
		%e
			%p1%{11}%=
			%t\E(=
		%e
			%p1%{12}%=
			%t\E(7
		%e
			%p1%{13}%=
			%t\E(E
		%e
			%p1%{14}%=
			%t\E(R
		%e
			%p1%{15}%=
			%t\E(Z
		%;,
	use=xterm-new,
#
# Foreground 0-15 maps (with toggles) into 30-37 & 90-97
# Background 0-15 maps (with toggles) into 40-47 & 100-107
#
# Originally I suppressed setaf/setab, since ANSI specifies only 8 colors, but
# Stephen Marley persuaded me to allow the "ANSI" color controls to extend to
# 16 colors.  (Note that ncurses 4.2 uses setf/setb from this description;
# however 5.0 selects either according to their availability).  - T.Dickey
#
# SVr4 curses does not use more than 8 colors anyway, so using 16 colors is
# either for terminfo-level applications or via ncurses.
xterm-16color|xterm with 16 colors,
	colors#16,
	pairs#0x100,
	setab=\E[
		%?
			%p1%{8}%<
			%t
			%p1%{40}%+
		%e
			%p1%{92}%+
		%;
		%dm,
	setaf=\E[
		%?
			%p1%{8}%<
			%t
			%p1%{30}%+
		%e
			%p1%{82}%+
		%;
		%dm,
	setb=
		%p1%{8}%/%{6}%*%{4}%+\E[%d
		%p1%{8}%m%Pa
		%?%ga%{1}%=
			%t4
		%e%ga%{3}%=
			%t6
		%e%ga%{4}%=
			%t1
		%e%ga%{6}%=
			%t3
		%e%ga%d
		%;
		m,
	setf=
		%p1%{8}%/%{6}%*%{3}%+\E[%d
		%p1%{8}%m%Pa
		%?%ga%{1}%=
			%t4
		%e%ga%{3}%=
			%t6
		%e%ga%{4}%=
			%t1
		%e%ga%{6}%=
			%t3
		%e%ga%d
		%;
		m,
	use=xterm+256color2,
	use=xterm+osc104,
	use=xterm-new,

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

# "indexed color" is mentioned without definition in ISO 8613-6 (ITU T.416).
#
# This implementation uses a 256-element color map where the first 16 entries
# are shared with the aixterm-compatible colors (and in turn the first 8 are
# shared with the ANSI colors).  The three levels (256, 16, 8) account for the
# use of a conditional expression in setaf/setab which reduces the number of
# characters sent to the screen for typical applications.
#
# 256 colors should give 65536 pairs, but SVr4 (legacy) terminfo stores numbers
# in a signed short.  Most people will not notice problems with only 32767
# pairs.  With ncurses 6.1, numbers are stored in a signed integer (at least
# 32-bits), and the inconsistency regarding pairs is eliminated.
xterm+256color|original xterm 256-color feature,
	ccc,
	colors#0x100,
	pairs#0x10000,
	initc=\E]4;
		%p1%d;rgb:
		%p2%{255}%*%{1000}%/%2.2X/
		%p3%{255}%*%{1000}%/%2.2X/
		%p4%{255}%*%{1000}%/%2.2X\E\\,
	oc=\E]104\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@,
xterm+256color2|xterm 256-color feature,
	setab=\E[
		%?
			%p1%{8}%<
			%t4
			%p1%d
		%e
			%p1%{16}%<
			%t10
			%p1%{8}%-%d
		%e48:5:
			%p1%d
		%;
		m,
	setaf=\E[
		%?
			%p1%{8}%<
			%t3
			%p1%d
		%e
			%p1%{16}%<
			%t9
			%p1%{8}%-%d
		%e38:5:
			%p1%d
		%;
		m,
	use=xterm+256color,
xterm-256color|xterm with 256 colors,
	use=xterm+256color,
	use=xterm+osc104,
	use=xterm-new,
xterm-88color|xterm with 88 colors,
	colors#88,
	pairs#7744,
	use=xterm-256color,

# "direct color" is mentioned without definition in ISO 8613-6 (ITU T.416).
#
# This is a particular implementation which assume 8-bit values for red, green,
# and blue.  Other encodings are possible; none are addressed by that standard.
#
# The "RGB" flag is an ncurses 6.1 extension which tells the library how to
# quickly compute the color-content for a given color value.
#
# Like xterm+256color, this uses a conditional expression.  But it does that
# for a different reason: to make it readily usable for applications which
# print text but also use RGB colors, it uses a color map for the usual ANSI
# colors (0-7) and RGB colors for the remaining range of the color value.
xterm+direct|xterm fragment with direct-color indexing,
	RGB,
	colors#0x1000000,
	pairs#0x10000,
	CO#8,
	initc@,
	op=\E[39;49m,
	setab=\E[
		%?
			%p1%{8}%<
			%t4
			%p1%d
		%e48:2::
			%p1%{65536}%/%d:
			%p1%{256}%/%{255}%&%d:
			%p1%{255}%&%d
		%;
		m,
	setaf=\E[
		%?
			%p1%{8}%<
			%t3
			%p1%d
		%e38:2::
			%p1%{65536}%/%d:
			%p1%{256}%/%{255}%&%d:
			%p1%{255}%&%d
		%;
		m,
	setb@,
	setf@,
xterm-direct|xterm with direct-color indexing,
	use=xterm+direct,
	use=xterm,
#
# 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, and the
# sunKeyboard resource set to true.
#
#	HTS	\E H	\210
#	RI	\E M	\215
#	SS3	\E O	\217
#	CSI	\E [	\233
#
xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
	OTbs,
	am,
	bce,
	km,
	mc5i,
	mir,
	msgr,
	npc,
	xenl,
	AX,
	colors#8,
	cols#80,
	it#8,
	lines#24,
	pairs#64,
	bel=^G,
	blink=\2335m,
	bold=\2331m,
	cbt=\233Z,
	civis=\233?25l,
	clear=\233H\2332J,
	cnorm=\233?25l\233?25h,
	cr=\r,
	csr=\233%i%p1%d;%p2%dr,
	cub=\233%p1%dD,
	cub1=^H,
	cud=\233%p1%dB,
	cud1=\n,
	cuf=\233%p1%dC,
	cuf1=\233C,
	cup=\233%i%p1%d;%p2%dH,
	cuu=\233%p1%dA,
	cuu1=\233A,
	cvvis=\233?12;25h,
	dch=\233%p1%dP,
	dch1=\233P,
	dl=\233%p1%dM,
	dl1=\233M,
	ech=\233%p1%dX,
	ed=\233J,
	el=\233K,
	el1=\2331K,
	flash=\233?5h$<100/>\233?5l,
	home=\233H,
	hpa=\233%i%p1%dG,
	ht=^I,
	hts=\210,
	ich=\233%p1%d@,
	il=\233%p1%dL,
	il1=\233L,
	ind=\n,
	invis=\2338m,
	is2=\E[62"p\E\sG\233m\233?7h\E>
	    \E7\233?1;3;4;6l\2334l\233r
	    \E8,
	ka1=\217w,
	ka3=\217u,
	kb2=\217y,
	kbeg=\217E,
	kc1=\217q,
	kc3=\217s,
	kcbt=\233Z,
	kcub1=\217D,
	kcud1=\217B,
	kcuf1=\217C,
	kcuu1=\217A,
	kdch1=\2333~,
	kend=\2334~,
	kent=\217M,
	kf1=\23311~,
	kf10=\23321~,
	kf11=\23323~,
	kf12=\23324~,
	kf13=\23325~,
	kf14=\23326~,
	kf15=\23328~,
	kf16=\23329~,
	kf17=\23331~,
	kf18=\23332~,
	kf19=\23333~,
	kf2=\23312~,
	kf20=\23334~,
	kf3=\23313~,
	kf4=\23314~,
	kf5=\23315~,
	kf6=\23317~,
	kf7=\23318~,
	kf8=\23319~,
	kf9=\23320~,
	khome=\2331~,
	kich1=\2332~,
	kmous=\233M,
	knp=\2336~,
	kpp=\2335~,
	mc0=\233i,
	mc4=\2334i,
	mc5=\2335i,
	meml=\El,
	memu=\Em,
	op=\23339;49m,
	rc=\E8,
	rev=\2337m,
	ri=\215,
	rmam=\233?7l,
	rmcup=\233?1049l,
	rmir=\2334l,
	rmkx=\233?1l\E>,
	rmso=\23327m,
	rmul=\23324m,
	rs1=\Ec,
	rs2=\E[62"p\E\sG\233m\233?7h\E>
	    \E7\233?1;3;4;6l\2334l\233r
	    \E8,
	sc=\E7,
	setab=\2334%p1%dm,
	setaf=\2333%p1%dm,
	setb=\2334
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	setf=\2333
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	sgr=\2330
		%?
			%p6
			%t;1
		%;
		%?
			%p2
			%t;4
		%;
		%?
			%p1
			%p3%|
			%t;7
		%;
		%?
			%p4
			%t;5
		%;
		%?
			%p7
			%t;8
		%;
		m
		%?
			%p9
			%t\E(0
		%e
			\E(B
		%;,
	sgr0=\2330m\E(B,
	smam=\233?7h,
	smcup=\233?1049h,
	smir=\2334h,
	smkx=\233?1h\E=,
	smso=\2337m,
	smul=\2334m,
	tbc=\2333g,
	u6=\233[%i%d;%dR,
	u7=\E[6n,
	u8=\233[?%[;0123456789]c,
	u9=\E[c,
	vpa=\233%i%p1%dd,
	use=xterm+acs,
	use=xterm+kbs,
#
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
	OTbs,
	am,
	bce,
	km,
	mir,
	msgr,
	npc,
	xenl,
	AX,
	XT,
	colors#8,
	cols#80,
	lines#24,
	pairs#64,
	acsc=``aaffggiijjkkllmmnnooppqqr
	     rssttuuvvwwxxyyzz{{||}}~~,
	bel=^G,
	civis=\E[?25l,
	clear=\E[H\E[2J,
	cnorm=\E[?12l\E[?25h,
	cr=\r,
	cub1=^H,
	cud1=\n,
	cvvis=\E[?12;25h,
	dch=\E[%p1%dP,
	dch1=\E[P,
	ech=\E[%p1%dX,
	ed=\E[J,
	el=\E[K,
	el1=\E[1K,
	enacs=\E(B\E)0,
	flash=\E[?5h$<100/>\E[?5l,
	hpa=\E[%i%p1%dG,
	ich=\E[%p1%d@,
	ind=\n,
	indn=\E[%p1%dS,
	is2=\E[!p\E[?3;4l\E[4l\E>,
	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,
	kb2=\EOE,
	kcbt=\E[Z,
	kdch1=\E[3~,
	kend=\EOF,
	kent=\EOM,
	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~,
	kf5=\E[15~,
	kf6=\E[17~,
	kf7=\E[18~,
	kf8=\E[19~,
	kf9=\E[20~,
	kich1=\E[2~,
	kmous=\E[M,
	knp=\E[6~,
	kpp=\E[5~,
	meml=\El,
	memu=\Em,
	op=\E[39;49m,
	ri=\EM,
	rin=\E[%p1%dT,
	rmacs=^O,
	rmam=\E[?7l,
	rmir=\E[4l,
	rmkx=\E[?1l\E>,
	rmso=\E[27m,
	rmul=\E[24m,
	rs1=\Ec,
	rs2=\E[!p\E[?3;4l\E[4l\E>,
	setab=\E[4%p1%dm,
	setaf=\E[3%p1%dm,
	setb=\E[4
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	setf=\E[3
		%?
			%p1%{1}%=
			%t4
		%e
			%p1%{3}%=
			%t6
		%e
			%p1%{4}%=
			%t1
		%e
			%p1%{6}%=
			%t3
		%e
			%p1%d
		%;
		m,
	sgr=\E[0
		%?
			%p6
			%t;1
		%;
		%?
			%p2
			%t;4
		%;
		%?
			%p1
			%p3%|
			%t;7
		%;
		%?
			%p4
			%t;5
		%;
		%?
			%p7
			%t;8
		%;
		m
		%?
			%p9
			%t\016
		%e
			\017
		%;,
	sgr0=\E[m\017,
	smacs=^N,
	smam=\E[?7h,
	smir=\E[4h,
	smkx=\E[?1h\E=,
	u8=\E[?1;2c,
	vpa=\E[%i%p1%dd,
	ka2=\EOx,
	kb1=\EOt,
	kb3=\EOv,
	kc2=\EOr,
	use=xterm+kbs,
	use=ansi+apparrows,
	use=ansi+csr,
	use=ansi+cup,
	use=ansi+enq,
	use=ansi+idl,
	use=ansi+inittabs,
	use=ansi+local,
	use=ansi+pp,
	use=ansi+sgrbold,
	use=xterm+alt1049,

xterm-xfree86|xterm terminal emulator (XFree86),
	use=xterm-xf86-v44,
#
# Compatible with the R6 xterm, with the following changes:
#	+ added acsc (perhaps some versions of tic assume the standard vt100
#	  alternate character set)
#	+ added u6, u7, u8, u9 strings for Daniel Weaver's tack program.
#	+ added kmous string for ncurses.
#	+ added khome/kend strings (which conflict with kfnd/kslt, see note).
xterm-r6|xterm X11R6 version,
	OTbs,
	am,
	km,
	mir,
	msgr,
	xenl,
	cols#80,
	it#8,
	lines#24,
	acsc=``aaffggiijjkkllmmnnooppqqr
	     rssttuuvvwwxxyyzz{{||}}~~,
	bel=^G,
	bold=\E[1m,
	clear=\E[H\E[2J,
	cr=\r,
	cub=\E[%p1%dD,
	cub1=^H,
	cud=\E[%p1%dB,
	cud1=\n,
	cuf=\E[%p1%dC,
	cuf1=\E[C,
	cuu=\E[%p1%dA,
	cuu1=\E[A,
	dch=\E[%p1%dP,
	dch1=\E[P,
	dl=\E[%p1%dM,
	dl1=\E[M,
	enacs=\E)0,
	ht=^I,
	hts=\EH,
	il=\E[%p1%dL,
	il1=\E[L,
	ind=\n,
	is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[
	    ?1;3;4;6l\E8,
	kcub1=\EOD,
	kcud1=\EOB,
	kcuf1=\EOC,
	kcuu1=\EOA,
	kf1=\E[11~,
	kf10=\E[21~,
	kf11=\E[23~,
	kf12=\E[24~,
	kf13=\E[25~,
	kf14=\E[26~,
	kf15=\E[28~,
	kf16=\E[29~,
	kf17=\E[31~,
	kf18=\E[32~,
	kf19=\E[33~,
	kf2=\E[12~,
	kf20=\E[34~,
	kf3=\E[13~,
	kf4=\E[14~,
	kf5=\E[15~,
	kf6=\E[17~,
	kf7=\E[18~,
	kf8=\E[19~,
	kf9=\E[20~,
	kmous=\E[M,
	meml=\El,
	memu=\Em,
	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,
	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,
	u8=\E[?1;2c,
	u9=\E[c,
	use=ansi+cpr,
	use=ansi+csr,
	use=ansi+cup,
	use=ansi+erase,
	use=xterm+kbs,
	use=xterm+decedit,
xterm-old|antique xterm version,
	use=xterm-r6,
#
# Compatible with the R5 xterm, with the following changes:
#	+ changed 'blink=@', to 'blink@' (the former meant that "@" would start
#	  a blink, the latter that it is not supported).
#	+ changed kf1 through kf4 to correspond with actual usage.  Though X
#	  supports keypad symbols for PF1 to PF4, and xterm interprets these
#	  correctly, the F1 to F4 codes are commonly (but incorrectly) used.
#	+ moved reset string from rs1 to rs2, to correlate better with termcap.
#	+ make khome consistent with other entries.
#	+ use rmul/smul, rmir/smir from termcap, but not rmcup/smcup because
#	  not everyone wants the alternate screen.
#	+ added u6, u7, u8, u9 strings for Daniel Weaver's tack program.
#	+ added kmous string for ncurses.
xterm-r5|xterm R5 version,
	OTbs,
	am,
	km,
	msgr,
	xenl,
	cols#80,
	it#8,
	lines#24,
	bel=^G,
	bold=\E[1m,
	clear=\E[H\E[2J,
	cr=\r,
	cub1=^H,
	cud1=\n,
	cup=\E[%i%p1%d;%p2%dH,
	ed=\E[J,
	el=\E[K,
	home=\E[H,
	ht=^I,
	hts=\EH,
	ind=\n,
	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~,
	rev=\E[7m,
	ri=\EM,
	rmkx=\E[?1l\E>,
	rmul=\E[m,
	rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h
	    \E[m\E[r\E[2J\E[H,
	sgr=\E[
		%?
			%p1
			%t;7
		%;
		%?
			%p2
			%t;4
		%;
		%?
			%p3
			%t;7
		%;
		%?
			%p4
			%t;5
		%;
		%?
			%p6
			%t;1
		%;
		m,
	sgr0=\E[m,
	smkx=\E[?1h\E=,
	smul=\E[4m,
	tbc=\E[3g,
	u8=\E[?1;2c,
	use=xterm+kbs,
	use=ansi+apparrows,
	use=ansi+csr,
	use=ansi+enq,
	use=ansi+idc,
	use=ansi+idl,
	use=ansi+local,
	use=ansi+sgrso,

# DEC status-line is an extension for VT220, and standard with VT320 and up.
dec+sl|DEC VTxx status line,
	eslok,
	hs,
	dsl=\E[0$~,
	fsl=\E[0$},
	tsl=\E[2$~\E[1$}\E[%i%p1%d`,
#
#
# Customization begins here.
#
# This is the only entry which you should have to customize, since "xterm"
# is widely used for a variety of incompatible terminal emulations including
# color_xterm and rxvt.
xterm|xterm-debian|X11 terminal emulator,
	use=xterm-new,
#	use=xterm-r6,

# This fragment is for people who cannot agree on what the backspace key
# should send.
xterm+kbs|fragment for backspace key,
	kbs=\177,
#	kbs=^?,
