ncurses 5.9 - patch 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.
This commit is contained in:
Thomas E. Dickey 2012-04-29 00:54:13 +00:00
parent a1ed68d706
commit beb0f0c691
9 changed files with 192 additions and 95 deletions

17
NEWS
View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written -- -- sale, use or other dealings in this Software without prior written --
-- authorization. -- -- 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; Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information. 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 20120421
+ improve cleanup of temporary files in tic using atexit(). + improve cleanup of temporary files in tic using atexit().
+ add msgr to vt420, similar DEC vtXXX entries -TD + add msgr to vt420, similar DEC vtXXX entries -TD

View File

@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written # # use or other dealings in this Software without prior written #
# authorization. # # 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. # Makefile for creating ncurses distributions.
# #
# This only needs to be used directly as a makefile by developers, but # 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. # These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5 NCURSES_MAJOR = 5
NCURSES_MINOR = 9 NCURSES_MINOR = 9
NCURSES_PATCH = 20120421 NCURSES_PATCH = 20120428
# We don't append the patch to the version, since this only applies to releases # We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View 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 * * Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the * * 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: Here is a sample program to motivate the discussion:
<PRE> <PRE>
#include &lt;stdlib.h&gt;
#include &lt;curses.h&gt; #include &lt;curses.h&gt;
#include &lt;signal.h&gt; #include &lt;signal.h&gt;

View File

@ -333,6 +333,7 @@ Using the Library
Here is a sample program to motivate the discussion: Here is a sample program to motivate the discussion:
#include <curses.h> #include <curses.h>
#include <curses.h>
#include <signal.h> #include <signal.h>
static void finish(int sig); static void finish(int sig);

View 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 * .\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the * .\" 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 "" .TH curs_inopts 3X ""
.na .na
.hy 0 .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 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 off as a side-effect. For best portability, set echo or noecho explicitly
just after initialization, even if your program remains in cooked mode. 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 .SH NOTES
Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR, Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
\fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\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 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. control states that are hard to predict or understand; it is not recommended.
.SH SEE ALSO .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)

View File

