terminfo for XTERM

# $XTermId: terminfo,v 1.221 2026/08/16 09:52:23 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 ich1 that inserts a single blank.
#       If it is set, then SVr4 vi (e.g., Solaris 2.6) emits both smir/rmir
#       and ich1.  This works (because it was a direct translation from the
#       original termcap implementation), but is not optimal.
# 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+tmux2, 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+tmux2|advanced xterm features used in tmux,
        Cr=\E]112\E\\, Cs=\E]12;%p1%s\E\\, Ms=\E]52;%p1%s;%p2%s\E\\, Se=\E[\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=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 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@, ich1=\E[@, 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+tmux2, 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+tmux2,
        use=xterm+keypad, use=xterm-basic,
#
xterm-vt52|xterm emulating dec vt52,
        cols#80, it#8, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G,
        clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%'\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=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 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.
ibm+16color|IBM aixterm color definitions,
        colors#16, pairs#0x100,
        setab=\E[
                %?
                        %p1%{8}%<
                        %t
                        %p1%{40}%+
                %e
                        %p1%{92}%+
                %;
                %dm
,
        setaf=\E[
                %?
                        %p1%{8}%<
                        %t
                        %p1%{30}%+
                %e
                        %p1%{82}%+
                %;
                %dm
,
        setb=
                %p1%{8}%/%{6}%*%{4}%+\E[%d
                %p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m
,
        setf=
                %p1%{8}%/%{6}%*%{3}%+\E[%d
                %p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m
,
xterm-16color|xterm with 16 colors,
        ccc,
        initc=\E]4;
                %p1%d;rgb:
                %p2%{255}%*%{1000}%/%2.2X/
                %p3%{255}%*%{1000}%/%2.2X/
                %p4%{255}%*%{1000}%/%2.2X\E\\
,
        use=xterm+osc104, use=ibm+16color, use=xterm-new,

# 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\007,
        setab=\E[
                %?
                        %p1%{8}%<
                        %t4
                        %p1%d
                %e
                        %p1%{16}%<
                        %t10
                        %p1%{8}%-%d
                %e48;5;
                        %p1%d
                %;
                m
,
        setaf=\E[
                %?
                        %p1%{8}%<
                        %t3
                        %p1%d
                %e
                        %p1%{16}%<
                        %t9
                        %p1%{8}%-%d
                %e38;5;
                        %p1%d
                %;
                m
,
        setb@, setf@,

xterm+256color2|xterm 256-color feature,
        oc=\E]104\007,
        setab=\E[
                %?
                        %p1%{8}%<
                        %t4
                        %p1%d
                %e
                        %p1%{16}%<
                        %t10
                        %p1%{8}%-%d
                %e48:5:
                        %p1%d
                %;
                m
,
        setaf=\E[
                %?
                        %p1%{8}%<
                        %t3
                        %p1%d
                %e
                        %p1%{16}%<
                        %t9
                        %p1%{8}%-%d
                %e38:5:
                        %p1%d
                %;
                m
,
        use=xterm+256color,

xterm-256color|xterm with 256 colors,
        use=xterm+osc104, use=xterm+256color, use=xterm-new,

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

xterm-88color|xterm with 88 colors,
        use=xterm+osc104, use=xterm+88color, 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@, ich1=\233@, 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=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 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@, ich1=\E[@, ind=\n, 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, 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=ecma+index, 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=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 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, cuu=\E[%p1%dA, 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,
        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, 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=ansi+idc,
        use=ansi+local1, 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, ed=\E[J, el=\E[K, 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+cup, 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|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=^H,
#       kbs=^?,