]> ncurses.scripts.mit.edu Git - ncurses.git/commitdiff
ncurses 5.9 - patch 20120428
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Apr 2012 00:54:13 +0000 (00:54 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Apr 2012 00:54:13 +0000 (00:54 +0000)
+ fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
+ add eslok flag to dec+sl -TD
+ dec+sl applies to vt320 and up -TD
+ drop wsl width from xterm+sl -TD
+ reuse xterm+sl in putty and nsca-m -TD
+ add ansi+tabs to vt520 -TD
+ add ansi+enq to vt220-vt520 -TD
+ fix a compiler warning in example in ncurses-intro.doc (Paul Waring).
+ added paragraph in keyname manpage telling how extended capabilities
  are interpreted as key definitions.
+ modify tic's check of conflicting key definitions to include extended
  capability strings in addition to the existing check on predefined
  keys.

NEWS
dist.mk
doc/html/ncurses-intro.html
doc/ncurses-intro.doc
man/curs_inopts.3x
misc/terminfo.src
ncurses/tinfo/comp_scan.c
ncurses/trace/lib_trace.c
progs/tic.c

diff --git a/NEWS b/NEWS
index 1f94738c50f050f47c401f15a6664fac3b764195..d69e57e1b31c4a714e5f5e320694b058f050eacd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.1896 2012/04/21 20:09:09 tom Exp $
+-- $Id: NEWS,v 1.1899 2012/04/28 22:50:44 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,21 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20120428
+       + fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
+       + add eslok flag to dec+sl -TD
+       + dec+sl applies to vt320 and up -TD
+       + drop wsl width from xterm+sl -TD
+       + reuse xterm+sl in putty and nsca-m -TD
+       + add ansi+tabs to vt520 -TD
+       + add ansi+enq to vt220-vt520 -TD
+       + fix a compiler warning in example in ncurses-intro.doc (Paul Waring).
+       + added paragraph in keyname manpage telling how extended capabilities
+         are interpreted as key definitions.
+       + modify tic's check of conflicting key definitions to include extended
+         capability strings in addition to the existing check on predefined
+         keys.
+
 20120421
        + improve cleanup of temporary files in tic using atexit().
        + add msgr to vt420, similar DEC vtXXX entries -TD
 20120421
        + improve cleanup of temporary files in tic using atexit().
        + add msgr to vt420, similar DEC vtXXX entries -TD
diff --git a/dist.mk b/dist.mk
index 93e3ed7226cd7b6797f1ebe77e5a400cad0b50cb..72872a1b6b4b459900d14ba50a62dab4ee5b67c3 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.870 2012/04/21 15:29:45 tom Exp $
+# $Id: dist.mk,v 1.871 2012/04/28 15:31:11 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,7 +37,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 5
 NCURSES_MINOR = 9
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 5
 NCURSES_MINOR = 9
-NCURSES_PATCH = 20120421
+NCURSES_PATCH = 20120428
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index fc529f293e23d63d704a6a57dedfd35b303ef63a..5930f66fda6c12b49dba9198f43ca93326cf1ebd 100644 (file)
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <!--
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <!--
-  $Id: ncurses-intro.html,v 1.44 2010/12/04 16:46:22 tom Exp $
+  $Id: ncurses-intro.html,v 1.45 2012/04/28 21:39:17 Paul.Waring Exp $
   ****************************************************************************
   ****************************************************************************
-  * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -431,6 +431,7 @@ mentioned above. <P>
 Here is a sample program to motivate the discussion:
 
 <PRE>
 Here is a sample program to motivate the discussion:
 
 <PRE>
+#include &lt;stdlib.h&gt;
 #include &lt;curses.h&gt;
 #include &lt;signal.h&gt;
 
 #include &lt;curses.h&gt;
 #include &lt;signal.h&gt;
 
index 85179d1666961b41f7f6e9e540502a804d27e20d..b44800503a32e8ad6e0965ffefc0af3b5a5c37b3 100644 (file)
@@ -333,6 +333,7 @@ Using the Library
 
    Here is a sample program to motivate the discussion:
 #include <curses.h>
 
    Here is a sample program to motivate the discussion:
 #include <curses.h>
+#include <curses.h>
 #include <signal.h>
 
 static void finish(int sig);
 #include <signal.h>
 
 static void finish(int sig);
index aecb2e3714f8177c8a8d9c7514bad6c7ab9cee39..372010bc337385d1ed27fbaf7a0529c19860051e 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
 .\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc.              *
+.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.              *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inopts.3x,v 1.15 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_inopts.3x,v 1.17 2012/04/28 19:09:15 tom Exp $
 .TH curs_inopts 3X ""
 .na
 .hy 0
 .TH curs_inopts 3X ""
 .na
 .hy 0
@@ -223,6 +223,42 @@ initializes the terminal state.  BSD curses differed from this slightly; it
 left the echo bit on at initialization, but the BSD \fBraw\fR call turned it
 off as a side-effect.  For best portability, set echo or noecho explicitly
 just after initialization, even if your program remains in cooked mode.
 left the echo bit on at initialization, but the BSD \fBraw\fR call turned it
 off as a side-effect.  For best portability, set echo or noecho explicitly
 just after initialization, even if your program remains in cooked mode.
+.PP
+When \fBkeypad\fP is first enabled,
+ncurses loads the key-definitions for the current terminal description.
+If the terminal description includes extended string capabilities,
+e.g., from using the \fB\-x\fP option of @TIC@,
+then ncurses also defines keys for the capabilities whose names
+begin with "k".
+The corresponding keycodes are generated and (depending on previous
+loads of terminal descriptions) may differ from one execution of a
+program to the next.
+The generated keycodes are recognized by the \fBkeyname\fP function
+(which will then return a name beginning with "k" denoting the
+terminfo capability name rather than "K", used for curses key-names).
+On the other hand, an application can use \fBdefine_key\fP to establish
+a specific keycode for a given string.
+This makes it possible for an application to check for an extended
+capability's presence with \fItigetstr\fP,
+and reassign the keycode to match its own needs.
+.PP
+Low-level applications can use \fBtigetstr\fP to obtain the definition
+of any particular string capability.
+Higher-level applications which use the curses \fBwgetch\fP
+and similar functions to return keycodes rely upon the order in which
+the strings are loaded.
+If more than one key definition has the same string value,
+then \fBwgetch\fP can return only one keycode.
+Most curses implementations (including ncurses)
+load key definitions in the order
+defined by the array of string capability names.
+The last key to be loaded determines the keycode which will be returned.
+In ncurses, you may also have extended capabilities interpreted as
+key definitions.
+These are loaded after the predefined keys,
+and if a capability's value is the same as a previously-loaded
+key definition,
+the later definition is the one used.
 .SH NOTES
 Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
 \fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\fR,
 .SH NOTES
 Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
 \fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\fR,
@@ -233,4 +269,9 @@ they attempt to restore to normal (`cooked') mode from raw and cbreak modes
 respectively.  Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver
 control states that are hard to predict or understand; it is not recommended.
 .SH SEE ALSO
 respectively.  Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver
 control states that are hard to predict or understand; it is not recommended.
 .SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_getch\fR(3X), \fBcurs_initscr\fR(3X), \fBtermio\fR(7)
+\fBcurses\fR(3X),
+\fBcurs_getch\fR(3X),
+\fBcurs_initscr\fR(3X),
+\fBcurs_util\fR(3X),
+\fBdefine_key\fR(3X),
+\fBtermio\fR(7)
index 97af71dfd1859285b99f8268c283fe6ab6fcba78..c3b38fad3765da5e32a2ac67c2c8c724df2d87dc 100644 (file)
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
-#      $Revision: 1.437 $
-#      $Date: 2012/04/21 19:07:11 $
+#      $Revision: 1.440 $
+#      $Date: 2012/04/28 21:37:23 $
 #
 # The original header is preserved below for reference.  It is noted that there
 # is a "newer" version which differs in some cosmetic details (but actually
 #
 # The original header is preserved below for reference.  It is noted that there
 # is a "newer" version which differs in some cosmetic details (but actually
@@ -2524,6 +2524,7 @@ vt220|vt200|dec vt220,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
        smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
        smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
+       use=ansi+enq,
 vt220-w|vt200-w|DEC vt220 in wide mode,
        cols#132,
        rs3=\E[?3h, use=vt220,
 vt220-w|vt200-w|DEC vt220 in wide mode,
        cols#132,
        rs3=\E[?3h, use=vt220,
@@ -2628,7 +2629,7 @@ vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
 # From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
 # (vt320: uncommented <fsl> --esr)
 vt320|vt300|dec vt320 7 bit terminal,
 # From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
 # (vt320: uncommented <fsl> --esr)
 vt320|vt300|dec vt320 7 bit terminal,
-       am, eslok, hs, mir, msgr, xenl,
+       am, hs, mir, msgr, xenl,
        cols#80, lines#24, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
        cols#80, lines#24, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
@@ -2637,9 +2638,8 @@ vt320|vt300|dec vt320 7 bit terminal,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$},
-       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
-       il1=\E[L, ind=\ED,
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
+       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
        kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
        kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
@@ -2656,7 +2656,7 @@ vt320|vt300|dec vt320 7 bit terminal,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[1$}\E[H\E[K, use=dec+pp, use=vt220+keypad,
+       use=dec+pp, use=vt220+keypad, use=dec+sl, use=ansi+enq,
 vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
        am@,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
 vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
        am@,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
@@ -2766,7 +2766,7 @@ vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[2$~\E[1$}\E[1;%dH,
+       tsl=\E[2$~\E[1$}\E[1;%dH, use=dec+sl,
 
 # (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
 # a missing <sc> -- esr)
 
 # (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
 # a missing <sc> -- esr)
@@ -2775,15 +2775,15 @@ vt420|DEC VT420,
        am, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        am, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<10>,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J$<50>,
-       el=\E[K$<3>, el1=\E[1K, enacs=\E)0,
-       flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
+       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l,
+       clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M,
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+       cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+       cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA, cuu1=\E[A,
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+       ech=\E[%p1%dX, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K,
+       enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I,
+       hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
        il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[1;24r\E[24;1H,
        is3=\E[?67h\E[64;1"p, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, kf10=\E[29~,
        il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[1;24r\E[24;1H,
        is3=\E[?67h\E[64;1"p, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, kf10=\E[29~,
@@ -2797,7 +2797,7 @@ vt420|DEC VT420,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
        smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
        smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=ansi+pp,
+       use=ansi+pp, use=dec+sl, use=ansi+enq,
 
 # DEC VT220 and up support DECUDK (user-defined keys).  DECUDK (i.e., pfx)
 # takes two parameters, the key and the string.  Translating the key is
 
 # DEC VT220 and up support DECUDK (user-defined keys).  DECUDK (i.e., pfx)
 # takes two parameters, the key and the string.  Translating the key is
@@ -2895,35 +2895,11 @@ vt520|DEC VT520,
        rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
        rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m,
+       smso=\E[7m, smul=\E[4m, use=ansi+tabs, use=ansi+enq,
+       use=dec+sl,
 
 
-# (vt525: I added <rmam>/<smam> based on the init string;
-# removed <rmso>=\E[m, <rmul>=\E[m, added <sc> -- esr)
-# added msgr -TD
 vt525|DEC VT525,
 vt525|DEC VT525,
-       am, mir, msgr, xenl, xon,
-       cols#80, lines#24, vt#3,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
-       dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
-       if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
-       is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
-       kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
-       kslt=\E[4~,
-       pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
-       rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
-       ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
-       rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
-       sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
-       sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m,
+       use=vt520,
 
 #### VT100 emulations
 #
 
 #### VT100 emulations
 #
@@ -2987,7 +2963,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
 # the default behavior -TD
 
 putty|PuTTY terminal emulator,
 # the default behavior -TD
 
 putty|PuTTY terminal emulator,
-       am, bce, bw, ccc, hs, mir, msgr, xenl, xon, XT,
+       am, bce, bw, ccc, mir, msgr, xenl, xon, XT,
        colors#8, it#8, ncv#22, pairs#64, U8#1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
        colors#8, it#8, ncv#22, pairs#64, U8#1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
@@ -2997,11 +2973,10 @@ putty|PuTTY terminal emulator,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
        dch=\E[%p1%dP, dch1=\E[P,
        dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
        dch=\E[%p1%dP, dch1=\E[P,
        dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
-       dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX,
-       ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
-       indn=\E[%p1%dS,
+       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H,
+       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
+       ind=^J, indn=\E[%p1%dS,
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
        is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
        kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
        is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
        kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
@@ -3022,7 +2997,7 @@ putty|PuTTY terminal emulator,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
        smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
        smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq,
+       tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt102+enq, use=xterm+sl,
 vt100-putty|Reset PuTTY to pure vt100,
        rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
        use=vt100,
 vt100-putty|Reset PuTTY to pure vt100,
        rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
        use=vt100,
@@ -3801,11 +3776,9 @@ xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode,
 #    don't want to mess with icon-name when using those window managers.
 xterm+sl|access X title line and icon name,
        hs,
 #    don't want to mess with icon-name when using those window managers.
 xterm+sl|access X title line and icon name,
        hs,
-       wsl#40,
        dsl=\E]0;\007, fsl=^G, tsl=\E]0;,
 xterm+sl-twm|access X title line (pacify twm-descended window managers),
        hs,
        dsl=\E]0;\007, fsl=^G, tsl=\E]0;,
 xterm+sl-twm|access X title line (pacify twm-descended window managers),
        hs,
-       wsl#40,
        dsl=\E]2;\007, fsl=^G, tsl=\E]2;,
 
 # In contrast, this block can be used for a DEC vt320 and up.  There are two
        dsl=\E]2;\007, fsl=^G, tsl=\E]2;,
 
 # In contrast, this block can be used for a DEC vt320 and up.  There are two
@@ -3835,7 +3808,7 @@ xterm+sl-twm|access X title line (pacify twm-descended window managers),
 # can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
 #
 dec+sl|DEC VTxx status line,
 # can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
 #
 dec+sl|DEC VTxx status line,
-       hs,
+       eslok, hs,
        dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
 
 #
        dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
 
 #
@@ -3912,6 +3885,7 @@ xtermc|xterm terminal emulator (color),
 # color stuff, I also have a status line defined as the window manager
 # title bar. [I have translated it to terminfo -- ESR]
 xterm-pcolor|xterm with color used for highlights and status line,
 # color stuff, I also have a status line defined as the window manager
 # title bar. [I have translated it to terminfo -- ESR]
 xterm-pcolor|xterm with color used for highlights and status line,
+       wsl#40,
        bold=\E[1;43m, rev=\E[7;34m,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;%?%p4%t;5%;%?%p7%t;8%;m,
        smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,
        bold=\E[1;43m, rev=\E[7;34m,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;%?%p4%t;5%;%?%p7%t;8%;m,
        smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,
@@ -5242,18 +5216,18 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
 # sequences for setting the window-title.  So you must use tsl and fsl in
 # pairs, since the latter ends the string that is loaded to the window-title.
 ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
 # sequences for setting the window-title.  So you must use tsl and fsl in
 # pairs, since the latter ends the string that is loaded to the window-title.
 ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
-       am, hs, km, mir, msgr, xenl,
+       am, km, mir, msgr, xenl,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
-       flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
-       il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+       el=\E[K, el1=\E[1K, enacs=\E)0, flash=\E[?5h\E[?5l,
+       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+       if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
+       ind=\n$<150*>,
        is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
        is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
@@ -5267,8 +5241,8 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
        rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
        rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
-       smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;,
-       u8=\E[?62;1;6c, use=ansi+enq,
+       smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       u8=\E[?62;1;6c, use=xterm+sl, use=ansi+enq,
 ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
        use=ncsa-m, use=klone+color,
 ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
 ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
        use=ncsa-m, use=klone+color,
 ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
@@ -5399,6 +5373,10 @@ sun-cgsix|sun-ss5|Sun SparcStation 5 console,
 sun|sun1|sun2|Sun Microsystems Inc. workstation console,
        use=sun-il,
 
 sun|sun1|sun2|Sun Microsystems Inc. workstation console,
        use=sun-il,
 
+sun+sl|Sun Workstation window status line,
+       hs,
+       dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l,
+
 # From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
 sun-s|Sun Microsystems Workstation window with status line,
        hs,
 # From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
 sun-s|Sun Microsystems Workstation window with status line,
        hs,
@@ -17426,6 +17404,7 @@ nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-char
        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, use=nsterm+7,
 
        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, use=nsterm+7,
 
+# compare with xterm+sl-twm
 nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
        hs,
        wsl#50,
 nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
        hs,
        wsl#50,
@@ -22879,4 +22858,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #        as building-blocks -TD
 #      * add dec+sl building block, as example -TD
 #
 #        as building-blocks -TD
 #      * add dec+sl building block, as example -TD
 #
+# 2012-04-28
+#      * fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
+#      * add eslok flag to dec+sl -TD
+#      * dec+sl applies to vt320 and up -TD
+#      * drop wsl width from xterm+sl -TD
+#      * reuse xterm+sl in putty and nsca-m -TD
+#      * add ansi+tabs to vt520 -TD
+#      * add ansi+enq to vt220-vt520 -TD
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index dea8259100a13f24939e9698160095cd7a37b057..058cf9ab21b5c74794619ebbbe0dd71983756d32 100644 (file)
@@ -50,7 +50,7 @@
 #include <ctype.h>
 #include <tic.h>
 
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_scan.c,v 1.99 2012/04/01 20:37:08 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.100 2012/04/29 00:20:51 tom Exp $")
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
@@ -530,7 +530,7 @@ _nc_get_token(bool silent)
                                                   _nc_get_hash_table(FALSE))) {
                                    capability = TRUE;
                                }
                                                   _nc_get_hash_table(FALSE))) {
                                    capability = TRUE;
                                }
-                               *s = c0;
+                               *s = (char) c0;
                            }
                        }
                        if (capability) {
                            }
                        }
                        if (capability) {
index f4b7ab92a202cf4dfee36ef1052c13694ba3efdb..00431d489b9b60a9aed497fde729378d886495eb 100644 (file)
@@ -47,7 +47,7 @@
 
 #include <ctype.h>
 
 
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_trace.c,v 1.80 2012/02/22 22:26:58 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.81 2012/04/29 00:20:43 tom Exp $")
 
 NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
 
 
 NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
 
@@ -229,7 +229,7 @@ NCURSES_EXPORT(char)
 _nc_retrace_char(int code)
 {
     T((T_RETURN("%c"), code));
 _nc_retrace_char(int code)
 {
     T((T_RETURN("%c"), code));
-    return code;
+    return (char) code;
 }
 
 /* Trace 'int' return-values */
 }
 
 /* Trace 'int' return-values */
index 28e48738b300163108736e228551fd433c73ea38..d96555e9bee6a11dc34018b438d2ced1245e210a 100644 (file)
@@ -46,7 +46,7 @@
 #include <hashed_db.h>
 #include <transform.h>
 
 #include <hashed_db.h>
 #include <transform.h>
 
-MODULE_ID("$Id: tic.c,v 1.170 2012/04/21 19:59:53 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.176 2012/04/29 00:23:38 tom Exp $")
 
 #define STDIN_NAME "<stdin>"
 
 
 #define STDIN_NAME "<stdin>"
 
@@ -1790,7 +1790,7 @@ static void
 show_where(unsigned level)
 {
     if (_nc_tracing >= DEBUG_LEVEL(level)) {
 show_where(unsigned level)
 {
     if (_nc_tracing >= DEBUG_LEVEL(level)) {
-       char my_name[256];
+       char my_name[MAX_NAME_SIZE];
        _nc_get_type(my_name);
        _tracef("\"%s\", line %d, '%s'",
                _nc_get_source(),
        _nc_get_type(my_name);
        _tracef("\"%s\", line %d, '%s'",
                _nc_get_source(),
@@ -1802,6 +1802,55 @@ show_where(unsigned level)
 #define show_where(level)      /* nothing */
 #endif
 
 #define show_where(level)      /* nothing */
 #endif
 
+typedef struct {
+    int keycode;
+    const char *name;
+    const char *value;
+} NAME_VALUE;
+
+static NAME_VALUE *
+get_fkey_list(TERMTYPE *tp)
+{
+    NAME_VALUE *result = typeMalloc(NAME_VALUE, NUM_STRINGS(tp) + 1);
+    const struct tinfo_fkeys *all_fkeys = _nc_tinfo_fkeys;
+    int used = 0;
+    int j;
+
+    for (j = 0; all_fkeys[j].code; j++) {
+       char *a = tp->Strings[all_fkeys[j].offset];
+       if (VALID_STRING(a)) {
+           result[used].keycode = (int) all_fkeys[j].code;
+           result[used].name = strnames[all_fkeys[j].offset];
+           result[used].value = a;
+           ++used;
+       }
+    }
+#if NCURSES_XNAMES
+    for (j = STRCOUNT; j < NUM_STRINGS(tp); ++j) {
+       const char *name = ExtStrname(tp, j, strnames);
+       if (*name == 'k') {
+           result[used].keycode = -1;
+           result[used].name = name;
+           result[used].value = tp->Strings[j];
+           ++used;
+       }
+    }
+#endif
+    result[used].keycode = 0;
+    return result;
+}
+
+static void
+show_fkey_name(NAME_VALUE * data)
+{
+    if (data->keycode > 0) {
+       fprintf(stderr, " %s", keyname(data->keycode));
+       fprintf(stderr, " (capability \"%s\")", data->name);
+    } else {
+       fprintf(stderr, " capability \"%s\"", data->name);
+    }
+}
+
 /* other sanity-checks (things that we don't want in the normal
  * logic that reads a terminfo entry)
  */
 /* other sanity-checks (things that we don't want in the normal
  * logic that reads a terminfo entry)
  */
@@ -1810,7 +1859,6 @@ check_termtype(TERMTYPE *tp, bool literal)
 {
     bool conflict = FALSE;
     unsigned j, k;
 {
     bool conflict = FALSE;
     unsigned j, k;
-    char fkeys[STRCOUNT];
 
     /*
      * A terminal entry may contain more than one keycode assigned to
 
     /*
      * A terminal entry may contain more than one keycode assigned to
@@ -1818,41 +1866,44 @@ check_termtype(TERMTYPE *tp, bool literal)
      * return one (the last one assigned).
      */
     if (!(_nc_syntax == SYN_TERMCAP && capdump)) {
      * return one (the last one assigned).
      */
     if (!(_nc_syntax == SYN_TERMCAP && capdump)) {
-       memset(fkeys, 0, sizeof(fkeys));
-       for (j = 0; _nc_tinfo_fkeys[j].code; j++) {
-           char *a = tp->Strings[_nc_tinfo_fkeys[j].offset];
+       char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char));
+       NAME_VALUE *given = get_fkey_list(tp);
+
+       for (j = 0; given[j].keycode; ++j) {
+           const char *a = given[j].value;
            bool first = TRUE;
            bool first = TRUE;
-           if (!VALID_STRING(a))
-               continue;
-           for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) {
-               char *b = tp->Strings[_nc_tinfo_fkeys[k].offset];
-               if (!VALID_STRING(b)
-                   || fkeys[k])
+
+           for (k = j + 1; given[k].keycode; k++) {
+               const char *b = given[k].value;
+               if (check[k])
                    continue;
                if (!_nc_capcmp(a, b)) {
                    continue;
                if (!_nc_capcmp(a, b)) {
-                   fkeys[j] = 1;
-                   fkeys[k] = 1;
+                   check[j] = 1;
+                   check[k] = 1;
                    if (first) {
                        if (!conflict) {
                            _nc_warning("Conflicting key definitions (using the last)");
                            conflict = TRUE;
                        }
                    if (first) {
                        if (!conflict) {
                            _nc_warning("Conflicting key definitions (using the last)");
                            conflict = TRUE;
                        }
-                       fprintf(stderr, "... %s is the same as %s",
-                               keyname((int) _nc_tinfo_fkeys[j].code),
-                               keyname((int) _nc_tinfo_fkeys[k].code));
+                       fprintf(stderr, "...");
+                       show_fkey_name(given + j);
+                       fprintf(stderr, " is the same as");
+                       show_fkey_name(given + k);
                        first = FALSE;
                    } else {
                        first = FALSE;
                    } else {
-                       fprintf(stderr, ", %s",
-                               keyname((int) _nc_tinfo_fkeys[k].code));
+                       fprintf(stderr, ", ");
+                       show_fkey_name(given + k);
                    }
                }
            }
            if (!first)
                fprintf(stderr, "\n");
        }
                    }
                }
            }
            if (!first)
                fprintf(stderr, "\n");
        }
+       free(given);
+       free(check);
     }
 
     }
 
-    for (j = 0; j < NUM_STRINGS(tp); j++) {
+    for_each_string(j, tp) {
        char *a = tp->Strings[j];
        if (VALID_STRING(a))
            check_params(tp, ExtStrname(tp, (int) j, strnames), a);
        char *a = tp->Strings[j];
        if (VALID_STRING(a))
            check_params(tp, ExtStrname(tp, (int) j, strnames), a);