@ -6,8 +6,8 @@
# Report bugs and new terminal descriptions to # Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org # bug-ncurses@gnu.org
# #
# $Revision: 1.437 $ # $Revision: 1.440 $
# $Date: 2012/04/21 19:07:11 $ # $Date: 2012/04/28 21:37:23 $
# #
# The original header is preserved below for reference. It is noted that there # 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 # 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>, 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, 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, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
use=ansi+enq,
vt220-w|vt200-w|DEC vt220 in wide mode, vt220-w|vt200-w|DEC vt220 in wide mode,
cols#132, cols#132,
rs3=\E[?3h, use=vt220, 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 # From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
# (vt320: uncommented <fsl> --esr) # (vt320: uncommented <fsl> --esr)
vt320|vt300|dec vt320 7 bit terminal, vt320|vt300|dec vt320 7 bit terminal,
am, eslok, hs, mir, msgr, xenl, am, hs, mir, msgr, xenl,
cols#80, lines#24, wsl#80, cols#80, lines#24, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 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, 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, 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, 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$}, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
il1=\E[L, ind=\ED,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, 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, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~, 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>, 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, 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, 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, vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
am@, am@,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, 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>, 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, 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, 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 # (vt420: I removed <kf0>, it collided with <kf10>. I also restored
# a missing <sc> -- esr) # a missing <sc> -- esr)
@ -2775,15 +2775,15 @@ vt420|DEC VT420,
am, mir, msgr, xenl, xon, am, mir, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3, cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l,
clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<10>, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA, cuu1=\E[A,
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J$<50>, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
el=\E[K$<3>, el1=\E[1K, enacs=\E)0, ech=\E[%p1%dX, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K,
flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH, enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I,
ich=\E[%p1%d@, if=/usr/share/tabset/vt300, 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, 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, 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~, 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>, 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, 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, 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) # 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 # 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, 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>, 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, 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, use=vt520,
cols#80, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
cub1=^H, cud1=\E[B, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
kslt=\E[4~,
pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
smso=\E[7m, smul=\E[4m,
#### VT100 emulations #### VT100 emulations
# #
@ -2987,7 +2963,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
# the default behavior -TD # the default behavior -TD
putty|PuTTY terminal emulator, 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, colors#8, it#8, ncv#22, pairs#64, U8#1,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 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, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
dch=\E[%p1%dP, dch1=\E[P, 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%;, 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, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H,
flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, ind=^J, indn=\E[%p1%dS,
indn=\E[%p1%dS,
initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, 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, 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, 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%;, 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, sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, 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, 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, rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
use=vt100, 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. # don't want to mess with icon-name when using those window managers.
xterm+sl|access X title line and icon name, xterm+sl|access X title line and icon name,
hs, hs,
wsl#40,
dsl=\E]0;\007, fsl=^G, tsl=\E]0;, dsl=\E]0;\007, fsl=^G, tsl=\E]0;,
xterm+sl-twm|access X title line (pacify twm-descended window managers), xterm+sl-twm|access X title line (pacify twm-descended window managers),
hs, hs,
wsl#40,
dsl=\E]2;\007, fsl=^G, tsl=\E]2;, 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 # 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. # can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
# #
dec+sl|DEC VTxx status line, 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 # color stuff, I also have a status line defined as the window manager
# title bar. [I have translated it to terminfo -- ESR] # title bar. [I have translated it to terminfo -- ESR]
xterm-pcolor|xterm with color used for highlights and status line, xterm-pcolor|xterm with color used for highlights and status line,
wsl#40,
bold=\E[1;43m, rev=\E[7;34m, 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, 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, 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 # 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. # 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, 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{{||}}~~, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 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, 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, 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, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, el=\E[K, el1=\E[1K, enacs=\E)0, flash=\E[?5h\E[?5l,
flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
ich=\E[%p1%d@, if=/usr/share/tabset/vt100, if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>, ind=\n$<150*>,
is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H, 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, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, 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, 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%;, 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, 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;, smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
u8=\E[?62;1;6c, use=ansi+enq, u8=\E[?62;1;6c, use=xterm+sl, use=ansi+enq,
ncsa|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, use=ncsa-m, use=klone+color,
ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, 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, sun|sun1|sun2|Sun Microsystems Inc. workstation console,
use=sun-il, 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 # From: <john@ucbrenoir> Tue Sep 24 13:14:44 1985
sun-s|Sun Microsystems Workstation window with status line, sun-s|Sun Microsystems Workstation window with status line,
hs, 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%;, 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, 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, nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
hs, hs,
wsl#50, wsl#50,
@ -22879,4 +22858,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# as building-blocks -TD # as building-blocks -TD
# * add dec+sl building block, as example -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!

View File

@ -50,7 +50,7 @@
#include <ctype.h> #include <ctype.h>
#include <tic.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))) { _nc_get_hash_table(FALSE))) {
capability = TRUE; capability = TRUE;
} }
*s = c0; *s = (char) c0;
} }
} }
if (capability) { if (capability) {

View 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) _nc_retrace_char(int code)
{ {
T((T_RETURN("%c"), code)); T((T_RETURN("%c"), code));
return code; return (char) code;
} }
/* Trace 'int' return-values */ /* Trace 'int' return-values */

View File

@ -46,7 +46,7 @@
#include <hashed_db.h> #include <hashed_db.h>
#include <transform.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) show_where(unsigned level)
{ {
if (_nc_tracing >= DEBUG_LEVEL(level)) { if (_nc_tracing >= DEBUG_LEVEL(level)) {
char my_name[256]; char my_name[MAX_NAME_SIZE];
_nc_get_type(my_name); _nc_get_type(my_name);
_tracef("\"%s\", line %d, '%s'", _tracef("\"%s\", line %d, '%s'",
_nc_get_source(), _nc_get_source(),
@ -1802,6 +1802,55 @@ show_where(unsigned level)
#define show_where(level) /* nothing */ #define show_where(level) /* nothing */
#endif #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 /* other sanity-checks (things that we don't want in the normal
* logic that reads a terminfo entry) * logic that reads a terminfo entry)
*/ */
@ -1810,7 +1859,6 @@ check_termtype(TERMTYPE *tp, bool literal)
{ {
bool conflict = FALSE; bool conflict = FALSE;
unsigned j, k; 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). * return one (the last one assigned).
*/ */
if (!(_nc_syntax == SYN_TERMCAP && capdump)) { if (!(_nc_syntax == SYN_TERMCAP && capdump)) {
memset(fkeys, 0, sizeof(fkeys)); char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char));
for (j = 0; _nc_tinfo_fkeys[j].code; j++) { NAME_VALUE *given = get_fkey_list(tp);
char *a = tp->Strings[_nc_tinfo_fkeys[j].offset];
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; given[k].keycode; k++) {
for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) { const char *b = given[k].value;
char *b = tp->Strings[_nc_tinfo_fkeys[k].offset]; if (check[k])
if (!VALID_STRING(b)
|| fkeys[k])
continue; continue;
if (!_nc_capcmp(a, b)) { if (!_nc_capcmp(a, b)) {
fkeys[j] = 1; check[j] = 1;
fkeys[k] = 1; check[k] = 1;
if (first) { if (first) {
if (!conflict) { if (!conflict) {
_nc_warning("Conflicting key definitions (using the last)"); _nc_warning("Conflicting key definitions (using the last)");
conflict = TRUE; conflict = TRUE;
} }
fprintf(stderr, "... %s is the same as %s", fprintf(stderr, "...");
keyname((int) _nc_tinfo_fkeys[j].code), show_fkey_name(given + j);
keyname((int) _nc_tinfo_fkeys[k].code)); fprintf(stderr, " is the same as");
show_fkey_name(given + k);
first = FALSE; first = FALSE;
} else { } else {
fprintf(stderr, ", %s", fprintf(stderr, ", ");
keyname((int) _nc_tinfo_fkeys[k].code)); show_fkey_name(given + k);
} }
} }
} }
if (!first) if (!first)
fprintf(stderr, "\n"); 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]; char *a = tp->Strings[j];
if (VALID_STRING(a)) if (VALID_STRING(a))
check_params(tp, ExtStrname(tp, (int) j, strnames), a); check_params(tp, ExtStrname(tp, (int) j, strnames), a);