diff --git a/Ada95/gen/adacurses-config b/Ada95/gen/adacurses-config
new file mode 100644
index 0000000..b7e9a0e
--- /dev/null
+++ b/Ada95/gen/adacurses-config
@@ -0,0 +1,35 @@
+#! /bin/sh
+# $Id: adacurses-config.in,v 1.2 2007/04/07 21:06:50 tom Exp $
+#
+# This script will return the option to add to `gnatmake' for using
+# AdaCurses.
+#
+
+prefix="/usr/local"
+exec_prefix="${prefix}"
+libdir="${exec_prefix}/lib"
+
+VERSION="5.7.20081102"
+
+CFLAGS="-I$libdir/adacurses -L$libdir/adacurses"
+LIBS="-L$prefix/lib -lAdaCurses"
+
+case "x$1" in
+    x--version)
+        echo AdaCurses $VERSION
+        ;;
+    x--cflags)
+        echo $CFLAGS
+        ;;
+    x--libs)
+        echo $LIBS
+        ;;
+    x)
+    	# if no parameter is given, give what gnatmake needs
+        echo $CFLAGS -largs $LIBS
+        ;;
+    *)
+        echo 'Usage: adacurses-config [--version | --cflags | --libs]' >&2
+        exit 1
+        ;;
+esac
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..9b8bb97
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,42 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-c-files-under, ncurses/tty) 
+LOCAL_SRC_FILES += $(call all-c-files-under, ncurses/base) 
+LOCAL_SRC_FILES := $(filter-out ncurses/base/sigaction.c, $(LOCAL_SRC_FILES))
+LOCAL_SRC_FILES += $(call all-c-files-under, ncurses/tinfo) 
+#OCAL_SRC_FILES += $(call all-c-files-under, ncurses) 
+
+#OCAL_SRC_FILES := $(filter-out ncurses/link_test.c, $(LOCAL_SRC_FILES))
+
+
+
+LOCAL_SRC_FILES += ncurses/trace/lib_trace.c \
+		ncurses/trace/varargs.c \
+		ncurses/trace/visbuf.c \
+		ncurses/codes.c \
+		ncurses/comp_captab.c \
+		ncurses/expanded.c \
+		ncurses/fallback.c \
+		ncurses/lib_gen.c \
+		ncurses/lib_keyname.c \
+		ncurses/names.c \
+		ncurses/unctrl.c \
+
+
+LOCAL_SRC_FILES := $(sort $(LOCAL_SRC_FILES))
+		
+LOCAL_CFLAGS := -DHAVE_CONFIG_H -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=199506L -DNDEBUG 
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH) \
+		$(LOCAL_PATH)/include \
+		$(LOCAL_PATH)/ncurses \
+	#kernel/android-2.6.32/include
+
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE := libncurses
+
+#include $(BUILD_SHARED_LIBRARY)
+include $(BUILD_STATIC_LIBRARY)
+
diff --git a/Android.mk.back b/Android.mk.back
new file mode 100644
index 0000000..ae3938d
--- /dev/null
+++ b/Android.mk.back
@@ -0,0 +1,52 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-c-files-under, ncurses/tty) 
+LOCAL_SRC_FILES += $(call all-c-files-under, ncurses/base) 
+
+
+ncurses/tty/hardscroll.c \
+	ncurses/tty/hashmap.c \
+	ncurses/tty/lib_mvcur.c \
+	ncurses/tty/lib_tstp.c \
+	ncurses/tty/lib_twait.c \
+	ncurses/tty/lib_vidattr.c \
+	ncurses/tty/tty_update.c \
+
+	ncurses/tty/*.c
+
+	ncurses/base/*.c
+
+
+
+	 \
+	lib/doc.c \
+	lib/cache_mngr.c \
+	lib/addr.c \
+	lib/socket.c \
+	lib/fib_lookup/lookup.c \
+	lib/fib_lookup/request.c \
+	lib/msg.c \
+	lib/object.c \
+	lib/attr.c \
+	lib/utils.c \
+	lib/cache_mngt.c \
+	lib/handlers.c \
+	lib/genl/ctrl.c \
+	lib/genl/mngt.c \
+	lib/genl/family.c \
+	lib/genl/genl.c \
+	lib/route/rtnl.c \
+	lib/route/route_utils.c
+
+#LOCAL_CFLAGS :=
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
+	#kernel/android-2.6.32/include
+
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE := libnl
+
+include $(BUILD_SHARED_LIBRARY)
+#include $(BUILD_STATIC_LIBRARY)
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b375870
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,186 @@
+# $Id: Makefile.in,v 1.24 2005/01/29 19:30:06 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2004,2005 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+#
+# Master Makefile for ncurses library.
+
+SHELL = /bin/sh
+
+DESTDIR=
+CF_MFLAGS =  DESTDIR="$(DESTDIR)"
+
+
+
+NCURSES_MAJOR	= 5
+NCURSES_MINOR	= 7
+NCURSES_PATCH	= 20081102
+
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+
+bindir		= ${exec_prefix}/bin
+ticdir		= /usr/local/share/terminfo
+includedir	= ${prefix}/include/ncurses
+libdir		= ${exec_prefix}/lib
+mandir		= ${prefix}/man
+
+INSTALL		= /usr/bin/install -c
+INSTALL_DATA	= ${INSTALL} -m 644
+
+DIRS_TO_MAKE	= lib objects obj_g
+
+all ::	$(DIRS_TO_MAKE)
+
+$(DIRS_TO_MAKE) :
+	mkdir $@
+
+preinstall :
+	@ echo ''
+	@ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):'
+	@ echo ''
+	@ echo '     extended funcs: '`test 1 != 0 && echo yes || echo no`
+	@ echo '     xterm terminfo: 'xterm-new
+	@ echo ''
+	@ echo '      bin directory: '$(bindir)
+	@ echo '      lib directory: '$(libdir)
+	@ echo '  include directory: '$(includedir)
+	@ echo '      man directory: '$(mandir)
+	@ echo ' terminfo directory: '$(ticdir)
+	@ echo ''
+	@ test "$(includedir)" = "$(prefix)/include" || \
+		echo '** Include-directory is not in a standard location'
+	@ test ! -f $(includedir)/termcap.h || \
+		fgrep NCURSES_VERSION $(includedir)/termcap.h >/dev/null || \
+		echo '** Will overwrite non-ncurses termcap.h'
+	@ test ! -f $(includedir)/curses.h || \
+		fgrep NCURSES_VERSION $(includedir)/curses.h >/dev/null || \
+		echo '** Will overwrite non-ncurses curses.h'
+
+# Put the common rules here so that we can easily construct the list of
+# directories to visit.
+all \
+clean \
+distclean \
+mostlyclean \
+realclean \
+depend \
+sources \
+tags \
+uninstall \
+install ::
+	cd man && ${MAKE} ${CF_MFLAGS} $@
+	cd include && ${MAKE} ${CF_MFLAGS} $@
+	cd ncurses && ${MAKE} ${CF_MFLAGS} $@
+	cd progs && ${MAKE} ${CF_MFLAGS} $@
+	cd panel && ${MAKE} ${CF_MFLAGS} $@
+	cd menu && ${MAKE} ${CF_MFLAGS} $@
+	cd form && ${MAKE} ${CF_MFLAGS} $@
+	cd test && ${MAKE} ${CF_MFLAGS} $@
+	cd misc && ${MAKE} ${CF_MFLAGS} $@
+
+libs \
+install.libs \
+uninstall.libs \
+install.includes \
+uninstall.includes ::
+	cd include && ${MAKE} ${CF_MFLAGS} $@
+
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.ncurses \
+uninstall.ncurses ::
+	cd ncurses && ${MAKE} ${CF_MFLAGS} $@
+
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.progs \
+uninstall.progs ::
+	cd progs && ${MAKE} ${CF_MFLAGS} $@
+
+install.includes \
+uninstall.includes \
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.panel \
+uninstall.panel ::
+	cd panel && ${MAKE} ${CF_MFLAGS} $@
+
+install.includes \
+uninstall.includes \
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.menu \
+uninstall.menu ::
+	cd menu && ${MAKE} ${CF_MFLAGS} $@
+
+install.includes \
+uninstall.includes \
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.form \
+uninstall.form ::
+	cd form && ${MAKE} ${CF_MFLAGS} $@
+
+lint \
+libs \
+lintlib \
+install.libs \
+uninstall.libs \
+install.test \
+uninstall.test ::
+	cd test && ${MAKE} ${CF_MFLAGS} $@
+
+install.libs uninstall.libs \
+install.data uninstall.data ::
+	cd misc && ${MAKE} ${CF_MFLAGS} $@
+
+install.man \
+uninstall.man ::
+	cd man && ${MAKE} ${CF_MFLAGS} $@
+
+distclean ::
+	rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
+	rm -f headers.sh headers.sed mk_shared_lib.sh
+	rm -rf ${DIRS_TO_MAKE}
diff --git a/edit_man.sed b/edit_man.sed
new file mode 100644
index 0000000..91c7a77
--- /dev/null
+++ b/edit_man.sed
@@ -0,0 +1,426 @@
+# Do the TH lines
+s/TH \<captoinfo 1M ""/TH captoinfo 1 ""/
+s/TH \<clear 1 ""/TH clear 1 ""/
+s/TH \<curs_add_wch 3X ""/TH add_wch 3NCURSES ""/
+s/TH \<curs_add_wchstr 3X ""/TH add_wchstr 3NCURSES ""/
+s/TH \<curs_addch 3X ""/TH addch 3NCURSES ""/
+s/TH \<curs_addchstr 3X ""/TH addchstr 3NCURSES ""/
+s/TH \<curs_addstr 3X ""/TH addstr 3NCURSES ""/
+s/TH \<curs_addwstr 3X ""/TH addwstr 3NCURSES ""/
+s/TH \<curs_attr 3X ""/TH attr 3NCURSES ""/
+s/TH \<curs_beep 3X ""/TH beep 3NCURSES ""/
+s/TH \<curs_bkgd 3X ""/TH bkgd 3NCURSES ""/
+s/TH \<curs_bkgrnd 3X ""/TH bkgrnd 3NCURSES ""/
+s/TH \<curs_border 3X ""/TH border 3NCURSES ""/
+s/TH \<curs_border_set 3X ""/TH border_set 3NCURSES ""/
+s/TH \<curs_clear 3X ""/TH clear 3NCURSES ""/
+s/TH \<curs_color 3X ""/TH color 3NCURSES ""/
+s/TH \<curs_delch 3X ""/TH delch 3NCURSES ""/
+s/TH \<curs_deleteln 3X ""/TH deleteln 3NCURSES ""/
+s/TH \<curs_extend 3X ""/TH extensions 3NCURSES ""/
+s/TH \<curs_get_wch 3X ""/TH get_wch 3NCURSES ""/
+s/TH \<curs_get_wstr 3X ""/TH get_wstr 3NCURSES ""/
+s/TH \<curs_getcchar 3X ""/TH getcchar 3NCURSES ""/
+s/TH \<curs_getch 3X ""/TH getch 3NCURSES ""/
+s/TH \<curs_getstr 3X ""/TH getstr 3NCURSES ""/
+s/TH \<curs_getyx 3X ""/TH getyx 3NCURSES ""/
+s/TH \<curs_in_wch 3X ""/TH in_wch 3NCURSES ""/
+s/TH \<curs_in_wchstr 3X ""/TH in_wchstr 3NCURSES ""/
+s/TH \<curs_inch 3X ""/TH inch 3NCURSES ""/
+s/TH \<curs_inchstr 3X ""/TH inchstr 3NCURSES ""/
+s/TH \<curs_initscr 3X ""/TH initscr 3NCURSES ""/
+s/TH \<curs_inopts 3X ""/TH inopts 3NCURSES ""/
+s/TH \<curs_ins_wch 3X ""/TH ins_wch 3NCURSES ""/
+s/TH \<curs_ins_wstr 3X ""/TH ins_wstr 3NCURSES ""/
+s/TH \<curs_insch 3X ""/TH insch 3NCURSES ""/
+s/TH \<curs_insstr 3X ""/TH insstr 3NCURSES ""/
+s/TH \<curs_instr 3X ""/TH instr 3NCURSES ""/
+s/TH \<curs_inwstr 3X ""/TH inwstr 3NCURSES ""/
+s/TH \<curs_kernel 3X ""/TH kernel 3NCURSES ""/
+s/TH \<curs_legacy 3X ""/TH legacy 3NCURSES ""/
+s/TH \<curs_memleaks 3X ""/TH memleaks 3NCURSES ""/
+s/TH \<curs_mouse 3X ""/TH mouse 3NCURSES ""/
+s/TH \<curs_move 3X ""/TH move 3NCURSES ""/
+s/TH \<curs_opaque 3X ""/TH opaque 3NCURSES ""/
+s/TH \<curs_outopts 3X ""/TH outopts 3NCURSES ""/
+s/TH \<curs_overlay 3X ""/TH overlay 3NCURSES ""/
+s/TH \<curs_pad 3X ""/TH pad 3NCURSES ""/
+s/TH \<curs_print 3X ""/TH print 3NCURSES ""/
+s/TH \<curs_printw 3X ""/TH printw 3NCURSES ""/
+s/TH \<curs_refresh 3X ""/TH refresh 3NCURSES ""/
+s/TH \<curs_scanw 3X ""/TH scanw 3NCURSES ""/
+s/TH \<curs_scr_dump 3X ""/TH scr_dump 3NCURSES ""/
+s/TH \<curs_scroll 3X ""/TH scroll 3NCURSES ""/
+s/TH \<curs_slk 3X ""/TH slk 3NCURSES ""/
+s/TH \<curs_termattrs 3X ""/TH termattrs 3NCURSES ""/
+s/TH \<curs_termcap 3X ""/TH termcap 3NCURSES ""/
+s/TH \<curs_terminfo 3X ""/TH terminfo 3NCURSES ""/
+s/TH \<curs_threads 3X ""/TH threads 3NCURSES ""/
+s/TH \<curs_touch 3X ""/TH touch 3NCURSES ""/
+s/TH \<curs_trace 3X ""/TH trace 3NCURSES ""/
+s/TH \<curs_util 3X ""/TH util 3NCURSES ""/
+s/TH \<curs_window 3X ""/TH window 3NCURSES ""/
+s/TH \<curses 3X ""/TH ncurses 3NCURSES ""/
+s/TH \<default_colors 3X ""/TH default_colors 3NCURSES ""/
+s/TH \<define_key 3X ""/TH define_key 3NCURSES ""/
+s/TH \<form 3X ""/TH form 3FORM ""/
+s/TH \<form_cursor 3X ""/TH cursor 3FORM ""/
+s/TH \<form_data 3X ""/TH data 3FORM ""/
+s/TH \<form_driver 3X ""/TH driver 3FORM ""/
+s/TH \<form_field 3X ""/TH field 3FORM ""/
+s/TH \<form_field_attributes 3X ""/TH field_attributes 3FORM ""/
+s/TH \<form_field_buffer 3X ""/TH field_buffer 3FORM ""/
+s/TH \<form_field_info 3X ""/TH field_info 3FORM ""/
+s/TH \<form_field_just 3X ""/TH field_just 3FORM ""/
+s/TH \<form_field_new 3X ""/TH field_new 3FORM ""/
+s/TH \<form_field_opts 3X ""/TH field_opts 3FORM ""/
+s/TH \<form_field_userptr 3X ""/TH field_userptr 3FORM ""/
+s/TH \<form_field_validation 3X ""/TH field_validation 3FORM ""/
+s/TH \<form_fieldtype 3X ""/TH fieldtype 3FORM ""/
+s/TH \<form_hook 3X ""/TH hook 3FORM ""/
+s/TH \<form_new 3X ""/TH new 3FORM ""/
+s/TH \<form_new_page 3X ""/TH new_page 3FORM ""/
+s/TH \<form_opts 3X ""/TH opts 3FORM ""/
+s/TH \<form_page 3X ""/TH page 3FORM ""/
+s/TH \<form_post 3X ""/TH post 3FORM ""/
+s/TH \<form_requestname 3X ""/TH requestname 3FORM ""/
+s/TH \<form_userptr 3X ""/TH userptr 3FORM ""/
+s/TH \<form_win 3X ""/TH win 3FORM ""/
+s/TH \<infocmp 1M ""/TH infocmp 1 ""/
+s/TH \<infotocap 1M ""/TH infotocap 1 ""/
+s/TH \<key_defined 3X ""/TH key_defined 3NCURSES ""/
+s/TH \<keybound 3X ""/TH keybound 3NCURSES ""/
+s/TH \<keyok 3X ""/TH keyok 3NCURSES ""/
+s/TH \<legacy_coding 3X ""/TH legacy_coding 3NCURSES ""/
+s/TH \<menu 3X ""/TH menu 3MENU ""/
+s/TH \<menu_attributes 3X ""/TH attributes 3MENU ""/
+s/TH \<menu_cursor 3X ""/TH cursor 3MENU ""/
+s/TH \<menu_driver 3X ""/TH driver 3MENU ""/
+s/TH \<menu_format 3X ""/TH format 3MENU ""/
+s/TH \<menu_hook 3X ""/TH hook 3MENU ""/
+s/TH \<menu_items 3X ""/TH items 3MENU ""/
+s/TH \<menu_mark 3X ""/TH mark 3MENU ""/
+s/TH \<menu_new 3X ""/TH new 3MENU ""/
+s/TH \<menu_opts 3X ""/TH opts 3MENU ""/
+s/TH \<menu_pattern 3X ""/TH pattern 3MENU ""/
+s/TH \<menu_post 3X ""/TH post 3MENU ""/
+s/TH \<menu_requestname 3X ""/TH requestname 3MENU ""/
+s/TH \<menu_spacing 3X ""/TH spacing 3MENU ""/
+s/TH \<menu_userptr 3X ""/TH userptr 3MENU ""/
+s/TH \<menu_win 3X ""/TH win 3MENU ""/
+s/TH \<mitem_current 3X ""/TH menu_current 3MENU ""/
+s/TH \<mitem_name 3X ""/TH menu_name 3MENU ""/
+s/TH \<mitem_new 3X ""/TH menu_new 3MENU ""/
+s/TH \<mitem_opts 3X ""/TH menu_opts 3MENU ""/
+s/TH \<mitem_userptr 3X ""/TH menu_userptr 3MENU ""/
+s/TH \<mitem_value 3X ""/TH menu_value 3MENU ""/
+s/TH \<mitem_visible 3X ""/TH menu_visible 3MENU ""/
+s/TH \<ncurses 3X ""/TH ncurses 3NCURSES ""/
+s/TH \<panel 3X ""/TH panel 3CURSES ""/
+s/TH \<printf 3S ""/TH printf 3 ""/
+s/TH \<putc 3S  ""/TH putc 3 ""/
+s/TH \<resizeterm 3X ""/TH resizeterm 3NCURSES ""/
+s/TH \<scanf 3S ""/TH scanf 3 ""/
+s/TH \<system 3S ""/TH system 3 ""/
+s/TH \<term 5 ""/TH term 5 ""/
+s/TH \<term 7 ""/TH term 7 ""/
+s/TH \<terminfo 5 ""/TH terminfo 5 ""/
+s/TH \<terminfo \\\*N ""/TH terminfo 5 ""/
+s/TH \<tic 1M ""/TH tic 1 ""/
+s/TH \<toe 1M ""/TH toe 1 ""/
+s/TH \<tput 1 ""/TH tput 1 ""/
+s/TH \<tset 1 ""/TH tset 1 ""/
+s/TH \<vprintf 3S ""/TH vprintf 3 ""/
+s/TH \<wresize 3X ""/TH wresize 3NCURSES ""/
+s/TH \<tack 1M ""/TH tack 1 ""/
+s/TH \<getty 1 ""/TH getty 8 ""/
+s/TH \<scanf 3 ""/TH scanf 3 ""/
+s/TH \<ttys 5 ""/TH ttys 4 ""/
+s/TH \<termio 7 ""/TH termios 3 ""/
+s/TH \<system 3 ""/TH system 3 ""/
+s/TH \<regcomp 3X ""/TH regcomp 3 ""/
+s/TH \<regexec 3X ""/TH regexec 3 ""/
+# Do the embedded references
+s/\<fBcaptoinfo\\fR(1M)/fBcaptoinfo\\fR(1)/
+s/\<fBclear\\fR(1)/fBclear\\fR(1)/
+s/\<fBcurs_add_wch\\fR(3X)/fBadd_wch\\fR(3NCURSES)/
+s/\<fBcurs_add_wchstr\\fR(3X)/fBadd_wchstr\\fR(3NCURSES)/
+s/\<fBcurs_addch\\fR(3X)/fBaddch\\fR(3NCURSES)/
+s/\<fBcurs_addchstr\\fR(3X)/fBaddchstr\\fR(3NCURSES)/
+s/\<fBcurs_addstr\\fR(3X)/fBaddstr\\fR(3NCURSES)/
+s/\<fBcurs_addwstr\\fR(3X)/fBaddwstr\\fR(3NCURSES)/
+s/\<fBcurs_attr\\fR(3X)/fBattr\\fR(3NCURSES)/
+s/\<fBcurs_beep\\fR(3X)/fBbeep\\fR(3NCURSES)/
+s/\<fBcurs_bkgd\\fR(3X)/fBbkgd\\fR(3NCURSES)/
+s/\<fBcurs_bkgrnd\\fR(3X)/fBbkgrnd\\fR(3NCURSES)/
+s/\<fBcurs_border\\fR(3X)/fBborder\\fR(3NCURSES)/
+s/\<fBcurs_border_set\\fR(3X)/fBborder_set\\fR(3NCURSES)/
+s/\<fBcurs_clear\\fR(3X)/fBclear\\fR(3NCURSES)/
+s/\<fBcurs_color\\fR(3X)/fBcolor\\fR(3NCURSES)/
+s/\<fBcurs_delch\\fR(3X)/fBdelch\\fR(3NCURSES)/
+s/\<fBcurs_deleteln\\fR(3X)/fBdeleteln\\fR(3NCURSES)/
+s/\<fBcurs_extend\\fR(3X)/fBextensions\\fR(3NCURSES)/
+s/\<fBcurs_get_wch\\fR(3X)/fBget_wch\\fR(3NCURSES)/
+s/\<fBcurs_get_wstr\\fR(3X)/fBget_wstr\\fR(3NCURSES)/
+s/\<fBcurs_getcchar\\fR(3X)/fBgetcchar\\fR(3NCURSES)/
+s/\<fBcurs_getch\\fR(3X)/fBgetch\\fR(3NCURSES)/
+s/\<fBcurs_getstr\\fR(3X)/fBgetstr\\fR(3NCURSES)/
+s/\<fBcurs_getyx\\fR(3X)/fBgetyx\\fR(3NCURSES)/
+s/\<fBcurs_in_wch\\fR(3X)/fBin_wch\\fR(3NCURSES)/
+s/\<fBcurs_in_wchstr\\fR(3X)/fBin_wchstr\\fR(3NCURSES)/
+s/\<fBcurs_inch\\fR(3X)/fBinch\\fR(3NCURSES)/
+s/\<fBcurs_inchstr\\fR(3X)/fBinchstr\\fR(3NCURSES)/
+s/\<fBcurs_initscr\\fR(3X)/fBinitscr\\fR(3NCURSES)/
+s/\<fBcurs_inopts\\fR(3X)/fBinopts\\fR(3NCURSES)/
+s/\<fBcurs_ins_wch\\fR(3X)/fBins_wch\\fR(3NCURSES)/
+s/\<fBcurs_ins_wstr\\fR(3X)/fBins_wstr\\fR(3NCURSES)/
+s/\<fBcurs_insch\\fR(3X)/fBinsch\\fR(3NCURSES)/
+s/\<fBcurs_insstr\\fR(3X)/fBinsstr\\fR(3NCURSES)/
+s/\<fBcurs_instr\\fR(3X)/fBinstr\\fR(3NCURSES)/
+s/\<fBcurs_inwstr\\fR(3X)/fBinwstr\\fR(3NCURSES)/
+s/\<fBcurs_kernel\\fR(3X)/fBkernel\\fR(3NCURSES)/
+s/\<fBcurs_legacy\\fR(3X)/fBlegacy\\fR(3NCURSES)/
+s/\<fBcurs_memleaks\\fR(3X)/fBmemleaks\\fR(3NCURSES)/
+s/\<fBcurs_mouse\\fR(3X)/fBmouse\\fR(3NCURSES)/
+s/\<fBcurs_move\\fR(3X)/fBmove\\fR(3NCURSES)/
+s/\<fBcurs_opaque\\fR(3X)/fBopaque\\fR(3NCURSES)/
+s/\<fBcurs_outopts\\fR(3X)/fBoutopts\\fR(3NCURSES)/
+s/\<fBcurs_overlay\\fR(3X)/fBoverlay\\fR(3NCURSES)/
+s/\<fBcurs_pad\\fR(3X)/fBpad\\fR(3NCURSES)/
+s/\<fBcurs_print\\fR(3X)/fBprint\\fR(3NCURSES)/
+s/\<fBcurs_printw\\fR(3X)/fBprintw\\fR(3NCURSES)/
+s/\<fBcurs_refresh\\fR(3X)/fBrefresh\\fR(3NCURSES)/
+s/\<fBcurs_scanw\\fR(3X)/fBscanw\\fR(3NCURSES)/
+s/\<fBcurs_scr_dump\\fR(3X)/fBscr_dump\\fR(3NCURSES)/
+s/\<fBcurs_scroll\\fR(3X)/fBscroll\\fR(3NCURSES)/
+s/\<fBcurs_slk\\fR(3X)/fBslk\\fR(3NCURSES)/
+s/\<fBcurs_termattrs\\fR(3X)/fBtermattrs\\fR(3NCURSES)/
+s/\<fBcurs_termcap\\fR(3X)/fBtermcap\\fR(3NCURSES)/
+s/\<fBcurs_terminfo\\fR(3X)/fBterminfo\\fR(3NCURSES)/
+s/\<fBcurs_threads\\fR(3X)/fBthreads\\fR(3NCURSES)/
+s/\<fBcurs_touch\\fR(3X)/fBtouch\\fR(3NCURSES)/
+s/\<fBcurs_trace\\fR(3X)/fBtrace\\fR(3NCURSES)/
+s/\<fBcurs_util\\fR(3X)/fButil\\fR(3NCURSES)/
+s/\<fBcurs_window\\fR(3X)/fBwindow\\fR(3NCURSES)/
+s/\<fBcurses\\fR(3X)/fBncurses\\fR(3NCURSES)/
+s/\<fBdefault_colors\\fR(3X)/fBdefault_colors\\fR(3NCURSES)/
+s/\<fBdefine_key\\fR(3X)/fBdefine_key\\fR(3NCURSES)/
+s/\<fBform\\fR(3X)/fBform\\fR(3FORM)/
+s/\<fBform_cursor\\fR(3X)/fBcursor\\fR(3FORM)/
+s/\<fBform_data\\fR(3X)/fBdata\\fR(3FORM)/
+s/\<fBform_driver\\fR(3X)/fBdriver\\fR(3FORM)/
+s/\<fBform_field\\fR(3X)/fBfield\\fR(3FORM)/
+s/\<fBform_field_attributes\\fR(3X)/fBfield_attributes\\fR(3FORM)/
+s/\<fBform_field_buffer\\fR(3X)/fBfield_buffer\\fR(3FORM)/
+s/\<fBform_field_info\\fR(3X)/fBfield_info\\fR(3FORM)/
+s/\<fBform_field_just\\fR(3X)/fBfield_just\\fR(3FORM)/
+s/\<fBform_field_new\\fR(3X)/fBfield_new\\fR(3FORM)/
+s/\<fBform_field_opts\\fR(3X)/fBfield_opts\\fR(3FORM)/
+s/\<fBform_field_userptr\\fR(3X)/fBfield_userptr\\fR(3FORM)/
+s/\<fBform_field_validation\\fR(3X)/fBfield_validation\\fR(3FORM)/
+s/\<fBform_fieldtype\\fR(3X)/fBfieldtype\\fR(3FORM)/
+s/\<fBform_hook\\fR(3X)/fBhook\\fR(3FORM)/
+s/\<fBform_new\\fR(3X)/fBnew\\fR(3FORM)/
+s/\<fBform_new_page\\fR(3X)/fBnew_page\\fR(3FORM)/
+s/\<fBform_opts\\fR(3X)/fBopts\\fR(3FORM)/
+s/\<fBform_page\\fR(3X)/fBpage\\fR(3FORM)/
+s/\<fBform_post\\fR(3X)/fBpost\\fR(3FORM)/
+s/\<fBform_requestname\\fR(3X)/fBrequestname\\fR(3FORM)/
+s/\<fBform_userptr\\fR(3X)/fBuserptr\\fR(3FORM)/
+s/\<fBform_win\\fR(3X)/fBwin\\fR(3FORM)/
+s/\<fBinfocmp\\fR(1M)/fBinfocmp\\fR(1)/
+s/\<fBinfotocap\\fR(1M)/fBinfotocap\\fR(1)/
+s/\<fBkey_defined\\fR(3X)/fBkey_defined\\fR(3NCURSES)/
+s/\<fBkeybound\\fR(3X)/fBkeybound\\fR(3NCURSES)/
+s/\<fBkeyok\\fR(3X)/fBkeyok\\fR(3NCURSES)/
+s/\<fBlegacy_coding\\fR(3X)/fBlegacy_coding\\fR(3NCURSES)/
+s/\<fBmenu\\fR(3X)/fBmenu\\fR(3MENU)/
+s/\<fBmenu_attributes\\fR(3X)/fBattributes\\fR(3MENU)/
+s/\<fBmenu_cursor\\fR(3X)/fBcursor\\fR(3MENU)/
+s/\<fBmenu_driver\\fR(3X)/fBdriver\\fR(3MENU)/
+s/\<fBmenu_format\\fR(3X)/fBformat\\fR(3MENU)/
+s/\<fBmenu_hook\\fR(3X)/fBhook\\fR(3MENU)/
+s/\<fBmenu_items\\fR(3X)/fBitems\\fR(3MENU)/
+s/\<fBmenu_mark\\fR(3X)/fBmark\\fR(3MENU)/
+s/\<fBmenu_new\\fR(3X)/fBnew\\fR(3MENU)/
+s/\<fBmenu_opts\\fR(3X)/fBopts\\fR(3MENU)/
+s/\<fBmenu_pattern\\fR(3X)/fBpattern\\fR(3MENU)/
+s/\<fBmenu_post\\fR(3X)/fBpost\\fR(3MENU)/
+s/\<fBmenu_requestname\\fR(3X)/fBrequestname\\fR(3MENU)/
+s/\<fBmenu_spacing\\fR(3X)/fBspacing\\fR(3MENU)/
+s/\<fBmenu_userptr\\fR(3X)/fBuserptr\\fR(3MENU)/
+s/\<fBmenu_win\\fR(3X)/fBwin\\fR(3MENU)/
+s/\<fBmitem_current\\fR(3X)/fBmenu_current\\fR(3MENU)/
+s/\<fBmitem_name\\fR(3X)/fBmenu_name\\fR(3MENU)/
+s/\<fBmitem_new\\fR(3X)/fBmenu_new\\fR(3MENU)/
+s/\<fBmitem_opts\\fR(3X)/fBmenu_opts\\fR(3MENU)/
+s/\<fBmitem_userptr\\fR(3X)/fBmenu_userptr\\fR(3MENU)/
+s/\<fBmitem_value\\fR(3X)/fBmenu_value\\fR(3MENU)/
+s/\<fBmitem_visible\\fR(3X)/fBmenu_visible\\fR(3MENU)/
+s/\<fBncurses\\fR(3X)/fBncurses\\fR(3NCURSES)/
+s/\<fBpanel\\fR(3X)/fBpanel\\fR(3CURSES)/
+s/\<fBprintf\\fR(3S)/fBprintf\\fR(3)/
+s/\<fBputc\\fR(3S )/fBputc\\fR(3)/
+s/\<fBresizeterm\\fR(3X)/fBresizeterm\\fR(3NCURSES)/
+s/\<fBscanf\\fR(3S)/fBscanf\\fR(3)/
+s/\<fBsystem\\fR(3S)/fBsystem\\fR(3)/
+s/\<fBterm\\fR(5)/fBterm\\fR(5)/
+s/\<fBterm\\fR(7)/fBterm\\fR(7)/
+s/\<fBterminfo\\fR(5)/fBterminfo\\fR(5)/
+s/\<fBterminfo\\fR(\\\*N)/fBterminfo\\fR(5)/
+s/\<fBtic\\fR(1M)/fBtic\\fR(1)/
+s/\<fBtoe\\fR(1M)/fBtoe\\fR(1)/
+s/\<fBtput\\fR(1)/fBtput\\fR(1)/
+s/\<fBtset\\fR(1)/fBtset\\fR(1)/
+s/\<fBvprintf\\fR(3S)/fBvprintf\\fR(3)/
+s/\<fBwresize\\fR(3X)/fBwresize\\fR(3NCURSES)/
+s/\<fBtack\\fR(1M)/fBtack\\fR(1)/
+s/\<fBgetty\\fR(1)/fBgetty\\fR(8)/
+s/\<fBscanf\\fR(3)/fBscanf\\fR(3)/
+s/\<fBttys\\fR(5)/fBttys\\fR(4)/
+s/\<fBtermio\\fR(7)/fBtermios\\fR(3)/
+s/\<fBsystem\\fR(3)/fBsystem\\fR(3)/
+s/\<fBregcomp\\fR(3X)/fBregcomp\\fR(3)/
+s/\<fBregexec\\fR(3X)/fBregexec\\fR(3)/
+# Do the BxxxR references in the .NAME section
+s/^\\fBcaptoinfo\\f[RP] -/\\fBcaptoinfo\\fR -/
+s/^\\fBclear\\f[RP] -/\\fBclear\\fR -/
+s/^\\fBcurs_add_wch\\f[RP] -/\\fBadd_wch\\fR -/
+s/^\\fBcurs_add_wchstr\\f[RP] -/\\fBadd_wchstr\\fR -/
+s/^\\fBcurs_addch\\f[RP] -/\\fBaddch\\fR -/
+s/^\\fBcurs_addchstr\\f[RP] -/\\fBaddchstr\\fR -/
+s/^\\fBcurs_addstr\\f[RP] -/\\fBaddstr\\fR -/
+s/^\\fBcurs_addwstr\\f[RP] -/\\fBaddwstr\\fR -/
+s/^\\fBcurs_attr\\f[RP] -/\\fBattr\\fR -/
+s/^\\fBcurs_beep\\f[RP] -/\\fBbeep\\fR -/
+s/^\\fBcurs_bkgd\\f[RP] -/\\fBbkgd\\fR -/
+s/^\\fBcurs_bkgrnd\\f[RP] -/\\fBbkgrnd\\fR -/
+s/^\\fBcurs_border\\f[RP] -/\\fBborder\\fR -/
+s/^\\fBcurs_border_set\\f[RP] -/\\fBborder_set\\fR -/
+s/^\\fBcurs_clear\\f[RP] -/\\fBclear\\fR -/
+s/^\\fBcurs_color\\f[RP] -/\\fBcolor\\fR -/
+s/^\\fBcurs_delch\\f[RP] -/\\fBdelch\\fR -/
+s/^\\fBcurs_deleteln\\f[RP] -/\\fBdeleteln\\fR -/
+s/^\\fBcurs_extend\\f[RP] -/\\fBextensions\\fR -/
+s/^\\fBcurs_get_wch\\f[RP] -/\\fBget_wch\\fR -/
+s/^\\fBcurs_get_wstr\\f[RP] -/\\fBget_wstr\\fR -/
+s/^\\fBcurs_getcchar\\f[RP] -/\\fBgetcchar\\fR -/
+s/^\\fBcurs_getch\\f[RP] -/\\fBgetch\\fR -/
+s/^\\fBcurs_getstr\\f[RP] -/\\fBgetstr\\fR -/
+s/^\\fBcurs_getyx\\f[RP] -/\\fBgetyx\\fR -/
+s/^\\fBcurs_in_wch\\f[RP] -/\\fBin_wch\\fR -/
+s/^\\fBcurs_in_wchstr\\f[RP] -/\\fBin_wchstr\\fR -/
+s/^\\fBcurs_inch\\f[RP] -/\\fBinch\\fR -/
+s/^\\fBcurs_inchstr\\f[RP] -/\\fBinchstr\\fR -/
+s/^\\fBcurs_initscr\\f[RP] -/\\fBinitscr\\fR -/
+s/^\\fBcurs_inopts\\f[RP] -/\\fBinopts\\fR -/
+s/^\\fBcurs_ins_wch\\f[RP] -/\\fBins_wch\\fR -/
+s/^\\fBcurs_ins_wstr\\f[RP] -/\\fBins_wstr\\fR -/
+s/^\\fBcurs_insch\\f[RP] -/\\fBinsch\\fR -/
+s/^\\fBcurs_insstr\\f[RP] -/\\fBinsstr\\fR -/
+s/^\\fBcurs_instr\\f[RP] -/\\fBinstr\\fR -/
+s/^\\fBcurs_inwstr\\f[RP] -/\\fBinwstr\\fR -/
+s/^\\fBcurs_kernel\\f[RP] -/\\fBkernel\\fR -/
+s/^\\fBcurs_legacy\\f[RP] -/\\fBlegacy\\fR -/
+s/^\\fBcurs_memleaks\\f[RP] -/\\fBmemleaks\\fR -/
+s/^\\fBcurs_mouse\\f[RP] -/\\fBmouse\\fR -/
+s/^\\fBcurs_move\\f[RP] -/\\fBmove\\fR -/
+s/^\\fBcurs_opaque\\f[RP] -/\\fBopaque\\fR -/
+s/^\\fBcurs_outopts\\f[RP] -/\\fBoutopts\\fR -/
+s/^\\fBcurs_overlay\\f[RP] -/\\fBoverlay\\fR -/
+s/^\\fBcurs_pad\\f[RP] -/\\fBpad\\fR -/
+s/^\\fBcurs_print\\f[RP] -/\\fBprint\\fR -/
+s/^\\fBcurs_printw\\f[RP] -/\\fBprintw\\fR -/
+s/^\\fBcurs_refresh\\f[RP] -/\\fBrefresh\\fR -/
+s/^\\fBcurs_scanw\\f[RP] -/\\fBscanw\\fR -/
+s/^\\fBcurs_scr_dump\\f[RP] -/\\fBscr_dump\\fR -/
+s/^\\fBcurs_scroll\\f[RP] -/\\fBscroll\\fR -/
+s/^\\fBcurs_slk\\f[RP] -/\\fBslk\\fR -/
+s/^\\fBcurs_termattrs\\f[RP] -/\\fBtermattrs\\fR -/
+s/^\\fBcurs_termcap\\f[RP] -/\\fBtermcap\\fR -/
+s/^\\fBcurs_terminfo\\f[RP] -/\\fBterminfo\\fR -/
+s/^\\fBcurs_threads\\f[RP] -/\\fBthreads\\fR -/
+s/^\\fBcurs_touch\\f[RP] -/\\fBtouch\\fR -/
+s/^\\fBcurs_trace\\f[RP] -/\\fBtrace\\fR -/
+s/^\\fBcurs_util\\f[RP] -/\\fButil\\fR -/
+s/^\\fBcurs_window\\f[RP] -/\\fBwindow\\fR -/
+s/^\\fBcurses\\f[RP] -/\\fBncurses\\fR -/
+s/^\\fBdefault_colors\\f[RP] -/\\fBdefault_colors\\fR -/
+s/^\\fBdefine_key\\f[RP] -/\\fBdefine_key\\fR -/
+s/^\\fBform\\f[RP] -/\\fBform\\fR -/
+s/^\\fBform_cursor\\f[RP] -/\\fBcursor\\fR -/
+s/^\\fBform_data\\f[RP] -/\\fBdata\\fR -/
+s/^\\fBform_driver\\f[RP] -/\\fBdriver\\fR -/
+s/^\\fBform_field\\f[RP] -/\\fBfield\\fR -/
+s/^\\fBform_field_attributes\\f[RP] -/\\fBfield_attributes\\fR -/
+s/^\\fBform_field_buffer\\f[RP] -/\\fBfield_buffer\\fR -/
+s/^\\fBform_field_info\\f[RP] -/\\fBfield_info\\fR -/
+s/^\\fBform_field_just\\f[RP] -/\\fBfield_just\\fR -/
+s/^\\fBform_field_new\\f[RP] -/\\fBfield_new\\fR -/
+s/^\\fBform_field_opts\\f[RP] -/\\fBfield_opts\\fR -/
+s/^\\fBform_field_userptr\\f[RP] -/\\fBfield_userptr\\fR -/
+s/^\\fBform_field_validation\\f[RP] -/\\fBfield_validation\\fR -/
+s/^\\fBform_fieldtype\\f[RP] -/\\fBfieldtype\\fR -/
+s/^\\fBform_hook\\f[RP] -/\\fBhook\\fR -/
+s/^\\fBform_new\\f[RP] -/\\fBnew\\fR -/
+s/^\\fBform_new_page\\f[RP] -/\\fBnew_page\\fR -/
+s/^\\fBform_opts\\f[RP] -/\\fBopts\\fR -/
+s/^\\fBform_page\\f[RP] -/\\fBpage\\fR -/
+s/^\\fBform_post\\f[RP] -/\\fBpost\\fR -/
+s/^\\fBform_requestname\\f[RP] -/\\fBrequestname\\fR -/
+s/^\\fBform_userptr\\f[RP] -/\\fBuserptr\\fR -/
+s/^\\fBform_win\\f[RP] -/\\fBwin\\fR -/
+s/^\\fBinfocmp\\f[RP] -/\\fBinfocmp\\fR -/
+s/^\\fBinfotocap\\f[RP] -/\\fBinfotocap\\fR -/
+s/^\\fBkey_defined\\f[RP] -/\\fBkey_defined\\fR -/
+s/^\\fBkeybound\\f[RP] -/\\fBkeybound\\fR -/
+s/^\\fBkeyok\\f[RP] -/\\fBkeyok\\fR -/
+s/^\\fBlegacy_coding\\f[RP] -/\\fBlegacy_coding\\fR -/
+s/^\\fBmenu\\f[RP] -/\\fBmenu\\fR -/
+s/^\\fBmenu_attributes\\f[RP] -/\\fBattributes\\fR -/
+s/^\\fBmenu_cursor\\f[RP] -/\\fBcursor\\fR -/
+s/^\\fBmenu_driver\\f[RP] -/\\fBdriver\\fR -/
+s/^\\fBmenu_format\\f[RP] -/\\fBformat\\fR -/
+s/^\\fBmenu_hook\\f[RP] -/\\fBhook\\fR -/
+s/^\\fBmenu_items\\f[RP] -/\\fBitems\\fR -/
+s/^\\fBmenu_mark\\f[RP] -/\\fBmark\\fR -/
+s/^\\fBmenu_new\\f[RP] -/\\fBnew\\fR -/
+s/^\\fBmenu_opts\\f[RP] -/\\fBopts\\fR -/
+s/^\\fBmenu_pattern\\f[RP] -/\\fBpattern\\fR -/
+s/^\\fBmenu_post\\f[RP] -/\\fBpost\\fR -/
+s/^\\fBmenu_requestname\\f[RP] -/\\fBrequestname\\fR -/
+s/^\\fBmenu_spacing\\f[RP] -/\\fBspacing\\fR -/
+s/^\\fBmenu_userptr\\f[RP] -/\\fBuserptr\\fR -/
+s/^\\fBmenu_win\\f[RP] -/\\fBwin\\fR -/
+s/^\\fBmitem_current\\f[RP] -/\\fBmenu_current\\fR -/
+s/^\\fBmitem_name\\f[RP] -/\\fBmenu_name\\fR -/
+s/^\\fBmitem_new\\f[RP] -/\\fBmenu_new\\fR -/
+s/^\\fBmitem_opts\\f[RP] -/\\fBmenu_opts\\fR -/
+s/^\\fBmitem_userptr\\f[RP] -/\\fBmenu_userptr\\fR -/
+s/^\\fBmitem_value\\f[RP] -/\\fBmenu_value\\fR -/
+s/^\\fBmitem_visible\\f[RP] -/\\fBmenu_visible\\fR -/
+s/^\\fBncurses\\f[RP] -/\\fBncurses\\fR -/
+s/^\\fBpanel\\f[RP] -/\\fBpanel\\fR -/
+s/^\\fBprintf\\f[RP] -/\\fBprintf\\fR -/
+s/^\\fBputc\\f[RP] -/\\fBputc\\fR -/
+s/^\\fBresizeterm\\f[RP] -/\\fBresizeterm\\fR -/
+s/^\\fBscanf\\f[RP] -/\\fBscanf\\fR -/
+s/^\\fBsystem\\f[RP] -/\\fBsystem\\fR -/
+s/^\\fBterm\\f[RP] -/\\fBterm\\fR -/
+s/^\\fBterm\\f[RP] -/\\fBterm\\fR -/
+s/^\\fBterminfo\\f[RP] -/\\fBterminfo\\fR -/
+s/^\\fBterminfo\\f[RP] -/\\fBterminfo\\fR -/
+s/^\\fBtic\\f[RP] -/\\fBtic\\fR -/
+s/^\\fBtoe\\f[RP] -/\\fBtoe\\fR -/
+s/^\\fBtput\\f[RP] -/\\fBtput\\fR -/
+s/^\\fBtset\\f[RP] -/\\fBtset\\fR -/
+s/^\\fBvprintf\\f[RP] -/\\fBvprintf\\fR -/
+s/^\\fBwresize\\f[RP] -/\\fBwresize\\fR -/
+s/^\\fBtack\\f[RP] -/\\fBtack\\fR -/
+s/^\\fBgetty\\f[RP] -/\\fBgetty\\fR -/
+s/^\\fBscanf\\f[RP] -/\\fBscanf\\fR -/
+s/^\\fBttys\\f[RP] -/\\fBttys\\fR -/
+s/^\\fBtermio\\f[RP] -/\\fBtermios\\fR -/
+s/^\\fBsystem\\f[RP] -/\\fBsystem\\fR -/
+s/^\\fBregcomp\\f[RP] -/\\fBregcomp\\fR -/
+s/^\\fBregexec\\f[RP] -/\\fBregexec\\fR -/
diff --git a/form/Makefile b/form/Makefile
new file mode 100644
index 0000000..a641849
--- /dev/null
+++ b/form/Makefile
@@ -0,0 +1,768 @@
+# $Id: Makefile.in,v 1.47 2007/04/28 14:56:11 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2006,2007 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for form source code.
+#
+# This makes the following:
+#	libraries (normal/debug/profile/shared)
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+x		= 
+o		= .o
+
+MODEL		= normal
+DESTDIR		= 
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+includedir	= ${prefix}/include/ncurses
+
+LIBTOOL		= 
+LIBTOOL_CLEAN	= 
+LIBTOOL_COMPILE	= 
+LIBTOOL_LINK	= ${CC}
+LIBTOOL_INSTALL	= 
+LIBTOOL_UNINSTALL = 
+
+INSTALL		= /usr/bin/install -c
+INSTALL_LIB	= /usr/bin/install -c -m 644
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AR		= arm-eabi-ar
+AR_OPTS		= rv
+AWK		= mawk
+LD		= arm-eabi-ld
+LN_S		= ln -s
+
+CC		= agcc.pl
+CPP		= agcc.pl -E
+CFLAGS		= -O2 --param max-inline-insns-single=1200
+
+CPPFLAGS	= -I../ncurses -DHAVE_CONFIG_H -I. -I../include  -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=199506L -DNDEBUG -I${includedir}
+
+CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
+
+CFLAGS_LIBTOOL	= $(CCFLAGS)
+CFLAGS_NORMAL	= $(CCFLAGS)
+CFLAGS_DEBUG	= $(CCFLAGS) -g -DTRACE
+CFLAGS_PROFILE	= $(CCFLAGS) -pg
+CFLAGS_SHARED	= $(CCFLAGS) unknown
+
+CFLAGS_DEFAULT	= $(CFLAGS_NORMAL)
+
+LINK		= $(LIBTOOL_LINK)
+LDFLAGS		=   
+
+SHLIB_DIRS	= -L../lib
+SHLIB_LIST	= $(SHLIB_DIRS) -lncurses 
+
+MK_SHARED_LIB	= echo unknown
+
+NCURSES_MAJOR	= 5
+NCURSES_MINOR	= 7
+REL_VERSION	= 5.7
+ABI_VERSION	= 5
+
+RANLIB		= arm-eabi-ranlib
+
+LIBRARIES	=  ../lib/libform.a ../lib/libform_g.a
+
+LINT		= 
+LINT_OPTS	= 
+LINT_LIBS	= -lform -lncurses 
+
+AUTO_SRC	= \
+		../include/form.h
+
+################################################################################
+all \
+libs \
+install ::	$(AUTO_SRC) $(LIBRARIES)
+
+sources :	$(AUTO_SRC)
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) :
+	sh $(srcdir)/../mkdirs.sh $@
+
+# make copies to simplify include-paths while still keeping form's include
+# file in this directory.
+../include/form.h : $(srcdir)/form.h
+	-rm -f $@
+	cp $(srcdir)/form.h $@
+
+FORM_PRIV_H = \
+	$(srcdir)/form.priv.h \
+	$(srcdir)/form.h \
+	../include/mf_common.h \
+	../include/curses.h \
+	../include/eti.h
+
+tags:
+	ctags *.[ch]
+
+TAGS:
+	etags *.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+
+distclean :: clean
+	-rm -f Makefile
+
+realclean :: distclean
+
+../include/mf_common.h \
+../include/eti.h :
+	cd ../menu && $(MAKE) $@
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# generated by mk-0th.awk
+#   libname:    form
+#   subsets:    ticlib+termlib+ext_tinfo+base+ext_funcs
+
+.SUFFIXES: .c .cc .h .i .ii
+.c.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+.cc.ii :
+	$(CPP) $(CPPFLAGS) $< >$@
+.h.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+
+C_SRC = \
+	$(srcdir)/f_trace.c \
+	$(srcdir)/fld_arg.c \
+	$(srcdir)/fld_attr.c \
+	$(srcdir)/fld_current.c \
+	$(srcdir)/fld_def.c \
+	$(srcdir)/fld_dup.c \
+	$(srcdir)/fld_ftchoice.c \
+	$(srcdir)/fld_ftlink.c \
+	$(srcdir)/fld_info.c \
+	$(srcdir)/fld_just.c \
+	$(srcdir)/fld_link.c \
+	$(srcdir)/fld_max.c \
+	$(srcdir)/fld_move.c \
+	$(srcdir)/fld_newftyp.c \
+	$(srcdir)/fld_opts.c \
+	$(srcdir)/fld_pad.c \
+	$(srcdir)/fld_page.c \
+	$(srcdir)/fld_stat.c \
+	$(srcdir)/fld_type.c \
+	$(srcdir)/fld_user.c \
+	$(srcdir)/frm_cursor.c \
+	$(srcdir)/frm_data.c \
+	$(srcdir)/frm_def.c \
+	$(srcdir)/frm_driver.c \
+	$(srcdir)/frm_hook.c \
+	$(srcdir)/frm_opts.c \
+	$(srcdir)/frm_page.c \
+	$(srcdir)/frm_post.c \
+	$(srcdir)/frm_req_name.c \
+	$(srcdir)/frm_scale.c \
+	$(srcdir)/frm_sub.c \
+	$(srcdir)/frm_user.c \
+	$(srcdir)/frm_win.c \
+	$(srcdir)/fty_alnum.c \
+	$(srcdir)/fty_alpha.c \
+	$(srcdir)/fty_enum.c \
+	$(srcdir)/fty_int.c \
+	$(srcdir)/fty_ipv4.c \
+	$(srcdir)/fty_num.c \
+	$(srcdir)/fty_regex.c
+
+# Producing llib-lform is time-consuming, so there's no direct-dependency for
+# it in the lintlib rule.  We'll only remove in the cleanest setup.
+clean ::
+	rm -f llib-lform.*
+
+realclean ::
+	rm -f llib-lform
+
+llib-lform : $(C_SRC)
+	cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@
+
+lintlib :
+	sh $(srcdir)/../misc/makellib form $(CPPFLAGS)
+lint :
+	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          form
+#  traces:        DEBUG
+#  MODEL:         NORMAL
+#  model:         objects
+#  prefix:        lib
+#  suffix:        .a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./form.priv.h
+#  host:          arm-unknown-eabi
+
+NORMAL_OBJS = \
+	../objects/fld_arg$o \
+	../objects/fld_attr$o \
+	../objects/fld_current$o \
+	../objects/fld_def$o \
+	../objects/fld_dup$o \
+	../objects/fld_ftchoice$o \
+	../objects/fld_ftlink$o \
+	../objects/fld_info$o \
+	../objects/fld_just$o \
+	../objects/fld_link$o \
+	../objects/fld_max$o \
+	../objects/fld_move$o \
+	../objects/fld_newftyp$o \
+	../objects/fld_opts$o \
+	../objects/fld_pad$o \
+	../objects/fld_page$o \
+	../objects/fld_stat$o \
+	../objects/fld_type$o \
+	../objects/fld_user$o \
+	../objects/frm_cursor$o \
+	../objects/frm_data$o \
+	../objects/frm_def$o \
+	../objects/frm_driver$o \
+	../objects/frm_hook$o \
+	../objects/frm_opts$o \
+	../objects/frm_page$o \
+	../objects/frm_post$o \
+	../objects/frm_req_name$o \
+	../objects/frm_scale$o \
+	../objects/frm_sub$o \
+	../objects/frm_user$o \
+	../objects/frm_win$o \
+	../objects/fty_alnum$o \
+	../objects/fty_alpha$o \
+	../objects/fty_enum$o \
+	../objects/fty_int$o \
+	../objects/fty_ipv4$o \
+	../objects/fty_num$o \
+	../objects/fty_regex$o
+
+$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./form.priv.h
+
+../lib/libform.a : $(NORMAL_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.form :: $(DESTDIR)$(libdir) ../lib/libform.a
+	@echo installing ../lib/libform.a as $(DESTDIR)$(libdir)/libform.a
+	$(INSTALL_DATA) ../lib/libform.a $(DESTDIR)$(libdir)/libform.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libform.a
+
+uninstall \
+uninstall.libs \
+uninstall.form ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libform.a
+	-@rm -f $(DESTDIR)$(libdir)/libform.a
+
+clean ::
+	-rm -f ../lib/libform.a
+
+mostlyclean::
+	-rm -f $(NORMAL_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      objects
+#   MODEL:      NORMAL
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../objects/fld_arg$o :	$(srcdir)/fld_arg.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_arg.c -o ../objects/fld_arg$o
+
+../objects/fld_attr$o :	$(srcdir)/fld_attr.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_attr.c -o ../objects/fld_attr$o
+
+../objects/fld_current$o :	$(srcdir)/fld_current.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_current.c -o ../objects/fld_current$o
+
+../objects/fld_def$o :	$(srcdir)/fld_def.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_def.c -o ../objects/fld_def$o
+
+../objects/fld_dup$o :	$(srcdir)/fld_dup.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_dup.c -o ../objects/fld_dup$o
+
+../objects/fld_ftchoice$o :	$(srcdir)/fld_ftchoice.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_ftchoice.c -o ../objects/fld_ftchoice$o
+
+../objects/fld_ftlink$o :	$(srcdir)/fld_ftlink.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_ftlink.c -o ../objects/fld_ftlink$o
+
+../objects/fld_info$o :	$(srcdir)/fld_info.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_info.c -o ../objects/fld_info$o
+
+../objects/fld_just$o :	$(srcdir)/fld_just.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_just.c -o ../objects/fld_just$o
+
+../objects/fld_link$o :	$(srcdir)/fld_link.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_link.c -o ../objects/fld_link$o
+
+../objects/fld_max$o :	$(srcdir)/fld_max.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_max.c -o ../objects/fld_max$o
+
+../objects/fld_move$o :	$(srcdir)/fld_move.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_move.c -o ../objects/fld_move$o
+
+../objects/fld_newftyp$o :	$(srcdir)/fld_newftyp.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_newftyp.c -o ../objects/fld_newftyp$o
+
+../objects/fld_opts$o :	$(srcdir)/fld_opts.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_opts.c -o ../objects/fld_opts$o
+
+../objects/fld_pad$o :	$(srcdir)/fld_pad.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_pad.c -o ../objects/fld_pad$o
+
+../objects/fld_page$o :	$(srcdir)/fld_page.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_page.c -o ../objects/fld_page$o
+
+../objects/fld_stat$o :	$(srcdir)/fld_stat.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_stat.c -o ../objects/fld_stat$o
+
+../objects/fld_type$o :	$(srcdir)/fld_type.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_type.c -o ../objects/fld_type$o
+
+../objects/fld_user$o :	$(srcdir)/fld_user.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_user.c -o ../objects/fld_user$o
+
+../objects/frm_cursor$o :	$(srcdir)/frm_cursor.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_cursor.c -o ../objects/frm_cursor$o
+
+../objects/frm_data$o :	$(srcdir)/frm_data.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_data.c -o ../objects/frm_data$o
+
+../objects/frm_def$o :	$(srcdir)/frm_def.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_def.c -o ../objects/frm_def$o
+
+../objects/frm_driver$o :	$(srcdir)/frm_driver.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_driver.c -o ../objects/frm_driver$o
+
+../objects/frm_hook$o :	$(srcdir)/frm_hook.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_hook.c -o ../objects/frm_hook$o
+
+../objects/frm_opts$o :	$(srcdir)/frm_opts.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_opts.c -o ../objects/frm_opts$o
+
+../objects/frm_page$o :	$(srcdir)/frm_page.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_page.c -o ../objects/frm_page$o
+
+../objects/frm_post$o :	$(srcdir)/frm_post.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_post.c -o ../objects/frm_post$o
+
+../objects/frm_req_name$o :	$(srcdir)/frm_req_name.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_req_name.c -o ../objects/frm_req_name$o
+
+../objects/frm_scale$o :	$(srcdir)/frm_scale.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_scale.c -o ../objects/frm_scale$o
+
+../objects/frm_sub$o :	$(srcdir)/frm_sub.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_sub.c -o ../objects/frm_sub$o
+
+../objects/frm_user$o :	$(srcdir)/frm_user.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_user.c -o ../objects/frm_user$o
+
+../objects/frm_win$o :	$(srcdir)/frm_win.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_win.c -o ../objects/frm_win$o
+
+../objects/fty_alnum$o :	$(srcdir)/fty_alnum.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_alnum.c -o ../objects/fty_alnum$o
+
+../objects/fty_alpha$o :	$(srcdir)/fty_alpha.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_alpha.c -o ../objects/fty_alpha$o
+
+../objects/fty_enum$o :	$(srcdir)/fty_enum.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_enum.c -o ../objects/fty_enum$o
+
+../objects/fty_int$o :	$(srcdir)/fty_int.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_int.c -o ../objects/fty_int$o
+
+../objects/fty_ipv4$o :	$(srcdir)/fty_ipv4.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_ipv4.c -o ../objects/fty_ipv4$o
+
+../objects/fty_num$o :	$(srcdir)/fty_num.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_num.c -o ../objects/fty_num$o
+
+../objects/fty_regex$o :	$(srcdir)/fty_regex.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_regex.c -o ../objects/fty_regex$o
+
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          form
+#  traces:        DEBUG
+#  MODEL:         DEBUG
+#  model:         obj_g
+#  prefix:        lib
+#  suffix:        _g.a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./form.priv.h
+#  host:          arm-unknown-eabi
+
+DEBUG_OBJS = \
+	../obj_g/f_trace$o \
+	../obj_g/fld_arg$o \
+	../obj_g/fld_attr$o \
+	../obj_g/fld_current$o \
+	../obj_g/fld_def$o \
+	../obj_g/fld_dup$o \
+	../obj_g/fld_ftchoice$o \
+	../obj_g/fld_ftlink$o \
+	../obj_g/fld_info$o \
+	../obj_g/fld_just$o \
+	../obj_g/fld_link$o \
+	../obj_g/fld_max$o \
+	../obj_g/fld_move$o \
+	../obj_g/fld_newftyp$o \
+	../obj_g/fld_opts$o \
+	../obj_g/fld_pad$o \
+	../obj_g/fld_page$o \
+	../obj_g/fld_stat$o \
+	../obj_g/fld_type$o \
+	../obj_g/fld_user$o \
+	../obj_g/frm_cursor$o \
+	../obj_g/frm_data$o \
+	../obj_g/frm_def$o \
+	../obj_g/frm_driver$o \
+	../obj_g/frm_hook$o \
+	../obj_g/frm_opts$o \
+	../obj_g/frm_page$o \
+	../obj_g/frm_post$o \
+	../obj_g/frm_req_name$o \
+	../obj_g/frm_scale$o \
+	../obj_g/frm_sub$o \
+	../obj_g/frm_user$o \
+	../obj_g/frm_win$o \
+	../obj_g/fty_alnum$o \
+	../obj_g/fty_alpha$o \
+	../obj_g/fty_enum$o \
+	../obj_g/fty_int$o \
+	../obj_g/fty_ipv4$o \
+	../obj_g/fty_num$o \
+	../obj_g/fty_regex$o
+
+$(DEBUG_OBJS) : ../include/ncurses_cfg.h ./form.priv.h
+
+../lib/libform_g.a : $(DEBUG_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.form :: $(DESTDIR)$(libdir) ../lib/libform_g.a
+	@echo installing ../lib/libform_g.a as $(DESTDIR)$(libdir)/libform_g.a
+	$(INSTALL_DATA) ../lib/libform_g.a $(DESTDIR)$(libdir)/libform_g.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libform_g.a
+
+uninstall \
+uninstall.libs \
+uninstall.form ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libform_g.a
+	-@rm -f $(DESTDIR)$(libdir)/libform_g.a
+
+clean ::
+	-rm -f ../lib/libform_g.a
+
+mostlyclean::
+	-rm -f $(DEBUG_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      obj_g
+#   MODEL:      DEBUG
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../obj_g/f_trace$o :	$(srcdir)/f_trace.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/f_trace.c -o ../obj_g/f_trace$o
+
+../obj_g/fld_arg$o :	$(srcdir)/fld_arg.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_arg.c -o ../obj_g/fld_arg$o
+
+../obj_g/fld_attr$o :	$(srcdir)/fld_attr.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_attr.c -o ../obj_g/fld_attr$o
+
+../obj_g/fld_current$o :	$(srcdir)/fld_current.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_current.c -o ../obj_g/fld_current$o
+
+../obj_g/fld_def$o :	$(srcdir)/fld_def.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_def.c -o ../obj_g/fld_def$o
+
+../obj_g/fld_dup$o :	$(srcdir)/fld_dup.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_dup.c -o ../obj_g/fld_dup$o
+
+../obj_g/fld_ftchoice$o :	$(srcdir)/fld_ftchoice.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_ftchoice.c -o ../obj_g/fld_ftchoice$o
+
+../obj_g/fld_ftlink$o :	$(srcdir)/fld_ftlink.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_ftlink.c -o ../obj_g/fld_ftlink$o
+
+../obj_g/fld_info$o :	$(srcdir)/fld_info.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_info.c -o ../obj_g/fld_info$o
+
+../obj_g/fld_just$o :	$(srcdir)/fld_just.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_just.c -o ../obj_g/fld_just$o
+
+../obj_g/fld_link$o :	$(srcdir)/fld_link.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_link.c -o ../obj_g/fld_link$o
+
+../obj_g/fld_max$o :	$(srcdir)/fld_max.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_max.c -o ../obj_g/fld_max$o
+
+../obj_g/fld_move$o :	$(srcdir)/fld_move.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_move.c -o ../obj_g/fld_move$o
+
+../obj_g/fld_newftyp$o :	$(srcdir)/fld_newftyp.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_newftyp.c -o ../obj_g/fld_newftyp$o
+
+../obj_g/fld_opts$o :	$(srcdir)/fld_opts.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_opts.c -o ../obj_g/fld_opts$o
+
+../obj_g/fld_pad$o :	$(srcdir)/fld_pad.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_pad.c -o ../obj_g/fld_pad$o
+
+../obj_g/fld_page$o :	$(srcdir)/fld_page.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_page.c -o ../obj_g/fld_page$o
+
+../obj_g/fld_stat$o :	$(srcdir)/fld_stat.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_stat.c -o ../obj_g/fld_stat$o
+
+../obj_g/fld_type$o :	$(srcdir)/fld_type.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_type.c -o ../obj_g/fld_type$o
+
+../obj_g/fld_user$o :	$(srcdir)/fld_user.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fld_user.c -o ../obj_g/fld_user$o
+
+../obj_g/frm_cursor$o :	$(srcdir)/frm_cursor.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_cursor.c -o ../obj_g/frm_cursor$o
+
+../obj_g/frm_data$o :	$(srcdir)/frm_data.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_data.c -o ../obj_g/frm_data$o
+
+../obj_g/frm_def$o :	$(srcdir)/frm_def.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_def.c -o ../obj_g/frm_def$o
+
+../obj_g/frm_driver$o :	$(srcdir)/frm_driver.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_driver.c -o ../obj_g/frm_driver$o
+
+../obj_g/frm_hook$o :	$(srcdir)/frm_hook.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_hook.c -o ../obj_g/frm_hook$o
+
+../obj_g/frm_opts$o :	$(srcdir)/frm_opts.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_opts.c -o ../obj_g/frm_opts$o
+
+../obj_g/frm_page$o :	$(srcdir)/frm_page.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_page.c -o ../obj_g/frm_page$o
+
+../obj_g/frm_post$o :	$(srcdir)/frm_post.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_post.c -o ../obj_g/frm_post$o
+
+../obj_g/frm_req_name$o :	$(srcdir)/frm_req_name.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_req_name.c -o ../obj_g/frm_req_name$o
+
+../obj_g/frm_scale$o :	$(srcdir)/frm_scale.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_scale.c -o ../obj_g/frm_scale$o
+
+../obj_g/frm_sub$o :	$(srcdir)/frm_sub.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_sub.c -o ../obj_g/frm_sub$o
+
+../obj_g/frm_user$o :	$(srcdir)/frm_user.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_user.c -o ../obj_g/frm_user$o
+
+../obj_g/frm_win$o :	$(srcdir)/frm_win.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/frm_win.c -o ../obj_g/frm_win$o
+
+../obj_g/fty_alnum$o :	$(srcdir)/fty_alnum.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_alnum.c -o ../obj_g/fty_alnum$o
+
+../obj_g/fty_alpha$o :	$(srcdir)/fty_alpha.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_alpha.c -o ../obj_g/fty_alpha$o
+
+../obj_g/fty_enum$o :	$(srcdir)/fty_enum.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_enum.c -o ../obj_g/fty_enum$o
+
+../obj_g/fty_int$o :	$(srcdir)/fty_int.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_int.c -o ../obj_g/fty_int$o
+
+../obj_g/fty_ipv4$o :	$(srcdir)/fty_ipv4.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_ipv4.c -o ../obj_g/fty_ipv4$o
+
+../obj_g/fty_num$o :	$(srcdir)/fty_num.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_num.c -o ../obj_g/fty_num$o
+
+../obj_g/fty_regex$o :	$(srcdir)/fty_regex.c \
+			$(FORM_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../form/fty_regex.c -o ../obj_g/fty_regex$o
+
+
+# generated by mk-hdr.awk
+#  subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#  compat:     yes
+
+${DESTDIR}${includedir} :
+	sh ${srcdir}/../mkdirs.sh $@
+
+install \
+install.libs \
+install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \
+		$(srcdir)/form.h
+	@ (cd ${DESTDIR}${includedir} && rm -f form.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/form.h
+
+uninstall \
+uninstall.libs \
+uninstall.includes ::
+	-@ (cd ${DESTDIR}${includedir} && rm -f form.h)
+depend : ${AUTO_SRC}
+	makedepend -- ${CPPFLAGS} -- ${C_SRC}
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/headers.sh b/headers.sh
new file mode 100755
index 0000000..a422cbc
--- /dev/null
+++ b/headers.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+# This shell script is generated by the 'configure' script.  It is invoked in a
+# subdirectory of the build tree.  It generates a sed-script in the parent
+# directory that is used to adjust includes for header files that reside in a
+# subdirectory of /usr/include, etc.
+PRG=""
+while test $# != 3
+do
+PRG="$PRG $1"; shift
+done
+DST=$1
+REF=$2
+SRC=$3
+TMPSRC=${TMPDIR-/tmp}/`basename $SRC`$$
+TMPSED=${TMPDIR-/tmp}/headers.sed$$
+echo installing $SRC in $DST
+case $DST in
+/*/include/*)
+	END=`basename $DST`
+	for i in `cat $REF/../*/headers |fgrep -v "#"`
+	do
+		NAME=`basename $i`
+		echo "s/<$NAME>/<$END\/$NAME>/" >> $TMPSED
+	done
+	;;
+*)
+	echo "" >> $TMPSED
+	;;
+esac
+rm -f $TMPSRC
+sed -f $TMPSED $SRC > $TMPSRC
+NAME=`basename $SRC`
+# Just in case someone gzip'd manpages, remove the conflicting copy.
+test -f $DST/$NAME.gz && rm -f $DST/$NAME.gz
+
+eval $PRG $TMPSRC $DST/$NAME
+rm -f $TMPSRC $TMPSED
diff --git a/include/MKterm.h.awk b/include/MKterm.h.awk
new file mode 100644
index 0000000..238448c
--- /dev/null
+++ b/include/MKterm.h.awk
@@ -0,0 +1,320 @@
+# vile:awkmode
+BEGIN		{
+		    print  "/****************************************************************************"
+		    print  " * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *"
+		    print  " *                                                                          *"
+		    print  " * Permission is hereby granted, free of charge, to any person obtaining a  *"
+		    print  " * copy of this software and associated documentation files (the            *"
+		    print  " * \"Software\"), to deal in the Software without restriction, including      *"
+		    print  " * without limitation the rights to use, copy, modify, merge, publish,      *"
+		    print  " * distribute, distribute with modifications, sublicense, and/or sell       *"
+		    print  " * copies of the Software, and to permit persons to whom the Software is    *"
+		    print  " * furnished to do so, subject to the following conditions:                 *"
+		    print  " *                                                                          *"
+		    print  " * The above copyright notice and this permission notice shall be included  *"
+		    print  " * in all copies or substantial portions of the Software.                   *"
+		    print  " *                                                                          *"
+		    print  " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *"
+		    print  " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *"
+		    print  " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *"
+		    print  " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *"
+		    print  " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *"
+		    print  " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *"
+		    print  " * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *"
+		    print  " *                                                                          *"
+		    print  " * Except as contained in this notice, the name(s) of the above copyright   *"
+		    print  " * holders shall not be used in advertising or otherwise to promote the     *"
+		    print  " * sale, use or other dealings in this Software without prior written       *"
+		    print  " * authorization.                                                           *"
+		    print  " ****************************************************************************/"
+		    print  ""
+		    print  "/****************************************************************************/"
+		    print  "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995                */"
+		    print  "/*    and: Eric S. Raymond <esr@snark.thyrsus.com>                          */"
+		    print  "/*    and: Thomas E. Dickey                        1995-on                  */"
+		    print  "/****************************************************************************/"
+		    print  ""
+		    print  "/* $Id: MKterm.h.awk.in,v 1.50 2008/05/24 23:13:59 tom Exp $ */"
+		    print  ""
+		    print  "/*"
+		    print  "**	term.h -- Definition of struct term"
+		    print  "*/"
+		    print  ""
+		    print  "#ifndef NCURSES_TERM_H_incl"
+		    print  "#define NCURSES_TERM_H_incl 1"
+		    print  ""
+		    print  "#undef  NCURSES_VERSION"
+		    print  "#define NCURSES_VERSION \"5.7\""
+		    print  ""
+		    print  "#include <ncurses_dll.h>"
+		    print  ""
+		    print  "#ifdef __cplusplus"
+		    print  "extern \"C\" {"
+		    print  "#endif"
+		    print  ""
+		    print  "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
+		    print  " * definition (based on the system for which this was configured)."
+		    print  " */"
+		    print  ""
+		    print  "#undef  NCURSES_CONST"
+		    print  "#define NCURSES_CONST /*nothing*/"
+		    print  ""
+		    print  "#undef  NCURSES_SBOOL"
+		    print  "#define NCURSES_SBOOL char"
+		    print  ""
+		    print  "#undef  NCURSES_XNAMES"
+		    print  "#define NCURSES_XNAMES 1"
+		    print  ""
+		    print  "/* We will use these symbols to hide differences between"
+		    print  " * termios/termio/sgttyb interfaces."
+		    print  " */"
+		    print  "#undef  TTY"
+		    print  "#undef  SET_TTY"
+		    print  "#undef  GET_TTY"
+		    print  ""
+		    print  "/* Assume POSIX termio if we have the header and function */"
+		    print  "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
+		    print  "#if 1 && 1"
+		    print  ""
+		    print  "#undef  TERMIOS"
+		    print  "#define TERMIOS 1"
+		    print  ""
+		    print  "#include <termios.h>"
+		    print  "#define TTY struct termios"
+		    print  ""
+		    print  "#else /* !HAVE_TERMIOS_H */"
+		    print  ""
+		    print  "/* #if HAVE_TERMIO_H */"
+		    print  "#if 0"
+		    print  ""
+		    print  "#undef  TERMIOS"
+		    print  "#define TERMIOS 1"
+		    print  ""
+		    print  "#include <termio.h>"
+		    print  "#define TTY struct termio"
+		    print  ""
+		    print  "/* Add definitions to make termio look like termios."
+		    print  " * But ifdef it, since there are some implementations"
+		    print  " * that try to do this for us in a fake <termio.h>."
+		    print  " */"
+		    print  "#ifndef TCSANOW"
+		    print  "#define TCSANOW TCSETA"
+		    print  "#endif"
+		    print  "#ifndef TCSADRAIN"
+		    print  "#define TCSADRAIN TCSETAW"
+		    print  "#endif"
+		    print  "#ifndef TCSAFLUSH"
+		    print  "#define TCSAFLUSH TCSETAF"
+		    print  "#endif"
+		    print  "#ifndef tcsetattr"
+		    print  "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)"
+		    print  "#endif"
+		    print  "#ifndef tcgetattr"
+		    print  "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)"
+		    print  "#endif"
+		    print  "#ifndef cfgetospeed"
+		    print  "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)"
+		    print  "#endif"
+		    print  "#ifndef TCIFLUSH "
+		    print  "#define TCIFLUSH 0"
+		    print  "#endif"
+		    print  "#ifndef TCOFLUSH "
+		    print  "#define TCOFLUSH 1"
+		    print  "#endif"
+		    print  "#ifndef TCIOFLUSH "
+		    print  "#define TCIOFLUSH 2"
+		    print  "#endif"
+		    print  "#ifndef tcflush"
+		    print  "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)"
+		    print  "#endif"
+		    print  ""
+		    print  "#else /* !HAVE_TERMIO_H */"
+		    print  ""
+		    print  "#undef TERMIOS"
+		    print  "#include <sgtty.h>"
+		    print  "#include <sys/ioctl.h>"
+		    print  "#define TTY struct sgttyb"
+		    print  ""
+		    print  "#endif /* HAVE_TERMIO_H */"
+		    print  ""
+		    print  "#endif /* HAVE_TERMIOS_H */"
+		    print  ""
+		    print  "#ifdef TERMIOS"
+		    print  "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
+		    print  "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
+		    print  "#else"
+		    print  "#define GET_TTY(fd, buf) gtty(fd, buf)"
+		    print  "#define SET_TTY(fd, buf) stty(fd, buf)"
+		    print  "#endif"
+		    print  ""
+		    print  "#define NAMESIZE 256"
+		    print  ""
+		    print  "#define CUR cur_term->type."
+		    print  ""
+		}
+
+$2 == "%%-STOP-HERE-%%"	{
+			print  ""
+			printf "#define BOOLWRITE %d\n", BoolCount
+			printf "#define NUMWRITE  %d\n", NumberCount
+			printf "#define STRWRITE  %d\n", StringCount
+			print  ""
+			print  "/* older synonyms for some capabilities */"
+			print  "#define beehive_glitch	no_esc_ctlc"
+			print  "#define teleray_glitch	dest_tabs_magic_smso"
+			print  "#define micro_char_size micro_col_size"
+			print  ""
+			print  "#ifdef __INTERNAL_CAPS_VISIBLE"
+		}
+
+/^#/		{next;}
+
+$1 == "acs_chars"	{acsindex = StringCount}
+
+$3 == "bool"	{
+		    printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
+		}
+
+$3 == "num"	{
+		    printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++
+		}
+
+$3 == "str"	{
+		    printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++
+		}
+
+END		{
+			print  "#endif /* __INTERNAL_CAPS_VISIBLE */"
+			print  ""
+			print  ""
+			print  "/*"
+			print  " * Predefined terminfo array sizes"
+			print  " */"
+			printf "#define BOOLCOUNT %d\n", BoolCount
+			printf "#define NUMCOUNT  %d\n", NumberCount
+			printf "#define STRCOUNT  %d\n", StringCount
+			print  ""
+			print  "/* used by code for comparing entries */"
+			print  "#define acs_chars_index	", acsindex
+			print  ""
+			print  "typedef struct termtype {	/* in-core form of terminfo data */"
+			print  "    char  *term_names;		/* str_table offset of term names */"
+			print  "    char  *str_table;		/* pointer to string table */"
+			print  "    NCURSES_SBOOL  *Booleans;	/* array of boolean values */"
+			print  "    short *Numbers;		/* array of integer values */"
+			print  "    char  **Strings;		/* array of string offsets */"
+			print  ""
+			print  "#if NCURSES_XNAMES"
+			print  "    char  *ext_str_table;	/* pointer to extended string table */"
+			print  "    char  **ext_Names;		/* corresponding names */"
+			print  ""
+			print  "    unsigned short num_Booleans;/* count total Booleans */"
+			print  "    unsigned short num_Numbers;	/* count total Numbers */"
+			print  "    unsigned short num_Strings;	/* count total Strings */"
+			print  ""
+			print  "    unsigned short ext_Booleans;/* count extensions to Booleans */"
+			print  "    unsigned short ext_Numbers;	/* count extensions to Numbers */"
+			print  "    unsigned short ext_Strings;	/* count extensions to Strings */"
+			print  "#endif /* NCURSES_XNAMES */"
+			print  ""
+			print  "} TERMTYPE;"
+			print  ""
+			print  "typedef struct term {		/* describe an actual terminal */"
+			print  "    TERMTYPE	type;		/* terminal type description */"
+			print  "    short	Filedes;	/* file description being written to */"
+			print  "    TTY		Ottyb,		/* original state of the terminal */"
+			print  "		Nttyb;		/* current state of the terminal */"
+			print  "    int		_baudrate;	/* used to compute padding */"
+			print  "    char *      _termname;      /* used for termname() */"
+			print  "} TERMINAL;"
+			print  ""
+			print  "#if 0 || 0"
+			print  "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);"
+			print  "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);"
+			print  ""
+			print  "#define cur_term   NCURSES_PUBLIC_VAR(cur_term())"
+			print  "#define boolnames  NCURSES_PUBLIC_VAR(boolnames())"
+			print  "#define boolcodes  NCURSES_PUBLIC_VAR(boolcodes())"
+			print  "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
+			print  "#define numnames   NCURSES_PUBLIC_VAR(numnames())"
+			print  "#define numcodes   NCURSES_PUBLIC_VAR(numcodes())"
+			print  "#define numfnames  NCURSES_PUBLIC_VAR(numfnames())"
+			print  "#define strnames   NCURSES_PUBLIC_VAR(strnames())"
+			print  "#define strcodes   NCURSES_PUBLIC_VAR(strcodes())"
+			print  "#define strfnames  NCURSES_PUBLIC_VAR(strfnames())"
+			print  ""
+			print  "#else"
+			print  ""
+			print  "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
+			print  ""
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
+			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
+			print  ""
+			print  "#endif"
+			print  ""
+			print  "/* internals */"
+			print  "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);"
+			print  "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);"
+			print  "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
+			print  "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);"
+			print  "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);"
+			print  "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
+			print  "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
+			print  "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
+			print  ""
+			print  "/* entry points */"
+			print  "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);"
+			print  "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);"
+			print  ""
+			print  "/* miscellaneous entry points */"
+			print  "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);"
+			print  "extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);"
+			print  ""
+			print  "/* terminfo entry points, also declared in curses.h */"
+			print  "#if !defined(__NCURSES_H)"
+			print  "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
+			print  "extern NCURSES_EXPORT_VAR(char) ttytype[];"
+			print  "extern NCURSES_EXPORT(int) putp (const char *);"
+			print  "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
+			print  "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
+			print  ""
+			print  "#if 1 /* NCURSES_TPARM_VARARGS */"
+			print  "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);	/* special */"
+			print  "#else"
+			print  "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long);	/* special */"
+			print  "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...);	/* special */"
+			print  "#endif"
+			print  ""
+			print  "#endif /* __NCURSES_H */"
+			print  ""
+			print  "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
+			print  "#if !defined(NCURSES_TERMCAP_H_incl)"
+			print  "extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);"
+			print  "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);"
+			print  "extern NCURSES_EXPORT(int) tgetent (char *, const char *);"
+			print  "extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);"
+			print  "extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);"
+			print  "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));"
+			print  "#endif /* NCURSES_TERMCAP_H_incl */"
+			print  ""
+			print  "#ifdef __cplusplus"
+			print  "}"
+			print  "#endif"
+			print  ""
+			print  "#endif /* NCURSES_TERM_H_incl */"
+		}
diff --git a/include/Makefile b/include/Makefile
new file mode 100644
index 0000000..75bd622
--- /dev/null
+++ b/include/Makefile
@@ -0,0 +1,167 @@
+# $Id: Makefile.in,v 1.35 2001/12/08 18:50:06 tom Exp $
+##############################################################################
+# Copyright (c) 1998,2000,2001 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-2001
+#
+# Makefile for ncurses source code.
+#
+# This makes/installs ncurses include-files
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+DESTDIR		= 
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+includedir	= ${prefix}/include/ncurses
+
+INSTALL		= /usr/bin/install -c
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AWK		= mawk
+LN_S		= ln -s
+
+VERSION		= 5.7
+
+# The "Caps" file specifies the terminfo database format, as well as the list
+# of function keys.
+TERMINFO_CAPS	= $(srcdir)/Caps
+
+# These files are generated by the configure script
+CONFIG_SRC = \
+	MKterm.h.awk \
+	curses.head \
+	termcap.h \
+	unctrl.h
+
+# These files are generated by this makefile
+AUTO_SRC = \
+	curses.h \
+	hashsize.h \
+	ncurses_def.h \
+	parametrized.h \
+	term.h
+
+################################################################################
+all \
+libs \
+depend \
+sources \
+install ::	$(AUTO_SRC)
+
+curses.h : $(TERMINFO_CAPS) \
+		curses.head \
+		$(srcdir)/curses.tail \
+		$(srcdir)/MKkey_defs.sh
+	cat curses.head >$@
+	AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@
+	sh -c 'if test "chtype" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
+	cat $(srcdir)/curses.tail >>$@
+
+term.h: $(TERMINFO_CAPS) MKterm.h.awk
+	$(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@
+	sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
+
+hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh
+	sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@
+
+ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh
+	AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
+
+parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh
+	AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@
+
+tags:
+	ctags *.[ch]
+
+TAGS:
+	etags *.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+
+distclean :: clean
+	-rm -f Makefile $(CONFIG_SRC)
+
+realclean :: distclean
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# generated by mk-hdr.awk
+#  subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#  compat:     yes
+
+${DESTDIR}${includedir} :
+	sh ${srcdir}/../mkdirs.sh $@
+
+install \
+install.libs \
+install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \
+		term.h \
+		curses.h \
+		unctrl.h \
+		termcap.h \
+		$(srcdir)/ncurses_dll.h \
+		$(srcdir)/tic.h \
+		$(srcdir)/term_entry.h \
+		$(srcdir)/nc_tparm.h
+	@ (cd ${DESTDIR}${includedir} && rm -f term.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} term.h
+	@ (cd ${DESTDIR}${includedir} && rm -f curses.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} curses.h
+	@ (cd ${DESTDIR}${includedir} && rm -f ncurses.h && ${LN_S} curses.h ncurses.h)
+	@ (cd ${DESTDIR}${includedir} && rm -f unctrl.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} unctrl.h
+	@ (cd ${DESTDIR}${includedir} && rm -f termcap.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} termcap.h
+	@ (cd ${DESTDIR}${includedir} && rm -f ncurses_dll.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/ncurses_dll.h
+	@ (cd ${DESTDIR}${includedir} && rm -f tic.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/tic.h
+	@ (cd ${DESTDIR}${includedir} && rm -f term_entry.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/term_entry.h
+	@ (cd ${DESTDIR}${includedir} && rm -f nc_tparm.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/nc_tparm.h
+
+uninstall \
+uninstall.libs \
+uninstall.includes ::
+	-@ (cd ${DESTDIR}${includedir} && rm -f term.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f curses.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f ncurses.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f unctrl.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f termcap.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f ncurses_dll.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f tic.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f term_entry.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f nc_tparm.h)
diff --git a/include/curses.h b/include/curses.h
new file mode 100644
index 0000000..19f2358
--- /dev/null
+++ b/include/curses.h
@@ -0,0 +1,1505 @@
+/****************************************************************************
+ * Copyright (c) 1998-2007,2008 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ *     and: Thomas E. Dickey                        1996-on                 *
+ ****************************************************************************/
+
+/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */
+
+#ifndef __NCURSES_H
+#define __NCURSES_H
+
+#define CURSES 1
+#define CURSES_H 1
+
+/* This should be defined for the enhanced functionality to be visible.
+ * However, some of the wide-character (enhanced) functionality is missing.
+ * So we do not define it (yet).
+#define _XOPEN_CURSES 1
+ */
+
+/* These are defined only in curses.h, and are used for conditional compiles */
+#define NCURSES_VERSION_MAJOR 5
+#define NCURSES_VERSION_MINOR 7
+#define NCURSES_VERSION_PATCH 20081102
+
+/* This is defined in more than one ncurses header, for identification */
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "5.7"
+
+/*
+ * Identify the mouse encoding version.
+ */
+#define NCURSES_MOUSE_VERSION 1
+
+/*
+ * Definitions to facilitate DLL's.
+ */
+#include <ncurses_dll.h>
+
+/*
+ * User-definable tweak to disable the include of <stdbool.h>.
+ */
+#ifndef NCURSES_ENABLE_STDBOOL_H
+#define NCURSES_ENABLE_STDBOOL_H 1
+#endif
+
+/*
+ * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
+ * configured using --disable-macros.
+ */
+#ifdef NCURSES_NOMACROS
+#ifndef NCURSES_ATTR_T
+#define NCURSES_ATTR_T attr_t
+#endif
+#endif /* NCURSES_NOMACROS */
+
+#ifndef NCURSES_ATTR_T
+#define NCURSES_ATTR_T int
+#endif
+
+/*
+ * Expands to 'const' if ncurses is configured using --enable-const.  Note that
+ * doing so makes it incompatible with other implementations of X/Open Curses.
+ */
+#undef  NCURSES_CONST
+#define NCURSES_CONST /*nothing*/
+
+#undef NCURSES_INLINE
+#define NCURSES_INLINE inline
+
+/*
+ * The internal type used for color values
+ */
+#undef	NCURSES_COLOR_T
+#define	NCURSES_COLOR_T short
+
+/*
+ * Definition used to make WINDOW and similar structs opaque.
+ */
+#ifndef NCURSES_OPAQUE
+#define NCURSES_OPAQUE 0
+#endif
+
+/*
+ * The internal type used for window dimensions.
+ */
+#undef	NCURSES_SIZE_T
+#define	NCURSES_SIZE_T short
+
+/*
+ * Control whether tparm() supports varargs or fixed-parameter list.
+ */
+#undef NCURSES_TPARM_VARARGS
+#define NCURSES_TPARM_VARARGS 1
+
+/*
+ * NCURSES_CH_T is used in building the library, but not used otherwise in
+ * this header file, since that would make the normal/wide-character versions
+ * of the header incompatible.
+ */
+#undef	NCURSES_CH_T
+#define NCURSES_CH_T chtype
+
+#if 0 && defined(_LP64)
+typedef unsigned chtype;
+typedef unsigned mmask_t;
+#else
+typedef unsigned long chtype;
+typedef unsigned long mmask_t;
+#endif
+
+#include <stdio.h>
+#include <unctrl.h>
+#include <stdarg.h>	/* we need va_list */
+#ifdef _XOPEN_SOURCE_EXTENDED
+#include <stddef.h>	/* we want wchar_t */
+#endif /* _XOPEN_SOURCE_EXTENDED */
+
+/* X/Open and SVr4 specify that curses implements 'bool'.  However, C++ may also
+ * implement it.  If so, we must use the C++ compiler's type to avoid conflict
+ * with other interfaces.
+ *
+ * A further complication is that <stdbool.h> may declare 'bool' to be a
+ * different type, such as an enum which is not necessarily compatible with
+ * C++.  If we have <stdbool.h>, make 'bool' a macro, so users may #undef it.
+ * Otherwise, let it remain a typedef to avoid conflicts with other #define's.
+ * In either case, make a typedef for NCURSES_BOOL which can be used if needed
+ * from either C or C++.
+ */
+
+#undef TRUE
+#define TRUE    1
+
+#undef FALSE
+#define FALSE   0
+
+typedef unsigned NCURSES_BOOL;
+
+#if 0	/* __cplusplus, etc. */
+
+/* use the C++ compiler's bool type */
+#define NCURSES_BOOL bool
+
+#else			/* c89, c99, etc. */
+
+#if NCURSES_ENABLE_STDBOOL_H
+#include <stdbool.h>
+/* use whatever the C compiler decides bool really is */
+#define NCURSES_BOOL bool
+#else
+/* there is no predefined bool - use our own */
+#undef bool
+#define bool NCURSES_BOOL
+#endif
+
+#endif /* !__cplusplus, etc. */
+
+#ifdef __cplusplus
+extern "C" {
+#define NCURSES_CAST(type,value) static_cast<type>(value)
+#else
+#define NCURSES_CAST(type,value) (type)(value)
+#endif
+
+/*
+ * X/Open attributes.  In the ncurses implementation, they are identical to the
+ * A_ attributes.
+ */
+#define WA_ATTRIBUTES	A_ATTRIBUTES
+#define WA_NORMAL	A_NORMAL
+#define WA_STANDOUT	A_STANDOUT
+#define WA_UNDERLINE	A_UNDERLINE
+#define WA_REVERSE	A_REVERSE
+#define WA_BLINK	A_BLINK
+#define WA_DIM		A_DIM
+#define WA_BOLD		A_BOLD
+#define WA_ALTCHARSET	A_ALTCHARSET
+#define WA_INVIS	A_INVIS
+#define WA_PROTECT	A_PROTECT
+#define WA_HORIZONTAL	A_HORIZONTAL
+#define WA_LEFT		A_LEFT
+#define WA_LOW		A_LOW
+#define WA_RIGHT	A_RIGHT
+#define WA_TOP		A_TOP
+#define WA_VERTICAL	A_VERTICAL
+
+/* colors */
+#define COLOR_BLACK	0
+#define COLOR_RED	1
+#define COLOR_GREEN	2
+#define COLOR_YELLOW	3
+#define COLOR_BLUE	4
+#define COLOR_MAGENTA	5
+#define COLOR_CYAN	6
+#define COLOR_WHITE	7
+
+/* line graphics */
+
+#if 0 || 0
+NCURSES_WRAPPED_VAR(chtype*, acs_map);
+#define acs_map (_nc_acs_map())
+#else
+extern NCURSES_EXPORT_VAR(chtype) acs_map[];
+#endif
+
+#define NCURSES_ACS(c)	(acs_map[NCURSES_CAST(unsigned char,c)])
+
+/* VT100 symbols begin here */
+#define ACS_ULCORNER	NCURSES_ACS('l') /* upper left corner */
+#define ACS_LLCORNER	NCURSES_ACS('m') /* lower left corner */
+#define ACS_URCORNER	NCURSES_ACS('k') /* upper right corner */
+#define ACS_LRCORNER	NCURSES_ACS('j') /* lower right corner */
+#define ACS_LTEE	NCURSES_ACS('t') /* tee pointing right */
+#define ACS_RTEE	NCURSES_ACS('u') /* tee pointing left */
+#define ACS_BTEE	NCURSES_ACS('v') /* tee pointing up */
+#define ACS_TTEE	NCURSES_ACS('w') /* tee pointing down */
+#define ACS_HLINE	NCURSES_ACS('q') /* horizontal line */
+#define ACS_VLINE	NCURSES_ACS('x') /* vertical line */
+#define ACS_PLUS	NCURSES_ACS('n') /* large plus or crossover */
+#define ACS_S1		NCURSES_ACS('o') /* scan line 1 */
+#define ACS_S9		NCURSES_ACS('s') /* scan line 9 */
+#define ACS_DIAMOND	NCURSES_ACS('`') /* diamond */
+#define ACS_CKBOARD	NCURSES_ACS('a') /* checker board (stipple) */
+#define ACS_DEGREE	NCURSES_ACS('f') /* degree symbol */
+#define ACS_PLMINUS	NCURSES_ACS('g') /* plus/minus */
+#define ACS_BULLET	NCURSES_ACS('~') /* bullet */
+/* Teletype 5410v1 symbols begin here */
+#define ACS_LARROW	NCURSES_ACS(',') /* arrow pointing left */
+#define ACS_RARROW	NCURSES_ACS('+') /* arrow pointing right */
+#define ACS_DARROW	NCURSES_ACS('.') /* arrow pointing down */
+#define ACS_UARROW	NCURSES_ACS('-') /* arrow pointing up */
+#define ACS_BOARD	NCURSES_ACS('h') /* board of squares */
+#define ACS_LANTERN	NCURSES_ACS('i') /* lantern symbol */
+#define ACS_BLOCK	NCURSES_ACS('0') /* solid square block */
+/*
+ * These aren't documented, but a lot of System Vs have them anyway
+ * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
+ * The ACS_names may not match AT&T's, our source didn't know them.
+ */
+#define ACS_S3		NCURSES_ACS('p') /* scan line 3 */
+#define ACS_S7		NCURSES_ACS('r') /* scan line 7 */
+#define ACS_LEQUAL	NCURSES_ACS('y') /* less/equal */
+#define ACS_GEQUAL	NCURSES_ACS('z') /* greater/equal */
+#define ACS_PI		NCURSES_ACS('{') /* Pi */
+#define ACS_NEQUAL	NCURSES_ACS('|') /* not equal */
+#define ACS_STERLING	NCURSES_ACS('}') /* UK pound sign */
+
+/*
+ * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
+ * is the right, b is the bottom, and l is the left.  t, r, b, and l might
+ * be B (blank), S (single), D (double), or T (thick).  The subset defined
+ * here only uses B and S.
+ */
+#define ACS_BSSB	ACS_ULCORNER
+#define ACS_SSBB	ACS_LLCORNER
+#define ACS_BBSS	ACS_URCORNER
+#define ACS_SBBS	ACS_LRCORNER
+#define ACS_SBSS	ACS_RTEE
+#define ACS_SSSB	ACS_LTEE
+#define ACS_SSBS	ACS_BTEE
+#define ACS_BSSS	ACS_TTEE
+#define ACS_BSBS	ACS_HLINE
+#define ACS_SBSB	ACS_VLINE
+#define ACS_SSSS	ACS_PLUS
+
+#undef	ERR
+#define ERR     (-1)
+
+#undef	OK
+#define OK      (0)
+
+/* values for the _flags member */
+#define _SUBWIN         0x01	/* is this a sub-window? */
+#define _ENDLINE        0x02	/* is the window flush right? */
+#define _FULLWIN        0x04	/* is the window full-screen? */
+#define _SCROLLWIN      0x08	/* bottom edge is at screen bottom? */
+#define _ISPAD	        0x10	/* is this window a pad? */
+#define _HASMOVED       0x20	/* has cursor moved since last refresh? */
+#define _WRAPPED        0x40	/* cursor was just wrappped */
+
+/*
+ * this value is used in the firstchar and lastchar fields to mark
+ * unchanged lines
+ */
+#define _NOCHANGE       -1
+
+/*
+ * this value is used in the oldindex field to mark lines created by insertions
+ * and scrolls.
+ */
+#define _NEWINDEX	-1
+
+typedef struct screen  SCREEN;
+typedef struct _win_st WINDOW;
+
+typedef	chtype	attr_t;		/* ...must be at least as wide as chtype */
+
+#ifdef _XOPEN_SOURCE_EXTENDED
+
+#if 0
+#ifdef mblen			/* libutf8.h defines it w/o undefining first */
+#undef mblen
+#endif
+#include <libutf8.h>
+#endif
+
+#if 0
+#include <wchar.h>		/* ...to get mbstate_t, etc. */
+#endif
+
+#if 0
+typedef unsigned short wchar_t;
+#endif
+
+#if 0
+typedef unsigned int wint_t;
+#endif
+
+#define CCHARW_MAX	5
+typedef struct
+{
+    attr_t	attr;
+    wchar_t	chars[CCHARW_MAX];
+#if 0
+#undef NCURSES_EXT_COLORS
+#define NCURSES_EXT_COLORS 20081102
+    int		ext_color;	/* color pair, must be more than 16-bits */
+#endif
+}
+cchar_t;
+
+#endif /* _XOPEN_SOURCE_EXTENDED */
+
+#if !NCURSES_OPAQUE
+struct ldat;
+
+struct _win_st
+{
+	NCURSES_SIZE_T _cury, _curx; /* current cursor position */
+
+	/* window location and size */
+	NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
+	NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
+
+	short   _flags;		/* window state flags */
+
+	/* attribute tracking */
+	attr_t  _attrs;		/* current attribute for non-space character */
+	chtype  _bkgd;		/* current background char/attribute pair */
+
+	/* option values set by user */
+	bool	_notimeout;	/* no time out on function-key entry? */
+	bool	_clear;		/* consider all data in the window invalid? */
+	bool	_leaveok;	/* OK to not reset cursor on exit? */
+	bool	_scroll;	/* OK to scroll this window? */
+	bool	_idlok;		/* OK to use insert/delete line? */
+	bool	_idcok;		/* OK to use insert/delete char? */
+	bool	_immed;		/* window in immed mode? (not yet used) */
+	bool	_sync;		/* window in sync mode? */
+	bool	_use_keypad;	/* process function keys into KEY_ symbols? */
+	int	_delay;		/* 0 = nodelay, <0 = blocking, >0 = delay */
+
+	struct ldat *_line;	/* the actual line data */
+
+	/* global screen state */
+	NCURSES_SIZE_T _regtop;	/* top line of scrolling region */
+	NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
+
+	/* these are used only if this is a sub-window */
+	int	_parx;		/* x coordinate of this window in parent */
+	int	_pary;		/* y coordinate of this window in parent */
+	WINDOW	*_parent;	/* pointer to parent if a sub-window */
+
+	/* these are used only if this is a pad */
+	struct pdat
+	{
+	    NCURSES_SIZE_T _pad_y,      _pad_x;
+	    NCURSES_SIZE_T _pad_top,    _pad_left;
+	    NCURSES_SIZE_T _pad_bottom, _pad_right;
+	} _pad;
+
+	NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
+
+#ifdef _XOPEN_SOURCE_EXTENDED
+	cchar_t  _bkgrnd;	/* current background char/attribute pair */
+#if 0
+	int	_color;		/* current color-pair for non-space character */
+#endif
+#endif
+};
+#endif /* NCURSES_OPAQUE */
+
+/*
+ * This is an extension to support events...
+ */
+#if 1
+#ifdef NCURSES_WGETCH_EVENTS
+#if !defined(__BEOS__) || defined(__HAIKU__)
+   /* Fix _nc_timed_wait() on BEOS... */
+#  define NCURSES_EVENT_VERSION	1
+#endif	/* !defined(__BEOS__) */
+
+/*
+ * Bits to set in _nc_event.data.flags
+ */
+#  define _NC_EVENT_TIMEOUT_MSEC	1
+#  define _NC_EVENT_FILE		2
+#  define _NC_EVENT_FILE_READABLE	2
+#  if 0					/* Not supported yet... */
+#    define _NC_EVENT_FILE_WRITABLE	4
+#    define _NC_EVENT_FILE_EXCEPTION	8
+#  endif
+
+typedef struct
+{
+    int type;
+    union
+    {
+	long timeout_msec;	/* _NC_EVENT_TIMEOUT_MSEC */
+	struct
+	{
+	    unsigned int flags;
+	    int fd;
+	    unsigned int result;
+	} fev;				/* _NC_EVENT_FILE */
+    } data;
+} _nc_event;
+
+typedef struct
+{
+    int count;
+    int result_flags;	/* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
+    _nc_event *events[1];
+} _nc_eventlist;
+
+extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *);	/* experimental */
+extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */
+
+#endif /* NCURSES_WGETCH_EVENTS */
+#endif /* NCURSES_EXT_FUNCS */
+
+/*
+ * GCC (and some other compilers) define '__attribute__'; we're using this
+ * macro to alert the compiler to flag inconsistencies in printf/scanf-like
+ * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
+ * Old versions of G++ do not accept it anyway, at least not consistently with
+ * GCC.
+ */
+#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
+#define __attribute__(p) /* nothing */
+#endif
+
+/*
+ * We cannot define these in ncurses_cfg.h, since they require parameters to be
+ * passed (that is non-portable).  If you happen to be using gcc with warnings
+ * enabled, define
+ *	GCC_PRINTF
+ *	GCC_SCANF
+ * to improve checking of calls to printw(), etc.
+ */
+#ifndef GCC_PRINTFLIKE
+#if defined(GCC_PRINTF) && !defined(printf)
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#endif
+
+#ifndef GCC_SCANFLIKE
+#if defined(GCC_SCANF) && !defined(scanf)
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
+#endif
+#endif
+
+#ifndef	GCC_NORETURN
+#define	GCC_NORETURN /* nothing */
+#endif
+
+#ifndef	GCC_UNUSED
+#define	GCC_UNUSED /* nothing */
+#endif
+
+/*
+ * Function prototypes.  This is the complete X/Open Curses list of required
+ * functions.  Those marked `generated' will have sources generated from the
+ * macro definitions later in this file, in order to satisfy XPG4.2
+ * requirements.
+ */
+
+extern NCURSES_EXPORT(int) addch (const chtype);			/* generated */
+extern NCURSES_EXPORT(int) addchnstr (const chtype *, int);		/* generated */
+extern NCURSES_EXPORT(int) addchstr (const chtype *);			/* generated */
+extern NCURSES_EXPORT(int) addnstr (const char *, int);			/* generated */
+extern NCURSES_EXPORT(int) addstr (const char *);			/* generated */
+extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *);	/* generated */
+extern NCURSES_EXPORT(int) attr_off (attr_t, void *);			/* generated */
+extern NCURSES_EXPORT(int) attr_on (attr_t, void *);			/* generated */
+extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *);		/* generated */
+extern NCURSES_EXPORT(int) baudrate (void);				/* implemented */
+extern NCURSES_EXPORT(int) beep  (void);				/* implemented */
+extern NCURSES_EXPORT(int) bkgd (chtype);				/* generated */
+extern NCURSES_EXPORT(void) bkgdset (chtype);				/* generated */
+extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* generated */
+extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype);		/* generated */
+extern NCURSES_EXPORT(bool) can_change_color (void);			/* implemented */
+extern NCURSES_EXPORT(int) cbreak (void);				/* implemented */
+extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *);	/* generated */
+extern NCURSES_EXPORT(int) clear (void);				/* generated */
+extern NCURSES_EXPORT(int) clearok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) clrtobot (void);				/* generated */
+extern NCURSES_EXPORT(int) clrtoeol (void);				/* generated */
+extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*);	/* implemented */
+extern NCURSES_EXPORT(int) color_set (short,void*);			/* generated */
+extern NCURSES_EXPORT(int) COLOR_PAIR (int);				/* generated */
+extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) curs_set (int);				/* implemented */
+extern NCURSES_EXPORT(int) def_prog_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) def_shell_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) delay_output (int);				/* implemented */
+extern NCURSES_EXPORT(int) delch (void);				/* generated */
+extern NCURSES_EXPORT(void) delscreen (SCREEN *);			/* implemented */
+extern NCURSES_EXPORT(int) delwin (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) deleteln (void);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) doupdate (void);				/* implemented */
+extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) echo (void);					/* implemented */
+extern NCURSES_EXPORT(int) echochar (const chtype);			/* generated */
+extern NCURSES_EXPORT(int) erase (void);				/* generated */
+extern NCURSES_EXPORT(int) endwin (void);				/* implemented */
+extern NCURSES_EXPORT(char) erasechar (void);				/* implemented */
+extern NCURSES_EXPORT(void) filter (void);				/* implemented */
+extern NCURSES_EXPORT(int) flash (void);				/* implemented */
+extern NCURSES_EXPORT(int) flushinp (void);				/* implemented */
+extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getch (void);				/* generated */
+extern NCURSES_EXPORT(int) getnstr (char *, int);			/* generated */
+extern NCURSES_EXPORT(int) getstr (char *);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) getwin (FILE *);			/* implemented */
+extern NCURSES_EXPORT(int) halfdelay (int);				/* implemented */
+extern NCURSES_EXPORT(bool) has_colors (void);				/* implemented */
+extern NCURSES_EXPORT(bool) has_ic (void);				/* implemented */
+extern NCURSES_EXPORT(bool) has_il (void);				/* implemented */
+extern NCURSES_EXPORT(int) hline (chtype, int);				/* generated */
+extern NCURSES_EXPORT(void) idcok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(int) idlok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(void) immedok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(chtype) inch (void);				/* generated */
+extern NCURSES_EXPORT(int) inchnstr (chtype *, int);			/* generated */
+extern NCURSES_EXPORT(int) inchstr (chtype *);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) initscr (void);				/* implemented */
+extern NCURSES_EXPORT(int) init_color (short,short,short,short);	/* implemented */
+extern NCURSES_EXPORT(int) init_pair (short,short,short);		/* implemented */
+extern NCURSES_EXPORT(int) innstr (char *, int);			/* generated */
+extern NCURSES_EXPORT(int) insch (chtype);				/* generated */
+extern NCURSES_EXPORT(int) insdelln (int);				/* generated */
+extern NCURSES_EXPORT(int) insertln (void);				/* generated */
+extern NCURSES_EXPORT(int) insnstr (const char *, int);			/* generated */
+extern NCURSES_EXPORT(int) insstr (const char *);			/* generated */
+extern NCURSES_EXPORT(int) instr (char *);				/* generated */
+extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(bool) isendwin (void);				/* implemented */
+extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int);		/* implemented */
+extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int);		/* implemented */
+extern NCURSES_EXPORT(int) keypad (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(char) killchar (void);				/* implemented */
+extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(char *) longname (void);				/* implemented */
+extern NCURSES_EXPORT(int) meta (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) move (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype);		/* generated */
+extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *);	/* generated */
+extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *);	/* generated */
+extern NCURSES_EXPORT(int) mvcur (int,int,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) mvdelch (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int);		/* implemented */
+extern NCURSES_EXPORT(int) mvgetch (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvgetstr (int, int, char *);			/* generated */
+extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int);		/* generated */
+extern NCURSES_EXPORT(chtype) mvinch (int, int);			/* generated */
+extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvinsch (int, int, chtype);			/* generated */
+extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvinstr (int, int, char *);			/* generated */
+extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...)		/* implemented */
+		GCC_PRINTFLIKE(3,4);
+extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(3,4);
+extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */
+extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *);	/* generated */
+extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */
+extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *);	/* generated */
+extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int);			/* implemented */
+extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int);			/* generated */
+extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype);		/* generated */
+extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *);		/* generated */
+extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...)	/* implemented */
+		GCC_PRINTFLIKE(4,5);
+extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(4,5);
+extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int);	/* generated */
+extern NCURSES_EXPORT(int) napms (int);					/* implemented */
+extern NCURSES_EXPORT(WINDOW *) newpad (int,int);				/* implemented */
+extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *);	/* implemented */
+extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) nl (void);					/* implemented */
+extern NCURSES_EXPORT(int) nocbreak (void);				/* implemented */
+extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) noecho (void);				/* implemented */
+extern NCURSES_EXPORT(int) nonl (void);					/* implemented */
+extern NCURSES_EXPORT(void) noqiflush (void);				/* implemented */
+extern NCURSES_EXPORT(int) noraw (void);				/* implemented */
+extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *);		/* implemented */
+extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *);		/* implemented */
+extern NCURSES_EXPORT(int) pair_content (short,short*,short*);		/* implemented */
+extern NCURSES_EXPORT(int) PAIR_NUMBER (int);				/* generated */
+extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
+extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) printw (const char *,...)			/* implemented */
+		GCC_PRINTFLIKE(1,2);
+extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *);			/* implemented */
+extern NCURSES_EXPORT(void) qiflush (void);				/* implemented */
+extern NCURSES_EXPORT(int) raw (void);					/* implemented */
+extern NCURSES_EXPORT(int) redrawwin (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) refresh (void);				/* generated */
+extern NCURSES_EXPORT(int) resetty (void);				/* implemented */
+extern NCURSES_EXPORT(int) reset_prog_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) reset_shell_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int));	/* implemented */
+extern NCURSES_EXPORT(int) savetty (void);				/* implemented */
+extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...)		/* implemented */
+		GCC_SCANFLIKE(1,2);
+extern NCURSES_EXPORT(int) scr_dump (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scr_init (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scrl (int);					/* generated */
+extern NCURSES_EXPORT(int) scroll (WINDOW *);				/* generated */
+extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) scr_restore (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scr_set (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) setscrreg (int,int);				/* generated */
+extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attroff (const chtype);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *);		/* generated:WIDEC */
+extern NCURSES_EXPORT(int) slk_attron (const chtype);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*);			/* generated:WIDEC */
+extern NCURSES_EXPORT(int) slk_attrset (const chtype);			/* implemented */
+extern NCURSES_EXPORT(attr_t) slk_attr (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*);	/* implemented */
+extern NCURSES_EXPORT(int) slk_clear (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_color (short);				/* implemented */
+extern NCURSES_EXPORT(int) slk_init (int);				/* implemented */
+extern NCURSES_EXPORT(char *) slk_label (int);				/* implemented */
+extern NCURSES_EXPORT(int) slk_noutrefresh (void);			/* implemented */
+extern NCURSES_EXPORT(int) slk_refresh (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_restore (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_set (int,const char *,int);		/* implemented */
+extern NCURSES_EXPORT(int) slk_touch (void);				/* implemented */
+extern NCURSES_EXPORT(int) standout (void);				/* generated */
+extern NCURSES_EXPORT(int) standend (void);				/* generated */
+extern NCURSES_EXPORT(int) start_color (void);				/* implemented */
+extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int);	/* implemented */
+extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int);	/* implemented */
+extern NCURSES_EXPORT(int) syncok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(chtype) termattrs (void);				/* implemented */
+extern NCURSES_EXPORT(char *) termname (void);				/* implemented */
+extern NCURSES_EXPORT(void) timeout (int);				/* generated */
+extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) touchwin (WINDOW *);				/* generated */
+extern NCURSES_EXPORT(int) typeahead (int);				/* implemented */
+extern NCURSES_EXPORT(int) ungetch (int);				/* implemented */
+extern NCURSES_EXPORT(int) untouchwin (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(void) use_env (bool);				/* implemented */
+extern NCURSES_EXPORT(int) vidattr (chtype);				/* implemented */
+extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int));		/* implemented */
+extern NCURSES_EXPORT(int) vline (chtype, int);				/* generated */
+extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list);	/* implemented */
+extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list);	/* generated */
+extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list);	/* implemented */
+extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list);	/* generated */
+extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int);	/* implemented */
+extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *);		/* generated */
+extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int);	/* implemented */
+extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *);		/* generated */
+extern NCURSES_EXPORT(int) wattron (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattroff (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattrset (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *);	/* generated */
+extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *);		/* implemented */
+extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *);	/* implemented */
+extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *);	/* generated */
+extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype);			/* implemented */
+extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype);			/* implemented */
+extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* implemented */
+extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */
+extern NCURSES_EXPORT(int) wclear (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wclrtobot (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*);		/* implemented */
+extern NCURSES_EXPORT(void) wcursyncup (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wdelch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wdeleteln (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) werase (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wgetch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int);		/* implemented */
+extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *);			/* generated */
+extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int);		/* implemented */
+extern NCURSES_EXPORT(chtype) winch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int);		/* implemented */
+extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int);		/* implemented */
+extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype);			/* implemented */
+extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) winsertln (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int);	/* implemented */
+extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *);		/* generated */
+extern NCURSES_EXPORT(int) winstr (WINDOW *, char *);			/* generated */
+extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...)		/* implemented */
+		GCC_PRINTFLIKE(2,3);
+extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wrefresh (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(2,3);
+extern NCURSES_EXPORT(int) wscrl (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wstandout (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) wstandend (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(void) wsyncdown (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(void) wsyncup (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int);		/* implemented */
+
+/*
+ * These are also declared in <term.h>:
+ */
+extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(int) putp (const char *);				/* implemented */
+
+#if NCURSES_TPARM_VARARGS
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);	/* special */
+#else
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long);	/* special */
+extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...);	/* special */
+#endif
+
+/*
+ * These functions are not in X/Open, but we use them in macro definitions:
+ */
+extern NCURSES_EXPORT(int) getattrs (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getcurx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getcury (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getbegx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getbegy (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getmaxx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getmaxy (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getparx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getpary (const WINDOW *);			/* generated */
+
+/*
+ * vid_attr() was implemented originally based on a draft of X/Open curses.
+ */
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define vid_attr(a,pair,opts) vidattr(a)
+#endif
+
+/*
+ * These functions are extensions - not in X/Open Curses.
+ */
+#if 1
+#undef  NCURSES_EXT_FUNCS
+#define NCURSES_EXT_FUNCS 20081102
+typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
+typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
+extern NCURSES_EXPORT(bool) is_term_resized (int, int);
+extern NCURSES_EXPORT(char *) keybound (int, int);
+extern NCURSES_EXPORT(const char *) curses_version (void);
+extern NCURSES_EXPORT(int) assume_default_colors (int, int);
+extern NCURSES_EXPORT(int) define_key (const char *, int);
+extern NCURSES_EXPORT(int) key_defined (const char *);
+extern NCURSES_EXPORT(int) keyok (int, bool);
+extern NCURSES_EXPORT(int) resize_term (int, int);
+extern NCURSES_EXPORT(int) resizeterm (int, int);
+extern NCURSES_EXPORT(int) set_escdelay (int);
+extern NCURSES_EXPORT(int) set_tabsize (int);
+extern NCURSES_EXPORT(int) use_default_colors (void);
+extern NCURSES_EXPORT(int) use_extended_names (bool);
+extern NCURSES_EXPORT(int) use_legacy_coding (int);
+extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
+extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
+extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
+extern NCURSES_EXPORT(void) nofilter(void);
+
+/*
+ * These extensions provide access to information stored in the WINDOW even
+ * when NCURSES_OPAQUE is set:
+ */
+extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */
+
+#else
+#define curses_version() NCURSES_VERSION
+#endif
+
+/* attributes */
+
+#define NCURSES_ATTR_SHIFT       8
+#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
+
+#define A_NORMAL	(1UL - 1UL)
+#define A_ATTRIBUTES	NCURSES_BITS(~(1UL - 1UL),0)
+#define A_CHARTEXT	(NCURSES_BITS(1UL,0) - 1UL)
+#define A_COLOR		NCURSES_BITS(((1UL) << 8) - 1UL,0)
+#define A_STANDOUT	NCURSES_BITS(1UL,8)
+#define A_UNDERLINE	NCURSES_BITS(1UL,9)
+#define A_REVERSE	NCURSES_BITS(1UL,10)
+#define A_BLINK		NCURSES_BITS(1UL,11)
+#define A_DIM		NCURSES_BITS(1UL,12)
+#define A_BOLD		NCURSES_BITS(1UL,13)
+#define A_ALTCHARSET	NCURSES_BITS(1UL,14)
+#define A_INVIS		NCURSES_BITS(1UL,15)
+#define A_PROTECT	NCURSES_BITS(1UL,16)
+#define A_HORIZONTAL	NCURSES_BITS(1UL,17)
+#define A_LEFT		NCURSES_BITS(1UL,18)
+#define A_LOW		NCURSES_BITS(1UL,19)
+#define A_RIGHT		NCURSES_BITS(1UL,20)
+#define A_TOP		NCURSES_BITS(1UL,21)
+#define A_VERTICAL	NCURSES_BITS(1UL,22)
+
+/*
+ * Most of the pseudo functions are macros that either provide compatibility
+ * with older versions of curses, or provide inline functionality to improve
+ * performance.
+ */
+
+/*
+ * These pseudo functions are always implemented as macros:
+ */
+
+#define getyx(win,y,x)   	(y = getcury(win), x = getcurx(win))
+#define getbegyx(win,y,x)	(y = getbegy(win), x = getbegx(win))
+#define getmaxyx(win,y,x)	(y = getmaxy(win), x = getmaxx(win))
+#define getparyx(win,y,x)	(y = getpary(win), x = getparx(win))
+
+#define getsyx(y,x) do { if (newscr) { \
+			     if (is_leaveok(newscr)) \
+				(y) = (x) = -1; \
+			     else \
+				 getyx(newscr,(y), (x)); \
+			} \
+		    } while(0)
+
+#define setsyx(y,x) do { if (newscr) { \
+			    if ((y) == -1 && (x) == -1) \
+				leaveok(newscr, TRUE); \
+			    else { \
+				leaveok(newscr, FALSE); \
+				wmove(newscr, (y), (x)); \
+			    } \
+			} \
+		    } while(0)
+
+#ifndef NCURSES_NOMACROS
+
+/*
+ * These miscellaneous pseudo functions are provided for compatibility:
+ */
+
+#define wgetstr(w, s)		wgetnstr(w, s, -1)
+#define getnstr(s, n)		wgetnstr(stdscr, s, n)
+
+#define setterm(term)		setupterm(term, 1, (int *)0)
+
+#define fixterm()		reset_prog_mode()
+#define resetterm()		reset_shell_mode()
+#define saveterm()		def_prog_mode()
+#define crmode()		cbreak()
+#define nocrmode()		nocbreak()
+#define gettmode()
+
+/* It seems older SYSV curses versions define these */
+#if !NCURSES_OPAQUE
+#define getattrs(win)		((win) ? (win)->_attrs : A_NORMAL)
+#define getcurx(win)		((win) ? (win)->_curx : ERR)
+#define getcury(win)		((win) ? (win)->_cury : ERR)
+#define getbegx(win)		((win) ? (win)->_begx : ERR)
+#define getbegy(win)		((win) ? (win)->_begy : ERR)
+#define getmaxx(win)		((win) ? ((win)->_maxx + 1) : ERR)
+#define getmaxy(win)		((win) ? ((win)->_maxy + 1) : ERR)
+#define getparx(win)		((win) ? (win)->_parx : ERR)
+#define getpary(win)		((win) ? (win)->_pary : ERR)
+#endif /* NCURSES_OPAQUE */
+
+#define wstandout(win)      	(wattrset(win,A_STANDOUT))
+#define wstandend(win)      	(wattrset(win,A_NORMAL))
+
+#define wattron(win,at)		wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
+#define wattroff(win,at)	wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
+
+#if !NCURSES_OPAQUE
+#if defined(_XOPEN_SOURCE_EXTENDED) && 0
+#define wattrset(win,at)	((win)->_color = PAIR_NUMBER(at), \
+				 (win)->_attrs = (at))
+#else
+#define wattrset(win,at)	((win)->_attrs = (at))
+#endif
+#endif /* NCURSES_OPAQUE */
+
+#define scroll(win)		wscrl(win,1)
+
+#define touchwin(win)		wtouchln((win), 0, getmaxy(win), 1)
+#define touchline(win, s, c)	wtouchln((win), s, c, 1)
+#define untouchwin(win)		wtouchln((win), 0, getmaxy(win), 0)
+
+#define box(win, v, h)		wborder(win, v, v, h, h, 0, 0, 0, 0)
+#define border(ls, rs, ts, bs, tl, tr, bl, br)	wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
+#define hline(ch, n)		whline(stdscr, ch, n)
+#define vline(ch, n)		wvline(stdscr, ch, n)
+
+#define winstr(w, s)		winnstr(w, s, -1)
+#define winchstr(w, s)		winchnstr(w, s, -1)
+#define winsstr(w, s)		winsnstr(w, s, -1)
+
+#if !NCURSES_OPAQUE
+#define redrawwin(win)		wredrawln(win, 0, (win)->_maxy+1)
+#endif /* NCURSES_OPAQUE */
+
+#define waddstr(win,str)	waddnstr(win,str,-1)
+#define waddchstr(win,str)	waddchnstr(win,str,-1)
+
+/*
+ * These apply to the first 256 color pairs.
+ */
+#define COLOR_PAIR(n)	NCURSES_BITS(n, 0)
+#define PAIR_NUMBER(a)	(NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
+
+/*
+ * pseudo functions for standard screen
+ */
+
+#define addch(ch)		waddch(stdscr,ch)
+#define addchnstr(str,n)	waddchnstr(stdscr,str,n)
+#define addchstr(str)		waddchstr(stdscr,str)
+#define addnstr(str,n)		waddnstr(stdscr,str,n)
+#define addstr(str)		waddnstr(stdscr,str,-1)
+#define attroff(at)		wattroff(stdscr,at)
+#define attron(at)		wattron(stdscr,at)
+#define attrset(at)		wattrset(stdscr,at)
+#define attr_get(ap,cp,o)	wattr_get(stdscr,ap,cp,o)
+#define attr_off(a,o)		wattr_off(stdscr,a,o)
+#define attr_on(a,o)		wattr_on(stdscr,a,o)
+#define attr_set(a,c,o)		wattr_set(stdscr,a,c,o)
+#define bkgd(ch)		wbkgd(stdscr,ch)
+#define bkgdset(ch)		wbkgdset(stdscr,ch)
+#define chgat(n,a,c,o)		wchgat(stdscr,n,a,c,o)
+#define clear()			wclear(stdscr)
+#define clrtobot()		wclrtobot(stdscr)
+#define clrtoeol()		wclrtoeol(stdscr)
+#define color_set(c,o)		wcolor_set(stdscr,c,o)
+#define delch()			wdelch(stdscr)
+#define deleteln()		winsdelln(stdscr,-1)
+#define echochar(c)		wechochar(stdscr,c)
+#define erase()			werase(stdscr)
+#define getch()			wgetch(stdscr)
+#define getstr(str)		wgetstr(stdscr,str)
+#define inch()			winch(stdscr)
+#define inchnstr(s,n)		winchnstr(stdscr,s,n)
+#define inchstr(s)		winchstr(stdscr,s)
+#define innstr(s,n)		winnstr(stdscr,s,n)
+#define insch(c)		winsch(stdscr,c)
+#define insdelln(n)		winsdelln(stdscr,n)
+#define insertln()		winsdelln(stdscr,1)
+#define insnstr(s,n)		winsnstr(stdscr,s,n)
+#define insstr(s)		winsstr(stdscr,s)
+#define instr(s)		winstr(stdscr,s)
+#define move(y,x)		wmove(stdscr,y,x)
+#define refresh()		wrefresh(stdscr)
+#define scrl(n)			wscrl(stdscr,n)
+#define setscrreg(t,b)		wsetscrreg(stdscr,t,b)
+#define standend()		wstandend(stdscr)
+#define standout()		wstandout(stdscr)
+#define timeout(delay)		wtimeout(stdscr,delay)
+#define wdeleteln(win)		winsdelln(win,-1)
+#define winsertln(win)		winsdelln(win,1)
+
+/*
+ * mv functions
+ */
+
+#define mvwaddch(win,y,x,ch)		(wmove(win,y,x) == ERR ? ERR : waddch(win,ch))
+#define mvwaddchnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n))
+#define mvwaddchstr(win,y,x,str)	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1))
+#define mvwaddnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n))
+#define mvwaddstr(win,y,x,str)		(wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1))
+#define mvwdelch(win,y,x)		(wmove(win,y,x) == ERR ? ERR : wdelch(win))
+#define mvwchgat(win,y,x,n,a,c,o)	(wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o))
+#define mvwgetch(win,y,x)		(wmove(win,y,x) == ERR ? ERR : wgetch(win))
+#define mvwgetnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n))
+#define mvwgetstr(win,y,x,str)		(wmove(win,y,x) == ERR ? ERR : wgetstr(win,str))
+#define mvwhline(win,y,x,c,n)		(wmove(win,y,x) == ERR ? ERR : whline(win,c,n))
+#define mvwinch(win,y,x)		(wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
+#define mvwinchnstr(win,y,x,s,n)	(wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n))
+#define mvwinchstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winchstr(win,s))
+#define mvwinnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n))
+#define mvwinsch(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : winsch(win,c))
+#define mvwinsnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n))
+#define mvwinsstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winsstr(win,s))
+#define mvwinstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winstr(win,s))
+#define mvwvline(win,y,x,c,n)		(wmove(win,y,x) == ERR ? ERR : wvline(win,c,n))
+
+#define mvaddch(y,x,ch)			mvwaddch(stdscr,y,x,ch)
+#define mvaddchnstr(y,x,str,n)		mvwaddchnstr(stdscr,y,x,str,n)
+#define mvaddchstr(y,x,str)		mvwaddchstr(stdscr,y,x,str)
+#define mvaddnstr(y,x,str,n)		mvwaddnstr(stdscr,y,x,str,n)
+#define mvaddstr(y,x,str)		mvwaddstr(stdscr,y,x,str)
+#define mvchgat(y,x,n,a,c,o)		mvwchgat(stdscr,y,x,n,a,c,o)
+#define mvdelch(y,x)			mvwdelch(stdscr,y,x)
+#define mvgetch(y,x)			mvwgetch(stdscr,y,x)
+#define mvgetnstr(y,x,str,n)		mvwgetnstr(stdscr,y,x,str,n)
+#define mvgetstr(y,x,str)		mvwgetstr(stdscr,y,x,str)
+#define mvhline(y,x,c,n)		mvwhline(stdscr,y,x,c,n)
+#define mvinch(y,x)			mvwinch(stdscr,y,x)
+#define mvinchnstr(y,x,s,n)		mvwinchnstr(stdscr,y,x,s,n)
+#define mvinchstr(y,x,s)		mvwinchstr(stdscr,y,x,s)
+#define mvinnstr(y,x,s,n)		mvwinnstr(stdscr,y,x,s,n)
+#define mvinsch(y,x,c)			mvwinsch(stdscr,y,x,c)
+#define mvinsnstr(y,x,s,n)		mvwinsnstr(stdscr,y,x,s,n)
+#define mvinsstr(y,x,s)			mvwinsstr(stdscr,y,x,s)
+#define mvinstr(y,x,s)			mvwinstr(stdscr,y,x,s)
+#define mvvline(y,x,c,n)		mvwvline(stdscr,y,x,c,n)
+
+/*
+ * Some wide-character functions can be implemented without the extensions.
+ */
+#if !NCURSES_OPAQUE
+#define getbkgd(win)                    ((win)->_bkgd)
+#endif /* NCURSES_OPAQUE */
+
+#define slk_attr_off(a,v)		((v) ? ERR : slk_attroff(a))
+#define slk_attr_on(a,v)		((v) ? ERR : slk_attron(a))
+
+#if !NCURSES_OPAQUE
+#if defined(_XOPEN_SOURCE_EXTENDED) && 0
+#define wattr_set(win,a,p,opts)		((win)->_attrs = ((a) & ~A_COLOR), \
+					 (win)->_color = (p), \
+					 OK)
+#define wattr_get(win,a,p,opts)		((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
+					 (void)((p) != (void *)0 && (*(p) = (win)->_color)), \
+					 OK)
+#else
+#define wattr_set(win,a,p,opts)		((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
+#define wattr_get(win,a,p,opts)		((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
+					 (void)((p) != (void *)0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
+					 OK)
+#endif
+#endif /* NCURSES_OPAQUE */
+
+/*
+ * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
+ * varargs.h.  It adds new calls vw_printw/vw_scanw, which are supposed to
+ * use POSIX stdarg.h.  The ncurses versions of vwprintw/vwscanw already
+ * use stdarg.h, so...
+ */
+#define vw_printw		vwprintw
+#define vw_scanw		vwscanw
+
+/*
+ * Export fallback function for use in C++ binding.
+ */
+#if !1
+#define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
+NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
+#endif
+
+/*
+ * These macros are extensions - not in X/Open Curses.
+ */
+#if 1
+#if !NCURSES_OPAQUE
+#define is_cleared(win)		((win)->_clear)
+#define is_idcok(win)		((win)->_idcok)
+#define is_idlok(win)		((win)->_idlok)
+#define is_immedok(win)		((win)->_immed)
+#define is_keypad(win)		((win)->_use_keypad)
+#define is_leaveok(win)		((win)->_leaveok)
+#define is_nodelay(win)		((win)->_delay == 0)
+#define is_notimeout(win)	((win)->_notimeout)
+#define is_scrollok(win)	((win)->_scroll)
+#define is_syncok(win)		((win)->_sync)
+#define wgetparent(win)		((win) ? (win)->_parent : 0)
+#define wgetscrreg(win,t,b)	((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
+#endif
+#endif
+
+#endif /* NCURSES_NOMACROS */
+
+/*
+ * Public variables.
+ *
+ * Notes:
+ *	a. ESCDELAY was an undocumented feature under AIX curses.
+ *	   It gives the ESC expire time in milliseconds.
+ *	b. ttytype is needed for backward compatibility
+ */
+#if 0
+
+NCURSES_WRAPPED_VAR(WINDOW *, curscr);
+NCURSES_WRAPPED_VAR(WINDOW *, newscr);
+NCURSES_WRAPPED_VAR(WINDOW *, stdscr);
+NCURSES_WRAPPED_VAR(char *, ttytype);
+NCURSES_WRAPPED_VAR(int, COLORS);
+NCURSES_WRAPPED_VAR(int, COLOR_PAIRS);
+NCURSES_WRAPPED_VAR(int, COLS);
+NCURSES_WRAPPED_VAR(int, ESCDELAY);
+NCURSES_WRAPPED_VAR(int, LINES);
+NCURSES_WRAPPED_VAR(int, TABSIZE);
+
+#define curscr      NCURSES_PUBLIC_VAR(curscr())
+#define newscr      NCURSES_PUBLIC_VAR(newscr())
+#define stdscr      NCURSES_PUBLIC_VAR(stdscr())
+#define ttytype     NCURSES_PUBLIC_VAR(ttytype())
+#define COLORS      NCURSES_PUBLIC_VAR(COLORS())
+#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
+#define COLS        NCURSES_PUBLIC_VAR(COLS())
+#define ESCDELAY    NCURSES_PUBLIC_VAR(ESCDELAY())
+#define LINES       NCURSES_PUBLIC_VAR(LINES())
+#define TABSIZE     NCURSES_PUBLIC_VAR(TABSIZE())
+
+#else
+
+extern NCURSES_EXPORT_VAR(WINDOW *) curscr;
+extern NCURSES_EXPORT_VAR(WINDOW *) newscr;
+extern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
+extern NCURSES_EXPORT_VAR(char) ttytype[];
+extern NCURSES_EXPORT_VAR(int) COLORS;
+extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
+extern NCURSES_EXPORT_VAR(int) COLS;
+extern NCURSES_EXPORT_VAR(int) ESCDELAY;
+extern NCURSES_EXPORT_VAR(int) LINES;
+extern NCURSES_EXPORT_VAR(int) TABSIZE;
+
+#endif
+
+/*
+ * Pseudo-character tokens outside ASCII range.  The curses wgetch() function
+ * will return any given one of these only if the corresponding k- capability
+ * is defined in your terminal's terminfo entry.
+ *
+ * Some keys (KEY_A1, etc) are arranged like this:
+ *	a1     up    a3
+ *	left   b2    right
+ *	c1     down  c3
+ *
+ * A few key codes do not depend upon the terminfo entry.
+ */
+#define KEY_CODE_YES	0400		/* A wchar_t contains a key code */
+#define KEY_MIN		0401		/* Minimum curses key */
+#define KEY_BREAK	0401		/* Break key (unreliable) */
+#define KEY_SRESET	0530		/* Soft (partial) reset (unreliable) */
+#define KEY_RESET	0531		/* Reset or hard reset (unreliable) */
+/*
+ * These definitions were generated by ./MKkey_defs.sh ./Caps
+ */
+#define KEY_DOWN	0402		/* down-arrow key */
+#define KEY_UP		0403		/* up-arrow key */
+#define KEY_LEFT	0404		/* left-arrow key */
+#define KEY_RIGHT	0405		/* right-arrow key */
+#define KEY_HOME	0406		/* home key */
+#define KEY_BACKSPACE	0407		/* backspace key */
+#define KEY_F0		0410		/* Function keys.  Space for 64 */
+#define KEY_F(n)	(KEY_F0+(n))	/* Value of function key n */
+#define KEY_DL		0510		/* delete-line key */
+#define KEY_IL		0511		/* insert-line key */
+#define KEY_DC		0512		/* delete-character key */
+#define KEY_IC		0513		/* insert-character key */
+#define KEY_EIC		0514		/* sent by rmir or smir in insert mode */
+#define KEY_CLEAR	0515		/* clear-screen or erase key */
+#define KEY_EOS		0516		/* clear-to-end-of-screen key */
+#define KEY_EOL		0517		/* clear-to-end-of-line key */
+#define KEY_SF		0520		/* scroll-forward key */
+#define KEY_SR		0521		/* scroll-backward key */
+#define KEY_NPAGE	0522		/* next-page key */
+#define KEY_PPAGE	0523		/* previous-page key */
+#define KEY_STAB	0524		/* set-tab key */
+#define KEY_CTAB	0525		/* clear-tab key */
+#define KEY_CATAB	0526		/* clear-all-tabs key */
+#define KEY_ENTER	0527		/* enter/send key */
+#define KEY_PRINT	0532		/* print key */
+#define KEY_LL		0533		/* lower-left key (home down) */
+#define KEY_A1		0534		/* upper left of keypad */
+#define KEY_A3		0535		/* upper right of keypad */
+#define KEY_B2		0536		/* center of keypad */
+#define KEY_C1		0537		/* lower left of keypad */
+#define KEY_C3		0540		/* lower right of keypad */
+#define KEY_BTAB	0541		/* back-tab key */
+#define KEY_BEG		0542		/* begin key */
+#define KEY_CANCEL	0543		/* cancel key */
+#define KEY_CLOSE	0544		/* close key */
+#define KEY_COMMAND	0545		/* command key */
+#define KEY_COPY	0546		/* copy key */
+#define KEY_CREATE	0547		/* create key */
+#define KEY_END		0550		/* end key */
+#define KEY_EXIT	0551		/* exit key */
+#define KEY_FIND	0552		/* find key */
+#define KEY_HELP	0553		/* help key */
+#define KEY_MARK	0554		/* mark key */
+#define KEY_MESSAGE	0555		/* message key */
+#define KEY_MOVE	0556		/* move key */
+#define KEY_NEXT	0557		/* next key */
+#define KEY_OPEN	0560		/* open key */
+#define KEY_OPTIONS	0561		/* options key */
+#define KEY_PREVIOUS	0562		/* previous key */
+#define KEY_REDO	0563		/* redo key */
+#define KEY_REFERENCE	0564		/* reference key */
+#define KEY_REFRESH	0565		/* refresh key */
+#define KEY_REPLACE	0566		/* replace key */
+#define KEY_RESTART	0567		/* restart key */
+#define KEY_RESUME	0570		/* resume key */
+#define KEY_SAVE	0571		/* save key */
+#define KEY_SBEG	0572		/* shifted begin key */
+#define KEY_SCANCEL	0573		/* shifted cancel key */
+#define KEY_SCOMMAND	0574		/* shifted command key */
+#define KEY_SCOPY	0575		/* shifted copy key */
+#define KEY_SCREATE	0576		/* shifted create key */
+#define KEY_SDC		0577		/* shifted delete-character key */
+#define KEY_SDL		0600		/* shifted delete-line key */
+#define KEY_SELECT	0601		/* select key */
+#define KEY_SEND	0602		/* shifted end key */
+#define KEY_SEOL	0603		/* shifted clear-to-end-of-line key */
+#define KEY_SEXIT	0604		/* shifted exit key */
+#define KEY_SFIND	0605		/* shifted find key */
+#define KEY_SHELP	0606		/* shifted help key */
+#define KEY_SHOME	0607		/* shifted home key */
+#define KEY_SIC		0610		/* shifted insert-character key */
+#define KEY_SLEFT	0611		/* shifted left-arrow key */
+#define KEY_SMESSAGE	0612		/* shifted message key */
+#define KEY_SMOVE	0613		/* shifted move key */
+#define KEY_SNEXT	0614		/* shifted next key */
+#define KEY_SOPTIONS	0615		/* shifted options key */
+#define KEY_SPREVIOUS	0616		/* shifted previous key */
+#define KEY_SPRINT	0617		/* shifted print key */
+#define KEY_SREDO	0620		/* shifted redo key */
+#define KEY_SREPLACE	0621		/* shifted replace key */
+#define KEY_SRIGHT	0622		/* shifted right-arrow key */
+#define KEY_SRSUME	0623		/* shifted resume key */
+#define KEY_SSAVE	0624		/* shifted save key */
+#define KEY_SSUSPEND	0625		/* shifted suspend key */
+#define KEY_SUNDO	0626		/* shifted undo key */
+#define KEY_SUSPEND	0627		/* suspend key */
+#define KEY_UNDO	0630		/* undo key */
+#define KEY_MOUSE	0631		/* Mouse event has occurred */
+#define KEY_RESIZE	0632		/* Terminal resize event */
+#define KEY_EVENT	0633		/* We were interrupted by an event */
+
+#define KEY_MAX		0777		/* Maximum key value is 0633 */
+/* $Id: curses.tail,v 1.16 2008/07/05 20:20:38 tom Exp $ */
+/*
+ * vile:cmode:
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
+
+/* mouse interface */
+
+#if NCURSES_MOUSE_VERSION > 1
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5))
+#else
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
+#endif
+
+#define	NCURSES_BUTTON_RELEASED	001L
+#define	NCURSES_BUTTON_PRESSED	002L
+#define	NCURSES_BUTTON_CLICKED	004L
+#define	NCURSES_DOUBLE_CLICKED	010L
+#define	NCURSES_TRIPLE_CLICKED	020L
+#define	NCURSES_RESERVED_EVENT	040L
+
+/* event masks */
+#define	BUTTON1_RELEASED	NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
+#define	BUTTON1_PRESSED		NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
+#define	BUTTON1_CLICKED		NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
+#define	BUTTON1_DOUBLE_CLICKED	NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
+#define	BUTTON1_TRIPLE_CLICKED	NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
+
+#define	BUTTON2_RELEASED	NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
+#define	BUTTON2_PRESSED		NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
+#define	BUTTON2_CLICKED		NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
+#define	BUTTON2_DOUBLE_CLICKED	NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
+#define	BUTTON2_TRIPLE_CLICKED	NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
+
+#define	BUTTON3_RELEASED	NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
+#define	BUTTON3_PRESSED		NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
+#define	BUTTON3_CLICKED		NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
+#define	BUTTON3_DOUBLE_CLICKED	NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
+#define	BUTTON3_TRIPLE_CLICKED	NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
+
+#define	BUTTON4_RELEASED	NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
+#define	BUTTON4_PRESSED		NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
+#define	BUTTON4_CLICKED		NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
+#define	BUTTON4_DOUBLE_CLICKED	NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
+#define	BUTTON4_TRIPLE_CLICKED	NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
+
+/*
+ * In 32 bits the version-1 scheme does not provide enough space for a 5th
+ * button, unless we choose to change the ABI by omitting the reserved-events.
+ */
+#if NCURSES_MOUSE_VERSION > 1
+
+#define	BUTTON5_RELEASED	NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
+#define	BUTTON5_PRESSED		NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
+#define	BUTTON5_CLICKED		NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
+#define	BUTTON5_DOUBLE_CLICKED	NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
+#define	BUTTON5_TRIPLE_CLICKED	NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
+
+#define	BUTTON_CTRL		NCURSES_MOUSE_MASK(6, 0001L)
+#define	BUTTON_SHIFT		NCURSES_MOUSE_MASK(6, 0002L)
+#define	BUTTON_ALT		NCURSES_MOUSE_MASK(6, 0004L)
+#define	REPORT_MOUSE_POSITION	NCURSES_MOUSE_MASK(6, 0010L)
+
+#else
+
+#define	BUTTON1_RESERVED_EVENT	NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
+#define	BUTTON2_RESERVED_EVENT	NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
+#define	BUTTON3_RESERVED_EVENT	NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
+#define	BUTTON4_RESERVED_EVENT	NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
+
+#define	BUTTON_CTRL		NCURSES_MOUSE_MASK(5, 0001L)
+#define	BUTTON_SHIFT		NCURSES_MOUSE_MASK(5, 0002L)
+#define	BUTTON_ALT		NCURSES_MOUSE_MASK(5, 0004L)
+#define	REPORT_MOUSE_POSITION	NCURSES_MOUSE_MASK(5, 0010L)
+
+#endif
+
+#define	ALL_MOUSE_EVENTS	(REPORT_MOUSE_POSITION - 1)
+
+/* macros to extract single event-bits from masks */
+#define	BUTTON_RELEASE(e, x)		((e) & NCURSES_MOUSE_MASK(x, 001))
+#define	BUTTON_PRESS(e, x)		((e) & NCURSES_MOUSE_MASK(x, 002))
+#define	BUTTON_CLICK(e, x)		((e) & NCURSES_MOUSE_MASK(x, 004))
+#define	BUTTON_DOUBLE_CLICK(e, x)	((e) & NCURSES_MOUSE_MASK(x, 010))
+#define	BUTTON_TRIPLE_CLICK(e, x)	((e) & NCURSES_MOUSE_MASK(x, 020))
+#define	BUTTON_RESERVED_EVENT(e, x)	((e) & NCURSES_MOUSE_MASK(x, 040))
+
+typedef struct
+{
+    short id;		/* ID to distinguish multiple devices */
+    int x, y, z;	/* event coordinates (character-cell) */
+    mmask_t bstate;	/* button state bits */
+}
+MEVENT;
+
+extern NCURSES_EXPORT(int) getmouse (MEVENT *);
+extern NCURSES_EXPORT(int) ungetmouse (MEVENT *);
+extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *);
+extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int);
+extern NCURSES_EXPORT(int) mouseinterval (int);
+extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool);
+extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool);              /* generated */
+
+#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
+
+/* other non-XSI functions */
+
+extern NCURSES_EXPORT(int) mcprint (char *, int);	/* direct data to printer */
+extern NCURSES_EXPORT(int) has_key (int);		/* do we have given key? */
+
+/* Debugging : use with libncurses_g.a */
+
+extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2);
+extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *);
+extern NCURSES_EXPORT(char *) _traceattr (attr_t);
+extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype);
+extern NCURSES_EXPORT(char *) _nc_tracebits (void);
+extern NCURSES_EXPORT(char *) _tracechar (int);
+extern NCURSES_EXPORT(char *) _tracechtype (chtype);
+extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
+#ifdef _XOPEN_SOURCE_EXTENDED
+#define _tracech_t		_tracecchar_t
+extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *);
+#define _tracech_t2		_tracecchar_t2
+extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *);
+#else
+#define _tracech_t		_tracechtype
+#define _tracech_t2		_tracechtype2
+#endif
+extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *);
+extern NCURSES_EXPORT(void) trace (const unsigned int);
+
+/* trace masks */
+#define TRACE_DISABLE	0x0000	/* turn off tracing */
+#define TRACE_TIMES	0x0001	/* trace user and system times of updates */
+#define TRACE_TPUTS	0x0002	/* trace tputs calls */
+#define TRACE_UPDATE	0x0004	/* trace update actions, old & new screens */
+#define TRACE_MOVE	0x0008	/* trace cursor moves and scrolls */
+#define TRACE_CHARPUT	0x0010	/* trace all character outputs */
+#define TRACE_ORDINARY	0x001F	/* trace all update actions */
+#define TRACE_CALLS	0x0020	/* trace all curses calls */
+#define TRACE_VIRTPUT	0x0040	/* trace virtual character puts */
+#define TRACE_IEVENT	0x0080	/* trace low-level input processing */
+#define TRACE_BITS	0x0100	/* trace state of TTY control bits */
+#define TRACE_ICALLS	0x0200	/* trace internal/nested calls */
+#define TRACE_CCALLS	0x0400	/* trace per-character calls */
+#define TRACE_DATABASE	0x0800	/* trace read/write of terminfo/termcap data */
+#define TRACE_ATTRS	0x1000	/* trace attribute updates */
+
+#define TRACE_SHIFT	13	/* number of bits in the trace masks */
+#define TRACE_MAXIMUM	((1 << TRACE_SHIFT) - 1) /* maximum trace level */
+
+#if defined(TRACE) || defined(NCURSES_TEST)
+extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable;		/* enable optimizations */
+extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
+#define OPTIMIZE_MVCUR		0x01	/* cursor movement optimization */
+#define OPTIMIZE_HASHMAP	0x02	/* diff hashing to detect scrolls */
+#define OPTIMIZE_SCROLL		0x04	/* scroll optimization */
+#define OPTIMIZE_ALL		0xff	/* enable all optimizations (dflt) */
+#endif
+
+#ifdef __cplusplus
+
+#ifndef NCURSES_NOMACROS
+
+/* these names conflict with STL */
+#undef box
+#undef clear
+#undef erase
+#undef move
+#undef refresh
+
+#endif /* NCURSES_NOMACROS */
+
+}
+#endif
+
+#endif /* __NCURSES_H */
diff --git a/include/curses.head b/include/curses.head
new file mode 100644
index 0000000..c8b8dff
--- /dev/null
+++ b/include/curses.head
@@ -0,0 +1,1231 @@
+/****************************************************************************
+ * Copyright (c) 1998-2007,2008 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ *     and: Thomas E. Dickey                        1996-on                 *
+ ****************************************************************************/
+
+/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */
+
+#ifndef __NCURSES_H
+#define __NCURSES_H
+
+#define CURSES 1
+#define CURSES_H 1
+
+/* This should be defined for the enhanced functionality to be visible.
+ * However, some of the wide-character (enhanced) functionality is missing.
+ * So we do not define it (yet).
+#define _XOPEN_CURSES 1
+ */
+
+/* These are defined only in curses.h, and are used for conditional compiles */
+#define NCURSES_VERSION_MAJOR 5
+#define NCURSES_VERSION_MINOR 7
+#define NCURSES_VERSION_PATCH 20081102
+
+/* This is defined in more than one ncurses header, for identification */
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "5.7"
+
+/*
+ * Identify the mouse encoding version.
+ */
+#define NCURSES_MOUSE_VERSION 1
+
+/*
+ * Definitions to facilitate DLL's.
+ */
+#include <ncurses_dll.h>
+
+/*
+ * User-definable tweak to disable the include of <stdbool.h>.
+ */
+#ifndef NCURSES_ENABLE_STDBOOL_H
+#define NCURSES_ENABLE_STDBOOL_H 1
+#endif
+
+/*
+ * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
+ * configured using --disable-macros.
+ */
+#ifdef NCURSES_NOMACROS
+#ifndef NCURSES_ATTR_T
+#define NCURSES_ATTR_T attr_t
+#endif
+#endif /* NCURSES_NOMACROS */
+
+#ifndef NCURSES_ATTR_T
+#define NCURSES_ATTR_T int
+#endif
+
+/*
+ * Expands to 'const' if ncurses is configured using --enable-const.  Note that
+ * doing so makes it incompatible with other implementations of X/Open Curses.
+ */
+#undef  NCURSES_CONST
+#define NCURSES_CONST /*nothing*/
+
+#undef NCURSES_INLINE
+#define NCURSES_INLINE inline
+
+/*
+ * The internal type used for color values
+ */
+#undef	NCURSES_COLOR_T
+#define	NCURSES_COLOR_T short
+
+/*
+ * Definition used to make WINDOW and similar structs opaque.
+ */
+#ifndef NCURSES_OPAQUE
+#define NCURSES_OPAQUE 0
+#endif
+
+/*
+ * The internal type used for window dimensions.
+ */
+#undef	NCURSES_SIZE_T
+#define	NCURSES_SIZE_T short
+
+/*
+ * Control whether tparm() supports varargs or fixed-parameter list.
+ */
+#undef NCURSES_TPARM_VARARGS
+#define NCURSES_TPARM_VARARGS 1
+
+/*
+ * NCURSES_CH_T is used in building the library, but not used otherwise in
+ * this header file, since that would make the normal/wide-character versions
+ * of the header incompatible.
+ */
+#undef	NCURSES_CH_T
+#define NCURSES_CH_T chtype
+
+#if 0 && defined(_LP64)
+typedef unsigned chtype;
+typedef unsigned mmask_t;
+#else
+typedef unsigned long chtype;
+typedef unsigned long mmask_t;
+#endif
+
+#include <stdio.h>
+#include <unctrl.h>
+#include <stdarg.h>	/* we need va_list */
+#ifdef _XOPEN_SOURCE_EXTENDED
+#include <stddef.h>	/* we want wchar_t */
+#endif /* _XOPEN_SOURCE_EXTENDED */
+
+/* X/Open and SVr4 specify that curses implements 'bool'.  However, C++ may also
+ * implement it.  If so, we must use the C++ compiler's type to avoid conflict
+ * with other interfaces.
+ *
+ * A further complication is that <stdbool.h> may declare 'bool' to be a
+ * different type, such as an enum which is not necessarily compatible with
+ * C++.  If we have <stdbool.h>, make 'bool' a macro, so users may #undef it.
+ * Otherwise, let it remain a typedef to avoid conflicts with other #define's.
+ * In either case, make a typedef for NCURSES_BOOL which can be used if needed
+ * from either C or C++.
+ */
+
+#undef TRUE
+#define TRUE    1
+
+#undef FALSE
+#define FALSE   0
+
+typedef unsigned NCURSES_BOOL;
+
+#if 0	/* __cplusplus, etc. */
+
+/* use the C++ compiler's bool type */
+#define NCURSES_BOOL bool
+
+#else			/* c89, c99, etc. */
+
+#if NCURSES_ENABLE_STDBOOL_H
+#include <stdbool.h>
+/* use whatever the C compiler decides bool really is */
+#define NCURSES_BOOL bool
+#else
+/* there is no predefined bool - use our own */
+#undef bool
+#define bool NCURSES_BOOL
+#endif
+
+#endif /* !__cplusplus, etc. */
+
+#ifdef __cplusplus
+extern "C" {
+#define NCURSES_CAST(type,value) static_cast<type>(value)
+#else
+#define NCURSES_CAST(type,value) (type)(value)
+#endif
+
+/*
+ * X/Open attributes.  In the ncurses implementation, they are identical to the
+ * A_ attributes.
+ */
+#define WA_ATTRIBUTES	A_ATTRIBUTES
+#define WA_NORMAL	A_NORMAL
+#define WA_STANDOUT	A_STANDOUT
+#define WA_UNDERLINE	A_UNDERLINE
+#define WA_REVERSE	A_REVERSE
+#define WA_BLINK	A_BLINK
+#define WA_DIM		A_DIM
+#define WA_BOLD		A_BOLD
+#define WA_ALTCHARSET	A_ALTCHARSET
+#define WA_INVIS	A_INVIS
+#define WA_PROTECT	A_PROTECT
+#define WA_HORIZONTAL	A_HORIZONTAL
+#define WA_LEFT		A_LEFT
+#define WA_LOW		A_LOW
+#define WA_RIGHT	A_RIGHT
+#define WA_TOP		A_TOP
+#define WA_VERTICAL	A_VERTICAL
+
+/* colors */
+#define COLOR_BLACK	0
+#define COLOR_RED	1
+#define COLOR_GREEN	2
+#define COLOR_YELLOW	3
+#define COLOR_BLUE	4
+#define COLOR_MAGENTA	5
+#define COLOR_CYAN	6
+#define COLOR_WHITE	7
+
+/* line graphics */
+
+#if 0 || 0
+NCURSES_WRAPPED_VAR(chtype*, acs_map);
+#define acs_map (_nc_acs_map())
+#else
+extern NCURSES_EXPORT_VAR(chtype) acs_map[];
+#endif
+
+#define NCURSES_ACS(c)	(acs_map[NCURSES_CAST(unsigned char,c)])
+
+/* VT100 symbols begin here */
+#define ACS_ULCORNER	NCURSES_ACS('l') /* upper left corner */
+#define ACS_LLCORNER	NCURSES_ACS('m') /* lower left corner */
+#define ACS_URCORNER	NCURSES_ACS('k') /* upper right corner */
+#define ACS_LRCORNER	NCURSES_ACS('j') /* lower right corner */
+#define ACS_LTEE	NCURSES_ACS('t') /* tee pointing right */
+#define ACS_RTEE	NCURSES_ACS('u') /* tee pointing left */
+#define ACS_BTEE	NCURSES_ACS('v') /* tee pointing up */
+#define ACS_TTEE	NCURSES_ACS('w') /* tee pointing down */
+#define ACS_HLINE	NCURSES_ACS('q') /* horizontal line */
+#define ACS_VLINE	NCURSES_ACS('x') /* vertical line */
+#define ACS_PLUS	NCURSES_ACS('n') /* large plus or crossover */
+#define ACS_S1		NCURSES_ACS('o') /* scan line 1 */
+#define ACS_S9		NCURSES_ACS('s') /* scan line 9 */
+#define ACS_DIAMOND	NCURSES_ACS('`') /* diamond */
+#define ACS_CKBOARD	NCURSES_ACS('a') /* checker board (stipple) */
+#define ACS_DEGREE	NCURSES_ACS('f') /* degree symbol */
+#define ACS_PLMINUS	NCURSES_ACS('g') /* plus/minus */
+#define ACS_BULLET	NCURSES_ACS('~') /* bullet */
+/* Teletype 5410v1 symbols begin here */
+#define ACS_LARROW	NCURSES_ACS(',') /* arrow pointing left */
+#define ACS_RARROW	NCURSES_ACS('+') /* arrow pointing right */
+#define ACS_DARROW	NCURSES_ACS('.') /* arrow pointing down */
+#define ACS_UARROW	NCURSES_ACS('-') /* arrow pointing up */
+#define ACS_BOARD	NCURSES_ACS('h') /* board of squares */
+#define ACS_LANTERN	NCURSES_ACS('i') /* lantern symbol */
+#define ACS_BLOCK	NCURSES_ACS('0') /* solid square block */
+/*
+ * These aren't documented, but a lot of System Vs have them anyway
+ * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
+ * The ACS_names may not match AT&T's, our source didn't know them.
+ */
+#define ACS_S3		NCURSES_ACS('p') /* scan line 3 */
+#define ACS_S7		NCURSES_ACS('r') /* scan line 7 */
+#define ACS_LEQUAL	NCURSES_ACS('y') /* less/equal */
+#define ACS_GEQUAL	NCURSES_ACS('z') /* greater/equal */
+#define ACS_PI		NCURSES_ACS('{') /* Pi */
+#define ACS_NEQUAL	NCURSES_ACS('|') /* not equal */
+#define ACS_STERLING	NCURSES_ACS('}') /* UK pound sign */
+
+/*
+ * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
+ * is the right, b is the bottom, and l is the left.  t, r, b, and l might
+ * be B (blank), S (single), D (double), or T (thick).  The subset defined
+ * here only uses B and S.
+ */
+#define ACS_BSSB	ACS_ULCORNER
+#define ACS_SSBB	ACS_LLCORNER
+#define ACS_BBSS	ACS_URCORNER
+#define ACS_SBBS	ACS_LRCORNER
+#define ACS_SBSS	ACS_RTEE
+#define ACS_SSSB	ACS_LTEE
+#define ACS_SSBS	ACS_BTEE
+#define ACS_BSSS	ACS_TTEE
+#define ACS_BSBS	ACS_HLINE
+#define ACS_SBSB	ACS_VLINE
+#define ACS_SSSS	ACS_PLUS
+
+#undef	ERR
+#define ERR     (-1)
+
+#undef	OK
+#define OK      (0)
+
+/* values for the _flags member */
+#define _SUBWIN         0x01	/* is this a sub-window? */
+#define _ENDLINE        0x02	/* is the window flush right? */
+#define _FULLWIN        0x04	/* is the window full-screen? */
+#define _SCROLLWIN      0x08	/* bottom edge is at screen bottom? */
+#define _ISPAD	        0x10	/* is this window a pad? */
+#define _HASMOVED       0x20	/* has cursor moved since last refresh? */
+#define _WRAPPED        0x40	/* cursor was just wrappped */
+
+/*
+ * this value is used in the firstchar and lastchar fields to mark
+ * unchanged lines
+ */
+#define _NOCHANGE       -1
+
+/*
+ * this value is used in the oldindex field to mark lines created by insertions
+ * and scrolls.
+ */
+#define _NEWINDEX	-1
+
+typedef struct screen  SCREEN;
+typedef struct _win_st WINDOW;
+
+typedef	chtype	attr_t;		/* ...must be at least as wide as chtype */
+
+#ifdef _XOPEN_SOURCE_EXTENDED
+
+#if 0
+#ifdef mblen			/* libutf8.h defines it w/o undefining first */
+#undef mblen
+#endif
+#include <libutf8.h>
+#endif
+
+#if 0
+#include <wchar.h>		/* ...to get mbstate_t, etc. */
+#endif
+
+#if 0
+typedef unsigned short wchar_t;
+#endif
+
+#if 0
+typedef unsigned int wint_t;
+#endif
+
+#define CCHARW_MAX	5
+typedef struct
+{
+    attr_t	attr;
+    wchar_t	chars[CCHARW_MAX];
+#if 0
+#undef NCURSES_EXT_COLORS
+#define NCURSES_EXT_COLORS 20081102
+    int		ext_color;	/* color pair, must be more than 16-bits */
+#endif
+}
+cchar_t;
+
+#endif /* _XOPEN_SOURCE_EXTENDED */
+
+#if !NCURSES_OPAQUE
+struct ldat;
+
+struct _win_st
+{
+	NCURSES_SIZE_T _cury, _curx; /* current cursor position */
+
+	/* window location and size */
+	NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */
+	NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */
+
+	short   _flags;		/* window state flags */
+
+	/* attribute tracking */
+	attr_t  _attrs;		/* current attribute for non-space character */
+	chtype  _bkgd;		/* current background char/attribute pair */
+
+	/* option values set by user */
+	bool	_notimeout;	/* no time out on function-key entry? */
+	bool	_clear;		/* consider all data in the window invalid? */
+	bool	_leaveok;	/* OK to not reset cursor on exit? */
+	bool	_scroll;	/* OK to scroll this window? */
+	bool	_idlok;		/* OK to use insert/delete line? */
+	bool	_idcok;		/* OK to use insert/delete char? */
+	bool	_immed;		/* window in immed mode? (not yet used) */
+	bool	_sync;		/* window in sync mode? */
+	bool	_use_keypad;	/* process function keys into KEY_ symbols? */
+	int	_delay;		/* 0 = nodelay, <0 = blocking, >0 = delay */
+
+	struct ldat *_line;	/* the actual line data */
+
+	/* global screen state */
+	NCURSES_SIZE_T _regtop;	/* top line of scrolling region */
+	NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */
+
+	/* these are used only if this is a sub-window */
+	int	_parx;		/* x coordinate of this window in parent */
+	int	_pary;		/* y coordinate of this window in parent */
+	WINDOW	*_parent;	/* pointer to parent if a sub-window */
+
+	/* these are used only if this is a pad */
+	struct pdat
+	{
+	    NCURSES_SIZE_T _pad_y,      _pad_x;
+	    NCURSES_SIZE_T _pad_top,    _pad_left;
+	    NCURSES_SIZE_T _pad_bottom, _pad_right;
+	} _pad;
+
+	NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
+
+#ifdef _XOPEN_SOURCE_EXTENDED
+	cchar_t  _bkgrnd;	/* current background char/attribute pair */
+#if 0
+	int	_color;		/* current color-pair for non-space character */
+#endif
+#endif
+};
+#endif /* NCURSES_OPAQUE */
+
+/*
+ * This is an extension to support events...
+ */
+#if 1
+#ifdef NCURSES_WGETCH_EVENTS
+#if !defined(__BEOS__) || defined(__HAIKU__)
+   /* Fix _nc_timed_wait() on BEOS... */
+#  define NCURSES_EVENT_VERSION	1
+#endif	/* !defined(__BEOS__) */
+
+/*
+ * Bits to set in _nc_event.data.flags
+ */
+#  define _NC_EVENT_TIMEOUT_MSEC	1
+#  define _NC_EVENT_FILE		2
+#  define _NC_EVENT_FILE_READABLE	2
+#  if 0					/* Not supported yet... */
+#    define _NC_EVENT_FILE_WRITABLE	4
+#    define _NC_EVENT_FILE_EXCEPTION	8
+#  endif
+
+typedef struct
+{
+    int type;
+    union
+    {
+	long timeout_msec;	/* _NC_EVENT_TIMEOUT_MSEC */
+	struct
+	{
+	    unsigned int flags;
+	    int fd;
+	    unsigned int result;
+	} fev;				/* _NC_EVENT_FILE */
+    } data;
+} _nc_event;
+
+typedef struct
+{
+    int count;
+    int result_flags;	/* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
+    _nc_event *events[1];
+} _nc_eventlist;
+
+extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *);	/* experimental */
+extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */
+
+#endif /* NCURSES_WGETCH_EVENTS */
+#endif /* NCURSES_EXT_FUNCS */
+
+/*
+ * GCC (and some other compilers) define '__attribute__'; we're using this
+ * macro to alert the compiler to flag inconsistencies in printf/scanf-like
+ * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
+ * Old versions of G++ do not accept it anyway, at least not consistently with
+ * GCC.
+ */
+#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
+#define __attribute__(p) /* nothing */
+#endif
+
+/*
+ * We cannot define these in ncurses_cfg.h, since they require parameters to be
+ * passed (that is non-portable).  If you happen to be using gcc with warnings
+ * enabled, define
+ *	GCC_PRINTF
+ *	GCC_SCANF
+ * to improve checking of calls to printw(), etc.
+ */
+#ifndef GCC_PRINTFLIKE
+#if defined(GCC_PRINTF) && !defined(printf)
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#endif
+
+#ifndef GCC_SCANFLIKE
+#if defined(GCC_SCANF) && !defined(scanf)
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
+#endif
+#endif
+
+#ifndef	GCC_NORETURN
+#define	GCC_NORETURN /* nothing */
+#endif
+
+#ifndef	GCC_UNUSED
+#define	GCC_UNUSED /* nothing */
+#endif
+
+/*
+ * Function prototypes.  This is the complete X/Open Curses list of required
+ * functions.  Those marked `generated' will have sources generated from the
+ * macro definitions later in this file, in order to satisfy XPG4.2
+ * requirements.
+ */
+
+extern NCURSES_EXPORT(int) addch (const chtype);			/* generated */
+extern NCURSES_EXPORT(int) addchnstr (const chtype *, int);		/* generated */
+extern NCURSES_EXPORT(int) addchstr (const chtype *);			/* generated */
+extern NCURSES_EXPORT(int) addnstr (const char *, int);			/* generated */
+extern NCURSES_EXPORT(int) addstr (const char *);			/* generated */
+extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T);			/* generated */
+extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *);	/* generated */
+extern NCURSES_EXPORT(int) attr_off (attr_t, void *);			/* generated */
+extern NCURSES_EXPORT(int) attr_on (attr_t, void *);			/* generated */
+extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *);		/* generated */
+extern NCURSES_EXPORT(int) baudrate (void);				/* implemented */
+extern NCURSES_EXPORT(int) beep  (void);				/* implemented */
+extern NCURSES_EXPORT(int) bkgd (chtype);				/* generated */
+extern NCURSES_EXPORT(void) bkgdset (chtype);				/* generated */
+extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* generated */
+extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype);		/* generated */
+extern NCURSES_EXPORT(bool) can_change_color (void);			/* implemented */
+extern NCURSES_EXPORT(int) cbreak (void);				/* implemented */
+extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *);	/* generated */
+extern NCURSES_EXPORT(int) clear (void);				/* generated */
+extern NCURSES_EXPORT(int) clearok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) clrtobot (void);				/* generated */
+extern NCURSES_EXPORT(int) clrtoeol (void);				/* generated */
+extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*);	/* implemented */
+extern NCURSES_EXPORT(int) color_set (short,void*);			/* generated */
+extern NCURSES_EXPORT(int) COLOR_PAIR (int);				/* generated */
+extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) curs_set (int);				/* implemented */
+extern NCURSES_EXPORT(int) def_prog_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) def_shell_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) delay_output (int);				/* implemented */
+extern NCURSES_EXPORT(int) delch (void);				/* generated */
+extern NCURSES_EXPORT(void) delscreen (SCREEN *);			/* implemented */
+extern NCURSES_EXPORT(int) delwin (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) deleteln (void);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) doupdate (void);				/* implemented */
+extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) echo (void);					/* implemented */
+extern NCURSES_EXPORT(int) echochar (const chtype);			/* generated */
+extern NCURSES_EXPORT(int) erase (void);				/* generated */
+extern NCURSES_EXPORT(int) endwin (void);				/* implemented */
+extern NCURSES_EXPORT(char) erasechar (void);				/* implemented */
+extern NCURSES_EXPORT(void) filter (void);				/* implemented */
+extern NCURSES_EXPORT(int) flash (void);				/* implemented */
+extern NCURSES_EXPORT(int) flushinp (void);				/* implemented */
+extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getch (void);				/* generated */
+extern NCURSES_EXPORT(int) getnstr (char *, int);			/* generated */
+extern NCURSES_EXPORT(int) getstr (char *);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) getwin (FILE *);			/* implemented */
+extern NCURSES_EXPORT(int) halfdelay (int);				/* implemented */
+extern NCURSES_EXPORT(bool) has_colors (void);				/* implemented */
+extern NCURSES_EXPORT(bool) has_ic (void);				/* implemented */
+extern NCURSES_EXPORT(bool) has_il (void);				/* implemented */
+extern NCURSES_EXPORT(int) hline (chtype, int);				/* generated */
+extern NCURSES_EXPORT(void) idcok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(int) idlok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(void) immedok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(chtype) inch (void);				/* generated */
+extern NCURSES_EXPORT(int) inchnstr (chtype *, int);			/* generated */
+extern NCURSES_EXPORT(int) inchstr (chtype *);				/* generated */
+extern NCURSES_EXPORT(WINDOW *) initscr (void);				/* implemented */
+extern NCURSES_EXPORT(int) init_color (short,short,short,short);	/* implemented */
+extern NCURSES_EXPORT(int) init_pair (short,short,short);		/* implemented */
+extern NCURSES_EXPORT(int) innstr (char *, int);			/* generated */
+extern NCURSES_EXPORT(int) insch (chtype);				/* generated */
+extern NCURSES_EXPORT(int) insdelln (int);				/* generated */
+extern NCURSES_EXPORT(int) insertln (void);				/* generated */
+extern NCURSES_EXPORT(int) insnstr (const char *, int);			/* generated */
+extern NCURSES_EXPORT(int) insstr (const char *);			/* generated */
+extern NCURSES_EXPORT(int) instr (char *);				/* generated */
+extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(bool) isendwin (void);				/* implemented */
+extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int);		/* implemented */
+extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int);		/* implemented */
+extern NCURSES_EXPORT(int) keypad (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(char) killchar (void);				/* implemented */
+extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(char *) longname (void);				/* implemented */
+extern NCURSES_EXPORT(int) meta (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) move (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype);		/* generated */
+extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *);	/* generated */
+extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *);	/* generated */
+extern NCURSES_EXPORT(int) mvcur (int,int,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) mvdelch (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int);		/* implemented */
+extern NCURSES_EXPORT(int) mvgetch (int, int);				/* generated */
+extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvgetstr (int, int, char *);			/* generated */
+extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int);		/* generated */
+extern NCURSES_EXPORT(chtype) mvinch (int, int);			/* generated */
+extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvinsch (int, int, chtype);			/* generated */
+extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvinstr (int, int, char *);			/* generated */
+extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...)		/* implemented */
+		GCC_PRINTFLIKE(3,4);
+extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(3,4);
+extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */
+extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *);	/* generated */
+extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */
+extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *);	/* generated */
+extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int);			/* implemented */
+extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int);			/* generated */
+extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int);		/* generated */
+extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype);		/* generated */
+extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int);	/* generated */
+extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *);		/* generated */
+extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *);		/* generated */
+extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...)	/* implemented */
+		GCC_PRINTFLIKE(4,5);
+extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(4,5);
+extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int);	/* generated */
+extern NCURSES_EXPORT(int) napms (int);					/* implemented */
+extern NCURSES_EXPORT(WINDOW *) newpad (int,int);				/* implemented */
+extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *);	/* implemented */
+extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) nl (void);					/* implemented */
+extern NCURSES_EXPORT(int) nocbreak (void);				/* implemented */
+extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) noecho (void);				/* implemented */
+extern NCURSES_EXPORT(int) nonl (void);					/* implemented */
+extern NCURSES_EXPORT(void) noqiflush (void);				/* implemented */
+extern NCURSES_EXPORT(int) noraw (void);				/* implemented */
+extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *);		/* implemented */
+extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *);		/* implemented */
+extern NCURSES_EXPORT(int) pair_content (short,short*,short*);		/* implemented */
+extern NCURSES_EXPORT(int) PAIR_NUMBER (int);				/* generated */
+extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
+extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int);	/* implemented */
+extern NCURSES_EXPORT(int) printw (const char *,...)			/* implemented */
+		GCC_PRINTFLIKE(1,2);
+extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *);			/* implemented */
+extern NCURSES_EXPORT(void) qiflush (void);				/* implemented */
+extern NCURSES_EXPORT(int) raw (void);					/* implemented */
+extern NCURSES_EXPORT(int) redrawwin (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) refresh (void);				/* generated */
+extern NCURSES_EXPORT(int) resetty (void);				/* implemented */
+extern NCURSES_EXPORT(int) reset_prog_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) reset_shell_mode (void);			/* implemented */
+extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int));	/* implemented */
+extern NCURSES_EXPORT(int) savetty (void);				/* implemented */
+extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...)		/* implemented */
+		GCC_SCANFLIKE(1,2);
+extern NCURSES_EXPORT(int) scr_dump (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scr_init (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scrl (int);					/* generated */
+extern NCURSES_EXPORT(int) scroll (WINDOW *);				/* generated */
+extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool);			/* implemented */
+extern NCURSES_EXPORT(int) scr_restore (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) scr_set (const char *);			/* implemented */
+extern NCURSES_EXPORT(int) setscrreg (int,int);				/* generated */
+extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attroff (const chtype);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *);		/* generated:WIDEC */
+extern NCURSES_EXPORT(int) slk_attron (const chtype);			/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*);			/* generated:WIDEC */
+extern NCURSES_EXPORT(int) slk_attrset (const chtype);			/* implemented */
+extern NCURSES_EXPORT(attr_t) slk_attr (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*);	/* implemented */
+extern NCURSES_EXPORT(int) slk_clear (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_color (short);				/* implemented */
+extern NCURSES_EXPORT(int) slk_init (int);				/* implemented */
+extern NCURSES_EXPORT(char *) slk_label (int);				/* implemented */
+extern NCURSES_EXPORT(int) slk_noutrefresh (void);			/* implemented */
+extern NCURSES_EXPORT(int) slk_refresh (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_restore (void);				/* implemented */
+extern NCURSES_EXPORT(int) slk_set (int,const char *,int);		/* implemented */
+extern NCURSES_EXPORT(int) slk_touch (void);				/* implemented */
+extern NCURSES_EXPORT(int) standout (void);				/* generated */
+extern NCURSES_EXPORT(int) standend (void);				/* generated */
+extern NCURSES_EXPORT(int) start_color (void);				/* implemented */
+extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int);	/* implemented */
+extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int);	/* implemented */
+extern NCURSES_EXPORT(int) syncok (WINDOW *, bool);			/* implemented */
+extern NCURSES_EXPORT(chtype) termattrs (void);				/* implemented */
+extern NCURSES_EXPORT(char *) termname (void);				/* implemented */
+extern NCURSES_EXPORT(void) timeout (int);				/* generated */
+extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int);		/* generated */
+extern NCURSES_EXPORT(int) touchwin (WINDOW *);				/* generated */
+extern NCURSES_EXPORT(int) typeahead (int);				/* implemented */
+extern NCURSES_EXPORT(int) ungetch (int);				/* implemented */
+extern NCURSES_EXPORT(int) untouchwin (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(void) use_env (bool);				/* implemented */
+extern NCURSES_EXPORT(int) vidattr (chtype);				/* implemented */
+extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int));		/* implemented */
+extern NCURSES_EXPORT(int) vline (chtype, int);				/* generated */
+extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list);	/* implemented */
+extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list);	/* generated */
+extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list);	/* implemented */
+extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list);	/* generated */
+extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int);	/* implemented */
+extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *);		/* generated */
+extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int);	/* implemented */
+extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *);		/* generated */
+extern NCURSES_EXPORT(int) wattron (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattroff (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattrset (WINDOW *, int);			/* generated */
+extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *);	/* generated */
+extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *);		/* implemented */
+extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *);	/* implemented */
+extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *);	/* generated */
+extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype);			/* implemented */
+extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype);			/* implemented */
+extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	/* implemented */
+extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */
+extern NCURSES_EXPORT(int) wclear (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wclrtobot (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*);		/* implemented */
+extern NCURSES_EXPORT(void) wcursyncup (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wdelch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wdeleteln (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype);		/* implemented */
+extern NCURSES_EXPORT(int) werase (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wgetch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int);		/* implemented */
+extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *);			/* generated */
+extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int);		/* implemented */
+extern NCURSES_EXPORT(chtype) winch (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int);		/* implemented */
+extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *);		/* generated */
+extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int);		/* implemented */
+extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype);			/* implemented */
+extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) winsertln (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int);	/* implemented */
+extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *);		/* generated */
+extern NCURSES_EXPORT(int) winstr (WINDOW *, char *);			/* generated */
+extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int);			/* implemented */
+extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...)		/* implemented */
+		GCC_PRINTFLIKE(2,3);
+extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wrefresh (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...)	/* implemented */
+		GCC_SCANFLIKE(2,3);
+extern NCURSES_EXPORT(int) wscrl (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wstandout (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) wstandend (WINDOW *);			/* generated */
+extern NCURSES_EXPORT(void) wsyncdown (WINDOW *);			/* implemented */
+extern NCURSES_EXPORT(void) wsyncup (WINDOW *);				/* implemented */
+extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int);			/* implemented */
+extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int);		/* implemented */
+extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int);		/* implemented */
+
+/*
+ * These are also declared in <term.h>:
+ */
+extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);		/* implemented */
+extern NCURSES_EXPORT(int) putp (const char *);				/* implemented */
+
+#if NCURSES_TPARM_VARARGS
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);	/* special */
+#else
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long);	/* special */
+extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...);	/* special */
+#endif
+
+/*
+ * These functions are not in X/Open, but we use them in macro definitions:
+ */
+extern NCURSES_EXPORT(int) getattrs (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getcurx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getcury (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getbegx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getbegy (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getmaxx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getmaxy (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getparx (const WINDOW *);			/* generated */
+extern NCURSES_EXPORT(int) getpary (const WINDOW *);			/* generated */
+
+/*
+ * vid_attr() was implemented originally based on a draft of X/Open curses.
+ */
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define vid_attr(a,pair,opts) vidattr(a)
+#endif
+
+/*
+ * These functions are extensions - not in X/Open Curses.
+ */
+#if 1
+#undef  NCURSES_EXT_FUNCS
+#define NCURSES_EXT_FUNCS 20081102
+typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
+typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
+extern NCURSES_EXPORT(bool) is_term_resized (int, int);
+extern NCURSES_EXPORT(char *) keybound (int, int);
+extern NCURSES_EXPORT(const char *) curses_version (void);
+extern NCURSES_EXPORT(int) assume_default_colors (int, int);
+extern NCURSES_EXPORT(int) define_key (const char *, int);
+extern NCURSES_EXPORT(int) key_defined (const char *);
+extern NCURSES_EXPORT(int) keyok (int, bool);
+extern NCURSES_EXPORT(int) resize_term (int, int);
+extern NCURSES_EXPORT(int) resizeterm (int, int);
+extern NCURSES_EXPORT(int) set_escdelay (int);
+extern NCURSES_EXPORT(int) set_tabsize (int);
+extern NCURSES_EXPORT(int) use_default_colors (void);
+extern NCURSES_EXPORT(int) use_extended_names (bool);
+extern NCURSES_EXPORT(int) use_legacy_coding (int);
+extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
+extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
+extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
+extern NCURSES_EXPORT(void) nofilter(void);
+
+/*
+ * These extensions provide access to information stored in the WINDOW even
+ * when NCURSES_OPAQUE is set:
+ */
+extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *);	/* generated */
+extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *);		/* generated */
+extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */
+
+#else
+#define curses_version() NCURSES_VERSION
+#endif
+
+/* attributes */
+
+#define NCURSES_ATTR_SHIFT       8
+#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
+
+#define A_NORMAL	(1UL - 1UL)
+#define A_ATTRIBUTES	NCURSES_BITS(~(1UL - 1UL),0)
+#define A_CHARTEXT	(NCURSES_BITS(1UL,0) - 1UL)
+#define A_COLOR		NCURSES_BITS(((1UL) << 8) - 1UL,0)
+#define A_STANDOUT	NCURSES_BITS(1UL,8)
+#define A_UNDERLINE	NCURSES_BITS(1UL,9)
+#define A_REVERSE	NCURSES_BITS(1UL,10)
+#define A_BLINK		NCURSES_BITS(1UL,11)
+#define A_DIM		NCURSES_BITS(1UL,12)
+#define A_BOLD		NCURSES_BITS(1UL,13)
+#define A_ALTCHARSET	NCURSES_BITS(1UL,14)
+#define A_INVIS		NCURSES_BITS(1UL,15)
+#define A_PROTECT	NCURSES_BITS(1UL,16)
+#define A_HORIZONTAL	NCURSES_BITS(1UL,17)
+#define A_LEFT		NCURSES_BITS(1UL,18)
+#define A_LOW		NCURSES_BITS(1UL,19)
+#define A_RIGHT		NCURSES_BITS(1UL,20)
+#define A_TOP		NCURSES_BITS(1UL,21)
+#define A_VERTICAL	NCURSES_BITS(1UL,22)
+
+/*
+ * Most of the pseudo functions are macros that either provide compatibility
+ * with older versions of curses, or provide inline functionality to improve
+ * performance.
+ */
+
+/*
+ * These pseudo functions are always implemented as macros:
+ */
+
+#define getyx(win,y,x)   	(y = getcury(win), x = getcurx(win))
+#define getbegyx(win,y,x)	(y = getbegy(win), x = getbegx(win))
+#define getmaxyx(win,y,x)	(y = getmaxy(win), x = getmaxx(win))
+#define getparyx(win,y,x)	(y = getpary(win), x = getparx(win))
+
+#define getsyx(y,x) do { if (newscr) { \
+			     if (is_leaveok(newscr)) \
+				(y) = (x) = -1; \
+			     else \
+				 getyx(newscr,(y), (x)); \
+			} \
+		    } while(0)
+
+#define setsyx(y,x) do { if (newscr) { \
+			    if ((y) == -1 && (x) == -1) \
+				leaveok(newscr, TRUE); \
+			    else { \
+				leaveok(newscr, FALSE); \
+				wmove(newscr, (y), (x)); \
+			    } \
+			} \
+		    } while(0)
+
+#ifndef NCURSES_NOMACROS
+
+/*
+ * These miscellaneous pseudo functions are provided for compatibility:
+ */
+
+#define wgetstr(w, s)		wgetnstr(w, s, -1)
+#define getnstr(s, n)		wgetnstr(stdscr, s, n)
+
+#define setterm(term)		setupterm(term, 1, (int *)0)
+
+#define fixterm()		reset_prog_mode()
+#define resetterm()		reset_shell_mode()
+#define saveterm()		def_prog_mode()
+#define crmode()		cbreak()
+#define nocrmode()		nocbreak()
+#define gettmode()
+
+/* It seems older SYSV curses versions define these */
+#if !NCURSES_OPAQUE
+#define getattrs(win)		((win) ? (win)->_attrs : A_NORMAL)
+#define getcurx(win)		((win) ? (win)->_curx : ERR)
+#define getcury(win)		((win) ? (win)->_cury : ERR)
+#define getbegx(win)		((win) ? (win)->_begx : ERR)
+#define getbegy(win)		((win) ? (win)->_begy : ERR)
+#define getmaxx(win)		((win) ? ((win)->_maxx + 1) : ERR)
+#define getmaxy(win)		((win) ? ((win)->_maxy + 1) : ERR)
+#define getparx(win)		((win) ? (win)->_parx : ERR)
+#define getpary(win)		((win) ? (win)->_pary : ERR)
+#endif /* NCURSES_OPAQUE */
+
+#define wstandout(win)      	(wattrset(win,A_STANDOUT))
+#define wstandend(win)      	(wattrset(win,A_NORMAL))
+
+#define wattron(win,at)		wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
+#define wattroff(win,at)	wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
+
+#if !NCURSES_OPAQUE
+#if defined(_XOPEN_SOURCE_EXTENDED) && 0
+#define wattrset(win,at)	((win)->_color = PAIR_NUMBER(at), \
+				 (win)->_attrs = (at))
+#else
+#define wattrset(win,at)	((win)->_attrs = (at))
+#endif
+#endif /* NCURSES_OPAQUE */
+
+#define scroll(win)		wscrl(win,1)
+
+#define touchwin(win)		wtouchln((win), 0, getmaxy(win), 1)
+#define touchline(win, s, c)	wtouchln((win), s, c, 1)
+#define untouchwin(win)		wtouchln((win), 0, getmaxy(win), 0)
+
+#define box(win, v, h)		wborder(win, v, v, h, h, 0, 0, 0, 0)
+#define border(ls, rs, ts, bs, tl, tr, bl, br)	wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
+#define hline(ch, n)		whline(stdscr, ch, n)
+#define vline(ch, n)		wvline(stdscr, ch, n)
+
+#define winstr(w, s)		winnstr(w, s, -1)
+#define winchstr(w, s)		winchnstr(w, s, -1)
+#define winsstr(w, s)		winsnstr(w, s, -1)
+
+#if !NCURSES_OPAQUE
+#define redrawwin(win)		wredrawln(win, 0, (win)->_maxy+1)
+#endif /* NCURSES_OPAQUE */
+
+#define waddstr(win,str)	waddnstr(win,str,-1)
+#define waddchstr(win,str)	waddchnstr(win,str,-1)
+
+/*
+ * These apply to the first 256 color pairs.
+ */
+#define COLOR_PAIR(n)	NCURSES_BITS(n, 0)
+#define PAIR_NUMBER(a)	(NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
+
+/*
+ * pseudo functions for standard screen
+ */
+
+#define addch(ch)		waddch(stdscr,ch)
+#define addchnstr(str,n)	waddchnstr(stdscr,str,n)
+#define addchstr(str)		waddchstr(stdscr,str)
+#define addnstr(str,n)		waddnstr(stdscr,str,n)
+#define addstr(str)		waddnstr(stdscr,str,-1)
+#define attroff(at)		wattroff(stdscr,at)
+#define attron(at)		wattron(stdscr,at)
+#define attrset(at)		wattrset(stdscr,at)
+#define attr_get(ap,cp,o)	wattr_get(stdscr,ap,cp,o)
+#define attr_off(a,o)		wattr_off(stdscr,a,o)
+#define attr_on(a,o)		wattr_on(stdscr,a,o)
+#define attr_set(a,c,o)		wattr_set(stdscr,a,c,o)
+#define bkgd(ch)		wbkgd(stdscr,ch)
+#define bkgdset(ch)		wbkgdset(stdscr,ch)
+#define chgat(n,a,c,o)		wchgat(stdscr,n,a,c,o)
+#define clear()			wclear(stdscr)
+#define clrtobot()		wclrtobot(stdscr)
+#define clrtoeol()		wclrtoeol(stdscr)
+#define color_set(c,o)		wcolor_set(stdscr,c,o)
+#define delch()			wdelch(stdscr)
+#define deleteln()		winsdelln(stdscr,-1)
+#define echochar(c)		wechochar(stdscr,c)
+#define erase()			werase(stdscr)
+#define getch()			wgetch(stdscr)
+#define getstr(str)		wgetstr(stdscr,str)
+#define inch()			winch(stdscr)
+#define inchnstr(s,n)		winchnstr(stdscr,s,n)
+#define inchstr(s)		winchstr(stdscr,s)
+#define innstr(s,n)		winnstr(stdscr,s,n)
+#define insch(c)		winsch(stdscr,c)
+#define insdelln(n)		winsdelln(stdscr,n)
+#define insertln()		winsdelln(stdscr,1)
+#define insnstr(s,n)		winsnstr(stdscr,s,n)
+#define insstr(s)		winsstr(stdscr,s)
+#define instr(s)		winstr(stdscr,s)
+#define move(y,x)		wmove(stdscr,y,x)
+#define refresh()		wrefresh(stdscr)
+#define scrl(n)			wscrl(stdscr,n)
+#define setscrreg(t,b)		wsetscrreg(stdscr,t,b)
+#define standend()		wstandend(stdscr)
+#define standout()		wstandout(stdscr)
+#define timeout(delay)		wtimeout(stdscr,delay)
+#define wdeleteln(win)		winsdelln(win,-1)
+#define winsertln(win)		winsdelln(win,1)
+
+/*
+ * mv functions
+ */
+
+#define mvwaddch(win,y,x,ch)		(wmove(win,y,x) == ERR ? ERR : waddch(win,ch))
+#define mvwaddchnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n))
+#define mvwaddchstr(win,y,x,str)	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1))
+#define mvwaddnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n))
+#define mvwaddstr(win,y,x,str)		(wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1))
+#define mvwdelch(win,y,x)		(wmove(win,y,x) == ERR ? ERR : wdelch(win))
+#define mvwchgat(win,y,x,n,a,c,o)	(wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o))
+#define mvwgetch(win,y,x)		(wmove(win,y,x) == ERR ? ERR : wgetch(win))
+#define mvwgetnstr(win,y,x,str,n)	(wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n))
+#define mvwgetstr(win,y,x,str)		(wmove(win,y,x) == ERR ? ERR : wgetstr(win,str))
+#define mvwhline(win,y,x,c,n)		(wmove(win,y,x) == ERR ? ERR : whline(win,c,n))
+#define mvwinch(win,y,x)		(wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
+#define mvwinchnstr(win,y,x,s,n)	(wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n))
+#define mvwinchstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winchstr(win,s))
+#define mvwinnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n))
+#define mvwinsch(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : winsch(win,c))
+#define mvwinsnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n))
+#define mvwinsstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winsstr(win,s))
+#define mvwinstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winstr(win,s))
+#define mvwvline(win,y,x,c,n)		(wmove(win,y,x) == ERR ? ERR : wvline(win,c,n))
+
+#define mvaddch(y,x,ch)			mvwaddch(stdscr,y,x,ch)
+#define mvaddchnstr(y,x,str,n)		mvwaddchnstr(stdscr,y,x,str,n)
+#define mvaddchstr(y,x,str)		mvwaddchstr(stdscr,y,x,str)
+#define mvaddnstr(y,x,str,n)		mvwaddnstr(stdscr,y,x,str,n)
+#define mvaddstr(y,x,str)		mvwaddstr(stdscr,y,x,str)
+#define mvchgat(y,x,n,a,c,o)		mvwchgat(stdscr,y,x,n,a,c,o)
+#define mvdelch(y,x)			mvwdelch(stdscr,y,x)
+#define mvgetch(y,x)			mvwgetch(stdscr,y,x)
+#define mvgetnstr(y,x,str,n)		mvwgetnstr(stdscr,y,x,str,n)
+#define mvgetstr(y,x,str)		mvwgetstr(stdscr,y,x,str)
+#define mvhline(y,x,c,n)		mvwhline(stdscr,y,x,c,n)
+#define mvinch(y,x)			mvwinch(stdscr,y,x)
+#define mvinchnstr(y,x,s,n)		mvwinchnstr(stdscr,y,x,s,n)
+#define mvinchstr(y,x,s)		mvwinchstr(stdscr,y,x,s)
+#define mvinnstr(y,x,s,n)		mvwinnstr(stdscr,y,x,s,n)
+#define mvinsch(y,x,c)			mvwinsch(stdscr,y,x,c)
+#define mvinsnstr(y,x,s,n)		mvwinsnstr(stdscr,y,x,s,n)
+#define mvinsstr(y,x,s)			mvwinsstr(stdscr,y,x,s)
+#define mvinstr(y,x,s)			mvwinstr(stdscr,y,x,s)
+#define mvvline(y,x,c,n)		mvwvline(stdscr,y,x,c,n)
+
+/*
+ * Some wide-character functions can be implemented without the extensions.
+ */
+#if !NCURSES_OPAQUE
+#define getbkgd(win)                    ((win)->_bkgd)
+#endif /* NCURSES_OPAQUE */
+
+#define slk_attr_off(a,v)		((v) ? ERR : slk_attroff(a))
+#define slk_attr_on(a,v)		((v) ? ERR : slk_attron(a))
+
+#if !NCURSES_OPAQUE
+#if defined(_XOPEN_SOURCE_EXTENDED) && 0
+#define wattr_set(win,a,p,opts)		((win)->_attrs = ((a) & ~A_COLOR), \
+					 (win)->_color = (p), \
+					 OK)
+#define wattr_get(win,a,p,opts)		((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
+					 (void)((p) != (void *)0 && (*(p) = (win)->_color)), \
+					 OK)
+#else
+#define wattr_set(win,a,p,opts)		((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
+#define wattr_get(win,a,p,opts)		((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
+					 (void)((p) != (void *)0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
+					 OK)
+#endif
+#endif /* NCURSES_OPAQUE */
+
+/*
+ * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
+ * varargs.h.  It adds new calls vw_printw/vw_scanw, which are supposed to
+ * use POSIX stdarg.h.  The ncurses versions of vwprintw/vwscanw already
+ * use stdarg.h, so...
+ */
+#define vw_printw		vwprintw
+#define vw_scanw		vwscanw
+
+/*
+ * Export fallback function for use in C++ binding.
+ */
+#if !1
+#define vsscanf(a,b,c) _nc_vsscanf(a,b,c)
+NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
+#endif
+
+/*
+ * These macros are extensions - not in X/Open Curses.
+ */
+#if 1
+#if !NCURSES_OPAQUE
+#define is_cleared(win)		((win)->_clear)
+#define is_idcok(win)		((win)->_idcok)
+#define is_idlok(win)		((win)->_idlok)
+#define is_immedok(win)		((win)->_immed)
+#define is_keypad(win)		((win)->_use_keypad)
+#define is_leaveok(win)		((win)->_leaveok)
+#define is_nodelay(win)		((win)->_delay == 0)
+#define is_notimeout(win)	((win)->_notimeout)
+#define is_scrollok(win)	((win)->_scroll)
+#define is_syncok(win)		((win)->_sync)
+#define wgetparent(win)		((win) ? (win)->_parent : 0)
+#define wgetscrreg(win,t,b)	((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
+#endif
+#endif
+
+#endif /* NCURSES_NOMACROS */
+
+/*
+ * Public variables.
+ *
+ * Notes:
+ *	a. ESCDELAY was an undocumented feature under AIX curses.
+ *	   It gives the ESC expire time in milliseconds.
+ *	b. ttytype is needed for backward compatibility
+ */
+#if 0
+
+NCURSES_WRAPPED_VAR(WINDOW *, curscr);
+NCURSES_WRAPPED_VAR(WINDOW *, newscr);
+NCURSES_WRAPPED_VAR(WINDOW *, stdscr);
+NCURSES_WRAPPED_VAR(char *, ttytype);
+NCURSES_WRAPPED_VAR(int, COLORS);
+NCURSES_WRAPPED_VAR(int, COLOR_PAIRS);
+NCURSES_WRAPPED_VAR(int, COLS);
+NCURSES_WRAPPED_VAR(int, ESCDELAY);
+NCURSES_WRAPPED_VAR(int, LINES);
+NCURSES_WRAPPED_VAR(int, TABSIZE);
+
+#define curscr      NCURSES_PUBLIC_VAR(curscr())
+#define newscr      NCURSES_PUBLIC_VAR(newscr())
+#define stdscr      NCURSES_PUBLIC_VAR(stdscr())
+#define ttytype     NCURSES_PUBLIC_VAR(ttytype())
+#define COLORS      NCURSES_PUBLIC_VAR(COLORS())
+#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS())
+#define COLS        NCURSES_PUBLIC_VAR(COLS())
+#define ESCDELAY    NCURSES_PUBLIC_VAR(ESCDELAY())
+#define LINES       NCURSES_PUBLIC_VAR(LINES())
+#define TABSIZE     NCURSES_PUBLIC_VAR(TABSIZE())
+
+#else
+
+extern NCURSES_EXPORT_VAR(WINDOW *) curscr;
+extern NCURSES_EXPORT_VAR(WINDOW *) newscr;
+extern NCURSES_EXPORT_VAR(WINDOW *) stdscr;
+extern NCURSES_EXPORT_VAR(char) ttytype[];
+extern NCURSES_EXPORT_VAR(int) COLORS;
+extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
+extern NCURSES_EXPORT_VAR(int) COLS;
+extern NCURSES_EXPORT_VAR(int) ESCDELAY;
+extern NCURSES_EXPORT_VAR(int) LINES;
+extern NCURSES_EXPORT_VAR(int) TABSIZE;
+
+#endif
+
+/*
+ * Pseudo-character tokens outside ASCII range.  The curses wgetch() function
+ * will return any given one of these only if the corresponding k- capability
+ * is defined in your terminal's terminfo entry.
+ *
+ * Some keys (KEY_A1, etc) are arranged like this:
+ *	a1     up    a3
+ *	left   b2    right
+ *	c1     down  c3
+ *
+ * A few key codes do not depend upon the terminfo entry.
+ */
+#define KEY_CODE_YES	0400		/* A wchar_t contains a key code */
+#define KEY_MIN		0401		/* Minimum curses key */
+#define KEY_BREAK	0401		/* Break key (unreliable) */
+#define KEY_SRESET	0530		/* Soft (partial) reset (unreliable) */
+#define KEY_RESET	0531		/* Reset or hard reset (unreliable) */
diff --git a/include/eti.h b/include/eti.h
new file mode 100644
index 0000000..baa6190
--- /dev/null
+++ b/include/eti.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ * Copyright (c) 1998-2002,2003 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
+ ****************************************************************************/
+
+/* $Id: eti.h,v 1.8 2003/10/25 15:24:29 tom Exp $ */
+
+#ifndef NCURSES_ETI_H_incl
+#define NCURSES_ETI_H_incl 1
+
+#define	E_OK			(0)
+#define	E_SYSTEM_ERROR	 	(-1)
+#define	E_BAD_ARGUMENT	 	(-2)
+#define	E_POSTED	 	(-3)
+#define	E_CONNECTED	 	(-4)
+#define	E_BAD_STATE	 	(-5)
+#define	E_NO_ROOM	 	(-6)
+#define	E_NOT_POSTED		(-7)
+#define	E_UNKNOWN_COMMAND	(-8)
+#define	E_NO_MATCH		(-9)
+#define	E_NOT_SELECTABLE	(-10)
+#define	E_NOT_CONNECTED	        (-11)
+#define	E_REQUEST_DENIED	(-12)
+#define	E_INVALID_FIELD	        (-13)
+#define	E_CURRENT		(-14)
+
+#endif
diff --git a/include/form.h b/include/form.h
new file mode 100644
index 0000000..a4691a8
--- /dev/null
+++ b/include/form.h
@@ -0,0 +1,403 @@
+/****************************************************************************
+ * Copyright (c) 1998-2003,2004 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
+ ****************************************************************************/
+
+/* $Id: form.h,v 0.20 2004/12/04 22:22:10 tom Exp $ */
+
+#ifndef FORM_H
+#define FORM_H
+
+#include <curses.h>
+#include <eti.h>
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+#ifndef FORM_PRIV_H
+typedef void *FIELD_CELL;
+#endif
+
+#ifndef NCURSES_FIELD_INTERNALS
+#define NCURSES_FIELD_INTERNALS /* nothing */
+#endif
+
+typedef int Form_Options;
+typedef int Field_Options;
+
+	/**********
+	*  _PAGE  *
+	**********/
+
+typedef struct {
+  short pmin;		/* index of first field on page			*/
+  short pmax;		/* index of last field on page			*/
+  short smin;		/* index of top leftmost field on page		*/
+  short smax;		/* index of bottom rightmost field on page	*/
+} _PAGE;
+
+	/**********
+	*  FIELD  *
+	**********/
+
+typedef struct fieldnode {
+  unsigned short	status;		/* flags			*/
+  short			rows;		/* size in rows			*/
+  short			cols;		/* size in cols			*/
+  short			frow;		/* first row			*/
+  short			fcol;		/* first col			*/
+  int			drows;		/* dynamic rows			*/
+  int			dcols;		/* dynamic cols			*/
+  int			maxgrow;	/* maximum field growth		*/
+  int			nrow;		/* off-screen rows		*/
+  short			nbuf;		/* additional buffers		*/
+  short			just;		/* justification		*/
+  short			page;		/* page on form			*/
+  short			index;		/* into form -> field		*/
+  int			pad;		/* pad character		*/
+  chtype		fore;		/* foreground attribute		*/
+  chtype		back;		/* background attribute		*/
+  Field_Options		opts;		/* options			*/
+  struct fieldnode *	snext;		/* sorted order pointer		*/
+  struct fieldnode *	sprev;		/* sorted order pointer		*/
+  struct fieldnode *	link;		/* linked field chain		*/
+  struct formnode *	form;		/* containing form		*/
+  struct typenode *	type;		/* field type			*/
+  void *		arg;		/* argument for type		*/
+  FIELD_CELL *		buf;		/* field buffers		*/
+  void *		usrptr;		/* user pointer			*/
+  /*
+   * The wide-character configuration requires extra information.  Because
+   * there are existing applications that manipulate the members of FIELD
+   * directly, we cannot make the struct opaque.  Offsets of members up to
+   * this point are the same in the narrow- and wide-character configuration.
+   * But note that the type of buf depends on the configuration, and is made
+   * opaque for that reason.
+   */
+  NCURSES_FIELD_INTERNALS
+} FIELD;
+
+	/**************
+	*  FIELDTYPE  *
+	**************/
+
+typedef struct typenode {
+  unsigned short	status;			/* flags		*/
+  long			ref;			/* reference count	*/
+  struct typenode *	left;			/* ptr to operand for | */
+  struct typenode *	right;			/* ptr to operand for | */
+
+  void* (*makearg)(va_list *);			/* make fieldtype arg	*/
+  void* (*copyarg)(const void *);		/* copy fieldtype arg	*/
+  void	(*freearg)(void *);			/* free fieldtype arg	*/
+
+  bool	(*fcheck)(FIELD *,const void *);	/* field validation	*/
+  bool	(*ccheck)(int,const void *);		/* character validation */
+
+  bool	(*next)(FIELD *,const void *);		/* enumerate next value */
+  bool	(*prev)(FIELD *,const void *);		/* enumerate prev value */
+
+} FIELDTYPE;
+
+	/*********
+	*  FORM  *
+	*********/
+
+typedef struct formnode {
+  unsigned short	status;		/* flags			*/
+  short			rows;		/* size in rows			*/
+  short			cols;		/* size in cols			*/
+  int			currow;		/* current row in field window	*/
+  int			curcol;		/* current col in field window	*/
+  int			toprow;		/* in scrollable field window	*/
+  int			begincol;	/* in horiz. scrollable field	*/
+  short			maxfield;	/* number of fields		*/
+  short			maxpage;	/* number of pages		*/
+  short			curpage;	/* index into page		*/
+  Form_Options		opts;		/* options			*/
+  WINDOW *		win;		/* window			*/
+  WINDOW *		sub;		/* subwindow			*/
+  WINDOW *		w;		/* window for current field	*/
+  FIELD **		field;		/* field [maxfield]		*/
+  FIELD *		current;	/* current field		*/
+  _PAGE *		page;		/* page [maxpage]		*/
+  void *		usrptr;		/* user pointer			*/
+
+  void			(*forminit)(struct formnode *);
+  void			(*formterm)(struct formnode *);
+  void			(*fieldinit)(struct formnode *);
+  void			(*fieldterm)(struct formnode *);
+
+} FORM;
+
+typedef void (*Form_Hook)(FORM *);
+
+	/***************************
+	*  miscellaneous #defines  *
+	***************************/
+
+/* field justification */
+#define NO_JUSTIFICATION	(0)
+#define JUSTIFY_LEFT		(1)
+#define JUSTIFY_CENTER		(2)
+#define JUSTIFY_RIGHT		(3)
+
+/* field options */
+#define O_VISIBLE		(0x0001U)
+#define O_ACTIVE		(0x0002U)
+#define O_PUBLIC		(0x0004U)
+#define O_EDIT			(0x0008U)
+#define O_WRAP			(0x0010U)
+#define O_BLANK			(0x0020U)
+#define O_AUTOSKIP		(0x0040U)
+#define O_NULLOK		(0x0080U)
+#define O_PASSOK		(0x0100U)
+#define O_STATIC		(0x0200U)
+
+/* form options */
+#define O_NL_OVERLOAD		(0x0001U)
+#define O_BS_OVERLOAD		(0x0002U)
+
+/* form driver commands */
+#define REQ_NEXT_PAGE	 (KEY_MAX + 1)	/* move to next page		*/
+#define REQ_PREV_PAGE	 (KEY_MAX + 2)	/* move to previous page	*/
+#define REQ_FIRST_PAGE	 (KEY_MAX + 3)	/* move to first page		*/
+#define REQ_LAST_PAGE	 (KEY_MAX + 4)	/* move to last page		*/
+
+#define REQ_NEXT_FIELD	 (KEY_MAX + 5)	/* move to next field		*/
+#define REQ_PREV_FIELD	 (KEY_MAX + 6)	/* move to previous field	*/
+#define REQ_FIRST_FIELD	 (KEY_MAX + 7)	/* move to first field		*/
+#define REQ_LAST_FIELD	 (KEY_MAX + 8)	/* move to last field		*/
+#define REQ_SNEXT_FIELD	 (KEY_MAX + 9)	/* move to sorted next field	*/
+#define REQ_SPREV_FIELD	 (KEY_MAX + 10)	/* move to sorted prev field	*/
+#define REQ_SFIRST_FIELD (KEY_MAX + 11)	/* move to sorted first field	*/
+#define REQ_SLAST_FIELD	 (KEY_MAX + 12)	/* move to sorted last field	*/
+#define REQ_LEFT_FIELD	 (KEY_MAX + 13)	/* move to left to field	*/
+#define REQ_RIGHT_FIELD	 (KEY_MAX + 14)	/* move to right to field	*/
+#define REQ_UP_FIELD	 (KEY_MAX + 15)	/* move to up to field		*/
+#define REQ_DOWN_FIELD	 (KEY_MAX + 16)	/* move to down to field	*/
+
+#define REQ_NEXT_CHAR	 (KEY_MAX + 17)	/* move to next char in field	*/
+#define REQ_PREV_CHAR	 (KEY_MAX + 18)	/* move to prev char in field	*/
+#define REQ_NEXT_LINE	 (KEY_MAX + 19)	/* move to next line in field	*/
+#define REQ_PREV_LINE	 (KEY_MAX + 20)	/* move to prev line in field	*/
+#define REQ_NEXT_WORD	 (KEY_MAX + 21)	/* move to next word in field	*/
+#define REQ_PREV_WORD	 (KEY_MAX + 22)	/* move to prev word in field	*/
+#define REQ_BEG_FIELD	 (KEY_MAX + 23)	/* move to first char in field	*/
+#define REQ_END_FIELD	 (KEY_MAX + 24)	/* move after last char in fld	*/
+#define REQ_BEG_LINE	 (KEY_MAX + 25)	/* move to beginning of line	*/
+#define REQ_END_LINE	 (KEY_MAX + 26)	/* move after last char in line	*/
+#define REQ_LEFT_CHAR	 (KEY_MAX + 27)	/* move left in field		*/
+#define REQ_RIGHT_CHAR	 (KEY_MAX + 28)	/* move right in field		*/
+#define REQ_UP_CHAR	 (KEY_MAX + 29)	/* move up in field		*/
+#define REQ_DOWN_CHAR	 (KEY_MAX + 30)	/* move down in field		*/
+
+#define REQ_NEW_LINE	 (KEY_MAX + 31)	/* insert/overlay new line	*/
+#define REQ_INS_CHAR	 (KEY_MAX + 32)	/* insert blank char at cursor	*/
+#define REQ_INS_LINE	 (KEY_MAX + 33)	/* insert blank line at cursor	*/
+#define REQ_DEL_CHAR	 (KEY_MAX + 34)	/* delete char at cursor	*/
+#define REQ_DEL_PREV	 (KEY_MAX + 35)	/* delete char before cursor	*/
+#define REQ_DEL_LINE	 (KEY_MAX + 36)	/* delete line at cursor	*/
+#define REQ_DEL_WORD	 (KEY_MAX + 37)	/* delete word at cursor	*/
+#define REQ_CLR_EOL	 (KEY_MAX + 38)	/* clear to end of line		*/
+#define REQ_CLR_EOF	 (KEY_MAX + 39)	/* clear to end of field	*/
+#define REQ_CLR_FIELD	 (KEY_MAX + 40)	/* clear entire field		*/
+#define REQ_OVL_MODE	 (KEY_MAX + 41)	/* begin overlay mode		*/
+#define REQ_INS_MODE	 (KEY_MAX + 42)	/* begin insert mode		*/
+#define REQ_SCR_FLINE	 (KEY_MAX + 43)	/* scroll field forward a line	*/
+#define REQ_SCR_BLINE	 (KEY_MAX + 44)	/* scroll field backward a line	*/
+#define REQ_SCR_FPAGE	 (KEY_MAX + 45)	/* scroll field forward a page	*/
+#define REQ_SCR_BPAGE	 (KEY_MAX + 46)	/* scroll field backward a page	*/
+#define REQ_SCR_FHPAGE	 (KEY_MAX + 47) /* scroll field forward	 half page */
+#define REQ_SCR_BHPAGE	 (KEY_MAX + 48) /* scroll field backward half page */
+#define REQ_SCR_FCHAR	 (KEY_MAX + 49) /* horizontal scroll char	*/
+#define REQ_SCR_BCHAR	 (KEY_MAX + 50) /* horizontal scroll char	*/
+#define REQ_SCR_HFLINE	 (KEY_MAX + 51) /* horizontal scroll line	*/
+#define REQ_SCR_HBLINE	 (KEY_MAX + 52) /* horizontal scroll line	*/
+#define REQ_SCR_HFHALF	 (KEY_MAX + 53) /* horizontal scroll half line	*/
+#define REQ_SCR_HBHALF	 (KEY_MAX + 54) /* horizontal scroll half line	*/
+
+#define REQ_VALIDATION	 (KEY_MAX + 55)	/* validate field		*/
+#define REQ_NEXT_CHOICE	 (KEY_MAX + 56)	/* display next field choice	*/
+#define REQ_PREV_CHOICE	 (KEY_MAX + 57)	/* display prev field choice	*/
+
+#define MIN_FORM_COMMAND (KEY_MAX + 1)	/* used by form_driver		*/
+#define MAX_FORM_COMMAND (KEY_MAX + 57)	/* used by form_driver		*/
+
+#if defined(MAX_COMMAND)
+#  if (MAX_FORM_COMMAND > MAX_COMMAND)
+#    error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND
+#  elif (MAX_COMMAND != (KEY_MAX + 128))
+#    error Something is wrong -- MAX_COMMAND is already inconsistently defined.
+#  endif
+#else
+#  define MAX_COMMAND (KEY_MAX + 128)
+#endif
+
+	/*************************
+	*  standard field types  *
+	*************************/
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
+
+	/************************************
+	*  built-in additional field types  *
+	*  They are not defined in SVr4     *
+	************************************/
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4;      /* Internet IP Version 4 address */
+
+	/***********************
+	*   Default objects    *
+	***********************/
+extern NCURSES_EXPORT_VAR(FORM *)	_nc_Default_Form;
+extern NCURSES_EXPORT_VAR(FIELD *)	_nc_Default_Field;
+
+
+	/***********************
+	*  FIELDTYPE routines  *
+	***********************/
+extern NCURSES_EXPORT(FIELDTYPE *) new_fieldtype (
+		    bool (* const field_check)(FIELD *,const void *),
+		    bool (* const char_check)(int,const void *));
+extern NCURSES_EXPORT(FIELDTYPE *) link_fieldtype(
+		    FIELDTYPE *, FIELDTYPE *);
+
+extern NCURSES_EXPORT(int)	free_fieldtype (FIELDTYPE *);
+extern NCURSES_EXPORT(int)	set_fieldtype_arg (FIELDTYPE *,
+		    void * (* const make_arg)(va_list *),
+		    void * (* const copy_arg)(const void *),
+		    void (* const free_arg)(void *));
+extern NCURSES_EXPORT(int)	 set_fieldtype_choice (FIELDTYPE *,
+		    bool (* const next_choice)(FIELD *,const void *),
+	      	    bool (* const prev_choice)(FIELD *,const void *));
+
+	/*******************
+	*  FIELD routines  *
+	*******************/
+extern NCURSES_EXPORT(FIELD *)	new_field (int,int,int,int,int,int);
+extern NCURSES_EXPORT(FIELD *)	dup_field (FIELD *,int,int);
+extern NCURSES_EXPORT(FIELD *)	link_field (FIELD *,int,int);
+
+extern NCURSES_EXPORT(int)	free_field (FIELD *);
+extern NCURSES_EXPORT(int)	field_info (const FIELD *,int *,int *,int *,int *,int *,int *);
+extern NCURSES_EXPORT(int)	dynamic_field_info (const FIELD *,int *,int *,int *);
+extern NCURSES_EXPORT(int)	set_max_field ( FIELD *,int);
+extern NCURSES_EXPORT(int)	move_field (FIELD *,int,int);
+extern NCURSES_EXPORT(int)	set_field_type (FIELD *,FIELDTYPE *,...);
+extern NCURSES_EXPORT(int)	set_new_page (FIELD *,bool);
+extern NCURSES_EXPORT(int)	set_field_just (FIELD *,int);
+extern NCURSES_EXPORT(int)	field_just (const FIELD *);
+extern NCURSES_EXPORT(int)	set_field_fore (FIELD *,chtype);
+extern NCURSES_EXPORT(int)	set_field_back (FIELD *,chtype);
+extern NCURSES_EXPORT(int)	set_field_pad (FIELD *,int);
+extern NCURSES_EXPORT(int)	field_pad (const FIELD *);
+extern NCURSES_EXPORT(int)	set_field_buffer (FIELD *,int,const char *);
+extern NCURSES_EXPORT(int)	set_field_status (FIELD *,bool);
+extern NCURSES_EXPORT(int)	set_field_userptr (FIELD *, void *);
+extern NCURSES_EXPORT(int)	set_field_opts (FIELD *,Field_Options);
+extern NCURSES_EXPORT(int)	field_opts_on (FIELD *,Field_Options);
+extern NCURSES_EXPORT(int)	field_opts_off (FIELD *,Field_Options);
+
+extern NCURSES_EXPORT(chtype)	field_fore (const FIELD *);
+extern NCURSES_EXPORT(chtype)	field_back (const FIELD *);
+
+extern NCURSES_EXPORT(bool)	new_page (const FIELD *);
+extern NCURSES_EXPORT(bool)	field_status (const FIELD *);
+
+extern NCURSES_EXPORT(void *)	field_arg (const FIELD *);
+
+extern NCURSES_EXPORT(void *)	field_userptr (const FIELD *);
+
+extern NCURSES_EXPORT(FIELDTYPE *)	field_type (const FIELD *);
+
+extern NCURSES_EXPORT(char *)	field_buffer (const FIELD *,int);
+
+extern NCURSES_EXPORT(Field_Options)	field_opts (const FIELD *);
+
+	/******************
+	*  FORM routines  *
+	******************/
+
+extern NCURSES_EXPORT(FORM *)	new_form (FIELD **);
+
+extern NCURSES_EXPORT(FIELD **)	form_fields (const FORM *);
+extern NCURSES_EXPORT(FIELD *)	current_field (const FORM *);
+
+extern NCURSES_EXPORT(WINDOW *)	form_win (const FORM *);
+extern NCURSES_EXPORT(WINDOW *)	form_sub (const FORM *);
+
+extern NCURSES_EXPORT(Form_Hook)	form_init (const FORM *);
+extern NCURSES_EXPORT(Form_Hook)	form_term (const FORM *);
+extern NCURSES_EXPORT(Form_Hook)	field_init (const FORM *);
+extern NCURSES_EXPORT(Form_Hook)	field_term (const FORM *);
+
+extern NCURSES_EXPORT(int)	free_form (FORM *);
+extern NCURSES_EXPORT(int)	set_form_fields (FORM *,FIELD **);
+extern NCURSES_EXPORT(int)	field_count (const FORM *);
+extern NCURSES_EXPORT(int)	set_form_win (FORM *,WINDOW *);
+extern NCURSES_EXPORT(int)	set_form_sub (FORM *,WINDOW *);
+extern NCURSES_EXPORT(int)	set_current_field (FORM *,FIELD *);
+extern NCURSES_EXPORT(int)	field_index (const FIELD *);
+extern NCURSES_EXPORT(int)	set_form_page (FORM *,int);
+extern NCURSES_EXPORT(int)	form_page (const FORM *);
+extern NCURSES_EXPORT(int)	scale_form (const FORM *,int *,int *);
+extern NCURSES_EXPORT(int)	set_form_init (FORM *,Form_Hook);
+extern NCURSES_EXPORT(int)	set_form_term (FORM *,Form_Hook);
+extern NCURSES_EXPORT(int)	set_field_init (FORM *,Form_Hook);
+extern NCURSES_EXPORT(int)	set_field_term (FORM *,Form_Hook);
+extern NCURSES_EXPORT(int)	post_form (FORM *);
+extern NCURSES_EXPORT(int)	unpost_form (FORM *);
+extern NCURSES_EXPORT(int)	pos_form_cursor (FORM *);
+extern NCURSES_EXPORT(int)	form_driver (FORM *,int);
+extern NCURSES_EXPORT(int)	set_form_userptr (FORM *,void *);
+extern NCURSES_EXPORT(int)	set_form_opts (FORM *,Form_Options);
+extern NCURSES_EXPORT(int)	form_opts_on (FORM *,Form_Options);
+extern NCURSES_EXPORT(int)	form_opts_off (FORM *,Form_Options);
+extern NCURSES_EXPORT(int)	form_request_by_name (const char *);
+
+extern NCURSES_EXPORT(const char *)	form_request_name (int);
+
+extern NCURSES_EXPORT(void *)	form_userptr (const FORM *);
+
+extern NCURSES_EXPORT(Form_Options)	form_opts (const FORM *);
+
+extern NCURSES_EXPORT(bool)	data_ahead (const FORM *);
+extern NCURSES_EXPORT(bool)	data_behind (const FORM *);
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif	/* FORM_H */
diff --git a/include/hashsize.h b/include/hashsize.h
new file mode 100644
index 0000000..478fd59
--- /dev/null
+++ b/include/hashsize.h
@@ -0,0 +1,6 @@
+/*
+ * hashsize.h -- hash and token table constants
+ */
+
+#define CAPTABSIZE	497
+#define HASHTABSIZE	(497 * 2)
diff --git a/include/menu.h b/include/menu.h
new file mode 100644
index 0000000..84352eb
--- /dev/null
+++ b/include/menu.h
@@ -0,0 +1,256 @@
+/****************************************************************************
+ * Copyright (c) 1998-2003,2007 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
+ ****************************************************************************/
+
+/* $Id: menu.h,v 1.19 2007/02/24 17:32:13 tom Exp $ */
+
+#ifndef ETI_MENU
+#define ETI_MENU
+
+#ifdef AMIGA
+#define TEXT TEXT_ncurses
+#endif
+
+#include <curses.h>
+#include <eti.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int Menu_Options;
+typedef int Item_Options;
+
+/* Menu options: */
+#define O_ONEVALUE      (0x01)
+#define O_SHOWDESC      (0x02)
+#define O_ROWMAJOR      (0x04)
+#define O_IGNORECASE    (0x08)
+#define O_SHOWMATCH     (0x10)
+#define O_NONCYCLIC     (0x20)
+
+/* Item options: */
+#define O_SELECTABLE    (0x01)
+
+typedef struct
+{
+  const char* str;
+  unsigned short length;
+} TEXT;
+
+typedef struct tagITEM 
+{
+  TEXT           name;        /* name of menu item                         */
+  TEXT           description; /* description of item, optional in display  */ 
+  struct tagMENU *imenu;      /* Pointer to parent menu                    */
+  void           *userptr;    /* Pointer to user defined per item data     */ 
+  Item_Options   opt;         /* Item options                              */ 
+  short          index;       /* Item number if connected to a menu        */
+  short          y;           /* y and x location of item in menu          */
+  short          x;
+  bool           value;       /* Selection value                           */
+                             
+  struct tagITEM *left;       /* neighbor items                            */
+  struct tagITEM *right;
+  struct tagITEM *up;
+  struct tagITEM *down;
+
+} ITEM;
+
+typedef void (*Menu_Hook)(struct tagMENU *);
+
+typedef struct tagMENU 
+{
+  short          height;                /* Nr. of chars high               */
+  short          width;                 /* Nr. of chars wide               */
+  short          rows;                  /* Nr. of items high               */
+  short          cols;                  /* Nr. of items wide               */
+  short          frows;                 /* Nr. of formatted items high     */
+  short          fcols;                 /* Nr. of formatted items wide     */
+  short          arows;                 /* Nr. of items high (actual)      */
+  short          namelen;               /* Max. name length                */
+  short          desclen;               /* Max. description length         */
+  short          marklen;               /* Length of mark, if any          */
+  short          itemlen;               /* Length of one item              */
+  short          spc_desc;              /* Spacing for descriptor          */
+  short          spc_cols;              /* Spacing for columns             */
+  short          spc_rows;              /* Spacing for rows                */ 
+  char          *pattern;               /* Buffer to store match chars     */
+  short          pindex;                /* Index into pattern buffer       */
+  WINDOW        *win;                   /* Window containing menu          */
+  WINDOW        *sub;                   /* Subwindow for menu display      */
+  WINDOW        *userwin;               /* User's window                   */
+  WINDOW        *usersub;               /* User's subwindow                */
+  ITEM          **items;                /* array of items                  */ 
+  short          nitems;                /* Nr. of items in menu            */
+  ITEM          *curitem;               /* Current item                    */
+  short          toprow;                /* Top row of menu                 */
+  chtype         fore;                  /* Selection attribute             */
+  chtype         back;                  /* Nonselection attribute          */
+  chtype         grey;                  /* Inactive attribute              */
+  unsigned char  pad;                   /* Pad character                   */
+
+  Menu_Hook      menuinit;              /* User hooks                      */
+  Menu_Hook      menuterm;
+  Menu_Hook      iteminit;
+  Menu_Hook      itemterm;
+
+  void          *userptr;               /* Pointer to menus user data      */
+  char          *mark;                  /* Pointer to marker string        */
+
+  Menu_Options   opt;                   /* Menu options                    */
+  unsigned short status;                /* Internal state of menu          */
+
+} MENU;
+
+
+/* Define keys */
+
+#define REQ_LEFT_ITEM           (KEY_MAX + 1)
+#define REQ_RIGHT_ITEM          (KEY_MAX + 2)
+#define REQ_UP_ITEM             (KEY_MAX + 3)
+#define REQ_DOWN_ITEM           (KEY_MAX + 4)
+#define REQ_SCR_ULINE           (KEY_MAX + 5)
+#define REQ_SCR_DLINE           (KEY_MAX + 6)
+#define REQ_SCR_DPAGE           (KEY_MAX + 7)
+#define REQ_SCR_UPAGE           (KEY_MAX + 8)
+#define REQ_FIRST_ITEM          (KEY_MAX + 9)
+#define REQ_LAST_ITEM           (KEY_MAX + 10)
+#define REQ_NEXT_ITEM           (KEY_MAX + 11)
+#define REQ_PREV_ITEM           (KEY_MAX + 12)
+#define REQ_TOGGLE_ITEM         (KEY_MAX + 13)
+#define REQ_CLEAR_PATTERN       (KEY_MAX + 14)
+#define REQ_BACK_PATTERN        (KEY_MAX + 15)
+#define REQ_NEXT_MATCH          (KEY_MAX + 16)
+#define REQ_PREV_MATCH          (KEY_MAX + 17)
+
+#define MIN_MENU_COMMAND        (KEY_MAX + 1)
+#define MAX_MENU_COMMAND        (KEY_MAX + 17)
+
+/*
+ * Some AT&T code expects MAX_COMMAND to be out-of-band not
+ * just for menu commands but for forms ones as well.
+ */
+#if defined(MAX_COMMAND)
+#  if (MAX_MENU_COMMAND > MAX_COMMAND)
+#    error Something is wrong -- MAX_MENU_COMMAND is greater than MAX_COMMAND
+#  elif (MAX_COMMAND != (KEY_MAX + 128))
+#    error Something is wrong -- MAX_COMMAND is already inconsistently defined.
+#  endif
+#else
+#  define MAX_COMMAND (KEY_MAX + 128)
+#endif
+
+
+/* --------- prototypes for libmenu functions ----------------------------- */
+
+extern NCURSES_EXPORT(ITEM **)	menu_items (const MENU *);
+extern NCURSES_EXPORT(ITEM *)	current_item (const MENU *);
+extern NCURSES_EXPORT(ITEM *)	new_item (const char *,const char *);
+
+extern NCURSES_EXPORT(MENU *)	new_menu (ITEM **);
+
+extern NCURSES_EXPORT(Item_Options)	item_opts (const ITEM *);
+extern NCURSES_EXPORT(Menu_Options)	menu_opts (const MENU *);
+
+extern NCURSES_EXPORT(Menu_Hook)	item_init (const MENU *);
+extern NCURSES_EXPORT(Menu_Hook)	item_term (const MENU *);
+extern NCURSES_EXPORT(Menu_Hook)	menu_init (const MENU *);
+extern NCURSES_EXPORT(Menu_Hook)	menu_term (const MENU *);
+
+extern NCURSES_EXPORT(WINDOW *)	menu_sub (const MENU *);
+extern NCURSES_EXPORT(WINDOW *)	menu_win (const MENU *);
+
+extern NCURSES_EXPORT(const char *)	item_description (const ITEM *);
+extern NCURSES_EXPORT(const char *)	item_name (const ITEM *);
+extern NCURSES_EXPORT(const char *)	menu_mark (const MENU *);
+extern NCURSES_EXPORT(const char *)	menu_request_name (int);
+
+extern NCURSES_EXPORT(char *)	menu_pattern (const MENU *);
+
+extern NCURSES_EXPORT(void *)	menu_userptr (const MENU *);
+extern NCURSES_EXPORT(void *)	item_userptr (const ITEM *);
+
+extern NCURSES_EXPORT(chtype)	menu_back (const MENU *);
+extern NCURSES_EXPORT(chtype)	menu_fore (const MENU *);
+extern NCURSES_EXPORT(chtype)	menu_grey (const MENU *);
+
+extern NCURSES_EXPORT(int)	free_item (ITEM *);
+extern NCURSES_EXPORT(int)	free_menu (MENU *);
+extern NCURSES_EXPORT(int)	item_count (const MENU *);
+extern NCURSES_EXPORT(int)	item_index (const ITEM *);
+extern NCURSES_EXPORT(int)	item_opts_off (ITEM *,Item_Options);
+extern NCURSES_EXPORT(int)	item_opts_on (ITEM *,Item_Options);
+extern NCURSES_EXPORT(int)	menu_driver (MENU *,int);
+extern NCURSES_EXPORT(int)	menu_opts_off (MENU *,Menu_Options);
+extern NCURSES_EXPORT(int)	menu_opts_on (MENU *,Menu_Options);
+extern NCURSES_EXPORT(int)	menu_pad (const MENU *);
+extern NCURSES_EXPORT(int)	pos_menu_cursor (const MENU *);
+extern NCURSES_EXPORT(int)	post_menu (MENU *);
+extern NCURSES_EXPORT(int)	scale_menu (const MENU *,int *,int *);
+extern NCURSES_EXPORT(int)	set_current_item (MENU *menu,ITEM *item);
+extern NCURSES_EXPORT(int)	set_item_init (MENU *, Menu_Hook);
+extern NCURSES_EXPORT(int)	set_item_opts (ITEM *,Item_Options);
+extern NCURSES_EXPORT(int)	set_item_term (MENU *, Menu_Hook);
+extern NCURSES_EXPORT(int)	set_item_userptr (ITEM *, void *);
+extern NCURSES_EXPORT(int)	set_item_value (ITEM *,bool);
+extern NCURSES_EXPORT(int)	set_menu_back (MENU *,chtype);
+extern NCURSES_EXPORT(int)	set_menu_fore (MENU *,chtype);
+extern NCURSES_EXPORT(int)	set_menu_format (MENU *,int,int);
+extern NCURSES_EXPORT(int)	set_menu_grey (MENU *,chtype);
+extern NCURSES_EXPORT(int)	set_menu_init (MENU *, Menu_Hook);
+extern NCURSES_EXPORT(int)	set_menu_items (MENU *,ITEM **);
+extern NCURSES_EXPORT(int)	set_menu_mark (MENU *, const char *);
+extern NCURSES_EXPORT(int)	set_menu_opts (MENU *,Menu_Options);
+extern NCURSES_EXPORT(int)	set_menu_pad (MENU *,int);
+extern NCURSES_EXPORT(int)	set_menu_pattern (MENU *,const char *);
+extern NCURSES_EXPORT(int)	set_menu_sub (MENU *,WINDOW *);
+extern NCURSES_EXPORT(int)	set_menu_term (MENU *, Menu_Hook);
+extern NCURSES_EXPORT(int)	set_menu_userptr (MENU *,void *);
+extern NCURSES_EXPORT(int)	set_menu_win (MENU *,WINDOW *);
+extern NCURSES_EXPORT(int)	set_top_row (MENU *,int);
+extern NCURSES_EXPORT(int)	top_row (const MENU *);
+extern NCURSES_EXPORT(int)	unpost_menu (MENU *);
+extern NCURSES_EXPORT(int)	menu_request_by_name (const char *);
+extern NCURSES_EXPORT(int)	set_menu_spacing (MENU *,int,int,int);
+extern NCURSES_EXPORT(int)	menu_spacing (const MENU *,int *,int *,int *);
+
+
+extern NCURSES_EXPORT(bool)	item_value (const ITEM *);
+extern NCURSES_EXPORT(bool)	item_visible (const ITEM *);
+
+extern NCURSES_EXPORT(void)	menu_format (const MENU *,int *,int *);
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif /* ETI_MENU */
diff --git a/include/mf_common.h b/include/mf_common.h
new file mode 100644
index 0000000..681672d
--- /dev/null
+++ b/include/mf_common.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+ * Copyright (c) 1998-2003,2004 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
+ ****************************************************************************/
+
+/* $Id: mf_common.h,v 0.22 2005/11/26 15:26:52 tom Exp $ */
+
+/* Common internal header for menu and form library */
+
+#ifndef MF_COMMON_H_incl
+#define MF_COMMON_H_incl 1
+
+#include <ncurses_cfg.h>
+#include <curses.h>
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+
+#if DECL_ERRNO
+extern int errno;
+#endif
+
+/* in case of debug version we ignore the suppression of assertions */
+#ifdef TRACE
+#  ifdef NDEBUG
+#    undef NDEBUG
+#  endif
+#endif
+
+#include <nc_alloc.h>
+
+#if USE_RCS_IDS
+#define MODULE_ID(id) static const char Ident[] = id;
+#else
+#define MODULE_ID(id) /*nothing*/
+#endif
+
+
+/* Maximum regular 8-bit character code */
+#define MAX_REGULAR_CHARACTER (0xff)
+
+#define SET_ERROR(code) (errno=(code))
+#define GET_ERROR()     (errno)
+
+#ifdef TRACE
+#define RETURN(code)    returnCode( SET_ERROR(code) )
+#else
+#define RETURN(code)    return( SET_ERROR(code) )
+#endif
+
+/* The few common values in the status fields for menus and forms */
+#define _POSTED         (0x01U)  /* menu or form is posted                  */
+#define _IN_DRIVER      (0x02U)  /* menu or form is processing hook routine */
+
+/* Call object hook */
+#define Call_Hook( object, handler ) \
+   if ( (object) != 0 && ((object)->handler) != (void *) 0 )\
+   {\
+	(object)->status |= _IN_DRIVER;\
+	(object)->handler(object);\
+	(object)->status &= ~_IN_DRIVER;\
+   }
+
+#endif /* MF_COMMON_H_incl */
diff --git a/include/ncurses_cfg.h b/include/ncurses_cfg.h
new file mode 100644
index 0000000..19a1d82
--- /dev/null
+++ b/include/ncurses_cfg.h
@@ -0,0 +1,174 @@
+/* include/ncurses_cfg.h.  Generated automatically by configure.  */
+/****************************************************************************
+ * Copyright (c) 1998-2004,2005 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1997                        *
+ ****************************************************************************/
+/*
+ * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $
+ *
+ * This is a template-file used to generate the "ncurses_cfg.h" file.
+ *
+ * Rather than list every definition, the configuration script substitutes the
+ * definitions that it finds using 'sed'.  You need a patch (original date
+ * 971222) to autoconf 2.12 or 2.13 to do this.
+ *
+ * See:
+ *	http://invisible-island.net/autoconf/
+ *	ftp://invisible-island.net/autoconf/
+ */
+#ifndef NC_CONFIG_H
+#define NC_CONFIG_H
+
+#define SYSTEM_NAME "eabi"
+#define CC_HAS_PROTOS 1
+#if 0
+void exit (int);
+#endif
+#define HAVE_LONG_FILE_NAMES 1
+#define MIXEDCASE_FILENAMES 1
+#define USE_DATABASE 1
+#define TERMINFO_DIRS "/usr/local/share/terminfo"
+#define TERMINFO "/usr/local/share/terminfo"
+#define PURE_TERMINFO 1
+#define USE_HOME_TERMINFO 1
+#define USE_ROOT_ENVIRON 1
+#define HAVE_REMOVE 1
+#define HAVE_UNLINK 1
+#define HAVE_LINK 1
+#define HAVE_SYMLINK 1
+#define USE_LINKS 1
+#define HAVE_FSEEKO 1
+#define HAVE_CURSES_VERSION 1
+#define HAVE_HAS_KEY 1
+#define HAVE_RESIZETERM 1
+#define HAVE_RESIZE_TERM 1
+#define HAVE_USE_DEFAULT_COLORS 1
+#define HAVE_WRESIZE 1
+#define NCURSES_EXT_FUNCS 1
+#define NCURSES_NO_PADDING 1
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define SIZEOF_SIGNED_CHAR 1
+#define USE_SIGWINCH 1
+#define USE_ASSUMED_COLOR 1
+#define USE_HASHMAP 1
+#define GCC_SCANF 1
+#define GCC_PRINTF 1
+#define GCC_UNUSED __attribute__((unused))
+#define GCC_NORETURN __attribute__((noreturn))
+#define NDEBUG 1
+#define HAVE_NC_ALLOC_H 1
+#define HAVE_GETTIMEOFDAY 1
+#define STDC_HEADERS 1
+#define HAVE_DIRENT_H 1
+#define TIME_WITH_SYS_TIME 1
+#define HAVE_FCNTL_H 1
+#define HAVE_GETOPT_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_POLL_H 1
+#define HAVE_SYS_IOCTL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_POLL_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TIMES_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_WCTYPE_H 1
+#define HAVE_SYS_TIME_SELECT 1
+#define SIG_ATOMIC_T volatile sig_atomic_t
+#define TYPEOF_CHTYPE long
+#define HAVE_GETCWD 1
+#define HAVE_GETEGID 1
+#define HAVE_GETEUID 1
+#define HAVE_ISSETUGID 1
+#define HAVE_POLL 1
+#define HAVE_REMOVE 1
+#define HAVE_SELECT 1
+#define HAVE_SETBUF 1
+#define HAVE_SETBUFFER 1
+#define HAVE_SETVBUF 1
+#define HAVE_SIGACTION 1
+#define HAVE_STRDUP 1
+#define HAVE_STRSTR 1
+#define HAVE_TCGETPGRP 1
+#define HAVE_TIMES 1
+#define HAVE_VSNPRINTF 1
+#define HAVE_ISASCII 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_TCGETATTR 1
+#define HAVE_VSSCANF 1
+#define RETSIGTYPE void
+#define HAVE_SIZECHANGE 1
+#define HAVE_IOSTREAM 1
+#define HAVE_TYPEINFO 1
+#define CPP_HAS_STATIC_CAST 1
+#define HAVE_SLK_COLOR 1
+#define HAVE_PANEL_H 1
+#define HAVE_LIBPANEL 1
+#define HAVE_MENU_H 1
+#define HAVE_LIBMENU 1
+#define HAVE_FORM_H 1
+#define HAVE_LIBFORM 1
+#define NCURSES_PATHSEP ':'
+#define NCURSES_VERSION_STRING "5.7.20081102"
+
+#include <ncurses_def.h>
+
+	/* The C compiler may not treat these properly but C++ has to */
+#ifdef __cplusplus
+#undef const
+#undef inline
+#else
+#if defined(lint) || defined(TRACE)
+#undef inline
+#define inline /* nothing */
+#endif
+#endif
+
+	/* On HP-UX, the C compiler doesn't grok mbstate_t without
+	   -D_XOPEN_SOURCE=500. However, this causes problems on
+	   IRIX. So, we #define mbstate_t to int in configure.in
+	   only for the C compiler if needed. */
+#ifndef __cplusplus
+#ifdef NEED_MBSTATE_T_DEF
+#define mbstate_t int
+#endif
+#endif
+
+#endif /* NC_CONFIG_H */
diff --git a/include/ncurses_def.h b/include/ncurses_def.h
new file mode 100644
index 0000000..9dd8d90
--- /dev/null
+++ b/include/ncurses_def.h
@@ -0,0 +1,708 @@
+/*
+ * This file is generated by ./MKncurses_def.sh
+ */
+
+#ifndef NC_DEFINE_H
+#define NC_DEFINE_H 1
+
+#ifndef BROKEN_LINKER
+#define BROKEN_LINKER 0
+#endif
+
+#ifndef BSD_TPUTS
+#define BSD_TPUTS 0
+#endif
+
+#ifndef CC_HAS_PROTOS
+#define CC_HAS_PROTOS 0
+#endif
+
+#ifndef CPP_HAS_PARAM_INIT
+#define CPP_HAS_PARAM_INIT 0
+#endif
+
+#ifndef CURSES_ACS_ARRAY
+#define CURSES_ACS_ARRAY acs_map
+#endif
+
+#ifndef CURSES_WACS_ARRAY
+#define CURSES_WACS_ARRAY _nc_wacs
+#endif
+
+#ifndef DECL_ERRNO
+#define DECL_ERRNO 0
+#endif
+
+#ifndef ETIP_NEEDS_MATH_H
+#define ETIP_NEEDS_MATH_H 0
+#endif
+
+#ifndef GCC_NORETURN
+#define GCC_NORETURN /* nothing */
+#endif
+
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+
+#ifndef HAVE_BIG_CORE
+#define HAVE_BIG_CORE 0
+#endif
+
+#ifndef HAVE_BSD_CGETENT
+#define HAVE_BSD_CGETENT 0
+#endif
+
+#ifndef HAVE_BSD_SIGNAL_H
+#define HAVE_BSD_SIGNAL_H 0
+#endif
+
+#ifndef HAVE_BTOWC
+#define HAVE_BTOWC 0
+#endif
+
+#ifndef HAVE_BUILTIN_H
+#define HAVE_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_CHGAT
+#define HAVE_CHGAT 1
+#endif
+
+#ifndef HAVE_COLOR_SET
+#define HAVE_COLOR_SET 1
+#endif
+
+#ifndef HAVE_DIRENT_H
+#define HAVE_DIRENT_H 0
+#endif
+
+#ifndef HAVE_ERRNO
+#define HAVE_ERRNO 0
+#endif
+
+#ifndef HAVE_FCNTL_H
+#define HAVE_FCNTL_H 0
+#endif
+
+#ifndef HAVE_FILTER
+#define HAVE_FILTER 1
+#endif
+
+#ifndef HAVE_FORM_H
+#define HAVE_FORM_H 0
+#endif
+
+#ifndef HAVE_GETBEGX
+#define HAVE_GETBEGX 1
+#endif
+
+#ifndef HAVE_GETCURX
+#define HAVE_GETCURX 1
+#endif
+
+#ifndef HAVE_GETCWD
+#define HAVE_GETCWD 0
+#endif
+
+#ifndef HAVE_GETEGID
+#define HAVE_GETEGID 0
+#endif
+
+#ifndef HAVE_GETEUID
+#define HAVE_GETEUID 0
+#endif
+
+#ifndef HAVE_GETMAXX
+#define HAVE_GETMAXX 1
+#endif
+
+#ifndef HAVE_GETNSTR
+#define HAVE_GETNSTR 0
+#endif
+
+#ifndef HAVE_GETOPT_H
+#define HAVE_GETOPT_H 0
+#endif
+
+#ifndef HAVE_GETPARX
+#define HAVE_GETPARX 1
+#endif
+
+#ifndef HAVE_GETTIMEOFDAY
+#define HAVE_GETTIMEOFDAY 0
+#endif
+
+#ifndef HAVE_GETTTYNAM
+#define HAVE_GETTTYNAM 0
+#endif
+
+#ifndef HAVE_GETWIN
+#define HAVE_GETWIN 1
+#endif
+
+#ifndef HAVE_GPM_H
+#define HAVE_GPM_H 0
+#endif
+
+#ifndef HAVE_GPP_BUILTIN_H
+#define HAVE_GPP_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_GXX_BUILTIN_H
+#define HAVE_GXX_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_HAS_KEY
+#define HAVE_HAS_KEY 0
+#endif
+
+#ifndef HAVE_IOSTREAM
+#define HAVE_IOSTREAM 0
+#endif
+
+#ifndef HAVE_ISASCII
+#define HAVE_ISASCII 0
+#endif
+
+#ifndef HAVE_ISSETUGID
+#define HAVE_ISSETUGID 0
+#endif
+
+#ifndef HAVE_LANGINFO_CODESET
+#define HAVE_LANGINFO_CODESET 0
+#endif
+
+#ifndef HAVE_LIBC_H
+#define HAVE_LIBC_H 0
+#endif
+
+#ifndef HAVE_LIBDBMALLOC
+#define HAVE_LIBDBMALLOC 0
+#endif
+
+#ifndef HAVE_LIBDMALLOC
+#define HAVE_LIBDMALLOC 0
+#endif
+
+#ifndef HAVE_LIBFORM
+#define HAVE_LIBFORM 0
+#endif
+
+#ifndef HAVE_LIBGPM
+#define HAVE_LIBGPM 0
+#endif
+
+#ifndef HAVE_LIBMENU
+#define HAVE_LIBMENU 0
+#endif
+
+#ifndef HAVE_LIBMPATROL
+#define HAVE_LIBMPATROL 0
+#endif
+
+#ifndef HAVE_LIBPANEL
+#define HAVE_LIBPANEL 0
+#endif
+
+#ifndef HAVE_LIMITS_H
+#define HAVE_LIMITS_H 0
+#endif
+
+#ifndef HAVE_LINK
+#define HAVE_LINK 0
+#endif
+
+#ifndef HAVE_LOCALE_H
+#define HAVE_LOCALE_H 0
+#endif
+
+#ifndef HAVE_LONG_FILE_NAMES
+#define HAVE_LONG_FILE_NAMES 0
+#endif
+
+#ifndef HAVE_MBLEN
+#define HAVE_MBLEN 0
+#endif
+
+#ifndef HAVE_MBRLEN
+#define HAVE_MBRLEN 0
+#endif
+
+#ifndef HAVE_MBRTOWC
+#define HAVE_MBRTOWC 0
+#endif
+
+#ifndef HAVE_MBSRTOWCS
+#define HAVE_MBSRTOWCS 0
+#endif
+
+#ifndef HAVE_MBSTOWCS
+#define HAVE_MBSTOWCS 0
+#endif
+
+#ifndef HAVE_MBTOWC
+#define HAVE_MBTOWC 0
+#endif
+
+#ifndef HAVE_MENU_H
+#define HAVE_MENU_H 0
+#endif
+
+#ifndef HAVE_MKSTEMP
+#define HAVE_MKSTEMP 0
+#endif
+
+#ifndef HAVE_MVVLINE
+#define HAVE_MVVLINE 1
+#endif
+
+#ifndef HAVE_MVWVLINE
+#define HAVE_MVWVLINE 1
+#endif
+
+#ifndef HAVE_NANOSLEEP
+#define HAVE_NANOSLEEP 0
+#endif
+
+#ifndef HAVE_NC_ALLOC_H
+#define HAVE_NC_ALLOC_H 0
+#endif
+
+#ifndef HAVE_PANEL_H
+#define HAVE_PANEL_H 0
+#endif
+
+#ifndef HAVE_POLL
+#define HAVE_POLL 0
+#endif
+
+#ifndef HAVE_POLL_H
+#define HAVE_POLL_H 0
+#endif
+
+#ifndef HAVE_PURIFY
+#define HAVE_PURIFY 0
+#endif
+
+#ifndef HAVE_PUTWC
+#define HAVE_PUTWC 0
+#endif
+
+#ifndef HAVE_PUTWIN
+#define HAVE_PUTWIN 1
+#endif
+
+#ifndef HAVE_REGEXPR_H_FUNCS
+#define HAVE_REGEXPR_H_FUNCS 0
+#endif
+
+#ifndef HAVE_REGEXP_H_FUNCS
+#define HAVE_REGEXP_H_FUNCS 0
+#endif
+
+#ifndef HAVE_REGEX_H_FUNCS
+#define HAVE_REGEX_H_FUNCS 0
+#endif
+
+#ifndef HAVE_REMOVE
+#define HAVE_REMOVE 0
+#endif
+
+#ifndef HAVE_RESIZETERM
+#define HAVE_RESIZETERM 0
+#endif
+
+#ifndef HAVE_RESIZE_TERM
+#define HAVE_RESIZE_TERM 0
+#endif
+
+#ifndef HAVE_RIPOFFLINE
+#define HAVE_RIPOFFLINE 1
+#endif
+
+#ifndef HAVE_SELECT
+#define HAVE_SELECT 0
+#endif
+
+#ifndef HAVE_SETBUF
+#define HAVE_SETBUF 0
+#endif
+
+#ifndef HAVE_SETBUFFER
+#define HAVE_SETBUFFER 0
+#endif
+
+#ifndef HAVE_SETUPTERM
+#define HAVE_SETUPTERM 1
+#endif
+
+#ifndef HAVE_SETVBUF
+#define HAVE_SETVBUF 0
+#endif
+
+#ifndef HAVE_SIGACTION
+#define HAVE_SIGACTION 0
+#endif
+
+#ifndef HAVE_SIGVEC
+#define HAVE_SIGVEC 0
+#endif
+
+#ifndef HAVE_SIZECHANGE
+#define HAVE_SIZECHANGE 0
+#endif
+
+#ifndef HAVE_SLK_COLOR
+#define HAVE_SLK_COLOR 0
+#endif
+
+#ifndef HAVE_SLK_INIT
+#define HAVE_SLK_INIT 1
+#endif
+
+#ifndef HAVE_STRDUP
+#define HAVE_STRDUP 0
+#endif
+
+#ifndef HAVE_STRSTR
+#define HAVE_STRSTR 0
+#endif
+
+#ifndef HAVE_SYMLINK
+#define HAVE_SYMLINK 0
+#endif
+
+#ifndef HAVE_SYS_BSDTYPES_H
+#define HAVE_SYS_BSDTYPES_H 0
+#endif
+
+#ifndef HAVE_SYS_IOCTL_H
+#define HAVE_SYS_IOCTL_H 0
+#endif
+
+#ifndef HAVE_SYS_PARAM_H
+#define HAVE_SYS_PARAM_H 0
+#endif
+
+#ifndef HAVE_SYS_POLL_H
+#define HAVE_SYS_POLL_H 0
+#endif
+
+#ifndef HAVE_SYS_SELECT_H
+#define HAVE_SYS_SELECT_H 0
+#endif
+
+#ifndef HAVE_SYS_TERMIO_H
+#define HAVE_SYS_TERMIO_H 0
+#endif
+
+#ifndef HAVE_SYS_TIMES_H
+#define HAVE_SYS_TIMES_H 0
+#endif
+
+#ifndef HAVE_SYS_TIME_H
+#define HAVE_SYS_TIME_H 0
+#endif
+
+#ifndef HAVE_SYS_TIME_SELECT
+#define HAVE_SYS_TIME_SELECT 0
+#endif
+
+#ifndef HAVE_TCGETATTR
+#define HAVE_TCGETATTR 0
+#endif
+
+#ifndef HAVE_TCGETPGRP
+#define HAVE_TCGETPGRP 0
+#endif
+
+#ifndef HAVE_TELL
+#define HAVE_TELL 0
+#endif
+
+#ifndef HAVE_TERMATTRS
+#define HAVE_TERMATTRS 1
+#endif
+
+#ifndef HAVE_TERMIOS_H
+#define HAVE_TERMIOS_H 0
+#endif
+
+#ifndef HAVE_TERMIO_H
+#define HAVE_TERMIO_H 0
+#endif
+
+#ifndef HAVE_TERMNAME
+#define HAVE_TERMNAME 1
+#endif
+
+#ifndef HAVE_TERM_H
+#define HAVE_TERM_H 1
+#endif
+
+#ifndef HAVE_TGETENT
+#define HAVE_TGETENT 1
+#endif
+
+#ifndef HAVE_TIGETNUM
+#define HAVE_TIGETNUM 1
+#endif
+
+#ifndef HAVE_TIGETSTR
+#define HAVE_TIGETSTR 1
+#endif
+
+#ifndef HAVE_TIMES
+#define HAVE_TIMES 0
+#endif
+
+#ifndef HAVE_TTYENT_H
+#define HAVE_TTYENT_H 0
+#endif
+
+#ifndef HAVE_TYPEAHEAD
+#define HAVE_TYPEAHEAD 1
+#endif
+
+#ifndef HAVE_TYPEINFO
+#define HAVE_TYPEINFO 0
+#endif
+
+#ifndef HAVE_TYPE_ATTR_T
+#define HAVE_TYPE_ATTR_T 0
+#endif
+
+#ifndef HAVE_TYPE_SIGACTION
+#define HAVE_TYPE_SIGACTION 0
+#endif
+
+#ifndef HAVE_UNISTD_H
+#define HAVE_UNISTD_H 0
+#endif
+
+#ifndef HAVE_UNLINK
+#define HAVE_UNLINK 0
+#endif
+
+#ifndef HAVE_USE_DEFAULT_COLORS
+#define HAVE_USE_DEFAULT_COLORS 0
+#endif
+
+#ifndef HAVE_VFSCANF
+#define HAVE_VFSCANF 0
+#endif
+
+#ifndef HAVE_VSNPRINTF
+#define HAVE_VSNPRINTF 0
+#endif
+
+#ifndef HAVE_VSSCANF
+#define HAVE_VSSCANF 0
+#endif
+
+#ifndef HAVE_WCSRTOMBS
+#define HAVE_WCSRTOMBS 0
+#endif
+
+#ifndef HAVE_WCSTOMBS
+#define HAVE_WCSTOMBS 0
+#endif
+
+#ifndef HAVE_WCTOB
+#define HAVE_WCTOB 0
+#endif
+
+#ifndef HAVE_WCTOMB
+#define HAVE_WCTOMB 0
+#endif
+
+#ifndef HAVE_WCTYPE_H
+#define HAVE_WCTYPE_H 0
+#endif
+
+#ifndef HAVE_WINSSTR
+#define HAVE_WINSSTR 1
+#endif
+
+#ifndef HAVE_WORKING_POLL
+#define HAVE_WORKING_POLL 0
+#endif
+
+#ifndef HAVE_WRESIZE
+#define HAVE_WRESIZE 0
+#endif
+
+#ifndef HAVE__DOSCAN
+#define HAVE__DOSCAN 0
+#endif
+
+#ifndef MIXEDCASE_FILENAMES
+#define MIXEDCASE_FILENAMES 0
+#endif
+
+#ifndef NCURSES_CHAR_EQ
+#define NCURSES_CHAR_EQ 0
+#endif
+
+#ifndef NCURSES_EXPANDED
+#define NCURSES_EXPANDED 0
+#endif
+
+#ifndef NCURSES_EXT_COLORS
+#define NCURSES_EXT_COLORS 0
+#endif
+
+#ifndef NCURSES_EXT_FUNCS
+#define NCURSES_EXT_FUNCS 0
+#endif
+
+#ifndef NCURSES_NO_PADDING
+#define NCURSES_NO_PADDING 0
+#endif
+
+#ifndef NCURSES_PATHSEP
+#define NCURSES_PATHSEP ':'
+#endif
+
+#ifndef NDEBUG
+#define NDEBUG 0
+#endif
+
+#ifndef NEED_PTEM_H
+#define NEED_PTEM_H 0
+#endif
+
+#ifndef NO_LEAKS
+#define NO_LEAKS 0
+#endif
+
+#ifndef PURE_TERMINFO
+#define PURE_TERMINFO 0
+#endif
+
+#ifndef RETSIGTYPE
+#define RETSIGTYPE 0
+#endif
+
+#ifndef STDC_HEADERS
+#define STDC_HEADERS 0
+#endif
+
+#ifndef SVR4_ACTION
+#define SVR4_ACTION 0
+#endif
+
+#ifndef SVR4_TERMIO
+#define SVR4_TERMIO 0
+#endif
+
+#ifndef SYSTEM_NAME
+#define SYSTEM_NAME "unknown"
+#endif
+
+#ifndef TERMINFO
+#define TERMINFO "none"
+#endif
+
+#ifndef TERMPATH
+#define TERMPATH "none"
+#endif
+
+#ifndef TIME_WITH_SYS_TIME
+#define TIME_WITH_SYS_TIME 0
+#endif
+
+#ifndef TYPEOF_CHTYPE
+#define TYPEOF_CHTYPE 0
+#endif
+
+#ifndef USE_COLORFGBG
+#define USE_COLORFGBG 0
+#endif
+
+#ifndef USE_DATABASE
+#define USE_DATABASE 0
+#endif
+
+#ifndef USE_GETCAP
+#define USE_GETCAP 0
+#endif
+
+#ifndef USE_GETCAP_CACHE
+#define USE_GETCAP_CACHE 0
+#endif
+
+#ifndef USE_HARD_TABS
+#define USE_HARD_TABS 0
+#endif
+
+#ifndef USE_HASHED_DB
+#define USE_HASHED_DB 0
+#endif
+
+#ifndef USE_HASHMAP
+#define USE_HASHMAP 0
+#endif
+
+#ifndef USE_HOME_TERMINFO
+#define USE_HOME_TERMINFO 0
+#endif
+
+#ifndef USE_LINKS
+#define USE_LINKS 0
+#endif
+
+#ifndef USE_MY_MEMMOVE
+#define USE_MY_MEMMOVE 0
+#endif
+
+#ifndef USE_OK_BCOPY
+#define USE_OK_BCOPY 0
+#endif
+
+#ifndef USE_RCS_IDS
+#define USE_RCS_IDS 0
+#endif
+
+#ifndef USE_REENTRANT
+#define USE_REENTRANT 0
+#endif
+
+#ifndef USE_SAFE_SPRINTF
+#define USE_SAFE_SPRINTF 0
+#endif
+
+#ifndef USE_SCROLL_HINTS
+#define USE_SCROLL_HINTS 0
+#endif
+
+#ifndef USE_SIGWINCH
+#define USE_SIGWINCH 0
+#endif
+
+#ifndef USE_SYMLINKS
+#define USE_SYMLINKS 0
+#endif
+
+#ifndef USE_SYSMOUSE
+#define USE_SYSMOUSE 0
+#endif
+
+#ifndef USE_TERMCAP
+#define USE_TERMCAP 0
+#endif
+
+#ifndef USE_WEAK_SYMBOLS
+#define USE_WEAK_SYMBOLS 0
+#endif
+
+#ifndef USE_WIDEC_SUPPORT
+#define USE_WIDEC_SUPPORT 0
+#endif
+
+#ifndef USE_XMC_SUPPORT
+#define USE_XMC_SUPPORT 0
+#endif
+
+#endif /* NC_DEFINE_H */
diff --git a/include/panel.h b/include/panel.h
new file mode 100644
index 0000000..1e02091
--- /dev/null
+++ b/include/panel.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+ * Copyright (c) 1998-2001,2006 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995                    *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+/* $Id: panel.h,v 1.10 2006/05/27 19:49:40 tom Exp $ */
+
+/* panel.h -- interface file for panels library */
+
+#ifndef NCURSES_PANEL_H_incl
+#define NCURSES_PANEL_H_incl 1
+
+#include <curses.h>
+
+typedef struct panel
+{
+  WINDOW *win;
+  struct panel *below;
+  struct panel *above;
+  NCURSES_CONST void *user;
+} PANEL;
+
+#if	defined(__cplusplus)
+extern "C" {
+#endif
+
+extern NCURSES_EXPORT(WINDOW*) panel_window (const PANEL *);
+extern NCURSES_EXPORT(void)    update_panels (void);
+extern NCURSES_EXPORT(int)     hide_panel (PANEL *);
+extern NCURSES_EXPORT(int)     show_panel (PANEL *);
+extern NCURSES_EXPORT(int)     del_panel (PANEL *);
+extern NCURSES_EXPORT(int)     top_panel (PANEL *);
+extern NCURSES_EXPORT(int)     bottom_panel (PANEL *);
+extern NCURSES_EXPORT(PANEL*)  new_panel (WINDOW *);
+extern NCURSES_EXPORT(PANEL*)  panel_above (const PANEL *);
+extern NCURSES_EXPORT(PANEL*)  panel_below (const PANEL *);
+extern NCURSES_EXPORT(int)     set_panel_userptr (PANEL *, NCURSES_CONST void *);
+extern NCURSES_EXPORT(NCURSES_CONST void*) panel_userptr (const PANEL *);
+extern NCURSES_EXPORT(int)     move_panel (PANEL *, int, int);
+extern NCURSES_EXPORT(int)     replace_panel (PANEL *,WINDOW *);
+extern NCURSES_EXPORT(int)     panel_hidden (const PANEL *);
+
+#if	defined(__cplusplus)
+}
+#endif
+
+#endif /* NCURSES_PANEL_H_incl */
+
+/* end of panel.h */
diff --git a/include/parametrized.h b/include/parametrized.h
new file mode 100644
index 0000000..950a947
--- /dev/null
+++ b/include/parametrized.h
@@ -0,0 +1,560 @@
+/*
+ * parametrized.h --- is a termcap capability parametrized?
+ *
+ * Note: this file is generated using MKparametrized.sh, do not edit by hand.
+ * A value of -1 in the table means suppress both pad and % translations.
+ * A value of 0 in the table means do pad but not % translations.
+ * A value of 1 in the table means do both pad and % translations.
+ */
+
+static short const parametrized[] = {
+0,	/*  cbt  */
+0,	/*  bel  */
+0,	/*  cr  */
+1,	/*  csr  */
+0,	/*  tbc  */
+0,	/*  clear  */
+0,	/*  el  */
+0,	/*  ed  */
+1,	/*  hpa  */
+0,	/*  cmdch  */
+1,	/*  cup  */
+0,	/*  cud1  */
+0,	/*  home  */
+0,	/*  civis  */
+0,	/*  cub1  */
+1,	/*  mrcup  */
+0,	/*  cnorm  */
+0,	/*  cuf1  */
+0,	/*  ll  */
+0,	/*  cuu1  */
+0,	/*  cvvis  */
+0,	/*  dch1  */
+0,	/*  dl1  */
+0,	/*  dsl  */
+0,	/*  hd  */
+0,	/*  smacs  */
+0,	/*  blink  */
+0,	/*  bold  */
+0,	/*  smcup  */
+0,	/*  smdc  */
+0,	/*  dim  */
+0,	/*  smir  */
+0,	/*  invis  */
+0,	/*  prot  */
+0,	/*  rev  */
+0,	/*  smso  */
+0,	/*  smul  */
+1,	/*  ech  */
+0,	/*  rmacs  */
+0,	/*  sgr0  */
+0,	/*  rmcup  */
+0,	/*  rmdc  */
+0,	/*  rmir  */
+0,	/*  rmso  */
+0,	/*  rmul  */
+0,	/*  flash  */
+0,	/*  ff  */
+0,	/*  fsl  */
+0,	/*  is1  */
+0,	/*  is2  */
+0,	/*  is3  */
+0,	/*  if  */
+0,	/*  ich1  */
+0,	/*  il1  */
+0,	/*  ip  */
+0,	/*  kbs  */
+0,	/*  ktbc  */
+0,	/*  kclr  */
+0,	/*  kctab  */
+0,	/*  kdch1  */
+0,	/*  kdl1  */
+0,	/*  kcud1  */
+0,	/*  krmir  */
+0,	/*  kel  */
+0,	/*  ked  */
+0,	/*  kf0  */
+0,	/*  kf1  */
+0,	/*  kf10  */
+0,	/*  kf2  */
+0,	/*  kf3  */
+0,	/*  kf4  */
+0,	/*  kf5  */
+0,	/*  kf6  */
+0,	/*  kf7  */
+0,	/*  kf8  */
+0,	/*  kf9  */
+0,	/*  khome  */
+0,	/*  kich1  */
+0,	/*  kil1  */
+0,	/*  kcub1  */
+0,	/*  kll  */
+0,	/*  knp  */
+0,	/*  kpp  */
+0,	/*  kcuf1  */
+0,	/*  kind  */
+0,	/*  kri  */
+0,	/*  khts  */
+0,	/*  kcuu1  */
+0,	/*  rmkx  */
+0,	/*  smkx  */
+0,	/*  lf0  */
+0,	/*  lf1  */
+0,	/*  lf10  */
+0,	/*  lf2  */
+0,	/*  lf3  */
+0,	/*  lf4  */
+0,	/*  lf5  */
+0,	/*  lf6  */
+0,	/*  lf7  */
+0,	/*  lf8  */
+0,	/*  lf9  */
+0,	/*  rmm  */
+0,	/*  smm  */
+0,	/*  nel  */
+0,	/*  pad  */
+1,	/*  dch  */
+1,	/*  dl  */
+1,	/*  cud  */
+1,	/*  ich  */
+1,	/*  indn  */
+1,	/*  il  */
+1,	/*  cub  */
+1,	/*  cuf  */
+1,	/*  rin  */
+1,	/*  cuu  */
+1,	/*  pfkey  */
+1,	/*  pfloc  */
+1,	/*  pfx  */
+0,	/*  mc0  */
+0,	/*  mc4  */
+0,	/*  mc5  */
+1,	/*  rep  */
+0,	/*  rs1  */
+0,	/*  rs2  */
+0,	/*  rs3  */
+0,	/*  rf  */
+0,	/*  rc  */
+1,	/*  vpa  */
+0,	/*  sc  */
+0,	/*  ind  */
+0,	/*  ri  */
+1,	/*  sgr  */
+0,	/*  hts  */
+1,	/*  wind  */
+0,	/*  ht  */
+1,	/*  tsl  */
+0,	/*  uc  */
+0,	/*  hu  */
+0,	/*  iprog  */
+0,	/*  ka1  */
+0,	/*  ka3  */
+0,	/*  kb2  */
+0,	/*  kc1  */
+0,	/*  kc3  */
+1,	/*  mc5p  */
+0,	/*  rmp  */
+-1,	/*  acsc  */
+1,	/*  pln  */
+0,	/*  kcbt  */
+0,	/*  smxon  */
+0,	/*  rmxon  */
+0,	/*  smam  */
+0,	/*  rmam  */
+0,	/*  xonc  */
+0,	/*  xoffc  */
+0,	/*  enacs  */
+0,	/*  smln  */
+0,	/*  rmln  */
+0,	/*  kbeg  */
+0,	/*  kcan  */
+0,	/*  kclo  */
+0,	/*  kcmd  */
+0,	/*  kcpy  */
+0,	/*  kcrt  */
+0,	/*  kend  */
+0,	/*  kent  */
+0,	/*  kext  */
+0,	/*  kfnd  */
+0,	/*  khlp  */
+0,	/*  kmrk  */
+0,	/*  kmsg  */
+0,	/*  kmov  */
+0,	/*  knxt  */
+0,	/*  kopn  */
+0,	/*  kopt  */
+0,	/*  kprv  */
+0,	/*  kprt  */
+0,	/*  krdo  */
+0,	/*  kref  */
+0,	/*  krfr  */
+0,	/*  krpl  */
+0,	/*  krst  */
+0,	/*  kres  */
+0,	/*  ksav  */
+0,	/*  kspd  */
+0,	/*  kund  */
+0,	/*  kBEG  */
+0,	/*  kCAN  */
+0,	/*  kCMD  */
+0,	/*  kCPY  */
+0,	/*  kCRT  */
+0,	/*  kDC  */
+0,	/*  kDL  */
+0,	/*  kslt  */
+0,	/*  kEND  */
+0,	/*  kEOL  */
+0,	/*  kEXT  */
+0,	/*  kFND  */
+1,	/*  kHLP  */
+1,	/*  kHOM  */
+1,	/*  kIC  */
+1,	/*  kLFT  */
+0,	/*  kMSG  */
+0,	/*  kMOV  */
+0,	/*  kNXT  */
+0,	/*  kOPT  */
+0,	/*  kPRV  */
+0,	/*  kPRT  */
+0,	/*  kRDO  */
+0,	/*  kRPL  */
+0,	/*  kRIT  */
+0,	/*  kRES  */
+0,	/*  kSAV  */
+0,	/*  kSPD  */
+0,	/*  kUND  */
+0,	/*  rfi  */
+0,	/*  kf11  */
+0,	/*  kf12  */
+0,	/*  kf13  */
+0,	/*  kf14  */
+0,	/*  kf15  */
+0,	/*  kf16  */
+0,	/*  kf17  */
+0,	/*  kf18  */
+0,	/*  kf19  */
+0,	/*  kf20  */
+0,	/*  kf21  */
+0,	/*  kf22  */
+0,	/*  kf23  */
+0,	/*  kf24  */
+0,	/*  kf25  */
+0,	/*  kf26  */
+0,	/*  kf27  */
+0,	/*  kf28  */
+0,	/*  kf29  */
+0,	/*  kf30  */
+0,	/*  kf31  */
+0,	/*  kf32  */
+0,	/*  kf33  */
+0,	/*  kf34  */
+0,	/*  kf35  */
+0,	/*  kf36  */
+0,	/*  kf37  */
+0,	/*  kf38  */
+0,	/*  kf39  */
+0,	/*  kf40  */
+0,	/*  kf41  */
+0,	/*  kf42  */
+0,	/*  kf43  */
+0,	/*  kf44  */
+0,	/*  kf45  */
+0,	/*  kf46  */
+0,	/*  kf47  */
+0,	/*  kf48  */
+0,	/*  kf49  */
+0,	/*  kf50  */
+0,	/*  kf51  */
+0,	/*  kf52  */
+0,	/*  kf53  */
+0,	/*  kf54  */
+0,	/*  kf55  */
+0,	/*  kf56  */
+0,	/*  kf57  */
+0,	/*  kf58  */
+0,	/*  kf59  */
+0,	/*  kf60  */
+0,	/*  kf61  */
+0,	/*  kf62  */
+0,	/*  kf63  */
+0,	/*  el1  */
+0,	/*  mgc  */
+0,	/*  smgl  */
+0,	/*  smgr  */
+0,	/*  fln  */
+1,	/*  sclk  */
+0,	/*  dclk  */
+0,	/*  rmclk  */
+1,	/*  cwin  */
+1,	/*  wingo  */
+0,	/*  hup  */
+1,	/*  dial  */
+1,	/*  qdial  */
+0,	/*  tone  */
+0,	/*  pulse  */
+0,	/*  hook  */
+0,	/*  pause  */
+0,	/*  wait  */
+1,	/*  u0  */
+1,	/*  u1  */
+1,	/*  u2  */
+1,	/*  u3  */
+1,	/*  u4  */
+1,	/*  u5  */
+1,	/*  u6  */
+1,	/*  u7  */
+1,	/*  u8  */
+1,	/*  u9  */
+0,	/*  op  */
+0,	/*  oc  */
+1,	/*  initc  */
+1,	/*  initp  */
+1,	/*  scp  */
+1,	/*  setf  */
+1,	/*  setb  */
+1,	/*  cpi  */
+1,	/*  lpi  */
+1,	/*  chr  */
+1,	/*  cvr  */
+1,	/*  defc  */
+0,	/*  swidm  */
+0,	/*  sdrfq  */
+0,	/*  sitm  */
+0,	/*  slm  */
+0,	/*  smicm  */
+0,	/*  snlq  */
+0,	/*  snrmq  */
+0,	/*  sshm  */
+0,	/*  ssubm  */
+0,	/*  ssupm  */
+0,	/*  sum  */
+0,	/*  rwidm  */
+0,	/*  ritm  */
+0,	/*  rlm  */
+0,	/*  rmicm  */
+0,	/*  rshm  */
+0,	/*  rsubm  */
+0,	/*  rsupm  */
+0,	/*  rum  */
+0,	/*  mhpa  */
+0,	/*  mcud1  */
+0,	/*  mcub1  */
+0,	/*  mcuf1  */
+1,	/*  mvpa  */
+0,	/*  mcuu1  */
+0,	/*  porder  */
+0,	/*  mcud  */
+0,	/*  mcub  */
+0,	/*  mcuf  */
+0,	/*  mcuu  */
+1,	/*  scs  */
+0,	/*  smgb  */
+1,	/*  smgbp  */
+1,	/*  smglp  */
+1,	/*  smgrp  */
+0,	/*  smgt  */
+1,	/*  smgtp  */
+0,	/*  sbim  */
+1,	/*  scsd  */
+0,	/*  rbim  */
+1,	/*  rcsd  */
+0,	/*  subcs  */
+0,	/*  supcs  */
+0,	/*  docr  */
+0,	/*  zerom  */
+1,	/*  csnm  */
+0,	/*  kmous  */
+0,	/*  minfo  */
+0,	/*  reqmp  */
+1,	/*  getm  */
+1,	/*  setaf  */
+1,	/*  setab  */
+1,	/*  pfxl  */
+0,	/*  devt  */
+0,	/*  csin  */
+0,	/*  s0ds  */
+0,	/*  s1ds  */
+0,	/*  s2ds  */
+0,	/*  s3ds  */
+1,	/*  smglr  */
+1,	/*  smgtb  */
+1,	/*  birep  */
+0,	/*  binel  */
+0,	/*  bicr  */
+1,	/*  colornm  */
+0,	/*  defbi  */
+0,	/*  endbi  */
+1,	/*  setcolor  */
+1,	/*  slines  */
+1,	/*  dispc  */
+0,	/*  smpch  */
+0,	/*  rmpch  */
+0,	/*  smsc  */
+0,	/*  rmsc  */
+0,	/*  pctrm  */
+0,	/*  scesc  */
+0,	/*  scesa  */
+0,	/*  ehhlm  */
+0,	/*  elhlm  */
+0,	/*  elohlm  */
+0,	/*  erhlm  */
+0,	/*  ethlm  */
+0,	/*  evhlm  */
+1,	/*  sgr1  */
+1,	/*  slength  */
+0,	/*  OTi2  */
+0,	/*  OTrs  */
+0,	/*  OTnl  */
+0,	/*  OTbc  */
+0,	/*  OTko  */
+0,	/*  OTma  */
+-1,	/*  OTG2  */
+-1,	/*  OTG3  */
+-1,	/*  OTG1  */
+-1,	/*  OTG4  */
+-1,	/*  OTGR  */
+-1,	/*  OTGL  */
+-1,	/*  OTGU  */
+-1,	/*  OTGD  */
+-1,	/*  OTGH  */
+-1,	/*  OTGV  */
+-1,	/*  OTGC  */
+0,	/*  meml  */
+0,	/*  memu  */
+1,	/*  pln  */
+0,	/*  smln  */
+0,	/*  rmln  */
+0,	/*  kf11  */
+0,	/*  kf12  */
+0,	/*  kf13  */
+0,	/*  kf14  */
+0,	/*  kf15  */
+0,	/*  kf16  */
+0,	/*  kf17  */
+0,	/*  kf18  */
+0,	/*  kf19  */
+0,	/*  kf20  */
+0,	/*  kf21  */
+0,	/*  kf22  */
+0,	/*  kf23  */
+0,	/*  kf24  */
+0,	/*  kf25  */
+0,	/*  kf26  */
+0,	/*  kf27  */
+0,	/*  kf28  */
+0,	/*  kf29  */
+0,	/*  kf30  */
+0,	/*  kf31  */
+0,	/*  kf32  */
+0,	/*  kf33  */
+0,	/*  kf34  */
+0,	/*  kf35  */
+0,	/*  kf36  */
+0,	/*  kf37  */
+0,	/*  kf38  */
+0,	/*  kf39  */
+0,	/*  kf40  */
+0,	/*  kf41  */
+0,	/*  kf42  */
+0,	/*  kf43  */
+0,	/*  kf44  */
+0,	/*  kf45  */
+0,	/*  kf46  */
+0,	/*  kf47  */
+0,	/*  kf48  */
+0,	/*  kf49  */
+0,	/*  kf50  */
+0,	/*  kf51  */
+0,	/*  kf52  */
+0,	/*  kf53  */
+0,	/*  kf54  */
+0,	/*  kf55  */
+0,	/*  kf56  */
+0,	/*  kf57  */
+0,	/*  kf58  */
+0,	/*  kf59  */
+0,	/*  kf60  */
+0,	/*  kf61  */
+0,	/*  kf62  */
+0,	/*  kf63  */
+0,	/*  box1  */
+0,	/*  box2  */
+0,	/*  batt1  */
+0,	/*  batt2  */
+0,	/*  colb0  */
+0,	/*  colb1  */
+0,	/*  colb2  */
+0,	/*  colb3  */
+0,	/*  colb4  */
+0,	/*  colb5  */
+0,	/*  colb6  */
+0,	/*  colb7  */
+0,	/*  colf0  */
+0,	/*  colf1  */
+0,	/*  colf2  */
+0,	/*  colf3  */
+0,	/*  colf4  */
+0,	/*  colf5  */
+0,	/*  colf6  */
+0,	/*  colf7  */
+0,	/*  font0  */
+0,	/*  font1  */
+0,	/*  font2  */
+0,	/*  font3  */
+0,	/*  font4  */
+0,	/*  font5  */
+0,	/*  font6  */
+0,	/*  font7  */
+0,	/*  kbtab  */
+0,	/*  kdo  */
+0,	/*  kcmd  */
+0,	/*  kcpn  */
+0,	/*  kend  */
+0,	/*  khlp  */
+0,	/*  knl  */
+0,	/*  knpn  */
+0,	/*  kppn  */
+0,	/*  kppn  */
+0,	/*  kquit  */
+0,	/*  ksel  */
+0,	/*  kscl  */
+0,	/*  kscr  */
+0,	/*  ktab  */
+0,	/*  kmpf1  */
+0,	/*  kmpt1  */
+0,	/*  kmpf2  */
+0,	/*  kmpt2  */
+0,	/*  kmpf3  */
+0,	/*  kmpt3  */
+0,	/*  kmpf4  */
+0,	/*  kmpt4  */
+0,	/*  kmpf5  */
+0,	/*  kmpt5  */
+0,	/*  apstr  */
+0,	/*  kmpf6  */
+0,	/*  kmpt6  */
+0,	/*  kmpf7  */
+0,	/*  kmpt7  */
+0,	/*  kmpf8  */
+0,	/*  kmpt8  */
+0,	/*  kmpf9  */
+0,	/*  kmpt9  */
+0,	/*  ksf1  */
+0,	/*  ksf2  */
+0,	/*  ksf3  */
+0,	/*  ksf4  */
+0,	/*  ksf5  */
+0,	/*  ksf6  */
+0,	/*  ksf7  */
+0,	/*  ksf8  */
+0,	/*  ksf9  */
+0,	/*  ksf10  */
+0,	/*  kf11  */
+0,	/*  kf12  */
+0,	/*  kact  */
+0,	/*  topl  */
+0,	/*  btml  */
+0,	/*  rvert  */
+0,	/*  lvert  */
+} /* 548 entries */;
+
diff --git a/include/term.h b/include/term.h
new file mode 100644
index 0000000..6ab89c2
--- /dev/null
+++ b/include/term.h
@@ -0,0 +1,792 @@
+/****************************************************************************
+ * Copyright (c) 1998-2007,2008 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************/
+/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995                */
+/*    and: Eric S. Raymond <esr@snark.thyrsus.com>                          */
+/*    and: Thomas E. Dickey                        1995-on                  */
+/****************************************************************************/
+
+/* $Id: MKterm.h.awk.in,v 1.50 2008/05/24 23:13:59 tom Exp $ */
+
+/*
+**	term.h -- Definition of struct term
+*/
+
+#ifndef NCURSES_TERM_H_incl
+#define NCURSES_TERM_H_incl 1
+
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "5.7"
+
+#include <ncurses_dll.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H
+ * definition (based on the system for which this was configured).
+ */
+
+#undef  NCURSES_CONST
+#define NCURSES_CONST /*nothing*/
+
+#undef  NCURSES_SBOOL
+#define NCURSES_SBOOL char
+
+#undef  NCURSES_XNAMES
+#define NCURSES_XNAMES 1
+
+/* We will use these symbols to hide differences between
+ * termios/termio/sgttyb interfaces.
+ */
+#undef  TTY
+#undef  SET_TTY
+#undef  GET_TTY
+
+/* Assume POSIX termio if we have the header and function */
+/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */
+#if 1 && 1
+
+#undef  TERMIOS
+#define TERMIOS 1
+
+#include <termios.h>
+#define TTY struct termios
+
+#else /* !HAVE_TERMIOS_H */
+
+/* #if HAVE_TERMIO_H */
+#if 0
+
+#undef  TERMIOS
+#define TERMIOS 1
+
+#include <termio.h>
+#define TTY struct termio
+
+/* Add definitions to make termio look like termios.
+ * But ifdef it, since there are some implementations
+ * that try to do this for us in a fake <termio.h>.
+ */
+#ifndef TCSANOW
+#define TCSANOW TCSETA
+#endif
+#ifndef TCSADRAIN
+#define TCSADRAIN TCSETAW
+#endif
+#ifndef TCSAFLUSH
+#define TCSAFLUSH TCSETAF
+#endif
+#ifndef tcsetattr
+#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)
+#endif
+#ifndef tcgetattr
+#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)
+#endif
+#ifndef cfgetospeed
+#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
+#endif
+#ifndef TCIFLUSH 
+#define TCIFLUSH 0
+#endif
+#ifndef TCOFLUSH 
+#define TCOFLUSH 1
+#endif
+#ifndef TCIOFLUSH 
+#define TCIOFLUSH 2
+#endif
+#ifndef tcflush
+#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)
+#endif
+
+#else /* !HAVE_TERMIO_H */
+
+#undef TERMIOS
+#include <sgtty.h>
+#include <sys/ioctl.h>
+#define TTY struct sgttyb
+
+#endif /* HAVE_TERMIO_H */
+
+#endif /* HAVE_TERMIOS_H */
+
+#ifdef TERMIOS
+#define GET_TTY(fd, buf) tcgetattr(fd, buf)
+#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)
+#else
+#define GET_TTY(fd, buf) gtty(fd, buf)
+#define SET_TTY(fd, buf) stty(fd, buf)
+#endif
+
+#define NAMESIZE 256
+
+#define CUR cur_term->type.
+
+#define auto_left_margin               CUR Booleans[0]
+#define auto_right_margin              CUR Booleans[1]
+#define no_esc_ctlc                    CUR Booleans[2]
+#define ceol_standout_glitch           CUR Booleans[3]
+#define eat_newline_glitch             CUR Booleans[4]
+#define erase_overstrike               CUR Booleans[5]
+#define generic_type                   CUR Booleans[6]
+#define hard_copy                      CUR Booleans[7]
+#define has_meta_key                   CUR Booleans[8]
+#define has_status_line                CUR Booleans[9]
+#define insert_null_glitch             CUR Booleans[10]
+#define memory_above                   CUR Booleans[11]
+#define memory_below                   CUR Booleans[12]
+#define move_insert_mode               CUR Booleans[13]
+#define move_standout_mode             CUR Booleans[14]
+#define over_strike                    CUR Booleans[15]
+#define status_line_esc_ok             CUR Booleans[16]
+#define dest_tabs_magic_smso           CUR Booleans[17]
+#define tilde_glitch                   CUR Booleans[18]
+#define transparent_underline          CUR Booleans[19]
+#define xon_xoff                       CUR Booleans[20]
+#define needs_xon_xoff                 CUR Booleans[21]
+#define prtr_silent                    CUR Booleans[22]
+#define hard_cursor                    CUR Booleans[23]
+#define non_rev_rmcup                  CUR Booleans[24]
+#define no_pad_char                    CUR Booleans[25]
+#define non_dest_scroll_region         CUR Booleans[26]
+#define can_change                     CUR Booleans[27]
+#define back_color_erase               CUR Booleans[28]
+#define hue_lightness_saturation       CUR Booleans[29]
+#define col_addr_glitch                CUR Booleans[30]
+#define cr_cancels_micro_mode          CUR Booleans[31]
+#define has_print_wheel                CUR Booleans[32]
+#define row_addr_glitch                CUR Booleans[33]
+#define semi_auto_right_margin         CUR Booleans[34]
+#define cpi_changes_res                CUR Booleans[35]
+#define lpi_changes_res                CUR Booleans[36]
+#define columns                        CUR Numbers[0]
+#define init_tabs                      CUR Numbers[1]
+#define lines                          CUR Numbers[2]
+#define lines_of_memory                CUR Numbers[3]
+#define magic_cookie_glitch            CUR Numbers[4]
+#define padding_baud_rate              CUR Numbers[5]
+#define virtual_terminal               CUR Numbers[6]
+#define width_status_line              CUR Numbers[7]
+#define num_labels                     CUR Numbers[8]
+#define label_height                   CUR Numbers[9]
+#define label_width                    CUR Numbers[10]
+#define max_attributes                 CUR Numbers[11]
+#define maximum_windows                CUR Numbers[12]
+#define max_colors                     CUR Numbers[13]
+#define max_pairs                      CUR Numbers[14]
+#define no_color_video                 CUR Numbers[15]
+#define buffer_capacity                CUR Numbers[16]
+#define dot_vert_spacing               CUR Numbers[17]
+#define dot_horz_spacing               CUR Numbers[18]
+#define max_micro_address              CUR Numbers[19]
+#define max_micro_jump                 CUR Numbers[20]
+#define micro_col_size                 CUR Numbers[21]
+#define micro_line_size                CUR Numbers[22]
+#define number_of_pins                 CUR Numbers[23]
+#define output_res_char                CUR Numbers[24]
+#define output_res_line                CUR Numbers[25]
+#define output_res_horz_inch           CUR Numbers[26]
+#define output_res_vert_inch           CUR Numbers[27]
+#define print_rate                     CUR Numbers[28]
+#define wide_char_size                 CUR Numbers[29]
+#define buttons                        CUR Numbers[30]
+#define bit_image_entwining            CUR Numbers[31]
+#define bit_image_type                 CUR Numbers[32]
+#define back_tab                       CUR Strings[0]
+#define bell                           CUR Strings[1]
+#define carriage_return                CUR Strings[2]
+#define change_scroll_region           CUR Strings[3]
+#define clear_all_tabs                 CUR Strings[4]
+#define clear_screen                   CUR Strings[5]
+#define clr_eol                        CUR Strings[6]
+#define clr_eos                        CUR Strings[7]
+#define column_address                 CUR Strings[8]
+#define command_character              CUR Strings[9]
+#define cursor_address                 CUR Strings[10]
+#define cursor_down                    CUR Strings[11]
+#define cursor_home                    CUR Strings[12]
+#define cursor_invisible               CUR Strings[13]
+#define cursor_left                    CUR Strings[14]
+#define cursor_mem_address             CUR Strings[15]
+#define cursor_normal                  CUR Strings[16]
+#define cursor_right                   CUR Strings[17]
+#define cursor_to_ll                   CUR Strings[18]
+#define cursor_up                      CUR Strings[19]
+#define cursor_visible                 CUR Strings[20]
+#define delete_character               CUR Strings[21]
+#define delete_line                    CUR Strings[22]
+#define dis_status_line                CUR Strings[23]
+#define down_half_line                 CUR Strings[24]
+#define enter_alt_charset_mode         CUR Strings[25]
+#define enter_blink_mode               CUR Strings[26]
+#define enter_bold_mode                CUR Strings[27]
+#define enter_ca_mode                  CUR Strings[28]
+#define enter_delete_mode              CUR Strings[29]
+#define enter_dim_mode                 CUR Strings[30]
+#define enter_insert_mode              CUR Strings[31]
+#define enter_secure_mode              CUR Strings[32]
+#define enter_protected_mode           CUR Strings[33]
+#define enter_reverse_mode             CUR Strings[34]
+#define enter_standout_mode            CUR Strings[35]
+#define enter_underline_mode           CUR Strings[36]
+#define erase_chars                    CUR Strings[37]
+#define exit_alt_charset_mode          CUR Strings[38]
+#define exit_attribute_mode            CUR Strings[39]
+#define exit_ca_mode                   CUR Strings[40]
+#define exit_delete_mode               CUR Strings[41]
+#define exit_insert_mode               CUR Strings[42]
+#define exit_standout_mode             CUR Strings[43]
+#define exit_underline_mode            CUR Strings[44]
+#define flash_screen                   CUR Strings[45]
+#define form_feed                      CUR Strings[46]
+#define from_status_line               CUR Strings[47]
+#define init_1string                   CUR Strings[48]
+#define init_2string                   CUR Strings[49]
+#define init_3string                   CUR Strings[50]
+#define init_file                      CUR Strings[51]
+#define insert_character               CUR Strings[52]
+#define insert_line                    CUR Strings[53]
+#define insert_padding                 CUR Strings[54]
+#define key_backspace                  CUR Strings[55]
+#define key_catab                      CUR Strings[56]
+#define key_clear                      CUR Strings[57]
+#define key_ctab                       CUR Strings[58]
+#define key_dc                         CUR Strings[59]
+#define key_dl                         CUR Strings[60]
+#define key_down                       CUR Strings[61]
+#define key_eic                        CUR Strings[62]
+#define key_eol                        CUR Strings[63]
+#define key_eos                        CUR Strings[64]
+#define key_f0                         CUR Strings[65]
+#define key_f1                         CUR Strings[66]
+#define key_f10                        CUR Strings[67]
+#define key_f2                         CUR Strings[68]
+#define key_f3                         CUR Strings[69]
+#define key_f4                         CUR Strings[70]
+#define key_f5                         CUR Strings[71]
+#define key_f6                         CUR Strings[72]
+#define key_f7                         CUR Strings[73]
+#define key_f8                         CUR Strings[74]
+#define key_f9                         CUR Strings[75]
+#define key_home                       CUR Strings[76]
+#define key_ic                         CUR Strings[77]
+#define key_il                         CUR Strings[78]
+#define key_left                       CUR Strings[79]
+#define key_ll                         CUR Strings[80]
+#define key_npage                      CUR Strings[81]
+#define key_ppage                      CUR Strings[82]
+#define key_right                      CUR Strings[83]
+#define key_sf                         CUR Strings[84]
+#define key_sr                         CUR Strings[85]
+#define key_stab                       CUR Strings[86]
+#define key_up                         CUR Strings[87]
+#define keypad_local                   CUR Strings[88]
+#define keypad_xmit                    CUR Strings[89]
+#define lab_f0                         CUR Strings[90]
+#define lab_f1                         CUR Strings[91]
+#define lab_f10                        CUR Strings[92]
+#define lab_f2                         CUR Strings[93]
+#define lab_f3                         CUR Strings[94]
+#define lab_f4                         CUR Strings[95]
+#define lab_f5                         CUR Strings[96]
+#define lab_f6                         CUR Strings[97]
+#define lab_f7                         CUR Strings[98]
+#define lab_f8                         CUR Strings[99]
+#define lab_f9                         CUR Strings[100]
+#define meta_off                       CUR Strings[101]
+#define meta_on                        CUR Strings[102]
+#define newline                        CUR Strings[103]
+#define pad_char                       CUR Strings[104]
+#define parm_dch                       CUR Strings[105]
+#define parm_delete_line               CUR Strings[106]
+#define parm_down_cursor               CUR Strings[107]
+#define parm_ich                       CUR Strings[108]
+#define parm_index                     CUR Strings[109]
+#define parm_insert_line               CUR Strings[110]
+#define parm_left_cursor               CUR Strings[111]
+#define parm_right_cursor              CUR Strings[112]
+#define parm_rindex                    CUR Strings[113]
+#define parm_up_cursor                 CUR Strings[114]
+#define pkey_key                       CUR Strings[115]
+#define pkey_local                     CUR Strings[116]
+#define pkey_xmit                      CUR Strings[117]
+#define print_screen                   CUR Strings[118]
+#define prtr_off                       CUR Strings[119]
+#define prtr_on                        CUR Strings[120]
+#define repeat_char                    CUR Strings[121]
+#define reset_1string                  CUR Strings[122]
+#define reset_2string                  CUR Strings[123]
+#define reset_3string                  CUR Strings[124]
+#define reset_file                     CUR Strings[125]
+#define restore_cursor                 CUR Strings[126]
+#define row_address                    CUR Strings[127]
+#define save_cursor                    CUR Strings[128]
+#define scroll_forward                 CUR Strings[129]
+#define scroll_reverse                 CUR Strings[130]
+#define set_attributes                 CUR Strings[131]
+#define set_tab                        CUR Strings[132]
+#define set_window                     CUR Strings[133]
+#define tab                            CUR Strings[134]
+#define to_status_line                 CUR Strings[135]
+#define underline_char                 CUR Strings[136]
+#define up_half_line                   CUR Strings[137]
+#define init_prog                      CUR Strings[138]
+#define key_a1                         CUR Strings[139]
+#define key_a3                         CUR Strings[140]
+#define key_b2                         CUR Strings[141]
+#define key_c1                         CUR Strings[142]
+#define key_c3                         CUR Strings[143]
+#define prtr_non                       CUR Strings[144]
+#define char_padding                   CUR Strings[145]
+#define acs_chars                      CUR Strings[146]
+#define plab_norm                      CUR Strings[147]
+#define key_btab                       CUR Strings[148]
+#define enter_xon_mode                 CUR Strings[149]
+#define exit_xon_mode                  CUR Strings[150]
+#define enter_am_mode                  CUR Strings[151]
+#define exit_am_mode                   CUR Strings[152]
+#define xon_character                  CUR Strings[153]
+#define xoff_character                 CUR Strings[154]
+#define ena_acs                        CUR Strings[155]
+#define label_on                       CUR Strings[156]
+#define label_off                      CUR Strings[157]
+#define key_beg                        CUR Strings[158]
+#define key_cancel                     CUR Strings[159]
+#define key_close                      CUR Strings[160]
+#define key_command                    CUR Strings[161]
+#define key_copy                       CUR Strings[162]
+#define key_create                     CUR Strings[163]
+#define key_end                        CUR Strings[164]
+#define key_enter                      CUR Strings[165]
+#define key_exit                       CUR Strings[166]
+#define key_find                       CUR Strings[167]
+#define key_help                       CUR Strings[168]
+#define key_mark                       CUR Strings[169]
+#define key_message                    CUR Strings[170]
+#define key_move                       CUR Strings[171]
+#define key_next                       CUR Strings[172]
+#define key_open                       CUR Strings[173]
+#define key_options                    CUR Strings[174]
+#define key_previous                   CUR Strings[175]
+#define key_print                      CUR Strings[176]
+#define key_redo                       CUR Strings[177]
+#define key_reference                  CUR Strings[178]
+#define key_refresh                    CUR Strings[179]
+#define key_replace                    CUR Strings[180]
+#define key_restart                    CUR Strings[181]
+#define key_resume                     CUR Strings[182]
+#define key_save                       CUR Strings[183]
+#define key_suspend                    CUR Strings[184]
+#define key_undo                       CUR Strings[185]
+#define key_sbeg                       CUR Strings[186]
+#define key_scancel                    CUR Strings[187]
+#define key_scommand                   CUR Strings[188]
+#define key_scopy                      CUR Strings[189]
+#define key_screate                    CUR Strings[190]
+#define key_sdc                        CUR Strings[191]
+#define key_sdl                        CUR Strings[192]
+#define key_select                     CUR Strings[193]
+#define key_send                       CUR Strings[194]
+#define key_seol                       CUR Strings[195]
+#define key_sexit                      CUR Strings[196]
+#define key_sfind                      CUR Strings[197]
+#define key_shelp                      CUR Strings[198]
+#define key_shome                      CUR Strings[199]
+#define key_sic                        CUR Strings[200]
+#define key_sleft                      CUR Strings[201]
+#define key_smessage                   CUR Strings[202]
+#define key_smove                      CUR Strings[203]
+#define key_snext                      CUR Strings[204]
+#define key_soptions                   CUR Strings[205]
+#define key_sprevious                  CUR Strings[206]
+#define key_sprint                     CUR Strings[207]
+#define key_sredo                      CUR Strings[208]
+#define key_sreplace                   CUR Strings[209]
+#define key_sright                     CUR Strings[210]
+#define key_srsume                     CUR Strings[211]
+#define key_ssave                      CUR Strings[212]
+#define key_ssuspend                   CUR Strings[213]
+#define key_sundo                      CUR Strings[214]
+#define req_for_input                  CUR Strings[215]
+#define key_f11                        CUR Strings[216]
+#define key_f12                        CUR Strings[217]
+#define key_f13                        CUR Strings[218]
+#define key_f14                        CUR Strings[219]
+#define key_f15                        CUR Strings[220]
+#define key_f16                        CUR Strings[221]
+#define key_f17                        CUR Strings[222]
+#define key_f18                        CUR Strings[223]
+#define key_f19                        CUR Strings[224]
+#define key_f20                        CUR Strings[225]
+#define key_f21                        CUR Strings[226]
+#define key_f22                        CUR Strings[227]
+#define key_f23                        CUR Strings[228]
+#define key_f24                        CUR Strings[229]
+#define key_f25                        CUR Strings[230]
+#define key_f26                        CUR Strings[231]
+#define key_f27                        CUR Strings[232]
+#define key_f28                        CUR Strings[233]
+#define key_f29                        CUR Strings[234]
+#define key_f30                        CUR Strings[235]
+#define key_f31                        CUR Strings[236]
+#define key_f32                        CUR Strings[237]
+#define key_f33                        CUR Strings[238]
+#define key_f34                        CUR Strings[239]
+#define key_f35                        CUR Strings[240]
+#define key_f36                        CUR Strings[241]
+#define key_f37                        CUR Strings[242]
+#define key_f38                        CUR Strings[243]
+#define key_f39                        CUR Strings[244]
+#define key_f40                        CUR Strings[245]
+#define key_f41                        CUR Strings[246]
+#define key_f42                        CUR Strings[247]
+#define key_f43                        CUR Strings[248]
+#define key_f44                        CUR Strings[249]
+#define key_f45                        CUR Strings[250]
+#define key_f46                        CUR Strings[251]
+#define key_f47                        CUR Strings[252]
+#define key_f48                        CUR Strings[253]
+#define key_f49                        CUR Strings[254]
+#define key_f50                        CUR Strings[255]
+#define key_f51                        CUR Strings[256]
+#define key_f52                        CUR Strings[257]
+#define key_f53                        CUR Strings[258]
+#define key_f54                        CUR Strings[259]
+#define key_f55                        CUR Strings[260]
+#define key_f56                        CUR Strings[261]
+#define key_f57                        CUR Strings[262]
+#define key_f58                        CUR Strings[263]
+#define key_f59                        CUR Strings[264]
+#define key_f60                        CUR Strings[265]
+#define key_f61                        CUR Strings[266]
+#define key_f62                        CUR Strings[267]
+#define key_f63                        CUR Strings[268]
+#define clr_bol                        CUR Strings[269]
+#define clear_margins                  CUR Strings[270]
+#define set_left_margin                CUR Strings[271]
+#define set_right_margin               CUR Strings[272]
+#define label_format                   CUR Strings[273]
+#define set_clock                      CUR Strings[274]
+#define display_clock                  CUR Strings[275]
+#define remove_clock                   CUR Strings[276]
+#define create_window                  CUR Strings[277]
+#define goto_window                    CUR Strings[278]
+#define hangup                         CUR Strings[279]
+#define dial_phone                     CUR Strings[280]
+#define quick_dial                     CUR Strings[281]
+#define tone                           CUR Strings[282]
+#define pulse                          CUR Strings[283]
+#define flash_hook                     CUR Strings[284]
+#define fixed_pause                    CUR Strings[285]
+#define wait_tone                      CUR Strings[286]
+#define user0                          CUR Strings[287]
+#define user1                          CUR Strings[288]
+#define user2                          CUR Strings[289]
+#define user3                          CUR Strings[290]
+#define user4                          CUR Strings[291]
+#define user5                          CUR Strings[292]
+#define user6                          CUR Strings[293]
+#define user7                          CUR Strings[294]
+#define user8                          CUR Strings[295]
+#define user9                          CUR Strings[296]
+#define orig_pair                      CUR Strings[297]
+#define orig_colors                    CUR Strings[298]
+#define initialize_color               CUR Strings[299]
+#define initialize_pair                CUR Strings[300]
+#define set_color_pair                 CUR Strings[301]
+#define set_foreground                 CUR Strings[302]
+#define set_background                 CUR Strings[303]
+#define change_char_pitch              CUR Strings[304]
+#define change_line_pitch              CUR Strings[305]
+#define change_res_horz                CUR Strings[306]
+#define change_res_vert                CUR Strings[307]
+#define define_char                    CUR Strings[308]
+#define enter_doublewide_mode          CUR Strings[309]
+#define enter_draft_quality            CUR Strings[310]
+#define enter_italics_mode             CUR Strings[311]
+#define enter_leftward_mode            CUR Strings[312]
+#define enter_micro_mode               CUR Strings[313]
+#define enter_near_letter_quality      CUR Strings[314]
+#define enter_normal_quality           CUR Strings[315]
+#define enter_shadow_mode              CUR Strings[316]
+#define enter_subscript_mode           CUR Strings[317]
+#define enter_superscript_mode         CUR Strings[318]
+#define enter_upward_mode              CUR Strings[319]
+#define exit_doublewide_mode           CUR Strings[320]
+#define exit_italics_mode              CUR Strings[321]
+#define exit_leftward_mode             CUR Strings[322]
+#define exit_micro_mode                CUR Strings[323]
+#define exit_shadow_mode               CUR Strings[324]
+#define exit_subscript_mode            CUR Strings[325]
+#define exit_superscript_mode          CUR Strings[326]
+#define exit_upward_mode               CUR Strings[327]
+#define micro_column_address           CUR Strings[328]
+#define micro_down                     CUR Strings[329]
+#define micro_left                     CUR Strings[330]
+#define micro_right                    CUR Strings[331]
+#define micro_row_address              CUR Strings[332]
+#define micro_up                       CUR Strings[333]
+#define order_of_pins                  CUR Strings[334]
+#define parm_down_micro                CUR Strings[335]
+#define parm_left_micro                CUR Strings[336]
+#define parm_right_micro               CUR Strings[337]
+#define parm_up_micro                  CUR Strings[338]
+#define select_char_set                CUR Strings[339]
+#define set_bottom_margin              CUR Strings[340]
+#define set_bottom_margin_parm         CUR Strings[341]
+#define set_left_margin_parm           CUR Strings[342]
+#define set_right_margin_parm          CUR Strings[343]
+#define set_top_margin                 CUR Strings[344]
+#define set_top_margin_parm            CUR Strings[345]
+#define start_bit_image                CUR Strings[346]
+#define start_char_set_def             CUR Strings[347]
+#define stop_bit_image                 CUR Strings[348]
+#define stop_char_set_def              CUR Strings[349]
+#define subscript_characters           CUR Strings[350]
+#define superscript_characters         CUR Strings[351]
+#define these_cause_cr                 CUR Strings[352]
+#define zero_motion                    CUR Strings[353]
+#define char_set_names                 CUR Strings[354]
+#define key_mouse                      CUR Strings[355]
+#define mouse_info                     CUR Strings[356]
+#define req_mouse_pos                  CUR Strings[357]
+#define get_mouse                      CUR Strings[358]
+#define set_a_foreground               CUR Strings[359]
+#define set_a_background               CUR Strings[360]
+#define pkey_plab                      CUR Strings[361]
+#define device_type                    CUR Strings[362]
+#define code_set_init                  CUR Strings[363]
+#define set0_des_seq                   CUR Strings[364]
+#define set1_des_seq                   CUR Strings[365]
+#define set2_des_seq                   CUR Strings[366]
+#define set3_des_seq                   CUR Strings[367]
+#define set_lr_margin                  CUR Strings[368]
+#define set_tb_margin                  CUR Strings[369]
+#define bit_image_repeat               CUR Strings[370]
+#define bit_image_newline              CUR Strings[371]
+#define bit_image_carriage_return      CUR Strings[372]
+#define color_names                    CUR Strings[373]
+#define define_bit_image_region        CUR Strings[374]
+#define end_bit_image_region           CUR Strings[375]
+#define set_color_band                 CUR Strings[376]
+#define set_page_length                CUR Strings[377]
+#define display_pc_char                CUR Strings[378]
+#define enter_pc_charset_mode          CUR Strings[379]
+#define exit_pc_charset_mode           CUR Strings[380]
+#define enter_scancode_mode            CUR Strings[381]
+#define exit_scancode_mode             CUR Strings[382]
+#define pc_term_options                CUR Strings[383]
+#define scancode_escape                CUR Strings[384]
+#define alt_scancode_esc               CUR Strings[385]
+#define enter_horizontal_hl_mode       CUR Strings[386]
+#define enter_left_hl_mode             CUR Strings[387]
+#define enter_low_hl_mode              CUR Strings[388]
+#define enter_right_hl_mode            CUR Strings[389]
+#define enter_top_hl_mode              CUR Strings[390]
+#define enter_vertical_hl_mode         CUR Strings[391]
+#define set_a_attributes               CUR Strings[392]
+#define set_pglen_inch                 CUR Strings[393]
+
+#define BOOLWRITE 37
+#define NUMWRITE  33
+#define STRWRITE  394
+
+/* older synonyms for some capabilities */
+#define beehive_glitch	no_esc_ctlc
+#define teleray_glitch	dest_tabs_magic_smso
+#define micro_char_size micro_col_size
+
+#ifdef __INTERNAL_CAPS_VISIBLE
+#define termcap_init2                  CUR Strings[394]
+#define termcap_reset                  CUR Strings[395]
+#define magic_cookie_glitch_ul         CUR Numbers[33]
+#define backspaces_with_bs             CUR Booleans[37]
+#define crt_no_scrolling               CUR Booleans[38]
+#define no_correctly_working_cr        CUR Booleans[39]
+#define carriage_return_delay          CUR Numbers[34]
+#define new_line_delay                 CUR Numbers[35]
+#define linefeed_if_not_lf             CUR Strings[396]
+#define backspace_if_not_bs            CUR Strings[397]
+#define gnu_has_meta_key               CUR Booleans[40]
+#define linefeed_is_newline            CUR Booleans[41]
+#define backspace_delay                CUR Numbers[36]
+#define horizontal_tab_delay           CUR Numbers[37]
+#define number_of_function_keys        CUR Numbers[38]
+#define other_non_function_keys        CUR Strings[398]
+#define arrow_key_map                  CUR Strings[399]
+#define has_hardware_tabs              CUR Booleans[42]
+#define return_does_clr_eol            CUR Booleans[43]
+#define acs_ulcorner                   CUR Strings[400]
+#define acs_llcorner                   CUR Strings[401]
+#define acs_urcorner                   CUR Strings[402]
+#define acs_lrcorner                   CUR Strings[403]
+#define acs_ltee                       CUR Strings[404]
+#define acs_rtee                       CUR Strings[405]
+#define acs_btee                       CUR Strings[406]
+#define acs_ttee                       CUR Strings[407]
+#define acs_hline                      CUR Strings[408]
+#define acs_vline                      CUR Strings[409]
+#define acs_plus                       CUR Strings[410]
+#define memory_lock                    CUR Strings[411]
+#define memory_unlock                  CUR Strings[412]
+#define box_chars_1                    CUR Strings[413]
+#endif /* __INTERNAL_CAPS_VISIBLE */
+
+
+/*
+ * Predefined terminfo array sizes
+ */
+#define BOOLCOUNT 44
+#define NUMCOUNT  39
+#define STRCOUNT  414
+
+/* used by code for comparing entries */
+#define acs_chars_index	 146
+
+typedef struct termtype {	/* in-core form of terminfo data */
+    char  *term_names;		/* str_table offset of term names */
+    char  *str_table;		/* pointer to string table */
+    NCURSES_SBOOL  *Booleans;	/* array of boolean values */
+    short *Numbers;		/* array of integer values */
+    char  **Strings;		/* array of string offsets */
+
+#if NCURSES_XNAMES
+    char  *ext_str_table;	/* pointer to extended string table */
+    char  **ext_Names;		/* corresponding names */
+
+    unsigned short num_Booleans;/* count total Booleans */
+    unsigned short num_Numbers;	/* count total Numbers */
+    unsigned short num_Strings;	/* count total Strings */
+
+    unsigned short ext_Booleans;/* count extensions to Booleans */
+    unsigned short ext_Numbers;	/* count extensions to Numbers */
+    unsigned short ext_Strings;	/* count extensions to Strings */
+#endif /* NCURSES_XNAMES */
+
+} TERMTYPE;
+
+typedef struct term {		/* describe an actual terminal */
+    TERMTYPE	type;		/* terminal type description */
+    short	Filedes;	/* file description being written to */
+    TTY		Ottyb,		/* original state of the terminal */
+		Nttyb;		/* current state of the terminal */
+    int		_baudrate;	/* used to compute padding */
+    char *      _termname;      /* used for termname() */
+} TERMINAL;
+
+#if 0 || 0
+NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);
+NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);
+
+#define cur_term   NCURSES_PUBLIC_VAR(cur_term())
+#define boolnames  NCURSES_PUBLIC_VAR(boolnames())
+#define boolcodes  NCURSES_PUBLIC_VAR(boolcodes())
+#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())
+#define numnames   NCURSES_PUBLIC_VAR(numnames())
+#define numcodes   NCURSES_PUBLIC_VAR(numcodes())
+#define numfnames  NCURSES_PUBLIC_VAR(numfnames())
+#define strnames   NCURSES_PUBLIC_VAR(strnames())
+#define strcodes   NCURSES_PUBLIC_VAR(strcodes())
+#define strfnames  NCURSES_PUBLIC_VAR(strfnames())
+
+#else
+
+extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;
+
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];
+extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];
+
+#endif
+
+/* internals */
+extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);
+extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);
+extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);
+extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);
+extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);
+extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);
+extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);
+extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);
+
+/* entry points */
+extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);
+extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);
+
+/* miscellaneous entry points */
+extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);
+extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);
+
+/* terminfo entry points, also declared in curses.h */
+#if !defined(__NCURSES_H)
+extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);
+extern NCURSES_EXPORT_VAR(char) ttytype[];
+extern NCURSES_EXPORT(int) putp (const char *);
+extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);
+
+#if 1 /* NCURSES_TPARM_VARARGS */
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);	/* special */
+#else
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long);	/* special */
+extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...);	/* special */
+#endif
+
+#endif /* __NCURSES_H */
+
+/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */
+#if !defined(NCURSES_TERMCAP_H_incl)
+extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
+extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);
+extern NCURSES_EXPORT(int) tgetent (char *, const char *);
+extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));
+#endif /* NCURSES_TERMCAP_H_incl */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NCURSES_TERM_H_incl */
diff --git a/include/termcap.h b/include/termcap.h
new file mode 100644
index 0000000..68b0883
--- /dev/null
+++ b/include/termcap.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ * Copyright (c) 1998,2000 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+/* $Id: termcap.h.in,v 1.16 2001/03/24 21:53:27 tom Exp $ */
+
+#ifndef NCURSES_TERMCAP_H_incl
+#define NCURSES_TERMCAP_H_incl	1
+
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "5.7"
+
+#include <ncurses_dll.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include <sys/types.h>
+
+#undef  NCURSES_CONST 
+#define NCURSES_CONST /*nothing*/ 
+
+#undef  NCURSES_OSPEED 
+#define NCURSES_OSPEED short 
+
+extern NCURSES_EXPORT_VAR(char) PC;
+extern NCURSES_EXPORT_VAR(char *) UP;
+extern NCURSES_EXPORT_VAR(char *) BC;
+extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; 
+
+#if !defined(NCURSES_TERM_H_incl)
+extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
+extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);
+extern NCURSES_EXPORT(int) tgetent (char *, const char *);
+extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);
+extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NCURSES_TERMCAP_H_incl */
diff --git a/include/unctrl.h b/include/unctrl.h
new file mode 100644
index 0000000..6adc216
--- /dev/null
+++ b/include/unctrl.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+ * Copyright (c) 1998,2000 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+/*
+ * unctrl.h
+ *
+ * Display a printable version of a control character.
+ * Control characters are displayed in caret notation (^x), DELETE is displayed
+ * as ^?. Printable characters are displayed as is.
+ */
+
+/* $Id: unctrl.h.in,v 1.10 2001/03/24 21:53:25 tom Exp $ */
+
+#ifndef NCURSES_UNCTRL_H_incl
+#define NCURSES_UNCTRL_H_incl	1
+
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "5.7"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <curses.h>
+
+#undef unctrl
+NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NCURSES_UNCTRL_H_incl */
diff --git a/man/terminfo.5 b/man/terminfo.5
new file mode 100644
index 0000000..2933c96
--- /dev/null
+++ b/man/terminfo.5
@@ -0,0 +1,3337 @@
+'\" t
+.\" DO NOT EDIT THIS FILE BY HAND!
+.\" It is generated from terminfo.head, Caps, and terminfo.tail.
+.\"
+.\" Note: this must be run through tbl before nroff.
+.\" The magic cookie on the first line triggers this under some man programs.
+.\"***************************************************************************
+.\" Copyright (c) 1998-2004,2006 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            *
+.\" "Software"), to deal in the Software without restriction, including      *
+.\" without limitation the rights to use, copy, modify, merge, publish,      *
+.\" distribute, distribute with modifications, 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 COPYRIGHT HOLDERS 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: terminfo.head,v 1.16 2007/03/04 00:09:46 tom Exp $
+.TH terminfo 5 "" "" "File Formats"
+.ds n 5
+.ds d @TERMINFO@
+.SH NAME
+terminfo \- terminal capability data base
+.SH SYNOPSIS
+\*d/*/*
+.SH DESCRIPTION
+.I Terminfo
+is a data base describing terminals, used by screen-oriented programs such as
+\fBnvi\fR(1),
+\fBrogue\fR(1)
+and libraries such as
+\fBcurses\fR(3X).
+.I Terminfo
+describes terminals by giving a set of capabilities which they
+have, by specifying how to perform screen operations, and by
+specifying padding requirements and initialization sequences.
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+.PP
+Entries in
+.I terminfo
+consist of a sequence of `,' separated fields (embedded commas may be
+escaped with a backslash or notated as \\054).
+White space after the `,' separator is ignored.
+The first entry for each terminal gives the names which are known for the
+terminal, separated by `|' characters.
+The first name given is the most common abbreviation for the terminal,
+the last name given should be a long name fully identifying the terminal,
+and all others are understood as synonyms for the terminal name.
+All names but the last should be in lower case and contain no blanks;
+the last name may well contain upper case and blanks for readability.
+.PP
+Lines beginning with a `#' in the first column are treated as comments.
+While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP
+and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP)
+will move comments so they occur only between entries.
+.PP
+Newlines and leading tabs may be used for formatting entries for readability.
+These are removed from parsed entries.
+The \fB@INFOCMP@\ -f\fP option relies on this to format if-then-else expressions:
+the result can be read by \fB@TIC@\fP.
+.PP
+Terminal names (except for the last, verbose entry) should
+be chosen using the following conventions.
+The particular piece of hardware making up the terminal should
+have a root name, thus ``hp2621''.
+This name should not contain hyphens.
+Modes that the hardware can be in, or user preferences, should
+be indicated by appending a hyphen and a mode suffix.
+Thus, a vt100 in 132 column mode would be vt100-w.
+The following suffixes should be used where possible:
+.PP
+.TS
+center ;
+l c l
+l l l.
+\fBSuffix	Meaning	Example\fP
+-\fInn\fP	Number of lines on the screen	aaa-60
+-\fIn\fPp	Number of pages of memory	c100-4p
+-am	With automargins (usually the default)	vt100-am
+-m	Mono mode; suppress color       	ansi-m
+-mc	Magic cookie; spaces when highlighting	wy30-mc
+-na	No arrow keys (leave them in local)	c100-na
+-nam	Without automatic margins       	vt100-nam
+-nl	No status line                  	att4415-nl
+-ns	No status line                  	hp2626-ns
+-rv	Reverse video                   	c100-rv
+-s	Enable status line              	vt100-s
+-vb	Use visible bell instead of beep	wy370-vb
+-w	Wide mode (> 80 columns, usually 132)	vt100-w
+.TE
+.PP
+For more on terminal naming conventions, see the \fBterm(7)\fR manual page.
+.SS Capabilities
+.\" Head of terminfo man page ends here
+.ps -1
+The following is a complete table of the capabilities included in a
+terminfo description block and available to terminfo-using code.  In each
+line of the table,
+
+The \fBvariable\fR is the name by which the programmer (at the terminfo level)
+accesses the capability.
+
+The \fBcapname\fR is the short name used in the text of the database,
+and is used by a person updating the database.
+Whenever possible, capnames are chosen to be the same as or similar to
+the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
+identical or very similar names).  Semantics are also intended to match
+those of the specification.
+
+The termcap code is the old
+.B termcap
+capability name (some capabilities are new, and have names which termcap
+did not originate).
+.P
+Capability names have no hard length limit, but an informal limit of 5
+characters has been adopted to keep them short and to allow the tabs in
+the source file
+.B Caps
+to line up nicely.
+
+Finally, the description field attempts to convey the semantics of the
+capability.  You may find some codes in the description field:
+.TP
+(P)
+indicates that padding may be specified
+.TP
+#[1-9]
+in the description field indicates that the string is passed through tparm with
+parms as given (#\fIi\fP).
+.TP
+(P*)
+indicates that padding may vary in proportion to the number of
+lines affected
+.TP
+(#\d\fIi\fP\u)
+indicates the \fIi\fP\uth\d parameter.
+
+.PP
+These are the boolean capabilities:
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable	Cap-	TCap	Description\fR
+\fBBooleans	name	Code\fR
+auto_left_margin	bw	bw	T{
+cub1 wraps from column 0 to last column
+T}
+auto_right_margin	am	am	T{
+terminal has automatic margins
+T}
+back_color_erase	bce	ut	T{
+screen erased with background color
+T}
+can_change	ccc	cc	T{
+terminal can re-define existing colors
+T}
+ceol_standout_glitch	xhp	xs	T{
+standout not erased by overwriting (hp)
+T}
+col_addr_glitch	xhpa	YA	T{
+only positive motion for hpa/mhpa caps
+T}
+cpi_changes_res	cpix	YF	T{
+changing character pitch changes resolution
+T}
+cr_cancels_micro_mode	crxm	YB	T{
+using cr turns off micro mode
+T}
+dest_tabs_magic_smso	xt	xt	T{
+tabs destructive, magic so char (t1061)
+T}
+eat_newline_glitch	xenl	xn	T{
+newline ignored after 80 cols (concept)
+T}
+erase_overstrike	eo	eo	T{
+can erase overstrikes with a blank
+T}
+generic_type	gn	gn	T{
+generic line type
+T}
+hard_copy	hc	hc	T{
+hardcopy terminal
+T}
+hard_cursor	chts	HC	T{
+cursor is hard to see
+T}
+has_meta_key	km	km	T{
+Has a meta key (i.e., sets 8th-bit)
+T}
+has_print_wheel	daisy	YC	T{
+printer needs operator to change character set
+T}
+has_status_line	hs	hs	T{
+has extra status line
+T}
+hue_lightness_saturation	hls	hl	T{
+terminal uses only HLS color notation (Tektronix)
+T}
+insert_null_glitch	in	in	T{
+insert mode distinguishes nulls
+T}
+lpi_changes_res	lpix	YG	T{
+changing line pitch changes resolution
+T}
+memory_above	da	da	T{
+display may be retained above the screen
+T}
+memory_below	db	db	T{
+display may be retained below the screen
+T}
+move_insert_mode	mir	mi	T{
+safe to move while in insert mode
+T}
+move_standout_mode	msgr	ms	T{
+safe to move while in standout mode
+T}
+needs_xon_xoff	nxon	nx	T{
+padding will not work, xon/xoff required
+T}
+no_esc_ctlc	xsb	xb	T{
+beehive (f1=escape, f2=ctrl C)
+T}
+no_pad_char	npc	NP	T{
+pad character does not exist
+T}
+non_dest_scroll_region	ndscr	ND	T{
+scrolling region is non-destructive
+T}
+non_rev_rmcup	nrrmc	NR	T{
+smcup does not reverse rmcup
+T}
+over_strike	os	os	T{
+terminal can overstrike
+T}
+prtr_silent	mc5i	5i	T{
+printer will not echo on screen
+T}
+row_addr_glitch	xvpa	YD	T{
+only positive motion for vpa/mvpa caps
+T}
+semi_auto_right_margin	sam	YE	T{
+printing in last column causes cr
+T}
+status_line_esc_ok	eslok	es	T{
+escape can be used on the status line
+T}
+tilde_glitch	hz	hz	T{
+cannot print ~'s (hazeltine)
+T}
+transparent_underline	ul	ul	T{
+underline character overstrikes
+T}
+xon_xoff	xon	xo	T{
+terminal uses xon/xoff handshaking
+T}
+.TE
+.ad
+
+These are the numeric capabilities:
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable	Cap-	TCap	Description\fR
+\fBNumeric	name	Code\fR
+columns	cols	co	T{
+number of columns in a line
+T}
+init_tabs	it	it	T{
+tabs initially every # spaces
+T}
+label_height	lh	lh	T{
+rows in each label
+T}
+label_width	lw	lw	T{
+columns in each label
+T}
+lines	lines	li	T{
+number of lines on screen or page
+T}
+lines_of_memory	lm	lm	T{
+lines of memory if > line. 0 means varies
+T}
+magic_cookie_glitch	xmc	sg	T{
+number of blank characters left by smso or rmso
+T}
+max_attributes	ma	ma	T{
+maximum combined attributes terminal can handle
+T}
+max_colors	colors	Co	T{
+maximum number of colors on screen
+T}
+max_pairs	pairs	pa	T{
+maximum number of color-pairs on the screen
+T}
+maximum_windows	wnum	MW	T{
+maximum number of defineable windows
+T}
+no_color_video	ncv	NC	T{
+video attributes that cannot be used with colors
+T}
+num_labels	nlab	Nl	T{
+number of labels on screen
+T}
+padding_baud_rate	pb	pb	T{
+lowest baud rate where padding needed
+T}
+virtual_terminal	vt	vt	T{
+virtual terminal number (CB/unix)
+T}
+width_status_line	wsl	ws	T{
+number of columns in status line
+T}
+.TE
+.ad
+
+The following numeric capabilities are present in the SVr4.0 term structure,
+but are not yet documented in the man page.  They came in with SVr4's
+printer support.
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable	Cap-	TCap	Description\fR
+\fBNumeric	name	Code\fR
+bit_image_entwining	bitwin	Yo	T{
+number of passes for each bit-image row
+T}
+bit_image_type	bitype	Yp	T{
+type of bit-image device
+T}
+buffer_capacity	bufsz	Ya	T{
+numbers of bytes buffered before printing
+T}
+buttons	btns	BT	T{
+number of buttons on mouse
+T}
+dot_horz_spacing	spinh	Yc	T{
+spacing of dots horizontally in dots per inch
+T}
+dot_vert_spacing	spinv	Yb	T{
+spacing of pins vertically in pins per inch
+T}
+max_micro_address	maddr	Yd	T{
+maximum value in micro_..._address
+T}
+max_micro_jump	mjump	Ye	T{
+maximum value in parm_..._micro
+T}
+micro_col_size	mcs	Yf	T{
+character step size when in micro mode
+T}
+micro_line_size	mls	Yg	T{
+line step size when in micro mode
+T}
+number_of_pins	npins	Yh	T{
+numbers of pins in print-head
+T}
+output_res_char	orc	Yi	T{
+horizontal resolution in units per line
+T}
+output_res_horz_inch	orhi	Yk	T{
+horizontal resolution in units per inch
+T}
+output_res_line	orl	Yj	T{
+vertical resolution in units per line
+T}
+output_res_vert_inch	orvi	Yl	T{
+vertical resolution in units per inch
+T}
+print_rate	cps	Ym	T{
+print rate in characters per second
+T}
+wide_char_size	widcs	Yn	T{
+character step size when in double wide mode
+T}
+.TE
+.ad
+
+These are the string capabilities:
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable	Cap-	TCap	Description\fR
+\fBString	name	Code\fR
+acs_chars	acsc	ac	T{
+graphics charset pairs, based on vt100
+T}
+back_tab	cbt	bt	T{
+back tab (P)
+T}
+bell	bel	bl	T{
+audible signal (bell) (P)
+T}
+carriage_return	cr	cr	T{
+carriage return (P*) (P*)
+T}
+change_char_pitch	cpi	ZA	T{
+Change number of characters per inch to #1
+T}
+change_line_pitch	lpi	ZB	T{
+Change number of lines per inch to #1
+T}
+change_res_horz	chr	ZC	T{
+Change horizontal resolution to #1
+T}
+change_res_vert	cvr	ZD	T{
+Change vertical resolution to #1
+T}
+change_scroll_region	csr	cs	T{
+change region to line #1 to line #2 (P)
+T}
+char_padding	rmp	rP	T{
+like ip but when in insert mode
+T}
+clear_all_tabs	tbc	ct	T{
+clear all tab stops (P)
+T}
+clear_margins	mgc	MC	T{
+clear right and left soft margins
+T}
+clear_screen	clear	cl	T{
+clear screen and home cursor (P*)
+T}
+clr_bol	el1	cb	T{
+Clear to beginning of line
+T}
+clr_eol	el	ce	T{
+clear to end of line (P)
+T}
+clr_eos	ed	cd	T{
+clear to end of screen (P*)
+T}
+column_address	hpa	ch	T{
+horizontal position #1, absolute (P)
+T}
+command_character	cmdch	CC	T{
+terminal settable cmd character in prototype !?
+T}
+create_window	cwin	CW	T{
+define a window #1 from #2,#3 to #4,#5
+T}
+cursor_address	cup	cm	T{
+move to row #1 columns #2
+T}
+cursor_down	cud1	do	T{
+down one line
+T}
+cursor_home	home	ho	T{
+home cursor (if no cup)
+T}
+cursor_invisible	civis	vi	T{
+make cursor invisible
+T}
+cursor_left	cub1	le	T{
+move left one space
+T}
+cursor_mem_address	mrcup	CM	T{
+memory relative cursor addressing, move to row #1 columns #2
+T}
+cursor_normal	cnorm	ve	T{
+make cursor appear normal (undo civis/cvvis)
+T}
+cursor_right	cuf1	nd	T{
+non-destructive space (move right one space)
+T}
+cursor_to_ll	ll	ll	T{
+last line, first column (if no cup)
+T}
+cursor_up	cuu1	up	T{
+up one line
+T}
+cursor_visible	cvvis	vs	T{
+make cursor very visible
+T}
+define_char	defc	ZE	T{
+Define a character #1, #2 dots wide, descender #3
+T}
+delete_character	dch1	dc	T{
+delete character (P*)
+T}
+delete_line	dl1	dl	T{
+delete line (P*)
+T}
+dial_phone	dial	DI	T{
+dial number #1
+T}
+dis_status_line	dsl	ds	T{
+disable status line
+T}
+display_clock	dclk	DK	T{
+display clock
+T}
+down_half_line	hd	hd	T{
+half a line down
+T}
+ena_acs	enacs	eA	T{
+enable alternate char set
+T}
+enter_alt_charset_mode	smacs	as	T{
+start alternate character set (P)
+T}
+enter_am_mode	smam	SA	T{
+turn on automatic margins
+T}
+enter_blink_mode	blink	mb	T{
+turn on blinking
+T}
+enter_bold_mode	bold	md	T{
+turn on bold (extra bright) mode
+T}
+enter_ca_mode	smcup	ti	T{
+string to start programs using cup
+T}
+enter_delete_mode	smdc	dm	T{
+enter delete mode
+T}
+enter_dim_mode	dim	mh	T{
+turn on half-bright mode
+T}
+enter_doublewide_mode	swidm	ZF	T{
+Enter double-wide mode
+T}
+enter_draft_quality	sdrfq	ZG	T{
+Enter draft-quality mode
+T}
+enter_insert_mode	smir	im	T{
+enter insert mode
+T}
+enter_italics_mode	sitm	ZH	T{
+Enter italic mode
+T}
+enter_leftward_mode	slm	ZI	T{
+Start leftward carriage motion
+T}
+enter_micro_mode	smicm	ZJ	T{
+Start micro-motion mode
+T}
+enter_near_letter_quality	snlq	ZK	T{
+Enter NLQ mode
+T}
+enter_normal_quality	snrmq	ZL	T{
+Enter normal-quality mode
+T}
+enter_protected_mode	prot	mp	T{
+turn on protected mode
+T}
+enter_reverse_mode	rev	mr	T{
+turn on reverse video mode
+T}
+enter_secure_mode	invis	mk	T{
+turn on blank mode (characters invisible)
+T}
+enter_shadow_mode	sshm	ZM	T{
+Enter shadow-print mode
+T}
+enter_standout_mode	smso	so	T{
+begin standout mode
+T}
+enter_subscript_mode	ssubm	ZN	T{
+Enter subscript mode
+T}
+enter_superscript_mode	ssupm	ZO	T{
+Enter superscript mode
+T}
+enter_underline_mode	smul	us	T{
+begin underline mode
+T}
+enter_upward_mode	sum	ZP	T{
+Start upward carriage motion
+T}
+enter_xon_mode	smxon	SX	T{
+turn on xon/xoff handshaking
+T}
+erase_chars	ech	ec	T{
+erase #1 characters (P)
+T}
+exit_alt_charset_mode	rmacs	ae	T{
+end alternate character set (P)
+T}
+exit_am_mode	rmam	RA	T{
+turn off automatic margins
+T}
+exit_attribute_mode	sgr0	me	T{
+turn off all attributes
+T}
+exit_ca_mode	rmcup	te	T{
+strings to end programs using cup
+T}
+exit_delete_mode	rmdc	ed	T{
+end delete mode
+T}
+exit_doublewide_mode	rwidm	ZQ	T{
+End double-wide mode
+T}
+exit_insert_mode	rmir	ei	T{
+exit insert mode
+T}
+exit_italics_mode	ritm	ZR	T{
+End italic mode
+T}
+exit_leftward_mode	rlm	ZS	T{
+End left-motion mode
+T}
+exit_micro_mode	rmicm	ZT	T{
+End micro-motion mode
+T}
+exit_shadow_mode	rshm	ZU	T{
+End shadow-print mode
+T}
+exit_standout_mode	rmso	se	T{
+exit standout mode
+T}
+exit_subscript_mode	rsubm	ZV	T{
+End subscript mode
+T}
+exit_superscript_mode	rsupm	ZW	T{
+End superscript mode
+T}
+exit_underline_mode	rmul	ue	T{
+exit underline mode
+T}
+exit_upward_mode	rum	ZX	T{
+End reverse character motion
+T}
+exit_xon_mode	rmxon	RX	T{
+turn off xon/xoff handshaking
+T}
+fixed_pause	pause	PA	T{
+pause for 2-3 seconds
+T}
+flash_hook	hook	fh	T{
+flash switch hook
+T}
+flash_screen	flash	vb	T{
+visible bell (may not move cursor)
+T}
+form_feed	ff	ff	T{
+hardcopy terminal page eject (P*)
+T}
+from_status_line	fsl	fs	T{
+return from status line
+T}
+goto_window	wingo	WG	T{
+go to window #1
+T}
+hangup	hup	HU	T{
+hang-up phone
+T}
+init_1string	is1	i1	T{
+initialization string
+T}
+init_2string	is2	is	T{
+initialization string
+T}
+init_3string	is3	i3	T{
+initialization string
+T}
+init_file	if	if	T{
+name of initialization file
+T}
+init_prog	iprog	iP	T{
+path name of program for initialization
+T}
+initialize_color	initc	Ic	T{
+initialize color #1 to (#2,#3,#4)
+T}
+initialize_pair	initp	Ip	T{
+Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)
+T}
+insert_character	ich1	ic	T{
+insert character (P)
+T}
+insert_line	il1	al	T{
+insert line (P*)
+T}
+insert_padding	ip	ip	T{
+insert padding after inserted character
+T}
+key_a1	ka1	K1	T{
+upper left of keypad
+T}
+key_a3	ka3	K3	T{
+upper right of keypad
+T}
+key_b2	kb2	K2	T{
+center of keypad
+T}
+key_backspace	kbs	kb	T{
+backspace key
+T}
+key_beg	kbeg	@1	T{
+begin key
+T}
+key_btab	kcbt	kB	T{
+back-tab key
+T}
+key_c1	kc1	K4	T{
+lower left of keypad
+T}
+key_c3	kc3	K5	T{
+lower right of keypad
+T}
+key_cancel	kcan	@2	T{
+cancel key
+T}
+key_catab	ktbc	ka	T{
+clear-all-tabs key
+T}
+key_clear	kclr	kC	T{
+clear-screen or erase key
+T}
+key_close	kclo	@3	T{
+close key
+T}
+key_command	kcmd	@4	T{
+command key
+T}
+key_copy	kcpy	@5	T{
+copy key
+T}
+key_create	kcrt	@6	T{
+create key
+T}
+key_ctab	kctab	kt	T{
+clear-tab key
+T}
+key_dc	kdch1	kD	T{
+delete-character key
+T}
+key_dl	kdl1	kL	T{
+delete-line key
+T}
+key_down	kcud1	kd	T{
+down-arrow key
+T}
+key_eic	krmir	kM	T{
+sent by rmir or smir in insert mode
+T}
+key_end	kend	@7	T{
+end key
+T}
+key_enter	kent	@8	T{
+enter/send key
+T}
+key_eol	kel	kE	T{
+clear-to-end-of-line key
+T}
+key_eos	ked	kS	T{
+clear-to-end-of-screen key
+T}
+key_exit	kext	@9	T{
+exit key
+T}
+key_f0	kf0	k0	T{
+F0 function key
+T}
+key_f1	kf1	k1	T{
+F1 function key
+T}
+key_f10	kf10	k;	T{
+F10 function key
+T}
+key_f11	kf11	F1	T{
+F11 function key
+T}
+key_f12	kf12	F2	T{
+F12 function key
+T}
+key_f13	kf13	F3	T{
+F13 function key
+T}
+key_f14	kf14	F4	T{
+F14 function key
+T}
+key_f15	kf15	F5	T{
+F15 function key
+T}
+key_f16	kf16	F6	T{
+F16 function key
+T}
+key_f17	kf17	F7	T{
+F17 function key
+T}
+key_f18	kf18	F8	T{
+F18 function key
+T}
+key_f19	kf19	F9	T{
+F19 function key
+T}
+key_f2	kf2	k2	T{
+F2 function key
+T}
+key_f20	kf20	FA	T{
+F20 function key
+T}
+key_f21	kf21	FB	T{
+F21 function key
+T}
+key_f22	kf22	FC	T{
+F22 function key
+T}
+key_f23	kf23	FD	T{
+F23 function key
+T}
+key_f24	kf24	FE	T{
+F24 function key
+T}
+key_f25	kf25	FF	T{
+F25 function key
+T}
+key_f26	kf26	FG	T{
+F26 function key
+T}
+key_f27	kf27	FH	T{
+F27 function key
+T}
+key_f28	kf28	FI	T{
+F28 function key
+T}
+key_f29	kf29	FJ	T{
+F29 function key
+T}
+key_f3	kf3	k3	T{
+F3 function key
+T}
+key_f30	kf30	FK	T{
+F30 function key
+T}
+key_f31	kf31	FL	T{
+F31 function key
+T}
+key_f32	kf32	FM	T{
+F32 function key
+T}
+key_f33	kf33	FN	T{
+F33 function key
+T}
+key_f34	kf34	FO	T{
+F34 function key
+T}
+key_f35	kf35	FP	T{
+F35 function key
+T}
+key_f36	kf36	FQ	T{
+F36 function key
+T}
+key_f37	kf37	FR	T{
+F37 function key
+T}
+key_f38	kf38	FS	T{
+F38 function key
+T}
+key_f39	kf39	FT	T{
+F39 function key
+T}
+key_f4	kf4	k4	T{
+F4 function key
+T}
+key_f40	kf40	FU	T{
+F40 function key
+T}
+key_f41	kf41	FV	T{
+F41 function key
+T}
+key_f42	kf42	FW	T{
+F42 function key
+T}
+key_f43	kf43	FX	T{
+F43 function key
+T}
+key_f44	kf44	FY	T{
+F44 function key
+T}
+key_f45	kf45	FZ	T{
+F45 function key
+T}
+key_f46	kf46	Fa	T{
+F46 function key
+T}
+key_f47	kf47	Fb	T{
+F47 function key
+T}
+key_f48	kf48	Fc	T{
+F48 function key
+T}
+key_f49	kf49	Fd	T{
+F49 function key
+T}
+key_f5	kf5	k5	T{
+F5 function key
+T}
+key_f50	kf50	Fe	T{
+F50 function key
+T}
+key_f51	kf51	Ff	T{
+F51 function key
+T}
+key_f52	kf52	Fg	T{
+F52 function key
+T}
+key_f53	kf53	Fh	T{
+F53 function key
+T}
+key_f54	kf54	Fi	T{
+F54 function key
+T}
+key_f55	kf55	Fj	T{
+F55 function key
+T}
+key_f56	kf56	Fk	T{
+F56 function key
+T}
+key_f57	kf57	Fl	T{
+F57 function key
+T}
+key_f58	kf58	Fm	T{
+F58 function key
+T}
+key_f59	kf59	Fn	T{
+F59 function key
+T}
+key_f6	kf6	k6	T{
+F6 function key
+T}
+key_f60	kf60	Fo	T{
+F60 function key
+T}
+key_f61	kf61	Fp	T{
+F61 function key
+T}
+key_f62	kf62	Fq	T{
+F62 function key
+T}
+key_f63	kf63	Fr	T{
+F63 function key
+T}
+key_f7	kf7	k7	T{
+F7 function key
+T}
+key_f8	kf8	k8	T{
+F8 function key
+T}
+key_f9	kf9	k9	T{
+F9 function key
+T}
+key_find	kfnd	@0	T{
+find key
+T}
+key_help	khlp	%1	T{
+help key
+T}
+key_home	khome	kh	T{
+home key
+T}
+key_ic	kich1	kI	T{
+insert-character key
+T}
+key_il	kil1	kA	T{
+insert-line key
+T}
+key_left	kcub1	kl	T{
+left-arrow key
+T}
+key_ll	kll	kH	T{
+lower-left key (home down)
+T}
+key_mark	kmrk	%2	T{
+mark key
+T}
+key_message	kmsg	%3	T{
+message key
+T}
+key_move	kmov	%4	T{
+move key
+T}
+key_next	knxt	%5	T{
+next key
+T}
+key_npage	knp	kN	T{
+next-page key
+T}
+key_open	kopn	%6	T{
+open key
+T}
+key_options	kopt	%7	T{
+options key
+T}
+key_ppage	kpp	kP	T{
+previous-page key
+T}
+key_previous	kprv	%8	T{
+previous key
+T}
+key_print	kprt	%9	T{
+print key
+T}
+key_redo	krdo	%0	T{
+redo key
+T}
+key_reference	kref	&1	T{
+reference key
+T}
+key_refresh	krfr	&2	T{
+refresh key
+T}
+key_replace	krpl	&3	T{
+replace key
+T}
+key_restart	krst	&4	T{
+restart key
+T}
+key_resume	kres	&5	T{
+resume key
+T}
+key_right	kcuf1	kr	T{
+right-arrow key
+T}
+key_save	ksav	&6	T{
+save key
+T}
+key_sbeg	kBEG	&9	T{
+shifted begin key
+T}
+key_scancel	kCAN	&0	T{
+shifted cancel key
+T}
+key_scommand	kCMD	*1	T{
+shifted command key
+T}
+key_scopy	kCPY	*2	T{
+shifted copy key
+T}
+key_screate	kCRT	*3	T{
+shifted create key
+T}
+key_sdc	kDC	*4	T{
+shifted delete-character key
+T}
+key_sdl	kDL	*5	T{
+shifted delete-line key
+T}
+key_select	kslt	*6	T{
+select key
+T}
+key_send	kEND	*7	T{
+shifted end key
+T}
+key_seol	kEOL	*8	T{
+shifted clear-to-end-of-line key
+T}
+key_sexit	kEXT	*9	T{
+shifted exit key
+T}
+key_sf	kind	kF	T{
+scroll-forward key
+T}
+key_sfind	kFND	*0	T{
+shifted find key
+T}
+key_shelp	kHLP	#1	T{
+shifted help key
+T}
+key_shome	kHOM	#2	T{
+shifted home key
+T}
+key_sic	kIC	#3	T{
+shifted insert-character key
+T}
+key_sleft	kLFT	#4	T{
+shifted left-arrow key
+T}
+key_smessage	kMSG	%a	T{
+shifted message key
+T}
+key_smove	kMOV	%b	T{
+shifted move key
+T}
+key_snext	kNXT	%c	T{
+shifted next key
+T}
+key_soptions	kOPT	%d	T{
+shifted options key
+T}
+key_sprevious	kPRV	%e	T{
+shifted previous key
+T}
+key_sprint	kPRT	%f	T{
+shifted print key
+T}
+key_sr	kri	kR	T{
+scroll-backward key
+T}
+key_sredo	kRDO	%g	T{
+shifted redo key
+T}
+key_sreplace	kRPL	%h	T{
+shifted replace key
+T}
+key_sright	kRIT	%i	T{
+shifted right-arrow key
+T}
+key_srsume	kRES	%j	T{
+shifted resume key
+T}
+key_ssave	kSAV	!1	T{
+shifted save key
+T}
+key_ssuspend	kSPD	!2	T{
+shifted suspend key
+T}
+key_stab	khts	kT	T{
+set-tab key
+T}
+key_sundo	kUND	!3	T{
+shifted undo key
+T}
+key_suspend	kspd	&7	T{
+suspend key
+T}
+key_undo	kund	&8	T{
+undo key
+T}
+key_up	kcuu1	ku	T{
+up-arrow key
+T}
+keypad_local	rmkx	ke	T{
+leave 'keyboard_transmit' mode
+T}
+keypad_xmit	smkx	ks	T{
+enter 'keyboard_transmit' mode
+T}
+lab_f0	lf0	l0	T{
+label on function key f0 if not f0
+T}
+lab_f1	lf1	l1	T{
+label on function key f1 if not f1
+T}
+lab_f10	lf10	la	T{
+label on function key f10 if not f10
+T}
+lab_f2	lf2	l2	T{
+label on function key f2 if not f2
+T}
+lab_f3	lf3	l3	T{
+label on function key f3 if not f3
+T}
+lab_f4	lf4	l4	T{
+label on function key f4 if not f4
+T}
+lab_f5	lf5	l5	T{
+label on function key f5 if not f5
+T}
+lab_f6	lf6	l6	T{
+label on function key f6 if not f6
+T}
+lab_f7	lf7	l7	T{
+label on function key f7 if not f7
+T}
+lab_f8	lf8	l8	T{
+label on function key f8 if not f8
+T}
+lab_f9	lf9	l9	T{
+label on function key f9 if not f9
+T}
+label_format	fln	Lf	T{
+label format
+T}
+label_off	rmln	LF	T{
+turn off soft labels
+T}
+label_on	smln	LO	T{
+turn on soft labels
+T}
+meta_off	rmm	mo	T{
+turn off meta mode
+T}
+meta_on	smm	mm	T{
+turn on meta mode (8th-bit on)
+T}
+micro_column_address	mhpa	ZY	T{
+Like column_address in micro mode
+T}
+micro_down	mcud1	ZZ	T{
+Like cursor_down in micro mode
+T}
+micro_left	mcub1	Za	T{
+Like cursor_left in micro mode
+T}
+micro_right	mcuf1	Zb	T{
+Like cursor_right in micro mode
+T}
+micro_row_address	mvpa	Zc	T{
+Like row_address #1 in micro mode
+T}
+micro_up	mcuu1	Zd	T{
+Like cursor_up in micro mode
+T}
+newline	nel	nw	T{
+newline (behave like cr followed by lf)
+T}
+order_of_pins	porder	Ze	T{
+Match software bits to print-head pins
+T}
+orig_colors	oc	oc	T{
+Set all color pairs to the original ones
+T}
+orig_pair	op	op	T{
+Set default pair to its original value
+T}
+pad_char	pad	pc	T{
+padding char (instead of null)
+T}
+parm_dch	dch	DC	T{
+delete #1 characters (P*)
+T}
+parm_delete_line	dl	DL	T{
+delete #1 lines (P*)
+T}
+parm_down_cursor	cud	DO	T{
+down #1 lines (P*)
+T}
+parm_down_micro	mcud	Zf	T{
+Like parm_down_cursor in micro mode
+T}
+parm_ich	ich	IC	T{
+insert #1 characters (P*)
+T}
+parm_index	indn	SF	T{
+scroll forward #1 lines (P)
+T}
+parm_insert_line	il	AL	T{
+insert #1 lines (P*)
+T}
+parm_left_cursor	cub	LE	T{
+move #1 characters to the left (P)
+T}
+parm_left_micro	mcub	Zg	T{
+Like parm_left_cursor in micro mode
+T}
+parm_right_cursor	cuf	RI	T{
+move #1 characters to the right (P*)
+T}
+parm_right_micro	mcuf	Zh	T{
+Like parm_right_cursor in micro mode
+T}
+parm_rindex	rin	SR	T{
+scroll back #1 lines (P)
+T}
+parm_up_cursor	cuu	UP	T{
+up #1 lines (P*)
+T}
+parm_up_micro	mcuu	Zi	T{
+Like parm_up_cursor in micro mode
+T}
+pkey_key	pfkey	pk	T{
+program function key #1 to type string #2
+T}
+pkey_local	pfloc	pl	T{
+program function key #1 to execute string #2
+T}
+pkey_xmit	pfx	px	T{
+program function key #1 to transmit string #2
+T}
+plab_norm	pln	pn	T{
+program label #1 to show string #2
+T}
+print_screen	mc0	ps	T{
+print contents of screen
+T}
+prtr_non	mc5p	pO	T{
+turn on printer for #1 bytes
+T}
+prtr_off	mc4	pf	T{
+turn off printer
+T}
+prtr_on	mc5	po	T{
+turn on printer
+T}
+pulse	pulse	PU	T{
+select pulse dialing
+T}
+quick_dial	qdial	QD	T{
+dial number #1 without checking
+T}
+remove_clock	rmclk	RC	T{
+remove clock
+T}
+repeat_char	rep	rp	T{
+repeat char #1 #2 times (P*)
+T}
+req_for_input	rfi	RF	T{
+send next input char (for ptys)
+T}
+reset_1string	rs1	r1	T{
+reset string
+T}
+reset_2string	rs2	r2	T{
+reset string
+T}
+reset_3string	rs3	r3	T{
+reset string
+T}
+reset_file	rf	rf	T{
+name of reset file
+T}
+restore_cursor	rc	rc	T{
+restore cursor to position of last save_cursor
+T}
+row_address	vpa	cv	T{
+vertical position #1 absolute (P)
+T}
+save_cursor	sc	sc	T{
+save current cursor position (P)
+T}
+scroll_forward	ind	sf	T{
+scroll text up (P)
+T}
+scroll_reverse	ri	sr	T{
+scroll text down (P)
+T}
+select_char_set	scs	Zj	T{
+Select character set, #1
+T}
+set_attributes	sgr	sa	T{
+define video attributes #1-#9 (PG9)
+T}
+set_background	setb	Sb	T{
+Set background color #1
+T}
+set_bottom_margin	smgb	Zk	T{
+Set bottom margin at current line
+T}
+set_bottom_margin_parm	smgbp	Zl	T{
+Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom
+T}
+set_clock	sclk	SC	T{
+set clock, #1 hrs #2 mins #3 secs
+T}
+set_color_pair	scp	sp	T{
+Set current color pair to #1
+T}
+set_foreground	setf	Sf	T{
+Set foreground color #1
+T}
+set_left_margin	smgl	ML	T{
+set left soft margin at current column.	 See smgl. (ML is not in BSD termcap).
+T}
+set_left_margin_parm	smglp	Zm	T{
+Set left (right) margin at column #1
+T}
+set_right_margin	smgr	MR	T{
+set right soft margin at current column
+T}
+set_right_margin_parm	smgrp	Zn	T{
+Set right margin at column #1
+T}
+set_tab	hts	st	T{
+set a tab in every row, current columns
+T}
+set_top_margin	smgt	Zo	T{
+Set top margin at current line
+T}
+set_top_margin_parm	smgtp	Zp	T{
+Set top (bottom) margin at row #1
+T}
+set_window	wind	wi	T{
+current window is lines #1-#2 cols #3-#4
+T}
+start_bit_image	sbim	Zq	T{
+Start printing bit image graphics
+T}
+start_char_set_def	scsd	Zr	T{
+Start character set definition #1, with #2 characters in the set
+T}
+stop_bit_image	rbim	Zs	T{
+Stop printing bit image graphics
+T}
+stop_char_set_def	rcsd	Zt	T{
+End definition of character set #1
+T}
+subscript_characters	subcs	Zu	T{
+List of subscriptable characters
+T}
+superscript_characters	supcs	Zv	T{
+List of superscriptable characters
+T}
+tab	ht	ta	T{
+tab to next 8-space hardware tab stop
+T}
+these_cause_cr	docr	Zw	T{
+Printing any of these characters causes CR
+T}
+to_status_line	tsl	ts	T{
+move to status line, column #1
+T}
+tone	tone	TO	T{
+select touch tone dialing
+T}
+underline_char	uc	uc	T{
+underline char and move past it
+T}
+up_half_line	hu	hu	T{
+half a line up
+T}
+user0	u0	u0	T{
+User string #0
+T}
+user1	u1	u1	T{
+User string #1
+T}
+user2	u2	u2	T{
+User string #2
+T}
+user3	u3	u3	T{
+User string #3
+T}
+user4	u4	u4	T{
+User string #4
+T}
+user5	u5	u5	T{
+User string #5
+T}
+user6	u6	u6	T{
+User string #6
+T}
+user7	u7	u7	T{
+User string #7
+T}
+user8	u8	u8	T{
+User string #8
+T}
+user9	u9	u9	T{
+User string #9
+T}
+wait_tone	wait	WA	T{
+wait for dial-tone
+T}
+xoff_character	xoffc	XF	T{
+XOFF character
+T}
+xon_character	xonc	XN	T{
+XON character
+T}
+zero_motion	zerom	Zx	T{
+No motion for subsequent character
+T}
+.TE
+.ad
+
+The following string capabilities are present in the SVr4.0 term structure,
+but were originally not documented in the man page.
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw18.
+\fBVariable	Cap-	TCap	Description\fR
+\fBString	name	Code\fR
+alt_scancode_esc	scesa	S8	T{
+Alternate escape for scancode emulation
+T}
+bit_image_carriage_return	bicr	Yv	T{
+Move to beginning of same row
+T}
+bit_image_newline	binel	Zz	T{
+Move to next row of the bit image
+T}
+bit_image_repeat	birep	Xy	T{
+Repeat bit image cell #1 #2 times
+T}
+char_set_names	csnm	Zy	T{
+Produce #1'th item from list of character set names
+T}
+code_set_init	csin	ci	T{
+Init sequence for multiple codesets
+T}
+color_names	colornm	Yw	T{
+Give name for color #1
+T}
+define_bit_image_region	defbi	Yx	T{
+Define rectangualar bit image region
+T}
+device_type	devt	dv	T{
+Indicate language/codeset support
+T}
+display_pc_char	dispc	S1	T{
+Display PC character #1
+T}
+end_bit_image_region	endbi	Yy	T{
+End a bit-image region
+T}
+enter_pc_charset_mode	smpch	S2	T{
+Enter PC character display mode
+T}
+enter_scancode_mode	smsc	S4	T{
+Enter PC scancode mode
+T}
+exit_pc_charset_mode	rmpch	S3	T{
+Exit PC character display mode
+T}
+exit_scancode_mode	rmsc	S5	T{
+Exit PC scancode mode
+T}
+get_mouse	getm	Gm	T{
+Curses should get button events, parameter #1 not documented.
+T}
+key_mouse	kmous	Km	T{
+Mouse event has occurred
+T}
+mouse_info	minfo	Mi	T{
+Mouse status information
+T}
+pc_term_options	pctrm	S6	T{
+PC terminal options
+T}
+pkey_plab	pfxl	xl	T{
+Program function key #1 to type string #2 and show string #3
+T}
+req_mouse_pos	reqmp	RQ	T{
+Request mouse position
+T}
+scancode_escape	scesc	S7	T{
+Escape for scancode emulation
+T}
+set0_des_seq	s0ds	s0	T{
+Shift to codeset 0 (EUC set 0, ASCII)
+T}
+set1_des_seq	s1ds	s1	T{
+Shift to codeset 1
+T}
+set2_des_seq	s2ds	s2	T{
+Shift to codeset 2
+T}
+set3_des_seq	s3ds	s3	T{
+Shift to codeset 3
+T}
+set_a_background	setab	AB	T{
+Set background color to #1, using ANSI escape
+T}
+set_a_foreground	setaf	AF	T{
+Set foreground color to #1, using ANSI escape
+T}
+set_color_band	setcolor	Yz	T{
+Change to ribbon color #1
+T}
+set_lr_margin	smglr	ML	T{
+Set both left and right margins to #1, #2.  (ML is not in BSD termcap).
+T}
+set_page_length	slines	YZ	T{
+Set page length to #1 lines
+T}
+set_tb_margin	smgtb	MT	T{
+Sets both top and bottom margins to #1, #2
+T}
+.TE
+.ad
+
+.in .8i
+The XSI Curses standard added these.  They are some post-4.1
+versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x.
+The \fBncurses\fR termcap names for them are invented; according to the
+XSI Curses standard, they have no termcap names.  If your compiled terminfo
+entries use these, they may not be binary-compatible with System V terminfo
+entries after SVr4.1; beware!
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable	Cap-	TCap	Description\fR
+\fBString	name	Code\fR
+enter_horizontal_hl_mode	ehhlm	Xh	T{
+Enter horizontal highlight mode
+T}
+enter_left_hl_mode	elhlm	Xl	T{
+Enter left highlight mode
+T}
+enter_low_hl_mode	elohlm	Xo	T{
+Enter low highlight mode
+T}
+enter_right_hl_mode	erhlm	Xr	T{
+Enter right highlight mode
+T}
+enter_top_hl_mode	ethlm	Xt	T{
+Enter top highlight mode
+T}
+enter_vertical_hl_mode	evhlm	Xv	T{
+Enter vertical highlight mode
+T}
+set_a_attributes	sgr1	sA	T{
+Define second set of video attributes #1-#6
+T}
+set_pglen_inch	slength	sL	T{
+YI Set page length to #1 hundredth of an inch
+T}
+.TE
+.ad
+.\" $Id: terminfo.tail,v 1.49 2008/02/16 20:57:43 tom Exp $
+.\" Beginning of terminfo.tail file
+.\" This file is part of ncurses.
+.\" See "terminfo.head" for copyright.
+.ps +1
+.
+.SS A Sample Entry
+.
+The following entry, describing an ANSI-standard terminal, is representative
+of what a \fBterminfo\fR entry for a modern terminal typically looks like.
+.PP
+.nf
+.in -2
+.ta .3i
+.ft CW
+\s-2ansi|ansi/pc-term compatible with color,
+        mc5i,
+        colors#8, ncv#3, pairs#64,
+        cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC,
+        cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM,
+        ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I,
+        ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT,
+        kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B,
+        kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V,
+        kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P,
+        kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U,
+        kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S,
+        op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%-%db,
+        rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B,
+        s3ds=\\E+B, 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;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
+        sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n,
+        u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2
+.in +2
+.fi
+.ft R
+.PP
+Entries may continue onto multiple lines by placing white space at
+the beginning of each line except the first.
+Comments may be included on lines beginning with ``#''.
+Capabilities in
+.I terminfo
+are of three types:
+Boolean capabilities which indicate that the terminal has
+some particular feature, numeric capabilities giving the size of the terminal
+or the size of particular delays, and string
+capabilities, which give a sequence which can be used to perform particular
+terminal operations.
+.PP
+.SS Types of Capabilities
+.PP
+All capabilities have names.
+For instance, the fact that
+ANSI-standard terminals have
+.I "automatic margins"
+(i.e., an automatic return and line-feed
+when the end of a line is reached) is indicated by the capability \fBam\fR.
+Hence the description of ansi includes \fBam\fR.
+Numeric capabilities are followed by the character `#' and then a positive value.
+Thus \fBcols\fR, which indicates the number of columns the terminal has,
+gives the value `80' for ansi.
+Values for numeric capabilities may be specified in decimal, octal or hexadecimal,
+using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF).
+.PP
+Finally, string valued capabilities, such as \fBel\fR (clear to end of line
+sequence) are given by the two-character code, an `=', and then a string
+ending at the next following `,'.
+.PP
+A number of escape sequences are provided in the string valued capabilities
+for easy encoding of characters there.
+Both \fB\eE\fR and \fB\ee\fR
+map to an \s-1ESCAPE\s0 character,
+\fB^x\fR maps to a control-x for any appropriate x, and the sequences
+\fB\en \el \er \et \eb \ef \es\fR give
+a newline, line-feed, return, tab, backspace, form-feed, and space.
+Other escapes include \fB\e^\fR for \fB^\fR,
+\fB\e\e\fR for \fB\e\fR,
+\fB\e\fR, for comma,
+\fB\e:\fR for \fB:\fR,
+and \fB\e0\fR for null.
+(\fB\e0\fR will produce \e200, which does not terminate a string but behaves
+as a null character on most terminals, providing CS7 is specified.
+See stty(1).)
+Finally, characters may be given as three octal digits after a \fB\e\fR.
+.PP
+A delay in milliseconds may appear anywhere in a string capability, enclosed in
+$<..> brackets, as in \fBel\fP=\eEK$<5>, and padding characters are supplied by
+.I tputs
+to provide this delay.
+The delay must be a number with at most one decimal
+place of precision; it may be followed by suffixes `*' or '/' or both.
+A `*'
+indicates that the padding required is proportional to the number of lines
+affected by the operation, and the amount given is the per-affected-unit
+padding required.
+(In the case of insert character, the factor is still the
+number of
+.IR lines
+affected.)  Normally, padding is advisory if the device has the \fBxon\fR
+capability; it is used for cost computation but does not trigger delays.
+A `/'
+suffix indicates that the padding is mandatory and forces a delay of the given
+number of milliseconds even on devices for which \fBxon\fR is present to
+indicate flow control.
+.PP
+Sometimes individual capabilities must be commented out.
+To do this, put a period before the capability name.
+For example, see the second
+.B ind
+in the example above.
+.br
+.ne 5
+.PP
+.SS Fetching Compiled Descriptions
+.PP
+If the environment variable TERMINFO is set, it is interpreted as the pathname
+of a directory containing the compiled description you are working on.
+Only
+that directory is searched.
+.PP
+If TERMINFO is not set, the \fBncurses\fR version of the terminfo reader code
+will instead look in the directory \fB$HOME/.terminfo\fR
+for a compiled description.
+If it fails to find one there, and the environment variable TERMINFO_DIRS is
+set, it will interpret the contents of that variable as a list of colon-
+separated directories to be searched (an empty entry is interpreted as a
+command to search \fI\*d\fR).
+If no description is found in any of the
+TERMINFO_DIRS directories, the fetch fails.
+.PP
+If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the
+system terminfo directory, \fI\*d\fR.
+.PP
+(Neither the \fB$HOME/.terminfo\fR lookups nor TERMINFO_DIRS extensions are
+supported under stock System V terminfo/curses.)
+.PP
+.SS Preparing Descriptions
+.PP
+We now outline how to prepare descriptions of terminals.
+The most effective way to prepare a terminal description is by imitating
+the description of a similar terminal in
+.I terminfo
+and to build up a description gradually, using partial descriptions
+with
+.I vi
+or some other screen-oriented program to check that they are correct.
+Be aware that a very unusual terminal may expose deficiencies in
+the ability of the
+.I terminfo
+file to describe it
+or bugs in the screen-handling code of the test program.
+.PP
+To get the padding for insert line right (if the terminal manufacturer
+did not document it) a severe test is to edit a large file at 9600 baud,
+delete 16 or so lines from the middle of the screen, then hit the `u'
+key several times quickly.
+If the terminal messes up, more padding is usually needed.
+A similar test can be used for insert character.
+.PP
+.SS Basic Capabilities
+.PP
+The number of columns on each line for the terminal is given by the
+\fBcols\fR numeric capability.
+If the terminal is a \s-1CRT\s0, then the
+number of lines on the screen is given by the \fBlines\fR capability.
+If the terminal wraps around to the beginning of the next line when
+it reaches the right margin, then it should have the \fBam\fR capability.
+If the terminal can clear its screen, leaving the cursor in the home
+position, then this is given by the \fBclear\fR string capability.
+If the terminal overstrikes
+(rather than clearing a position when a character is struck over)
+then it should have the \fBos\fR capability.
+If the terminal is a printing terminal, with no soft copy unit,
+give it both
+.B hc
+and
+.BR os .
+.RB ( os
+applies to storage scope terminals, such as \s-1TEKTRONIX\s+1 4010
+series, as well as hard copy and APL terminals.)
+If there is a code to move the cursor to the left edge of the current
+row, give this as
+.BR cr .
+(Normally this will be carriage return, control M.)
+If there is a code to produce an audible signal (bell, beep, etc)
+give this as
+.BR bel .
+.PP
+If there is a code to move the cursor one position to the left
+(such as backspace) that capability should be given as
+.BR cub1 .
+Similarly, codes to move to the right, up, and down should be
+given as
+.BR cuf1 ,
+.BR cuu1 ,
+and
+.BR cud1 .
+These local cursor motions should not alter the text they pass over,
+for example, you would not normally use `\fBcuf1\fP=\ ' because the
+space would erase the character moved over.
+.PP
+A very important point here is that the local cursor motions encoded
+in
+.I terminfo
+are undefined at the left and top edges of a \s-1CRT\s0 terminal.
+Programs should never attempt to backspace around the left edge,
+unless
+.B bw
+is given,
+and never attempt to go up locally off the top.
+In order to scroll text up, a program will go to the bottom left corner
+of the screen and send the
+.B ind
+(index) string.
+.PP
+To scroll text down, a program goes to the top left corner
+of the screen and sends the
+.B ri
+(reverse index) string.
+The strings
+.B ind
+and
+.B ri
+are undefined when not on their respective corners of the screen.
+.PP
+Parameterized versions of the scrolling sequences are
+.B indn
+and
+.B rin
+which have the same semantics as
+.B ind
+and
+.B ri
+except that they take one parameter, and scroll that many lines.
+They are also undefined except at the appropriate edge of the screen.
+.PP
+The \fBam\fR capability tells whether the cursor sticks at the right
+edge of the screen when text is output, but this does not necessarily
+apply to a
+.B cuf1
+from the last column.
+The only local motion which is defined from the left edge is if
+.B bw
+is given, then a
+.B cub1
+from the left edge will move to the right edge of the previous row.
+If
+.B bw
+is not given, the effect is undefined.
+This is useful for drawing a box around the edge of the screen, for example.
+If the terminal has switch selectable automatic margins,
+the
+.I terminfo
+file usually assumes that this is on; i.e., \fBam\fR.
+If the terminal has a command which moves to the first column of the next
+line, that command can be given as
+.B nel
+(newline).
+It does not matter if the command clears the remainder of the current line,
+so if the terminal has no
+.B cr
+and
+.B lf
+it may still be possible to craft a working
+.B nel
+out of one or both of them.
+.PP
+These capabilities suffice to describe hard-copy and \*(lqglass-tty\*(rq terminals.
+Thus the model 33 teletype is described as
+.PP
+.DT
+.nf
+.ft CW
+.\".in -2
+\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
+	bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+.\".in +2
+.ft R
+.PP
+while the Lear Siegler \s-1ADM-3\s0 is described as
+.PP
+.DT
+.nf
+.ft CW
+.\".in -2
+\s-1adm3\||\|3\||\|lsi adm3,
+	am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+	ind=^J, lines#24,\s+1
+.\".in +2
+.ft R
+.fi
+.PP
+.SS Parameterized Strings
+.PP
+Cursor addressing and other strings requiring parameters
+in the terminal are described by a
+parameterized string capability, with
+.IR printf (3)
+like escapes \fB%x\fR in it.
+For example, to address the cursor, the
+.B cup
+capability is given, using two parameters:
+the row and column to address to.
+(Rows and columns are numbered from zero and refer to the
+physical screen visible to the user, not to any unseen memory.)
+If the terminal has memory relative cursor addressing,
+that can be indicated by
+.BR mrcup .
+.PP
+The parameter mechanism uses a stack and special \fB%\fP codes
+to manipulate it.
+Typically a sequence will push one of the
+parameters onto the stack and then print it in some format.
+Print (e.g., "%d") is a special case.
+Other operations, including "%t" pop their operand from the stack.
+It is noted that more complex operations are often necessary,
+e.g., in the \fBsgr\fP string.
+.PP
+The \fB%\fR encodings have the following meanings:
+.PP
+.TP 5
+\s-1%%
+outputs `%'
+.TP
+%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
+as in \fBprintf\fP, flags are [-+#] and space.
+Use a `:' to allow the next character to be a `-' flag,
+avoiding interpreting "%-" as an operator.
+.TP
+%c
+print pop() like %c in \fBprintf\fP
+.TP
+%s
+print pop() like %s in \fBprintf\fP
+.TP
+%p[1-9]
+push \fIi\fP'th parameter
+.TP
+%P[a-z]
+set dynamic variable [a-z] to pop()
+.TP
+%g[a-z]
+get dynamic variable [a-z] and push it
+.TP
+%P[A-Z]
+set static variable [a-z] to pop()
+.TP
+%g[A-Z]
+get static variable [a-z] and push it
+.IP
+The terms "static" and "dynamic" are misleading.
+Historically, these are simply two different sets of variables,
+whose values are not reset between calls to \fBtparm\fP.
+However, that fact is not documented in other implementations.
+Relying on it will adversely impact portability to other implementations.
+.TP
+%'\fIc\fP'
+char constant \fIc\fP
+.TP
+%{\fInn\fP}
+integer constant \fInn\fP
+.TP
+%l
+push strlen(pop)
+.TP
+%+ %- %* %/ %m
+arithmetic (%m is mod): push(pop() op pop())
+.TP
+%& %| %^
+bit operations (AND, OR and exclusive-OR): push(pop() op pop())
+.TP
+%= %> %<
+logical operations: push(pop() op pop())
+.TP
+%A, %O
+logical AND and OR operations (for conditionals)
+.TP
+%! %~
+unary operations (logical and bit complement): push(op pop())
+.TP
+%i
+add 1 to first two parameters (for ANSI terminals)
+.TP
+%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %;
+This forms an if-then-else.
+The %e \fIelsepart\fP is optional.
+Usually the %? \fIexpr\fP part pushes a value onto the stack,
+and %t pops it from the stack, testing if it is nonzero (true).
+If it is zero (false), control passes to the %e (else) part.
+.IP
+It is possible to form else-if's a la Algol 68:
+.RS
+%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
+.RE
+.IP
+where c\di\u are conditions, b\di\u are bodies.
+.IP
+Use the \fB-f\fP option of \fBtic\fP or \fB@INFOCMP@\fP to see
+the structure of if-the-else's.
+Some strings, e.g., \fBsgr\fP can be very complicated when written
+on one line.
+The \fB-f\fP option splits the string into lines with the parts indented.
+.PP
+Binary operations are in postfix form with the operands in the usual order.
+That is, to get x-5 one would use "%gx%{5}%-".
+%P and %g variables are
+persistent across escape-string evaluations.
+.PP
+Consider the HP2645, which, to get to row 3 and column 12, needs
+to be sent \eE&a12c03Y padded for 6 milliseconds.
+Note that the order
+of the rows and columns is inverted here, and that the row and column
+are printed as two digits.
+Thus its \fBcup\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq.
+.PP
+The Microterm \s-1ACT-IV\s0 needs the current row and column sent
+preceded by a \fB^T\fR, with the row and column simply encoded in binary,
+\*(lqcup=^T%p1%c%p2%c\*(rq.
+Terminals which use \*(lq%c\*(rq need to be able to
+backspace the cursor (\fBcub1\fR),
+and to move the cursor up one line on the screen (\fBcuu1\fR).
+This is necessary because it is not always safe to transmit \fB\en\fR
+\fB^D\fR and \fB\er\fR, as the system may change or discard them.
+(The library routines dealing with terminfo set tty modes so that
+tabs are never expanded, so \et is safe to send.
+This turns out to be essential for the Ann Arbor 4080.)
+.PP
+A final example is the \s-1LSI ADM\s0-3a, which uses row and column
+offset by a blank character, thus \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq.
+After sending `\eE=', this pushes the first parameter, pushes the
+ASCII value for a space (32), adds them (pushing the sum on the stack
+in place of the two previous values) and outputs that value as a character.
+Then the same is done for the second parameter.
+More complex arithmetic is possible using the stack.
+.PP
+.SS Cursor Motions
+.PP
+If the terminal has a fast way to home the cursor
+(to very upper left corner of screen) then this can be given as
+\fBhome\fR; similarly a fast way of getting to the lower left-hand corner
+can be given as \fBll\fR; this may involve going up with \fBcuu1\fR
+from the home position,
+but a program should never do this itself (unless \fBll\fR does) because it
+can make no assumption about the effect of moving up from the home position.
+Note that the home position is the same as addressing to (0,0):
+to the top left corner of the screen, not of memory.
+(Thus, the \eEH sequence on HP terminals cannot be used for
+.BR home .)
+.PP
+If the terminal has row or column absolute cursor addressing,
+these can be given as single parameter capabilities
+.B hpa
+(horizontal position absolute)
+and
+.B vpa
+(vertical position absolute).
+Sometimes these are shorter than the more general two parameter
+sequence (as with the hp2645) and can be used in preference to
+.BR cup .
+If there are parameterized local motions (e.g., move
+.I n
+spaces to the right) these can be given as
+.BR cud ,
+.BR cub ,
+.BR cuf ,
+and
+.BR cuu
+with a single parameter indicating how many spaces to move.
+These are primarily useful if the terminal does not have
+.BR cup ,
+such as the \s-1TEKTRONIX\s+1 4025.
+.PP
+If the terminal needs to be in a special mode when running
+a program that uses these capabilities,
+the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR.
+This arises, for example, from terminals like the Concept with more than
+one page of memory.
+If the terminal has only memory relative cursor addressing and not screen
+relative cursor addressing, a one screen-sized window must be fixed into
+the terminal for cursor addressing to work properly.
+This is also used for the \s-1TEKTRONIX\s+1 4025,
+where
+.B smcup
+sets the command character to be the one used by terminfo.
+If the \fBsmcup\fP sequence will not restore the screen after an
+\fBrmcup\fP sequence is output (to the state prior to outputting
+\fBrmcup\fP), specify \fBnrrmc\fP.
+.PP
+.SS Area Clears
+.PP
+If the terminal can clear from the current position to the end of the
+line, leaving the cursor where it is, this should be given as \fBel\fR.
+If the terminal can clear from the beginning of the line to the current
+position inclusive, leaving
+the cursor where it is, this should be given as \fBel1\fP.
+If the terminal can clear from the current position to the end of the
+display, then this should be given as \fBed\fR.
+\fBEd\fR is only defined from the first column of a line.
+(Thus, it can be simulated by a request to delete a large number of lines,
+if a true
+.B ed
+is not available.)
+.PP
+.SS Insert/delete line and vertical motions
+.PP
+If the terminal can open a new blank line before the line where the cursor
+is, this should be given as \fBil1\fR; this is done only from the first
+position of a line.
+The cursor must then appear on the newly blank line.
+If the terminal can delete the line which the cursor is on, then this
+should be given as \fBdl1\fR; this is done only from the first position on
+the line to be deleted.
+Versions of
+.B il1
+and
+.B dl1
+which take a single parameter and insert or delete that many lines can
+be given as
+.B il
+and
+.BR dl .
+.PP
+If the terminal has a settable scrolling region (like the vt100)
+the command to set this can be described with the
+.B csr
+capability, which takes two parameters:
+the top and bottom lines of the scrolling region.
+The cursor position is, alas, undefined after using this command.
+.PP
+It is possible to get the effect of insert or delete line using
+.B csr
+on a properly chosen region; the
+.B sc
+and
+.B rc
+(save and restore cursor) commands may be useful for ensuring that
+your synthesized insert/delete string does not move the cursor.
+(Note that the \fBncurses\fR(3X) library does this synthesis
+automatically, so you need not compose insert/delete strings for
+an entry with \fBcsr\fR).
+.PP
+Yet another way to construct insert and delete might be to use a combination of
+index with the memory-lock feature found on some terminals (like the HP-700/90
+series, which however also has insert/delete).
+.PP
+Inserting lines at the top or bottom of the screen can also be
+done using
+.B ri
+or
+.B ind
+on many terminals without a true insert/delete line,
+and is often faster even on terminals with those features.
+.PP
+The boolean \fBnon_dest_scroll_region\fR should be set if each scrolling
+window is effectively a view port on a screen-sized canvas.
+To test for
+this capability, create a scrolling region in the middle of the screen,
+write something to the bottom line, move the cursor to the top of the region,
+and do \fBri\fR followed by \fBdl1\fR or \fBind\fR.
+If the data scrolled
+off the bottom of the region by the \fBri\fR re-appears, then scrolling
+is non-destructive.
+System V and XSI Curses expect that \fBind\fR, \fBri\fR,
+\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their
+documentation cautions you not to define \fBcsr\fR unless this is true.
+This \fBcurses\fR implementation is more liberal and will do explicit erases
+after scrolling if \fBndstr\fR is defined.
+.PP
+If the terminal has the ability to define a window as part of
+memory, which all commands affect,
+it should be given as the parameterized string
+.BR wind .
+The four parameters are the starting and ending lines in memory
+and the starting and ending columns in memory, in that order.
+.PP
+If the terminal can retain display memory above, then the
+\fBda\fR capability should be given; if display memory can be retained
+below, then \fBdb\fR should be given.
+These indicate
+that deleting a line or scrolling may bring non-blank lines up from below
+or that scrolling back with \fBri\fR may bring down non-blank lines.
+.PP
+.SS Insert/Delete Character
+.PP
+There are two basic kinds of intelligent terminals with respect to
+insert/delete character which can be described using
+.I terminfo.
+The most common insert/delete character operations affect only the characters
+on the current line and shift characters off the end of the line rigidly.
+Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make
+a distinction between typed and untyped blanks on the screen, shifting
+upon an insert or delete only to an untyped blank on the screen which is
+either eliminated, or expanded to two untyped blanks.
+You can determine the
+kind of terminal you have by clearing the screen and then typing
+text separated by cursor motions.
+Type \*(lqabc\ \ \ \ def\*(rq using local
+cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq.
+Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert
+mode.
+If typing characters causes the rest of the line to shift
+rigidly and characters to fall off the end, then your terminal does
+not distinguish between blanks and untyped positions.
+If the \*(lqabc\*(rq
+shifts over to the \*(lqdef\*(rq which then move together around the end of the
+current line and onto the next as you insert, you have the second type of
+terminal, and should give the capability \fBin\fR, which stands for
+\*(lqinsert null\*(rq.
+While these are two logically separate attributes (one line versus multi-line
+insert mode, and special treatment of untyped spaces) we have seen no
+terminals whose insert mode cannot be described with the single attribute.
+.PP
+Terminfo can describe both terminals which have an insert mode, and terminals
+which send a simple sequence to open a blank position on the current line.
+Give as \fBsmir\fR the sequence to get into insert mode.
+Give as \fBrmir\fR the sequence to leave insert mode.
+Now give as \fBich1\fR any sequence needed to be sent just before sending
+the character to be inserted.
+Most terminals with a true insert mode
+will not give \fBich1\fR; terminals which send a sequence to open a screen
+position should give it here.
+.PP
+If your terminal has both, insert mode is usually preferable to \fBich1\fR.
+Technically, you should not give both unless the terminal actually requires
+both to be used in combination.
+Accordingly, some non-curses applications get
+confused if both are present; the symptom is doubled characters in an update
+using insert.
+This requirement is now rare; most \fBich\fR sequences do not
+require previous smir, and most smir insert modes do not require \fBich1\fR
+before each character.
+Therefore, the new \fBcurses\fR actually assumes this
+is the case and uses either \fBrmir\fR/\fBsmir\fR or \fBich\fR/\fBich1\fR as
+appropriate (but not both).
+If you have to write an entry to be used under
+new curses for a terminal old enough to need both, include the
+\fBrmir\fR/\fBsmir\fR sequences in \fBich1\fR.
+.PP
+If post insert padding is needed, give this as a number of milliseconds
+in \fBip\fR (a string option).
+Any other sequence which may need to be
+sent after an insert of a single character may also be given in \fBip\fR.
+If your terminal needs both to be placed into an `insert mode' and
+a special code to precede each inserted character, then both
+.BR smir / rmir
+and
+.B ich1
+can be given, and both will be used.
+The
+.B ich
+capability, with one parameter,
+.IR n ,
+will repeat the effects of
+.B ich1
+.I n
+times.
+.PP
+If padding is necessary between characters typed while not
+in insert mode, give this as a number of milliseconds padding in \fBrmp\fP.
+.PP
+It is occasionally necessary to move around while in insert mode
+to delete characters on the same line (e.g., if there is a tab after
+the insertion position).
+If your terminal allows motion while in
+insert mode you can give the capability \fBmir\fR to speed up inserting
+in this case.
+Omitting \fBmir\fR will affect only speed.
+Some terminals
+(notably Datamedia's) must not have \fBmir\fR because of the way their
+insert mode works.
+.PP
+Finally, you can specify
+.B dch1
+to delete a single character,
+.B dch
+with one parameter,
+.IR n ,
+to delete
+.I n characters,
+and delete mode by giving \fBsmdc\fR and \fBrmdc\fR
+to enter and exit delete mode (any mode the terminal needs to be placed
+in for
+.B dch1
+to work).
+.PP
+A command to erase
+.I n
+characters (equivalent to outputting
+.I n
+blanks without moving the cursor)
+can be given as
+.B ech
+with one parameter.
+.PP
+.SS "Highlighting, Underlining, and Visible Bells"
+.PP
+If your terminal has one or more kinds of display attributes,
+these can be represented in a number of different ways.
+You should choose one display form as
+\f2standout mode\fR,
+representing a good, high contrast, easy-on-the-eyes,
+format for highlighting error messages and other attention getters.
+(If you have a choice, reverse video plus half-bright is good,
+or reverse video alone.)
+The sequences to enter and exit standout mode
+are given as \fBsmso\fR and \fBrmso\fR, respectively.
+If the code to change into or out of standout
+mode leaves one or even two blank spaces on the screen,
+as the TVI 912 and Teleray 1061 do,
+then \fBxmc\fR should be given to tell how many spaces are left.
+.PP
+Codes to begin underlining and end underlining can be given as \fBsmul\fR
+and \fBrmul\fR respectively.
+If the terminal has a code to underline the current character and move
+the cursor one space to the right,
+such as the Microterm Mime,
+this can be given as \fBuc\fR.
+.PP
+Other capabilities to enter various highlighting modes include
+.B blink
+(blinking)
+.B bold
+(bold or extra bright)
+.B dim
+(dim or half-bright)
+.B invis
+(blanking or invisible text)
+.B prot
+(protected)
+.B rev
+(reverse video)
+.B sgr0
+(turn off
+.I all
+attribute modes)
+.B smacs
+(enter alternate character set mode)
+and
+.B rmacs
+(exit alternate character set mode).
+Turning on any of these modes singly may or may not turn off other modes.
+.PP
+If there is a sequence to set arbitrary combinations of modes,
+this should be given as
+.B sgr
+(set attributes),
+taking 9 parameters.
+Each parameter is either 0 or nonzero, as the corresponding attribute is on or off.
+The 9 parameters are, in order:
+standout, underline, reverse, blink, dim, bold, blank, protect, alternate
+character set.
+Not all modes need be supported by
+.BR sgr ,
+only those for which corresponding separate attribute commands exist.
+.PP
+For example, the DEC vt220 supports most of the modes:
+.PP
+.TS
+center;
+l c c
+l c c
+lw28 lw6 lw2 lw20.
+\fBtparm parameter	attribute	escape sequence\fP
+
+none	none	\\E[0m
+p1	standout	\\E[0;1;7m
+p2	underline	\\E[0;4m
+p3	reverse	\\E[0;7m
+p4	blink	\\E[0;5m
+p5	dim	not available
+p6	bold	\\E[0;1m
+p7	invis	\\E[0;8m
+p8	protect	not used
+p9	altcharset	^O (off) ^N (on)
+.TE
+.PP
+We begin each escape sequence by turning off any existing modes, since
+there is no quick way to determine whether they are active.
+Standout is set up to be the combination of reverse and bold.
+The vt220 terminal has a protect mode,
+though it is not commonly used in sgr
+because it protects characters on the screen from the host's erasures.
+The altcharset mode also is different in that it is either ^O or ^N,
+depending on whether it is off or on.
+If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N.
+.PP
+Some sequences are common to different modes.
+For example, ;7 is output when either p1 or p3 is true, that is, if
+either standout or reverse modes are turned on.
+.PP
+Writing out the above sequences, along with their dependencies yields
+.PP
+.TS
+center;
+l c c
+l c c
+lw28 lw6 lw2 lw20.
+\fBsequence	when to output	terminfo translation\fP
+
+\\E[0	always	\\E[0
+;1	if p1 or p6	%?%p1%p6%|%t;1%;
+;4	if p2	%?%p2%|%t;4%;
+;5	if p4	%?%p4%|%t;5%;
+;7	if p1 or p3	%?%p1%p3%|%t;7%;
+;8	if p7	%?%p7%|%t;8%;
+m	always	m
+^N or ^O	if p9 ^N, else ^O	%?%p9%t^N%e^O%;
+.TE
+.PP
+Putting this all together into the sgr sequence gives:
+.PP
+.nf
+    sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
+        %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
+.fi
+.PP
+Remember that if you specify sgr, you must also specify sgr0.
+Also, some implementations rely on sgr being given if sgr0 is,
+Not all terminfo entries necessarily have an sgr string, however.
+Many terminfo entries are derived from termcap entries
+which have no sgr string.
+The only drawback to adding an sgr string is that termcap also
+assumes that sgr0 does not exit alternate character set mode.
+.PP
+Terminals with the ``magic cookie'' glitch
+.RB ( xmc )
+deposit special ``cookies'' when they receive mode-setting sequences,
+which affect the display algorithm rather than having extra bits for
+each character.
+Some terminals, such as the HP 2621, automatically leave standout
+mode when they move to a new line or the cursor is addressed.
+Programs using standout mode should exit standout mode before
+moving the cursor or sending a newline,
+unless the
+.B msgr
+capability, asserting that it is safe to move in standout mode, is present.
+.PP
+If the terminal has
+a way of flashing the screen to indicate an error quietly (a bell replacement)
+then this can be given as \fBflash\fR; it must not move the cursor.
+.PP
+If the cursor needs to be made more visible than normal when it is
+not on the bottom line (to make, for example, a non-blinking underline into an
+easier to find block or blinking underline)
+give this sequence as
+.BR cvvis .
+If there is a way to make the cursor completely invisible, give that as
+.BR civis .
+The capability
+.BR cnorm
+should be given which undoes the effects of both of these modes.
+.PP
+If your terminal correctly generates underlined characters
+(with no special codes needed)
+even though it does not overstrike,
+then you should give the capability \fBul\fR.
+If a character overstriking another leaves both characters on the screen,
+specify the capability \fBos\fP.
+If overstrikes are erasable with a blank,
+then this should be indicated by giving \fBeo\fR.
+.PP
+.SS Keypad and Function Keys
+.PP
+If the terminal has a keypad that transmits codes when the keys are pressed,
+this information can be given.
+Note that it is not possible to handle
+terminals where the keypad only works in local (this applies, for example,
+to the unshifted HP 2621 keys).
+If the keypad can be set to transmit or not transmit,
+give these codes as \fBsmkx\fR and \fBrmkx\fR.
+Otherwise the keypad is assumed to always transmit.
+The codes sent by the left arrow, right arrow, up arrow, down arrow,
+and home keys can be given as
+\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively.
+If there are function keys such as f0, f1, ..., f10, the codes they send
+can be given as \fBkf0, kf1, ..., kf10\fR.
+If these keys have labels other than the default f0 through f10, the labels
+can be given as \fBlf0, lf1, ..., lf10\fR.
+The codes transmitted by certain other special keys can be given:
+.B kll
+(home down),
+.B kbs
+(backspace),
+.B ktbc
+(clear all tabs),
+.B kctab
+(clear the tab stop in this column),
+.B kclr
+(clear screen or erase key),
+.B kdch1
+(delete character),
+.B kdl1
+(delete line),
+.B krmir
+(exit insert mode),
+.B kel
+(clear to end of line),
+.B ked
+(clear to end of screen),
+.B kich1
+(insert character or enter insert mode),
+.B kil1
+(insert line),
+.B knp
+(next page),
+.B kpp
+(previous page),
+.B kind
+(scroll forward/down),
+.B kri
+(scroll backward/up),
+.B khts
+(set a tab stop in this column).
+In addition, if the keypad has a 3 by 3 array of keys including the four
+arrow keys, the other five keys can be given as
+.BR ka1 ,
+.BR ka3 ,
+.BR kb2 ,
+.BR kc1 ,
+and
+.BR kc3 .
+These keys are useful when the effects of a 3 by 3 directional pad are needed.
+.PP
+Strings to program function keys can be given as
+.BR pfkey ,
+.BR pfloc ,
+and
+.BR pfx .
+A string to program screen labels should be specified as \fBpln\fP.
+Each of these strings takes two parameters: the function key number to
+program (from 0 to 10) and the string to program it with.
+Function key numbers out of this range may program undefined keys in
+a terminal dependent manner.
+The difference between the capabilities is that
+.B pfkey
+causes pressing the given key to be the same as the user typing the
+given string;
+.B pfloc
+causes the string to be executed by the terminal in local; and
+.B pfx
+causes the string to be transmitted to the computer.
+.PP
+The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP
+define the number of programmable
+screen labels and their width and height.
+If there are commands to turn the labels on and off,
+give them in \fBsmln\fP and \fBrmln\fP.
+\fBsmln\fP is normally output after one or more pln
+sequences to make sure that the change becomes visible.
+.PP
+.SS Tabs and Initialization
+.PP
+If the terminal has hardware tabs, the command to advance to the next
+tab stop can be given as
+.B ht
+(usually control I).
+A ``back-tab'' command which moves leftward to the preceding tab stop can
+be given as
+.BR cbt .
+By convention, if the teletype modes indicate that tabs are being
+expanded by the computer rather than being sent to the terminal,
+programs should not use
+.B ht
+or
+.B cbt
+even if they are present, since the user may not have the tab stops
+properly set.
+If the terminal has hardware tabs which are initially set every
+.I n
+spaces when the terminal is powered up,
+the numeric parameter
+.B it
+is given, showing the number of spaces the tabs are set to.
+This is normally used by the
+.IR tset
+command to determine whether to set the mode for hardware tab expansion,
+and whether to set the tab stops.
+If the terminal has tab stops that can be saved in non-volatile memory,
+the terminfo description can assume that they are properly set.
+.PP
+Other capabilities
+include
+.BR is1 ,
+.BR is2 ,
+and
+.BR is3 ,
+initialization strings for the terminal,
+.BR iprog ,
+the path name of a program to be run to initialize the terminal,
+and \fBif\fR, the name of a file containing long initialization strings.
+These strings are expected to set the terminal into modes consistent
+with the rest of the terminfo description.
+They are normally sent to the terminal, by the
+.I init
+option of the
+.IR @TPUT@
+program, each time the user logs in.
+They will be printed in the following order:
+.RS
+.TP
+run the program
+.BR iprog
+.TP
+output
+.BR is1
+.BR is2
+.TP
+set the margins using
+.BR mgc ,
+.BR smgl
+and
+.BR smgr
+.TP
+set tabs using
+.B tbc
+and
+.BR hts
+.TP
+print the file
+.BR if
+.TP
+and finally
+output
+.BR is3 .
+.RE
+.PP
+Most initialization is done with
+.BR is2 .
+Special terminal modes can be set up without duplicating strings
+by putting the common sequences in
+.B is2
+and special cases in
+.B is1
+and
+.BR is3 .
+.PP
+A set of sequences that does a harder reset from a totally unknown state
+can be given as
+.BR rs1 ,
+.BR rs2 ,
+.BR rf
+and
+.BR rs3 ,
+analogous to
+.B is1 ,
+.B is2 ,
+.B if
+and
+.BR is3
+respectively.
+These strings are output by the
+.IR reset
+program, which is used when the terminal gets into a wedged state.
+Commands are normally placed in
+.BR rs1 ,
+.BR rs2
+.B rs3
+and
+.B rf
+only if they produce annoying effects on the screen and are not
+necessary when logging in.
+For example, the command to set the vt100 into 80-column mode would
+normally be part of
+.BR is2 ,
+but it causes an annoying glitch of the screen and is not normally
+needed since the terminal is usually already in 80 column mode.
+.PP
+The
+.IR reset
+program writes strings
+including
+.BR iprog ,
+etc., in the same order as the
+.IR init
+program, using 
+.BR rs1 ,
+etc., instead of
+.BR is1 ,
+etc.
+If any of
+.BR rs1 ,
+.BR rs2 ,
+.BR rs3 ,
+or
+.BR rf
+reset capability strings are missing, the
+.IR reset
+program falls back upon the corresponding initialization capability string.
+.PP
+If there are commands to set and clear tab stops, they can be given as
+.B tbc
+(clear all tab stops)
+and
+.B hts
+(set a tab stop in the current column of every row).
+If a more complex sequence is needed to set the tabs than can be
+described by this, the sequence can be placed in
+.B is2
+or
+.BR if .
+.SS Delays and Padding
+.PP
+Many older and slower terminals do not support either XON/XOFF or DTR
+handshaking, including hard copy terminals and some very archaic CRTs
+(including, for example, DEC VT100s).
+These may require padding characters
+after certain cursor motions and screen changes.
+.PP
+If the terminal uses xon/xoff handshaking for flow control (that is,
+it automatically emits ^S back to the host when its input buffers are
+close to full), set
+.BR xon .
+This capability suppresses the emission of padding.
+You can also set it
+for memory-mapped console devices effectively that do not have a speed limit.
+Padding information should still be included so that routines can
+make better decisions about relative costs, but actual pad characters will
+not be transmitted.
+.PP
+If \fBpb\fR (padding baud rate) is given, padding is suppressed at baud rates
+below the value of \fBpb\fR.
+If the entry has no padding baud rate, then
+whether padding is emitted or not is completely controlled by \fBxon\fR.
+.PP
+If the terminal requires other than a null (zero) character as a pad,
+then this can be given as \fBpad\fR.
+Only the first character of the
+.B pad
+string is used.
+.PP
+.SS Status Lines
+Some terminals have an extra `status line' which is not normally used by
+software (and thus not counted in the terminal's \fBlines\fR capability).
+.PP
+The simplest case is a status line which is cursor-addressable but not
+part of the main scrolling region on the screen; the Heathkit H19 has
+a status line of this kind, as would a 24-line VT100 with a 23-line
+scrolling region set up on initialization.
+This situation is indicated
+by the \fBhs\fR capability.
+.PP
+Some terminals with status lines need special sequences to access the
+status line.
+These may be expressed as a string with single parameter
+\fBtsl\fR which takes the cursor to a given zero-origin column on the
+status line.
+The capability \fBfsl\fR must return to the main-screen
+cursor positions before the last \fBtsl\fR.
+You may need to embed the
+string values of \fBsc\fR (save cursor) and \fBrc\fR (restore cursor)
+in \fBtsl\fR and \fBfsl\fR to accomplish this.
+.PP
+The status line is normally assumed to be the same width as the width
+of the terminal.
+If this is untrue, you can specify it with the numeric
+capability \fBwsl\fR.
+.PP
+A command to erase or blank the status line may be specified as \fBdsl\fR.
+.PP
+The boolean capability \fBeslok\fR specifies that escape sequences, tabs,
+etc., work ordinarily in the status line.
+.PP
+The \fBncurses\fR implementation does not yet use any of these capabilities.
+They are documented here in case they ever become important.
+.PP
+.SS Line Graphics
+.PP
+Many terminals have alternate character sets useful for forms-drawing.
+Terminfo and \fBcurses\fR build in support for the drawing characters
+supported by the VT100, with some characters from the AT&T 4410v1 added.
+This alternate character set may be specified by the \fBacsc\fR capability.
+.PP
+.TS H
+center expand;
+c l l c
+c l l c
+lw28 lw6 lw2 lw20.
+.\".TH
+\fBGlyph	ACS	Ascii	VT100\fR
+\fBName	Name	Default	Name\fR
+UK pound sign        	ACS_STERLING	f	}
+arrow pointing down	ACS_DARROW	v	.
+arrow pointing left	ACS_LARROW	<	,
+arrow pointing right	ACS_RARROW	>	+
+arrow pointing up	ACS_UARROW	^	-
+board of squares	ACS_BOARD	#	h
+bullet          	ACS_BULLET	o	~
+checker board (stipple)	ACS_CKBOARD	:	a
+degree symbol   	ACS_DEGREE	\e	f
+diamond         	ACS_DIAMOND	+	`
+greater-than-or-equal-to	ACS_GEQUAL	>	z
+greek pi        	ACS_PI	*	{
+horizontal line 	ACS_HLINE	-	q
+lantern symbol  	ACS_LANTERN	#	i
+large plus or crossover	ACS_PLUS	+	n
+less-than-or-equal-to	ACS_LEQUAL	<	y
+lower left corner	ACS_LLCORNER	+	m
+lower right corner	ACS_LRCORNER	+	j
+not-equal       	ACS_NEQUAL	!	|
+plus/minus      	ACS_PLMINUS	#	g
+scan line 1     	ACS_S1  	~	o
+scan line 3     	ACS_S3  	-	p
+scan line 7     	ACS_S7  	-	r
+scan line 9     	ACS_S9  	\&_	s
+solid square block	ACS_BLOCK	#	0
+tee pointing down	ACS_TTEE	+	w
+tee pointing left	ACS_RTEE	+	u
+tee pointing right	ACS_LTEE	+	t
+tee pointing up 	ACS_BTEE	+	v
+upper left corner	ACS_ULCORNER	+	l
+upper right corner	ACS_URCORNER	+	k
+vertical line   	ACS_VLINE	|	x
+.TE
+.PP
+The best way to define a new device's graphics set is to add a column
+to a copy of this table for your terminal, giving the character which
+(when emitted between \fBsmacs\fR/\fBrmacs\fR switches) will be rendered
+as the corresponding graphic.
+Then read off the VT100/your terminal
+character pairs right to left in sequence; these become the ACSC string.
+.PP
+.SS Color Handling
+.PP
+Most color terminals are either `Tektronix-like' or `HP-like'.
+Tektronix-like
+terminals have a predefined set of N colors (where N usually 8), and can set
+character-cell foreground and background characters independently, mixing them
+into N * N color-pairs.
+On HP-like terminals, the use must set each color
+pair up separately (foreground and background are not independently settable).
+Up to M color-pairs may be set up from 2*M different colors.
+ANSI-compatible
+terminals are Tektronix-like.
+.PP
+Some basic color capabilities are independent of the color method.
+The numeric
+capabilities \fBcolors\fR and \fBpairs\fR specify the maximum numbers of colors
+and color-pairs that can be displayed simultaneously.
+The \fBop\fR (original
+pair) string resets foreground and background colors to their default values
+for the terminal.
+The \fBoc\fR string resets all colors or color-pairs to
+their default values for the terminal.
+Some terminals (including many PC
+terminal emulators) erase screen areas with the current background color rather
+than the power-up default background; these should have the boolean capability
+\fBbce\fR.
+.PP
+To change the current foreground or background color on a Tektronix-type
+terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI
+background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background).
+These take one parameter, the color number.
+The SVr4 documentation describes
+only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal
+supports ANSI escape sequences to set background and foreground, they should
+be coded as \fBsetaf\fR and \fBsetab\fR, respectively.
+If the terminal
+supports other escape sequences to set background and foreground, they should
+be coded as \fBsetf\fR and \fBsetb\fR, respectively.
+The \fIvidputs()\fR
+function and the refresh functions use \fBsetaf\fR and \fBsetab\fR if they are
+defined."
+.PP
+The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a
+single numeric argument each.
+Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as
+follows (the middle column is the symbolic #define available in the header for
+the \fBcurses\fR or \fBncurses\fR libraries).
+The terminal hardware is free to
+map these as it likes, but the RGB values indicate normal locations in color
+space.
+.PP
+.TS H
+center;
+l c c c
+l l n l.
+\fBColor	#define 	Value	RGB\fR
+black	\fBCOLOR_BLACK\fR	0	0, 0, 0
+red	\fBCOLOR_RED\ \fR	1	max,0,0
+green	\fBCOLOR_GREEN\fR	2	0,max,0
+yellow	\fBCOLOR_YELLOW\fR	3	max,max,0
+blue	\fBCOLOR_BLUE\fR	4	0,0,max
+magenta	\fBCOLOR_MAGENTA\fR	5	max,0,max
+cyan	\fBCOLOR_CYAN\fR	6	0,max,max
+white	\fBCOLOR_WHITE\fR	7	max,max,max
+.TE
+.PP
+The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to
+a different mapping, i.e.,
+.TS H
+center;
+l c c c
+l l n l.
+\fBColor	#define 	Value	RGB\fR
+black	\fBCOLOR_BLACK\fR	0	0, 0, 0
+blue	\fBCOLOR_BLUE\fR	1	0,0,max
+green	\fBCOLOR_GREEN\fR	2	0,max,0
+cyan	\fBCOLOR_CYAN\fR	3	0,max,max
+red	\fBCOLOR_RED\ \fR	4	max,0,0
+magenta	\fBCOLOR_MAGENTA\fR	5	max,0,max
+yellow	\fBCOLOR_YELLOW\fR	6	max,max,0
+white	\fBCOLOR_WHITE\fR	7	max,max,max
+.TE
+It is important to not confuse the two sets of color capabilities;
+otherwise red/blue will be interchanged on the display.
+.PP
+On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set
+which color pair is current.
+.PP
+On a Tektronix-like terminal, the capability \fBccc\fR may be present to
+indicate that colors can be modified.
+If so, the \fBinitc\fR capability will
+take a color number (0 to \fBcolors\fR - 1)and three more parameters which
+describe the color.
+These three parameters default to being interpreted as RGB
+(Red, Green, Blue) values.
+If the boolean capability \fBhls\fR is present,
+they are instead as HLS (Hue, Lightness, Saturation) indices.
+The ranges are
+terminal-dependent.
+.PP
+On an HP-like terminal, \fBinitp\fR may give a capability for changing a
+color-pair value.
+It will take seven parameters; a color-pair number (0 to
+\fBmax_pairs\fR - 1), and two triples describing first background and then
+foreground colors.
+These parameters must be (Red, Green, Blue) or
+(Hue, Lightness, Saturation) depending on \fBhls\fR.
+.PP
+On some color terminals, colors collide with highlights.
+You can register
+these collisions with the \fBncv\fR capability.
+This is a bit-mask of
+attributes not to be used when colors are enabled.
+The correspondence with the
+attributes understood by \fBcurses\fR is as follows:
+.PP
+.TS
+center;
+l c c
+lw25 lw2 lw10.
+\fBAttribute	Bit	Decimal\fR
+A_STANDOUT	0	1
+A_UNDERLINE	1	2
+A_REVERSE	2	4
+A_BLINK   	3	8
+A_DIM      	4	16
+A_BOLD    	5	32
+A_INVIS   	6	64
+A_PROTECT	7	128
+A_ALTCHARSET	8	256
+.TE
+.PP
+For example, on many IBM PC consoles, the underline attribute collides with the
+foreground color blue and is not available in color mode.
+These should have
+an \fBncv\fR capability of 2.
+.PP
+SVr4 curses does nothing with \fBncv\fR, ncurses recognizes it and optimizes
+the output in favor of colors.
+.PP
+.SS Miscellaneous
+If the terminal requires other than a null (zero) character as a pad, then this
+can be given as pad.
+Only the first character of the pad string is used.
+If the terminal does not have a pad character, specify npc.
+Note that ncurses implements the termcap-compatible \fBPC\fR variable;
+though the application may set this value to something other than
+a null, ncurses will test \fBnpc\fR first and use napms if the terminal
+has no pad character.
+.PP
+If the terminal can move up or down half a line,
+this can be indicated with
+.B hu
+(half-line up)
+and
+.B hd
+(half-line down).
+This is primarily useful for superscripts and subscripts on hard-copy terminals.
+If a hard-copy terminal can eject to the next page (form feed), give this as
+.B ff
+(usually control L).
+.PP
+If there is a command to repeat a given character a given number of
+times (to save time transmitting a large number of identical characters)
+this can be indicated with the parameterized string
+.BR rep .
+The first parameter is the character to be repeated and the second
+is the number of times to repeat it.
+Thus, tparm(repeat_char, 'x', 10) is the same as `xxxxxxxxxx'.
+.PP
+If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025,
+this can be indicated with
+.BR cmdch .
+A prototype command character is chosen which is used in all capabilities.
+This character is given in the
+.B cmdch
+capability to identify it.
+The following convention is supported on some UNIX systems:
+The environment is to be searched for a
+.B CC
+variable, and if found, all
+occurrences of the prototype character are replaced with the character
+in the environment variable.
+.PP
+Terminal descriptions that do not represent a specific kind of known
+terminal, such as
+.IR switch ,
+.IR dialup ,
+.IR patch ,
+and
+.IR network ,
+should include the
+.B gn
+(generic) capability so that programs can complain that they do not know
+how to talk to the terminal.
+(This capability does not apply to
+.I virtual
+terminal descriptions for which the escape sequences are known.)
+.PP
+If the terminal has a ``meta key'' which acts as a shift key,
+setting the 8th bit of any character transmitted, this fact can
+be indicated with
+.BR km .
+Otherwise, software will assume that the 8th bit is parity and it
+will usually be cleared.
+If strings exist to turn this ``meta mode'' on and off, they
+can be given as
+.B smm
+and
+.BR rmm .
+.PP
+If the terminal has more lines of memory than will fit on the screen
+at once, the number of lines of memory can be indicated with
+.BR lm .
+A value of
+.BR lm #0
+indicates that the number of lines is not fixed,
+but that there is still more memory than fits on the screen.
+.PP
+If the terminal is one of those supported by the \s-1UNIX\s+1 virtual
+terminal protocol, the terminal number can be given as
+.BR vt .
+.PP
+Media copy
+strings which control an auxiliary printer connected to the terminal
+can be given as
+.BR mc0 :
+print the contents of the screen,
+.BR mc4 :
+turn off the printer, and
+.BR mc5 :
+turn on the printer.
+When the printer is on, all text sent to the terminal will be sent
+to the printer.
+It is undefined whether the text is also displayed on the terminal screen
+when the printer is on.
+A variation
+.B mc5p
+takes one parameter, and leaves the printer on for as many characters
+as the value of the parameter, then turns the printer off.
+The parameter should not exceed 255.
+All text, including
+.BR mc4 ,
+is transparently passed to the printer while an
+.B mc5p
+is in effect.
+.PP
+.SS Glitches and Braindamage
+.PP
+Hazeltine terminals, which do not allow `~' characters to be displayed should
+indicate \fBhz\fR.
+.PP
+Terminals which ignore a line-feed immediately after an \fBam\fR wrap,
+such as the Concept and vt100,
+should indicate \fBxenl\fR.
+.PP
+If
+.B el
+is required to get rid of standout
+(instead of merely writing normal text on top of it),
+\fBxhp\fP should be given.
+.PP
+Teleray terminals, where tabs turn all characters moved over to blanks,
+should indicate \fBxt\fR (destructive tabs).
+Note: the variable indicating this is now `dest_tabs_magic_smso'; in
+older versions, it was teleray_glitch.
+This glitch is also taken to mean that it is not possible to position
+the cursor on top of a ``magic cookie'',
+that to erase standout mode it is instead necessary to use
+delete and insert line.
+The ncurses implementation ignores this glitch.
+.PP
+The Beehive Superbee, which is unable to correctly transmit the escape
+or control C characters, has
+.BR xsb ,
+indicating that the f1 key is used for escape and f2 for control C.
+(Only certain Superbees have this problem, depending on the ROM.)
+Note that in older terminfo versions, this capability was called
+`beehive_glitch'; it is now `no_esc_ctl_c'.
+.PP
+Other specific terminal problems may be corrected by adding more
+capabilities of the form \fBx\fR\fIx\fR.
+.PP
+.SS Similar Terminals
+.PP
+If there are two very similar terminals, one (the variant) can be defined as
+being just like the other (the base) with certain exceptions.
+In the
+definition of the variant, the string capability \fBuse\fR can be given with
+the name of the base terminal.
+The capabilities given before
+.B use
+override those in the base type named by
+.BR use .
+If there are multiple \fBuse\fR capabilities, they are merged in reverse order.
+That is, the rightmost \fBuse\fR reference is processed first, then the one to
+its left, and so forth.
+Capabilities given explicitly in the entry override
+those brought in by \fBuse\fR references.
+.PP
+A capability can be canceled by placing \fBxx@\fR to the left of the
+use reference that imports it, where \fIxx\fP is the capability.
+For example, the entry
+.PP
+	2621-nl, smkx@, rmkx@, use=2621,
+.PP
+defines a 2621-nl that does not have the \fBsmkx\fR or \fBrmkx\fR capabilities,
+and hence does not turn on the function key labels when in visual mode.
+This is useful for different modes for a terminal, or for different
+user preferences.
+.PP
+.SS Pitfalls of Long Entries
+.PP
+Long terminfo entries are unlikely to be a problem; to date, no entry has even
+approached terminfo's 4096-byte string-table maximum.
+Unfortunately, the termcap
+translations are much more strictly limited (to 1023 bytes), thus termcap translations
+of long terminfo entries can cause problems.
+.PP
+The man pages for 4.3BSD and older versions of \fBtgetent()\fP instruct the user to
+allocate a 1024-byte buffer for the termcap entry.
+The entry gets null-terminated by
+the termcap library, so that makes the maximum safe length for a termcap entry
+1k-1 (1023) bytes.
+Depending on what the application and the termcap library
+being used does, and where in the termcap file the terminal type that \fBtgetent()\fP
+is searching for is, several bad things can happen.
+.PP
+Some termcap libraries print a warning message or exit if they find an
+entry that's longer than 1023 bytes; others do not; others truncate the
+entries to 1023 bytes.
+Some application programs allocate more than
+the recommended 1K for the termcap entry; others do not.
+.PP
+Each termcap entry has two important sizes associated with it: before
+"tc" expansion, and after "tc" expansion.
+"tc" is the capability that
+tacks on another termcap entry to the end of the current one, to add
+on its capabilities.
+If a termcap entry does not use the "tc"
+capability, then of course the two lengths are the same.
+.PP
+The "before tc expansion" length is the most important one, because it
+affects more than just users of that particular terminal.
+This is the
+length of the entry as it exists in /etc/termcap, minus the
+backslash-newline pairs, which \fBtgetent()\fP strips out while reading it.
+Some termcap libraries strip off the final newline, too (GNU termcap does not).
+Now suppose:
+.TP 5
+*
+a termcap entry before expansion is more than 1023 bytes long,
+.TP 5
+*
+and the application has only allocated a 1k buffer,
+.TP 5
+*
+and the termcap library (like the one in BSD/OS 1.1 and GNU) reads
+the whole entry into the buffer, no matter what its length, to see
+if it is the entry it wants,
+.TP 5
+*
+and \fBtgetent()\fP is searching for a terminal type that either is the
+long entry, appears in the termcap file after the long entry, or
+does not appear in the file at all (so that \fBtgetent()\fP has to search
+the whole termcap file).
+.PP
+Then \fBtgetent()\fP will overwrite memory, perhaps its stack, and probably core dump
+the program.
+Programs like telnet are particularly vulnerable; modern telnets
+pass along values like the terminal type automatically.
+The results are almost
+as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that
+prints warning messages when it reads an overly long termcap entry.
+If a
+termcap library truncates long entries, like OSF/1 3.0, it is immune to dying
+here but will return incorrect data for the terminal.
+.PP
+The "after tc expansion" length will have a similar effect to the
+above, but only for people who actually set TERM to that terminal
+type, since \fBtgetent()\fP only does "tc" expansion once it is found the
+terminal type it was looking for, not while searching.
+.PP
+In summary, a termcap entry that is longer than 1023 bytes can cause,
+on various combinations of termcap libraries and applications, a core
+dump, warnings, or incorrect operation.
+If it is too long even before
+"tc" expansion, it will have this effect even for users of some other
+terminal types and users whose TERM variable does not have a termcap
+entry.
+.PP
+When in -C (translate to termcap) mode, the \fBncurses\fR implementation of
+\fB@TIC@\fR(1M) issues warning messages when the pre-tc length of a termcap
+translation is too long.
+The -c (check) option also checks resolved (after tc
+expansion) lengths.
+.SS Binary Compatibility
+It is not wise to count on portability of binary terminfo entries between
+commercial UNIX versions.
+The problem is that there are at least two versions
+of terminfo (under HP-UX and AIX) which diverged from System V terminfo after
+SVr1, and have added extension capabilities to the string table that (in the
+binary format) collide with System V and XSI Curses extensions.
+.SH EXTENSIONS
+Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not
+interpret the %A and %O operators in parameter strings.
+.PP
+SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in
+an alternate-character-set mode (such modes may, among other things, map
+CR and NL to characters that do not trigger local motions).
+The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR
+mode.
+This raises the possibility that an XPG4
+implementation making the opposite interpretation may need terminfo
+entries made for \fBncurses\fR to have \fBmsgr\fR turned off.
+.PP
+The \fBncurses\fR library handles insert-character and insert-character modes
+in a slightly non-standard way to get better update efficiency.
+See
+the \fBInsert/Delete Character\fR subsection above.
+.PP
+The parameter substitutions for \fBset_clock\fR and \fBdisplay_clock\fR are
+not documented in SVr4 or the XSI Curses standard.
+They are deduced from the
+documentation for the AT&T 505 terminal.
+.PP
+Be careful assigning the \fBkmous\fR capability.
+The \fBncurses\fR wants to
+interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm
+that can return mouse-tracking information in the keyboard-input stream.
+.PP
+Different commercial ports of terminfo and curses support different subsets of
+the XSI Curses standard and (in some cases) different extension sets.
+Here
+is a summary, accurate as of October 1995:
+.PP
+\fBSVR4, Solaris, ncurses\fR --
+These support all SVr4 capabilities.
+.PP
+\fBSGI\fR --
+Supports the SVr4 set, adds one undocumented extended string
+capability (\fBset_pglen\fR).
+.PP
+\fBSVr1, Ultrix\fR --
+These support a restricted subset of terminfo capabilities.
+The booleans
+end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the
+strings with \fBprtr_non\fR.
+.PP
+\fBHP/UX\fR --
+Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR,
+\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus
+\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible
+extensions in the string table.
+.PP
+\fBAIX\fR --
+Supports the SVr1 subset, plus function keys 11 through 63, plus a number
+of incompatible string table extensions.
+.PP
+\fBOSF\fR --
+Supports both the SVr4 set and the AIX extensions.
+.SH FILES
+.TP 25
+\*d/?/*
+files containing terminal descriptions
+.SH SEE ALSO
+\fB@TIC@\fR(1M),
+\fB@INFOCMP@\fR(1M),
+\fBcurses\fR(3X),
+\fBprintf\fR(3),
+\fBterm\fR(\*n).
+.SH AUTHORS
+Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+Based on pcurses by Pavel Curtis.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/menu/Makefile b/menu/Makefile
new file mode 100644
index 0000000..9d8a73f
--- /dev/null
+++ b/menu/Makefile
@@ -0,0 +1,630 @@
+# $Id: Makefile.in,v 1.48 2007/04/28 14:56:11 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2006,2007 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for menu source code.
+#
+# This makes the following:
+#	libraries (normal/debug/profile/shared)
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+x		= 
+o		= .o
+
+MODEL		= normal
+DESTDIR		= 
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+includedir	= ${prefix}/include/ncurses
+
+LIBTOOL		= 
+LIBTOOL_CLEAN	= 
+LIBTOOL_COMPILE	= 
+LIBTOOL_LINK	= ${CC}
+LIBTOOL_INSTALL	= 
+LIBTOOL_UNINSTALL = 
+
+INSTALL		= /usr/bin/install -c
+INSTALL_LIB	= /usr/bin/install -c -m 644
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AR		= arm-eabi-ar
+AR_OPTS		= rv
+AWK		= mawk
+LD		= arm-eabi-ld
+LN_S		= ln -s
+
+CC		= agcc.pl
+CPP		= agcc.pl -E
+CFLAGS		= -O2 --param max-inline-insns-single=1200
+
+CPPFLAGS	= -I../ncurses -DHAVE_CONFIG_H -I. -I../include  -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=199506L -DNDEBUG -I${includedir}
+
+CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
+
+CFLAGS_LIBTOOL	= $(CCFLAGS)
+CFLAGS_NORMAL	= $(CCFLAGS)
+CFLAGS_DEBUG	= $(CCFLAGS) -g -DTRACE
+CFLAGS_PROFILE	= $(CCFLAGS) -pg
+CFLAGS_SHARED	= $(CCFLAGS) unknown
+
+CFLAGS_DEFAULT	= $(CFLAGS_NORMAL)
+
+LINK		= $(LIBTOOL_LINK)
+LDFLAGS		=   
+
+SHLIB_DIRS	= -L../lib
+SHLIB_LIST	= $(SHLIB_DIRS) -lncurses 
+
+MK_SHARED_LIB	= echo unknown
+
+NCURSES_MAJOR	= 5
+NCURSES_MINOR	= 7
+REL_VERSION	= 5.7
+ABI_VERSION	= 5
+
+RANLIB		= arm-eabi-ranlib
+
+LIBRARIES	=  ../lib/libmenu.a ../lib/libmenu_g.a
+
+LINT		= 
+LINT_OPTS	= 
+LINT_LIBS	= -lmenu -lncurses 
+
+AUTO_SRC	= \
+		../include/menu.h \
+		../include/eti.h \
+		../include/mf_common.h
+
+################################################################################
+all \
+libs \
+install ::	$(AUTO_SRC) $(LIBRARIES)
+
+sources :	$(AUTO_SRC)
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) :
+	sh $(srcdir)/../mkdirs.sh $@
+
+# make copies to simplify include-paths while still keeping menu's include
+# file in this directory.
+../include/menu.h : $(srcdir)/menu.h
+	-rm -f $@
+	cp $(srcdir)/menu.h $@
+../include/eti.h : $(srcdir)/eti.h
+	-rm -f $@
+	cp $(srcdir)/eti.h $@
+../include/mf_common.h : $(srcdir)/mf_common.h
+	-rm -f $@
+	cp $(srcdir)/mf_common.h $@
+
+MENU_PRIV_H = \
+	$(srcdir)/menu.priv.h \
+	$(AUTO_SRC) \
+	../include/curses.h
+
+tags:
+	ctags *.[ch]
+
+TAGS:
+	etags *.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+
+distclean :: clean
+	-rm -f Makefile
+
+realclean :: distclean
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# generated by mk-0th.awk
+#   libname:    menu
+#   subsets:    ticlib+termlib+ext_tinfo+base+ext_funcs
+
+.SUFFIXES: .c .cc .h .i .ii
+.c.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+.cc.ii :
+	$(CPP) $(CPPFLAGS) $< >$@
+.h.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+
+C_SRC = \
+	$(srcdir)/m_attribs.c \
+	$(srcdir)/m_cursor.c \
+	$(srcdir)/m_driver.c \
+	$(srcdir)/m_format.c \
+	$(srcdir)/m_global.c \
+	$(srcdir)/m_hook.c \
+	$(srcdir)/m_item_cur.c \
+	$(srcdir)/m_item_nam.c \
+	$(srcdir)/m_item_new.c \
+	$(srcdir)/m_item_opt.c \
+	$(srcdir)/m_item_top.c \
+	$(srcdir)/m_item_use.c \
+	$(srcdir)/m_item_val.c \
+	$(srcdir)/m_item_vis.c \
+	$(srcdir)/m_items.c \
+	$(srcdir)/m_new.c \
+	$(srcdir)/m_opts.c \
+	$(srcdir)/m_pad.c \
+	$(srcdir)/m_pattern.c \
+	$(srcdir)/m_post.c \
+	$(srcdir)/m_req_name.c \
+	$(srcdir)/m_scale.c \
+	$(srcdir)/m_spacing.c \
+	$(srcdir)/m_sub.c \
+	$(srcdir)/m_trace.c \
+	$(srcdir)/m_userptr.c \
+	$(srcdir)/m_win.c
+
+# Producing llib-lmenu is time-consuming, so there's no direct-dependency for
+# it in the lintlib rule.  We'll only remove in the cleanest setup.
+clean ::
+	rm -f llib-lmenu.*
+
+realclean ::
+	rm -f llib-lmenu
+
+llib-lmenu : $(C_SRC)
+	cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@
+
+lintlib :
+	sh $(srcdir)/../misc/makellib menu $(CPPFLAGS)
+lint :
+	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          menu
+#  traces:        DEBUG
+#  MODEL:         NORMAL
+#  model:         objects
+#  prefix:        lib
+#  suffix:        .a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./menu.priv.h
+#  host:          arm-unknown-eabi
+
+NORMAL_OBJS = \
+	../objects/m_attribs$o \
+	../objects/m_cursor$o \
+	../objects/m_driver$o \
+	../objects/m_format$o \
+	../objects/m_global$o \
+	../objects/m_hook$o \
+	../objects/m_item_cur$o \
+	../objects/m_item_nam$o \
+	../objects/m_item_new$o \
+	../objects/m_item_opt$o \
+	../objects/m_item_top$o \
+	../objects/m_item_use$o \
+	../objects/m_item_val$o \
+	../objects/m_item_vis$o \
+	../objects/m_items$o \
+	../objects/m_new$o \
+	../objects/m_opts$o \
+	../objects/m_pad$o \
+	../objects/m_pattern$o \
+	../objects/m_post$o \
+	../objects/m_req_name$o \
+	../objects/m_scale$o \
+	../objects/m_spacing$o \
+	../objects/m_sub$o \
+	../objects/m_userptr$o \
+	../objects/m_win$o
+
+$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./menu.priv.h
+
+../lib/libmenu.a : $(NORMAL_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.menu :: $(DESTDIR)$(libdir) ../lib/libmenu.a
+	@echo installing ../lib/libmenu.a as $(DESTDIR)$(libdir)/libmenu.a
+	$(INSTALL_DATA) ../lib/libmenu.a $(DESTDIR)$(libdir)/libmenu.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libmenu.a
+
+uninstall \
+uninstall.libs \
+uninstall.menu ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libmenu.a
+	-@rm -f $(DESTDIR)$(libdir)/libmenu.a
+
+clean ::
+	-rm -f ../lib/libmenu.a
+
+mostlyclean::
+	-rm -f $(NORMAL_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      objects
+#   MODEL:      NORMAL
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../objects/m_attribs$o :	$(srcdir)/m_attribs.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_attribs.c -o ../objects/m_attribs$o
+
+../objects/m_cursor$o :	$(srcdir)/m_cursor.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_cursor.c -o ../objects/m_cursor$o
+
+../objects/m_driver$o :	$(srcdir)/m_driver.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_driver.c -o ../objects/m_driver$o
+
+../objects/m_format$o :	$(srcdir)/m_format.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_format.c -o ../objects/m_format$o
+
+../objects/m_global$o :	$(srcdir)/m_global.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_global.c -o ../objects/m_global$o
+
+../objects/m_hook$o :	$(srcdir)/m_hook.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_hook.c -o ../objects/m_hook$o
+
+../objects/m_item_cur$o :	$(srcdir)/m_item_cur.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_cur.c -o ../objects/m_item_cur$o
+
+../objects/m_item_nam$o :	$(srcdir)/m_item_nam.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_nam.c -o ../objects/m_item_nam$o
+
+../objects/m_item_new$o :	$(srcdir)/m_item_new.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_new.c -o ../objects/m_item_new$o
+
+../objects/m_item_opt$o :	$(srcdir)/m_item_opt.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_opt.c -o ../objects/m_item_opt$o
+
+../objects/m_item_top$o :	$(srcdir)/m_item_top.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_top.c -o ../objects/m_item_top$o
+
+../objects/m_item_use$o :	$(srcdir)/m_item_use.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_use.c -o ../objects/m_item_use$o
+
+../objects/m_item_val$o :	$(srcdir)/m_item_val.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_val.c -o ../objects/m_item_val$o
+
+../objects/m_item_vis$o :	$(srcdir)/m_item_vis.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_vis.c -o ../objects/m_item_vis$o
+
+../objects/m_items$o :	$(srcdir)/m_items.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_items.c -o ../objects/m_items$o
+
+../objects/m_new$o :	$(srcdir)/m_new.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_new.c -o ../objects/m_new$o
+
+../objects/m_opts$o :	$(srcdir)/m_opts.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_opts.c -o ../objects/m_opts$o
+
+../objects/m_pad$o :	$(srcdir)/m_pad.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_pad.c -o ../objects/m_pad$o
+
+../objects/m_pattern$o :	$(srcdir)/m_pattern.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_pattern.c -o ../objects/m_pattern$o
+
+../objects/m_post$o :	$(srcdir)/m_post.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_post.c -o ../objects/m_post$o
+
+../objects/m_req_name$o :	$(srcdir)/m_req_name.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_req_name.c -o ../objects/m_req_name$o
+
+../objects/m_scale$o :	$(srcdir)/m_scale.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_scale.c -o ../objects/m_scale$o
+
+../objects/m_spacing$o :	$(srcdir)/m_spacing.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_spacing.c -o ../objects/m_spacing$o
+
+../objects/m_sub$o :	$(srcdir)/m_sub.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_sub.c -o ../objects/m_sub$o
+
+../objects/m_userptr$o :	$(srcdir)/m_userptr.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_userptr.c -o ../objects/m_userptr$o
+
+../objects/m_win$o :	$(srcdir)/m_win.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_win.c -o ../objects/m_win$o
+
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          menu
+#  traces:        DEBUG
+#  MODEL:         DEBUG
+#  model:         obj_g
+#  prefix:        lib
+#  suffix:        _g.a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./menu.priv.h
+#  host:          arm-unknown-eabi
+
+DEBUG_OBJS = \
+	../obj_g/m_attribs$o \
+	../obj_g/m_cursor$o \
+	../obj_g/m_driver$o \
+	../obj_g/m_format$o \
+	../obj_g/m_global$o \
+	../obj_g/m_hook$o \
+	../obj_g/m_item_cur$o \
+	../obj_g/m_item_nam$o \
+	../obj_g/m_item_new$o \
+	../obj_g/m_item_opt$o \
+	../obj_g/m_item_top$o \
+	../obj_g/m_item_use$o \
+	../obj_g/m_item_val$o \
+	../obj_g/m_item_vis$o \
+	../obj_g/m_items$o \
+	../obj_g/m_new$o \
+	../obj_g/m_opts$o \
+	../obj_g/m_pad$o \
+	../obj_g/m_pattern$o \
+	../obj_g/m_post$o \
+	../obj_g/m_req_name$o \
+	../obj_g/m_scale$o \
+	../obj_g/m_spacing$o \
+	../obj_g/m_sub$o \
+	../obj_g/m_trace$o \
+	../obj_g/m_userptr$o \
+	../obj_g/m_win$o
+
+$(DEBUG_OBJS) : ../include/ncurses_cfg.h ./menu.priv.h
+
+../lib/libmenu_g.a : $(DEBUG_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.menu :: $(DESTDIR)$(libdir) ../lib/libmenu_g.a
+	@echo installing ../lib/libmenu_g.a as $(DESTDIR)$(libdir)/libmenu_g.a
+	$(INSTALL_DATA) ../lib/libmenu_g.a $(DESTDIR)$(libdir)/libmenu_g.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libmenu_g.a
+
+uninstall \
+uninstall.libs \
+uninstall.menu ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libmenu_g.a
+	-@rm -f $(DESTDIR)$(libdir)/libmenu_g.a
+
+clean ::
+	-rm -f ../lib/libmenu_g.a
+
+mostlyclean::
+	-rm -f $(DEBUG_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      obj_g
+#   MODEL:      DEBUG
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../obj_g/m_attribs$o :	$(srcdir)/m_attribs.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_attribs.c -o ../obj_g/m_attribs$o
+
+../obj_g/m_cursor$o :	$(srcdir)/m_cursor.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_cursor.c -o ../obj_g/m_cursor$o
+
+../obj_g/m_driver$o :	$(srcdir)/m_driver.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_driver.c -o ../obj_g/m_driver$o
+
+../obj_g/m_format$o :	$(srcdir)/m_format.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_format.c -o ../obj_g/m_format$o
+
+../obj_g/m_global$o :	$(srcdir)/m_global.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_global.c -o ../obj_g/m_global$o
+
+../obj_g/m_hook$o :	$(srcdir)/m_hook.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_hook.c -o ../obj_g/m_hook$o
+
+../obj_g/m_item_cur$o :	$(srcdir)/m_item_cur.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_cur.c -o ../obj_g/m_item_cur$o
+
+../obj_g/m_item_nam$o :	$(srcdir)/m_item_nam.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_nam.c -o ../obj_g/m_item_nam$o
+
+../obj_g/m_item_new$o :	$(srcdir)/m_item_new.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_new.c -o ../obj_g/m_item_new$o
+
+../obj_g/m_item_opt$o :	$(srcdir)/m_item_opt.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_opt.c -o ../obj_g/m_item_opt$o
+
+../obj_g/m_item_top$o :	$(srcdir)/m_item_top.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_top.c -o ../obj_g/m_item_top$o
+
+../obj_g/m_item_use$o :	$(srcdir)/m_item_use.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_use.c -o ../obj_g/m_item_use$o
+
+../obj_g/m_item_val$o :	$(srcdir)/m_item_val.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_val.c -o ../obj_g/m_item_val$o
+
+../obj_g/m_item_vis$o :	$(srcdir)/m_item_vis.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_item_vis.c -o ../obj_g/m_item_vis$o
+
+../obj_g/m_items$o :	$(srcdir)/m_items.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_items.c -o ../obj_g/m_items$o
+
+../obj_g/m_new$o :	$(srcdir)/m_new.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_new.c -o ../obj_g/m_new$o
+
+../obj_g/m_opts$o :	$(srcdir)/m_opts.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_opts.c -o ../obj_g/m_opts$o
+
+../obj_g/m_pad$o :	$(srcdir)/m_pad.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_pad.c -o ../obj_g/m_pad$o
+
+../obj_g/m_pattern$o :	$(srcdir)/m_pattern.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_pattern.c -o ../obj_g/m_pattern$o
+
+../obj_g/m_post$o :	$(srcdir)/m_post.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_post.c -o ../obj_g/m_post$o
+
+../obj_g/m_req_name$o :	$(srcdir)/m_req_name.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_req_name.c -o ../obj_g/m_req_name$o
+
+../obj_g/m_scale$o :	$(srcdir)/m_scale.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_scale.c -o ../obj_g/m_scale$o
+
+../obj_g/m_spacing$o :	$(srcdir)/m_spacing.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_spacing.c -o ../obj_g/m_spacing$o
+
+../obj_g/m_sub$o :	$(srcdir)/m_sub.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_sub.c -o ../obj_g/m_sub$o
+
+../obj_g/m_trace$o :	$(srcdir)/m_trace.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_trace.c -o ../obj_g/m_trace$o
+
+../obj_g/m_userptr$o :	$(srcdir)/m_userptr.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_userptr.c -o ../obj_g/m_userptr$o
+
+../obj_g/m_win$o :	$(srcdir)/m_win.c \
+			$(MENU_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../menu/m_win.c -o ../obj_g/m_win$o
+
+
+# generated by mk-hdr.awk
+#  subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#  compat:     yes
+
+${DESTDIR}${includedir} :
+	sh ${srcdir}/../mkdirs.sh $@
+
+install \
+install.libs \
+install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \
+		$(srcdir)/eti.h \
+		$(srcdir)/menu.h
+	@ (cd ${DESTDIR}${includedir} && rm -f eti.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/eti.h
+	@ (cd ${DESTDIR}${includedir} && rm -f menu.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/menu.h
+
+uninstall \
+uninstall.libs \
+uninstall.includes ::
+	-@ (cd ${DESTDIR}${includedir} && rm -f eti.h)
+	-@ (cd ${DESTDIR}${includedir} && rm -f menu.h)
+depend : ${AUTO_SRC}
+	makedepend -- ${CPPFLAGS} -- ${C_SRC}
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/misc/Makefile b/misc/Makefile
new file mode 100644
index 0000000..8b4ee67
--- /dev/null
+++ b/misc/Makefile
@@ -0,0 +1,152 @@
+# $Id: Makefile.in,v 1.43 2007/03/31 15:54:17 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2006,2007 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for ncurses miscellany directory
+#
+# This makes/installs the terminfo database
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+# and the programs with the configured default model.
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES :
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+CF_MFLAGS 	= 
+
+
+DESTDIR		= 
+top_srcdir	= ..
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+datadir		= ${prefix}/share
+
+CC		= agcc.pl
+HOSTCC		= gcc
+
+tabsetdir	= $(datadir)/tabset
+ticdir		= /usr/local/share/terminfo
+ticfile		= $(ticdir).db
+source		= ${top_srcdir}/misc/terminfo.src
+
+INSTALL		= /usr/bin/install -c
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+################################################################################
+all :	terminfo.tmp
+
+depend :
+
+sources :
+
+install : install.data install.libs
+
+install.data :	terminfo.tmp \
+		$(DESTDIR)$(libdir) \
+		$(DESTDIR)$(datadir) \
+		$(DESTDIR)$(tabsetdir)
+	DESTDIR=${DESTDIR} \
+	prefix=${prefix} \
+	exec_prefix=${exec_prefix} \
+	bindir=${bindir} \
+	top_srcdir=${top_srcdir} \
+	srcdir=${srcdir} \
+	datadir=${datadir} \
+	ticdir=${ticdir} \
+	source=terminfo.tmp \
+	THIS_CC="$(CC)" \
+	THAT_CC="$(HOSTCC)" \
+	$(SHELL) ./run_tic.sh
+	@cd $(srcdir)/tabset && \
+		$(SHELL) -c 'for i in * ; do \
+			if test -f $$i ; then \
+			echo installing $$i; \
+			$(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \
+			fi; done'
+
+NCURSES_CONFIG	= ncurses5-config
+
+install.libs : $(DESTDIR)$(bindir) ncurses-config
+	$(INSTALL_PROG) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
+
+terminfo.tmp : run_tic.sed $(source)
+	echo '** adjusting tabset paths'
+	sed -f run_tic.sed $(source) >terminfo.tmp
+
+run_tic.sed :
+	WHICH_XTERM=xterm-new \
+	ticdir=${ticdir} \
+	$(SHELL) $(srcdir)/gen_edit.sh >$@
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) \
+$(DESTDIR)$(datadir) \
+$(DESTDIR)$(tabsetdir) :
+	$(SHELL) $(top_srcdir)/mkdirs.sh $@
+
+uninstall : uninstall.data uninstall.libs
+
+uninstall.data :
+	-test -d $(DESTDIR)$(tabsetdir) && rm -rf $(DESTDIR)$(tabsetdir)
+	-test -d $(DESTDIR)$(ticdir) && rm -rf $(DESTDIR)$(ticdir)
+	-test -f $(DESTDIR)$(ticfile) && rm -f $(DESTDIR)$(ticfile)
+
+uninstall.libs :
+	-rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
+
+tags :
+
+TAGS :
+
+mostlyclean :
+	-rm -f terminfo.tmp
+	-rm -f run_tic.sed
+	-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
+
+clean :: mostlyclean
+
+distclean : clean
+	-rm -f Makefile run_tic.sh ncurses-config
+
+realclean : distclean
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
diff --git a/misc/ncurses-config b/misc/ncurses-config
new file mode 100644
index 0000000..1db5598
--- /dev/null
+++ b/misc/ncurses-config
@@ -0,0 +1,161 @@
+#!/bin/sh
+# $Id: ncurses-config.in,v 1.12 2007/03/17 20:02:19 tom Exp $
+##############################################################################
+# Copyright (c) 2006,2007 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey, 2006
+
+prefix="/usr/local"
+exec_prefix="${prefix}"
+
+bindir="${exec_prefix}/bin"
+libdir="${exec_prefix}/lib"
+datadir="${prefix}/share"
+mandir="${prefix}/man"
+
+THIS="ncurses"
+
+LANG=C;		export LANG
+LANGUAGE=C;	export LANGUAGE
+LC_ALL=C;	export LC_ALL
+LC_CTYPE=C;	export LC_CTYPE
+
+test $# = 0 && exec /bin/sh $0 --error
+
+while test $# -gt 0; do
+	case "$1" in
+	-*=*)
+		ARG=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+		;;
+	*)
+		ARG=
+		;;
+	esac
+
+	case "$1" in
+	# basic configuration
+	--prefix=*)
+		prefix="$ARG"
+		test -z "$exec_prefix" && exec_prefix="$ARG"
+		;;
+	--prefix)
+		echo "$prefix"
+		;;
+	--exec-prefix=*)
+		exec_prefix="$ARG"
+		;;
+	--exec-prefix)
+		echo "$exec_prefix"
+		;;
+	# compile/link
+	--cflags)
+		INCS=
+		if test "${prefix}/include" != /usr/include ; then
+			INCS="-I${prefix}/include"
+		fi
+		if test "" != no ; then
+			INCS="$INCS -I${prefix}/include/${THIS}"
+		fi
+		sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
+			$INCS
+ENDECHO
+		;;
+	--libs)
+		sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
+			-L${exec_prefix}/lib  -l${THIS} 
+ENDECHO
+		;;
+	# identification
+	--version)
+		echo "5.7.20081102"
+		;;
+	--abi-version)
+		echo "5"
+		;;
+	--mouse-version)
+		echo "1"
+		;;
+	# locations
+	--bindir)
+		echo "${bindir}"
+		;;
+	--datadir)
+		echo "${datadir}"
+		;;
+	--libdir)
+		echo "${libdir}"
+		;;
+	--mandir)
+		echo "${mandir}"
+		;;
+	--terminfo)
+		echo "/usr/local/share/terminfo"
+		;;
+	--terminfo-dirs)
+		echo "/usr/local/share/terminfo"
+		;;
+	--termpath)
+		echo ""
+		;;
+	# general info
+	--help)
+		cat <<ENDHELP
+Usage: ${THIS}-config [options]
+
+Options:
+  --prefix           echos the package-prefix of ${THIS}
+  --prefix=ARG       sets the package-prefix of ${THIS}
+  --exec-prefix      echos the executable-prefix of ${THIS}
+  --exec-prefix=ARG  sets the executable-prefix of ${THIS}
+
+  --cflags           echos the C compiler flags needed to compile with ${THIS}
+  --libs             echos the libraries needed to link with ${THIS}
+
+  --version          echos the release+patchdate version of ${THIS}
+  --abi-version      echos the ABI version of ${THIS}
+  --mouse-version    echos the mouse-interface version of ${THIS}
+
+  --bindir           echos the directory containing ${THIS} programs
+  --datadir          echos the directory containing ${THIS} data
+  --libdir           echos the directory containing ${THIS} libraries
+  --mandir           echos the directory containing ${THIS} manpages
+  --terminfo         echos the \$TERMINFO terminfo database path
+  --terminfo-dirs    echos the \$TERMINFO_DIRS directory list
+  --termpath         echos the \$TERMPATH termcap list
+
+  --help             prints this message
+ENDHELP
+		;;
+	--error|*)
+		/bin/sh $0 --help 1>&2
+		exit 1
+		;;
+	esac
+	shift
+done
+# vile:shmode
diff --git a/misc/run_tic.sed b/misc/run_tic.sed
new file mode 100644
index 0000000..cbbdcac
--- /dev/null
+++ b/misc/run_tic.sed
@@ -0,0 +1,4 @@
+s%/usr/share/tabset%/usr/local/share/tabset%g
+/^# This is xterm for ncurses/,/^$/{
+	s/use=xterm-new,/use=xterm-new,/
+}
diff --git a/misc/run_tic.sh b/misc/run_tic.sh
new file mode 100644
index 0000000..4a8f5b3
--- /dev/null
+++ b/misc/run_tic.sh
@@ -0,0 +1,174 @@
+#!/bin/sh
+# $Id: run_tic.in,v 1.23 2006/10/28 19:43:30 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2005,2006 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996,2000
+#
+# This script is used to install terminfo.src using tic.  We use a script
+# because the path checking is too awkward to do in a makefile.
+#
+# Assumes:
+#	The leaf directory names (lib, tabset, terminfo)
+#
+echo '** Building terminfo database, please wait...'
+#
+# The script is designed to be run from the misc/Makefile as
+#	make install.data
+
+: ${suffix=}
+: ${DESTDIR=}
+: ${prefix=/usr/local}
+: ${exec_prefix=${prefix}}
+: ${bindir=${exec_prefix}/bin}
+: ${top_srcdir=..}
+: ${srcdir=.}
+: ${datadir=${prefix}/share}
+: ${ticdir=/usr/local/share/terminfo}
+: ${source=${top_srcdir}/misc/terminfo.src}
+: ${LN_S="ln -s"}
+: ${THAT_CC=cc}
+: ${THIS_CC=cc}
+: ${ext_funcs=1}
+
+test -z "${DESTDIR}" && DESTDIR=
+
+# Allow tic to run either from the install-path, or from the build-directory.
+# Do not do this if we appear to be cross-compiling.  In that case, we rely
+# on the host's copy of tic to compile the terminfo database.
+if test "$THAT_CC" = "$THIS_CC" ; then
+case "$PATH" in
+:*) PATH=../progs:../lib:${DESTDIR}$bindir$PATH ;;
+*) PATH=../progs:../lib:${DESTDIR}$bindir:$PATH ;;
+esac
+export PATH
+SHLIB="sh $srcdir/shlib"
+else
+# Cross-compiling, so don't set PATH or run shlib.
+SHLIB=
+# reset $suffix, since it applies to the target, not the build platform.
+suffix=
+fi
+
+
+# set another env var that doesn't get reset when `shlib' runs, so `shlib' uses
+# the PATH we just set.
+SHLIB_PATH=$PATH
+export SHLIB_PATH
+
+# set a variable to simplify environment update in shlib
+SHLIB_HOST=eabi
+export SHLIB_HOST
+
+# don't use user's TERMINFO variable
+TERMINFO=${DESTDIR}$ticdir ; export TERMINFO
+umask 022
+
+# Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo.
+TICDIR=`echo $TERMINFO | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
+
+# Remove the old terminfo stuff; we don't care if it existed before, and it
+# would generate a lot of confusing error messages if we tried to overwrite it.
+# We explicitly remove its contents rather than the directory itself, in case
+# the directory is actually a symbolic link.
+( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null )
+
+if test "$ext_funcs" = 1 ; then
+cat <<EOF
+Running tic to install $TERMINFO ...
+
+	You may see messages regarding extended capabilities, e.g., AX.
+	These are extended terminal capabilities which are compiled
+	using
+		tic -x
+	If you have ncurses 4.2 applications, you should read the INSTALL
+	document, and install the terminfo without the -x option.
+
+EOF
+if ( $SHLIB tic$suffix -x -s -o $TERMINFO $source )
+then
+	echo '** built new '$TERMINFO
+else
+	echo '? tic could not build '$TERMINFO
+	exit 1
+fi
+else
+cat <<EOF
+Running tic to install $TERMINFO ...
+
+	You may see messages regarding unknown capabilities, e.g., AX.
+	These are extended terminal capabilities which may be compiled
+	using
+		tic -x
+	If you have ncurses 4.2 applications, you should read the INSTALL
+	document, and install the terminfo without the -x option.
+
+EOF
+if ( $SHLIB tic$suffix -s -o $TERMINFO $source )
+then
+	echo '** built new '$TERMINFO
+else
+	echo '? tic could not build '$TERMINFO
+	exit 1
+fi
+fi
+
+# Make a symbolic link to provide compatibility with applications that expect
+# to find terminfo under /usr/lib.  That is, we'll _try_ to do that.  Not
+# all systems support symbolic links, and those that do provide a variety
+# of options for 'test'.
+if test "$TICDIR" != "$TERMINFO" ; then
+	( rm -f $TICDIR 2>/dev/null )
+	if ( cd $TICDIR 2>/dev/null )
+	then
+		cd $TICDIR
+		TICDIR=`pwd`
+		if test $TICDIR != $TERMINFO ; then
+			# Well, we tried.  Some systems lie to us, so the
+			# installer will have to double-check.
+			echo "Verify if $TICDIR and $TERMINFO are the same."
+			echo "The new terminfo is in $TERMINFO; the other should be a link to it."
+			echo "Otherwise, remove $TICDIR and link it to $TERMINFO."
+		fi
+	else
+		cd ${DESTDIR}$prefix
+		# Construct a symbolic link that only assumes $ticdir has the
+		# same $prefix as the other installed directories.
+		RELATIVE=`echo $ticdir|sed -e 's%^'$prefix'/%%'`
+		if test "$RELATIVE" != "$ticdir" ; then
+			RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
+		fi
+		if ( ln -s $RELATIVE $TICDIR )
+		then
+			echo '** sym-linked '$TICDIR' for compatibility'
+		else
+			echo '** could not sym-link '$TICDIR' for compatibility'
+		fi
+	fi
+fi
+# vile:shmode
diff --git a/misc/terminfo.tmp b/misc/terminfo.tmp
new file mode 100644
index 0000000..186199d
--- /dev/null
+++ b/misc/terminfo.tmp
@@ -0,0 +1,21803 @@
+######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
+#
+# This version of terminfo.src is distributed with ncurses and is maintained
+# by Thomas E. Dickey (TD).
+#
+# Report bugs and new terminal descriptions to
+#	bug-ncurses@gnu.org
+#
+#	$Revision: 1.341 $
+#	$Date: 2008/10/12 23:03:54 $
+#
+# The original header is preserved below for reference.  It is noted that there
+# is a "newer" version which differs in some cosmetic details (but actually
+# stopped updates several years ago); we have decided to not change the header
+# unless there is also a change in content.
+#
+# To further muddy the waters, it is noted that changes to this file as part of
+# maintenance of ncurses (since 1996) are generally conceded to be copyright
+# under the ncurses MIT-style license.  That was the effect of the agreement
+# which the principal authors of ncurses made in 1998.  However, since much of
+# the file itself is of unknown authorship (and the disclaimer below makes it
+# obvious that Raymond cannot or will not convey rights over those parts),
+# there is no explicit copyright notice on the file itself.
+#
+# It would also be a nuisance to split the file into unknown/known authorship
+# and move pieces as they are maintained, since many of the maintenance changes
+# have been small corrections to Raymond's translations to/from termcap format,
+# correcting the data but not the accompanying annotations.
+#
+# In any case, note that almost half of this file is not data but annotations
+# which reflect creative effort.  Furthermore, the structure of entries to
+# reuse common chunks also is creative (and subject to copyright).  Finally,
+# some portions of the data are derivative work under a compatible MIT-style
+# license from xterm.
+#
+#------------------------------------------------------------------------------
+#	Version 10.2.1
+#	terminfo syntax
+#
+#	Eric S. Raymond		(current maintainer)
+#	John Kunze, Berkeley
+#	Craig Leres, Berkeley
+#
+# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu
+# address is no longer valid.  The latest version can always be found at
+# <http://www.tuxedo.org/terminfo>.
+#
+# PURPOSE OF THIS FILE:
+#
+# This file describes the capabilities of various character-cell terminals,
+# as needed by software such as screen-oriented editors.
+#
+# Other terminfo and termcap files exist, supported by various OS vendors
+# or as relics of various older versions of UNIX.  This one is the longest
+# and most comprehensive one in existence.  It subsumes not only the entirety
+# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL
+# termcap file, but also large numbers of vendor-maintained termcap and
+# terminfo entries more complete and carefully tested than those in historical
+# termcap/terminfo versions.
+#
+# Pointers to related resources (including the ncurses distribution) may
+# be found at <http://www.tuxedo.org/terminfo>.
+#
+# INTERNATIONALIZATION:
+#
+# This file uses only the US-ASCII character set (no ISO8859 characters).
+#
+# This file assumes a US-ASCII character set. If you need to fix this, start
+# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers
+# for your character set.  \E(A and \E)A enables the British character set
+# with the pound sign at position 2/3.
+#
+# In a Japanese-processing environment using EUC/Japanese or Shift-JIS,
+# C1 characters are considered the first-byte set of the Japanese encodings,
+# so \E)0 should be avoided in <enacs> and initialization strings.
+#
+# FILE FORMAT:
+#
+# The version you are looking at may be in any of three formats: master
+# (terminfo with OT capabilities), stock terminfo, or termcap.  You can tell
+# which by the format given in the header above.
+#
+# The master format is accepted and generated by the terminfo tools in the
+# ncurses suite; it differs from stock (System V-compatible) terminfo only
+# in that it admits a group of capabilities (prefixed `OT') equivalent to
+# various obsolete termcap capabilities.  You can, thus, convert from master
+# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if
+# you have ncurses `tic -I' is nicer (among other things, it automatically
+# outputs entries in a canonical form).
+#
+# The termcap version is generated automatically from the master version
+# using tic -C.  This filtering leaves in the OT capabilities under their
+# original termcap names.  All translated entries fit within the 1023-byte
+# string-table limit of archaic termcap libraries except where explicitly
+# noted below.  Note that the termcap translation assumes that your termcap
+# library can handle multiple tc capabilities in an entry. 4.4BSD has this
+# capability.  Older versions of GNU termcap, through 1.3, do not.
+#
+# For details on these formats, see terminfo(5) in the ncurses distribution,
+# and termcap(5) in the 4.4BSD Unix Programmer's Manual.  Be aware that 4.4BSD
+# curses has been declared obsolete by the caretakers of the 4.4BSD sources
+# as of June 1995; they are encouraging everyone to migrate to ncurses.
+#
+# Note: unlike some other distributed terminfo files (Novell Unix & SCO's),
+# no entry in this file has embedded comments.  This is so source translation
+# to termcap only has to carry over leading comments.  Also, no name field
+# contains embedded whitespace (such whitespace confuses rdist).
+#
+# Further note: older versions of this file were often installed with an editor
+# script (reorder) that moved the most common terminal types to the front of
+# the file.  This should no longer be necessary, as the file is now ordered
+# roughly by type frequency with ANSI/VT100 and other common types up front.
+#
+# Some information has been merged in from terminfo files distributed by
+# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below).  Much information
+# comes from vendors who maintain official terminfos for their hardware
+# (notably DEC and Wyse).
+#
+# A detailed change history is included at the end of this file.
+#
+# FILE ORGANIZATION:
+#
+# Comments in this file begin with # - they cannot appear in the middle
+# of a terminfo/termcap entry (this feature had to be sacrificed in order
+# to allow standard terminfo and termcap syntax to be generated cleanly from
+# the master format).  Individual capabilities are commented out by
+# placing a period between the colon and the capability name.
+#
+# The file is divided up into major sections (headed by lines beginning with
+# the string "########") and minor sections (beginning with "####"); do
+#
+#	grep "^####" <file> | more
+#
+# to see a listing of section headings.  The intent of the divisions is
+# (a) to make it easier to find things, and (b) to order the database so
+# that important and frequently-encountered terminal types are near the
+# front (so that you'll get reasonable search efficiency from a linear
+# search of the termcap form even if you don't use reorder).  Minor sections
+# usually correspond to manufacturers or standard terminal classes.
+# Parenthesized words following manufacturer names are type prefixes or
+# product line names used by that manufacturers.
+#
+# HOW TO READ THE ENTRIES:
+#
+# The first name in an entry is the canonical name for the model or
+# type, last entry is a verbose description.  Others are mnemonic synonyms for
+# the terminal.
+#
+# Terminal names look like <manufacturer> <model> - <modes/options>
+# The part to the left of the dash, if a dash is present, describes the
+# particular hardware of the terminal.  The part to the right may be used
+# for flags indicating special ROMs, extra memory, particular terminal modes,
+# or user preferences.
+#
+# All names should be in lower case, for consistency in typing.
+#
+# The following are conventionally used suffixes:
+#	-2p	Has two pages of memory.  Likewise 4p, 8p, etc.
+#	-am	Enable auto-margin.
+#	-m	Monochrome.  Suppress color support
+#	-mc	Magic-cookie.  Some terminals (notably older Wyses) can
+#		only support one attribute without magic-cookie lossage.
+#		Their base entry is usually paired with another that
+#		uses magic cookies to support multiple attributes.
+#	-nam	No auto-margin - suppress <am> capability
+#	-nl	No labels - suppress soft labels
+#	-ns	No status line - suppress status line
+#	-rv	Terminal in reverse video mode (black on white)
+#	-s	Enable status line.
+#	-vb	Use visible bell (<flash>) rather than <bel>.
+#	-w	Wide - in 132 column mode.
+# If a name has multiple suffixes and one is a line height, that one should
+# go first.  Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
+#
+# Entries with embedded plus signs are designed to be included through use/tc
+# capabilities, not used as standalone entries.
+#
+# To avoid search clashes, some older all-numeric names for terminals have
+# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
+# All primary names of terminals now have alphanumeric prefixes.
+#
+# Comments marked "esr" are mostly results of applying the termcap-compiler
+# code packaged with ncurses and contemplating the resulting error messages.
+# In many cases, these indicated obvious fixes to syntax garbled by the
+# composers.  In a few cases, I was able to deduce corrected forms for garbled
+# capabilities by looking at context.  All the information in the original
+# entries is preserved in the comments.
+#
+# In the comments, terminfo capability names are bracketed with <> (angle
+# brackets).  Termcap capability names are bracketed with :: (colons).
+#
+# INTERPRETATION OF USER CAPABILITIES
+#
+# The System V Release 4 and XPG4 terminfo format defines ten string
+# capabilities for use by applications, <u0>...<u9>.   In this file, we use
+# certain of these capabilities to describe functions which are not covered
+# by terminfo.  The mapping is as follows:
+#
+#	u9	terminal enquire string (equiv. to ANSI/ECMA-48 DA)
+#	u8	terminal answerback description
+#	u7	cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6)
+#	u6	cursor position report (equiv. to ANSI/ECMA-48 CPR)
+#
+# The terminal enquire string <u9> should elicit an answerback response
+# from the terminal.  Common values for <u9> will be ^E (on older ASCII
+# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals).
+#
+# The cursor position request (<u7>) string should elicit a cursor position
+# report.  A typical value (for VT100 terminals) is \E[6n.
+#
+# The terminal answerback description (u8) must consist of an expected
+# answerback string.  The string may contain the following scanf(3)-like
+# escapes:
+#
+#	%c	Accept any character
+#	%[...]	Accept any number of characters in the given set
+#
+# The cursor position report (<u6>) string must contain two scanf(3)-style
+# %d format elements.  The first of these must correspond to the Y coordinate
+# and the second to the %d.  If the string contains the sequence %i, it is
+# taken as an instruction to decrement each value after reading it (this is
+# the inverse sense from the cup string).  The typical CPR value is
+# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
+#
+# These capabilities are used by tack(1m), the terminfo action checker
+# (distributed with ncurses 5.0).
+#
+# TABSET FILES
+#
+# All the entries in this file have been edited to assume that the tabset
+# files directory is /usr/local/share/tabset, in conformance with the File Hierarchy
+# Standard for Linux and open-source BSD systems.  Some vendors (notably Sun)
+# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
+#
+# No curses package we know of actually uses these files.  If their location
+# is an issue, you will have to hand-patch the file locations before compiling
+# this file.
+#
+# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
+#
+# As the ANSI/ECMA-48 standard and variants take firmer hold, and as
+# character-cell terminals are increasingly replaced by X displays, much of
+# this file is becoming a historical document (this is part of the reason for
+# the new organization, which puts ANSI types, xterm, Unix consoles,
+# and vt100 up front in confidence that this will catch 95% of new hardware).
+#
+# For the terminal types still alive, I'd like to have manufacturer's
+# contact data (Internet address and/or snail-mail + phone).
+#
+# I'm also interested in enriching the comments so that the latter portions of
+# the file do in fact become a potted history of VDT technology as seen by
+# UNIX hackers.  Ideally, I'd like the headers for each manufacturer to
+# include its live/dead/out-of-the-business status, and for as many
+# terminal types as possible to be tagged with information like years
+# of heaviest use, popularity, and interesting features.
+#
+# I'm especially interested in identifying the obscure entries listed under
+# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal
+# wisdom about them gets lost.  If you know a lot about obscure old terminals,
+# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
+# eyeball it for things you can identify and describe.
+#
+# If you have been around long enough to contribute, please read the file
+# with this in mind and send me your annotations.
+#
+# COPYRIGHTS AND OTHER DELUSIONS
+#
+# The BSD ancestor of this file had a standard Regents of the University of
+# California copyright with dates from 1980 to 1993.
+#
+# Some information has been merged in from a terminfo file SCO distributes.
+# It has an obnoxious boilerplate copyright which I'm ignoring because they
+# took so much of the content from the ancestral BSD versions of this file
+# and didn't attribute it, thereby violating the BSD Regents' copyright.
+#
+# Not that anyone should care.  However many valid functions copyrights may
+# serve, putting one on a termcap/terminfo file with hundreds of anonymous
+# contributors makes about as much sense as copyrighting a wall-full of
+# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
+#
+# This file deliberately has no copyright.  It belongs to no one and everyone.
+# If you claim you own it, you will merely succeed in looking like a fool.
+# Use it as you like.  Use it at your own risk.  Copy and redistribute freely.
+# There are no guarantees anywhere.  Svaha!
+#
+
+######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
+#
+# This section describes terminal classes and brands that are still
+# quite common.
+#
+
+#### Specials
+#
+# Special "terminals".  These are used to label tty lines when you don't
+# know what kind of terminal is on it.  The characteristics of an unknown
+# terminal are the lowest common denominator - they look about like a ti 700.
+#
+
+dumb|80-column dumb tty,
+	am,
+	cols#80,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+unknown|unknown terminal type,
+	gn, use=dumb,
+lpr|printer|line printer,
+	OTbs, hc, os,
+	cols#132, lines#66,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J,
+glasstty|classic glass tty interpreting ASCII control characters,
+	OTbs, am,
+	cols#80,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H,
+	kcud1=^J, nel=^M^J, .kbs=^H,
+
+vanilla|dumb tty,
+	OTbs,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+
+# This is almost the same as "dumb", but with no prespecified width.
+# DEL and ^C are hardcoded to act as kill characters.
+# ^D acts as a line break (just like newline).
+# It also interprets
+#      \033];xxx\007 
+# for compatibility with xterm -TD
+9term|Plan9 terminal emulator for X,
+	am,
+	OTnl=^J, bel=^G, cud1=^J,
+
+#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
+#
+# See the end-of-file comment for more on these.
+#
+
+# ANSI capabilities are broken up into pieces, so that a terminal
+# implementing some ANSI subset can use many of them.
+ansi+local1,
+	cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
+ansi+local,
+	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+	cuu=\E[%p1%dA, use=ansi+local1,
+ansi+tabs,
+	cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[2g,
+ansi+inittabs,
+	it#8, use=ansi+tabs,
+ansi+erase,
+	clear=\E[H\E[J, ed=\E[J, el=\E[K,
+ansi+rca,
+	hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
+ansi+cup,
+	cup=\E[%i%p1%d;%p2%dH, home=\E[H,
+ansi+rep,
+	rep=%p1%c\E[%p2%{1}%-%db,
+ansi+idl1,
+	dl1=\E[M, il1=\E[L,
+ansi+idl,
+	dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1,
+ansi+idc,
+	dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6,
+ansi+arrows,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	khome=\E[H,
+ansi+sgr|ansi graphic renditions,
+	blink=\E[5m, invis=\E[8m, rev=\E[7m,
+	sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+	sgr0=\E[0m,
+ansi+sgrso|ansi standout only,
+	rmso=\E[m, smso=\E[7m,
+ansi+sgrul|ansi underline only,
+	rmul=\E[m, smul=\E[4m,
+ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim,
+	bold=\E[1m,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
+ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold,
+	dim=\E[2m,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m,
+	use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
+ansi+pp|ansi printer port,
+	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ansi+csr|ansi scroll-region plus cursor save & restore,
+	csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,
+
+# The IBM PC alternate character set.  Plug this into any Intel console entry.
+# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
+# ROM graphics for control characters such as the diamond, up- and down-arrow.
+# This works with the System V, Linux, and BSDI consoles.  It's a safe bet this
+# will work with any Intel console, they all seem to have inherited \E[11m
+# from the ANSI.SYS de-facto standard.
+klone+acs|alternate character set for ansi.sys displays,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	rmacs=\E[10m, smacs=\E[11m,
+
+# Highlight controls corresponding to the ANSI.SYS standard.  Most
+# console drivers for Intel boxes obey these.  Makes the same assumption
+# about \E[11m as klone+acs.  True ANSI/ECMA-48 would have <rmso=\E[27m>,
+# <rmul=\E[24m>, but this isn't a documented feature of ANSI.SYS.
+klone+sgr|attribute control for ansi.sys displays,
+	blink=\E[5m, bold=\E[1m, rev=\E[7m, rmpch=\E[10m,
+	rmso=\E[m, rmul=\E[m,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;11%;m,
+	sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
+	use=klone+acs,
+
+# Most Intel boxes do not treat "invis" (invisible) text.
+klone+sgr8|attribute control for ansi.sys displays,
+	invis=\E[8m,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+	use=klone+sgr,
+
+# Highlight controls corresponding to the ANSI.SYS standard.  *All*
+# console drivers for Intel boxes obey these.  Does not assume \E[11m will
+# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
+# diamond and arrow characters under curses.
+klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
+	blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, rmso=\E[m,
+	rmul=\E[m,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
+	sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
+	use=klone+acs,
+
+# KOI8-R (RFC1489) acs (alternate character set)
+# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
+klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset,
+	acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225,
+	rmacs=\E[10m, smacs=\E[11m,
+
+# ANSI.SYS color control.  The setab/setaf caps depend on the coincidence
+# between SVr4/XPG4's color numbers and ANSI.SYS attributes.  Here are longer
+# but equivalent strings that don't rely on that coincidence:
+# setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
+# They match a subset of ECMA-48.
+klone+color|color control for ansi.sys and ISO6429-compatible displays,
+	colors#8, ncv#3, pairs#64,
+	op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+# This is better than klone+color, it doesn't assume white-on-black as the
+# default color pair,  but many `ANSI' terminals don't grok the <op> cap.
+ecma+color|color control for ECMA-48-compatible terminals,
+	AX,
+	colors#8, ncv#3, pairs#64,
+	op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+# Attribute control for ECMA-48-compatible terminals
+ecma+sgr|attribute capabilities for true ECMA-48 terminals,
+	rmso=\E[27m, rmul=\E[24m, use=klone+sgr8,
+
+# For comparison, here are all the capabilities implied by the Intel
+# Binary Compatibility Standard (level 2) that fit within terminfo.
+# For more detail on this rather pathetic standard, see the comments
+# near the end of this file.
+ibcs2|Intel Binary Compatibility Standard prescriptions,
+	cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cud=\E[%p1%dB,
+	cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
+	hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
+	indn=\E[%p1%dS, rc=\E7, rin=\E[%p1%dT, rmam=\E[?7l, sc=\E7,
+	smam=\E[?7h, tbc=\E[g, vpa=\E[%i%p1%dd,
+
+#### ANSI/ECMA-48 terminals and terminal emulators
+#
+# See near the end of this file for details on ANSI conformance.
+# Don't mess with these entries!  Lots of other entries depend on them!
+#
+# This section lists entries in a least-capable to most-capable order.
+# if you're in doubt about what `ANSI' matches yours, try them in that
+# order and back off from the first that breaks.
+
+# ansi-mr is for ANSI terminals with ONLY relative cursor addressing
+# and more than one page of memory.  It uses local motions instead of
+# direct cursor addressing, and makes almost no assumptions. It does
+# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen.
+ansi-mr|mem rel cup ansi,
+	am, xon,
+	cols#80, lines#24, use=vanilla, use=ansi+erase,
+	use=ansi+local1,
+
+# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
+# beware of screen size problems and memory relative cursor addressing.
+ansi-mini|any ansi terminal with pessimistic assumptions,
+	am, xon,
+	cols#80, lines#24, use=vanilla, use=ansi+cup,
+	use=ansi+erase,
+
+# ansi-mtabs adds relative addressing and minimal tab support
+ansi-mtabs|any ansi terminal with pessimistic assumptions,
+	it#8,
+	ht=^I, use=ansi+local1, use=ansi-mini,
+
+# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
+#
+# The following is an entry for the full ANSI 3.64 (1977).  It lacks
+# padding, but most terminals using the standard are "fast" enough
+# not to require any -- even at 9600 bps.  If you encounter problems,
+# try including the padding specifications.
+#
+# Note: the :as: and :ae: specifications are not implemented here, for
+# the available termcap documentation does not make clear WHICH alternate
+# character set to specify.  ANSI 3.64 seems to make allowances for several.
+# Please make the appropriate adjustments to fit your needs -- that is
+# if you will be using alternate character sets.
+#
+# There are very few terminals running the full ANSI 3.64 standard,
+# so I could only test this entry on one verified terminal (Visual 102).
+# I would appreciate the results on other terminals sent to me.
+#
+# Please report comments, changes, and problems to:
+#
+# U.S. MAIL:   Hugh Hansard
+#              Box: 22830
+#              Emory University
+#              Atlanta, GA. 30322.
+#
+# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh.
+#
+# (Added vt100 <rc>,<sc> to quiet a tic warning --esr)
+ansi77|ansi 3.64 standard 1977 version,
+	OTbs, am, mir,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\E[;H\E[2J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+	kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM,
+	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m,
+
+# Procomm and some other ANSI emulations don't recognize all of the ANSI-
+# standard capabilities.  This entry deletes <cuu>, <cuf>, <cud>, <cub>, and
+# <vpa>/<hpa> capabilities, forcing curses to use repetitions of <cuu1>,
+# <cuf1>, <cud1> and <cub1>.  Also deleted <ich> and <ich1>, as QModem up to
+# 5.03 doesn't recognize these.  Finally, we delete <rep> and <ri>, which seem
+# to confuse many emulators.  On the other hand, we can count on these programs
+# doing <rmacs>/<smacs>/<sgr>. Older versions of this entry featured
+# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under
+# ANSI.SYS influence.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
+pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode),
+	OTbs, am, mir, msgr,
+	cols#80, it#8, lines#24,
+	bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=\E[D,
+	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	hts=\EH, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[2g,
+	use=klone+sgr-dumb,
+pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
+	lines#25, use=pcansi-m,
+pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode),
+	lines#33, use=pcansi-m,
+pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode),
+	lines#43, use=pcansi-m,
+# The color versions.  All PC emulators do color...
+pcansi|ibm-pc terminal programs claiming to be ansi,
+	use=klone+color, use=pcansi-m,
+pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines,
+	lines#25, use=pcansi,
+pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines,
+	lines#33, use=pcansi,
+pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines,
+	lines#43, use=pcansi,
+
+# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color.
+# If you want pound signs rather than dollars, replace `B' with `A'
+# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
+	mc5i,
+	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+	cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
+	ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%i%p1%dG, ht=\E[I,
+	ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, kbs=^H,
+	kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
+	rep=%p1%c\E[%p2%{1}%-%db, rin=\E[%p1%dT, s0ds=\E(B,
+	s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[2g,
+	vpa=\E[%i%p1%dd, use=pcansi-m,
+
+ansi+enq|ncurses extension for ANSI ENQ,
+	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
+	u9=\E[c,
+
+# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
+# standard terminfo.  Assumes ANSI.SYS-compatible attributes and color.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi|ansi/pc-term compatible with color,
+	use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m,
+
+# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
+# all the normal ANSI stuff with no extensions. It assumes
+# insert/delete line/char is there, so it won't work with
+# vt100 clones. It assumes video attributes for bold, blink,
+# underline, and reverse, which won't matter much if the terminal
+# can't do some of those. Padding is assumed to be zero, which
+# shouldn't hurt since xon/xoff is assumed.
+ansi-generic|generic ansi standard terminal,
+	am, xon,
+	cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup,
+	use=ansi+rca, use=ansi+erase, use=ansi+tabs,
+	use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep,
+	use=ansi+sgrbold, use=ansi+arrows,
+
+#### DOS ANSI.SYS variants
+#
+# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
+# documentation (except for the keyboard key reassignment feature, which
+# doesn't fit the <pfkey> model well).  The klone+acs sequences were valid
+# though undocumented.  The <pfkey> capability is untested but should work for
+# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
+ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
+	OTbs, am, mir, msgr, xon,
+	cols#80, lines#25,
+	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
+	is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+	khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s", rc=\E[u,
+	rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR,
+	u7=\E[6n, use=klone+color, use=klone+sgr8,
+ansi.sys|ANSI.SYS 3.1 and later versions,
+	el=\E[K, use=ansi.sys-old,
+
+#
+# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
+# This should only be used when the terminal emulator cannot redefine the keys.
+# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
+# definitions must be restored.  If the terminal emulator is quit while in vi
+# or others using <smkx>/<rmkx>, the keypad will not be defined as per PC-DOS.
+# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
+# (^U and ^D are already defined for tn3270).  The ESC is safe for vi but it
+# does "beep".  ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
+# Note that <kcub1> is always BS, because PC-dos can tolerate this change.
+# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
+# Consequently the End keypad key could not be set (it is relatively safe and
+# actually useful because it sends ^@ O, which beeps and opens a line above).
+ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi,
+	is2=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p,
+	rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p,
+	smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p,
+	use=ansi.sys,
+#
+# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
+nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS,
+	dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
+	is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n,
+	use=ansi.sys,
+#
+# See ansi.sysk and nansi.sys above.
+nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi,
+	dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
+	is2=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p,
+	use=ansi.sysk,
+
+#### ANSI console types
+#
+
+#### BeOS
+#
+# BeOS entry for Terminal program Seems to be almost ANSI
+beterm|BeOS Terminal,
+	am, eo, mir, msgr, xenl, xon,
+	colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
+	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+	kend=\E[4~, kf1=\E[11~, kf10=\E[20~, kf11=\E[21~,
+	kf12=\E[22~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, kf9=\E[19~,
+	khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
+	nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
+	rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm,
+	sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m,
+	smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
+	vpa=\E[%i%p1%dd,
+
+#### Linux consoles
+#
+
+# This entry is good for the 1.2.13 or later version of the Linux console.
+#
+# ***************************************************************************
+# *                                                                         *
+# *                           WARNING:                                      *
+# * Linuxes come with a default keyboard mapping kcbt=^I.  This entry, in   *
+# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
+# * character. Here are the keymap replacement lines that will set this up: *
+# *                                                                         *
+#	keycode  15 = Tab             Tab
+#		alt     keycode  15 = Meta_Tab
+#		shift	keycode  15 = F26
+#	string F26 ="\033[Z"
+# *                                                                         *
+# * This has to use a key slot which is unfortunate (any unused one will    *
+# * do, F26 is the higher-numbered one).  The change ought to be built      *
+# * into the kernel tables.                                                 *
+# *                                                                         *
+# ***************************************************************************
+#
+# All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
+linux-basic|linux console,
+	am, bce, eo, mir, msgr, xenl, xon,
+	it#8, ncv#18,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177,
+	kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	kspd=^Z, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l,
+	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+	smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g,
+	vpa=\E[%i%p1%dd, use=vt102+enq, use=klone+sgr,
+	use=ecma+color,
+
+linux-m|Linux console no color,
+	colors@, pairs@,
+	setab@, setaf@, setb@, setf@, use=linux,
+
+# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
+# and it matters, turn off <ccc>.  The %02x escape used to implement this is
+# not supposedly back-portable to older SV curses (although it has worked fine
+# on Solaris for several years) and not supported in ncurses versions before
+# 1.9.9.
+linux-c-nc|linux console with color-change,
+	ccc,
+	initc=\E]P%p1%x%p2%{256}%*%{1000}%/%02x%p3%{256}%*%{1000}%/%02x%p4%{256}%*%{1000}%/%02x,
+	oc=\E]R, use=linux-basic,
+# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
+linux-c|linux console 1.3.6+ for older ncurses,
+	ccc,
+	initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{256}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p3%{256}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p4%{256}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;,
+	oc=\E]R, use=linux-basic,
+
+# The 2.2.x kernels add a private mode that sets the cursor type; use that to
+# get a block cursor for cvvis.
+# reported by Frank Heckenbach <frank@g-n-u.de>.
+linux|linux console,
+	civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c,
+	cvvis=\E[?25h\E[?8c, use=linux-c-nc,
+
+# Subject: linux 2.6.26 vt back_color_erase
+# Changes to the Linux console driver broke bce model as reported in
+#	https://bugzilla.novell.com/show_bug.cgi?id=418613
+# apparently from
+#	http://lkml.org/lkml/2008/4/26/305
+#	http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/87f98338f0d636bb/aa96e8b86cee0d1e?lnk=st&q=#aa96e8b86cee0d1e
+linux2.6.26|linux console w/o bce,
+	bce@, use=linux,
+
+# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
+linux-nic|linux with ich/ich1 suppressed for non-curses programs,
+	ich@, ich1@, use=linux,
+
+# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts.
+# acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997.
+linux-koi8|linux with koi8 alternate character set,
+	acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224,
+	use=linux, use=klone+koi8acs,
+
+# Another entry for KOI8-r with Qing Long's acsc.
+# (which one better complies with the standard?)
+linux-koi8r|linux with koi8-r alternate character set,
+	use=linux, use=klone+koi8acs,
+
+# Entry for the latin1 and latin2 fonts
+linux-lat|linux with latin1 or latin2 alternate character set,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376,
+	use=linux,
+
+# This uses graphics from VT codeset instead of from cp437.
+# reason: cp437 (aka "straight to font") is not functional under luit.
+# from: Andrey V Lukyanov <land@long.yar.ru>.
+linux-vt|linux console using VT codes for graphics,
+	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
+	rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
+	smpch@, use=linux,
+
+# This is based on the Linux console (relies on the console to perform some
+# of the functionality), but does not recognize as many control sequences.
+# The program comes bundled with an old (circa 1998) copy of the Linux
+# console terminfo.  It recognizes some non-ANSI/VT100 sequences such as
+#	\E*	move cursor to home, as as \E[H
+#	\E,X	same as \E(X
+#	\EE	move cursor to beginning of row
+#	\E[y,xf	same as \E[y,xH
+#
+# Note: The status-line support is buggy (dsl does not work).
+kon|kon2|jfbterm|Kanji ON Linux console,
+	ccc@, hs,
+	civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@,
+	initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T,
+	use=linux,
+
+#### Mach
+#
+
+# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
+mach|Mach Console,
+	am, km,
+	cols#80, it#8, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+	kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
+	kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m,
+	smso=\E[7m, smul=\E[4m,
+mach-bold|Mach Console with bold instead of underline,
+	rmul=\E[0m, smul=\E[1m, use=mach,
+mach-color|Mach Console with ANSI color,
+	colors#8, pairs#64,
+	dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=mach,
+
+# From: Marcus Brinkmann
+# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/
+#
+# Comments in the original are summarized here:
+#
+# hurd uses 8-bit characters (km).
+#
+# Although it doesn't do XON/XOFF, we don't want padding characters (xon).
+#
+# Regarding compatibility to vt100:  hurd doesn't specify <xenl>, as we don't
+# have the eat_newline_glitch.  It doesn't support setting or removing tab
+# stops (hts/tbc).
+#
+# hurd uses ^H instead of \E[D for cub1, as only ^H implements <bw> and it is
+# one byte instead three.
+#
+# <ich1> is not included because hurd has insert mode.
+#
+# hurd doesn't use ^J for scrolling, because this could put things into the
+# scrollback buffer.
+#
+# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
+# This is a GNU extension.
+#
+# The original has commented-out ncv, but is restored here.
+#
+# Reading the source, RIS resets cnorm, but not xmous.
+hurd|The GNU Hurd console server,
+	am, bce, bw, eo, km, mir, msgr, xon,
+	colors#8, it#8, ncv#18, pairs#64,
+	acsc=++\,\,--..00ii``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\Ec, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[34l, dch=\E[%p1%dP,
+	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\Eg,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
+	invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
+	kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T,
+	rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E[10m, rmir=\E[4l,
+	rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+	sgr0=\E[0m, sitm=\E[3m, smacs=\E[11m, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l,
+	gsbom=\E[>1h,
+
+#### OSF Unix
+#
+
+# OSF/1 1.1 Snapshot 2
+pmcons|pmconsole|PMAX console,
+	am,
+	cols#128, lines#57,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I,
+	ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+
+# SCO console and SOS-Syscons console for 386bsd
+# (scoansi: had unknown capabilities
+#	:Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
+#	:GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:
+#	:G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
+#	:CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
+#	:WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
+# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
+# on the <smacs>=\E[12m  -- esr)
+#
+# klone+sgr-dumb is an error since the acsc does not match -TD
+#
+# In this description based on SCO's keyboard(HW) manpage list of default
+# function key values:
+#	F13-F24 are shifted F1-F12
+#	F25-F36 are control F1-F12
+#	F37-F48 are shift+control F1-F12
+#
+# hpa/vpa work in the console, but not in scoterm:
+#	hpa=\E[%p1%dG,
+#	vpa=\E[%p1%dd,
+#
+# SCO's terminfo uses
+#	kLFT=\E[d,
+#	kRIT=\E[c,
+# which do not work (console or scoterm).
+#
+# Console documents only 3 attributes can be set with SGR (so we don't use sgr).
+scoansi-old|SCO Extended ANSI standard crt (5.0.5),
+	OTbs, am, bce, eo, xon,
+	colors#8, cols#80, it#8, lines#25, pairs#64,
+	acsc=-\230.\231\,.+/0[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{c}\034~\207,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	civis=\E[=14;12C, clear=\E[H\E[2J, cnorm=\E[=10;12C,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP,
+	dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M,
+	ed=\E[m\E[J, el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I,
+	hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+	ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbeg=\E[E, kbs=^H,
+	kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\177, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
+	kf12=\E[X, kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c,
+	kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g,
+	kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l,
+	kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p,
+	kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u,
+	kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P,
+	kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[],
+	kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q,
+	kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
+	kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8,
+	rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m,
+	rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
+	smacs=\E[12m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+scoansi-new|SCO Extended ANSI standard crt (5.0.6),
+	km,
+	civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr,
+	cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m,
+	rep=\E[%p1%d;%p2%db, rmm=\E[=11L,
+	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
+	smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm,
+	smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m,
+	smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m,
+	smgtp=\E[=0;%i%p1%dm, smm=\E[=10L,
+	wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr,
+	use=scoansi-old,
+# make this easy to change...
+scoansi|SCO Extended ANSI standard crt,
+	use=scoansi-old,
+
+# This actually describes the generic SVr4 display driver for Intel boxes.
+# The <dim=\E[2m> isn't documented and therefore may not be reliable.
+# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
+att6386|at386|386at|AT&T WGS 6386 console,
+	am, bw, eo, xon,
+	cols#80, it#8, lines#25,
+	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C,
+	clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S,
+	indn=\E[%p1%dS, invis=\E[9m, is2=\E[0;10;39m, kbs=^H,
+	kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
+	kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
+	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kich1=\E[@,
+	knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
+	sc=\E7,
+	sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
+	sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
+	tbc=\E[2g, vpa=\E[%i%p1%dd, use=klone+color,
+# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
+pc6300plus|AT&T 6300 plus,
+	OTbs, am, xon,
+	cols#80, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C,
+	clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
+	dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K,
+	home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=^J,
+	invis=\E[9m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOc, kf10=\EOu, kf2=\EOd, kf3=\EOe,
+	kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\EOk,
+	nel=^M^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+
+# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
+#
+# I have a UNIX PC which I use as a terminal attached to my Linux PC.
+# Unfortunately, the UNIX PC terminfo entry that comes with ncurses
+# is broken. All the special key sequences are broken, making it unusable
+# with Emacs. The problem stems from the following:
+#
+# The UNIX PC has a plethora of keys (103 of them, and there's no numeric
+# keypad!), loadable fonts, and strange highlighting modes ("dithered"
+# half-intensity, "smeared" bold, and real strike-out, for example.) It also
+# uses resizable terminal windows, but the bundled terminal program always
+# uses an 80x24 window (and doesn't support seem to support a 132-column
+# mode.)
+#
+# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a
+# library which was a superset of SVr3.5 curses (called tam, for "terminal
+# access method".) tam includes support for real, overlapping windows,
+# onscreen function key labels, and bitmap graphics. But since the primary
+# user interface on the UNIX PC was a GUI program (ua, for "user
+# assistant",) and remote administration was considered important for the
+# machine, tam also supported VT100-compatible terminals attached to the
+# serial port or used across the StarLan network. To simulate the extra keys
+# not present on a VT100, users could press ESC and a two-letter sequence,
+# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
+# however, were not the same as those sent by the actual Undo key. The
+# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
+# (If you're interested in adding some of the tam calls to ncurses, btw, I
+# have the full documentation and several programs which use tam. It also
+# used an extended terminfo format to describe key sequences, special
+# highlighting modes, etc.)
+#
+# KEYS: This means that ncurses would quite painful on the UNIX PC, since
+# there are two sequences for every key-modifier combination (local keyboard
+# sequence and remote "VT100" sequence.) But I doubt many people are trying
+# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the
+# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
+# seem to have been built from the manual describing the VT100 sequences.
+# This means it doesn't work for a real live UNIX PC.
+#
+# FONTS: The UNIX PC also has a strange interpretation of "alternate
+# character set". Rather than the VT100 graphics you might expect, it allows
+# up to 8 custom fonts to be loaded at any given time. This means that
+# programs expecting VT100 graphics will usually be disappointed. For this
+# reason I have disabled the smacs/rmacs sequences, but they could easily be
+# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
+# manpage), should you wish to do so:
+#
+# SGR10 - Select font 0 - ESC [ 10 m or SO
+# SGR11 - Select font 1 - ESC [ 11 m or SI
+# SGR12 - Select font 2 - ESC [ 12 m
+# ... (etc.)
+# SGR17 - Select font 7 - ESC [ 17 m
+#
+# Graphics for line drawing are not reliably found at *any* character
+# location because the UNIX PC has dynamically reloadable fonts. I use font
+# 0 for regular text and font 1 for italics, but this is by no means
+# universal. So ASCII line drawing is in order if smacs/rmacs are enabled.
+#
+# MISC: The cursor visible/cursor invisible sequences were swapped in the
+# distributed terminfo.
+#
+# To ameliorate these problems (and fix a few highlighting bugs) I rewrote
+# the UNIX PC terminfo entry. The modified version works great with Lynx,
+# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC
+# attached by serial cable. In Emacs, even the Undo key works, and many
+# applications can now use the F1-F8 keys.
+#
+# esr's notes:
+#	Terminfo entry for the AT&T Unix PC 7300
+#	from escape(7) in Unix PC 7300 Manual.
+#	Somewhat similar to a vt100-am (but different enough
+#	to redo this from scratch.)
+#
+#	/***************************************************************
+#	*
+#	*           FONT LOADING PROGRAM FOR THE UNIX PC
+#	*
+#	*     This routine loads a font defined in the file ALTFONT
+#	*     into font memory slot #1.  Once the font has been loaded,
+#	*     it can be used as an alternative character set.
+#	*
+#	*     The call to ioctl with the argument WIOCLFONT is the key
+#	*     to this routine.  For more information, see window(7) in
+#	*     the PC 7300 documentation.
+#	***************************************************************/
+#	#include <string.h>		/* needed for strcpy call */
+#	#include <sys/window.h>         /* needed for ioctl call */
+#	#define FNSIZE	60		/* font name size */
+#	#define ALTFONT  "/usr/lib/wfont/special.8.ft"  /* font file */
+#	/*
+#	*     The file /usr/lib/wfont/special.8.ft comes with the
+#	*     standard PC software.  It defines a graphics character set
+#	*     similar to that of the Teletype 5425 terminal.  To view
+#	*     this or other fonts in /usr/lib/wfont, use the command
+#	*     cfont <filename>.  For further information on fonts see
+#	*     cfont(1) in the PC 7300 documentation.
+#	*/
+#
+#	struct altfdata 	/* structure for alt font data */
+#	{
+#	short	altf_slot;		/* memory slot number */
+#	char	altf_name[FNSIZE];	/* font name (file name) */
+#	};
+#	ldfont()
+#	{
+#		int wd;		/* window in which altfont will be */
+#		struct altfdata altf;
+#		altf.altf_slot=1;
+#		strcpy(altf.altf_name,ALTFONT);
+#		for (wd =1; wd < 12; wd++) {
+#		     ioctl(wd, WIOCLFONT,&altf);
+#	        }
+#	}
+#
+# (att7300: added <civis>/<cnorm>/<ich1>/<invis> from the BSDI entry,
+# they're confirmed by the man page for the System V display---esr)
+#
+att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
+	am, xon,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C,
+	clear=\E[2J\E[H, cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD,
+	cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+	ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
+	kCAN=\EOW, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE,
+	kEND=\ENN, kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM,
+	kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR,
+	kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
+	kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
+	kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
+	ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
+	kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
+	kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
+	kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
+	kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
+	kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
+	ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
+	rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
+	smul=\E[4m,
+
+# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
+# from SGI's terminfo database.  SGI's entry shows F9-F12 with the codes
+# for the application keypad mode.  We have added iris-ansi-ap rather than
+# change the original to keypad mode.
+#
+# (iris-ansi: added rmam/smam based on init string -- esr)
+#
+# This entry, and those derived from it, is used in xwsh (also known as
+# winterm).  Some capabilities that do not fit into the terminfo model
+# include the shift- and control-functionkeys:
+#
+# F1-F12 generate different codes when shift or control modifiers are used.
+# For example:
+#	F1      	\E[001q
+#	shift F1	\E[013q
+#	control-F1	\E[025q
+#
+# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
+# \EOP to \EOS.  The shifted and control modifiers still do the same thing.
+#
+# The cursor keys also have different codes:
+#	control-up	\E[162q
+#	control-down	\E[165q
+#	control-left	\E[159q
+#	control-right	\E[168q
+#
+#	shift-up	\E[161q
+#	shift-down	\E[164q
+#	shift-left	\E[158q
+#	shift-right	\E[167q
+#
+#	control-tab	\[072q
+#
+iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
+	am,
+	cols#80, it#8, lines#40,
+	bel=^G, bold=\E[1m, clear=\E[H\E[2J,
+	cnorm=\E[9/y\E[12/y\E[=6l, cr=^M, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P,
+	kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q,
+	kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
+	kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q,
+	kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q,
+	kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+	kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
+	knp=\E[154q, kpp=\E[150q, kprt=\E[209q, krmir=\E[146q,
+	kspd=\E[217q, nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\,
+	rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
+	sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
+	tbc=\E[3g,
+iris-ansi-ap|IRIS ANSI in application-keypad mode,
+	is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
+	kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,
+
+# From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
+# (T.Dickey 98/1/24)
+iris-color|xwsh|IRIX ANSI with color,
+	ncv#33,
+	csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dP, dim=\E[2m,
+	ech=\E[%p1%dX, ich=\E[%p1%d@, rc=\E8, ritm=\E[23m,
+	rmul=\E[24m, rs1=\Ec,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sitm=\E[3m, use=vt100+enq, use=klone+color,
+	use=iris-ansi-ap,
+
+# The following is a version of the ibm-pc entry distributed with PC/IX,
+# (Interactive Systems' System 3 for the Big Blue), modified by Richard
+# McIntosh at UCB/CSM.  The :pt: and :uc: have been removed from the original,
+# (the former is untrue, and the latter failed under UCB/man); standout and
+# underline modes have been added.  Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pcix|PC/IX console,
+	am, bw, eo,
+	cols#80, lines#24,
+	clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
+	smul=\E[4m,
+
+# (ibmpcx: this entry used to be known as ibmx.
+# It formerly included the following extension capabilities:
+#	:GC=b:GL=v:GR=t:RT=^J:\
+#	:GH=\E[196g:GV=\E[179g:\
+#	:GU=\E[193g:GD=\E[194g:\
+#	:G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
+#	:CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
+#	:WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
+# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
+# ":kh=\E[Y:".  Added IBM-PC forms characters and highlights, they match
+# what was there before. -- esr)
+ibmpcx|xenix|ibmx|IBM PC xenix console display,
+	OTbs, am, msgr,
+	cols#80, lines#25,
+	clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
+	kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
+	kpp=\E[Z, use=klone+acs, use=klone+sgr8,
+
+#### QNX
+#
+
+# QNX 4.0 Console
+# Michael's original version of this entry had <am@>, <smcup=\Ei>,
+# <rmcup=\Eh\ER>; this was so terminfo applications could write the lower
+# right corner without triggering a scroll.  The ncurses terminfo library can
+# handle this case with the <ich1> capability, and prefers <am> for better
+# optimization.  Bug: The <op> capability resets attributes.
+# From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996
+# (removed: <sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,>)
+qnx|qnx4|qnx console,
+	daisy, km, mir, msgr, xhpa, xt,
+	colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8,
+	acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263,
+	bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ,
+	cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2,
+	dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee,
+	il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263,
+	kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
+	kDL=\377\366, kEND=\377\301, kEOL=\377\311,
+	kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
+	kHOM=\377\260, kIC=\377\340, kLFT=\377\264,
+	kMOV=\377\306, kMSG=\377\304, kNXT=\377\272,
+	kOPT=\377\372, kPRT=\377\275, kPRV=\377\262,
+	kRDO=\377\315, kRES=\377\374, kRIT=\377\266,
+	kRPL=\377\373, kSAV=\377\307, kSPD=\377\303,
+	kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0,
+	kclo=\377\343, kclr=\377\341, kcmd=\377\245,
+	kcpy=\377\265, kcrt=\377\305, kctab=\377\237,
+	kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246,
+	kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274,
+	ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320,
+	kext=\377\270, kf1=\377\201, kf10=\377\212,
+	kf11=\377\256, kf12=\377\257, kf13=\377\213,
+	kf14=\377\214, kf15=\377\215, kf16=\377\216,
+	kf17=\377\217, kf18=\377\220, kf19=\377\221,
+	kf2=\377\202, kf20=\377\222, kf21=\377\223,
+	kf22=\377\224, kf23=\377\333, kf24=\377\334,
+	kf25=\377\225, kf26=\377\226, kf27=\377\227,
+	kf28=\377\230, kf29=\377\231, kf3=\377\203,
+	kf30=\377\232, kf31=\377\233, kf32=\377\234,
+	kf33=\377\235, kf34=\377\236, kf35=\377\276,
+	kf36=\377\277, kf37=\377\321, kf38=\377\322,
+	kf39=\377\323, kf4=\377\204, kf40=\377\324,
+	kf41=\377\325, kf42=\377\326, kf43=\377\327,
+	kf44=\377\330, kf45=\377\331, kf46=\377\332,
+	kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206,
+	kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346,
+	khlp=\377\350, khome=\377\240, khts=\377\342,
+	kich1=\377\253, kil1=\377\273, kind=\377\261,
+	kmov=\377\351, kmrk=\377\355, kmsg=\377\345,
+	knp=\377\252, knxt=\377\312, kopn=\377\357,
+	kopt=\377\353, kpp=\377\242, kprt=\377\255,
+	kprv=\377\302, krdo=\377\336, kref=\377\354,
+	kres=\377\360, krfr=\377\347, kri=\377\271,
+	krmir=\377\313, krpl=\377\362, krst=\377\352,
+	ksav=\377\361, kslt=\377\247, kspd=\377\335,
+	ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER,
+	rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER,
+	rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d,
+	setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei,
+	smso=\E(, smul=\E[,
+#
+#
+qnxt|qnxt4|QNX4 terminal,
+	crxm, use=qnx4,
+#
+qnxm|QNX4 with mouse events,
+	maddr#1,
+	chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h,
+	mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l,
+	mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l,
+	smicm=\E/>2h, use=qnx4,
+#
+qnxw|QNX4 windows,
+	xvpa, use=qnxm,
+#
+#	Monochrome QNX4 terminal or console. Setting this terminal type will
+#	allow an application running on a color console to behave as if it
+#	were a monochrome terminal. Output will be through stdout instead of
+#	console writes because the term routines will recognize that the
+#	terminal name starts with 'qnxt'.
+#
+qnxtmono|Monochrome QNX4 terminal or console,
+	colors@, pairs@,
+	scp@, use=qnx4,
+
+# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998
+# (esr: commented out <scp> and <rmcup> to avoid warnings.)
+# (TD: derive from original qnx4 entry)
+qnxt2|qnx 2.15 serial terminal,
+	am,
+	civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@,
+	rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4,
+
+# QNX ANSI terminal definition
+qansi-g|QNX ANSI,
+	am, eslok, hs, xon,
+	colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~Oa,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[2J\E[H, cnorm=\E[?25h\E[?12l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J,
+	el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l,
+	fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
+	ind=\E[S, indn=\E[%p1%dS, invis=\E[9m,
+	is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0,
+	kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt,
+	kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h,
+	kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c,
+	kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa,
+	kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
+	kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
+	kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt,
+	kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx,
+	kf22=\EOy, kf23=\EOz, kf24=\EOa, kf25=\E[1~, kf26=\E[2~,
+	kf27=\E[3~, kf28=\E[4~, kf29=\E[5~, kf3=\EOR, kf30=\E[6~,
+	kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, kf34=\E[10~,
+	kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, kf38=\E[18~,
+	kf39=\E[19~, kf4=\EOS, kf40=\E[20~, kf41=\E[21~,
+	kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~,
+	kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU,
+	kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh,
+	khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a,
+	kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo,
+	kopt=\ENk, kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg,
+	kri=\E[b, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T,
+	ktbc=\ENd, kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\E[T,
+	rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmso=\E[27m,
+	rmul=\E[24m, rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
+	smul=\E[4m, tbc=\E[2g,
+	tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH,
+#
+qansi|QNX ansi with console writes,
+	daisy, xhpa, use=qansi-g,
+#
+qansi-t|QNX ansi without console writes,
+	crxm, use=qansi,
+#
+qansi-m|QNX ansi with mouse,
+	maddr#1,
+	chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h,
+	mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l,
+	mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l,
+	smicm=\E[>2h, use=qansi,
+#
+qansi-w|QNX ansi for windows,
+	xvpa, use=qansi-m,
+
+#### NetBSD consoles
+#
+# pcvt termcap database entries (corresponding to release 3.31)
+# Author's last edit-date: [Fri Sep 15 20:29:10 1995]
+#
+# (For the terminfo master file, I translated these into terminfo syntax.
+# Then I dropped all the pseudo-HP entries. we don't want and can't use
+# the :Xs: flag. Then I split :is: into a size-independent <is1> and a
+# size-dependent <is2>.  Finally, I added <rmam>/<smam> -- esr)
+
+# NOTE: <ich1> has been taken out of this entry. for reference, it should
+# be <ich1=\E[@>.  For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below.
+# (esr: added <civis> and <cnorm> to resolve NetBSD Problem Report #4583)
+pcvtXX|pcvt vt200 emulator (DEC VT220),
+	am, km, mir, msgr, xenl,
+	it#8, vt#3,
+	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS,
+	is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=\177,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
+	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
+	khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~,
+	nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/local/share/tabset/vt100,
+	ri=\EM, rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+	rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+
+#	NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
+#	termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+#	50 lines entries; 80 columns
+pcvt25|dec vt220 emulation with 25 lines,
+	cols#80, lines#25,
+	is2=\E[1;25r\E[25;1H, use=pcvtXX,
+pcvt28|dec vt220 emulation with 28 lines,
+	cols#80, lines#28,
+	is2=\E[1;28r\E[28;1H, use=pcvtXX,
+pcvt35|dec vt220 emulation with 35 lines,
+	cols#80, lines#35,
+	is2=\E[1;35r\E[35;1H, use=pcvtXX,
+pcvt40|dec vt220 emulation with 40 lines,
+	cols#80, lines#40,
+	is2=\E[1;40r\E[40;1H, use=pcvtXX,
+pcvt43|dec vt220 emulation with 43 lines,
+	cols#80, lines#43,
+	is2=\E[1;43r\E[43;1H, use=pcvtXX,
+pcvt50|dec vt220 emulation with 50 lines,
+	cols#80, lines#50,
+	is2=\E[1;50r\E[50;1H, use=pcvtXX,
+
+#	NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
+#	termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+#	50 lines entries; 132 columns
+pcvt25w|dec vt220 emulation with 25 lines and 132 cols,
+	cols#132, lines#25,
+	is2=\E[1;25r\E[25;1H, use=pcvtXX,
+pcvt28w|dec vt220 emulation with 28 lines and 132 cols,
+	cols#132, lines#28,
+	is2=\E[1;28r\E[28;1H, use=pcvtXX,
+pcvt35w|dec vt220 emulation with 35 lines and 132 cols,
+	cols#132, lines#35,
+	is2=\E[1;35r\E[35;1H, use=pcvtXX,
+pcvt40w|dec vt220 emulation with 40 lines and 132 cols,
+	cols#132, lines#40,
+	is2=\E[1;40r\E[40;1H, use=pcvtXX,
+pcvt43w|dec vt220 emulation with 43 lines and 132 cols,
+	cols#132, lines#43,
+	is2=\E[1;43r\E[43;1H, use=pcvtXX,
+pcvt50w|dec vt220 emulation with 50 lines and 132 cols,
+	cols#132, lines#50,
+	is2=\E[1;50r\E[50;1H, use=pcvtXX,
+
+#	OpenBSD implements a color variation
+pcvt25-color|dec vt220 emulation with 25 lines and color,
+	cols#80, lines#25,
+	is2=\E[1;25r\E[25;1H, kf1=\EOP, kf10=\E[29~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
+	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, use=pcvtXX,
+	use=ecma+color,
+
+# Terminfo entries to enable the use of the ncurses library in colour on a
+# NetBSD-arm32 console (only tested on a RiscPC).
+# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98
+# modified codes for setf/setb to setaf/setab, then to klone+color, corrected
+# typo in invis - TD
+arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
+	am, bce, msgr, xenl, xon,
+	cols#80, it#8, lines#30,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
+	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J,
+	invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
+	kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
+	kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v,
+	kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>,
+	rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
+	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>,
+	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr,
+	use=klone+color,
+
+arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
+	cols#132, lines#50, use=arm100,
+
+# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
+# manufactured by Sharp for the Japenese market.
+# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
+x68k|x68k-ite|NetBSD/x68k ITE,
+	cols#96, lines#32,
+	kclr=\E[9~, khlp=\E[28~, use=vt220,
+
+# <tv@pobox.com>:
+# Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
+#
+# (still unfinished, but good enough so far.)
+ofcons|DNARD OpenFirmware console,
+	bw,
+	cols#80, lines#30,
+	bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M,
+	cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
+	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
+	cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
+	dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K,
+	flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL,
+	il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D,
+	kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P,
+	kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W,
+	kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r,
+	kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m,
+	rmso=\2330m, rmul=\2330m,
+	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+	sgr0=\2330m,
+
+# NetBSD "wscons" emulator in vt220 mode.
+# This entry is based on the NetBSD termcap entry, correcting the ncv value.
+# The emulator renders underlined text in red.  Colors are otherwise usable.
+#
+# Testing the emulator and reading the source code (NetBSD 2.0), it appears
+# that "vt220" is inaccurate.  There are a few vt220-features, but most of the
+# vt220 screens in vttest do not work with this emulator.  For instance, it
+# identifies itself (primary DA response) as a vt220 with selective erase.  But
+# the selective erase feature does not work.  The secondary response is copied
+# from Kermit's emulation of vt220, does not correspond to actual vt220.  At
+# the level of detail in a termcap, it is a passable emulator, since ECH does
+# work.  Don't use it on a VMS system -TD
+wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
+	bce, msgr,
+	colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64,
+	is2=\E[r\E[25;1H, kend=\E[8~, kf1=\E[11~, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
+	kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+	kf9=\E[20~, khome=\E[7~, op=\E[m, setab=\E[4%p1%dm,
+	setaf=\E[3%p1%dm, use=vt220,
+
+wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
+	km, use=wsvt25,
+
+# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
+# DECstation/pmax.
+rcons|BSD rasterconsole,
+	use=sun-il,
+# Color version of above. Color currently only provided by NetBSD.
+rcons-color|BSD rasterconsole with ANSI color,
+	bce,
+	colors#8, pairs#64,
+	op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons,
+
+# mgterm -- MGL/MGL2, MobileGear Graphic Library
+# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k}
+# -- the setf/setb are probably incorrect, more likely setaf/setab -TD
+# -- compare with cons25w
+mgterm,
+	OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
+	colors#8, cols#80, it#8, lines#18, pairs#64,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
+	kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N,
+	kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
+	kf9=\E[U, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I,
+	nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
+	rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm,
+	setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
+
+#### FreeBSD console entries
+#
+# From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996
+# Andrey Chernov maintains the FreeBSD termcap distributions.
+#
+# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade
+# or comment out the :cb: capability in the console entry.
+#
+# Alexander Lukyanov reports:
+# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there.
+# Now el1 clears not only to the line beginning, but also a large chunk
+# of previous line. But there is another bug - ech does not work at all.
+#
+
+# for syscons
+# common entry without semigraphics
+# Bug: The <op> capability resets attributes.
+# Bug? The ech and el1 attributes appear to move the cursor in some cases; for
+# instance el1 does if the cursor is moved to the right margin first.  Removed
+# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K)
+#
+# Setting colors turns off reverse; we cannot guarantee order, so use ncv.
+# Note that this disables standout with color.
+#
+# The emulator sends difference strings based on shift- and control-keys,
+# like scoansi:
+#	F13-F24 are shifted F1-F12
+#	F25-F36 are control F1-F12
+#	F37-F48 are shift+control F1-F12
+cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode),
+	am, bce, bw, eo, msgr, npc,
+	colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
+	cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
+	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
+	kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y,
+	kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
+	kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
+	kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
+	kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
+	kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
+	kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
+	kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
+	kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
+	kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
+	knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?%p6%t;1%;m,
+	sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
+cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
+	acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371,
+	use=cons25w,
+cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode),
+	colors@, pairs@,
+	bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
+	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
+	smul=\E[4m, use=cons25,
+cons30|ansi80x30|freebsd console (30-line ansi mode),
+	lines#30, use=cons25,
+cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode),
+	lines#30, use=cons25-m,
+cons43|ansi80x43|freebsd console (43-line ansi mode),
+	lines#43, use=cons25,
+cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode),
+	lines#43, use=cons25-m,
+cons50|ansil|ansi80x50|freebsd console (50-line ansi mode),
+	lines#50, use=cons25,
+cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode),
+	lines#50, use=cons25-m,
+cons60|ansi80x60|freebsd console (60-line ansi mode),
+	lines#60, use=cons25,
+cons60-m|ansi80x60-mono|freebsd console (60-line mono ansi mode),
+	lines#60, use=cons25-m,
+cons25r|pc3r|ibmpc3r|cons25-koi8-r|freebsd console w/koi8-r cyrillic,
+	acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m\204n\212q\0t\206u\207v\211w\210x\201y\230z\231~\225,
+	use=cons25w,
+cons25r-m|pc3r-m|ibmpc3r-mono|cons25-koi8r-m|freebsd console w/koi8-r cyrillic (mono),
+	colors@, pairs@,
+	op@, rmul=\E[m, setab@, setaf@,
+	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?%p6%t;1%;m,
+	smul=\E[4m, use=cons25r,
+cons50r|cons50-koi8r|freebsd console w/koi8-r cyrillic (50 lines),
+	lines#50, use=cons25r,
+cons50r-m|cons50-koi8r-m|freebsd console w/koi8-r cyrillic (50-line mono),
+	lines#50, use=cons25r-m,
+cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines),
+	lines#60, use=cons25r,
+cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono),
+	lines#60, use=cons25r-m,
+# ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars,
+	acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k\214l\215m\216n\217o\220p\221q\222r\223s\224t\225u\226v\227w\230x\231y\232z\233~\237,
+	use=cons25w,
+cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono),
+	colors@, pairs@,
+	bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
+	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
+	smul=\E[4m, use=cons25l1,
+cons50l1|cons50-iso8859|freebsd console w/iso 8859-1 chars (50 lines),
+	lines#50, use=cons25l1,
+cons50l1-m|cons50-iso-m|freebsd console w/iso 8859-1 chars (50-line mono),
+	lines#50, use=cons25l1-m,
+cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines),
+	lines#60, use=cons25l1,
+cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
+	lines#60, use=cons25l1-m,
+
+#### 386BSD and BSD/OS Consoles
+#
+
+# This was the original 386BSD console entry (I think).
+# Some places it's named oldpc3|oldibmpc3.
+# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
+origpc3|origibmpc3|IBM PC 386BSD Console,
+	OTbs, am, bw, eo, xon,
+	cols#80, lines#25,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x,
+	rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x,
+	smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x,
+
+# description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
+oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
+	OTbs, km,
+	lines#25,
+	bel=^G, bold=\E[=15F, cr=^M, cud1=^J, dim=\E[=8F, dl1=\E[M,
+	ht=^I, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F,
+	knp=\E[G, kpp=\E[I, nel=^M^J, sgr0=\E[=R,
+
+# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
+# Note, the emulator supports many of the additional console features
+# listed in the iBCS2 (e.g. character-set selection) though not all
+# are described here.  This entry really ought to be upgraded.
+# Also note, the console will also work with fewer lines after doing
+# "stty rows NN", e.g. to use 24 lines.
+# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996)
+# Bug: The <op> capability resets attributes.
+bsdos-pc|IBM PC BSD/OS Console,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+	use=bsdos-pc-nobold,
+
+bsdos-pc-nobold|BSD/OS PC console w/o bold,
+	use=klone+color, use=bsdos-pc-m,
+
+bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono,
+	OTbs, am, eo, km, xon,
+	cols#80, it#8, lines#25,
+	bel=^G, clear=\Ec, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
+	kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, rc=\E8, sc=\E7,
+	sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
+	use=klone+sgr8,
+
+# Old names for BSD/OS PC console used in releases before 4.1.
+pc3|BSD/OS on the PC Console,
+	use=bsdos-pc-nobold,
+ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline,
+	use=bsdos-pc,
+
+# BSD/OS on the SPARC
+bsdos-sparc|Sun SPARC BSD/OS Console,
+	use=sun,
+
+# BSD/OS on the PowerPC
+bsdos-ppc|PowerPC BSD/OS Console,
+	use=bsdos-pc,
+
+#### DEC VT52
+# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
+#
+# Actually (TD pointed this out at the time the acsc string was added):
+# vt52 shouldn't define full acsc since most of the cells don't match.
+# see vt100 manual page A-31.  This is the list that does match:
+#	f degree
+#	g plus/minus
+#	h right-arrow
+#	k down-arrow
+#	m scan-1
+#	o scan-3
+#	q scan-5
+#	s scan-7
+# The line-drawing happens to work in several terminal emulators, but should
+# not be used as a guide to the capabilities of the vt52.  Note in particular
+# that vt52 does not support line-drawing characters (the scan-X values refer
+# to a crude plotting feature) -TD
+vt52|dec vt52,
+	OTbs,
+	cols#80, it#8, lines#24,
+	acsc=ffgghhompoqqss.k, bel=^G, clear=\EH\EJ, cr=^M,
+	cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+
+#### DEC VT100 and compatibles
+#
+# DEC terminals from the vt100 forward are collected here. Older DEC terminals
+# and micro consoles can be found in the `obsolete' section.  More details on
+# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be
+# found near the end of this file.
+#
+# Except where noted, these entries are DEC's official terminfos.
+# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
+# Engineering for more information.  Updated terminfos and termcaps
+# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+#
+# In October 1995 DEC sold its terminals business, including the VT and Dorio
+# line and trademark, to SunRiver Data Systems.  SunRiver has since changed
+# its name to Boundless Technologies; see http://www.boundless.com.
+#
+
+# NOTE:  Any VT100 emulation, whether in hardware or software, almost
+# certainly includes what DEC called the `Level 1 editing extension' codes;
+# only the very oldest VT100s lacked these and there probably aren't any of
+# those left alive.  To capture these, use one of the VT102 entries.
+#
+# Note that the <xenl> glitch in vt100 is not quite the same as on the Concept,
+# since the cursor is left in a different position while in the
+# weird state (concept at beginning of next line, vt100 at end
+# of this line) so all versions of vi before 3.7 don't handle
+# <xenl> right on vt100. The correct way to handle <xenl> is when
+# you output the char in column 80, immediately output CR LF
+# and then assume you are in column 1 of the next line. If <xenl>
+# is on, am should be on too.
+#
+# I assume you have smooth scroll off or are at a slow enough baud
+# rate that it doesn't matter (1200? or less). Also this assumes
+# that you set auto-nl to "on", if you set it off use vt100-nam
+# below.
+#
+# The padding requirements listed here are guesses. It is strongly
+# recommended that xon/xoff be enabled, as this is assumed here.
+#
+# The vt100 uses <rs2> and <rf> rather than <is2>/<tbc>/<hts> because the
+# tab settings are in non-volatile memory and don't need to be
+# reset upon login. Also setting the number of columns glitches
+# the screen annoyingly. You can type "reset" to get them set.
+#
+# The VT100 series terminals have cursor ("arrows") keys which can operate
+# in two different modes: Cursor Mode and Application Mode.  Cursor Mode
+# is the reset state, and is assumed to be the normal state.  Application
+# Mode is the "set" state.  In Cursor Mode, the cursor keys transmit
+# "Esc [ {code}" sequences, conforming to ANSI standards.  In Application
+# Mode, the cursor keys transmit "Esc O <code>" sequences.  Application Mode
+# was provided primarily as an aid to the porting of VT52 applications.  It is
+# assumed that the cursor keys are normally in Cursor Mode, and expected that
+# applications such as vi will always transmit the <smkx> string.  Therefore,
+# the definitions for the cursor keys are made to match what the terminal
+# transmits after the <smkx> string is transmitted.  If the <smkx> string
+# is a null string or is not defined, then cursor keys are assumed to be in
+# "Cursor Mode", and the cursor keys definitions should match that assumption,
+# else the application may fail.  It is also expected that applications will
+# always transmit the <rmkx> string to the terminal before they exit.
+#
+# The VT100 series terminals have an auxiliary keypad, commonly referred to as
+# the "Numeric Keypad", because it is a cluster of numeric and function keys.
+# The Numeric Keypad which can operate in two different modes: Numeric Mode and
+# Application Mode.  Numeric Mode is the reset state, and is assumed to be
+# the normal state.  Application Mode is the "set" state.  In Numeric Mode,
+# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
+# Enter key transmits the same as the Return key (Note: the Return key
+# can be configured to send either LF (\015) or CR LF).  In Application Mode,
+# all the keypad keys transmit "Esc O {code}" sequences.  The PF1 - PF4 keys
+# always send the same "Esc O {code}" sequences.  It is assumed that the keypad
+# is normally in Numeric Mode.  If an application requires that the keypad be
+# in Application Mode then it is expected that the user, or the application,
+# will set the TERM environment variable to point to a terminfo entry which has
+# defined the <smkx> string to include the codes that switch the keypad into
+# Application Mode, and the terminfo entry will also define function key
+# fields to match the Application Mode control codes.  If the <smkx> string
+# is a null string or is not defined, then the keypad is assumed to be in
+# Numeric Mode.  If the <smkx> string switches the keypad into Application
+# Mode, it is expected that the <rmkx> string will contain the control codes
+# necessary to reset the keypad to "Normal" mode, and it is also expected that
+# applications which transmit the <smkx> string will also always transmit the
+# <rmkx> string to the terminal before they exit.
+#
+# Here's a diagram of the VT100 keypad keys with their bindings.
+# The top line is the name of the key (some DEC keyboards have the keys
+# labelled somewhat differently, like GOLD instead of PF1, but this is
+# the most "official" name).  The second line is the escape sequence it
+# generates in Application Keypad mode (where "$" means the ESC
+# character).  The third line contains two items, first the mapping of
+# the key in terminfo, and then in termcap.
+#   _______________________________________
+#  |   PF1   |   PF2   |   PF3   |   PF4   |
+#  |   $OP   |   $OQ   |   $OR   |   $OS   |
+#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+#  |    7         8         9         -    |
+#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
+#  |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________|
+#  |    4    |    5    |    6    |    ,    |
+#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
+#  |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_|
+#  |    1    |    2    |    3    |         |
+#  |   $Oq   |   $Or   |   $Os   |  enter  |
+#  |_ka1__K1_|_kb2__K2_|_ka3__K3_|  $OM    |
+#  |         0         |   .     |         |
+#  |        $Op        |  $On    |         |
+#  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
+#
+# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the
+# terminfo guidelines.  That is a compromise used to assign the remaining
+# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
+# support:
+vt100+keypad|dec vt100 numeric keypad no fkeys,
+	ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn,
+vt100+pfkeys|dec vt100 numeric keypad,
+	kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	use=vt100+keypad,
+vt100+fnkeys|dec vt100 numeric keypad,
+	kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl,
+	kf9=\EOw, use=vt100+pfkeys,
+#
+# A better adaptation to modern keyboards such as the PC's, which have a dozen
+# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
+# use the 5-key arrangement to model the arrow keys as suggested in the
+# terminfo guidelines:
+#   _______________________________________
+#  |   PF1   |   PF2   |   PF3   |   PF4   |
+#  |   $OP   |   $OQ   |   $OR   |   $OS   |
+#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+#  |    7         8         9         -    |
+#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
+#  |_ka1__K1_|_________|_ka3__K3_|_________|
+#  |    4    |    5    |    6    |    ,    |
+#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
+#  |_________|_kb2__K2_|_________|_________|
+#  |    1    |    2    |    3    |         |
+#  |   $Oq   |   $Or   |   $Os   |  enter  |
+#  |_kc1__K4_|_________|_kc3__K5_|  $OM    |
+#  |         0         |   .     |         |
+#  |        $Op        |  $On    |         |
+#  |___________________|_________|_kent_@8_|
+#
+vt220+keypad|dec vt220 numeric keypad,
+	ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt,
+	kb3=\EOv, kc2=\EOr,
+#
+vt100+enq|ncurses extension for vt100-style ENQ,
+	u8=\E[?1;2c, use=ansi+enq,
+vt102+enq|ncurses extension for vt102-style ENQ,
+	u8=\E[?6c, use=ansi+enq,
+#
+# And here, for those of you with orphaned VT100s lacking documentation, is
+# a description of the soft switches invoked when you do `Set Up'.
+#
+#  Scroll 0-Jump               Shifted 3   0-#
+#  |      1-Smooth             |           1-British pound sign
+#  | Autorepeat 0-Off          | Wrap Around 0-Off
+#  | |          1-On           | |           1-On
+#  | | Screen 0-Dark Bkg       | | New Line 0-Off
+#  | | |      1-Light Bkg      | | |        1-On
+#  | | | Cursor 0-Underline    | | | Interlace 0-Off
+#  | | | |      1-Block        | | | |         1-On
+#  | | | |                     | | | |
+#  1 1 0 1       1 1 1 1       0 1 0 0       0 0 1 0       <--Standard Settings
+#                | | | |                     | | | |
+#                | | | Auto XON/XOFF 0-Off   | | | Power 0-60 Hz
+#                | | |               1-On    | | |       1-50 Hz
+#                | | Ansi/VT52 0-VT52        | | Bits Per Char. 0-7 Bits
+#                | |           1-ANSI        | |                1-8 Bits
+#                | Keyclick 0-Off            | Parity 0-Off
+#                |          1-On             |        1-On
+#                Margin Bell 0-Off           Parity Sense 0-Odd
+#                            1-On                         1-Even
+#
+# The following SET-UP modes are assumed for normal operation:
+#	ANSI_MODE	AUTO_XON/XOFF_ON	NEWLINE_OFF	80_COLUMNS
+#	WRAP_AROUND_ON  JUMP_SCROLL_OFF
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements; I recommend
+#	AUTOREPEAT_ON	BLOCK_CURSOR	MARGIN_BELL_OFF    SHIFTED_3_#
+# Unless you have a graphics add-on such as Digital Engineering's VT640
+# (and even then, whenever it can be arranged!) you should set
+#	INTERLACE_OFF
+#
+# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
+vt100|vt100-am|dec vt100 (w/advanced video),
+	OTbs, am, mc5i, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
+	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1,
+	lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
+	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+	use=vt100+fnkeys,
+vt100nam|vt100-nam|vt100 no automargins,
+	am@, xenl@, use=vt100-am,
+vt100-vb|dec vt100 (w/advanced video) & no beep,
+	bel@, flash=\E[?5h\E[?5l, use=vt100,
+
+# Ordinary vt100 in 132 column ("wide") mode.
+vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video),
+	cols#132, lines#24,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am,
+vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin),
+	cols#132, lines#14, vt@,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam,
+
+# vt100 with no advanced video.
+vt100-nav|vt100 without advanced video option,
+	xmc#1,
+	blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m,
+	smul@, use=vt100,
+vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option),
+	cols#132, lines#14, use=vt100-nav,
+
+# vt100 with one of the 24 lines used as a status line.
+# We put the status line on the top.
+vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline,
+	eslok, hs,
+	lines#23,
+	clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr,
+	cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8,
+	fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8,
+	tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am,
+
+# Status line at bottom.
+# Clearing the screen will clobber status line.
+vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline,
+	eslok, hs,
+	lines#23,
+	dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H,
+	tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am,
+
+# Most of the `vt100' emulators out there actually emulate a vt102
+# This entry (or vt102-nsgr) is probably the right thing to use for
+# these.
+vt102|dec vt102,
+	dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h,
+	use=vt100,
+vt102-w|dec vt102 in wide mode,
+	cols#132,
+	rs3=\E[?3h, use=vt102,
+
+# Many brain-dead PC comm programs that pretend to be `vt100-compatible'
+# fail to interpret the ^O and ^N escapes properly.  Symptom: the <sgr0>
+# string in the canonical vt100 entry above leaves the screen littered
+# with little  snowflake or star characters (IBM PC ROM character \017 = ^O)
+# after highlight turnoffs.  This entry should fix that, and even leave
+# ACS support working, at the cost of making multiple-highlight changes
+# slightly more expensive.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
+vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes),
+	sgr@, sgr0=\E[m, use=vt102,
+
+# VT125 Graphics CRT.  Clear screen also erases graphics
+# Some vt125's came configured with vt102 support.
+vt125|vt125 graphics terminal,
+	mir,
+	clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100,
+
+# This isn't a DEC entry, it came from University of Wisconsin.
+# (vt131: I added <rmam>/<smam> based on the init string, also <OTbs> -- esr)
+vt131|dec vt131,
+	OTbs, am, xenl,
+	cols#80, it#8, lines#24, vt#3,
+	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+	clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C$<2/>,
+	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
+	ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
+	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, nel=^M^J, rc=\E8, rev=\E[7m$<2/>, ri=\EM$<5/>,
+	rmam=\E[?7h, rmkx=\E[?1l\E>, rmso=\E[m$<2/>,
+	rmul=\E[m$<2/>,
+	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+
+# vt132 - like vt100 but slower and has ins/del line and such.
+# I'm told that <smir>/<rmir> are backwards in the terminal from the
+# manual and from the ANSI standard, this describes the actual
+# terminal. I've never actually used a vt132 myself, so this
+# is untested.
+#
+vt132|DEC vt132,
+	xenl,
+	dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
+	ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100,
+
+# This vt220 description maps F5--F9 to the second block of function keys
+# at the top of the keyboard.  The "DO" key is used as F10 to avoid conflict
+# with the key marked (ESC) on the vt220.  See vt220d for an alternate mapping.
+# PF1--PF4 are used as F1--F4.
+#
+vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
+	OTbs, OTpt, am, mir, xenl, xon,
+	cols#80, lines#24, vt#3,
+	OTnl=^J,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l,
+	clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
+	if=/usr/local/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>,
+	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\EOP,
+	kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
+	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~,
+	khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rc=\E8,
+	rev=\E[7m$<2>, rf=/usr/local/share/tabset/vt100,
+	ri=\EM$<14/>, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+	rmso=\E[27m, rmul=\E[24m,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m,
+
+# A much better description of the VT200/220; used to be vt220-8
+# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1
+# designation to accommodate bug in pcvt -TD
+vt220|vt200|dec vt220,
+	OTbs, am, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+	flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, if=/usr/local/share/tabset/vt100,
+	il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	is2=\E[?7h\E[>\E[?1h\E F\E[?4l, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
+	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
+	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, mc4=\E[4i,
+	mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
+	rmul=\E[24m, rs1=\E[?3l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+vt220-w|vt200-w|DEC vt220 in wide mode,
+	cols#132,
+	rs3=\E[?3h, use=vt220,
+vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode,
+	OTbs, am, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=^M,
+	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
+	cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C,
+	cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A,
+	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
+	ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0,
+	flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH,
+	ich=\233%p1%d@, if=/usr/local/share/tabset/vt100,
+	il=\233%p1%dL, il1=\233L, ind=\ED,
+	is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H,
+	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
+	kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
+	kf13=\23325~, kf14=\23326~, kf17=\23331~, kf18=\23332~,
+	kf19=\23333~, kf2=\EOQ, kf20=\23334~, kf3=\EOR, kf4=\EOS,
+	kf6=\23317~, kf7=\23318~, kf8=\23319~, kf9=\23320~,
+	kfnd=\2331~, khlp=\23328~, khome=\233H, kich1=\2332~,
+	knp=\2336~, kpp=\2335~, krdo=\23329~, kslt=\2334~, lf1=pf1,
+	lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i,
+	nel=\EE, rc=\E8, rev=\2337m, ri=\EM, rmacs=\E(B,
+	rmam=\233?7l, rmir=\2334l, rmso=\23327m, rmul=\23324m,
+	rs1=\233?3l, sc=\E7,
+	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, smir=\2334h,
+	smso=\2337m, smul=\2334m, tbc=\2333g,
+
+# vt220d:
+# This vt220 description regards F6--F10 as the second block of function keys
+# at the top of the keyboard.  This mapping follows the description given
+# in the VT220 Programmer Reference Manual and agrees with the labeling
+# on some terminals that emulate the vt220.  There is no support for an F5.
+# See vt220 for an alternate mapping.
+#
+vt220d|DEC VT220 in vt100 mode with DEC function key labeling,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf5@, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old,
+
+vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
+	am@,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
+
+# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko
+# (not an official DEC entry!)
+# The problem with real vt220 terminals is they don't send escapes when in
+# in vt220 mode.  This can be gotten around two ways.  1> don't send
+# escapes or 2> put the vt220 into vt100 mode and use all the nifty
+# features of vt100 advanced video which it then has.
+#
+# This entry takes the view of putting a vt220 into vt100 mode so
+# you can use the escape key in emacs and everything else which needs it.
+#
+# You probably don't want to use this on a VMS machine since VMS will think
+# it has a vt220 and will get fouled up coming out of emacs
+#
+# From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996
+# (Added vt100 <rc>,<sc> to quiet a tic warning -- esr)
+vt200-js|vt220-js|dec vt200 series with jump scroll,
+	am,
+	cols#80,
+	bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	il1=\E[L, ind=\ED,
+	is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, rc=\E8,
+	rf=/usr/local/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m,
+	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=,
+	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
+
+# This was DEC's vt320.  Use the purpose-built one below instead
+#vt320|DEC VT320 in vt100 emulation mode,
+#	use=vt220,
+
+# Use v320n for SCO's LYRIX.  Otherwise, use Adam Thompson's vt320-nam.
+#
+vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
+	am@,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
+
+# These entries are not DEC's official ones, they were purpose-built for the
+# VT320.  Here are the designer's notes:
+# <kel> is end on a PC kbd.  Actually 'select' on a VT.  Mapped to
+# 'Erase to End of Field'... since nothing seems to use 'end' anyways...
+# khome is Home on a PC kbd.  Actually 'FIND' on a VT.
+# Things that use <knxt> usually use tab anyways... and things that don't use
+# tab usually use <knxt> instead...
+# kprv is same as tab - Backtab is useless...
+# I left out <sgr> because of its RIDICULOUS complexity,
+# and the resulting fact that it causes the termcap translation of the entry
+# to SMASH the 1k-barrier...
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+# (vt320: uncommented <fsl> --esr)
+vt320|vt300|dec vt320 7 bit terminal,
+	am, eslok, hs, mir, msgr, xenl,
+	cols#80, lines#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$},
+	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
+	il1=\E[L, ind=\ED,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+	kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I,
+	kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i,
+	mc5=\E[?5i, nel=\EE, rc=\E8, rev=\E[7m,
+	rf=/usr/local/share/tabset/vt300, ri=\EM, rmacs=\E(B,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
+	rmul=\E[m,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[1$}\E[H\E[K, use=vt220+keypad,
+vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
+	am@,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
+	use=vt320,
+# We have to init 132-col mode, not 80-col mode.
+vt320-w|vt300-w|dec vt320 wide 7 bit terminal,
+	cols#132, wsl#132,
+	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	use=vt320,
+vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am,
+	am@,
+	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
+	use=vt320-w,
+
+# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals
+#   which are pretty much a superset of the VT320.  They have the
+#   host writable status line, yet another different DRCS matrix size,
+#   and such, but they add the DEC Technical character set, Multiple text
+#   pages, selectable length pages, and the like.  The difference between
+#   the vt330 and vt340 is that the latter has only 2 planes and a monochrome
+#   monitor, the former has 4 planes and a color monitor.  These terminals
+#   support VT131 and ANSI block mode, but as with much of these things,
+#   termcap/terminfo doesn't deal with these features.
+#
+# Note that this entry is are set up in what was the standard way for GNU
+# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
+# keys were switched into application mode at the same time the numeric pad
+# is switched into application mode.  This changes the definitions of the
+# arrow keys.  Emacs v19 is smarter and mines its keys directly out of
+# your termcap or terminfo entry,
+#
+# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
+# (vt340: string capability "sb=\E[M" corrected to "sr";
+# also, added <rmam>/<smam> based on the init string -- esr)
+vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
+	cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, dsl=\E[2$~\r\E[1$}\E[K\E[$},
+	ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
+	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL,
+	il1=\E[L, ind=\ED,
+	is2=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
+	lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+	rf=/usr/local/share/tabset/vt300, ri=\EM, rmacs=\E(B,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+	rmul=\E[24m, rs1=\E[?3l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[2$~\E[1$}\E[1;%dH,
+
+# DEC doesn't supply a vt400 description, so we add Daniel Glasser's
+# (originally written with vt420 as its primary name, and usable for it).
+#
+# VT400/420 -- This terminal is a superset of the vt320.  It adds the multiple
+#    text pages and long text pages with selectable length of the vt340, along
+#    with left and right margins, rectangular area text copy, fill, and erase
+#    operations, selected region character attribute change operations,
+#    page memory and rectangle checksums, insert/delete column, reception
+#    macros, and other features too numerous to remember right now.  TERMCAP
+#    can only take advantage of a few of these added features.
+#
+# Note that this entry is are set up in what was the standard way for GNU
+# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
+# keys were switched into application mode at the same time the numeric pad
+# is switched into application mode.  This changes the definitions of the
+# arrow keys.  Emacs v19 is smarter and mines its keys directly out of
+# your termcap entry,
+#
+# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
+# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:";
+# also, added <rmam>/<smam> based on the init string -- esr)
+vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
+	el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$},
+	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	is2=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
+	lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+	rf=/usr/local/share/tabset/vt300, ri=\EM, rmacs=\E(B,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+	rmul=\E[24m, rs1=\E<\E[?3l\E[!p\E[?7h, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[2$~\E[1$}\E[1;%dH,
+
+# (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
+# a missing <sc> -- esr)
+vt420|DEC VT420,
+	am, mir, xenl, xon,
+	cols#80, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
+	if=/usr/local/share/tabset/vt300, il1=\E[L, ind=\ED,
+	is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
+	kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	kslt=\E[4~, rc=\E8, rev=\E[7m$<2>,
+	rf=/usr/local/share/tabset/vt300, ri=\EM, rmacs=\E(B$<4>,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
+	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+	smkx=\E=, smso=\E[7m, smul=\E[4m,
+
+# DEC VT220 and up support DECUDK (user-defined keys).  DECUDK (i.e., pfx)
+# takes two parameters, the key and the string.  Translating the key is
+# straightforward (keys 1-5 are not defined on real terminals, though some
+# emulators define these):
+#
+#               if (key < 16) then  value = key;
+#               else if (key < 21) then value = key + 1;
+#               else if (key < 25) then value = key + 2;
+#               else if (key < 27) then value = key + 3;
+#               else if (key < 30) then value = key + 4;
+#               else value = key + 5;
+#
+# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT".
+# There's no provision in terminfo for emitting a string in this format, so the
+# application has to know it.
+#
+vt420pc|DEC VT420 w/PC keyboard,
+	kdch1=\177, kend=\E[4~, kf1=\E[11~, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[11;2~, kf14=\E[12;2~,
+	kf15=\E[13;2~, kf16=\E[14;2~, kf17=\E[15;2~,
+	kf18=\E[17;2~, kf19=\E[18;2~, kf2=\E[12~, kf20=\E[19;2~,
+	kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
+	kf24=\E[24;2~, kf25=\E[23~, kf26=\E[24~, kf27=\E[25~,
+	kf28=\E[26~, kf29=\E[28~, kf3=\E[13~, kf30=\E[29~,
+	kf31=\E[31~, kf32=\E[32~, kf33=\E[33~, kf34=\E[34~,
+	kf35=\E[35~, kf36=\E[36~, kf37=\E[23;2~, kf38=\E[24;2~,
+	kf39=\E[25;2~, kf4=\E[14~, kf40=\E[26;2~, kf41=\E[28;2~,
+	kf42=\E[29;2~, kf43=\E[31;2~, kf44=\E[32;2~,
+	kf45=\E[33;2~, kf46=\E[34;2~, kf47=\E[35;2~,
+	kf48=\E[36;2~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+	pctrm=USR_TERM\:vt420pcdos\:,
+	pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
+	use=vt420,
+
+vt420pcdos|DEC VT420 w/PC for DOS Merge,
+	lines#25,
+	dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1%{127}%=%t\E\177%e%p1%c%;,
+	pctrm@,
+	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@,
+	sgr0=\E[m, smsc=\E[?1;2r\E[34h, use=vt420pc,
+
+vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys,
+	kdch1=\177, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[H, lf1=\EOP, lf2=\EOQ, lf3=\EOR, lf4=\EOS,
+	use=vt420,
+
+vt510|DEC VT510,
+	use=vt420,
+vt510pc|DEC VT510 w/PC keyboard,
+	use=vt420pc,
+vt510pcdos|DEC VT510 w/PC for DOS Merge,
+	use=vt420pcdos,
+
+# VT520/VT525
+#
+# The VT520 is a monochrome text terminal capable of managing up to
+# four independent sessions in the terminal.  It has multiple ANSI
+# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console)
+# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950,
+# 925 910+, ADDS A2).  This terminfo data is for the ANSI emulations only.
+#
+# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or
+# [Alt]/[Print Screen] depending upon which keyboard and which
+# terminal mode is being used.  If Set-Up has been disabled or
+# assigned to an unknown key, Set-Up may be entered by pressing
+# [F3] as the first key after power up, regardless of keyboard type.
+# (vt520: I added <rmam>/<smam> based on the init string, also <sc> -- esr)
+vt520|DEC VT520,
+	am, mir, xenl, xon,
+	cols#80, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
+	if=/usr/local/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/local/share/tabset/vt300,
+	ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m,
+
+# (vt525: I added <rmam>/<smam> based on the init string;
+# removed <rmso>=\E[m, <rmul>=\E[m, added <sc> -- esr)
+vt525|DEC VT525,
+	am, mir, xenl, xon,
+	cols#80, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
+	if=/usr/local/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/local/share/tabset/vt300,
+	ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+	rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
+	sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m,
+
+#### VT100 emulations
+#
+
+# John Hawkinson <jhawk@MIT.EDU> tells us that the EWAN telnet for Windows
+# (the best Windows telnet as of September 1995) presents the name `dec-vt100'
+# to telnetd.   Michael Deutschmann <ldeutsch@mail.netshop.net> informs us
+# that this works best with a stock vt100 entry.
+dec-vt100|EWAN telnet's vt100 emulation,
+	use=vt100,
+
+# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996
+dec-vt220|DOS tnvt200 terminal emulator,
+	am@, use=vt220,
+
+# Zstem340 is an (IMHO) excellent VT emulator for PC's.  I recommend it to
+# anyone who needs PC VT340 emulation. (or anything below that level, for
+# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's
+# RDBM systems, it includes ReGIS and SiXel support!  I'm impressed...
+# I can send the address if requested.
+# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+z340|zstem vt340 terminal emulator 132col 42line,
+	lines#42,
+	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H,
+	use=vt320-w,
+z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins),
+	am@,
+	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H,
+	use=z340,
+
+# CRT is shareware.  It implements some xterm features, including mouse.
+crt|crt-vt220|CRT 2.3 emulating VT220,
+	bce, msgr,
+	ncv@,
+	hts=\EH, use=vt100+enq, use=vt220, use=ecma+color,
+
+# PuTTY 0.55 (released 3 August 2004)
+# http://www.chiark.greenend.org.uk/~sgtatham/putty/
+#
+# Comparing with 0.51, vttest is much better (only a few problems with the
+# cursor position reports and wrapping).
+#
+# PuTTY 0.51 (released 14 December 2000)
+#
+# This emulates vt100 + vt52 (plus a few vt220 features:  ech, SRM, DECTCEM, as
+# well as SCO and Atari, color palettes from Linux console).  Reading the code,
+# it is intended to be VT102 plus selected features.  By default, it sets $TERM
+# to xterm, which is incorrect, since several features are misimplemented:
+#
+#	Alt+key always sends ESC+key, so 'km' capability is removed.
+#
+#	Control responses, wrapping and tabs are buggy, failing a couple of
+#	screens in vttest.
+#
+#	xterm mouse support is not implemented (unrelease version may).
+#
+# Several features such as backspace/delete are optional; this entry documents
+# the default behavior -TD
+
+putty|PuTTY terminal emulator,
+	am, bce, bw, ccc, hs, mir, msgr, xenl, xon,
+	colors#8, it#8, ncv#22, pairs#64,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+	dch=\E[%p1%dP, dch1=\E[P,
+	dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;,
+	dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX,
+	ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+	flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG,
+	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	indn=\E[%p1%dS,
+	initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
+	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
+	kb2=\E[G, kbs=\177, kcan=^C, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+	kend=\E[4~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	kspd=^Z, nel=^M^J, oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m,
+	ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l,
+	rmcup=\E[2J\E[?47l, rmir=\E[4l, rmpch=\E[10m,
+	rmso=\E[27m, rmul=\E[24m,
+	rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
+	s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[?47h,
+	smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq,
+vt100-putty|Reset PuTTY to pure vt100,
+	rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
+	use=vt100,
+# palette is hardcoded...
+putty-256color|PuTTY 0.58 with xterm 256-colors,
+	initc@, use=xterm+256color, use=putty,
+
+# One of the keyboard selections is "VT100+".
+# pterm (the X11 port) uses shifted F1-F10 as F11-F20
+putty-vt100|VT100+ keyboard layout,
+	kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EO[, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+	kf9=\EOX, use=putty,
+
+# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by
+# T. Teranishi dated Mar 10, 1998.  It is a free software terminal emulator
+# (communication program) which supports:
+#
+#	- Serial port connections.
+#	- TCP/IP (telnet) connections.
+#	- VT100 emulation, and selected VT200/300 emulation.
+#	- TEK4010 emulation.
+#	- File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and
+#	  Quick-VAN).
+#	- Scripts using the "Tera Term Language".
+#	- Japanese and Russian character sets.
+#
+# The program does not come with terminfo or termcap entries.  However, the
+# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no
+# vt52 or doublesize character support; blinking is done with color).  Besides
+# the HPA, VPA extensions it also implements CPL and CNL.
+#
+# All of the function keys can be remapped.  This description shows the default
+# mapping, as installed.  Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys
+# are supported.  F13-F20 are obtained by shifting F3-F10.  The editing keypad
+# is laid out like vt220, rather than the face codes on the PC keyboard, i.e,
+#	kfnd	Insert
+#	kslt	Delete
+#	kich1	Home
+#	kdch1	PageUp
+#	kpp	End
+#	knp	PageDown
+#
+# ANSI colors are implemented, but cannot be combined with video attributes
+# except for reverse.
+#
+# No fonts are supplied with the program, so the acsc string is chosen to
+# correspond with the default Microsoft terminal font.
+#
+# Tera Term recognizes some xterm sequences, including those for setting and
+# retrieving the window title, and for setting the window size (i.e., using
+# "resize -s"), though it does not pass SIGWINCH to the application if the
+# user resizes the window with the mouse.
+teraterm2.3|Tera Term Pro,
+	km, xon@,
+	ncv#43, vt@,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
+	cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+	flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG,
+	il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
+	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~,
+	kpp=\E[5~, kslt=\E[4~, op=\E[100m, rev=\E[7m, ri=\EM,
+	rmso=\E[27m, rmul=\E[24m, sgr0=\E[0m\017, smso=\E[7m,
+	smul=\E[4m, vpa=\E[%i%p1%dd, use=vt100+enq,
+	use=klone+color, use=vt100,
+
+# Version 4.59 has regular vt100 line-drawing (so it is no longer necessary
+# to choose a Windows OEM font).
+#
+# Testing with tack:
+#	- it does not have xenl (suppress that)
+#	- underline seems to work with color (modify ncv).
+# Testing with vttest:
+#	- wrapping differs from vt100 (menu 1).
+#	- it recognizes xterm's X10 and normal mouse tracking, but none of the
+#	  other flavors.
+#	- it recognizes the dtterm window controls for reporting size in
+#	  characters and pixels.
+#	- it passes SIGWINCH.
+teraterm4.59|Tera Term Pro,
+	bce, xenl@,
+	ncv#41,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	kmous=\E[M, use=teraterm2.3,
+
+teraterm|Tera Term,
+	use=teraterm4.59,
+
+# Tested with WinNT 4.0, the telnet application assumes the screensize is
+# 25x80.  This entry uses the 'Terminal' font, to get line-drawing characters.
+#
+# Other notes:
+# a) Fails tack's cup (cursor-addressing) test, though cup works well enough
+#    for casual (occasional) use.  Also fails several of the vttest screens,
+#    but that is not unusual for vt100 "emulators".
+# b) Does not implement vt100 keypad
+# c) Recognizes a subset of vt52 controls.
+ms-vt100|MS telnet imitating dec vt100,
+	lines#25,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@,
+	kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100,
+
+# Tested with Windows 2000, the telnet application runs in a console window,
+# also using 'Terminal' font.
+#
+# Other notes:
+# a) This version has no function keys or numeric keypad.  Unlike the older
+#    version, the numeric keypad is entirely ignored.
+# b) The program sets $TERM to "ansi", which of course is inaccurate.
+ms-vt100-color|vtnt|windows 2000 ansi (sic),
+	bce,
+	dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color,
+	use=ms-vt100,
+
+# Based on comments from Federico Bianchi:
+#
+#	vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different
+#	scheme for PF keys.
+#
+# and PuTTY wishlist:
+#
+#	The modifiers are represented as the codes listed above, prefixed to
+#	the normal sequences.  If the modifier is pressed alone, its sequence
+#	is transmitted twice in succession.  If multiple modifiers apply,
+#	they're transmitted in the order shift, control, alt.
+#
+#	Shift	\E^S
+#	Alt	\E^A,
+#	Ctrl	\E^C,
+ms-vt100+|vt100+|windows XP vt100+ (sic),
+	kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@,
+	kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3,
+	kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6,
+	kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9,
+	kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@,
+	kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3,
+	kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6,
+	kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9,
+	kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@,
+	kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4,
+	kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6,
+	kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9,
+	kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5,
+	kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+,
+	knp=\E/, kpp=\E?, use=ms-vt100-color,
+
+ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+,
+	use=ms-vt100+,
+
+# a minimal subset of a vt100 (compare with "news-unk).
+tt|tkterm|Don Libes' tk text widget terminal emulator,
+	clear=\E[H\E[J, cr=^M, cuf1=\E[C, cup=\E[%p1%d;%p2%dH,
+	cuu1=\E[A, ind=^J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, rmso=\E[m,
+	smso=\E[7m,
+
+#### X terminal emulators
+#
+# You can add the following line to your .Xdefaults to change the terminal type
+# set by the xterms you start up to my-xterm:
+#
+# *termName:  my-xterm
+#
+# System administrators can change the default entry for xterm instances
+# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm.  In either
+# case, xterm will detect and reject an invalid terminal type, falling back
+# to the default of xterm.
+#
+
+# X10/6.6	11/7/86, minus alternate screen, plus (csr)
+# (xterm: ":MT:" changed to ":km:"; added <smam>/<rmam> based on init string;
+# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
+# as these seem not to work -- esr)
+x10term|vs100-x10|xterm terminal emulator (X10 window system),
+	OTbs, am, km, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#65,
+	bold=\E[1m, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l,
+	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
+	smso=\E[7m, smul=\E[4m,
+# Compatible with the R5 xterm
+# (from the XFree86 3.2 distribution, <blink=@> removed)
+# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD
+# corrected typos in rs2 string - TD
+# added u6-u9 -TD
+xterm-r5|xterm R5 version,
+	OTbs, am, km, msgr, xenl,
+	cols#80, it#8, lines#24,
+	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~,
+	kdl1=\E[31~, kel=\E[8~, kend=\E[4~, kf0=\EOq, kf1=\E[11~,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
+	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
+	kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8,
+	rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
+	rmul=\E[m,
+	rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
+	sc=\E7,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+	sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, use=vt100+enq,
+# Compatible with the R6 xterm
+# (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
+# added khome/kend, hts based on the R6 xterm code - TD
+# (khome/kend do not actually work in X11R5 or X11R6, but many people use this
+# for compatibility with other emulators).
+xterm-r6|xterm-old|xterm X11R6 version,
+	OTbs, am, km, mir, msgr, xenl,
+	cols#80, it#8, lines#24,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
+	il1=\E[L, ind=^J,
+	is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7,
+	sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	use=vt100+enq,
+# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up.
+# The name has been changed and some aliases have been removed.
+xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
+	OTbs, am, bce, km, mir, msgr, xenl,
+	cols#80, it#8, lines#24, ncv@,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=^J,
+	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
+	kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, kdch1=\177, kend=\EOF, kf1=\E[11~, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~,
+	kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+	kf9=\E[20~, kfnd=\E[1~, khome=\EOH, kich1=\E[2~,
+	kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El,
+	memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
+	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
+	rmso=\E[27m, rmul=\E[24m, rs1=^O,
+	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7,
+	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
+	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq,
+	use=ecma+color, use=vt220+keypad,
+
+# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
+# codes for F1-F4 except while in VT220 mode.
+xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32,
+
+# This version was released in XFree86 3.3.3 (November 1998).
+# Besides providing printer support, it exploits a new feature that allows
+# xterm to use terminfo-based descriptions with the titeInhibit resource.
+# -- the distribution contained incorrect khome/kend values -TD
+xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
+	mc5i,
+	blink=\E[5m, ich1@, invis=\E[8m,
+	is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
+	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l,
+	rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33,
+
+# This version was released in XFree86 4.0.
+xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
+	npc,
+	kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~,
+	kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@,
+	ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF,
+	kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
+	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
+	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
+	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
+	kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~,
+	kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
+	kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P,
+	kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~,
+	kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
+	kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
+	kf48=\E[24;6~, khome=\EOH, rmcup=\E[?1049l,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	smcup=\E[?1049h, use=xterm-xf86-v333,
+
+# This version was released in XFree86 4.3.
+xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System),
+	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
+	kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
+	kbeg@,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	use=xterm-xf86-v40,
+
+# This version was released in XFree86 4.4.
+xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
+	cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, indn=\E[%p1%dS,
+	rin=\E[%p1%dT, use=xterm-xf86-v43,
+
+xterm-xfree86|xterm terminal emulator (XFree86),
+	use=xterm-xf86-v44,
+
+# This version reflects the current xterm features.
+xterm-new|modern xterm terminal emulator,
+	npc,
+	indn=\E[%p1%dS, kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H,
+	kIC=\E[2;2~, kNXT=\E[6;2~, kPRV=\E[5;2~, kb2=\EOE,
+	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kend=\EOF, kent=\EOM, khome=\EOH, kich1=\E[2~, kmous=\E[M,
+	knp=\E[6~, kpp=\E[5~, rin=\E[%p1%dT, use=xterm+pcfkeys,
+	use=xterm-basic,
+#
+# This fragment describes as much of XFree86 xterm's "pc-style" function
+# keys as will fit into terminfo's 60 function keys.
+# From ctlseqs.ms:
+#    Code     Modifiers
+#  ---------------------------------
+#     2       Shift
+#     3       Alt
+#     4       Shift + Alt
+#     5       Control
+#     6       Shift + Control
+#     7       Alt + Control
+#     8       Shift + Alt + Control
+#  ---------------------------------
+# The meta key may also be used as a modifier in this scheme, adding another
+# bit to the parameter.
+xterm+pcfkeys|fragment for PC-style fkeys,
+	use=xterm+app, use=xterm+pcf2, use=xterm+pcc2,
+	use=xterm+pce2,
+#
+xterm+noapp|fragment with cursor keys in normal mode,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F,
+	khome=\E[H,
+
+xterm+app|fragment with cursor keys in application mode,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF,
+	khome=\EOH,
+#
+# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
+# and revised in patch #167 (2002/8/24).  Some other terminal emulators copied
+# the earlier scheme, as noted in the "use=" clauses in this file.
+#
+# The original assignments from patch #94 for cursor-keys had some technical
+# issues:
+#
+#	A parameter for a function-key to represent a modifier is just more
+#	bits.  But for a cursor-key it may change the behavior of the
+#	application.  For instance, emacs decodes the first parameter of a
+#	cursor-key as a repeat count.
+#
+#	A parameterized string should (really) not begin with SS3 (\EO).
+#	Rather, CSI (\E[) should be used.
+#
+# For these reasons, the original assignments were deprecated.  For
+# compatibility reasons, they are still available as a setting of xterm's
+# modifyCursorKeys resource.  These fragments list the modified cursor-keys
+# that might apply to xterm+pcfkeys with different values of that resource.
+xterm+pcc3|fragment with modifyCursorKeys:3,
+	kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B,
+	kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B,
+	kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B,
+	kLFT3=\E[>1;3D, kLFT4=\E[>1;4D, kLFT5=\E[>1;5D,
+	kLFT6=\E[>1;6D, kLFT7=\E[>1;7D, kRIT3=\E[>1;3C,
+	kRIT4=\E[>1;4C, kRIT5=\E[>1;5C, kRIT6=\E[>1;6C,
+	kRIT7=\E[>1;7C, kUP=\E[>1;2A, kUP3=\E[>1;3A,
+	kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A,
+	kUP7=\E[>1;7A,
+
+xterm+pcc2|fragment with modifyCursorKeys:2,
+	kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A,
+	kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B,
+	kDN6=\E[1;6B, kDN7=\E[1;7B, kLFT3=\E[1;3D, kLFT4=\E[1;4D,
+	kLFT5=\E[1;5D, kLFT6=\E[1;6D, kLFT7=\E[1;7D,
+	kRIT3=\E[1;3C, kRIT4=\E[1;4C, kRIT5=\E[1;5C,
+	kRIT6=\E[1;6C, kRIT7=\E[1;7C, kUP=\E[1;2A, kUP3=\E[1;3A,
+	kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A,
+
+xterm+pcc1|fragment with modifyCursorKeys:1,
+	kLFT=\E[2D, kRIT=\E[2C, kind=\E[2B, kri=\E[2A, kDN=\E[2B,
+	kDN3=\E[3B, kDN4=\E[4B, kDN5=\E[5B, kDN6=\E[6B, kDN7=\E[7B,
+	kLFT3=\E[3D, kLFT4=\E[4D, kLFT5=\E[5D, kLFT6=\E[6D,
+	kLFT7=\E[7D, kRIT3=\E[3C, kRIT4=\E[4C, kRIT5=\E[5C,
+	kRIT6=\E[6C, kRIT7=\E[7C, kUP=\E[2A, kUP3=\E[3A,
+	kUP4=\E[4A, kUP5=\E[5A, kUP6=\E[6A, kUP7=\E[7A,
+
+xterm+pcc0|fragment with modifyCursorKeys:0,
+	kLFT=\EO2D, kRIT=\EO2C, kind=\EO2B, kri=\EO2A, kDN=\EO2B,
+	kDN3=\EO3B, kDN4=\EO4B, kDN5=\EO5B, kDN6=\EO6B, kDN7=\EO7B,
+	kLFT3=\EO3D, kLFT4=\EO4D, kLFT5=\EO5D, kLFT6=\EO6D,
+	kLFT7=\EO7D, kRIT3=\EO3C, kRIT4=\EO4C, kRIT5=\EO5C,
+	kRIT6=\EO6C, kRIT7=\EO7C, kUP=\EO2A, kUP3=\EO3A,
+	kUP4=\EO4A, kUP5=\EO5A, kUP6=\EO6A, kUP7=\EO7A,
+
+#
+# Here are corresponding fragments from xterm patch #216:
+#
+xterm+pcf0|fragment with modifyFunctionKeys:0,
+	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
+	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
+	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
+	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
+	kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf3=\EOR,
+	kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
+	kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
+	kf36=\E[24;5~, kf37=\EO6P, kf38=\EO6Q, kf39=\EO6R,
+	kf4=\EOS, kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~,
+	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
+	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, kf49=\EO3P,
+	kf5=\E[15~, kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S,
+	kf53=\E[15;3~, kf54=\E[17;3~, kf55=\E[18;3~,
+	kf56=\E[19;3~, kf57=\E[20;3~, kf58=\E[21;3~,
+	kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P,
+	kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+#
+xterm+pcf2|fragment with modifyFunctionKeys:2,
+	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
+	kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
+	kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
+	kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
+	kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
+	kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
+	kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
+	kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
+	kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
+	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
+	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
+	kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
+	kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
+	kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
+	kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
+	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~,
+#
+# Chunks from xterm #230:
+xterm+pce2|fragment with modifyCursorKeys:2,
+	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
+	kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~,
+	kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~,
+	kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F,
+	kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F,
+	kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H,
+	kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~,
+	kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~,
+	kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~,
+	kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~,
+	kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~,
+	use=xterm+edit,
+
+xterm+edit|fragment for 6-key editing-keypad,
+	kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	use=xterm+pc+edit,
+
+xterm+pc+edit|fragment for pc-style editing keypad,
+	kend=\E[4~, khome=\E[1~,
+
+xterm+vt+edit|fragment for vt220-style editing keypad,
+	kfnd=\E[1~, kslt=\E[4~,
+
+#
+# Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
+# Alternatively, the same scheme with old-style function keys as in xterm-r6
+# is shown here (because that is used in mrxvt and mlterm):
+xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2,
+	kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~,
+	kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~,
+	kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~,
+	kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~,
+	kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~,
+	kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~,
+	kf63=\E[13;4~, use=xterm+pcf2,
+#
+# This chunk is used for building the VT220/Sun/PC keyboard variants.
+xterm-basic|modern xterm terminal emulator - common,
+	OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX,
+	colors#8, cols#80, it#8, lines#24, pairs#64,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+	flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+	ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^H,
+	kmous=\E[M, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
+	memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
+	rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
+	smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq,
+
+# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
+# In retrospect, something like xterm-r6 was intended here -TD
+xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1,
+	rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33,
+
+# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
+xterm-16color|xterm with 16 colors like aixterm,
+	use=ibm+16color, use=xterm-new,
+
+# This is a compile-time feature of XFree86 xterm beginning with
+# patch #111 (1999/7/10) -TD
+xterm+256color|xterm 256-color feature,
+	ccc,
+	colors#256, pairs#32767,
+	initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
+	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
+	setb@, setf@,
+
+# This is a compile-time feature of XFree86 xterm beginning with
+# patch #115 (1999/9/18) -TD
+#
+# Note that the escape sequences used are the same as for 256-colors - xterm
+# has a different table of default color resource values.  If built for
+# 256-colors, it can still handle an 88-color palette by using the initc
+# capability.
+#
+# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals
+# which support the xterm+256color feature support the associated initc
+# capability.  So it is cancelled in the entries which use this and/or the
+# xterm+256color block.
+#
+# The default color palette for the 256- and 88-colors are different.  A
+# given executable will have one palette (perhaps compiled-in).  If the program
+# supports xterm's control sequence, it can be programmed using initc.
+xterm+88color|xterm 88-color feature,
+	colors#88, pairs#7744, use=xterm+256color,
+
+# These variants of XFree86 3.9.16 xterm are built as a configure option.
+xterm-256color|xterm with 256 colors,
+	use=xterm+256color, use=xterm-new,
+xterm-88color|xterm with 88 colors,
+	use=xterm+88color, use=xterm-256color,
+
+# These two are used to demonstrate the any-event mouse support, i.e., by
+# using an extended name "XM" which tells ncurses to put the terminal into
+# a special mode when initializing the xterm mouse.
+xterm-1002|testing xterm-mouse,
+	XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new,
+xterm-1003|testing xterm-mouse,
+	XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new,
+
+# This is another variant, for XFree86 4.0 xterm (T.Dickey)
+# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
+# To use it, your decTerminalID resource must be set to 200 or above.
+#
+#	HTS	\E H	\210
+#	RI	\E M	\215
+#	SS3	\E O	\217
+#	CSI	\E [	\233
+#
+xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
+	OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX,
+	colors#8, cols#80, it#8, lines#24, pairs#64,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
+	civis=\233?25l, clear=\233H\2332J,
+	cnorm=\233?25l\233?25h, cr=^M, csr=\233%i%p1%d;%p2%dr,
+	cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=^J,
+	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
+	cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h,
+	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
+	ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
+	flash=\233?5h$<100/>\233?5l, home=\233H,
+	hpa=\233%i%p1%dG, ht=^I, hts=\210, ich=\233%p1%d@,
+	il=\233%p1%dL, il1=\233L, ind=^J, invis=\2338m,
+	is2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
+	ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H,
+	kc1=\217q, kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
+	kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
+	kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~,
+	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
+	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
+	kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~,
+	kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~,
+	kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M,
+	knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i,
+	meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m,
+	ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l,
+	rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
+	rs1=\Ec,
+	rs2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8,
+	sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
+	setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
+	smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=,
+	smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR,
+	u7=\E[6n, u8=\233[?1;2c, u9=\E[c, vpa=\233%i%p1%dd,
+
+xterm-hp|xterm with hpterm function keys,
+	kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es,
+	kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ,
+	knp=\ES, kpp=\ET, use=xterm-basic,
+
+xterm-sco|xterm with SCO function keys,
+	kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\177, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
+	kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
+	kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
+	kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
+	kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O,
+	kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t,
+	kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y,
+	kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
+	kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
+	kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
+	kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I,
+	use=xterm-basic,
+
+# The xterm-new description has all of the features, but is not completely
+# compatible with vt220.  If you are using a Sun or PC keyboard, set the
+# sunKeyboard resource to true:
+#	+ maps the editing keypad
+#	+ interprets control-function-key as a second array of keys, so a
+#	  12-fkey keyboard can support vt220's 20-fkeys.
+#	+ maps numeric keypad "+" to ",".
+#	+ uses DEC-style control sequences for the application keypad.
+#
+xterm-vt220|xterm emulating vt220,
+	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kend=\E[4~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	use=xterm+app, use=xterm+edit, use=xterm-basic,
+	use=vt220+keypad,
+
+xterm-vt52|xterm emulating dec vt52,
+	cols#80, it#8, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
+	home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+
+xterm-noapp|xterm with cursor keys in normal mode,
+	rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp,
+	use=xterm,
+
+xterm-24|vs100|xterms|xterm terminal emulator (X Window System),
+	lines#24, use=xterm-old,
+
+# This is xterm for ncurses.
+xterm|xterm terminal emulator (X Window System),
+	use=xterm-new,
+
+# These entries allow access to the X titlebar and icon name as a status line.
+# Note that twm (and possibly window managers descended from it such as tvtwm,
+# ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess
+# with it.
+xterm+sl|access X title line and icon name,
+	hs,
+	wsl#40,
+	dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm,
+xterm+sl-twm|access X title line (pacify twm-descended window managers),
+	hs,
+	wsl#40,
+	dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm,
+
+#
+# The following xterm variants don't depend on your base version
+#
+# xterm with bold instead of underline
+xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold,
+	smso=\E[7m, smul=\E[1m, use=xterm-old,
+# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
+# (kterm should not invoke DEC Graphics as the alternate character set
+#  -- Kenji Rikitake)
+# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics
+#  -- MATSUMOTO Shoji)
+# kterm implements acsc via built-in table of X Drawable's
+kterm|kterm kanji terminal emulator (X window system),
+	eslok, hs,
+	ncv@,
+	acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~,
+	csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F,
+	kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h,
+	tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color,
+kterm-color|kterm-co|kterm with ANSI colors,
+	ncv@, use=kterm, use=ecma+color,
+# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
+xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
+	ich@, ich1@, use=xterm,
+# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996
+xterm1|xterm terminal emulator ignoring the alternate screen buffer,
+	rmcup@, smcup@, use=xterm,
+
+# This describes the capabilities of color_xterm, an xterm variant from
+# before ECMA-64 color support was folded into the main-line xterm release.
+# This entry is straight from color_xterm's maintainer.
+# From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996
+# The README's with the distribution also say that it supports SGR 21, 24, 25
+# and 27, but they are not present in the terminfo or termcap.
+color_xterm|cx|cx100|color_xterm color terminal emulator for X,
+	OTbs, am, km, mir, msgr, xenl,
+	cols#80, it#8, lines#65, ncv@,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kf1=\E[11~,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
+	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~,
+	kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l,
+	rmso=\E[27m, rmul=\E[24m,
+	rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[0m\017, smacs=^N, smam=\E[?7h,
+	smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
+	smul=\E[4m, use=ecma+color, use=vt220+keypad,
+
+# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of
+# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
+# SGR 39 or 49.  SGR 0 does reset colors (along with everything else).  This
+# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except
+# that each of those implements the home, end, delete keys differently.
+#
+# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce
+# colors; note that this is not compatible with the 5.2 version.
+# csw (2002-05-15): make xterm-color primary instead of nxterm, to
+#   match XFree86's xterm.terminfo usage and prevent circular links
+xterm-color|nxterm|generic color xterm,
+	ncv@,
+	op=\E[m, use=xterm-r6, use=klone+color,
+
+# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
+gnome-rh62|Gnome terminal,
+	bce,
+	kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	use=xterm-color,
+
+# GNOME Terminal 1.4.0.4 (Redhat 7.2)
+#
+# This implements a subset of vt102 with a random selection of features from
+# other terminals such as color and function-keys.
+#
+# shift-f1 to shift-f10 are f11 to f20
+#
+# NumLock changes the application keypad to approximate vt100 keypad, except
+# that there is no escape sequence matching comma (,).
+#
+# Other defects observed:
+#	vt100 LNM mode is not implemented.
+#	vt100 80/132 column mode is not implemented.
+#	vt100 DECALN is not implemented.
+#	vt100 DECSCNM mode is not implemented, so flash does not work.
+#	vt100 TBC (tab reset) is not implemented.
+#	xterm alternate screen controls do not restore cursor position properly
+#	it hangs in tack after running function-keys test.
+gnome-rh72|GNOME Terminal,
+	bce, km@,
+	civis=\E[?25l, cnorm=\E[?25h, kdch1=\E[3~, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmam=\E[?7l,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=xterm-color,
+
+# GNOME Terminal 2.0.1 (Redhat 8.0)
+#
+# Documentation now claims it implements vt220 (which is demonstrably false).
+# However, it does implement ECH, which is a vt220 feature.  And there are
+# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display
+# more of its bugs using vttest.
+#
+# However, note that bce and msgr are broken in this release.  Tabs (tbc and
+# hts) are broken as well.  Sometimes flash (as in xterm-new) works.
+#
+# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu
+# operations.  Shift-tab generates a distinct sequence so it can be argued
+# that it implements kcbt.
+gnome-rh80|GNOME Terminal,
+	bce@, msgr@,
+	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=\177,
+	kcbt=\E^I, op=\E[39;49m, use=gnome-rh72,
+
+# GNOME Terminal 2.2.1 (Redhat 9.0)
+#
+# bce and msgr are repaired.
+gnome-rh90|GNOME Terminal,
+	bce, msgr,
+	hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C,
+	kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g,
+	vpa=\E[%i%p1%dd, use=xterm+pcf0, use=xterm+pcfkeys,
+	use=gnome-rh80,
+
+# GNOME Terminal 2.14.2 (Fedora Core 5)
+# Ed Catmur notes that gnome-terminal has recognized soft-reset since May 2002.
+gnome-fc5|GNOME Terminal,
+	rs1=\Ec,
+	rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+	use=ansi+enq, use=xterm+pcc0, use=gnome-rh90,
+
+# GNOME Terminal 2.18.1 (2007 snapshot)
+#
+# For any "recent" version of gnome-terminal, it is futile to attempt to
+# support modifiers on cursor- and keypad keys because the program usually
+# is hardcoded to set $TERM to "xterm", and on startup, it builds a subset
+# of the keys (which more/less correspond to the termcap values), and will
+# interpret those according to the $TERM value, but others not in the
+# terminfo according to some constantly changing set of hacker guidelines -TD
+gnome-2007|GNOME Terminal snapshot 2.18.1,
+	use=xterm+pcc2, use=gnome-fc5,
+
+# GNOME Terminal 2.22.3 (2008 snapshot)
+#
+# In vttest, it claims to be a vt220 with national replacement character-sets,
+# but aside from the identifier string, implements only a small fraction of
+# vt220's behavior, which will make it less usable on a VMS system (unclear
+# what the intent of the developer is, since the NRC feature exposed in vttest
+# by this change does not work).
+gnome-2008|GNOME Terminal snapshot 2.22.3,
+	use=gnome+pcfkeys, use=gnome-2007,
+
+# GNOME terminal may automatically use the contents of the "xterm" terminfo to
+# supply key information which is not built into the program.  With 2.22.3,
+# this list is built into the program (which addresses the inadvertant use of
+# random terminfo data, though using a set of values which does not correspond
+# to any that xterm produces - still not solving the problem that GNOME
+# terminal hardcodes the $TERM variable as "xterm").
+#
+#	terminfo	modifier	code	keys
+#	kf13-kf24	shift		2	F1 to F12
+#	kf25-kf36	control		5	F1 to F12
+#	kf37-kf48	shift/control	6	F1 to F12
+#	kf49-kf60	alt		3	F1 to F12
+#	kf61-kf63	shift-alt	4	F1 to F3
+#
+# The parameters with \EO (SS3) are technically an error, since SS3 should have
+# no parameters.  This appears to be rote copying based on xterm+pcc0.
+gnome+pcfkeys|gnome variation on xterm+pcfkeys,
+	kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R,
+	kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q,
+	kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P,
+	kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S,
+	kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S,
+	kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R,
+	use=xterm+pcfkeys,
+
+gnome|GNOME Terminal,
+	use=gnome-2008,
+
+# palette is hardcoded...
+gnome-256color|GNOME Terminal with xterm 256-colors,
+	initc@, use=xterm+256color, use=gnome,
+
+# XFCE Terminal 0.2.5.4beta2
+#
+# This is based on some of the same source code, e.g., the VTE library, as
+# gnome-terminal, but has fewer features, fails more screens in vttest.
+# Since most of the terminfo-related behavior is due to the VTE library,
+# the terminfo is the same as gnome-terminal.
+xfce|Xfce Terminal,
+	use=gnome,
+
+# Multi-Gnome-Terminal 1.6.2
+#
+# This does not use VTE, and does have different behavior (compare xfce and
+# gnome).
+mgt|Multi GNOME Terminal,
+	indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333,
+
+# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce
+# or not is debatable).
+kvt|KDE terminal,
+	bce, km@,
+	kdch1=\177, kend=\E[F, khome=\E[H, use=xterm-color,
+
+# Konsole 1.0.1
+# (formerly known as kvt)
+#
+# This program hardcodes $TERM to 'xterm', which is not accurate.  However, to
+# simplify this entry (and point out why konsole isn't xterm), we base this on
+# xterm-r6.  The default keyboard appears to be 'linux'.
+#
+# Notes:
+# a) konsole implements several features from XFree86 xterm, though none of
+#    that is documented - except of course in its source code - apparently
+#    because its implementors are unaccustomed to reading documentation - as
+#    evidenced by the sparse and poorly edited documentation distributed with
+#    konsole.  Some features such as the 1049 private mode are recognized but
+#    incorrectly implemented as a duplicate of the 47 private mode.
+# b) even with the "vt100 (historical)" keyboard setting, the numeric keypad
+#    sends PC-style escapes rather than vt100.
+# c) fails vttest menu 3 (Test of character sets) because it does not properly
+#    parse some control sequences.  Also fails vttest Primary Device Attributes
+#    by sending a bogus code (in the source it says it's supposed to be a
+#    vt220, which is doubly incorrect because it does not implement vt220
+#    control sequences except for a few special cases).  Treat it as a
+#    mildly-broken vt102.
+#
+# Update for konsole 1.3.2:
+#    The 1049 private mode works (but see the other xterm screens in vttest).
+#    Primary Device Attributes now returns the code for a vt100 with advanced
+#    video option.  Perhaps that's intended to be a "mildly-broken vt102".
+#
+# Updated for konsole 1.6.4:
+#    add konsole-solaris
+#
+# Updated for konsole 1.6.6:
+#    add control-key modifiers for function-keys, etc.
+#
+# vttest menu 1 shows that both konsole and gnome terminal do wrapping
+# different from xterm (and vt100's).  They have the same behavior in this
+# detail, but it is unclear which copies the other.
+konsole-base|KDE console window,
+	bce, km@, npc,
+	bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h,
+	ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
+	hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1@,
+	kend=\E[4~, kf1@, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@,
+	kf17@, kf18@, kf19@, kf2@, kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
+	kf9@, kfnd@, khome=\E[1~, kslt@, rin=\E[%p1%dT, rmam=\E[?7l,
+	rmso=\E[27m, rmul=\E[24m,
+	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
+	use=ecma+color, use=xterm-r6,
+konsole-linux|KDE console window with linux keyboard,
+	kdch1=\E[3~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@,
+	kf2=\E[[B, kf20@, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	use=konsole-base,
+konsole-solaris|KDE console window with Solaris keyboard,
+	kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100,
+# KDE's "XFree86 3.x.x" keyboard is based on reading the xterm terminfo rather
+# than testing the code.
+konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
+	kend=\E[4~, khome=\E[1~, use=konsole-vt100,
+# The value for kbs reflects local customization rather than the settings used
+# for XFree86 xterm.
+konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
+	kend=\EOF, khome=\EOH, use=konsole+pcfkeys,
+	use=konsole-vt100,
+# Konsole does not implement shifted cursor-keys.
+konsole+pcfkeys|konsole subset of xterm+pcfkeys,
+	kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2,
+	use=xterm+pcf0,
+# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
+# it is still useful for deriving the other entries.
+konsole-vt100|KDE console window with vt100 (sic) keyboard,
+	kbs=\177, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@,
+	kf18@, kf19@, kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[H, use=konsole-base,
+konsole-vt420pc|KDE console window with vt420 pc keyboard,
+	kbs=^H, kdch1=\177, use=konsole-vt100,
+konsole-16color|klone of xterm-16color,
+	ncv#32, use=ibm+16color, use=konsole,
+# make a default entry for konsole
+konsole|KDE console window,
+	use=konsole-xf4x,
+
+# palette is hardcoded...
+konsole-256color|KDE console window with xterm 256-colors,
+	initc@, use=xterm+256color, use=konsole,
+
+# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD
+#
+# It is nominally a vt102 emulator, with features borrowed from rxvt and
+# xterm.
+#
+# The function keys are numbered based on shift/control/alt modifiers, except
+# that the control-modifier itself is used to spawn a new copy of mlterm (the
+# "-P" option).  So control/F1 to control/F12 may not be usable, depending on
+# how it is configured.
+#
+#				kf1 to kf12	\E[11~   to \E[24~
+#	shift			kf1 to kf12	\E[11;2~ to \E[24;2~
+#	alt			kf1 to kf12	\E[11;3~ to \E[24;3~
+#	shift/alt		kf1 to kf12	\E[11;4~ to \E[24;4~
+#	control			kf1 to kf12	\E[11;5~ to \E[24;5~ (maybe)
+#	control/shift		kf1 to kf12	\E[11;6~ to \E[24;6~
+#	control/alt		kf1 to kf12	\E[11;7~ to \E[24;7~
+#	control/shift/alt	kf1 to kf12	\E[11;8~ to \E[24;8~
+#
+mlterm|multi lingual terminal emulator,
+	am, eslok, km, mc5i, mir, msgr, npc, xenl,
+	colors#8, cols#80, it#8, lines#24, pairs#64,
+	acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
+	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
+	kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~,
+	khome=\EOH, kich1=\E[2~, kind=\EO1;2B, kmous=\E[M,
+	knp=\E[6~, kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i,
+	nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+	rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l,
+	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l,
+	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
+	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
+	vpa=\E[%i%p1%dd, use=mlterm+pcfkeys, use=xterm+r6f2,
+
+# The insert/delete/home/end keys do not respond to modifiers because mlterm
+# looks in its termcap to decide which string to send.  If it used terminfo
+# (when available), it could use the extended names introduced for xterm.
+mlterm+pcfkeys|fragment for PC-style fkeys,
+	kLFT=\EO1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO1;2C,
+	kDN=\EO1;2B, kDN3=\EO1;3B, kDN4=\EO1;4B, kDN5=\EO1;5B,
+	kDN6=\EO1;6B, kDN7=\EO1;7B, kIC5=\E[2;5~, kIC6=\E[2;6~,
+	kLFT3=\EO1;3D, kLFT4=\EO1;4D, kLFT5=\EO1;5D,
+	kLFT6=\EO1;6D, kLFT7=\EO1;7D, kNXT5=\E[6;5~,
+	kNXT6=\E[6;6~, kPRV5=\E[5;5~, kPRV6=\E[5;6~,
+	kRIT3=\EO1;3C, kRIT4=\EO1;4C, kRIT5=\EO1;5C,
+	kRIT6=\EO1;6C, kRIT7=\EO1;7C, kUP=\EO1;2A, kUP3=\EO1;3A,
+	kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A,
+
+# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
+# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
+# Notes:
+# rxvt 2.21b uses
+#	smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O,
+# but some applications don't work with that.
+# It also has an AIX extension
+#	box2=lqkxjmwuvtn,
+# and
+#	ech=\E[%p1%dX,
+# but the latter does not work correctly.
+#
+# The distributed terminfo says it implements hpa and vpa, but they are not
+# implemented correctly, using relative rather than absolute positioning.
+#
+# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
+# Since rxvt is not really compatible with xterm, it should be configured as
+# "rxvt" or "rxvt-color".
+#
+# removed dch/dch1 because they are inconsistent with bce/ech -TD
+# remove km as per tack test -TD
+rxvt-basic|rxvt terminal base (X Window System),
+	OTbs, am, bce, eo, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H, ht=^I,
+	hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+	ind=^J, is1=\E[?47l\E=\E[?1l,
+	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
+	kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
+	rmul=\E[24m,
+	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+	s0ds=\E(B, s1ds=\E(0, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[0m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
+	smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq,
+	use=rxvt+pcfkeys, use=vt220+keypad,
+# Key Codes from rxvt reference:
+#
+# Note: Shift + F1-F10 generates F11-F20
+#
+# For the keypad, use Shift to temporarily override Application-Keypad
+# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock
+# is off, escape sequences toggle Application-Keypad setting.
+# Also note that values of Home, End, Delete may have been compiled
+# differently on your system.
+#
+#                   Normal       Shift        Control      Ctrl+Shift
+#  Tab              ^I           ESC [ Z      ^I           ESC [ Z
+#  BackSpace        ^H           ^?           ^?           ^?
+#  Find             ESC [ 1 ~    ESC [ 1 $    ESC [ 1 ^    ESC [ 1 @
+#  Insert           ESC [ 2 ~    paste        ESC [ 2 ^    ESC [ 2 @
+#  Execute          ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
+#  Select           ESC [ 4 ~    ESC [ 4 $    ESC [ 4 ^    ESC [ 4 @
+#  Prior            ESC [ 5 ~    scroll-up    ESC [ 5 ^    ESC [ 5 @
+#  Next             ESC [ 6 ~    scroll-down  ESC [ 6 ^    ESC [ 6 @
+#  Home             ESC [ 7 ~    ESC [ 7 $    ESC [ 7 ^    ESC [ 7 @
+#  End              ESC [ 8 ~    ESC [ 8 $    ESC [ 8 ^    ESC [ 8 @
+#  Delete           ESC [ 3 ~    ESC [ 3 $    ESC [ 3 ^    ESC [ 3 @
+#  F1               ESC [ 11 ~   ESC [ 23 ~   ESC [ 11 ^   ESC [ 23 ^
+#  F2               ESC [ 12 ~   ESC [ 24 ~   ESC [ 12 ^   ESC [ 24 ^
+#  F3               ESC [ 13 ~   ESC [ 25 ~   ESC [ 13 ^   ESC [ 25 ^
+#  F4               ESC [ 14 ~   ESC [ 26 ~   ESC [ 14 ^   ESC [ 26 ^
+#  F5               ESC [ 15 ~   ESC [ 28 ~   ESC [ 15 ^   ESC [ 28 ^
+#  F6               ESC [ 17 ~   ESC [ 29 ~   ESC [ 17 ^   ESC [ 29 ^
+#  F7               ESC [ 18 ~   ESC [ 31 ~   ESC [ 18 ^   ESC [ 31 ^
+#  F8               ESC [ 19 ~   ESC [ 32 ~   ESC [ 19 ^   ESC [ 32 ^
+#  F9               ESC [ 20 ~   ESC [ 33 ~   ESC [ 20 ^   ESC [ 33 ^
+#  F10              ESC [ 21 ~   ESC [ 34 ~   ESC [ 21 ^   ESC [ 34 ^
+#  F11              ESC [ 23 ~   ESC [ 23 $   ESC [ 23 ^   ESC [ 23 @
+#  F12              ESC [ 24 ~   ESC [ 24 $   ESC [ 24 ^   ESC [ 24 @
+#  F13              ESC [ 25 ~   ESC [ 25 $   ESC [ 25 ^   ESC [ 25 @
+#  F14              ESC [ 26 ~   ESC [ 26 $   ESC [ 26 ^   ESC [ 26 @
+#  F15 (Help)       ESC [ 28 ~   ESC [ 28 $   ESC [ 28 ^   ESC [ 28 @
+#  F16 (Menu)       ESC [ 29 ~   ESC [ 29 $   ESC [ 29 ^   ESC [ 29 @
+#  F17              ESC [ 31 ~   ESC [ 31 $   ESC [ 31 ^   ESC [ 31 @
+#  F18              ESC [ 32 ~   ESC [ 32 $   ESC [ 32 ^   ESC [ 32 @
+#  F19              ESC [ 33 ~   ESC [ 33 $   ESC [ 33 ^   ESC [ 33 @
+#  F20              ESC [ 34 ~   ESC [ 34 $   ESC [ 34 ^   ESC [ 34 @
+#
+#                                                          Application
+#  Up               ESC [ A      ESC [ a      ESC O a      ESC O A
+#  Down             ESC [ B      ESC [ b      ESC O b      ESC O B
+#  Right            ESC [ C      ESC [ c      ESC O c      ESC O C
+#  Left             ESC [ D      ESC [ d      ESC O d      ESC O D
+#  KP_Enter         ^M                                     ESC O M
+#  KP_F1            ESC O P                                ESC O P
+#  KP_F2            ESC O Q                                ESC O Q
+#  KP_F3            ESC O R                                ESC O R
+#  KP_F4            ESC O S                                ESC O S
+#  XK_KP_Multiply   *                                      ESC O j
+#  XK_KP_Add        +                                      ESC O k
+#  XK_KP_Separator  ,                                      ESC O l
+#  XK_KP_Subtract   -                                      ESC O m
+#  XK_KP_Decimal    .                                      ESC O n
+#  XK_KP_Divide     /                                      ESC O o
+#  XK_KP_0          0                                      ESC O p
+#  XK_KP_1          1                                      ESC O q
+#  XK_KP_2          2                                      ESC O r
+#  XK_KP_3          3                                      ESC O s
+#  XK_KP_4          4                                      ESC O t
+#  XK_KP_5          5                                      ESC O u
+#  XK_KP_6          6                                      ESC O v
+#  XK_KP_7          7                                      ESC O w
+#  XK_KP_8          8                                      ESC O x
+#  XK_KP_9          9                                      ESC O y
+#
+# The source-code for rxvt actually defines mappings for F21-F35, using
+# "ESC [ 35 ~" to "ESC [  49 ~".  Keyboards with more than 12 function keys
+# are rare, so this entry uses the shift- and control-modifiers as in
+# xterm+pcfkeys to define keys past F12.
+#
+# kIC is normally not used, since rxvt performs a paste for that (shifted
+# insert), unless private mode 35 is set.
+#
+# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD
+# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD
+rxvt+pcfkeys|fragment for PC-style fkeys,
+	kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d,
+	kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^,
+	kend=\E[8~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\E[12~, kf20=\E[34~, kf21=\E[23$, kf22=\E[24$,
+	kf23=\E[11\^, kf24=\E[12\^, kf25=\E[13\^, kf26=\E[14\^,
+	kf27=\E[15\^, kf28=\E[17\^, kf29=\E[18\^, kf3=\E[13~,
+	kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, kf33=\E[23\^,
+	kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^, kf37=\E[28\^,
+	kf38=\E[29\^, kf39=\E[31\^, kf4=\E[14~, kf40=\E[32\^,
+	kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	kslt=\E[4~, kDC5=\E[3\^, kDC6=\E[3@, kDN=\E[b, kDN5=\EOb,
+	kEND5=\E[8\^, kEND6=\E[8@, kHOM5=\E[7\^, kHOM6=\E[7@,
+	kIC5=\E[2\^, kIC6=\E[2@, kLFT5=\EOd, kNXT5=\E[6\^,
+	kNXT6=\E[6@, kPRV5=\E[5\^, kPRV6=\E[5@, kRIT5=\EOc,
+	kUP=\E[a, kUP5=\EOa,
+
+rxvt|rxvt terminal emulator (X Window System),
+	ncv@,
+	hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017,
+	vpa=\E[%i%p1%dd, use=rxvt-basic, use=ecma+color,
+rxvt-color|rxvt terminal emulator (X Window System),
+	use=rxvt,
+rxvt-256color|rxvt 2.7.9 with xterm 256-colors,
+	use=xterm+256color, use=rxvt,
+rxvt-88color|rxvt 2.7.9 with xterm 88-colors,
+	use=xterm+88color, use=rxvt,
+rxvt-xpm|rxvt terminal emulator (X Window System),
+	use=rxvt,
+rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin,
+	acsc=0\333+\257\,\256-\^`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	use=rxvt,
+rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin,
+	acsc=0\333+\257\,\256-\^`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330~\376,
+	use=rxvt-cygwin,
+
+# This variant is supposed to work with rxvt 2.7.7 when compiled with
+# NO_BRIGHTCOLOR defined.  rxvt needs more work...
+rxvt-16color|xterm with 16 colors like aixterm,
+	ncv#32, use=ibm+16color, use=rxvt,
+
+# mrxvt 0.5.3
+#
+# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
+# makes its function-keys different from other flavors of rxvt -TD
+mrxvt|multitabbed rxvt,
+	use=xterm+pcc2, use=xterm+r6f2, use=rxvt,
+
+# From: Michael Jennings <mej@valinux.com>
+#
+# Eterm 0.9.3
+#
+# removed kf0 which conflicts with kf10 -TD
+# remove cvvis which conflicts with cnorm -TD
+# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT
+# but does otherwise follow the rxvt+pcfkeys model -TD
+# remove nonworking flash -TD
+# remove km as per tack test -TD
+Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
+	am, bce, bw, eo, mc5i, mir, msgr, xenl, xon,
+	btns#5, cols#80, it#8, lines#24, lm#0, ncv@,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is1=\E[?47l\E>\E[?1l,
+	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@,
+	kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kbs=^H,
+	kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M,
+	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=,
+	rmso=\E[27m, rmul=\E[24m,
+	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
+	smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys,
+	use=ecma+color,
+
+Eterm-256color|Eterm with xterm 256-colors,
+	use=xterm+256color, use=Eterm,
+
+Eterm-88color|Eterm with 88 colors,
+	use=xterm+88color, use=Eterm,
+
+# Based on rxvt 2.4.8, it has a few differences in key bindings
+aterm|AfterStep terminal,
+	kbs=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt,
+
+# xiterm  0.5-5.2
+# This is not based on xterm's source...
+# vttest shows several problems with keyboard, cursor-movements.
+# see also http://invisible-island.net/xterm/xterm.faq.html#bug_xiterm
+xiterm|internationalized terminal emulator for X,
+	km@,
+	kbs=\177, kdch1=\E[3~, use=klone+color, use=xterm-r6,
+
+# These (xtermc and xtermm) are distributed with Solaris.  They refer to a
+# variant of xterm which is apparently no longer supported, but are interesting
+# because they illustrate SVr4 curses mouse controls - T.Dickey
+xtermm|xterm terminal emulator (monocrome),
+	OTbs, am, km, mir, msgr, xenl,
+	btns#3, cols#80, it#8, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
+	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy,
+	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU,
+	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_,
+	knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM,
+	rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
+	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
+	smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys,
+
+xtermc|xterm terminal emulator (color),
+	colors#8, ncv#7, pairs#64,
+	op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	use=xtermm,
+
+# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
+# Here's a termcap entry I've been using for xterm_color, which comes
+# with BSD/OS 2.0, and the X11R6 contrib tape too I think.  Besides the
+# color stuff, I also have a status line defined as the window manager
+# title bar. [I have translated it to terminfo -- ESR]
+xterm-pcolor|xterm with color used for highlights and status line,
+	bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m,
+	smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6,
+
+# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in
+# from BSD termcap.  (hpterm:  added empty <acsc>, we have no idea what ACS
+# chars look like --esr)
+hpterm|X-hpterm|hp X11 terminal emulator,
+	am, da, db, mir, xhp,
+	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0,
+	acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M,
+	cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC,
+	cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK,
+	hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=^J, kbs=^H,
+	kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
+	kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+	khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
+	knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, meml=\El,
+	memu=\Em, pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
+	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
+	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
+	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET,
+	rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@,
+	rmul=\E&d@,
+	sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
+	sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
+	smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+# HPUX 11 provides a color version.
+hpterm-color|HP X11 terminal emulator with color,
+	ccc,
+	colors#64, pairs#8,
+	home=\E&a0y0C,
+	initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI,
+	op=\E&v0S, scp=\E&v%p1%dS, use=hpterm,
+
+# This entry describes an xterm with Sun-style function keys enabled
+# via the X resource setting "xterm*sunFunctionKeys:true"
+# To understand <kf11>/<kf12> note that L1,L2 and F11,F12 are the same.
+# The <kf13>...<kf20> keys are L3-L10.  We don't set <kf16=\E[197z>
+# because we want it to be seen as <kcpy>.
+# The <kf31>...<kf45> keys are R1-R15.  We treat some of these in accordance
+# with their Sun keyboard labels instead.
+# From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996
+xterm-sun|xterm with sunFunctionKeys true,
+	kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z,
+	kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z,
+	kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z,
+	kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z,
+	kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z,
+	kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z,
+	kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z,
+	kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z,
+	kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z,
+	kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z,
+	kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z,
+	use=xterm-basic,
+xterms-sun|small (80x24) xterm with sunFunctionKeys true,
+	cols#80, lines#24, use=xterm-sun,
+
+# This is for the extensible terminal emulator on the X11R6 contrib tape.
+# It corresponds to emu's internal emulation:
+#	emu -term emu
+# emu's default sets TERM to "xterm", but that doesn't work well -TD
+# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD
+# fixes: add civis, cnorm, sgr -TD
+emu|emu native mode,
+	am, bce, mir, msgr, xon,
+	colors#15, cols#80, it#8, lines#24, pairs#64, vt#200,
+	acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244,
+	bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;,
+	cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;,
+	cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\ED,
+	cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA,
+	dch=\EI%p1%d;, dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;,
+	ech=\Ej%p1%d;, ed=\EN, el=\EK, el1=\EL, home=\EE0;0;, ht=^I,
+	hts=\Eh, il=\EQ%p1%d;, il1=\EQ1;, ind=\EG,
+	is2=\ES\Er0;\Es0;, kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED,
+	kcuu1=\EA, kdch1=\177, kent=^M, kf0=\EF00, kf1=\EF01,
+	kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14,
+	kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19,
+	kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05,
+	kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind,
+	kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel,
+	op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES,
+	rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;,
+	setaf=\Er%i%p1%d;,
+	sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6%t\EU%;,
+	sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej,
+
+# vt220 Terminfo entry for the Emu emulation, corresponds to
+#	emu -term vt220
+# with NumLock set (to make the keypad transmit kf0-kf9).
+# fixes: add am, xenl, corrected sgr0 -TD
+emu-220|Emu-220 (vt200-7bit mode),
+	am, xenl, xon,
+	cols#80, it#8, lines#24, vt#200,
+	acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[0;5m, bold=\E[0;1m, civis=\E[?25l,
+	clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
+	cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
+	dch=\E[%p1%dP, dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M,
+	ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I,
+	hts=\EH, if=/usr/local/share/tabset/vt300, il=\E[%p1%dL,
+	il1=\E[1L, ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h,
+	kbs=^H, kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf0=\EOp, kf1=\EOq,
+	kf10=\EOl, kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ,
+	kf15=\EOR, kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~,
+	kf28=\E[19~, kf29=\E[20~, kf3=\EOs, kf30=\E[21~,
+	kf34=\E[26~, kf37=\E[31~, kf38=\E[32~, kf39=\E[33~,
+	kf4=\EOt, kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw,
+	kf8=\EOx, kf9=\EOy, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
+	knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, rev=\E[0;7m,
+	ri=\EM, rmacs=^O, rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7,
+	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m, smacs=^N, smcup=\E[?1l\E=, smkx=\E=,
+	smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g,
+# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI,
+# print interface, ANSI X3.64 colour escape sequences, etc.  Newsgroup postings
+# indicate that it emulates more than one terminal, but incompletely.
+#
+# This is adapted from a FreeBSD bug-report by Daniel Rudy <dcrudy@pacbell.net>
+# It is based on vt102's entry, with some subtle differences, but also
+#	has status line
+#	supports ANSI colors (except for 'op' string)
+#	apparently implements alternate screen like xterm
+#	does not use padding, of course.
+mvterm|vv100|SwitchTerm aka mvTERM,
+	am, eslok, hs, km, mir, msgr, xenl,
+	colors#8, cols#80, it#8, lines#24, pairs#64,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0,
+	fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy,
+	kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw,
+	op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m,
+	rmul=\E[m,
+	rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H,
+	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys,
+
+### MTERM
+#
+# This application is available by email from <mouse@Rodents.Montreal.QC.CA>.
+#
+# "mterm -type ansi" sets $TERM to "ansi"
+mterm-ansi|ANSI emulation,
+	am, bw, mir, msgr,
+	it#8,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
+	el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=,
+	il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS,
+	invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m,
+	rmul=\E[24m,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+	vpa=\E[%i%p1%dd,
+# mterm normally sets $TERM to "mterm"
+mterm|mouse-sun|Der Mouse term,
+	am, bw, mir,
+	it#8,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^N, cuf1=^S,
+	cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C,
+	home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=^M^U, ri=^W,
+	rmir=^O, rmso=^T, smir=^Q, smso=^V,
+# "mterm -type decansi" sets $TERM to "decansi"
+#
+# note: kdch1, kfnd, kslt are in the source code, but do not work -TD
+decansi|ANSI emulation with DEC compatibility hacks,
+	am, mir, msgr, xenl,
+	colors#8, it#8, pairs#64,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0,
+	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL,
+	il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m,
+	is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kf1=\E[11~,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
+	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~,
+	kpp=\E[5~, kslt=\E[4~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR,
+	u7=\E[6n, vpa=\E[%i%p1%dd,
+
+#### MGR
+#
+# MGR is a Bell Labs window system lighter-weight than X.
+# These entries describe MGR's xterm-equivalent.
+# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997
+#
+
+mgr|Bellcore MGR (non X) window system terminal emulation,
+	am, km,
+	bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M,
+	csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er,
+	cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h,
+	dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>,
+	dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u,
+	ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>,
+	il1=\Ea$<3>, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, nel=^M^J, rev=\E1n, rmam=\E5S,
+	rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n,
+	smul=\E4n,
+mgr-sun|Mgr window with Sun keyboard,
+	ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z,
+	kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z,
+	kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z,
+	kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z,
+	kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z,
+	kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z,
+	kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr,
+mgr-linux|Mgr window with Linux keyboard,
+	ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~,
+	kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
+	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr,
+
+######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
+#
+
+# Columbus UNIX virtual terminal. This terminal also appears in
+# UNIX 4.0 and successors as line discipline 1 (?), but is
+# undocumented and does not really work quite right.
+cbunix|cb unix virtual terminal,
+	OTbs, am, da, db,
+	cols#80, lines#24, lm#0,
+	bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL,
+	el=\EK, ich1=\EO, il1=\EP, ind=^J, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
+	smso=\Ea^D, smul=\Ea^A,
+# (vremote: removed obsolete ":nl@:" -- esr)
+vremote|virtual remote terminal,
+	am@,
+	cols#79, use=cbunix,
+
+pty|4bsd pseudo teletype,
+	cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
+	smso=\Ea$, smul=\Ea!, use=cbunix,
+
+# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
+eterm|gnu emacs term.el terminal emulation,
+	am, mir, xenl,
+	cols#80, lines#24,
+	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m,
+	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
+	smul=\E[4m,
+
+# Entries for use by the `screen' program by Juergen Weigert,
+# Michael Schroeder, Oliver Laumann.  The screen and
+# screen-w entries came with version 3.7.1.  The screen2 and screen3 entries
+# come from University of Wisconsin and may be older.
+# (screen: added <cnorm> on ANSI model -- esr)
+#
+# 'screen' defines extensions to termcap.  Some are used in its terminal
+# description:
+#      G0   (bool)  Terminal can deal with ISO 2022  font  selection sequences.
+#      AX   (bool)  Does  understand ANSI set default fg/bg color
+#                   (\E[39m / \E[49m).
+#      S0   (str)   Switch charset 'G0' to the specified charset.
+#      E0   (str)   Switch charset 'G0' back to standard charset.
+#
+# tested with screen 3.09.08
+screen|VT 100/ANSI X3.64 virtual terminal,
+	OTbs, OTpt, am, km, mir, msgr, xenl, G0,
+	colors#8, cols#80, it#8, lines#24, pairs#64,
+	acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+	cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+	flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m,
+	rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B,
+	S0=\E(%p1%c, use=ecma+color,
+# The bce and status-line entries are from screen 3.9.13 (and require some
+# changes to .screenrc).
+screen-bce|VT 100/ANSI X3.64 virtual terminal with bce,
+	bce, use=screen,
+screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
+	dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen,
+
+# ======================================================================
+# Entries for GNU Screen with 16 colors.
+# Those variations permit to benefit from 16 colors palette, and from
+# bold font and blink attribute separated from bright colors. But they
+# are less portable than the generic "screen" 8 color entries: Their
+# usage makes real sense only if the terminals you attach and reattach
+# do all support 16 color palette.
+
+screen-16color|GNU Screen with 16 colors,
+	use=ibm+16color, use=screen,
+
+screen-16color-s|GNU Screen with 16 colors and status line,
+	use=ibm+16color, use=screen-s,
+
+screen-16color-bce|GNU Screen with 16 colors and BCE,
+	use=ibm+16color, use=screen-bce,
+
+screen-16color-bce-s|GNU Screen with 16 colors, BCE, and status line,
+	bce, use=ibm+16color, use=screen-s,
+
+# ======================================================================
+# Entries for GNU Screen 4.02 with --enable-colors256.
+
+screen-256color|GNU Screen with 256 colors,
+	ccc@,
+	initc@, use=xterm+256color, use=screen,
+
+screen-256color-s|GNU Screen with 256 colors and status line,
+	ccc@,
+	initc@, use=xterm+256color, use=screen-s,
+
+screen-256color-bce|GNU Screen with 256 colors and BCE,
+	ccc@,
+	initc@, use=xterm+256color, use=screen-bce,
+
+screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line,
+	bce, ccc@,
+	initc@, use=xterm+256color, use=screen-s,
+
+# ======================================================================
+
+# Read the fine manpage:
+#       When  screen  tries  to  figure  out  a  terminal name for
+#       itself, it first looks for an entry named "screen.<term>",
+#       where  <term>  is the contents of your $TERM variable.  If
+#       no such entry exists, screen tries "screen" (or "screen-w"
+#       if the terminal is wide (132 cols or more)).  If even this
+#       entry cannot be found, "vt100" is used as a substitute.
+#
+# Notwithstanding the manpage, screen uses its own notion of the termcap
+# and some keys from "screen.<term>" are ignored.  Here is an entry which
+# covers those (tested with screen 4.00.02) -TD
+screen+fkeys|function-keys according to screen,
+	kend=\E[4~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kfnd@,
+	khome=\E[1~, kslt@,
+#
+# Here are a few customized entries which are useful -TD
+#
+# Notes:
+# (a)	screen does not support invis.
+# (b)	screen's implementation of bw is incorrect according to tack.
+# (c)	screen appears to hardcode the strings for khome/kend, making it
+#	necessary to override the "use=" clause's values (screen+fkeys).
+# (d)	screen sets $TERMCAP to a termcap-formatted copy of the 'screen' entry,
+#	which is NOT the same as the terminfo screen.<term>.
+# (e)	when screen finds one of these customized entries, it sets $TERM to
+#	match.  Hence, no "screen.xterm" entry is provided, since that would
+#	create heartburn for people running remote xterm's.
+#
+#	xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV
+#	since the default translations override the built-in keycode
+#	translation.  They are suppressed here to show what is tested by tack.
+screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
+	bce@, bw,
+	invis@, kIC@, kNXT@, kPRV@, meml@, memu@,
+	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
+	use=screen+fkeys, use=xterm-new,
+# xterm-r6 does not really support khome/kend unless it is propped up by
+# the translations resource.
+screen.xterm-r6|screen customized for X11R6 xterm,
+	bw, use=screen+fkeys, use=xterm-r6,
+# Color applications running in screen and TeraTerm do not play well together
+# on Solaris because Sun's curses implementation gets confused.
+screen.teraterm|disable ncv in teraterm,
+	ncv#127,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	use=screen+fkeys, use=screen,
+# Other terminals
+screen.rxvt|screen in rxvt,
+	bw,
+	cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, use=screen+fkeys, use=vt100+enq,
+	use=rxvt+pcfkeys, use=vt220+keypad, use=screen,
+# fix the backspace key
+screen.linux|screen in linux console,
+	bw,
+	kbs=\177, kcbt@, use=screen+fkeys, use=screen,
+screen.mlterm|screen in mlterm,
+	use=screen+fkeys, use=mlterm,
+
+screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
+	cols#132, use=screen,
+
+screen2|old VT 100/ANSI X3.64 virtual terminal,
+	cols#80, it#8, lines#24,
+	cbt=\E[Z, clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
+	kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
+	nel=^M^J, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m,
+	rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h,
+	smso=\E[3m, smul=\E[4m, tbc=\E[3g,
+# (screen3: removed unknown ":xv:LP:G0:" -- esr)
+screen3|older VT 100/ANSI X3.64 virtual terminal,
+	km, mir, msgr,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
+	rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec,
+	sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
+	smul=\E[4m, tbc=\E[3g,
+
+# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
+# NCSA telnet is one of the most used telnet clients for the Macintosh.  It has
+# been maintained until recently by the National Center for Supercomputer
+# Applications, and it is feature rich, stable and free.  It can be downloaded
+# from www.ncsa.edu.  This terminfo description file is based on xterm-vt220,
+# xterm+sl, and the docs at NCSA.  It works well.
+#
+# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode
+# The terminal options should be set as follows:
+#         Xterm sequences ON
+#         use VT wrap mode ON
+#         use Emacs arrow keys OFF
+#         CTRL-COMND is Emacs meta ON
+#         8 bit mode ON
+#         answerback string: "ncsa-vt220-8"
+#         setup keys: all disabled
+#
+# Application mode is not used.
+#
+# Other special mappings:
+#	Apple		VT220
+#	HELP 		Find
+#	HOME		Insert here
+#	PAGEUP		Remove
+#	DEL		Select
+#	END		Prev Screen
+#	PAGEDOWN	Next Screen
+#
+# Though it supports ANSI color, NCSA Telnet uses color to represent blinking
+# text.
+#
+# The status-line manipulation is a mapping of the xterm-compatible control
+# sequences for setting the window-title.  So you must use tsl and fsl in
+# pairs, since the latter ends the string that is loaded to the window-title.
+ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
+	am, hs, km, mir, msgr, xenl,
+	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+	flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, if=/usr/local/share/tabset/vt100,
+	il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
+	is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
+	kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
+	kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
+	kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
+	khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
+	rc=\E8, rev=\E[7m, rf=/usr/local/share/tabset/vt100, ri=\EM,
+	rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
+	rmso=\E[27m, rmul=\E[24m,
+	rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
+	smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;,
+	u8=\E[?62;1;6c, use=ansi+enq,
+ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
+	use=ncsa-m, use=klone+color,
+ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
+	hs@,
+	dsl@, fsl@, tsl@, use=ncsa,
+ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
+	hs@,
+	dsl@, fsl@, tsl@, use=ncsa-m,
+# alternate -TD:
+# The documented function-key mapping refers to the Apple Extended Keyboard
+# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6).  We use the VT220-style
+# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
+# some keyboards and many applications require these as F1-F4.
+#
+ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
+	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
+	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, use=ncsa,
+
+#### Pilot Pro Palm-Top
+#
+# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
+# http://www.ai/~iang/TGssh/
+pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
+	OTbs, am, xenl,
+	cols#39, lines#16,
+	bel=^G, clear=\Ec, cr=^M, cub1=^H, cud1=^J,
+	cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I,
+	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, knp=^L, kpp=^K, nel=\Em~\s,
+	rmso=\EB, smso=\Eb,
+
+# From: Federico Bianchi <bianchi@www.arte.unipi.it>
+# These entries are for the Embeddable Linux Kernel System (ELKS)
+# project - an heavily stripped down Linux to be run on 16 bit
+# boxes or, eventually, to be used in embedded systems - and have been
+# adapted from the stock ELKS termcap. The project itself looks stalled,
+# and the latest improvements I know of date back to March 2000.
+#
+# To cope with the ELKS dumb console I added an "elks-glasstty" entry;
+# as an added bonus, this deals with all the capabilities common to
+# both VT52 and ANSI (or, eventually, "special") modes.
+
+elks-glasstty|ELKS glass-TTY capabilities,
+	OTbs, am,
+	cols#80, it#8, lines#25,
+	bel=^G, cr=^M, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+	nel=^M^J,
+
+elks-vt52|ELKS vt52 console,
+	clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK,
+	home=\EH, use=elks-glasstty,
+
+elks-ansi|ELKS ANSI console,
+	clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+	rmso=\E[m, smso=\E[7m, use=elks-glasstty,
+
+# As a matter of fact, ELKS 0.0.83 on PCs defaults to ANSI emulation
+# instead of VT52, but the "elks" entry still refers to the latter.
+
+elks|default ELKS console,
+	use=elks-vt52,
+
+# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS
+# one but in screen size
+
+sibo|ELKS SIBO console,
+	cols#61, it#8, lines#20, use=elks-vt52,
+
+######## COMMERCIAL WORKSTATION CONSOLES
+#
+
+#### Alpha consoles
+#
+
+# This is from the OSF/1 Release 1.0 termcap file
+pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
+	am, xon,
+	cols#80, lines#25,
+	bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+	nel=^M^J, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+
+#### Sun consoles
+#
+
+# :is1: resets scrolling region in case a previous user had used "tset vt100"
+oldsun|Sun Microsystems Workstation console,
+	OTbs, am, km, mir, msgr,
+	cols#80, it#8, lines#34,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is1=\E[1r, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
+	rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
+# <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com>
+# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
+sun-il|Sun Microsystems console with working insert-line,
+	am, km, msgr,
+	cols#80, lines#34,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kdch1=\177, kend=\E[220z, kf1=\E[224z,
+	kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z,
+	kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z,
+	kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z,
+	knp=\E[222z, kopt=\E[194z, kpp=\E[216z, kres=\E[193z,
+	kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s,
+	sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m, smso=\E[7m,
+	u8=\E[1t, u9=\E[11t,
+# On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il>
+# flake out on the last line.  Unfortunately, without them the terminal has no
+# way to scroll.
+sun-cgsix|sun-ss5|Sun SparcStation 5 console,
+	il@, il1@, use=sun-il,
+# If you are using an SS5, change the sun definition to use sun-ss5.
+sun|sun1|sun2|Sun Microsystems Inc. workstation console,
+	use=sun-il,
+
+# From: <john@ucbrenoir>  Tue Sep 24 13:14:44 1985
+sun-s|Sun Microsystems Workstation window with status line,
+	hs,
+	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun,
+sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
+	hs,
+	dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e,
+sun-48|Sun 48-line window,
+	cols#80, lines#48, use=sun,
+sun-34|Sun 34-line window,
+	cols#80, lines#34, use=sun,
+sun-24|Sun 24-line window,
+	cols#80, lines#24, use=sun,
+sun-17|Sun 17-line window,
+	cols#80, lines#17, use=sun,
+sun-12|Sun 12-line window,
+	cols#80, lines#12, use=sun,
+sun-1|Sun 1-line window for sysline,
+	eslok, hs,
+	cols#80, lines#1,
+	dsl=^L, fsl=\E[K, tsl=^M, use=sun,
+sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character,
+	ich1@, rmir@, smir@, use=sun,
+sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
+	lines#35,
+	rmcup=\E[>4h, smcup=\E[>4l, use=sun,
+sun-type4|Sun Workstation console with type 4 keyboard,
+	kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z,
+	kcuu1=\E[215z, use=sun-il,
+
+# Most of the current references to sun-color are from users wondering why this
+# is the default on install.  Details from reading the wscons manpage, adding
+# cub, etc., here (rather than in the base sun-il entry) since it is not clear
+# when those were added -TD
+sun-color|Sun Microsystems Workstation console with color support (IA systems),
+	colors#8, pairs#64,
+	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+	cuu=\E[%p1%dA, home=\E[H, op=\E[m\E[p, setab=\E[4%p1%dm,
+	setaf=\E[3%p1%dm,
+	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+	use=sun,
+
+#### Iris consoles
+#
+
+# (wsiris: this had extension capabilities
+#	:HS=\E7F2:HE=\E7F7:\
+#	:CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
+# See the note on Iris extensions near the end of this file.
+# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> &
+# <flash> from BRL -- esr)
+wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
+	OTbs, OTnc, OTpt, am,
+	OTkn#3, cols#80, it#8, lines#40,
+	OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB,
+	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+	cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK,
+	flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL,
+	ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
+	kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
+	rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
+	smul=\E7R2\E9P,
+
+#### NeWS consoles
+#
+# Console terminal windows under the NeWS (Sun's Display Postscript windowing
+# environment).   Note: these have nothing to do with Sony's News workstation
+# line.
+#
+
+# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
+# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
+psterm|psterm-basic|NeWS psterm-80x34,
+	OTbs, am, hs, km, ul,
+	cols#80, it#8, lines#34,
+	blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;,
+	cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY,
+	dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl,
+	home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr,
+	ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^],
+	sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu,
+	tsl=\EOl,
+psterm-96x48|NeWS psterm 96x48,
+	cols#96, lines#48, use=psterm,
+psterm-90x28|NeWS psterm 90x28,
+	cols#90, lines#28, use=psterm,
+psterm-80x24|NeWS psterm 80x24,
+	cols#80, lines#24, use=psterm,
+# This is a faster termcap for psterm.  Warning:  if you use this termcap,
+# some control characters you type will do strange things to the screen.
+# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr)
+psterm-fast|NeWS psterm fast version (flaky ctrl chars),
+	OTbs, am, hs, km, ul,
+	cols#80, it#8, lines#34,
+	blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;,
+	cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y,
+	dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I,
+	il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni,
+	rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi,
+	smso=^Oo, smul=^Ou, tsl=^Ol,
+
+#### NeXT consoles
+#
+# Use `glasstty' for the Workspace application
+#
+
+# From: Dave Wetzel <dave@turbocat.snafu.de> 22 Dec 1995
+next|NeXT console,
+	am, xt,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+	ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+	rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m,
+nextshell|NeXT Shell application,
+	am,
+	cols#80,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, kcub1=^H,
+	kcud1=^J, nel=^M^J,
+
+#### Sony NEWS workstations
+#
+
+# (news-unk: this had :KB=news: -- esr)
+news-unk|SONY NEWS vt100 emulator common entry,
+	OTbs, OTpt, am, xenl,
+	cols#80,
+	OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	if=/usr/local/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
+	is2=\E[?7h\E[?1l\E[?3l\E7\E8, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
+	kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7,
+	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+#
+# (news-29: this had :TY=ascii: --esr)
+news-29,
+	lines#29, use=news-unk,
+# (news-29-euc: this had :TY=euc: --esr)
+news-29-euc,
+	use=news-29,
+# (news-29-sjis: this had :TY=sjis: --esr)
+news-29-sjis,
+	use=news-29,
+#
+# (news-33: this had :TY=ascii: --esr)
+news-33,
+	lines#33, use=news-unk,
+# (news-33-euc: this had :TY=euc: --esr)
+news-33-euc,
+	use=news-33,
+# (news-33-sjis: this had :TY=sjis: --esr)
+news-33-sjis,
+	use=news-33,
+#
+# (news-42: this had :TY=ascii: --esr)
+news-42,
+	lines#42, use=news-unk,
+# (news-42-euc: this had :TY=euc: --esr)
+news-42-euc,
+	use=news-42,
+# (news-42-sjis: this had :TY=sjis: --esr)
+news-42-sjis,
+	use=news-42,
+#
+#	NEWS-OS old termcap entry
+#
+# (news-old-unk: this had :KB=news:TY=sjis: --esr)
+news-old-unk|SONY NEWS vt100 emulator common entry,
+	OTbs, OTpt, am, xenl,
+	cols#80, vt#3,
+	OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, if=/usr/local/share/tabset/vt100, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+#
+# (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
+nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines,
+	OTbs,
+	lines#40,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
+	use=news-old-unk,
+#
+# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
+nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line,
+	lines#42,
+	is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8,
+	use=news-old-unk,
+#
+# (nwp-512-o: this had :KB=nwp410:DE=^H:  I interpret the latter as <OTbs>. --esr)
+nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines,
+	OTbs,
+	lines#40,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
+	use=news-old-unk,
+#
+# (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
+nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines,
+	OTbs,
+	lines#31,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8,
+	use=news-old-unk,
+#
+# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr)
+# also the alias vt100-bm.
+nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines,
+	OTbs,
+	lines#33,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8,
+	use=news-old-unk,
+#
+# (nwp513-o: had :DE=^H:, I think that's <OTbs>; also the alias vt100-bm --esr)
+nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines,
+	OTbs,
+	lines#31,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8,
+	use=news-old-unk,
+#
+# (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr)
+news28|sony vt100 emulator 28 lines,
+	OTbs,
+	lines#28,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8,
+	use=news-old-unk,
+#
+# (news29: this had :TY=ascii:KB=nws1200:\ --esr)
+news29|news28-a|sony vt100 emulator 29 lines,
+	lines#29,
+	is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8,
+	use=news-old-unk,
+#
+# (news511: this had :TY=sjis: --esr)
+nwp511|nwp-511|nwp-511 vt100,
+	OTbs, OTpt, am, xenl,
+	cols#80, lines#24,
+	clear=\E[;H\E[2J$<20/>, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
+	ed=\E[J$<30/>, el=\E[K$<3/>,
+	flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
+	il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H,
+	ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
+	rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h,
+	smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+# (news517: this had :TY=sjis:. --esr)
+nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows,
+	eslok, hs,
+	cols#80, lines#30,
+	OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
+	is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	tsl=\E[1$}\E[;%df, use=vt200,
+# (news517-w: this had :TY=sjis:. --esr)
+nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
+	eslok, hs,
+	cols#132, lines#50,
+	OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
+	is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+	tsl=\E[1$}\E[;%df, use=vt200,
+
+#### Common Desktop Environment
+#
+
+# This ships with Sun's CDE in Solaris 2.5
+# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
+dtterm|CDE desktop terminal,
+	am, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, lm#0, ncv@,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
+	ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+	ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
+	sc=\E7,
+	sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,
+
+#### Non-Unix Consoles
+#
+
+### EMX termcap.dat compatibility modes
+#
+# Keypad:	Home=\0G	Up=\0H	PrPag=\0I
+#		ka1,kh		kcuu1		kpp,ka3
+#
+#		Left=\0K	5=\0L		Right=\0M
+#		kcub1		kb2		kcuf1
+#
+#		End=\0O		Down=\0P	NxPag=\0Q
+#		kc1,kend	kcud1		kc3,knp
+#
+#		Ins=\0R		Del=\0S
+#		kich1		kdch1
+#
+# On keyboard with 12 function keys,
+#	shifted f-keys: F13-F24
+#	control f-keys: F25-F36
+#	alt f-keys:     F37-F48
+# The shift/control/alt keys do not modify each other, but alt overrides both,
+# and control overrides shift.
+#
+# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the
+# no_color_video to inform the application that standout(1), underline(2)
+# reverse(4) and invisible(64) don't work with color.
+emx-base|DOS special keys,
+	bce, bw,
+	it#8, ncv#71,
+	bel=^G, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q,
+	kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H,
+	kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205,
+	kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W,
+	kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\,
+	kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_,
+	kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d,
+	kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212,
+	kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l,
+	kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q,
+	kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B,
+	kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I,
+	use=ansi.sys,
+
+# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
+# a Unix-style environment used on OS/2.  (Note that the suffix makes some
+# names longer than 14 characters, the nominal maximum).
+#
+# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
+ansi-emx|ANSI.SYS color,
+	am, bce, eo, mir, msgr, xon,
+	colors#8, cols#80, it#8, lines#25, pairs#64,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H,
+	cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l,
+	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J,
+	kb2=\E[G, kbs=^H, kf0=\0D, kll=\0O, kspd=^Z, nel=^M^J,
+	rev=\E[5;37;41m, rmir=\E[4l, rmpch=\E[10m,
+	rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smpch=\E[11m,
+	smso=\E[0;31;47m, smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c,
+	u9=\E[c, use=emx-base,
+# nice colors for Emacs (white on blue, mode line white on cyan)
+ansi-color-2-emx|ANSI.SYS color 2,
+	clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m,
+	rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec,
+	setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m,
+	smul=\E[1;36;44m, use=ansi-emx,
+# nice colors for Emacs (white on black, mode line black on cyan)
+ansi-color-3-emx|ANSI.SYS color 3,
+	clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m,
+	rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec,
+	setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m,
+	smul=\E[0;36;40m, use=ansi-emx,
+mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
+	am,
+	cols#80, it#8, lines#24,
+	clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+	ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M,
+	kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>,
+	kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G,
+	kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=^M^J, rev=\E[7m,
+	sgr0=\E[0m,
+
+# Use this for cygwin32 (tested with beta 19.1)
+# underline is colored bright magenta
+# shifted kf1-kf12 are kf11-kf22
+cygwinB19|ansi emulation for cygwin32,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@,
+	use=ansi.sys,
+
+# Use this for cygwin (tested with version 1.1.0).
+# I've combined pcansi and linux.  Some values of course were different and
+# I've indicated which of these were and which I used.
+# Cheers, earnie_boyd@yahoo.com
+# several changes based on running with tack and comparing with older entry -TD
+# more changes from csw:
+#   add    cbt   [backtab]
+#   remove eo    [erase overstrike with blank]
+#   change clear was \E[H\E[J  now \E[2J  (faster?)
+#   remove cols
+#   remove lines
+#   remove ncv#3 [colors collide with highlights, bitmask] not applicable
+#                to MSDOS box?
+#   add    cub   [cursor back param]
+#   add    cuf   [cursor forward param]
+#   add    cuu   [cursor up param]
+#   add    cud   [cursor down param]
+#   add    hs    [has status line]
+#   add    fsl   [return from status line]
+#   add    tsl   [go to status line]
+#   add    smacs [Start alt charset] (not sure if this works)
+#   add    rmacs [End alt charset]   (ditto)
+#   add    smcup [enter_ca_mode] (save console; thanks Corinna)
+#   add    rmcup [exit_ca_mode]  (restore console; thanks Corinna)
+#   add    kb2   [center of keypad]
+#   add    u8    [user string 8] \E[?6c
+#   add    el    [clear to end of line] \E[K
+# Notes:
+#   cnorm [make cursor normal] not implemented
+#   flash [flash] not implemented
+#   blink [blink] not implemented very usefully in cygwin? \E[5m
+#   dim   [dim] not implemented very usefully in cygwin? \E[2m
+#   cub1  [cursor back 1] typically \E[D, but ^H is faster?
+#   kNXT  [shifted next key] not implemented
+#   kPRV  [shifted prev key] not implemented
+#   khome [home key] really is \E[1~ NOT \E[H
+#   tbc   [clear tab stops] not implemented
+#   xenl  [newline ignnored after 80 cols] messes up last line? Ehud Karni
+#   smpch [Start PC charset] is \E[11m, same as smacs
+#   rmpch [End PC charset] is \E[10m, same as rmacs
+#   mir   [move in insert mode] fails in tack?
+#   bce   [back color erase] causes problems with change background color?
+#   cvvis [make cursor very visible] causes a stackdump when testing with
+#         testcurs using the output option? \E[?25h\E[?8c
+#   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
+#   ech   [erase characters param] broken \E[%p1%dX
+#   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
+#
+# 2005/11/12 -TD
+#	Remove cbt since it does not work in current cygwin
+#	Add 'mir' and 'in' flags based on tack
+cygwin|ansi emulation for Cygwin,
+	am, hs, mir, msgr, xon,
+	colors#8, it#8, pairs#64,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD,
+	cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+	kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
+	nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
+	rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R,
+	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+	sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h,
+	smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];,
+	vpa=\E[%i%p1%dd, use=vt102+enq,
+
+# I've supplied this so that you can help test new values and add other
+# features.  Cheers, earnie_boyd@yahoo.com.
+#
+# Some features are from pcansi.  The op value is from linux.  Function-keys
+# are from linux.  These have been tested not to cause problems.  xenl was in
+# this list, but DOES cause problems so it has been removed
+cygwinDBG|Debug Version for Cygwin,
+	am, eo, mir, msgr, xon,
+	colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG,
+	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$,
+	kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
+	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
+	knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m,
+	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l,
+	rmso=\E[m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
+	sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
+	smul=\E[4m, tbc=\E[2g, vpa=\E[%i%p1%dd, use=vt102+enq,
+
+# Key definitions:
+# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc.  match the
+# encodings used by other x86 environments.  All others are invented for DJGPP.
+# Oddly enough, while several combinations of modifiers are tabulated, there is
+# none for shifted cursor keys.
+#
+#	F1			\E[[A
+#	F2			\E[[B
+#	F3			\E[[C
+#	F4			\E[[D
+#	F5			\E[[E
+#	F6			\E[17~
+#	F7			\E[18~
+#	F8			\E[19~
+#	F9			\E[20~
+#	F10			\E[21~
+#	F11			\E[23~
+#	F12			\E[24~
+#
+#	Delete			\E[3~
+#	Down Arrow		\E[B
+#	End			\E[4~
+#	Home			\E[1~
+#	Insert			\E[2~
+#	Left Arrow		\E[D
+#	Page Down		\E[6~
+#	Page Up			\E[5~
+#	Right Arrow		\E[C
+#	Up Arrow		\E[A
+#
+#	Shift-F1		\E[25~
+#	Shift-F2		\E[26~
+#	Shift-F3		\E[27~
+#	Shift-F4		\E[28~
+#	Shift-F5		\E[29~
+#	Shift-F6		\E[30~
+#	Shift-F7		\E[31~
+#	Shift-F8		\E[32~
+#	Shift-F9		\E[33~
+#	Shift-F10		\E[34~
+#	Shift-F11		\E[35~
+#	Shift-F12		\E[36~
+#
+#	Ctrl-F1			\E[47~
+#	Ctrl-F2			\E[48~
+#	Ctrl-F3			\E[49~
+#	Ctrl-F4			\E[50~
+#	Ctrl-F5			\E[51~
+#	Ctrl-F6			\E[52~
+#	Ctrl-F7			\E[53~
+#	Ctrl-F8			\E[54~
+#	Ctrl-F9			\E[55~
+#	Ctrl-F10		\E[56~
+#	Ctrl-F11		\E[57~
+#	Ctrl-F12		\E[58~
+#
+#	Ctrl-Delete		\E[43~
+#	Ctrl-Down Arrow		\E[38~
+#	Ctrl-End		\E[44~
+#	Ctrl-Home		\E[41~
+#	Ctrl-Insert		\E[42~
+#	Ctrl-Left Arrow		\E[39~
+#	Ctrl-Page Down		\E[46~
+#	Ctrl-Page Up		\E[45~
+#	Ctrl-Right Arrow	\E[40~
+#	Ctrl-Up Arrow		\E[37~
+#
+#	Alt-F1			\E[59~
+#	Alt-F2			\E[60~
+#	Alt-F3			\E[61~
+#	Alt-F4			\E[62~
+#	Alt-F5			\E[63~
+#	Alt-F6			\E[64~
+#	Alt-F7			\E[65~
+#	Alt-F8			\E[66~
+#	Alt-F9			\E[67~
+#	Alt-F10			\E[68~
+#	Alt-F11			\E[79~
+#	Alt-F12			\E[80~
+#
+#	Alt-Delete		\E[65~
+#	Alt-Down Arrow		\E[60~
+#	Alt-End			\E[66~
+#	Alt-Home		\E[41~
+#	Alt-Insert		\E[64~
+#	Alt-Left Arrow		\E[61~
+#	Alt-Page Down		\E[68~
+#	Alt-Page Up		\E[67~
+#	Alt-Right Arrow		\E[62~
+#	Alt-Up Arrow		\E[59~
+#
+# Also:
+#	Alt-A			\E[82~
+#	Alt-B			\E[82~
+#	Alt-C			\E[83~
+#	Alt-D			\E[84~
+#	Alt-E			\E[85~
+#	Alt-F			\E[86~
+#	Alt-G			\E[87~
+#	Alt-H			\E[88~
+#	Alt-I			\E[89~
+#	Alt-J			\E[90~
+#	Alt-K			\E[91~
+#	Alt-L			\E[92~
+#	Alt-M			\E[93~
+#	Alt-N			\E[94~
+#	Alt-O			\E[95~
+#	Alt-P			\E[96~
+#	Alt-Q			\E[97~
+#	Alt-R			\E[98~
+#	Alt-S			\E[99~
+#	Alt-T			\E[100~
+#	Alt-U			\E[101~
+#	Alt-V			\E[102~
+#	Alt-W			\E[103~
+#	Alt-X			\E[104~
+#	Alt-Y			\E[105~
+#	Alt-Z			\E[106~
+djgpp|ansi emulation for DJGPP alpha,
+	am, bce, msgr, xhp, xon, xt,
+	colors#8, it#8, pairs#64,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
+	clear=\E[H\E[J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+	kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=^M^J,
+	op=\E[37;40m, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmso=\E[m,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%?%p6%t;1%;%?%p7%t;8%;m,
+	sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+
+djgpp203|Entry for DJGPP 2.03,
+	OTbs, am,
+	cols#80, it#8, lines#25,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H,
+	kcud1=^J, nel=^M^J,
+
+djgpp204|Entry for DJGPP 2.04,
+	OTbs, am, AX,
+	colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
+	clear=\E[H\E[2J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kf0=\E[21~, kf1=\E[[A, kf10=\E[21~, kf2=\E[[B,
+	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
+	kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=^M^J, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, setab=\E[4%p1%dm,
+	setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+
+# This is tested using U/Win's telnet.  Scrolling is omitted because it is
+# buggy.  Another odd bug appears when displaying "~" in alternate character
+# set (the emulator spits out error messages).  Compare with att6386 -TD
+uwin|U/Win 3.2 console,
+	am, eo, in, msgr, xenl, xon,
+	colors#8, it#8, ncv#58, pairs#64,
+	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
+	ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[Y, kf1=\EOP,
+	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX,
+	khome=\E[H, kich1=\E[@, nel=^M^J, op=\E[39;49m, rc=\E8,
+	rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m,
+	rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
+	smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+
+# This entry fits the Windows NT console when the _POSIX_TERM environment
+# variable is set to 'on'.  While the Windows NT POSIX console is seldom used,
+# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
+# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating
+# systems is not, and (surprise!) they match very well.
+#
+# See:  MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up
+# VI POSIX Editor for Windows NT 3.1".  True to Microsoft form, not only
+# are the installation instructions a pile of mind-numbing bureaucratese,
+# but the termcap entry is actually broken and unusable as given; the :do:
+# capability is misspelled "d".
+#
+# To use this, you need to a bunch of environment variables:
+#
+# SET _POSIX_TERM=on
+# SET TERM=ansi
+# SET TERMCAP=location of termcap file in POSIX file format
+# which is case-sensitive.
+# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap
+# SET TMP=//C/TEMP
+#
+# Important note: setting the TMP environment variable in POSIX style renders
+# it incompatible with a lot of other applications, including Visual C++. So
+# you should have a separate command window just for vi. All the other
+# variables may be permanently set in the Control Panel\System applet.
+#
+# You can find out more about the restrictions of this facility at
+# <http://www.nentug.org/unix-to-nt/ntposix.htm>.
+#
+# From: Federico Bianchi <bianchi@magna.cisid.unipi.it>, 15 Jan 1997
+ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode,
+	am, bw, msgr,
+	cols#80, it#8, lines#25,
+	bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[V,
+	kcuf1=\E[C, kcuu1=\E[A, nel=\r\E[S, rc=\E[u, rev=\E[7m,
+	ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m,
+# From: jew@venus.sunquest.com
+# Date: 19 Feb 93 23:41:07 GMT
+# Here's  a  combination of  ansi and  vt100 termcap
+# entries   that  works  nearly   perfectly  for  me
+# (Gateway 2000 Handbook and Microsoft Works 3.0):
+pcmw|PC running Microsoft Works,
+	am, xenl,
+	cols#80, it#8, lines#24, vt#3,
+	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+	clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+	cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+	ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>,
+	rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/lib/tabset/vt100,
+	ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+	tbc=\E[3g$<2/>,
+
+# From: Federico Bianchi
+# This is the entry for the OpenNT terminal.
+# The ntconsole name is for backward compatability.
+# This is for OpenNT 2.0 and later.
+# Later OpenNT was renamed to Interix.
+#
+# Presently it is distributed by Microsoft as Services For Unix (SFU).
+# The 3.5 beta contains ncurses 4.2 (that is header files and executables,
+# the documentation dates from 1.9.9e) -TD
+
+interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color,
+	am, bw, msgr,
+	colors#8, cols#80, lines#25, ncv#3, pairs#64,
+	acsc=`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~q\304r\362s_t\303u\264v\301w\302x\263y\371z\372{\373|\374}\375~\376.\031-\030\,\021+^P0\333p\304r\304y\363z\362{\343|\330}\234,
+	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[2J, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[M, kend=\E[U, kf0=\EFA,
+	kf1=\EF1, kf10=\EFA, kf11=\EFB, kf12=\EFC, kf13=\EFD,
+	kf14=\EFE, kf15=\EFF, kf16=\EFG, kf17=\EFH, kf18=\EFI,
+	kf19=\EFJ, kf2=\EF2, kf20=\EFK, kf21=\EFL, kf22=\EFM,
+	kf23=\EFN, kf24=\EFO, kf25=\EFP, kf26=\EFQ, kf27=\EFR,
+	kf28=\EFS, kf29=\EFT, kf3=\EF3, kf30=\EFU, kf31=\EFV,
+	kf32=\EFW, kf33=\EFX, kf34=\EFY, kf35=\EFZ, kf36=\EFa,
+	kf37=\EFb, kf38=\EFc, kf39=\EFd, kf4=\EF4, kf40=\EFe,
+	kf41=\EFf, kf42=\EFg, kf43=\EFh, kf44=\EFi, kf45=\EFj,
+	kf46=\EFk, kf47=\EFm, kf48=\EFn, kf49=\EFo, kf5=\EF5,
+	kf50=\EFp, kf51=\EFq, kf52=\EFr, kf53=\EFs, kf54=\EFt,
+	kf55=\EFu, kf56=\EFv, kf57=\EFw, kf58=\EFx, kf59=\EFy,
+	kf6=\EF6, kf60=\EFz, kf61=\EF+, kf62=\EF-,
+	kf63=\EF\014 kf64=\EF$, kf7=\EF7, kf8=\EF8, kf9=\EF9,
+	kich1=\E[L, kll=\E[U, knp=\E[T, kpp=\E[S, ll=\E[U, nel=^M^J,
+	op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
+	rmcup=\E[2b\E[u\r\E[K, rmso=\E[m, rmul=\E[m, rs1=\Ec,
+	sc=\E[s, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	setb=\E[%p1%{40}%+%dm, setf=\E[%p1%{30}%+%dm,
+	sgr0=\E[0m, smcup=\E[s\E[1b, smso=\E[1m, smul=\E[4m,
+
+opennt-35|ntconsole-35|OpenNT-term35 compatible with color,
+	lines#35, use=opennt,
+
+opennt-50|ntconsole-50|OpenNT-term50 compatible with color,
+	lines#50, use=opennt,
+
+opennt-60|ntconsole-60|OpenNT-term60 compatible with color,
+	lines#60, use=opennt,
+
+opennt-100|ntconsole-100|OpenNT-term100 compatible with color,
+	lines#100, use=opennt,
+
+# OpenNT wide terminals
+opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color,
+	cols#125, use=opennt,
+
+opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color,
+	lines#35, use=opennt-w,
+
+opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color,
+	lines#50, use=opennt-w,
+
+opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color,
+	lines#60, use=opennt-w,
+
+opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color,
+	cols#132, use=opennt,
+
+# OpenNT terminals with no smcup/rmcup (names match termcap entries)
+interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color,
+	rmcup@, smcup@, use=opennt,
+
+opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color,
+	lines#35, use=opennt-nti,
+
+opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color,
+	lines#50, use=opennt-nti,
+
+opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color,
+	lines#60, use=opennt-nti,
+
+opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color,
+	lines#100, use=opennt-nti,
+
+######## COMMON TERMINAL TYPES
+#
+# This section describes terminal classes and maker brands that are still
+# quite common, but have proprietary command sets not blessed by ANSI.
+#
+
+#### Altos
+#
+# Altos made a moderately successful line of UNIX boxes.  In 1990 they were
+# bought out by Acer, a major Taiwanese manufacturer of PC-clones.
+# Acer has a web site at http://www.acer.com.
+#
+# Altos descriptions from Ted Mittelstaedt <tedm@agora.rain.com> 4 Sep 1993
+# His comments suggest they were shipped with the system.
+#
+
+# (altos2: had extension capabilities
+#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+#	:XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
+#	:YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\
+#	:HL=^AP\r:SP=\E[i:\
+#	:IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
+#	:LO=\E[0q:LC=\E[5q:LL=\E[6q:\
+# Comparison with the k* capabilities makes it obvious that the c* things are
+# shift keys.  I have renamed them to keys 32 and up accordingly.  Also,
+# :sr: was given as a boolean-- esr)
+altos2|alt2|altos-2|altos II,
+	cols#80, it#8, lines#24, xmc#0,
+	clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[1B, cuf1=\E[1C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
+	if=/usr/local/share/tabset/vt100, il1=\E[L, ind=^J,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r,
+	kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r,
+	kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
+	kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
+	kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
+	kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r,
+	nel=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+# (altos3: had extension capabilities
+#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+#	:XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
+#	:HL=^AP\r:SP=\E[i:\
+#	:IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
+altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V,
+	blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
+altos4|alt4|altos-4|altos IV,
+	use=wy50,
+# (altos7: had extension capabilities:
+#	:GG#0:GI=\EH8:GF=\EH7:\
+#	:c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+#	:c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+#	:c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+#	:cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+# Comparison with the k* capabilities makes it obvious that the c* things are
+# shift keys.  I have renamed them to keys 32 and up accordingly.  I have
+# also made this entry relative to adm12 in order to give it an <sgr>. The
+# <invis> imported by use=adm+sgr may work, let me know. -- esr)
+altos7|alt7|altos VII,
+	am, mir,
+	cols#80, lines#24, xmc#0,
+	acsc=j5k3l2m1n8q\:t4u9v=w0x6, blink=\EG2, bold=\EGt,
+	clear=\E+^^, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE,
+	ind=^J, invis=\EG1,
+	is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r,
+	kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r,
+	kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
+	kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
+	kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
+	kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^^, kil1=^AJ\r, kind=^AO\r,
+	knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=^M^J, ri=\Ej,
+	rmir=\Er, smir=\Eq, use=adm+sgr,
+altos7pc|alt7pc|altos PC VII,
+	kend=\ET, use=altos7,
+
+#### Hewlett-Packard (hp)
+#
+#	Hewlett-Packard
+#	8000 Foothills Blvd
+#	Roseville, CA 95747
+#	Vox: 1-(916)-785-4363	(Technical response line for VDTs)
+#	     1-(800)-633-3600	(General customer support)
+#
+#
+# As of March 1998, HP no longer has any terminals in production.
+# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being
+# supported (they still have parts). So are the 2392a and 2394a.
+# See the WORKSTATION CONSOLES section for the 700s.
+#
+
+# Generic HP terminal - this should (hopefully) work on any HP terminal.
+hpgeneric|hp|hewlett-packard generic terminal,
+	OTbs, OTpt, am, da, db, mir, xhp,
+	cols#80, lines#24, lm#0, vt#6,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM,
+	ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL,
+	ind=^J, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@,
+	sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
+	vpa=\E&a%p1%dY,
+
+hp110|hewlett-packard model 110 portable,
+	lines#16, use=hpgeneric,
+
+hp+pfk+cr|hp function keys with CR,
+	kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r,
+	kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r,
+
+hp+pfk-cr|hp function keys w/o CR,
+	kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev,
+	kf8=\Ew,
+
+# The hp2621s use the same keys for the arrows and function keys,
+# but not separate escape sequences. These definitions allow the
+# user to use those keys as arrow keys rather than as function
+# keys.
+hp+pfk+arrows|hp alternate arrow definitions,
+	kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@,
+	kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r,
+	kll=\Eq\r, kri=\Es\r,
+
+hp+arrows|hp arrow definitions,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
+	kind=\ES, kll=\EF, kri=\ET,
+
+# Generic stuff from the HP 262x series
+#
+hp262x|HP 262x terminals,
+	xhp,
+	blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES,
+	invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
+	kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET,
+	krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
+	sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c,
+	sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
+
+# Note: no <home> on HPs since that homes to top of memory, not screen.
+# Due to severe 2621 braindamage, the only way to get the arrow keys to
+# transmit anything at all is to turn on the function key labels
+# with <smkx>, and even then the user has to hold down shift!
+# The default 2621 turns off the labels except when it has to to
+# enable the function keys. If your installation prefers labels
+# on all the time, or off all the time (at the "expense" of the
+# function keys), use 2621-nl or 2621-wl.
+#
+# Note: there are newer ROMs for 2621's that allow you to set
+# strap A so the regular arrow keys xmit \EA, etc, as with the
+# 2645. However, even with this strap set, the terminal stops
+# xmitting if you reset it, until you unset and reset the strap!
+# Since there is no way to set/unset the strap with an escape
+# sequence, we don't use it in the default.
+# If you like, you can use 2621-ba (brain-damaged arrow keys).
+hp2621-ba|2621 w/new rom and strap A set,
+	rmkx@, smkx@, use=hp+arrows, use=hp2621,
+
+# hp2621 with function labels. Most of the time they are off,
+# but inside vi, the function key labels appear. You have to
+# hold down shift to get them to xmit.
+hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels,
+	is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl,
+hp2621-fl|hp 2621,
+	xhp@, xon,
+	pb#19200,
+	cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>,
+	ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@,
+	sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD,
+	use=hp+pfk+cr, use=hpgeneric,
+
+# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p
+hp2621p|hp 2621 with printer,
+	mc4=\E&p13C, mc5=\E&p11C, use=hp2621,
+
+hp2621p-a|hp2621p with fn as arrows,
+	use=hp+pfk+arrows, use=hp2621p,
+
+# hp2621 with k45 keyboard
+hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard,
+	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
+
+# 2621 using all 48 lines of memory, only 24 visible at any time.
+hp2621-48|48 line 2621,
+	lines#48,
+	cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR,
+	use=hp2621,
+
+# 2621 with no labels ever. Also prevents vi delays on escape.
+hp2621-nl|hp 2621 with no labels,
+	kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@,
+	use=hp2621-fl,
+
+# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
+# (wrong).
+#
+hp2621-nt|hp 2621 w/no tabs,
+	ht@, use=hp2621,
+
+# Hp 2624 B with 4 or 10 pages of memory.
+#
+# Some assumptions are made with this entry. These settings are
+# NOT set up by the initialization strings.
+#
+# Port Configuration
+# 	RecvPace=Xon/Xoff
+# 	XmitPace=Xon/Xoff
+# 	StripNulDel=Yes
+#
+# Terminal Configuration
+# 	InhHndShk=Yes
+# 	InhDC2=Yes
+# 	XmitFnctn(A)=No
+# 	InhEolWrp=No
+#
+# Note: the 2624 DOES have a true <home>, believe it or not!
+#
+# The 2624 has an "error line" to which messages can be sent.
+# This is CLOSE to what is expected for a "status line". However,
+# after a message is sent to the "error line", the next carriage
+# return is EATEN and the "error line" is turned back off again!
+# So I guess we can't define <hs>, <eslok>, <wsl>, <dsl>, <fsl>, <tsl>.
+#
+# This entry supports emacs (and any other program that uses raw
+# mode) at 4800 baud and less. I couldn't get the padding right
+# for 9600.
+#
+# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr)
+hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B,
+	da, db,
+	lm#96,
+	flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F,
+	use=hp+labels, use=scrhp,
+
+# This hp2626 entry does not use any of the fancy windowing stuff
+# of the 2626.
+#
+# Indeed, terminfo does not yet handle such stuff. Since changing
+# any window clears memory, it is probably not possible to use
+# this for screen opt.
+#
+# ed is incredibly slow most of the time - I am guessing at the
+# exact padding. Since the terminal uses xoff/xon this is intended
+# only for cost computation, so that the terminal will prefer el
+# or even dl1 which is probably faster!
+#
+# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only
+# extra slow on the last line of the window.
+#
+# The padding probably should be changed.
+#
+hp2626|hp2626a|hp2626p|hp 2626,
+	da, db,
+	lm#0, pb#19200,
+	ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>,
+	is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr,
+	use=hp+labels, use=scrhp,
+
+# This entry is for sysline. It allocates a 23 line window with
+# a 115 line workspace for regular use, and a 1 line window for
+# the status line.
+#
+# This assumes port 2 is being used.
+# Turn off horizontal line, Create ws #1 with 115 lines,
+# Create ws #2 with 1 line, Create window #1 lines 1-23,
+# Create window #2 lines 24-24, Attach cursor to workspace #1.
+# Note that this clears the tabs so it must be done by tset before
+# it sets the tabs.
+#
+hp2626-s|hp 2626 using only 23 lines,
+	eslok, hs,
+	lines#23,
+	fsl=\E&d@\E&w7f2p1I\E&w4f1I,
+	is1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r,
+	tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626,
+# Force terminal back to 24 lines after being 23.
+hp2626-ns|hp 2626 using all 24 lines,
+	is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r,
+	use=hp2626,
+# Various entries useful for small windows on 2626.
+hp2626-12|hewlett-packard 2626 12 lines,
+	lines#12, use=hp2626,
+hp2626-12x40|hewlett-packard 2626 12 lines 40 columns,
+	cols#40, lines#12, use=hp2626,
+hp2626-x40|hewlett-packard 2626 40 columns,
+	cols#40, use=hp2626,
+hp2626-12-s|hewlett-packard 2626 11 lines plus status,
+	lines#11, use=hp2626-s,
+
+#
+# hp2627 color tubes from University of Wisconsin
+#
+hp2627a-rev|hp 2627 with reverse video colors,
+	cr=^M, cud1=^J, ht=^I, ind=^J,
+	is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r,
+	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@,
+	smul=\E&dD\E&v1S, use=hp2621-nl,
+hp2627a|hp 2627 color terminal with no labels,
+	cr=^M, cud1=^J, ht=^I, ind=^J,
+	is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
+	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmso=\E&v0S,
+	rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S,
+	use=hp2621-nl,
+hp2627c|hp 2627 color (cyan) terminal with no labels,
+	cr=^M, cud1=^J, ht=^I, ind=^J,
+	is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
+	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a,
+
+# hp2640a doesn't have the Y cursor addressing feature, and C is
+# memory relative instead of screen relative, as we need.
+#
+hp2640a|hp 2640a,
+	cup@, rmkx@, smkx@, use=hp2645,
+
+hp2640b|hp2644a|hp 264x series,
+	rmkx@, smkx@, use=hp2645,
+
+# (hp2641a: removed unknown :gu: -- esr)
+hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry,
+	am, da, db, mir, xhp,
+	cols#80, lines#24,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM,
+	ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I,
+	if=/usr/local/share/tabset/std, il1=\EL, ind=^J,
+	is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+	rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
+	vpa=\E&a%p1%2dY,
+
+# This terminal should be used at 4800 baud or less. It needs padding for
+# plain characters at 9600, I guessed at an appropriate cr delay.  It really
+# wants ^E/^F handshaking, but that doesn't work well even if you write
+# software to support it.
+hp2645|hp45|HP 2645 series,
+	pb#9600,
+	blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+	ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL,
+	kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB,
+	rmkx=\E&s0A,
+	sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c,
+	sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
+# You should use this terminal at 4800 baud or less.
+hp2648|hp2648a|HP 2648a graphics terminal,
+	clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>,
+	dch1=\EP$<7>, ip=$<5>, use=hp2645,
+
+# The HP 150 terminal is a fairly vanilla HP terminal, with the
+# clreol standout problem. It also has graphics capabilities and
+# a touch screen, which we don't describe here.
+hp150|hewlett packard Model 150,
+	OTbs, use=hp2622,
+
+# HP 2382a terminals, "the little ones." They don't have any
+# alternate character set support and sending out ^N/^O will
+# leave the screen blank.
+hp2382a|hp2382|hewlett packard 2382a,
+	da, db,
+	lh#1, lm#48,
+	acsc@,
+	pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s,
+	rmacs@,
+	sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c,
+	sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp,
+
+hp2621-a|hp2621a-a|hp2621 with fn as arrows,
+	use=hp+pfk+arrows, use=hp2621-fl,
+
+# newer hewlett packard terminals
+
+newhpkeyboard|generic entry for HP extended keyboard,
+	kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
+	kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV,
+	kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A,
+	use=hp+pfk-cr,
+
+newhp|generic entry for new hewlett packard terminals,
+	am, bw, mir, xhp, xon,
+	cols#80, lines#24, pb#4800,
+	acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRmFn/q\,t5u6v8w7x.,
+	bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=^M, cub1=^H,
+	cud1=^J, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH,
+	dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=^J,
+	invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=^M^J,
+	pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s,
+	pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s,
+	pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET,
+	rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg,
+	sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;,
+	sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD,
+	tbc=\E3, use=newhpkeyboard,
+
+memhp|memory relative addressing for new HP ttys,
+	vt#6,
+	clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR,
+	cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR,
+	home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r,
+	mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp,
+
+scrhp|screen relative addressing for new HP ttys,
+	clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC,
+	cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC,
+	cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR,
+	home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA,
+	mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp,
+
+# (hp+labels: added label values from a BRL termcap -- esr)
+hp+labels|"standard" label info for new HP ttys,
+	lh#2, lw#8, nlab#8,
+	lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8,
+	pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s,
+	rmln=\E&j@, smln=\E&jB,
+
+hp+printer|"standard" printer info for HP ttys,
+	ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C,
+
+
+# The new hp2621b is kind of a cross between the old 2621 and the
+# new 262x series of machines. It has dip-switched options.
+# The firmware has a bug in it such that if you give it a null
+# length label, the following character is eaten!
+hp2621b|hp 2621b with old style keyboard,
+	lh#1, lm#48, lw#8, nlab#8,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
+	kind=\ET, kll=\EF, kri=\ES,
+	pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r,
+	smln=\E&jB, use=hp2621,
+
+hp2621b-p|hp 2621b with printer,
+	use=hp+printer, use=hp2621b,
+
+# hp2621b - new 2621b with new extended keyboard
+# these are closer to the new 26xx series than the other 2621b
+hp2621b-kx|hp 2621b with extended keyboard,
+	use=newhpkeyboard, use=hp2621b,
+
+hp2621b-kx-p|hp 2621b with new keyboard & printer,
+	use=hp+printer, use=hp2621b-kx,
+
+# Some assumptions are made in the following entries.
+# These settings are NOT set up by the initialization strings.
+#
+#    Port Configuration
+# RecvPace=Xon/Xoff	XmitPace=Xon/Xoff	StripNulDel=Yes
+#
+#    Terminal Configuration
+# InhHndShk(G)=Yes	InhDC2(H)=Yes
+# XmitFnctn(A)=No		InhEolWrp=No
+#
+#
+# Hp 2622a & hp2623a display and graphics terminals
+#
+hp2622|hp2622a|hp 2622,
+	da, db,
+	lm#0, pb#19200,
+	is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp,
+
+# The 2623 is a 2622 with extra graphics hardware.
+hp2623|hp2623a|hp 2623,
+	use=hp2622,
+
+hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer,
+	use=hp+printer, use=hp2624,
+
+# The hewlett packard B can have an optional extra 6 pages of memory.
+hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory,
+	lm#240, use=hp2624,
+
+hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer,
+	lm#240, use=hp2624b-p,
+
+# Color manipulations for HP terminals
+hp+color|hp with colors,
+	ccc,
+	colors#16, ncv#17, pairs#7,
+	initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI,
+	oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I,
+	op=\E&v0S, scp=\E&v%p1%dS,
+
+# <is2> sets the screen to be 80 columns wide
+hp2397a|hp2397|hewlett packard 2397A color terminal,
+	is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color,
+
+#  HP 700/44 Setup parameters:
+# Terminal Mode		HP-PCterm
+# Inhibit Auto Wrap	NO
+# Status Line		Host Writable
+# PC Character Set	YES
+# Twenty-Five Line Mode	YES
+# XON/XOFF		@128 or 64 (sc)
+# Keycode Mode 		NO   or YES (sc)
+# Backspace Key		BS or BS/DEL
+#
+# <is2> 	sets pcterm; autowrap; 25 lines; pc char set; prog DEL key;
+# \E\\? does not turn off keycode mode
+# <smsc>	sets alternate start/stop; keycode on
+hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode,
+	am, eo, xenl, xon,
+	cols#80, lines#25,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[2J\E[H,
+	cnorm=\E[?25h, cr=^M, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
+	ind=^J,
+	is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\,
+	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
+	kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~,
+	kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~,
+	kpp=\E[5~, rmam=\E[?7l,
+	rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
+	smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
+	smul=\E[4m, xoffc=g, xonc=e,
+#
+# (hp2392: copied <rmir> here from hpex -- esr)
+hp2392|239x series,
+	cols#80,
+	cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r,
+	kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r,
+	kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
+	rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
+	use=hpsub,
+
+hpsub|hp terminals -- capability subset,
+	am, da, db, mir, xhp, xon,
+	lines#24,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC,
+	ht=^I, if=/usr/local/share/tabset/stdcrt, il1=\EL, ind=^J,
+	is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@,
+	sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,
+
+# hpex:
+#	May be used for most 24 x 80 hp terminals,
+# but has no padding added, so may allow runover in some terminals at high
+# baud rates.  Will not work for hp2640a or hp2640b terminals, hp98x6 and
+# hp98x5 terminal emulators or hp98x6 consoles.
+# 	Adds xy-cursor addressing, vertical cursor addressing, home,
+# last line, and underline capabilities.
+#
+# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
+# moved <rmir> here from hpsub -- esr)
+hpex|hp extended capabilites,
+	cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H,
+	kcub1=^H, kcud1=^J, nel=^M^J, rmir=\ER, rmul=\E&d@, smir=\EQ,
+	smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub,
+
+# From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996
+hp2|hpex2|hewlett-packard extended capabilities newer version,
+	am, da, db, mir, xhp,
+	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0,
+	bel=^G, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB,
+	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
+	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
+	il1=\EL, ind=^J, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+	ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
+	kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
+	kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
+	krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
+	pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
+	pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
+	pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
+	pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A,
+	rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
+	sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;,
+	sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB,
+	smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+
+# HP 236 console
+# From: <ddavis@ic.berkeley.edu>
+hp236|hp236 internal terminal emulator,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=\EF, cnorm=\EDE, cub1=^H,
+	cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB,
+	dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI,
+	sgr0=\ECI, smso=\EBI,
+
+# This works on a hp300 console running Utah 4.3 BSD
+# From: Craig Leres <leres@okeeffe.berkeley.edu>
+hp300h|HP Catseye console,
+	OTbs, am, da, db, mir, xhp,
+	cols#128, lines#51, lm#0, xmc#0,
+	bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB,
+	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
+	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I,
+	if=/usr/local/share/tabset/stdcrt, il1=\EL, ind=^J, kbs=^H,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
+	rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
+	smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3,
+	vpa=\E&a%p1%dY,
+# From: Greg Couch <gregc@ernie.berkeley.edu>
+hp9837|hp98720|hp98721|HP 9000/300 workstations,
+	OTbs, am, da, db, mir, xhp,
+	cols#128, it#8, lines#46, lm#0,
+	bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
+	cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
+	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
+	il1=\EL, ind=^J, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+	ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU,
+	kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@,
+	sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
+	tbc=\E3, vpa=\E&a%p1%dY,
+# HP 9845 desktop computer from BRL
+# (hp9845: removed unknown capability :gu: -- esr)
+hp9845|HP 9845,
+	OTbs, am, da, db, eo, mir, xhp,
+	cols#80, lines#21,
+	OTbc=\ED, clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY,
+	cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK,
+	if=/usr/local/share/tabset/std, il1=\EL, rmir=\ER, rmso=\E&d@,
+	smir=\EQ, smso=\E&dB,
+# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
+# (hp98550: replaced /usr/local/share/tabset/9837 with std because <it#8>,<hts=\E1>;
+# added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
+hp98550|hp98550a|HP 9000 Series 300 color console,
+	OTbs, am, da, db, mir, xhp,
+	cols#128, it#8, lines#49, lm#0,
+	acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR,
+	clear=\EH\EJ, cnorm=\E*dQ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH,
+	dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
+	if=/usr/local/share/tabset/std, il1=\EL, ind=^J, invis=\E&ds,
+	kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
+	kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+	khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
+	knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dJ,
+	rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
+	sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smso=\E&dJ,
+	smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+# From: Victor Duchovni <vic@fine.princeton.edu>
+# (hp700-wy: removed obsolete ":nl=^J:";
+# replaced /usr/local/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr)
+hp700-wy|HP700/41 emulating wyse30,
+	OTbs, am, bw, mir, msgr,
+	cols#80, it#8, lines#24, xmc#1,
+	cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1,
+	if=/usr/local/share/tabset/stdcrt, il1=\EE$<0.7*/>,
+	is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=\177, kcbt=\EI,
+	kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY,
+	kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K,
+	ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>,
+	sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>,
+	smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c,
+hp70092|hp70092a|hp70092A|HP 700/92,
+	am, da, db, xhp,
+	cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8,
+	acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA,
+	bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H,
+	cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
+	dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I,
+	hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+	ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
+	kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
+	kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
+	krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER,
+	rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
+	sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
+	smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+
+bobcat|sbobcat|HP 9000 model 300 console,
+	am, da, db, mir, xhp,
+	cols#128, it#8, lines#47, xmc#0,
+	cbt=\Ei, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP,
+	dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I,
+	il1=\EL$<10*/>, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=^M^J, rmir=\ER,
+	rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ,
+	smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>,
+gator-t|HP 9000 model 237 emulating extra-tall AAA,
+	lines#94, use=gator,
+gator|HP 9000 model 237 emulating AAA,
+	bw, km, mir, ul,
+	cols#128, it#8, lines#47,
+	bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
+	dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%d`,
+	ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, il=\E[%p1%dL$<1*/>,
+	il1=\E[L, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J,
+	rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+gator-52|HP 9000 model 237 emulating VT52,
+	cols#128, lines#47, use=vt52,
+gator-52t|HP 9000 model 237 emulating extra-tall VT52,
+	lines#94, use=gator-52,
+
+#### Honeywell-Bull
+#
+# From: Michael Haardt <michael@gandalf.moria> 11 Jan 93
+#
+
+# Honeywell Bull terminal.  Its cursor and function keys send single
+# control characters and it has standout/underline glitch.  Most programs
+# do not like these features/bugs.  Visual bell is realized by flashing the
+# "keyboard locked" LED.
+dku7003-dumb|Honeywell Bull DKU 7003 dumb mode,
+	cols#80, lines#25,
+	clear=^]^_, cr=^M, cub1=^Y, cud1=^K, cuf1=^X,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K,
+	flash=\E[2h\E[2l, home=^], ht=^I, ind=^J, kbs=^H, kcub1=^Y,
+	kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=^M^J,
+dku7003|Honeywell Bull DKU 7003 all features described,
+	msgr,
+	xmc#1,
+	blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+	use=dku7003-dumb,
+
+#### Lear-Siegler (adm)
+#
+# These guys are long since out of the terminals business, but
+# in 1995 many current terminals still have an adm type as one of their
+# emulations (usually their stupidest, and usually labeled adm3, though
+# these `adm3' emulations normally have adm3a+ capabilities).
+#
+# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a
+# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator')
+# was being held to ground would trigger a send of the top line on the screen.
+# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22
+# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>,
+# for clearing up this point.)
+
+adm1a|adm1|lsi adm1a,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
+	ind=^J,
+adm2|lsi adm2,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+# (adm3: removed obsolete ":ma=^K^P:" -- esr)
+adm3|lsi adm3,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J,
+# The following ADM-3A switch settings are assumed for normal operation:
+#	SPACE		U/L_DISP	CLR_SCRN	24_LINE
+#	CUR_CTL		LC_EN		AUTO_NL		FDX
+# Other switches may be set for operator convenience or communication
+# requirements.  I recommend
+#	DISABLE_KB_LOCK	LOCAL_OFF	103		202_OFF
+#	ETX_OFF		EOT_OFF
+# Most of these terminals required an option ROM to support lower case display.
+# Open the case and look at the motherboard; if you see an open 24-pin DIP
+# socket, you may be out of luck.
+#
+# (adm3a: some capabilities merged in from BRl entry -- esr)
+adm3a|lsi adm3a,
+	OTbs, am,
+	cols#80, lines#24,
+	OTma=^K^P, OTnl=^J, bel=^G, clear=\032$<1/>, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, rs2=^N,
+adm3a+|adm3a plus,
+	kbs=^H, use=adm3a,
+# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
+adm5|lsi adm5,
+	xmc#1,
+	bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^,
+	rmso=\EG, smso=\EG, use=adm3a+,
+# A lot of terminals other than adm11s use these.  Wherever you see
+# use=adm+sgr with some of its capabilities disabled, try the
+# disabled ones.  They may well work but not have been documented or
+# expressed in the using entry.  We'd like to cook up an <sgr> but the
+# <rmacs>/<smacs> sequences of the using entries vary too much.
+adm+sgr|adm style highlight capabilities,
+	invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0,
+	smso=\EG4, smul=\EG8,
+# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL
+# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs>
+# <khome> from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>.  <clear> could also
+# be ^Z, according to his entry.
+# (adm11: <smul>=\EG4 was obviously erroneous because it also said
+# <rev>=\EG4.  Looking at other ADMs confirms this -- esr)
+adm11|LSI ADM-11,
+	OTbs, am, hs,
+	OTkn#8, cols#80, lines#24,
+	OTnl=^J, bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I,
+	kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, khome=^^, nel=^M^J, tsl=\EF\E),
+	use=adm+sgr,
+# From: Andrew Scott Beals <bandy@lll-crg.ARPA>
+# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
+# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996
+# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :".  This formerly had
+# <is2>=\Eq but that looked wrong; this <is2> is from Dave Yost <esquire!yost>
+# via BRL.  That entry asserted <xmc#1>, but I've left that out because
+# neither earlier nor later ADMSs have it -- esr)
+#
+# You will need to get into the supervisor setup before you can set
+# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should
+# see a lot more setup options.
+#
+# While in supervisor setup you can also use following codes:
+#
+# Ctrl-P Personality character selections (configure for example what
+#        arrow keys send, if I recall correctly)
+# Ctrl-T tabs 1-80   use left&right to move and up to set and
+# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor
+# Ctrl-B Binary setup (probably not needed. I think that everything can
+#        be set using normal setup)
+# Ctrl-A Answerback mode (enter answerback message)
+# Ctrl-U User friendly mode (normal setup)
+# Ctrl-D Defaults entire setup and function keys from EPROM tables
+# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds.
+# Ctrl-R Reads both setup and functions keys from NVM.
+# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status
+#
+# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to
+# RTS/CTS used nowadays with virtually every modem and computer. 19200
+# bps works fine with hardware flow control.
+#
+# The following null-modem cable should fix this and enable you to use
+# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also
+# set ADM-12+ for DTR handshaking from supervisor setup.
+#
+# PC Serial   ADM-12+
+#  --------   -------
+#         2 - 3
+#         3 - 2
+#         4 - 5
+#         5 - 20
+#       6,8 - 4
+#         7 - 7
+#        20 - 6,8
+#
+adm12|lsi adm12,
+	OTbs, OTpt, am, mir,
+	OTug#1, cols#80, it#8, lines#24,
+	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE,
+	is2=\E0        \E1        \E1        \E1        \E1        \E1        \E1        \E1        \E1,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
+	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
+	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0,
+	use=adm+sgr,
+# (adm20: removed obsolete ":kn#7:" -- esr)
+adm20|lear siegler adm20,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L,
+	cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE,
+	kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(,
+	sgr0=\E(, smso=\E),
+adm21|lear siegler adm21,
+	xmc#1,
+	bel=^G, cr=^M, cud1=^J, dch1=\EW, dl1=30*\ER, ed=\EY, el=\ET,
+	ich1=\EQ, il1=30*\EE, ind=^J, invis@, kbs=^H, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, use=adm+sgr,
+	use=adm3a,
+# (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
+# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
+# removed bogus-looking \200 from before <cup>. -- esr)
+adm22|lsi adm22,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE,
+	is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0\0\0\0\0,
+	kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
+	lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E),
+# ADM 31 DIP Switches
+#
+# This information comes from two versions of the manual for the
+# Lear-Siegler ADM 31.
+#
+# Main board:
+#                  rear of case
+#   +-||||-------------------------------------+
+#   + S1S2                              ||S    +
+#   +                                   ||3    +
+#   +                                          +
+#   +                                ||S       +
+#   +                                ||4       +
+#   +                                          +
+#   +                                          +
+#   +                                          +
+#   +                                          +
+#   +                                          +
+# +-+                                          +-+
+# +                                              +
+# +                               S5 S6 S7       +
+# +                               == == ==       +
+# +----------------------------------------------+
+#            front of case (keyboard)
+#
+#  S1 - Data Rate - Modem
+#  S2 - Data Rate - Printer
+# ------------------------
+# Data Rate   Setting
+# -------------------
+# 50          0 0 0 0
+# 75          1 0 0 0
+# 110         0 1 0 0
+# 134.5       1 1 0 0
+# 150         0 0 1 0
+# 300         1 0 1 0
+# 600         0 1 1 0
+# 1200        1 1 1 0
+# 1800        0 0 0 1
+# 2000        1 0 0 1
+# 2400        0 1 0 1
+# 3600        1 1 0 1
+# 4800        0 0 1 1
+# 7200        1 0 1 1
+# 9600        0 1 1 1
+# x           1 1 1 1
+#
+# S3 - Interface/Printer/Attributes
+# ---------------------------------
+# Printer Busy Control
+# sw1   sw2   sw3
+# ---------------
+# off   off   off   Busy not active, CD disabled
+# off   off   on    Busy not active, CD enabled
+# off   on    off   Busy active on J5-20, CD disabled
+# on    off   off   Busy active on J5-19, CD disabled - Factory Set.
+# on    off   on    Busy active on J5-19, CD enabled
+#
+# sw4   Used in conjuction with S4 for comm interface control - Fact 0
+#
+# sw5   Secondary Channel Control (Hardware implementation only) - Fact 0
+#
+# sw6   ON enables printer BUSY active LOW - Factory Setting
+#       OFF enables printer BUSY active HIGH - If set to this, ADM31 senses
+#
+# sw7   ON - steady cursor - Factory Setting
+#       OFF - blinking cursor
+#
+# sw8   ON causes selected attribute character to be displayed
+#       OFF causes SPACE to be displayed instead - Factory Setting
+#
+# S4 - Interface
+# --------------
+# Modem Interface
+# S3    S4    S4    S4    S4
+# sw4   sw1   sw2   sw3   sw4
+# ---------------------------
+# OFF   ON    OFF   ON    OFF   Enable RS-232C interface, Direct Connect and
+#                               Current Loop disabled - Factory Setting
+# ON    ON    OFF   ON    OFF   Enable Current Loop interface, Direct Connect
+#                               disabled
+# OFF   OFF   ON    OFF   ON    Enable Direct Connect interface, RS-232C and
+#                               Current Loop Disabled
+#
+# sw5   ON disables dot stretching mode - Factory Setting
+#       OFF enables dot stretching mode
+# sw6   ON enables blanking function
+#       OFF enables underline function - Factory Setting
+# sw7   ON causes NULLS to be displayed as NULLS
+#       OFF causes NULLS to be displayed as SPACES - Factory Setting
+#
+# S5 - Word Structure
+# -------------------
+# sw1   ON enables BREAK key - Factory Setting
+#       OFF disables BREAK key
+# sw2   ON selects 50Hz monitor refresh rate
+#       OFF selects 60Hz monitor refresh rate - Factory Setting
+#
+# Modem Port Selection
+# sw3   sw4   sw5
+# ---------------
+# ON    ON    ON    Selects 7 DATA bits, even parity, 2 STOP bits
+# OFF   ON    ON    Selects 7 DATA bits, odd  parity, 2 STOP bits
+# ON    OFF   ON    Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set.
+# OFF   OFF   ON    Selects 7 DATA bits, odd  parity, 1 STOP bit
+# ON    ON    OFF   Selects 8 DATA bits, no   parity, 2 STOP bits
+# OFF   ON    OFF   Selects 8 DATA bits, no   parity, 1 STOP bit
+# ON    OFF   OFF   Selects 8 DATA bits, even parity, 1 STOP bit
+# OFF   OFF   OFF   Selects 8 DATA bits, odd  parity, 1 STOP bit
+#
+# sw6   ON  sends bit 8 a 1 (mark)
+#       OFF sends bit 8 as 0 (space) - Factory Setting
+# sw7   ON  selects Block Mode
+#       OFF selects Conversation Mode - Factory Setting
+# sw8   ON  selects Full Duplex operation
+#       OFF selects Half Duplex operation - Factory Setting
+#
+# S6 - Printer
+# ------------
+# sw1, sw2, sw6, sw7   Reserved - Factory 0
+#
+# Printer Port Selection
+# same as Modem above, bit 8 (when 8 DATA bits) is always = 0
+#
+# sw8   ON   enables Printer Port
+#       OFF disables Printer Port - Factory Setting
+#
+# S7 - Polling Address
+# --------------------
+# sw1-7 Establish ASCII character which designates terminal polling address
+#       ON  = logic 0
+#       OFF = logic 1 - Factory Setting
+# sw8   ON   enables Polling Option
+#       OFF disables Polling Option - Factory Setting
+#
+#
+# On some older adm31s, S4 does not exist, and S5-sw6 is not defined.
+#
+# This adm31 entry uses underline as the standout mode.
+# If the adm31 gives you trouble with standout mode, check the DIP switch in
+# position 6, bank @c11, 25% from back end of the circuit board.  Should be
+# OFF.  If there is no such switch, you have an old adm31 and must use oadm31.
+# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
+adm31|lsi adm31 with sw6 set for underline mode,
+	OTbs, am, mir,
+	cols#80, lines#24,
+	bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=^J, is2=\Eu\E0,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
+	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
+	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0,
+	rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1,
+adm31-old|o31|old adm31,
+	rmul@, smso=\EG4, smul@, use=adm31,
+# LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL
+adm36|LSI ADM36,
+	OTbs, OTpt,
+	OTkn#4,
+	if=/usr/local/share/tabset/vt100,
+	is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l,
+	use=vt100,
+# (adm42: removed obsolete ":ma=^K^P:" -- esr)
+adm42|lsi adm42,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I,
+	il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@,
+	smir=\Eq, smul@, use=adm+sgr,
+# The following termcap for the Lear Siegler ADM-42 leaves the
+# "system line" at the bottom of the screen blank (for those who
+# find it distracting otherwise)
+adm42-ns|lsi adm-42 with no system line,
+	cbt=\EI\EF \011, clear=\E;\EF \011,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011,
+	dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011,
+	el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011,
+	smir=\Eq\EF \011, use=adm42,
+# ADM 1178 terminal -- rather like an ADM-42.  Manual is dated March 1 1985.
+# The insert mode of this terminal is commented out because it's broken for our
+# purposes in that it will shift the position of every character on the page,
+# not just the cursor line!
+# From: Michael Driscoll <fenris@lightspeed.net> 10 July 1996
+adm1178|1178|lsi adm1178,
+	am,
+	cols#80, lines#24, xmc#1,
+	bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET,
+	home=^^, ht=^I, il1=\EE, ind=^J, ip=$<6*/>, kbs=^H, kcub1=^H,
+	kcud1=^J, nel=^M^J, pad=\177, rev=\EG4, rmso=\EG0, rmul=\EG0,
+	sgr0=\E), smso=\EG4, smul=\EG1,
+
+#### Prime
+#
+# Yes, Prime made terminals.  These entries were posted by Kevin J. Cummings
+# <cummings@primerd.prime.com> on 14 Dec 1992 and lightly edited by esr.
+# Prime merged with ComputerVision in the late 1980s; you can reach them at:
+#
+#	ComputerVision Services
+#	500 Old Connecticut Path
+#	Framingham, Mass.
+#
+
+# Standout mode is dim reverse-video.
+pt100|pt200|wren|fenix|prime pt100/pt200,
+	am, bw, mir, msgr,
+	cols#80, it#8, lines#24,
+	cbt=\E[Z, clear=\E?, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA,
+	cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M,
+	ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P,
+	home=\E$B, ht=^I, il1=\E[L\E[t, ind=^J, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J,
+	rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m,
+	smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q,
+	smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
+pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH, use=pt100,
+pt250|Prime PT250,
+	rmso@, smso@, use=pt100,
+pt250w|Prime PT250 in 132-column mode,
+	rmso@, smso@, use=pt100w,
+
+#### Qume (qvt)
+#
+#	Qume, Inc.
+#	3475-A North 1st Street
+#	San Jose CA 95134
+#	Vox: (800)-457-4447
+#	Fax: (408)-473-1510
+#	Net: josed@techsupp.wyse.com (Jose D'Oliveira)
+#
+# Qume was bought by Wyse, but still (as of early 1995) has its own support
+# group and production division.
+#
+# Discontinued Qume models:
+#
+# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+
+# built to replace them, and a qvt119+ which was a 101+ with available wide
+# mode (132 columns).  There was a qvt103 which added vt100/vt131 emulations
+# and an ANSI-compatible qvt203 that replaced it.  Qume started producing
+# ANSI-compatible terminals with the qvt323 and qvt61.
+#
+# Current Qume models (as of February 1995):
+#
+# All current Qume terminals have ANSI-compatible operation modes.
+# Qume is still producing the qvt62, which features emulations for other
+# popular lines such as ADDS, and dual-host capabilities.  The qvt82 is
+# designed for use as a SCO ANSI terminal.  The qvt70 is a color terminal
+# with many emulations including Wyse370, Wyse 325, etc.  Their newest
+# model is the qvt520, which is vt420-compatible.
+#
+# There are some ancient printing Qume terminals under `Daisy Wheel Printers'
+#
+# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its
+# setup mode.  Shift-s should be a configuration save to NVRAM.
+
+qvt101|qvt108|qume qvt 101 and QVT 108,
+	xmc#1, use=qvt101+,
+
+# This used to have <cvvis=\E.2> but no <cnorm> or <civis>.  The BSD termcap
+# file had <cvvis=\EM4 \200\200\200>.  I've done the safe thing and yanked
+# both. The <rev> is from BSD, which also claimed bold=\E( and dim=\E).
+# What seems to be going on here is that this entry was designed so that
+# the normal highlight is bold and standout is dim plus something else
+# (reverse-video maybe?  But then, are there two <rev> sequences?)
+qvt101+|qvt101p|qume qvt 101 PLUS product,
+	am, bw, hs, ul,
+	cols#80, lines#24, xmc#0,
+	bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
+	flash=\Eb$<200>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
+	ich1=\EQ, il1=\EE, ind=^J, invis@, kbs=^H, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdl1=\ER, ked=\EY, kel=\ET,
+	kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r,
+	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
+	khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@, rmso=\E(,
+	smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
+qvt102|qume qvt 102,
+	cnorm=\E., use=qvt101,
+# (qvt103: added <rmam>/<smam> based on init string -- esr)
+qvt103|qume qvt 103,
+	am, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
+	hts=\EH, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8,
+	rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>,
+	rmso=\E[m$<2>, rmul=\E[m$<2>,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
+	sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+qvt103-w|qume qvt103 132 cols,
+	cols#132, lines#24,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
+qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals,
+	am, hs, mir, msgr,
+	cols#80, lines#24, xmc#0,
+	bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey,
+	el=\Et, flash=\En0$<200>\En1, fsl=^M, home=^^, ht=^I,
+	hts=\E1, il1=\EE, ind=^J, is2=\EDF\EC\EG0\Er\E(\E%EX,
+	kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r,
+	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8,
+	tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
+qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines,
+	lines#25, use=qvt119+,
+qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode,
+	cols#132,
+	is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+,
+qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25,
+	lines#25, use=qvt119+,
+qvt203|qvt203+|qume qvt 203 Plus,
+	dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
+	ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
+	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
+	kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103,
+qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video),
+	cols#132, lines#24,
+	rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203,
+#
+#	Since a command is present for enabling 25 data lines,
+#	a specific terminfo entry may be generated for the 203.
+#	If one is desired for the QVT 119 PLUS then 25 lines must
+#	be selected in the status line (setup line 9).
+#
+qvt203-25|QVT 203 PLUS with 25 by 80 column mode,
+	cols#80, lines#25,
+	is2=\E[=40h\E[?3l, use=qvt203,
+qvt203-25-w|QVT 203 PLUS with 25 by 132 columns,
+	cols#132, lines#25,
+	rs2=\E[?3h\E[=40h, use=qvt203,
+
+#### Televideo (tvi)
+#
+#	TeleVideo
+#	550 East Brokaw Road
+#	PO Box 49048    95161
+#	San Jose CA 95112
+#	Vox: (408)-954-8333
+#	Fax: (408)-954-0623
+#
+#
+# These require incredible amounts of padding.
+#
+# All of these terminals (912 to 970 and the tvipt) are discontinued.  Newer
+# Televideo terminals are ANSI and PC-ANSI compatible.
+
+tvi803|televideo 803,
+	clear=\E*$<10>, use=tvi950,
+
+# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86
+# Switch settings are:
+#
+# S1  1 2 3 4
+#     D D D D  9600
+#     D D D U    50
+#     D D U D    75
+#     D D U U   110
+#     D U D D   135
+#     D U D U   150
+#     D U U D   300
+#     D U U U   600
+#     U D D D  1200
+#     U D D U  1800
+#     U D U D  2400
+#     U D U U  3600
+#     U U D D  4800
+#     U U D U  7200
+#     U U U D  9600
+#     U U U U 19200
+#
+# S1  5 6 7 8
+#     U D X D  7N1 (data bits, parity, stop bits) (X means ignored)
+#     U D X U  7N2
+#     U U D D  7O1
+#     U U D U  7O2
+#     U U U D  7E1
+#     U U U U  7E2
+#     D D X D  8N1
+#     D D X U  8N2
+#     D U D D  8O1
+#     D U U U  8E2
+#
+# S1  9  Autowrap
+#     U  on
+#     D  off
+#
+# S1 10  CR/LF
+#     U  do CR/LF when CR received
+#     D  do CR when CR received
+#
+# S2  1  Mode
+#     U  block
+#     D  conversational
+#
+# S2  2  Duplex
+#     U  half
+#     D  full
+#
+# S2  3  Hertz
+#     U  50
+#     D  60
+#
+# S2  4  Edit mode
+#     U  local
+#     D  duplex
+#
+# S2  5  Cursor type
+#     U  underline
+#     D  block
+#
+# S2  6  Cursor down key
+#     U  send ^J
+#     D  send ^V
+#
+# S2  7  Screen colour
+#     U  green on black
+#     D  black on green
+#
+# S2  8  DSR status (pin 6)
+#     U  disconnected
+#     D  connected
+#
+# S2  9  DCD status (pin 8)
+#     U  disconnected
+#     D  duplex
+#
+# S2 10  DTR status (pin 20)
+#     U  disconnected
+#     D  duplex
+# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added <khome>, <cub1>, <cud1>,
+# <ind>, <hpa>, <vpa>, <am>, <msgr> from SCO entry -- esr)
+tvi910|televideo model 910,
+	OTbs, am, msgr,
+	cols#80, it#8, lines#24, xmc#1,
+	bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
+	home=\E=\001\001, hpa=\E]%p1%{32}%+%c, ht=^I,
+	if=/usr/local/share/tabset/stdcrt, ind=^J, invis@, kbs=^H,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
+# From: Alan R. Rogers <rogers%albany@csnet-relay>
+# as subsequently hacked over by someone at SCO
+# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr)
+#
+# Here are the 910+'s DIP switches (U = up, D = down, X = don't care):
+#
+# S1  1 2 3 4:
+#     D D D D  9600     D D D U    50     D D U D    75     D D U U   110
+#     D U D D   135     D U D U   150     D U U D   300     D U U U   600
+#     U D D D  1200     U D D U  1800     U D U D  2400     U D U U  3600
+#     U U D D  4800     U U D U  7200     U U U D  9600     U U U U 19200
+#
+# S1  5 6 7 8:
+#     U D X D  7N1     U D X U  7N2     U U D D  7O1     U U D U  7O2
+#     U U U D  7E1     U U U U  7E2     D D X D  8N1     D D X U  8N2
+#     D U D D  8O1     D U U U  8E2
+#
+# S1  9  Autowrap            (U = on, D = off)
+# S1 10  CR/LF               (U = CR/LF on CR received, D = CR on CR received)
+# S2  1  Mode                (U = block, D = conversational)
+# S2  2  Duplex              (U =  half, D = full)
+# S2  3  Hertz               (U = 50, D = 60)
+# S2  4  Edit mode           (U = local, D = duplex)
+# S2  5  Cursor type         (U = underline, D = block)
+# S2  6  Cursor down key     (U = send ^J, D = send ^V)
+# S2  7  Screen colour       (U = green on black, D = black on green)
+# S2  8  DSR status (pin 6)  (U = disconnected, D = connected)
+# S2  9  DCD status (pin 8)  (U = disconnected, D = connected)
+# S2 10  DTR status (pin 20) (U = disconnected, D = connected)
+#
+tvi910+|televideo 910+,
+	dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>,
+	kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r,
+	kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r,
+	ll=\E=7\s, use=tvi910,
+
+# (tvi912: removed obsolete ":ma=^K^P^L :", added  <flash> and
+# <khome> from BRL entry -- esr)
+tvi912|tvi914|tvi920|old televideo 912/914/920,
+	OTbs, OTpt, am, msgr,
+	cols#80, it#8, lines#24, xmc#1,
+	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^,
+	ht=^I, hts=\E1, ich1=\EQ, if=/usr/local/share/tabset/stdcrt,
+	il1=\EE$<33*>, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r,
+	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
+	kf9=^AH\r, khome=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El,
+	tbc=\E3,
+# We got some new tvi912c terminals that act really weird on the regular
+# termcap, so one of our gurus worked this up. Seems that cursor
+# addressing is broken.
+tvi912cc|tvi912 at cowell college,
+	cup@, use=tvi912c,
+
+# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C
+# From: Benjamin C. W. Sittler
+#
+# Someone has put a scanned copy of the manual online at:
+#     http://vt100.net/televideo/912b-om/
+#
+# These terminals were produced ca. 1979, and had a 12" monochrome
+# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit
+# ASCII, and were generally similar to adm3a but with attributes
+# (including some with magic cookies), fancy half-duplex mode, and
+# different bugs.
+#
+# Some operations reqire truly incredible amounts of padding. The
+# insert_line (<il1>) and delete_line (<dl1>) operations in particular
+# are so slow as to be nearly unusable.
+#
+# There may or may not have been a separate, earlier series of 912/920
+# terminals (without the "B" and "C" suffix); I have never seen one,
+# and the manual only describes the "B" and "C" series. The 912 and 920
+# are quite distinct from the 914 and 924, which were much nicer non-
+# magic-cookie terminals similar to the 950.
+#
+# This is a new description for the following TeleVideo terminals,
+# distinguished chiefly by their keyboards:
+#
+#   TVI-912B - very odd layout, no function keys (84 keys)
+#   TVI-920B - typewriter layout, no function keys (103 keys)
+#   TVI-912C - very odd layout, function keys F1-F11 (82 keys)
+#   TVI-920C - typewriter layout, function keys F1-F11 (101 keys)
+#
+# To choose a setting for the TERM variable, start with the model:
+#
+#    Model  || base name
+# ----------||-----------
+#  TVI-912B || tvi912b
+#  TVI-912C || tvi912c
+#  TVI-920B || tvi920b
+#  TVI-920C || tvi920c
+#
+# Then add a suffix from the following table describing installed options
+# and how you'd like to use the terminal:
+#
+#   Use Video | Second | Visual |  Magic  |  Page || feature
+#  Attributes |  Page  |  Bell  | Cookies | Print || suffix
+# ------------|--------|--------|---------|-------||---------
+#      No     |   No   |  N/A   |   N/A   |   No  || -unk
+#      No     |   No   |  N/A   |   N/A   |  Yes  || -p
+#      No     |  Yes   |   No   |   N/A   |   No  || -2p-unk
+#      No     |  Yes   |   No   |   N/A   |  Yes  || -2p-p
+#      No     |  Yes   |  Yes   |   N/A   |   No  || -vb-unk
+#      No     |  Yes   |  Yes   |   N/A   |  Yes  || -vb-p
+#     Yes     |   No   |  N/A   |    No   |  N/A  ||
+#     Yes     |   No   |  N/A   |   Yes   |  N/A  || -mc
+#     Yes     |  Yes   |   No   |    No   |  N/A  || -2p
+#     Yes     |  Yes   |   No   |   Yes   |  N/A  || -2p-mc
+#     Yes     |  Yes   |  Yes   |    No   |  N/A  || -vb
+#     Yes     |  Yes   |  Yes   |   Yes   |  N/A  || -vb-mc
+#
+# So e.g. a model 920 C with second page memory option, visual bell
+# and no magic cookies would be tvi920c-vb; a model 912 B without the
+# second page memory option and using magic cookies would be
+# tvi912b-mc
+#
+# PADDING
+#
+# At 9600 baud, the terminal is prone to overflow its input buffer
+# during complex operations (insert/delete
+# character/line/screen/page), and it does not signal this over the
+# RS232 cable. The typical symptom of an overrun is that the terminal
+# starts beeping, and output becomes garbled.
+#
+# The padding delays in this terminfo were derived using tack(1)
+# running on a Linux box connected to a TVI-920C with a later-model
+# (A49C1-style) ROM running at 9600 baud, so your mileage may
+# vary. The numbers below seem to give the terminal enough time so
+# that it doesn't overflow its input buffer and start losing
+# characters.
+#
+# KEYS
+#
+# If you want to use the FUNCT key on a tvi912[bc], use the
+# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from
+# the following table (these also work on the 920 series):
+#
+# Unshifted Function Keys:
+#
+#  Key | capname|| Equivalent
+# -----|--------||------------
+#   F1 |  <kf1> || FUNCT + @
+#   F2 |  <kf2> || FUNCT + A
+#   F3 |  <kf3> || FUNCT + B
+#   F4 |  <kf4> || FUNCT + C
+#   F5 |  <kf5> || FUNCT + D
+#   F6 |  <kf6> || FUNCT + E
+#   F7 |  <kf7> || FUNCT + F
+#   F8 |  <kf8> || FUNCT + G
+#   F9 |  <kf9> || FUNCT + H
+#  F10 | <kf10> || FUNCT + I
+#  F11 | <kf11> || FUNCT + J
+#
+# Shifted Function Keys:
+#
+#  SHIFT + Key | capname|| Equivalent
+# -------------|--------||------------
+#   SHIFT + F1 | <kf12> || FUNCT + `
+#   SHIFT + F2 | <kf13> || FUNCT + a
+#   SHIFT + F3 | <kf14> || FUNCT + b
+#   SHIFT + F4 | <kf15> || FUNCT + c
+#   SHIFT + F5 | <kf16> || FUNCT + d
+#   SHIFT + F6 | <kf17> || FUNCT + e
+#   SHIFT + F7 | <kf18> || FUNCT + f
+#   SHIFT + F8 | <kf19> || FUNCT + g
+#   SHIFT + F9 | <kf20> || FUNCT + h
+#  SHIFT + F10 | <kf21> || FUNCT + i
+#  SHIFT + F11 | <kf22> || FUNCT + j
+#
+# PORTS AND SWITCH SETTINGS
+#
+# Here are the switch settings for the TVI-912B/TVI-920B and
+# TVI-912C/TVI-920C:
+#
+# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down:
+# 2: 9600	3: 4800		4: 2400		5: 1200
+# 6:  600	7:  300		8:  150		9:   75
+# 10: 110
+#
+# S2 UART/Terminal options:
+# 		Up			Down
+# 1:		Not used		Not allowed
+# 2:	Alternate character set	  Standard character set
+# 3:	    Full duplex		    Half duplex
+# 4:	    50 Hz refresh	    60 Hz refresh
+# 5:	      No parity		     Send parity
+# 6:	     2 stop bits	     1 stop bit
+# 7:	     8 data bits	     7 data bits
+# 8:		Not used		Not allowed on Rev E or lower
+# 9:	     Even parity	     Odd parity
+# 10:	    Steady cursor	    Blinking cursor
+# 	(On Rev E or lower, use W25 instead of switch 10.)
+#
+# S5 UART/Terminal options:
+# 		Open			Closed
+# 1:	P3-6 Not connected	DSR received on P3-6
+# 2:	P3-8 Not connected	DCD received on P3-8
+#
+# 3 Open, 4 Open:		P3-20 Not connected
+# 3 Open, 4 Closed:	DTR on when terminal is on
+# 3 Closed, 4 Open:	DTR is connected to RTS
+# 3 Closed, 4 Closed:	Not allowed
+#
+# 5 Closed:	HDX printer (hardware control) Rev. K with extension port off,
+# 		all data transmitted out of the modem port (P3) will also be
+# 		transmitted out of the printer port (P4).
+#
+# 6 Open, 7 Open:		Not allowed
+# 6 Open, 7 Closed:	20ma current loop input
+# 6 Closed, 7 Open:	RS232 input
+# 6 Closed, 7 Closed:	Not allowed
+#
+# Jumper options:
+# If the jumper is installed, the effect will occur (the next time the terminal
+# is switched on).
+#
+# S4/W31:	Enables automatic LF upon receipt of CR from
+# 		remote or keyboard.
+# S4/W32:	Enables transmission of EOT at the end of Send.  If not
+# 		installed, a carriage return is sent.
+# S4/W33:	Disables automatic carriage return in column 80.
+# S4/W34:	Selects Page Print Mode as initial condition.  If not
+# 		installed, Extension Mode is selected.
+#
+# NON-STANDARD CAPABILITIES
+#
+# Sending <u9> or <u7> returns a cursor position report in the format
+# YX\r, where Y and X are as in <cup>. This format is described in
+# <u8> and <u6>, but it's not clear how one should write an
+# appropriate scanf string, since we need to subtract %' ' from the
+# character after reading it. The <u9> capability is used by tack(1)
+# to synchronize during padding tests, and seems to work for that
+# purpose.
+#
+# This description also includes the obsolete termcap capabilities
+# has_hardware_tabs (<OTpt>) and backspaces_with_bs (<OTbs>).
+#
+# FEATURES NOT YET DESCRIBED IN THIS TERMINFO
+#
+# The FUNCT modifier actually works with every normal key by sending
+# ^AX\r, where X is the sequence normally sent by that key. This is a
+# sort of meta key not currently describable in terminfo.
+#
+# There are quite a few other keys (especially on the 920 models,) but
+# they are for the most part only useful in block mode.
+#
+# These terminals have lots of forms manipulation features, mainly
+# useful in block mode, including "clear X to nulls" (vs. "clear X to
+# spaces"; nulls are sentinels for "send X" operations); "send X"
+# operations for uploading all or part of the screen; and block-mode
+# editing keys (they don't send escape sequences, but manipulate video
+# memory directly). Block mode is used for local editing, and protect
+# mode (in conjunction with the "write protect" attribute,
+# a.k.a. half-intensity outside of protect mode) is used to control
+# which parts of the screen are edited/sent/printed (by <mc0>).
+#
+# There are at least two major families of ROM, "early" and
+# A49B1/A49C1; the major difference seems to be that the latter ROMs
+# support a few extra escape sequences for manipulating the off-screen
+# memory page, and for sending whole pages back to the host (mainly
+# useful in block mode.) The descriptions in this file don't use any
+# of those sequences: set cursor position including page (\E-PYX,
+# where P is \s for page 0 and ! for page 1 [actually only the LSB of
+# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are
+# as in <cup>); read cursor position (\E/), which is analogous to <u9>
+# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX
+# are as in <cup>, and some "send page" features mainly useful for
+# forms manipulation.
+#
+# The keyboard enable (\E") and disable (\E#) sequences are unused,
+# except that a terminal reset (<is2>) enables the keyboard.
+#
+# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew)
+# enabled in <is2>, but auto-flip is very jarring so we don't use it.
+#
+# BUGS
+#
+# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed
+# sequences (I infer that in some TeleVideo terminal they may invert
+# and uninvert the display) so the <flash> sequence given here is a
+# cheesy page-flip instead.
+#
+# The back_tab (<cbt>) sequence (\EI) doesn't work according to
+# tack(1), so it is not included in the descriptions below.
+#
+# It's not clear whether auto_left_margin (<bw>) flag should be set
+# for these terminals; tack says yes, so it is set here, but this
+# differs from other descriptions I've seen.
+#
+# Extension print mode (<mc5>) echoes all characters to the printer
+# port [in addition to displaying them] except for the page print mode
+# sequence (<mc4>); this is a slight violation of the terminfo
+# definition for <mc5> but I don't expect it to cause problems.  We
+# reset to page print mode in <rs1> since it may have been enabled
+# accidentally.
+#
+# The descriptions with plus signs (+) are building blocks.
+
+tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes),
+	OTbs, OTpt, am, bw,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\032$<50>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>,
+	dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>,
+	home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>,
+	if=/usr/local/share/tabset/stdcrt, il1=\EE$<1*>$<100>,
+	ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, kdch1=\177, kent=^M, khome=^^, mc4=\EA,
+	mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r,
+	u7=\E?, u8=%c%c\r, u9=\E?,
+
+# This isn't included in the basic capabilities because it is
+# typically unusable in combination with the full range of video
+# attributes, since the magic cookie attributes turn into ASCII
+# control characters, and the half-intensity ("protected") attribute
+# converts all affected characters to spaces.
+
+tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support,
+	mc0=\EP,
+
+# This uses half-intensity mode (<dim>) for standout (<smso>), and
+# exposes no other attributes (half-intensity is the only attribute
+# that does not generate a magic cookie.)
+
+tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support,
+	msgr,
+	dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(,
+	smso=\E),
+
+# Full magic-cookie attribute support, with half-intensity reverse
+# video for standout. Note that we add a space in the <dim> sequence
+# to give a consistent magic-cookie count. Also note that <sgr> uses
+# backspacing (in the TVI-supported order) to apply all requested
+# attributes with only a single magic cookie.
+
+tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support,
+	xmc#1,
+	blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek,
+	rmul=\Em,
+	sgr=\E%?%p1%p5%|%t)%e(%; \010\E%?%p1%p3%|%tj%ek%;\010\E%?%p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;,
+	sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El,
+
+# This uses the second page memory option to save & restore screen
+# contents. If your terminal is missing the option, this description
+# should still work, but that has not been tested.
+
+tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support,
+	flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s,
+	smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>,
+
+# This simulates flashing by briefly toggling to the other page
+# (kludge!)
+
+tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support,
+	bel=\EK$<100>\EK, use=tvi912b+2p,
+
+# Function keys (<kf12> .. <kf22> are shifted <kf1> .. <kf11>)
+
+tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support,
+	kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^A`\r, kf13=^Aa\r,
+	kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, kf17=^Ae\r, kf18=^Af\r,
+	kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, kf21=^Ai\r, kf22=^Aj\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r,
+
+# Combinations of the basic building blocks
+
+tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes),
+	use=tvi912b+2p, use=tvi912b-unk,
+
+tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes),
+	use=tvi912b+vb, use=tvi912b-unk,
+
+tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print),
+	use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print),
+	use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print),
+	use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute),
+	use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies),
+	use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk,
+
+tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute),
+	use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies),
+	use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk,
+
+tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute),
+	use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies),
+	use=tvi912b+mc, use=tvi912b-unk,
+
+tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes),
+	use=tvi920b+fn, use=tvi912b-unk,
+
+tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes),
+	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk,
+
+tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes),
+	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk,
+
+tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print),
+	use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print),
+	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer,
+	use=tvi912b-unk,
+
+tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print),
+	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer,
+	use=tvi912b-unk,
+
+tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute),
+	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim,
+	use=tvi912b-unk,
+
+tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies),
+	use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc,
+	use=tvi912b-unk,
+
+tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute),
+	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim,
+	use=tvi912b-unk,
+
+tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies),
+	use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc,
+	use=tvi912b-unk,
+
+tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute),
+	use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies),
+	use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk,
+
+# Televideo 921 and variants
+# From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995
+# (tvi921: removed :ko=bt: before translation, I see no backtab cap;
+# also added empty <acsc> to suppress tic warning -- esr)
+tvi921|televideo model 921 with sysline same as page & real vi function,
+	OTbs, OTpt, am, hs, xenl, xhp,
+	cols#80, lines#24, xmc#0,
+	acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
+	cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
+	el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
+	if=/usr/local/share/tabset/stdcrt, il1=\EE, ind=^J, invis@,
+	is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H,
+	kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>,
+	ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%%,
+	rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr,
+# without the beeper
+# (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
+# also added empty <acsc> to suppress tic warning -- esr)
+tvi92B|televideo model 921 with sysline same as page & real vi function & no beeper,
+	am, hs, xenl, xhp,
+	cols#80, lines#24, xmc#0,
+	acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
+	cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY,
+	el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I,
+	ich1=\EQ, if=/usr/local/share/tabset/stdcrt, il1=\EE, ind=^J,
+	invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z,
+	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW,
+	kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE,
+	nel=^M^J, rmacs=\E%%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr,
+# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr)
+tvi92D|tvi92B with DTR instead of XON/XOFF & better padding,
+	dl1=\ER$<2*/>, il1=\EE$<2*/>,
+	is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>,
+	kil1=\EE$<2*/>, use=tvi92B,
+
+# (tvi924: This used to have <dsl=\Es0>, <fsl=\031>.  I put the new strings
+# in from a BSD termcap file because it looks like they do something the
+# old ones skip -- esr)
+tvi924|televideo tvi924,
+	am, bw, hs, in, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80, xmc#0,
+	bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0,
+	cnorm=\E.3, cr=^M, csr=\E_%p1%{32}%+%c%p2%{32}%+%c,
+	cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1,
+	dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et,
+	flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1,
+	ich1=\EQ, if=/usr/local/share/tabset/stdcrt, il1=\EE, ind=^J,
+	invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0,
+	kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
+	kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r,
+	kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r,
+	kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r,
+	kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^,
+	kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4,
+	lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10,
+	pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef,
+	use=adm+sgr,
+
+# TVI925 DIP switches.  In each of these, D = Down and U = Up,
+#
+# Here are the settings for the external (baud) switches (S1):
+#
+#             Position		Baud
+# 7	8	9	10		[Printer]
+# 1	2	3	4		[Main RS232]
+# -----------------------------------------------------
+# D	D	D	D	9600
+# D	D	D	U	  50
+# D	D	U	D	  75
+# D	D	U	U	 110
+# D	U	D	D	 135
+# D	U	D	U	 150
+# D	U	U	D	 300
+# D	U	U	U	 600
+# U	D	D	D	1200
+# U	D	D	U	1800
+# U	D	U	D	2400
+# U	D	U	U	3600
+# U	U	D	D	4800
+# U	U	D	U	7200
+# U	U	U	D	9600
+# U	U	U	U	19200
+#
+#
+# Settings for word length and stop-bits (S1)
+#
+#  Position	Description
+# 5	6
+# ---------------------------
+# U	-	7-bit word
+# D	-	8-bit word
+# -	U	2 stop bits
+# -	D	1 stop bit
+#
+#
+# S2 (external) settings
+#
+# Position	Up	Dn	Description
+# --------------------------------------------
+# 1		X		Local edit
+# 			X	Duplex edit (transmit editing keys)
+# --------------------------------------------
+# 2		X		912/920 emulation
+# 			X	925
+# --------------------------------------------
+# 3			X
+# 4			X	No parity
+# 5			X
+# --------------------------------------------
+# 3			X
+# 4			X	Odd parity
+# 5		X
+# --------------------------------------------
+# 3			X
+# 4		X		Even parity
+# 5		X
+# --------------------------------------------
+# 3		X
+# 4			X	Mark parity
+# 5		X
+# --------------------------------------------
+# 3		X
+# 4		X		Space parity
+# 5		X
+# --------------------------------------------
+# 6		X		White on black display
+# 			X	Black on white display
+# --------------------------------------------
+# 7			X	Half Duplex
+# 8			X
+# --------------------------------------------
+# 7		X		Full Duplex
+# 8			X
+# --------------------------------------------
+# 7			X	Block mode
+# 8		X
+# --------------------------------------------
+# 9			X	50 Hz
+# 		X		60 Hz
+# --------------------------------------------
+# 10		X		CR/LF (Auto LF)
+# 			X	CR only
+#
+# S3 (internal switch) settings:
+#
+# Position	Up	Dn	Description
+# --------------------------------------------
+# 1		X		Keyclick off
+# 			X	Keyclick on
+# --------------------------------------------
+# 2			X	English
+# 3			X
+# --------------------------------------------
+# 2			X	German
+# 3		X
+# --------------------------------------------
+# 2		X		French
+# 3			X
+# --------------------------------------------
+# 2		X		Spanish
+# 3		X
+# --------------------------------------------
+# 4			X	Blinking block cursor
+# 5			X
+# --------------------------------------------
+# 4			X	Blinking underline cursor
+# 5		X
+# --------------------------------------------
+# 4		X		Steady block cursor
+# 5			X
+# --------------------------------------------
+# 4		X		Steady underline cursor
+# 5		X
+# --------------------------------------------
+# 6		X		Screen blanking timer (ON)
+# 			X	Screen blanking timer (OFF)
+# --------------------------------------------
+# 7		X		Page attributes
+# 			X	Line attributes
+# --------------------------------------------
+# 8		X		DCD disconnected
+# 			X	DCD connected
+# --------------------------------------------
+# 9		X		DSR disconnected
+# 			X	DSR connected
+# --------------------------------------------
+# 10		X		DTR Disconnected
+# 			X	DTR connected
+# --------------------------------------------
+#
+# (tvi925: BSD has <clear=\E*>.  I got <is2> and <ri> from there -- esr)
+tvi925|televideo 925,
+	OTbs, am, bw, hs, ul,
+	cols#80, lines#24, xmc#1,
+	bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^V,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
+	flash=\Eb$<200>\Ed, fsl=^M\Eg, home=^^, ht=^I, hts=\E1,
+	ich1=\EQ, il1=\EE, ind=^J, invis@, is2=\El\E", kbs=^H, kclr=^Z,
+	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
+	ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r,
+	kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
+	kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3,
+	tsl=\Eh\Ef, use=adm+sgr,
+# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
+# to avoid "magic cookie" standout glitch:
+tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
+	xmc@,
+	kbs=^H, kcub1=^H, kcud1=^J, rmso=\E(, smso=\E), use=tvi925,
+
+# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
+# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
+# for additional capabilities,
+# The following tvi descriptions from B:pjphar and virus!mike
+# is for all 950s.  It sets the following attributes:
+# full duplex (\EDF)		write protect off (\E()
+# conversation mode (\EC)	graphics mode off (\E%)
+# white on black (\Ed)		auto page flip off (\Ew)
+# turn off status line (\Eg)	clear status line (\Ef\r)
+# normal video (\E0)		monitor mode off (\EX or \Eu)
+# edit mode (\Er)		load blank char to space (\Ee\040)
+# line edit mode (\EO)		enable buffer control (^O)
+# protect mode off (\E\047)	duplex edit keys (\El)
+# program unshifted send key to send line all (\E016)
+# program shifted send key to send line unprotected (\E004)
+# set the following to nulls:
+#	field delimiter (\Ex0\200\200)
+#	line delimiter (\Ex1\200\200)
+#	start-protected field delimiter (\Ex2\200\200)
+#	end-protected field delimiter (\Ex3\200\200)
+# set end of text delimiter to carriage return/null (\Ex4\r\200)
+#
+#                     TVI 950 Switch Setting Reference Charts
+#
+#                                     TABLE 1:
+#
+#      S1     1     2     3     4     5     6     7     8     9    10
+#          +-----------------------+-----+-----+-----------------------+
+#          | Computer Baud Rate    |Data |Stop | Printer Baud Rate     |
+#          |                       |Bits |Bits |                       |
+#   +------+-----------------------+-----+-----+-----------------------+
+#   |  Up  |        See            |  7  |  2  |        See            |
+#   +------+-----------------------+-----+-----+-----------------------+
+#   | Down |      TABLE 2          |  8  |  1  |      TABLE 2          |
+#   +------+-----------------------+-----+-----+-----------------------+
+#
+#
+#      S2     1     2     3     4     5     6     7     8     9    10
+#          +-----+-----+-----------------+-----+-----------+-----+-----+
+#          |Edit |Cursr|    Parity       |Video|Transmiss'n| Hz  |Click|
+#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
+#   |  Up  | Dplx|Blink|      See        |GonBk|   See     | 60  | Off |
+#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
+#   | Down |Local|St'dy|    TABLE 3      |BkonG|  CHART    | 50  | On  |
+#   +------+-----+-----+-----------------+-----+-----------+-----+-----+
+#
+#                                    TABLE 2:
+#
+#             +-----------+-----+-----+-----+-----+-----------+
+#             | Display   |  1  |  2  |  3  |  4  |   Baud    |
+#             +-----------+-----+-----+-----+-----+           |
+#             | Printer   |  7  |  8  |  9  | 10  |   Rate    |
+#             +-----------+-----+-----+-----+-----+-----------+
+#                         |  D  |  D  |  D  |  D  |   9600    |
+#                         |  U  |  D  |  D  |  D  |     50    |
+#                         |  D  |  U  |  D  |  D  |     75    |
+#                         |  U  |  U  |  D  |  D  |    110    |
+#                         |  D  |  D  |  U  |  D  |    135    |
+#                         |  U  |  D  |  U  |  D  |    150    |
+#                         |  D  |  U  |  U  |  D  |    300    |
+#                         |  U  |  U  |  U  |  D  |    600    |
+#                         |  D  |  D  |  D  |  U  |   1200    |
+#                         |  U  |  D  |  D  |  U  |   1800    |
+#                         |  D  |  U  |  D  |  U  |   2400    |
+#                         |  U  |  U  |  D  |  U  |   3600    |
+#                         |  D  |  D  |  U  |  U  |   4800    |
+#                         |  U  |  D  |  U  |  U  |   7200    |
+#                         |  D  |  U  |  U  |  U  |   9600    |
+#                         |  U  |  U  |  U  |  U  |  19200    |
+#                         +-----+-----+-----+-----+-----------+
+#
+#                                    TABLE 3:
+#                         +-----+-----+-----+-----------+
+#                         |  3  |  4  |  5  |   Parity  |
+#                         +-----+-----+-----+-----------+
+#                         |  X  |  X  |  D  |    None   |
+#                         |  D  |  D  |  U  |     Odd   |
+#                         |  D  |  U  |  U  |    Even   |
+#                         |  U  |  D  |  U  |    Mark   |
+#                         |  U  |  U  |  U  |   Space   |
+#                         +-----+-----+-----+-----------+
+#                                 X = don't care
+#
+#                                     CHART:
+#                         +-----+-----+-----------------+
+#                         |  7  |  8  | Communication   |
+#                         +-----+-----+-----------------+
+#                         |  D  |  D  |  Half Duplex    |
+#                         |  D  |  U  |  Full Duplex    |
+#                         |  U  |  D  |     Block       |
+#                         |  U  |  U  |     Local       |
+#                         +-----+-----+-----------------+
+#
+# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:".
+# I also inserted <ich1> and <kich1>; the :ko: string indicated that <ich>
+# should be present and all tvi native modes use the same string for this.
+# Finally, note that BSD has cud1=^V. -- esr)
+tvi950|televideo 950,
+	OTbs, am, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, xmc#1,
+	acsc=b\011c\014d\re\ni\013, bel=^G, cbt=\EI, clear=\E*,
+	cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed,
+	fsl=^M, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=^J,
+	invis@,
+	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\Ef\r,
+	kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L,
+	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A0\r,
+	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej, rmacs=^X,
+	rmir=\Er, smacs=^U, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
+	use=adm+sgr,
+#
+# is for 950 with two pages adds the following:
+#	set 48 line page (\E\\2)
+#	place cursor at page 0, line 24, column 1 (\E-07 )
+#	set local (no send) edit keys (\Ek)
+#
+# two page 950 adds the following:
+#	when entering ex, set 24 line page (\E\\1)
+#	when exiting ex, reset 48 line page (\E\\2)
+#			 place cursor at 0,24,1 (\E-07 )
+#	set duplex (send) edit keys (\El) when entering vi
+#	set local (no send) edit keys (\Ek) when exiting vi
+#
+tvi950-2p|televideo950 w/2 pages,
+	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07 \011,
+	rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+	smkx=\El, use=tvi950,
+#
+# is for 950 with four pages adds the following:
+#	set 96 line page (\E\\3)
+#	place cursor at page 0, line 24, column 1 (\E-07 )
+#
+# four page 950 adds the following:
+#	when entering ex, set 24 line page (\E\\1)
+#	when exiting ex, reset 96 line page (\E\\3)
+#			 place cursor at 0,24,1 (\E-07 )
+#
+tvi950-4p|televideo950 w/4 pages,
+	is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07 \011,
+	rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+	smkx=\El, use=tvi950,
+#
+# <is2> for reverse video 950 changes the following:
+#	set reverse video (\Ed)
+#
+# set vb accordingly (\Ed ...delay... \Eb)
+#
+tvi950-rv|televideo950 rev video,
+	flash=\Ed$<200/>\Eb,
+	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0,
+	use=tvi950,
+
+# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv
+tvi950-rv-2p|televideo950 rev video w/2 pages,
+	flash=\Ed$<200/>\Eb,
+	is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s,
+	rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+	smkx=\El, use=tvi950,
+
+# tvi950-rv uses the appropriate entries from 950-4p and 950-rv
+tvi950-rv-4p|televideo950 rev video w/4 pages,
+	flash=\Ed$<200/>\Eb,
+	is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s,
+	rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+	smkx=\El, use=tvi950,
+# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
+# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
+# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
+# the :rs: string, inserted the <ich> implied by the termcap :ko: string.  Note
+# the :ko: string had :cl: in it, which means that one of the original
+# <clear=\E*>, <kclr=\EY> had to be wrong; set <kclr=\E*> because that's what
+# the 950 has.   Finally, corrected the <kel> string to match the 950 and what
+# ko implies -- esr)
+# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
+# also work.
+tvi955|televideo 955,
+	OTbs, mc5i, msgr@,
+	it#8, xmc@,
+	acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
+	civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
+	cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1,
+	is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1,
+	knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%%,
+	rmam=\E[=7l, rmxon=^N,
+	rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r,
+	sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
+	use=tvi950,
+tvi955-w|955-w|televideo955 w/132 cols,
+	cols#132,
+	is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955,
+# use half-intensity as normal mode, full intensity as <bold>
+tvi955-hb|955-hb|televideo955 half-bright,
+	bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El,
+	sgr0=\EG0\E[=5h, use=tvi955,
+# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
+# (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m;
+# added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL.
+# According to BRL we could have <rmkx>=\E>, <smkx>=\E= but I'm not sure what
+# it does to the function keys.  I deduced <rmam>/<smam>.
+# also added empty <acsc> to suppress tic warning,  -- esr)
+tvi970|televideo 970,
+	OTbs, OTpt, am, da, db, mir, msgr,
+	cols#80, it#8, lines#24,
+	acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
+	cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r,
+	ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
+	is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\E?a, kf2=\E?b, kf3=\E?c, kf4=\E?d, kf5=\E?e, kf6=\E?f,
+	kf7=\E?g, kf8=\E?h, kf9=\E?i, khome=\E[H, ri=\EM, rmacs=\E(B,
+	rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
+	smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
+	smul=\E[4m, vpa=\E[%i%p1%dd,
+tvi970-vb|televideo 970 with visual bell,
+	flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
+	use=tvi970,
+tvi970-2p|televideo 970 with using 2 pages of memory,
+	rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q,
+	use=tvi970,
+# Works with vi and rogue.  NOTE: Esc v sets autowrap on, Esc u sets 80 chars
+# per line (rather than 40), Esc K chooses the normal character set.  Not sure
+# padding is needed, but adapted from the tvi920c termcap.  The <smso> and
+# <smul> strings are klutzy, but at least use no screen space.
+# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:".  I wish we knew <rmam>,
+# its absence means <smam>=\Ev isn't safe to use. -- esr)
+# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
+# The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says:
+# F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
+tvipt|televideo personal terminal,
+	OTbs, am,
+	cols#80, lines#24,
+	cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
+	ed=\EY, el=\ET, home=^^, if=/usr/local/share/tabset/stdcrt,
+	il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R,
+	rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH,
+# From: Nathan Peterson <nathan@sco.com>, 03 Sep 1996
+tvi9065|televideo 9065,
+	am, bw, chts, hs, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0,
+	wnum#0, wsl#30,
+	acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G,
+	blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z,
+	cnorm=\E.3, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
+	cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA,
+	cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
+	dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
+	el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
+	ich=\E[%p1%d@, if=/usr/local/share/tabset/stdcrt,
+	il=\E[%p1%dL, il1=\EE, ind=^J, indn=\E[%p1%dS, invis=\EG1,
+	ip=$<3>,
+	is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er,
+	is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s,
+	kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
+	kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H,
+	mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=^M^J,
+	pfkey=\E|%p1%{48}%+%c3%p2%s\031,
+	pfloc=\E|%p1%{48}%+%c2%p2%s\031,
+	pfx=\E|%p1%{48}%+%c1%p2%s\031,
+	pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&,
+	rep=\E[%p2%db%p1%c, rev=\EG4,
+	rf=/usr/local/share/tabset/stdcrt, ri=\Ej, rin=\E[%p1%dT,
+	rmacs=\E%%, rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H,
+	rmdc=\0, rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0,
+	rmxon=^N, rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l,
+	rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=13.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee \Ex0\0\0\Ex1\0\0\Ex2\0\0\Ex3\0\0\Ex4\0\0\E1,
+	rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0\0\0,
+	sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p9%t\E$%e\E%%%;,
+	sgr0=\EG0, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
+	smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
+	tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0,
+
+#### Visual (vi)
+#
+# In September 1993, Visual Technology of Westboro, Massachusetts,
+# merged with White Pine Software of Nashua, New Hampshire.
+#
+# White Pine Software may be contacted at +1 603/886-9050.
+# Or visit White Pine on the World Wide Web at URL http://www.wpine.com.
+#
+
+# Visual 50 from Beau Shekita, BTL-Whippany <whuxlb!ejs>
+# Recently I hacked together the following termcap for Visual
+# Technology's Visual 50 terminal. It's a slight modification of
+# the vt52 termcap.
+# It's intended to run when the Visual 50 is in vt52 emulation mode
+# (I know what you're thinking; if it's emulating a vt52, then why
+# another termcap? Well, it turns out that the Visual 50 can handle
+# <dl1> and db(?) among other things, which the vt52 can't)
+# The termcap works OK for the most part. The only problem is on
+# character inserts. The whole line gets painfully redrawn for each
+# character typed. Any suggestions?
+# Beau's entry is combined with the vi50 entry from University of Wisconsin.
+# Note especially the <il1> function.  <kf4>-<kf6> are really l4-l6 in
+# disguise; <kf7>-<kf9> are really l1-l3.
+vi50|visual 50,
+	OTbs, OTpt, am, da, db, msgr,
+	cols#80, it#8, lines#24,
+	OTnl=^J, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H,
+	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH,
+	ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
+	kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
+	nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES,
+# this one was BSD & SCO's vi50
+vi50adm|visual 50 in adm3a mode,
+	am, msgr,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM,
+	ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
+	rmso=\ET, smso=\EU,
+# From: Jeff Siegal <jbs@quiotix.com>
+vi55|Visual 55,
+	OTbs, am, mir, msgr,
+	cols#80, it#8, lines#24,
+	clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H,
+	cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I,
+	il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET,
+	smir=\Ea, smso=\EU,
+
+# Visual 200 from BRL
+# The following switch settings are assumed for normal operation:
+#	FULL_DUPLEX		SCROLL			CR
+#	AUTO_NEW_LINE_ON	VISUAL_200_EMULATION_MODE
+# Other switches may be set for operator convenience or communication
+# requirements.
+# Character insertion is kludged in order to get around the "beep" misfeature.
+# (This cap is commented out because <smir>/<rmir> is more efficient -- esr)
+# Supposedly "4*" delays should be used for <il1>, <ed>, <clear>, <dch1>,
+# and <dl1> strings, but we seem to get along fine without them.
+vi200|visual 200,
+	OTbs, OTpt, am, mir, msgr,
+	OTkn#10, cols#80, it#8, lines#24,
+	acsc=, bel=^G, cbt=\Ez, clear=\Ev, cnorm=\Ec, cr=^M, cub1=^H,
+	cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, cvvis=\Ed, dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey,
+	el=\Ex, home=\EH, ht=^I, hts=\E1, il1=\EL, ind=^J, invis=\Ea,
+	kbs=^H, kclr=\Ev, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p,
+	kf1=\E?q, kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v,
+	kf7=\E?w, kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei,
+	kil1=\EL, krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI,
+	rmacs=\EG, rmkx=\E>, rmso=\E3,
+	rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, sgr0=\E3\Eb, smacs=\EF,
+	smkx=\E=, smso=\E4, tbc=\Eg,
+# The older Visuals didn't come with function keys. This entry uses
+# <smkx> and <rmkx> so that the keypad keys can be used as function keys.
+# If your version of vi doesn't support function keys you may want
+# to use vi200-f.
+vi200-f|visual 200 no function keys,
+	is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q,
+	kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
+	kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@,
+	use=vi200,
+vi200-rv|visual 200 reverse video,
+	cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200,
+
+# the function keys are programmable but we don't reprogram them to their
+# default values with <is2> because programming them is very verbose. maybe
+# an initialization file should be made for the 300 and they could be stuck
+# in it.
+# (vi300: added <rmam>/<smam> based on init string -- esr)
+vi300|visual 300 ansi x3.64,
+	am, bw, mir, xenl,
+	cols#80, lines#24,
+	bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	il1=\E[L, ind=^J,
+	is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\E_A\E\\, kf2=\E_B\E\\, kf3=\E_C\E\\, kf4=\E_D\E\\,
+	kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\,
+	kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
+	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
+	smso=\E[1m, smul=\E[4m,
+# some of the vi300s have older firmware that has the command
+# sequence for setting editing extent reversed.
+vi300-old|visual 300 with old firmware (set edit extent reversed),
+	is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s,
+	use=vi300,
+
+# Visual 500 prototype entry from University of Wisconsin.
+# The best place to look for the escape sequences is page A1-1 of the
+# Visual 500 manual.  The initialization sequence given here may be
+# overkill, but it does leave out some of the initializations which can
+# be done with the menus in set-up mode.
+# The :xp: line below is so that emacs can understand the padding requirements
+# of this slow terminal.  :xp: is 10 time the padding factor.
+# (vi500: removed unknown :xp#4: termcap;
+# also added empty <acsc> to suppress tic warning -- esr)
+vi500|visual 500,
+	am, mir, msgr,
+	cols#80, it#8, lines#33,
+	acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M,
+	csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB,
+	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+	dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>,
+	el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>,
+	ind=^J,
+	is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\,
+	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	khome=\EH, nel=^M^J, rmacs=^O, rmir=\Ej, rmso=\E^G,
+	rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,
+
+# The visual 550 is a visual 300 with tektronix graphics,
+# and with 33 lines. clear screen is modified here to
+# also clear the graphics.
+vi550|visual 550 ansi x3.64,
+	lines#33,
+	clear=\030\E[H\E[2J, use=vi300,
+
+vi603|visual603|visual 603,
+	hs, mir,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+	csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L,
+	ind=\ED, is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r,
+	rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+	sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=\EP2~,
+	use=vt100,
+
+#### Wyse (wy)
+#
+#	Wyse Technology
+#	3471 North First Street
+#	San Jose, CA 95134
+#	Vox: (408)-473-1200
+#	Fax: (408) 473-1222
+#	Web: http://www.wyse.com
+#
+# Wyse sales can be reached by phone at 1-800-GET-WYSE.  Tech support is at
+# (800)-800-WYSE (option 5 gets you a human).  There's a Web page at the
+# obvious address, <http://www.wyse.com>.  They keep terminfo entries at
+# <http://www.wyse.co.uk/support/appnotes/idxappnt.htm>.
+#
+# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995.
+# They now own the Qume and Amdek brands, too.  So these are the people to
+# talk with about all Link, Qume, and Amdek terminals.
+#
+# These entries include a few small fixes.
+# I canceled the bel capacities in the vb entries.
+# I made two trivial syntax fixes in the wyse30 entry.
+# I made some entries relative to adm+sgr.
+#
+#
+# Note: The wyse75, wyse85, and wyse99 have been discontinued.
+
+#	   Although the Wyse 30 can support more than one attribute
+#	it requires magic cookies to do so.  Many applications do not
+#	function well with magic cookies.  The following terminfo uses
+#	the protect mode to support one attribute (dim) without cookies.
+#	If more than one attribute is needed then the wy30-mc terminfo
+#	should be used.
+#
+wy30|wyse30|Wyse 30,
+	am, bw, hs, mc5i, mir, msgr, xon,
+	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
+	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
+	civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>,
+	dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9,
+	fsl=^M, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>,
+	ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024,
+	kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7,
+	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ,
+	kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T,
+	mc5=^X, nel=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
+	rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
+	sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
+	smso=\E`7\E), tbc=\E0, tsl=\EF,
+#
+#	This terminal description uses the non-hidden attribute mode
+#	(with magic cookie).
+#
+# (wy30-mc: added <smcup> to suppress tic warning --esr)
+wy30-mc|wyse30-mc|wyse 30 with magic cookies,
+	msgr@,
+	ma@, xmc#1,
+	blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003,
+	rmcup=\EG0, rmso=\EG0,
+	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
+	smso=\EG4, use=wy30, use=adm+sgr,
+#	The mandatory pause used by <flash> does not work with
+#	older versions of terminfo.  If you see this effect then
+#	unset xon and delete the / from the delay.
+#	i.e. change $<100/> to $<100>
+wy30-vb|wyse30-vb|wyse 30 visible bell,
+	bel@, use=wy30,
+#
+#	   The Wyse 50 can support one attribute (e.g. Dim, Inverse,
+#	Normal) without magic cookies by using the protect mode.
+#	The following description uses this feature, but when more
+#	than one attribute is put on the screen at once, all attributes
+#	will be changed to be the same as the last attribute given.
+#	   The Wyse 50 can support more attributes when used with magic
+#	cookies.  The wy50-mc terminal description uses magic cookies
+#	to correctly handle multiple attributes on a screen.
+#
+wy50|wyse50|Wyse 50,
+	am, bw, hs, mc5i, mir, msgr, xon,
+	cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45,
+	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI,
+	civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r,
+	ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M,
+	home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>,
+	is1=\E`\:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H,
+	kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW,
+	kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
+	ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J,
+	pfx=\Ez%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
+	ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
+	sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+	sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
+	smso=\E`6\E), tbc=\E0, tsl=\EF,
+#
+#	This terminal description uses the non-hidden attribute mode
+#	(with magic cookie).
+#
+#	The mandatory pause used by flash does not work with some
+#	older versions of terminfo.  If you see this effect then
+#	unset <xon> and delete the / from the delay.
+#	i.e. change $<100/> to $<100>
+# (wy50-mc: added <smcup> to suppress tic warning --esr)
+wy50-mc|wyse50-mc|wyse 50 with magic cookies,
+	msgr@,
+	ma@, xmc#1,
+	blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4,
+	rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0,
+	sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+	sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
+	smso=\EGt, use=wy50, use=adm+sgr,
+wy50-vb|wyse50-vb|wyse 50 visible bell,
+	bel@, use=wy50,
+wy50-w|wyse50-w|wyse 50 132-column,
+	cols#132, lw#7, nlab#16, wsl#97,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
+	use=wy50,
+wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
+	bel@, use=wy50-w,
+
+#
+#	The Wyse 350 is a Wyse 50 with color.
+#	Unfortunately this means that it has magic cookies.
+#	The color attributes are designed to overlap the reverse, dim and
+#	underline attributes.  This is nice for monochrome applications
+#	because you can make underline stuff green (or any other color)
+#	but for true color applications it's not so hot because you cannot
+#	mix color with reverse, dim or underline.
+#	    To further complicate things one of the attributes must be
+#	black (either the foreground or the background).  In reverse video
+#	the background changes color with black letters.  In normal video
+#	the foreground changes colors on a black background.
+#	    This terminfo uses some of the more advanced features of curses
+#	to display both color and blink.  In the final analysis I am not
+#	sure that the wy350 runs better with this terminfo than it does
+#	with the wy50 terminfo (with user adjusted colors).
+#
+#	The mandatory pause used by flash does not work with
+#	older versions of terminfo.  If you see this effect then
+#	unset xon and delete the / from the delay.
+#	i.e. change $<100/> to $<100>
+#
+# Bug: The <op> capability resets attributes.
+wy350|wyse350|Wyse 350,
+	am, bw, hs, mc5i, mir, xon,
+	colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8,
+	wsl#45, xmc#1,
+	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
+	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+	cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>,
+	dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET,
+	flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1,
+	il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`\:\E`9$<30>,
+	is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
+	ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
+	ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, oc=\E%?, op=\EG0,
+	pfx=\Ez%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej,
+	rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=,
+	setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48}%+%c,
+	sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t%{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+	sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002,
+	smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr,
+wy350-vb|wyse350-vb|wyse 350 visible bell,
+	bel@, use=wy350,
+wy350-w|wyse350-w|wyse 350 132-column,
+	cols#132, lw#7, nlab#16, wsl#97,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
+	use=wy350,
+wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell,
+	bel@, use=wy350-w,
+#
+#	This terminfo description is untested.
+#	The wyse100 emulates an adm31, so the adm31 entry should work.
+#
+wy100|wyse 100,
+	hs, mir,
+	cols#80, lines#24, xmc#1,
+	bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=^M, il1=\EE, ind=^J,
+	invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r,
+	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=\E{,
+	rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr,
+#
+#	The Wyse 120/150 has most of the features of the Wyse 60.
+#	This terminal does not need padding up to 9600 baud!
+#	<msgr> should be set but the clear screen fails when in
+#	alt-charset mode.  Try \EcE\s\s\E+\s if the screen is really clear
+#	then set <msgr>.
+#
+wy120|wyse120|wy150|wyse150|Wyse 120/150,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
+	acsc=+/\,.0[iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
+	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
+	cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
+	dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
+	flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=\011$<1>,
+	hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
+	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+	is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
+	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K,
+	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
+	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
+	rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11,
+	rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
+	rs3=\EwG\Ee($<100>,
+	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
+	smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
+	tbc=\E0, tsl=\EF, use=adm+sgr,
+#
+wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column,
+	cols#132, lw#7, nlab#16, wsl#97,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
+	rs2=\E`;$<70>, use=wy120,
+#
+wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy120,
+#
+wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy120-w,
+#
+wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell,
+	bel@, use=wy120,
+#
+wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell,
+	bel@, use=wy120-w,
+#
+#	The Wyse 60 is like the Wyse 50 but with more padding.
+#	The reset strings are slow and the pad times very depending
+#	on other parameters such as font loading.  I have tried
+#	to follow the following outline:
+#
+#		<rs1> -> set personality
+#		<rs2> -> set number of columns
+#		<rs3> -> set number of lines
+#		<is1> -> select the proper font
+#		<is2> -> do the initialization
+#		<is3> -> set up display memory (2 pages)
+#
+#	The Wyse 60's that have vt100 emulation are slower than the
+#	older Wyse 60's.  This change happened mid-1987.
+#	The capabilities effected are <dch1> <dl1> <il1> <ind> <ri>
+#
+#	The meta key is only half right.  This terminal will return the
+#	high order bit set when you hit CTRL-function_key
+#
+#	It may be useful to assign two function keys with the
+#	values  \E=(\s  look at old data in page 1
+#	        \E=W,   look at bottom of page 1
+#	where \s is a space ( ).
+#
+#	Note:
+#	   The Wyse 60 runs faster when the XON/XOFF
+#	   handshake is turned off.
+#
+# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid
+# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
+wy60|wyse60|Wyse 60,
+	am, bw, hs, km, mc5i, mir, msgr,
+	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45,
+	acsc=+/\,.0[iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
+	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>,
+	cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r,
+	ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M,
+	home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>,
+	ip=$<3>, is1=\EcB0\EcC1,
+	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+	is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
+	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K,
+	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
+	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
+	rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er,
+	rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>,
+	rs2=\EeG$<150>, rs3=\EwG\Ee($<200>,
+	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
+	smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
+	tbc=\E0, tsl=\EF, use=adm+sgr,
+#
+wy60-w|wyse60-w|wyse 60 132-column,
+	cols#132, lw#7, nlab#16, wsl#97,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>,
+	rs2=\EeF$<150>\E`;$<150>, use=wy60,
+#
+wy60-25|wyse60-25|wyse 60 80-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<200>, use=wy60,
+wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<200>, use=wy60-w,
+#
+wy60-42|wyse60-42|wyse 60 80-column 42-lines,
+	lines#42,
+	clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>,
+	dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>,
+	ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>,
+	ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60,
+wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines,
+	cols#132, lw#7, nlab#16, wsl#97,
+	clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>,
+	dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>,
+	nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
+#
+wy60-43|wyse60-43|wyse 60 80-column 43-lines,
+	lh@, lines#43, lw@, nlab@,
+	pln@, rs3=\Ee+$<150>, use=wy60-42,
+wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines,
+	lh@, lines#43, lw@, nlab@,
+	pln@, rs3=\Ee+$<150>, use=wy60-42-w,
+#
+wy60-vb|wyse60-vb|Wyse 60 visible bell,
+	bel@, use=wy60,
+wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
+	bel@, use=wy60-w,
+
+#	The Wyse-99GT looks at lot like the Wyse 60 except that it
+#	does not have the 42/43 line mode.  In the Wyse-60 the "lines"
+#	setup parameter controls the number of lines on the screen.
+#	For the Wyse 99GT the "lines" setup parameter controls the
+#	number of lines in a page.  The screen can display 25 lines max.
+#	    The Wyse-99GT also has personalities for the VT220 and
+#	Tektronix 4014.  But this has no bearing on the native mode.
+#
+#	(msgr) should be set but the clear screen fails when in
+#	alt-charset mode.  Try \EcE\s\s\E+\s if the screen is really clear
+#	then set msgr, else use msgr@.
+#
+#	u0 -> enter Tektronix mode
+#	u1 -> exit Tektronix mode
+#
+wy99gt|wyse99gt|Wyse 99gt,
+	msgr@,
+	clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>,
+	el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>,
+	il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
+	ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1,
+	u0=\E~>\E8, u1=\E[42h, use=wy60,
+#
+wy99gt-w|wyse99gt-w|wyse 99gt 132-column,
+	cols#132, lw#7, nlab#16, wsl#97,
+	clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>,
+	dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>,
+	use=wy99gt,
+#
+wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs2=\E`\:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt,
+#
+wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs2=\E`;$<150>, use=wy99gt-w,
+#
+wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
+	bel@, use=wy99gt,
+#
+wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
+	bel@, use=wy99gt-w,
+
+# Can't set tabs! Other bugs (ANSI mode only):
+# - can't redefine function keys (anyway, key redefinition in ANSI mode
+#   is too much complex to be described);
+# - meta key can't be described (the terminal forgets it when reset);
+# The xon-xoff handshaking can't be disabled while in ansi personality, so
+# emacs can't work at speed greater than 9600 baud.  No padding is needed at
+# this speed.
+#   dch1 has been commented out because it causes annoying glittering when
+# vi deletes one character at the beginning of a line with tabs in it.
+#   dch makes sysgen(1M) have a horrible behaviour when deleting
+# a screen and makes screen(1) behave badly, so it is disabled too. The nice
+# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are
+# not, so smir and rmir are commented out as well.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
+	am, km, mc5i, mir, msgr, xenl,
+	cols#80, it#8, lines#25, vt#3,
+	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
+	cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
+	cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+	cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>,
+	enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
+	il1=\E[L, ind=\n$<1>, invis=\E[8m,
+	is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
+	kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ,
+	kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~,
+	kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h,
+	mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
+	rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
+	rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E\E[4i,
+	sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+
+#   This is the american terminal. Here tabs work fine.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard),
+	hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi,
+
+# This terminal (firmware version 02) has a lot of bugs:
+# - can't set tabs;
+# - other bugs in ANSI modes (see above).
+# This description disables handshaking when using cup. This is because
+# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal
+# cannot be used at speeds greater than 9600 baud, because at greater
+# speeds handshaking is needed even for character sending. If you use
+# DTR handshaking, you can use even greater speeds.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	cols#80, it#8, lines#25, wsl#46,
+	acsc='x+y.wi~_vj(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G,
+	blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032,
+	cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r,
+	ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>,
+	flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE,
+	ind=^J, invis=\EG3,
+	is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024,
+	ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r,
+	kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r,
+	kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#,
+	nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed.,
+	rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30,
+	rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
+	sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;,
+	sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30,
+	smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF,
+
+# This is the american terminal. Here tabs work.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard),
+	hts=\E1, tbc=\E0, use=wy99f,
+
+#
+#	The Wyse 160 is combination of the WY-60 and the WY-99gt.
+#	The reset strings are slow and the pad times very depending
+#	on other parameters such as font loading.  I have tried
+#	to follow the following outline:
+#
+#		<rs1> -> set personality
+#		<rs2> -> set number of columns
+#		<rs3> -> set number of lines
+#		<is1> -> select the proper font
+#		<is2> -> do the initialization
+#		<is3> -> set up display memory (2 pages)
+#
+#	The display memory may be used for either text or graphics.
+#	When "Display Memory = Shared" the terminal will have more pages
+#	but garbage may be left on the screen when you switch from
+#	graphics to text.  If "Display Memory = Unshared" then the
+#	text area will be only one page long.
+#
+# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid
+# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
+wy160|wyse160|Wyse 160,
+	am, bw, hs, km, mc5i, mir, msgr,
+	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38,
+	acsc=+/\,.0[iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
+	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>,
+	cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>,
+	dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>,
+	el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=^M, home=\E{, ht=^I,
+	hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1,
+	is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+	is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
+	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K,
+	mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>,
+	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>,
+	rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er,
+	rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>,
+	rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>,
+	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
+	smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21,
+	tbc=\E0, tsl=\EF, use=adm+sgr,
+#
+wy160-w|wyse160-w|wyse 160 132-column,
+	cols#132, lw#7, nlab#16, wsl#90,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>,
+	rs2=\EeF$<150>\E`;$<150>, use=wy160,
+#
+wy160-25|wyse160-25|wyse 160 80-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<200>, use=wy160,
+wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<200>, use=wy160-w,
+#
+wy160-42|wyse160-42|wyse 160 80-column 42-lines,
+	lines#42,
+	clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>,
+	ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>,
+	rs3=\Ee*$<150>, use=wy160,
+wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines,
+	cols#132, lw#7, nlab#16, wsl#90,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>,
+	rs2=\EeF$<150>\E`;$<150>, use=wy160-42,
+#
+wy160-43|wyse160-43|wyse 160 80-column 43-lines,
+	lh@, lines#43, lw@, nlab@,
+	pln@, rs3=\Ee+$<150>, use=wy160-42,
+wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines,
+	lh@, lines#43, lw@, nlab@,
+	pln@, rs3=\Ee+$<150>, use=wy160-42-w,
+#
+wy160-vb|wyse160-vb|Wyse 160 visible bell,
+	bel@, use=wy160,
+wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
+	bel@, use=wy160-w,
+#
+#	The Wyse 75 is a vt100 lookalike without advanced video.
+#
+#	   The Wyse 75 can support one attribute (e.g. Dim, Inverse,
+#	Underline) without magic cookies.  The following description
+#	uses this capability, but when more than one attribute is
+#	put on the screen at once, all attributes will be changed
+#	to be the same as the last attribute given.
+#	   The Wyse 75 can support more attributes when used with magic
+#	cookies.  The wy75-mc terminal description uses magic cookies
+#	to correctly handle multiple attributes on a screen.
+#
+wy75|wyse75|wyse 75,
+	am, hs, mc5i, mir, msgr, xenl, xon,
+	cols#80, lines#24, ma#1, pb#1201, wsl#78,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<30>,
+	cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr$<2>,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>,
+	dch1=\E[P$<3>, dim=\E[0t\E[2m, dl=\E[%p1%dM$<1*>,
+	dl1=\E[M, dsl=\E[>\,\001\001\E[>-\001\001,
+	ech=\E[%p1%dX, ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>,
+	enacs=\E)0, flash=\E[30h\E\,\E[30l$<250>, fsl=^A,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
+	ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
+	ind=\n$<2>, ip=$<1>,
+	is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h,
+	is2=\E>\E(B\E)0\017, is3=\E[m, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K,
+	kf1=\E[?5i, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[?3i,
+	kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+	khlp=\E[28~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~,
+	kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i,
+	mc5=\E[5i, rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, rmacs=^O,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m,
+	rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l,
+	sc=\E7,
+	sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t\E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m,
+	tbc=\E[3g, tsl=\E[>\,\001, use=vt220+keypad,
+#
+#	This terminal description uses the non-hidden attribute mode
+#	(with magic cookie).
+#
+wy75-mc|wyse75-mc|wyse 75 with magic cookies,
+	msgr@,
+	ma@, xmc#1,
+	blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p,
+	rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p,
+	sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;,
+	sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p,
+	use=wy75,
+wy75-vb|wyse75-vb|wyse 75 with visible bell,
+	pb@,
+	bel@, use=wy75,
+wy75-w|wyse75-w|wyse 75 in 132 column mode,
+	cols#132, wsl#130,
+	rs2=\E[35h\E[?3h$<80>, use=wy75,
+wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns,
+	pb@,
+	bel@, use=wy75-w,
+#
+#	Wyse 85 emulating a vt220 7 bit mode.
+#		24 line screen with status line.
+#
+#	The vt220 mode permits more function keys but it wipes out
+#	the escape key.  I strongly recommend that <f11> be set to
+#	escape (esc).
+#	The terminal may have to be set for 8 data bits and 2 stop
+#	bits for the arrow keys to work.
+#	The Wyse 85 runs faster with XON/XOFF enabled.  Also the
+#	<dch> and <ich> work best when XON/XOFF is set.  <ich> and
+#	<dch> leave trash on the screen when used without XON/XOFF.
+#
+wy85|wyse85|wyse 85,
+	am, hs, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
+	dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
+	ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
+	enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
+	fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
+	ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
+	ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
+	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
+	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+	khome=\E[26~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
+	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
+	rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
+	rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
+	rs3=\E[?5l, sc=\E7,
+	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+keypad,
+#
+#	Wyse 85 with visual bell.
+wy85-vb|wyse85-vb|wyse 85 with visible bell,
+	bel@, flash=\E[30h\E\,\E[30l$<300>, use=wy85,
+#
+#	Wyse 85 in 132-column mode.
+wy85-w|wyse85-w|wyse 85 in 132-column mode,
+	cols#132, wsl#132,
+	rs2=\E[35h\E[?3h$<70>, use=wy85,
+#
+#	Wyse 85 in 132-column mode with visual bell.
+wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
+	bel@, use=wy85-w,
+
+# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998
+# This copes with an apparent firmware bug in the wy85.  He writes:
+# "What I did was change leave the terminal cursor keys set to Normal
+# (instead of application), and change \E[ to \233 for all the keys in
+# terminfo. At one point, I found some reference indicating that this
+# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just
+# me), but I can't find that and the server under my bookmark to "Wyse
+# Technical" isn't responding.  So there's the question of wether the wy85
+# terminfo should reflect the manufactuer's intended behaviour of the terminal
+# or the actual."
+wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode,
+	am, hs, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
+	dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
+	ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
+	enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
+	fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
+	ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
+	ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
+	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
+	is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
+	kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B,
+	kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM,
+	kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
+	kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
+	kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ,
+	kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~,
+	kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~,
+	khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~,
+	kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
+	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
+	rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
+	rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
+	rs3=\E[?5l, sc=\E7,
+	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[40h\E7\E[25;%i%p1%dH,
+#
+#	Wyse 185 emulating a vt320 7 bit mode.
+#
+#	This terminal always displays 25 lines.  These lines may be used
+#	as 24 data lines and a terminal status line (top or bottom) or
+#	25 data lines.  The 48 and 50 line modes change the page size
+#	and not the number of lines on the screen.
+#
+#	The Compose Character key can be used as a meta key if changed
+#	by set-up.
+#
+wy185|wyse185|wyse 185,
+	am, hs, km, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<3>,
+	dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
+	dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>,
+	el=\E[K, el1=\E[1K, enacs=\E)0,
+	flash=\E[30h\E\,\E[30l$<100>, fsl=\E[1;24r\E8,
+	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH,
+	ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
+	ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
+	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h,
+	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR,
+	kf4=\EOS, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~,
+	knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3,
+	lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
+	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
+	rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
+	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
+	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
+	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
+	smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
+	use=vt220+keypad,
+#
+#	Wyse 185 with 24 data lines and top status (terminal status)
+wy185-24|wyse185-24|wyse 185 with 24 data lines,
+	hs@,
+	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+	use=wy185,
+#
+#	Wyse 185 with visual bell.
+wy185-vb|wyse185-vb|wyse 185+flash,
+	bel@, use=wy185,
+#
+#	Wyse 185 in 132-column mode.
+wy185-w|wyse185-w|wyse 185 in 132-column mode,
+	cols#132, wsl#132,
+	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+	ip=$<7>, rs2=\E[35h\E[?3h, use=wy185,
+#
+#	Wyse 185 in 132-column mode with visual bell.
+wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols,
+	bel@, use=wy185-w,
+
+# wy325 terminfo entries
+# Done by Joe H. Davis        3-9-92
+
+# lines 25  columns 80
+#
+wy325|wyse325|Wyse epc,
+	am, bw, hs, mc5i, mir,
+	cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
+	acsc=+/\,.0[iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~,
+	bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>,
+	cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>,
+	dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>,
+	flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1,
+	il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1,
+	is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El,
+	is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+	kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+	kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+	kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq,
+	kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K,
+	mc0=\EP, mc4=^T, mc5=\Ed#,
+	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
+	rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11,
+	rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
+	rs3=\EwG\Ee($<100>,
+	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+	sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/,
+	smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0,
+	tsl=\EF, use=adm+sgr,
+
+#
+# lines 24  columns 80  vb
+#
+wy325-vb|wyse325-vb|wyse-325 with visual bell,
+	bel@, use=wy325,
+
+#
+# lines 24  columns 132
+#
+wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode,
+	cols#132, lw#7, nlab#16, wsl#97,
+	cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
+	rs2=\E`;$<70>, use=wy325,
+#
+# lines 25  columns 80
+#
+wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy325,
+#
+# lines 25  columns 132
+#
+wy325-25w|wyse325-25w|wy325 132 columns,
+	lh@, lines#25, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+#
+# lines 25  columns 132  vb
+#
+wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video,
+	bel@, use=wy325-w,
+
+#
+# lines 42  columns 80
+#
+wy325-42|wyse325-42|wyse-325 42 lines,
+	lh@, lines#42, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy325,
+#
+# lines 42  columns 132
+#
+wy325-42w|wyse325-42w|wyse-325 42 lines wide mode,
+	lh@, lines#42, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+#
+# lines 42  columns 132  vb
+#
+wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell,
+	bel@, use=wy325-w,
+#
+# lines 43  columns 80
+#
+wy325-43|wyse325-43|wyse-325 43 lines,
+	lh@, lines#43, lw@, nlab@,
+	pln@, use=wy325,
+#
+# lines 43  columns 132
+#
+wy325-43w|wyse325-43w|wyse-325 43 lines wide mode,
+	lh@, lines#43, lw@, nlab@,
+	pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+#
+# lines 43  columns 132  vb
+#
+wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell,
+	bel@, use=wy325-w,
+
+#	Wyse 370 -- 24 line screen with status line.
+#
+#	The terminal may have to be set for 8 data bits and 2 stop
+#	bits for the arrow keys to work.
+#
+#	If you change keyboards the terminal will send different
+#	escape sequences.
+#	The following definition is for the basic terminal without
+#	function keys.
+#
+#	<u0> -> enter Tektronix 4010/4014 mode
+#	<u1> -> exit  Tektronix 4010/4014 mode
+#	<u2> -> enter ASCII mode (from any ANSI mode)
+#	<u3> -> exit  ASCII mode (goto native ANSI mode)
+#	<u4> -> enter Tek 4207 ANSI mode (from any ANSI mode)
+#	<u5> -> exit  Tek 4207 mode (goto native ANSI mode)
+#
+# Bug: The <op> capability resets attributes.
+wy370-nk|wyse 370 without function keys,
+	am, ccc, hs, mc5i, mir, msgr, xenl, xon,
+	colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>,
+	dclk=\E[31h, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
+	dsl=\E[40l, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>,
+	el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0,
+	flash=\E[30h\E\,\E[30l$<300>, fsl=\E[1;24r\E8,
+	home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH,
+	ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
+	ind=\n$<2>,
+	initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e%p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3%{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}%<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;%{1}%+%+%+%dw,
+	invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>,
+	is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h,
+	is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i,
+	mc5=\E[5i,
+	oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w\E[66;5;51w\E[66;6;61w\E[66;7;64w,
+	op=\E[m, rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O,
+	rmam=\E[?7l, rmclk=\E[31l, rmcup=\E[ R, rmir=\E[4l,
+	rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
+	rs1=\E[13l\E[3l\E!p\E[?4i, rs2=\E[35h\E[?3l$<8>,
+	rs3=\E[?5l, sc=\E7, setb=\E[62;%p1%dw, setf=\E[61;%p1%dw,
+	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
+	smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH,
+	u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B,
+	u4=\E[92;76"p, u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd,
+#
+#	Function key set for the ASCII (wy-50 compatible) keyboard
+#	This is the default 370.
+#
+wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
+	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i,
+	kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP,
+	knp=\E[U, kpp=\E[V, use=wy370-nk,
+#
+#	Function key set for the VT-320 (and wy85) compatible keyboard
+#
+wy370-105k|Wyse 370 with 105 key keyboard,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[3~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+	khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~,
+	kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4,
+	use=wy370-nk, use=vt220+keypad,
+#
+#	Function key set for the PC compatible keyboard
+#
+wy370-EPC|Wyse 370 with 102 key keyboard,
+	kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk,
+#
+#	Wyse 370 with visual bell.
+wy370-vb|Wyse 370 with visible bell,
+	bel@, use=wy370,
+#
+#	Wyse 370 in 132-column mode.
+wy370-w|Wyse 370 in 132-column mode,
+	cols#132, wsl#132,
+	rs2=\E[35h\E[?3h$<70>, use=wy370,
+#
+#	Wyse 370 in 132-column mode with visual bell.
+wy370-wvb|Wyse 370 with visible bell 132-columns,
+	flash=\E[30h\E\,\E[30l$<300>, use=wy370-w,
+wy370-rv|Wyse 370 reverse video,
+	rs3=\E[32h\E[?5h, use=wy370,
+#
+#	Wyse 99gt Tektronix 4010/4014 emulator,
+#
+wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator,
+	am, os,
+	cols#74, lines#35,
+	bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s,
+	cup=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037,
+	cuu1=^K, ff=^L,
+	hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
+	home=^]7`x @\037,
+	hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
+	is2=\E8, nel=^M^J, u0=\E~>\E8, u1=\E[42h,
+#
+#	Wyse 160 Tektronix 4010/4014 emulator,
+#
+wy160-tek|Wyse 160 Tektronix 4010/4014 emulator,
+	cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037,
+	home=^]8`g @\037, use=wy99gt-tek,
+#
+#	Wyse 370 Tektronix 4010/4014 emulator,
+#
+wy370-tek|Wyse 370 Tektronix 4010/4014 emulator,
+	am, os,
+	cols#80, lines#36,
+	bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s,
+	cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/%Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}%/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037,
+	cuu1=^K, ff=^L,
+	hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
+	home=^]8g @\037,
+	hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
+	is2=\E8, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^I, kcuu1=^K,
+	nel=^M^J, u0=\E[?38h\E8, u1=\E[?38l\E)0,
+
+# Vendor-supplied Wyse entries end here.
+
+#
+#TITLE:  TERMINFO ENTRY WY520
+#DATE:   8/5/93
+# The WY520 terminfo is based on the WY285 entry published on the WYSE
+# BBS with the addition of more function keys and special keys.
+#
+#               rs1 -> set personality
+#               rs2 -> set number of columns
+#               rs3 -> set number of lines
+#               is1 -> select the proper font
+#               is2 -> do the initialization
+#               is3 -> If this string is empty then rs3 gets sent.
+#
+#       Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard
+#       - The BS key is programmed to generate BS in smcup since
+#         is2 doesn't seem to work.
+#       - Remove and shift/Remove: delete a character
+#       - Insert : enter insert mode
+#       - Find   : delete to end of file
+#       - Select : clear a line
+#       - F11, F12, F13: send default sequences (not ESC, BS, LF)
+#       - F14 : Home key
+#       - Bottom status line (host writable line) is used.
+#       - smkx,rmkx are removed because this would put the numeric
+#         keypad in Dec application mode which doesn't seem to work
+#         with SCO applications.
+#
+wy520|wyse520|wyse 520,
+	am, hs, km, mc5i, mir, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<30>,
+	dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[0$~,
+	ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K,
+	enacs=\E)0, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%d`, ht=^I,
+	hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>,
+	il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
+	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h,
+	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~,
+	kel=\E[4~, kent=\EOM, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+	kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, khome=\E[26~,
+	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1,
+	lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+	rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l,
+	rmcup=\E[ R, rmir=\E[4l, rmso=\E[m, rmul=\E[24m,
+	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
+	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
+	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h,
+	smcup=\E[ Q\E[?67;8h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
+	vpa=\E[%i%p1%dd, use=vt220+keypad,
+#
+#       Wyse 520 with 24 data lines and status (terminal status)
+wy520-24|wyse520-24|wyse 520 with 24 data lines,
+	hs@,
+	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+	use=wy520,
+#
+#       Wyse 520 with visual bell.
+wy520-vb|wyse520-vb|wyse 520 with visible bell,
+	flash=\E[30h\E\,\E[30l$<100>, use=wy520,
+#
+#       Wyse 520 in 132-column mode.
+wy520-w|wyse520-w|wyse 520 in 132-column mode,
+	cols#132, wsl#132,
+	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+	ip=$<7>, rs2=\E[35h\E[?3h, use=wy520,
+#
+#       Wyse 520 in 132-column mode with visual bell.
+wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns,
+	flash=\E[30h\E\,\E[30l$<100>, use=wy520-w,
+#
+#
+#       Wyse 520 emulating a vt420 7 bit mode.
+#       The DEL key is programmed to generate BS in is2.
+#       With EPC keyboard.
+#       - 'End' key will clear till end of line on EPC keyboard
+#       - Shift/End : ignored.
+#       - Insert : enter insert mode.
+#       - Delete : delete a character (have to change interrupt character
+#                  to CTRL-C: stty intr '^c') for it to work since the
+#                  Delete key sends 7FH.
+wy520-epc|wyse520-epc|wyse 520 with EPC keyboard,
+	kdch1=\177, kel=\E[4~, kend=\E[4~, kf0=\E[21~, kf1=\E[11~,
+	kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, khome=\E[H,
+	use=wy520,
+#
+#       Wyse 520 with 24 data lines and status (terminal status)
+#       with EPC keyboard.
+wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard,
+	hs@,
+	dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+	use=wy520-epc,
+#
+#       Wyse 520 with visual bell.
+wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard,
+	flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc,
+#
+#       Wyse 520 in 132-column mode.
+wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard,
+	cols#132, wsl#132,
+	dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+	ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc,
+#
+#       Wyse 520 in 132-column mode with visual bell.
+wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard,
+	flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc-w,
+#
+#       Wyse 520 in 80-column, 36 lines
+wy520-36|wyse520-36|wyse 520 with 36 data lines,
+	hs@,
+	lines#36,
+	dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
+	use=wy520,
+#
+#       Wyse 520 in 80-column, 48 lines
+wy520-48|wyse520-48|wyse 520 with 48 data lines,
+	hs@,
+	lines#48,
+	dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
+	use=wy520,
+#
+#       Wyse 520 in 132-column, 36 lines
+wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines,
+	cols#132, wsl#132,
+	rs2=\E[?3h,
+	rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
+	use=wy520-36,
+#
+#       Wyse 520 in 132-column, 48 lines
+wy520-48w|wyse520-48w|wyse 520 with 48 data lines,
+	cols#132, wsl#132,
+	rs2=\E[?3h,
+	rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
+	use=wy520-48,
+#
+#
+#       Wyse 520 in 80-column, 36 lines with EPC keyboard
+wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard,
+	hs@,
+	lines#36,
+	dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
+	use=wy520-epc,
+#
+#       Wyse 520 in 80-column, 48 lines with EPC keyboard
+wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard,
+	hs@,
+	lines#48,
+	dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
+	use=wy520-epc,
+#
+#       Wyse 520 in 132-column, 36 lines with EPC keyboard
+wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard,
+	cols#132, wsl#132,
+	rs2=\E[?3h,
+	rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
+	use=wy520-36pc,
+#
+#       Wyse 520 in 132-column, 48 lines with EPC keyboard
+wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard,
+	cols#132, wsl#132,
+	rs2=\E[?3h,
+	rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
+	use=wy520-48pc,
+
+# From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
+# (wyse-vp: removed <if=/usr/local/share/tabset/wyse-adds>, there's no such
+# file and we don't know what <hts> is -- esr)
+wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW,
+	dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=^J,
+	is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=^J, kcuf1=^F,
+	kcuu1=^Z, khome=^A, ll=^A^Z, nel=^M^J, rmir=\Er, rmso=^O,
+	rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N,
+	smul=^N,
+
+wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
+	is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>,
+	use=wy75,
+
+# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
+wy100q|Wyse 100 for Quotron,
+	OTbs,
+	cols#80, lines#24, xmc#1,
+	cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@,
+	is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,
+
+#### Kermit terminal emulations
+#
+# Obsolete Kermit versions may be listed in the section describing obsolete
+# non-ANSI terminal emulators later in the file.
+#
+
+# KERMIT standard all versions.
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 9-25-84
+kermit|standard kermit,
+	OTbs,
+	cols#80, lines#24,
+	clear=\EE, cub1=^H, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, home=\EH, is2=K0 Standard Kermit  9-25-84\n,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+kermit-am|standard kermit plus auto-margin,
+	am,
+	is2=K1 Standard Kermit plus Automatic Margins\n,
+	use=kermit,
+# IBMPC Kermit 1.2.
+# Bugs: <ed>, <el>: do not work except at beginning of line!  <clear> does
+# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
+# line).
+# From: greg small <gts@populi.berkeley.edu> 8-30-84
+pckermit|pckermit12|UCB IBMPC Kermit 1.2,
+	am,
+	lines#25,
+	clear=\EH\EJ, ed@, el@,
+	is2=K2 UCB IBMPC Kermit 1.2  8-30-84\n, use=kermit,
+# IBMPC Kermit 1.20
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Cannot use character insert because 1.20 goes crazy if insert at col 80.
+# Does not use :am: because autowrap is lost when kermit dropped and restarted.
+# From: greg small <gts@populi.berkeley.edu> 12-19-84
+pckermit120|UCB IBMPC Kermit 1.20,
+	it#8, lines#24,
+	cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I,
+	il1=\EL,
+	is2=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20  12-19-84\n,
+	rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit,
+# MS-DOS Kermit 2.27 for the IBMPC
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Does not use am: because autowrap is lost when kermit dropped and restarted.
+# Reverse video for standout like H19.
+# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 3-17-85
+msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
+	OTbs, am@,
+	cols#80, it#8, lines#24,
+	clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+	cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK,
+	home=\EH, ht=^I, il1=\EL,
+	is2=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek,
+	rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep,
+# MS-DOS Kermit 2.27 with automatic margins
+# From:	greg small <gts@populi.berkeley.edu> 3-17-85
+msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins,
+	am,
+	cvvis=\EO\Eq\EG\EvK5,
+	is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n,
+	use=msk227,
+# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
+# Automatic margins now default.  Use ansi <sgr> for highlights.
+# Define function keys.
+# (msk22714: removed obsolete ":kn#10:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 3-17-85
+msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC,
+	am,
+	bold=\E[1m, cvvis=\EO\Eq\EG\EvK6,
+	is2=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n,
+	kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6,
+	kf7=\E7, kf8=\E8, kf9=\E9, rev=\E[7m, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smso=\E[1m, smul=\E[4m, use=mskermit227,
+# This was designed for a VT320 emulator, but it is probably a good start
+# at support for the VT320 itself.
+# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
+# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
+vt320-k3|MS-Kermit 3.00's vt320 emulation,
+	am, eslok, hs, km, mir, msgr, xenl,
+	cols#80, it#8, lines#49, pb#9600, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l,
+	fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is2=\E>\E F\E[?1l\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~,
+	kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=^M^J, rc=\E8,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l,
+	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+	rs1=\E(B\E)B\E>\E F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E[4i\E[?4i\E[m\E[r\E[2$~,
+	sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd,
+# From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991
+# ACS capabilities from Philippe De Muyter  <phdm@info.ucl.ac.be> 30 May 1996
+# (I removed a bogus boolean :mo: and added <msgr>, <smam>, <rmam> -- esr)
+vt320-k311|dec vt320 series as defined by kermit 3.11,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[;H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
+	flash=\E[?5h\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>, ind=\ED,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
+	lf3=pf3, lf4=pf4, nel=^M\ED, rc=\E8, rev=\E[7m,
+	rf=/usr/local/share/tabset/vt100, ri=\EM, rmacs=^O,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+	rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
+	smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH,
+
+######## NON-ANSI TERMINAL EMULATIONS
+#
+
+#### Avatar
+#
+# These entries attempt to describe Avatar, a terminal emulation used with
+# MS-DOS bulletin-board systems.  It was designed to give ANSI-like
+# capabilities, but with cheaper (shorter) control sequences.  Messy design,
+# excessively dependent on PC idiosyncracies, but apparently rather popular
+# in the BBS world.
+#
+# No color support.  Avatar doesn't fit either of the Tektronix or HP color
+# models that terminfo knows about.  An Avatar color attribute is the
+# low 7 bits of the IBM-PC display-memory attribute.  Bletch.
+#
+# I wrote these entries while looking at the Avatar spec.  I don't have
+# the facilities to test them.  Let me know if they work, or don't.
+#
+# Avatar escapes not used by these entries (because maybe you're smarter
+# and more motivated than I am and can figure out how to wrap terminfo
+# around some of them, and because they are weird enough to be funny):
+#				level 0:
+# ^L		-- clear window/reset current attribute to default
+# ^V^A%p1%c	-- set current color attribute, parameter decodes as follows:
+#
+#      bit:         6   5   4   3   2   1   0
+#                   |       |   |   |       |
+#                   +---+---+   |   +---+---+
+#                       |       |       |
+#                       |       |  foreground color
+#                       |  foreground intensity
+#                  background color
+#				level 0+:
+# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c	-- scroll (p2,p3) to (p4,p5) up by p1 lines
+# ^V^K%p1%c%p2%c%p3%c%p4%c%p5%c	-- scroll (p2,p3) to (p4,p5) down by p1 lines
+# ^V^L%p1%c%p2%c%p3%c		-- clear p2 lines and p3 cols w/attr %p1
+# ^V^M%p1%c%p2%c%p3%c%p4%c	-- fill p3 lines & p4 cols w/char p2+attr %p1
+# (^V^L and ^V^M set the current attribute as a side-effect.)
+# ^V ^Y <a> [...] <c>	-- repeat pattern. <a> specifies the number of bytes
+#			   in the pattern, <c> the number of times the pattern
+#		  	   should be repeated. If either value is 0, no-op.
+#			   The pattern can contain Avatar console codes,
+#			   including other ^V ^Y patterns.
+#				level 1:
+# ^V^O		-- clockwise mode on; turn print direction right each time you
+#		   hit a window edge (yes, really).  Turned off by CR
+# ^V^P		-- no-op
+# ^V^Q%c	-- query the driver
+# ^V^R		-- driver reset
+# ^V^S		-- Sound tone (PC-specific)
+# ^V^T			-- change highlight at current cursor poition to %c
+# ^V^U%p1%c%p2%c	-- highlight window <a> with attribute <b>
+# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c
+#			-- define window
+#
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+# (The <blink>/<bold>/<rev>/<smacs>/<smul>/<smso> capabilities exist only to
+# tell ncurses that the corresponding highlights exist; it should use <sgr>,
+# which is the only method that will actually work for multiple highlights.)
+#
+# Update by TD - 2004: half of this was inconsistent.  Found documentation
+# and repaired most of the damage.  sgr0 is probably incorrect, but the
+# available documentation gives no clues for a workable string.
+avatar0|avatar terminal emulator level 0,
+	am, bce, msgr,
+	cols#80, it#8, lines#25,
+	blink=^V^B, bold=^V^A^P, cr=^M, cub1=^V^E, cud1=^V^D,
+	cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G,
+	ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap,
+	rmacs@, rs2=^L,
+	sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t%{16}%|%;%;%c%;%?%p4%t\026\002%;,
+	sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A,
+	use=klone+acs,
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+avatar0+|avatar terminal emulator level 0+,
+	dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0,
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+avatar|avatar1|avatar terminal emulator level 1,
+	civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+,
+	rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+,
+
+#### RBcomm
+#
+# RBComm is a lean and mean terminal emulator written by the Interrupt List
+# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early
+# '90s), especially in the BBS world, and still has some loyal users due to
+# its very small memory footprint and to a cute macro language.
+rbcomm|IBM PC with RBcomm and EMACS keybindings,
+	am, bw, mir, msgr, xenl,
+	cols#80, it#8, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=^L, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^C, cuf1=^B,
+	cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W,
+	dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I,
+	il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m,
+	is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H,
+	kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=^M\ED,
+	rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=,
+	rmir=^], rmkx=\E>, rmso=^U, rmul=^U,
+	rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m,
+	smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T,
+rbcomm-nam|IBM PC with RBcomm without autowrap,
+	am@,
+	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
+	is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
+	kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
+rbcomm-w|IBM PC with RBcomm in 132 column mode,
+	cols#132,
+	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
+	is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
+	kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
+
+######## LCD DISPLAYS
+#
+
+#### Matrix Orbital
+# from: Eric Z. Ayers  (eric@ale.org)
+#
+# Matrix Orbital 20x4 LCD display
+# Command Character is 0xFE (decimal 254, octal 376)
+#
+# On this device, cursor addressability isn't possible.  The LCD expects:
+#      0xfe G <col> <row>
+#      for cup: %p1 == row and %p2 is column
+#
+# This line:
+#	cup=\376G%p2%c%p1%c
+# LOOKS like it will work, but sometimes only one of the two numbers is sent.
+# See the terminfo (5) manpage commented regarding 'Terminals which use "%c"'.
+#
+# Alas, there is no cursor upline capability on this display.
+#
+# These entries add some 'sanity stuff' to the clear function.  That is, it
+# does a 'clear' and also turns OFF auto scroll, turns ON Auto Line Wrapping,
+# and turns off the cursor blinking and stuff like that.
+#
+# NOTE: calling 'beep' turns on the backlight (bell)
+# NOTE: calling 'flash' turns it on and back off (visual bell)
+#
+MtxOrb|Generic Matrix Orbital LCD display,
+	bel=\376B^A, clear=\376X\376C\376R\376K\376T,
+	cnorm=\376K\376T, cub1=\376L, cuf1=\376M,
+	flash=\376B\001$<200>\376F, home=\376H,
+MtxOrb204|20x4 Matrix Orbital LCD display,
+	cols#20, lines#4, use=MtxOrb,
+MtxOrb162|16x2 Matrix Orbital LCD display,
+	cols#16, lines#2, use=MtxOrb,
+# The end
+
+######## OLDER TERMINAL TYPES
+#
+# This section is devoted to older commercial terminal brands that are now
+# discontinued, but known to be still in use or represented by emulations.
+#
+
+#### AT&T (att, tty)
+#
+# This section also includes Teletype-branded VDTs.
+#
+# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now
+# Boundless Technologies); for details, see the header comment on the ADDS
+# section.
+#
+# These are AT&T's official terminfo entries.  All-caps aliases have been
+# removed.
+#
+att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode,
+	am, eo, mir, msgr, xon,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcbt=\E[Z, kclr=\E[J,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+	kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, kf11=\E[11r,
+	kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, kf15=\E[15r,
+	kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r,
+	kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, khome=\E[H,
+	kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+	rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h,
+	smso=\E[7m,
+att2350|AT&T 2350 Video Information Terminal 80 column mode,
+	mc0@, mc4@, mc5@, use=att2300,
+
+# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
+# Seems upward compatible with vt100, plus ins/del line/char.
+# On sgr, the protection parameter is ignored.
+# No check is made to make sure that only 3 parameters are output.
+# 	standout= reverse + half-intensity = 3 | 5.
+# 	bold= reverse + underline = 2 | 3.
+# note that half-bright blinking doesn't look different from normal blinking.
+# NOTE:you must program the function keys first, label second!
+# (att4410: a BSD entry has been seen with the following capabilities:
+# <is2=\E[?6l>, <kf1=\EOc>, <kf2=\EOd>, <kf3=\EOe>, <kf4=\EOg>,
+# <kf6=\EOh>, <kf7=\EOi>, <kf8=\EOj>, -- esr)
+att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
+	am, hs, mir, msgr, xon,
+	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m,
+	dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I,
+	ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, is1=\E[?3l\E)0,
+	is3=\E[1;03q   f1           \EOP\E[2;03q   f2           \EOQ\E[3;03q   f3           \EOR\E[4;03q   f4           \EOS\E[5;03q   f5           \EOT\E[6;03q   f6           \EOU\E[7;03q   f7           \EOV\E[8;03q   f8           \EOW,
+	kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
+	kf6=\EOU, kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H,
+	ll=\E[24H, nel=^M^J,
+	pfx=\E[%p1%1d;%p2%l%2.2dq   f%p1%1d           %p2%s,
+	pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
+	sc=\E7,
+	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
+	tsl=\E7\E[25;%p1%{1}%+%dH,
+
+att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
+	cols#132, wsl#132,
+	is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1,
+
+att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2,
+	OTbs,
+	pfx=\E[%p1%d;%p2%l%02dq   f%p1%d           %p2%s,
+	use=att5410v1,
+
+att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode,
+	cols#132, wsl#132,
+	is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410,
+
+# 5410 in terms of a vt100
+# (v5410: added <rmam>/<smam> based on init string -- esr)
+v5410|att5410 in terms of a vt100,
+	am, mir, msgr, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, dch1=\E[P,
+	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
+	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ich1=\E[@,
+	il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O,
+	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
+	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+	use=vt100+fnkeys,
+
+#
+# Teletype Model 5420 -- A souped up 5410, with multiple windows,
+# even! the 5420 has three modes: scroll, window or page mode
+# this terminfo should work in scroll or window mode, but doesn't
+# take advantage of any of the differences between them.
+#
+# Has memory below (2 lines!)
+# 3 pages of memory (plus some spare)
+# The 5410 sequences for <cup>, <cvvis>, <dch>, <dl>, <ech>, <flash>, <home>,
+# <hpa>, <hts> would work for these, but these work in both scroll and window
+# mode... Unset insert character so insert mode works
+# <is1> sets 80 column mode,
+# <is2> escape sequence:
+# 1) turn off all fonts
+# 2) function keys off, keyboard lock off, control display off,
+#    insert mode off, erasure mode off,
+# 3) full duplex, monitor mode off, send graphics off, nl on lf off
+# 4) reset origin mode
+# 5) set line wraparound
+# 6) exit erasure mode, positional attribute mode, and erasure extent mode
+# 7) clear margins
+# 8) program ENTER to transmit ^J,
+# We use \212 to program the ^J because a bare ^J will get translated by
+# UNIX into a CR/LF. The enter key is needed for AT&T uOMS.
+#     1      2            3              4     5     6    7  8
+# <is3> set screen color to black,
+# No representation in terminfo for the delete word key: kdw1=\Ed
+# Key capabilities assume the power-up send sequence...
+# This <rmcup> is not strictly necessary, but it helps maximize
+# memory usefulness: <rmcup=\Ez>,
+# Alternate sgr0:	<sgr0=\E[m\EW^O>,
+# Alternate sgr:	<sgr=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;>,
+# smkx programs the SYS PF keys to send a set sequence.
+# It also sets up labels f1, f2, ..., f8, and sends edit keys.
+# This string causes them to send the strings <kf1>-<kf8>
+# when pressed in SYS PF mode.
+# (att4415: I added <rmam>/<smam> based on the init string -- esr)
+att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
+	OTbs, db, mir, xon,
+	lh#2, lm#78, lw#8, nlab#8, wsl#55,
+	cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD,
+	cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx,
+	cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP,
+	dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD,
+	flash=\E[?5h$<200>\E[?5l, home=\E[x,
+	hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@,
+	il=\E[%p1%dL, indn=\E[%p1%dE, is1=\E[?3l$<100>,
+	is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[21;1j\212,
+	is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M,
+	kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd,
+	kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
+	kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
+	kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
+	lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?2i, mc4=\E[?9i,
+	mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV,
+	rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E[19;0j\E[21;1j\212, rmln=\E|,
+	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g,
+	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
+	use=att4410,
+
+att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
+	cols#132, lm#54, wsl#97,
+	is1=\E[?3h$<100>, use=att4415,
+
+att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv,
+	flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415,
+
+att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv,
+	cols#132, lm#54, wsl#97,
+	flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h,
+	use=att4415,
+
+# Note that this mode permits programming USER PF KEYS and labels
+# However, when you program user pf labels you have to reselect
+# user pf keys to make them appear!
+att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels,
+	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
+	pfx=\E[%p1%d;%p2%l%02d;0;1q   F%p1%d           %p2%s,
+	pln=\E[%p1%d;0;0;1q%p2%:-16.16s,
+
+att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels,
+	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+	use=att4415,
+
+att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels,
+	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+	use=att4415-rv,
+
+att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels,
+	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+	use=att4415-w,
+
+att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels,
+	kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+	use=att4415-w-rv,
+
+att5420_2|AT&T 5420 model 2 80 cols,
+	am, db, hs, mir, msgr, xon,
+	cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j,
+	cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cvvis=\E[11;1j,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J, el=\E[0K,
+	el1=\E[1K, flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
+	hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dE,
+	invis=\E[8m,
+	is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r,
+	kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+	kel=\E[2K, kend=\Ez, kent=^J, kf1=\EOc, kf2=\EOd, kf3=\EOe,
+	kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H,
+	kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
+	kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
+	lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i,
+	mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=^M^J,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s\E~,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j,
+	rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
+	sc=\E7,
+	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~,
+	smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
+att5420_2-w|AT&T 5420 model 2 in 132 column mode,
+	cols#132,
+	is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r,
+	use=att5420_2,
+
+att4418|att5418|AT&T 5418 80 cols,
+	am, xon,
+	cols#80, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H,
+	ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=^J,
+	is1=\E[?3l, is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@,
+	kcud1=\EU, kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h,
+	kf10=\E[m, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I,
+	kf15=\E[J, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E,
+	kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j,
+	kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8,
+	rev=\E[7m, rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7,
+	sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
+att4418-w|att5418-w|AT&T 5418 132 cols,
+	cols#132,
+	is1=\E[?3h, use=att5418,
+
+att4420|tty4420|teletype 4420,
+	OTbs, da, db, eo, msgr, ul, xon,
+	cols#80, lines#24, lm#72,
+	bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+	dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s,
+	kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH,
+	kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
+	lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~,
+	rmul=\EZ, smdc@, smso=\E}, smul=\E\\,
+
+#  The following is a terminfo entry for the Teletype 4424
+#  asynchronous keyboard-display terminal.  It supports
+#  the vi editor.  The terminal must be set up as follows,
+#
+# 	HIGHLIGHT DEFINITION	3-TONE
+# 	DISPLAY FUNCTION	GROUP III
+#
+#  The second entry below provides limited (a la adm3a)
+#  operation under GROUP II.
+#
+#  This must be used with DISPLAY FUNCTION GROUP I or III
+# 	and HIGHLIGHT DEFINITION 3-TONE
+# The terminal has either bold or blink, depending on options
+#
+# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
+att4424|tty4424|teletype 4424,
+	OTbs, am, xon,
+	cols#80, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EA,
+	dch=\E[%p1%dP, dch1=\EP, dim=\EW, dl=\E[%p1%dM, dl1=\EM,
+	ed=\EJ, el=\Ez, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=^J, is2=\E[20l\E[?7h,
+	kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+	khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~,
+	rmul=\EZ,
+	sgr=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m,
+	sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
+	tbc=\EF,
+
+att4424-1|tty4424-1|teletype 4424 in display function group I,
+	kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@,
+	use=att4424,
+
+# This entry is not one of AT&T's official ones, it was translated from the
+# 4.4BSD termcap file.  The highlight strings are different from att4424.
+# I have no idea why this is -- older firmware version, maybe?
+# The following two lines are the comment originally attached to the entry:
+# This entry appears to avoid the top line - I have no idea why.
+# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp
+att4424m|tty4424m|teletype 4424M,
+	am, da, db, mir,
+	cols#80, it#8, lines#23,
+	bel=^G, clear=\E[2;H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%2d;%p2%2dH\E[B, cuu1=\E[A, dch1=\EP,
+	dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=^J, ip=$<2/>,
+	is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, khome=\E[H, nel=^M^J, ri=\ET, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+
+# The Teletype 5425 is really version 2 of the Teletype 5420. It
+# is quite similar, except for some minor differences. No page
+# mode, for example, so all of the <cup> sequences used above have
+# to change back to what's being used for the 5410. Many of the
+# option settings have changed their numbering as well.
+#
+# This has been tested on a preliminary model.
+#
+# (att5425: added <rmam>/<smam> based on the init string -- esr)
+att5425|tty5425|att4425|AT&T 4425/5425,
+	am, da, db, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
+	clear=\E[H\E[J, cnorm=\E[12;0j, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J,
+	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
+	hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dE,
+	invis=\E[8m, is1=\E<\E[?3l$<100>,
+	is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212,
+	is3=\E[?5l, kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[J,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+	kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc,
+	kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi,
+	kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T,
+	kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i,
+	nel=^M^J,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l,
+	rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
+	rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7,
+	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH,
+	vpa=\E[%p1%{1}%+%dd,
+
+att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels,
+	smkx=\E[21;1j\E[25;4j\Eent, use=att4425,
+
+att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode,
+	cols#132, lm#54, wsl#97,
+	is1=\E[?3h$<100>, use=tty5425,
+
+# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
+# I also added <rmam>/<smam> -- esr)
+att4426|tty4426|teletype 4426S,
+	am, da, db, xon,
+	cols#80, lines#24, lm#48,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V,
+	cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\EA, dch=\E[%p1%dP, dch1=\EP,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H,
+	hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^,
+	il=\E[%p1%dL, il1=\EL, ind=^J, indn=\E[%p1%dS,
+	is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO,
+	kclr=\E[2J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
+	kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H, ll=\E[24H,
+	nel=^M^J, rc=\E8, rev=\E[7m, ri=\ET, rin=\E[%p1%dT,
+	rmacs=\E(B, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
+	rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B, smacs=\E(0,
+	smam=\E[?7h, smso=\E[5m, smul=\E[4m, tbc=\E[3g,
+	vpa=\E[%p1%dd,
+
+# Terminfo entry for the AT&T 510 A Personal Terminal
+# Function keys 9 - 16 are available only after the
+# screen labeled (soft keys/action blocks) are labeled.  Function key
+# 9 corresponds to the leftmost touch target on the screen,
+# function key 16 corresponds to the rightmost.
+#
+# This entry is based on one done by Ernie Rice at Summit, NJ and
+# changed by Anne Gallup, Skokie, IL, ttrdc!anne
+att510a|bct510a|AT&T 510A Personal Terminal,
+	am, mir, msgr, xenl, xon,
+	cols#80, lh#2, lines#24, lw#7, nlab#8,
+	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
+	civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[1B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP,
+	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J,
+	el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I,
+	hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, is1=\E(B\E)1\E[2l,
+	is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm,
+	kf10=\EOd, kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh,
+	kf15=\EOi, kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe,
+	kf6=\ENf, kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T,
+	mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, nel=\EE,
+	pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
+	rmacs=^O, rmkx=\E[19;0|, rmso=\E[m, rmul=\E[m, sc=\E7,
+	sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g,
+
+# Terminfo entry for the AT&T 510 D Personal Terminal
+# Function keys 9 through 16 are accessed by bringing up the
+# system blocks.
+# Function key 9 corresponds to the leftmost touch target on the screen,
+# function key 16 corresponds to the rightmost.
+#
+# There are problems with soft key labeling.  These are due to
+# strangenesses in the native terminal that are impossible to
+# describe in a terminfo.
+att510d|bct510d|AT&T 510D Personal Terminal,
+	am, da, db, mir, msgr, xenl, xon,
+	cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8,
+	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
+	clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, cub=\E[%p1%dD,
+	cub1=^H, cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P,
+	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K,
+	el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H,
+	hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
+	invis=\E[8m, is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212,
+	kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd,
+	kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi,
+	kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf,
+	kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2,
+	mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, mgc=\E\:, nel=\EE,
+	pln=\E[%p1%dp%p2%:-16s, rc=\E8,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
+	rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|,
+	rmln=\E<, rmso=\E[m, rmul=\E[m, rmxon=\E[29;1|,
+	rs2=\E[5;0|, sc=\E7,
+	sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smgl=\E4, smgr=\E5, smir=\E[4h,
+	smkx=\E[19;1|, smln=\E?, smso=\E[7m, smul=\E[4m,
+	smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+
+# (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
+att500|att513|AT&T 513 using page mode,
+	am, chts, mir, msgr, xenl, xon,
+	cols#80, lh#2, lines#24, lw#8, nlab#8,
+	acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
+	clear=\E[H\E[J, cnorm=\E[11;0|, cr=^M,
+	csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
+	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	indn=\E[%p1%dE, invis=\E[8m,
+	is1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l,
+	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
+	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+	kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK,
+	kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ,
+	kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY,
+	kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw,
+	kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
+	kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent,
+	kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
+	kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
+	khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
+	kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
+	kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
+	kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB,
+	ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2,
+	mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i,
+	nel=\EE,
+	pfkey=\E[%p1%d;%p2%l%d;3;0p   F%p1%d           %p2%s,
+	pfloc=\E[%p1%d;%p2%l%d;2;0p   F%p1%d           %p2%s,
+	pfx=\E[%p1%d;%p2%l%d;1;0p   F%p1%d           %p2%s,
+	pln=\E[%p1%dp%p2%:-16s, rc=\E8,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
+	rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l,
+	rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m,
+	rmul=\E[m,
+	rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|\E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l,
+	rs2=\E[5;0|, sc=\E7,
+	sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smir=\E[4h,
+	smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+
+# 01-07-88
+# printer must be set to EMUL ANSI to accept ESC codes
+# <cuu1> stops at top margin
+# <is1> sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font
+#	and alt font ascii,wrap on,tabs cleared
+# <is2> disables newline on LF,Emphasized off
+# The <u0> capability sets form length
+att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
+	xhpa, xvpa,
+	bufsz#8192, cols#132, cps#120, it#8, lines#66, orc#10,
+	orhi#100, orl#12, orvi#72,
+	cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w%e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O%t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t\E[8w%;,
+	cr=^M,
+	csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1%{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench%e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1%{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurity%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmosaic%;,
+	cud=\E[%p1%de, cud1=^J, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM,
+	ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r,
+	lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;,
+	rshm=\E[m,
+	scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t\E(}%;,
+	smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds,
+	smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m,
+	u0=\E[%p1%dt, vpa=\E[%p1%dd,
+
+# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL
+# The following SET-UP modes are assumed for normal operation:
+#	CR_DEF=CR	NL_DEF=INDEX	DUPLEX=FULL
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements.  This termcap description is for the Resident Terminal Mode.
+# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# The BRL entry also said: UNSAFE :ll=\E[70H:
+att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
+	am, xon,
+	cols#88, it#8, lines#70, vt#3,
+	bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+	dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+	home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=^H, kclr=\E[2J,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+	kll=\E[70;1H, nel=^M^J, rc=\E8, ri=\E[T, rin=\E[%p1%dT,
+	rs1=\Ec, sc=\E7,
+
+# 5620 terminfo  (2.0 or later ROMS with char attributes)
+# The following SET-UP modes are assumed for normal operation:
+#	DUPLEX=FULL	GEN_FLOW=ON	NEWLINE=INDEX	RETURN=CR
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements.  This termcap description is for Resident Terminal Mode.  No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# assumptions: <ind> (scroll forward one line) is only done at screen bottom
+# Be aware that older versions of the dmd have a firmware bug that affects
+# parameter defaulting; for this terminal, the 0 in \E[0m is not optional.
+# <msgr> is from an otherwise inferior BRL for this terminal.  That entry
+# also has <ll>=\E[70H commented out and marked unsafe.
+# For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>.
+att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns,
+	OTbs, am, msgr, npc, xon,
+	cols#88, it#8, lines#70,
+	bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H,
+	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=^J,
+	pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T,
+	rin=\E[%p1%dT, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7,
+	sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+att5620-24|tty5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer,
+	lines#24, use=att5620,
+att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer,
+	lines#34, use=att5620,
+# 5620 layer running the "S" system's downloaded graphics handler:
+att5620-s|tty5620-s|layer|vitty|5620 S layer,
+	OTbs, OTpt, am,
+	cols#80, it#8, lines#72,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
+	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED,
+	el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=^J, kbs=^H, kclr=\E[2J,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+	kll=\E[70;1H,
+
+# Entries for <kf15> thru <kf28> refer to the shifted system pf keys.
+#
+# Entries for <kf29> thru <kf46> refer to the alternate keypad mode
+# keys:  = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER
+att605|AT&T 605 80 column 102key keyboard,
+	am, eo, xon,
+	cols#80, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+	dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
+	il1=\E[L, ind=^J, invis=\E[8m,
+	is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017,
+	kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+	kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq,
+	kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
+	kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
+	kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ,
+	kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe,
+	kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx,
+	kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
+	kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
+	kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
+	kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@,
+	kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H,
+	mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
+	rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
+	rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016,
+	smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
+	tsl=\E7\E[25;%i%p1%dx,
+att605-pc|ATT 605 in pc term mode,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
+	dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+	kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N,
+	kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
+	kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I,
+	rmsc=400\E[50;0|, smsc=250\E[?11l\E[50;1|, xoffc=g,
+	xonc=e, use=att605,
+att605-w|AT&T 605-w 132 column 102 key keyboard,
+	cols#132, wsl#132,
+	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0,
+	use=att605,
+# (att610: I added <rmam>/<smam> based on the init string.  I also
+# added <indn> and <rin> because the BSD file says the att615s have them,
+# and the 615 is like a 610 with a big keyboard, and most of their other
+# smart terminals support the same sequence -- esr)
+att610|AT&T 610; 80 column; 98key keyboard,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	indn=\E[%p1%dS, invis=\E[8m,
+	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0,
+	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
+	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+	kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
+	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+	kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, mc5=\E[?5i,
+	nel=\EE,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
+	ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
+	rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smln=\E[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
+att610-w|AT&T 610; 132 column; 98key keyboard,
+	cols#132, wsl#132,
+	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+	use=att610,
+
+att610-103k|AT&T 610; 80 column; 103key keyboard,
+	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
+	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+	kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
+	kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
+	kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
+	kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
+	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M,
+	kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx,
+	khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl,
+	knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V,
+	kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq,
+	krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo,
+	kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610,
+att610-103k-w|AT&T 610; 132 column; 103key keyboard,
+	cols#132, wsl#132,
+	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+	use=att610-103k,
+att615|AT&T 615; 80 column; 98key keyboard,
+	kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+	kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
+	kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
+	kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
+	kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
+	kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610,
+att615-w|AT&T 615; 132 column; 98key keyboard,
+	kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+	kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
+	kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
+	kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
+	kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
+	kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w,
+att615-103k|AT&T 615; 80 column; 103key keyboard,
+	kLFT=\E[ A, kRIT=\E[ @, use=att610-103k,
+att615-103k-w|AT&T 615; 132 column; 103key keyboard,
+	kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w,
+# (att620: I added <rmam>/<smam> based on the init string and
+# <rin>/<indn> from a BSD termcap -- esr)
+att620|AT&T 620; 80 column; 98key keyboard,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	indn=\E[%p1%dS, invis=\E[8m,
+	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h,
+	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H,
+	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+	kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+	kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI,
+	kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR,
+	kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ,
+	kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy,
+	kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf,
+	kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp,
+	kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
+	kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H,
+	mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+	pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
+	ri=\EM, rin=\E[%p1%dT, rmacs=\E(B\017, rmam=\E[?7l,
+	rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
+	rs2=\Ec\E[?3l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h,
+	smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
+	tsl=\E7\E[25;%i%p1%dx,
+att620-w|AT&T 620; 132 column; 98key keyboard,
+	cols#132, wsl#132,
+	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+	use=att620,
+att620-103k|AT&T 620; 80 column; 103key keyboard,
+	kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
+	kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+	kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
+	kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ,
+	kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9,
+	kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
+	kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M,
+	kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@,
+	kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@,
+	kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@,
+	kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, kf9@,
+	kfnd=\EOx, khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi,
+	kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
+	kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
+	kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB,
+	ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620,
+
+att620-103k-w|AT&T 620; 132 column; 103key keyboard,
+	cols#132, wsl#132,
+	is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+	use=att620-103k,
+
+# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal
+# The following SETUP modes are assumed for normal operation:
+#	Local_Echo=Off	Gen_Flow=On	Return=CR	Received_Newline=LF
+#	Font_Size=Large		Non-Layers_Window_Cols=80
+#				Non-Layers_Window_Rows=60
+# Other SETUP modes may be set for operator convenience or communication
+# requirements.  Some capabilities assume a printer attached to the Aux EIA
+# port.  This termcap description is for the Fixed Non-Layers Window.  No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (att630: added <ich1>, <blink> and <dim> from a BSD termcap file -- esr)
+att630|AT&T 630 windowing terminal,
+	OTbs, am, da, db, mir, msgr, npc, xon,
+	cols#80, it#8, lines#60, lm#0,
+	bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+	el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, is2=\E[m,
+	kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kent=^M,
+	kf10=\ENp, kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt,
+	kf15=\ENu, kf16=\ENv, kf17=\ENw, kf18=\ENx, kf19=\ENy,
+	kf20=\ENz, kf21=\EN{, kf22=\EN|, kf23=\EN}, kf24=\EN~,
+	kf9=\ENo, khome=\E[H, kich1=\E[@, kil1=\E[L, mc4=\E[?4i,
+	mc5=\E[?5i, nel=^M^J, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m,
+	rmul=\E[m, rs2=\Ec, sc=\E7,
+	sgr=\E[0%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m,
+	sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
+	lines#24, use=att630,
+
+# This is the att700 entry for 700 native emulation of the AT&T 700
+# terminal.  Comments are relative to changes from the 605V2 entry and
+# att730 on which the entry is based.  Comments show the terminfo
+# capability name, termcap name, and description.
+#
+# Here is what's going onm in the init string:
+#	ESC [ 50;4|	set 700 native mode (really is 605)
+# x	ESC [ 56;ps| 	set lines to 24: ps=0; 40: ps=1 (plus status line)
+#	ESC [ 53;0|	set GenFlow to Xon/Xoff
+#	ESC [ 8 ;0|	set CR on NL
+# x	ESC [ ? 3 l/h	set workspace: 80 col(l); 132 col(h)
+#	ESC [ ? 4 l	jump scroll
+#	ESC [ ? 5 l/h	video: normal (l); reverse (h)
+#	ESC [ ?13 l	Labels on
+#	ESC [ ?15 l	parity check = no
+#	ESC [ 13 l	monitor mode off
+#	ESC [ 20 l	LF on NL (not CRLF on NL)
+#	ESC [ ? 7 h	autowrap on
+#	ESC [ 12 h	local echo off
+#	ESC ( B		GO = ASCII
+#	ESC ) 0		G1 = Special Char & Line Drawing
+#	ESC [ ? 31 l	Set 7 bit controls
+#
+# Note: Most terminals, especially the 600 family use Reverse Video for
+# standout mode.  DEC also uses reverse video.  The VT100 uses bold in addition
+# Assume we should stay with reverse video for 70..  However, the 605V2 exits
+# standout mode with \E[m (all normal attributes).  The 730 entry simply
+# exits reverse video which would leave other current attributes intact.  It
+# was assumed the 730 entry to be more correct so rmso has changed.  The
+# 605V2 has no sequences to turn individual attributes off, thus its setting
+# and the rmso/smso settings from the 730.
+#
+# Note: For the same reason as above in rmso I changed exit under-score mode
+# to specifically turn off underscore, rather than return to all normal
+# attributes
+#
+# Note: The following pkey_xmit is taken from the 605V2 which contained the
+# capability as pfxl.  It was changed here to pfx since pfxl
+# will only compile successfully with Unix 4.0 tic.  Also note that pfx only
+# allows strings to be parameters and label values must be programmed as
+# constant strings.  Supposedly the pfxl of Version 4.0 allows both labels
+# and strings to be parameters.  The 605V2 pfx entry should be examined later
+# in this regard. For reference the 730 pfxl entry is shown here for comparison
+# 730 pfx entry:
+#     pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s
+# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
+#
+# (for 4.0 tic)
+#     pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
+#
+# (for <4.0 tic)
+#     pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
+#
+# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9
+#
+# Port1 Interface
+#
+# modular 10 pin Connector
+# Left side       Right side
+# Pin 1 2 3 4 5 6 7 8 9 10
+#
+#        Key (notch) at bottom
+#
+# Pin    1 DSR
+#        3 DCD
+#        4 DTR
+#        5 Sig Ground
+#        6 RD
+#        7 SD
+#        8 CTS
+#        9 RTS
+#        10 Frame Ground
+#
+# The manual is 189 pages and is loaded with details about the escape codes,
+# etc..... Available from AT&T CIC 800-432-6600...
+# ask for Document number 999-300-660..
+#
+att700|AT&T 700 24x80 column display w/102key keyboard,
+	am, eslok, hs, mir, msgr, xenl, xon,
+	cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
+	fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
+	is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017,
+	is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
+	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
+	kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC,
+	kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd,
+	kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP,
+	kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq,
+	kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu,
+	kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu,
+	kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+	kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg,
+	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+	kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
+	mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+	pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m,
+	rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
+	smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
+	tsl=\E7\E[99;%i%p1%dx,
+
+# This entry was modified 3/13/90 by JWE.
+# fixes include additions of <enacs>, correcting <rep>, and modification
+# of <kHOM>.  (See comments below)
+# att730 has status line of 80 chars
+# These were commented out: <indn=\E[%p1%dS>, <rin=\E[%p1%dT>,
+# the <kf25> and up keys are used for shifted system Fkeys
+# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is
+# currently the same as <khome> (unshifted HOME or \E[H).  On the 102, 102+1
+# and 122 key keyboards, the 730's translation is \E[2J.  For consistency
+# <kHOM> has been commented out.  The user can uncomment <kHOM> if using the
+# 102, 102+1, or 122 key keyboards
+#       kHOM=\E[2J,
+# (att730: I added <rmam>/<smam> based on the init string -- esr)
+att730|AT&T 730 windowing terminal,
+	am, da, db, eslok, hs, mir, msgr, npc, xenl, xon,
+	cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
+	home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+	ind=\ED, invis=\E[8m,
+	is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B,
+	is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
+	kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+	kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
+	kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{,
+	kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD,
+	kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH,
+	kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ,
+	kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf,
+	kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ,
+	kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg,
+	kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+	kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T,
+	mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+	pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq   SYS     F%p1%:-2d  %e;0;3q%;%p2%s,
+	pfxl=\E[%p1%d;%p2%l%02d;0;0q%p3%:-16.16s%p2%s,
+	pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h, rmso=\E[27m,
+	rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smln=\E[?13l, smso=\E[7m, smul=\E[4m, smxon=\E[?21h,
+	swidm=\E#6, tsl=\E7\E[;%i%p1%dx,
+att730-41|730MTG-41|AT&T 730-41 windowing terminal Version,
+	lines#41, use=att730,
+att730-24|730MTG-24|AT&T 730-24 windowing terminal Version,
+	lines#24, use=att730,
+att730r|730MTGr|AT&T 730 rev video windowing terminal Version,
+	flash=\E[?5l$<200>\E[?5h,
+	is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B,
+	use=att730,
+att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version,
+	lines#41, use=att730r,
+att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version,
+	lines#24, use=att730r,
+
+# The following represents the screen layout along with the associated
+# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
+# not appear on the screen but are shown to reference the bezel buttons.
+# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate
+# position relative to the screen.
+#
+#
+#
+#      +----------------------------------------------------------------+
+#      |                                                                |
+# XXXX | kf0                                                       kf24 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf1                                                       kf23 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf2                                                       kf22 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf3                                                       kf21 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf4                                                       kf20 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf5                                                       kf19 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX | kf6                                                       kf18 | XXXX
+#      |                                                                |
+#      |                                                                |
+# XXXX |                                                                | XXXX
+#      |                                                                |
+#      |                                                                |
+#      +----------------------------------------------------------------+
+#
+#          XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX  XXXX
+#
+# Note: XXXX represents the screen buttons
+#                                                          CMD   REDRAW
+#
+#                                                          MAIL
+#
+# version 1 note:
+#	The character string sent by key 'kf26' may be user programmable
+#       to send either \E[16s, or \E[26s.
+#       The character string sent by key 'krfr' may be user programmable
+#       to send either \E[17s, or \E[27s.
+#
+# Depression of the "CMD" key sends    \E!    (kcmd)
+# Depression of the "MAIL" key sends   \E[26s (kf26)
+# "REDRAW" same as "REFRESH" (krfr)
+#
+# "kf" functions adds carriage return to output string if terminal is in
+# 'new line' mode.
+#
+# The following are functions not covered in the table above:
+#
+#       Set keyboard character (SKC): \EPn1;Pn2w
+#                       Pn1= 0 Back Space key
+#                       Pn1= 1 Break key
+#                       Pn2=   Program char (hex)
+#
+#       Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t
+#                       Pn1=     Window number (1-39)
+#                       Pn2-Pn5= Y;X;Y;X coordinates
+#
+#       Screen Selection (SSL): \E[Pnu
+#                       Pn= Window number
+#
+#       Set Terminal Modes (SM): \E[Pnh
+#                       Pn= 3 Graphics mode
+#                       Pn= > Cursor blink
+#                       Pn= < Enter new line mode
+#                       Pn= = Enter reverse insert/replace mode
+#                       Pn= ? Enter no scroll mode
+#
+#       Reset Terminal Mode (RM): \E[Pnl
+#                       Pn= 3 Exit graphics mode
+#                       Pn= > Exit cursor blink
+#                       Pn= < Exit new line mode
+#                       Pn= = Exit reverse insert/replace mode
+#                       Pn= ? Exit no scroll mode
+#
+#       Screen Status Report (SSR): \E[Pnp
+#                       Pn= 0 Request current window number
+#                       Pn= 1 Request current window dimensions
+#
+#       Device Status Report (DSR): \E[6n    Request cursor position
+#
+#       Call Status Report (CSR): \E[Pnv
+#                       Pn= 0 Call failed
+#                       Pn= 1 Call successful
+#
+#       Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string
+#                       Pn1= Button number to be loaded
+#                       Pn2= Character count of "string"
+#                       Pn3= Key mode being loaded:
+#                               0= Unshifted
+#                               1= Shifted
+#                               2= Control
+#                       String= Text string (15 chars max)
+#
+#       Screen Number Report (SNR): \E[Pnp
+#                       Pn= Screen number
+#
+#       Screen Dimension Report (SDR): \E[Pn1;Pn2r
+#                       Pn1= Number of rows available in window
+#                       Pn2= Number of columns available in window
+#
+#       Cursor Position Report (CPR): \E[Pn1;Pn2R
+#                       Pn1= "Y" Position of cursor
+#                       Pn2= "X" Position of cursor
+#
+#       Request Answer Back (RAB): \E[c
+#
+#       Answer Back Response (ABR): \E[?;*;30;VSV
+#                       *=  0 No printer available
+#                       *=  2 Printer available
+#                       V=  Software version number
+#                       SV= Software sub version number
+#	(printer-available field not documented in v1)
+#
+#       Screen Alignment Aid: \En
+#
+#       Bell (lower pitch): \E[x
+#
+#       Dial Phone Number: \EPdstring\
+#                       string= Phone number to be dialed
+#
+#       Set Phone Labels: \EPpstring\
+#                       string= Label for phone buttons
+#
+#       Set Clock: \EPchour;minute;second\
+#
+#       Position Clock: \EPsY;X\
+#                       Y= "Y" coordinate
+#                       X= "X" coordinate
+#
+#       Delete Clock: \Epr\
+#
+#       Programming The Function Buttons: \EPfPn;string\
+#                       Pn= Button number (00-06, 18-24)
+#                                         (kf00-kf06, kf18-kf24)
+#                       string= Text to sent on button depression
+#
+# The following in version 2 only:
+#
+#       Request For Local Directory Data: \EPp12;\
+#
+#       Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\
+#
+#	Request for Local Directory Data in print format: \EPp13;\
+#
+#	Enable 'Prt on Line' mode: \022 (DC2)
+#
+#	Disable 'Prt on Line' mode: \024 (DC4)
+#
+
+# 05-Aug-86:
+# The following Terminfo entry describes functions which are supported by
+# the AT&T 5430/pt505 terminal software version 2 and later.
+att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
+	am, xon,
+	cols#80, it#8, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H,
+	cnorm=\E[>l, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I,
+	il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l,
+	kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s,
+	kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s,
+	kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s,
+	kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s,
+	krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
+	rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m,
+	rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m,
+	smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m,
+
+# The following Terminfo entry describes functions which are supported by
+# the AT&T 5430/pt505 terminal software version 1.
+att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines,
+	lines#24,
+	mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505,
+tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
+	lines#22, use=att505,
+#
+#### ------------------ TERMINFO FILE CAN BE SPLIT HERE ---------------------
+# This cut mark helps make life less painful for people running ncurses tic
+# on machines with relatively little RAM.  The file can be broken in half here
+# cleanly and compiled in sections -- no `use' references cross this cut
+# going forward.
+#
+
+#### Ampex (Dialogue)
+#
+# Yes, these are the same people who are better-known for making audio- and
+# videotape.  I'm told they are located in Redwood City, CA.
+#
+
+# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
+# (ampex80: some capabilities merged in from SCO's entry -- esr)
+ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80,
+	OTbs, am, bw, ul,
+	cols#80, it#8, lines#24,
+	bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1,
+	ich1=\EQ, il1=\EE$<5*>, ind=^J, is2=\EA, rmso=\Ek, rmul=\Em,
+	smso=\Ej, smul=\El, tbc=\E3,
+# This entry was from somebody anonymous, Tue Aug  9 20:11:37 1983, who wrote:
+ampex175|ampex d175,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=^J,
+	is2=\EX\EA\EF, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+	kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K,
+	rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El,
+# No backspace key in the main QWERTY cluster. Fortunately, it has a
+# NEWLINE/PAGE key just above RETURN that sends a strange single-character
+# code.  Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS
+# mode), this key can be used as the erase key; I find I like this. Because
+# some people and some systems may not, there is another termcap ("ampex175")
+# that suppresses this little eccentricity by omitting the relevant capability.
+ampex175-b|ampex d175 using left arrow for erase,
+	kbs=^_, use=ampex175,
+# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
+# (ampex210: removed obsolete ":kn#10:" -- esr)
+ampex210|a210|ampex a210,
+	OTbs, am, hs, xenl,
+	cols#80, it#8, lines#24, xmc#1,
+	cbt=\EI, clear=\E*, cub1=^H, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX,
+	fsl=\E.2, home=^^, ht=^I, ich1=\EQ,
+	if=/usr/local/share/tabset/std, il1=\EE, invis@,
+	is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H,
+	kcud1=^V, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r,
+	kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r,
+	kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, khome=^^,
+	tsl=\E.0\Eg\E}\Ef, use=adm+sgr,
+# (ampex219: I added <rmam>/<smam> based on the init string, added <cvvis>
+# from ampex219w, added <cnorm>=\E[?3l, irresistibly suggested by <cvvis>,
+# and moved the padding to be *after* the caps -- esr)
+ampex219|ampex-219|amp219|Ampex with Automargins,
+	hs, xenl,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z,
+	clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=^M,
+	csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B,
+	cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
+	cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>,
+	el=\E[K$<3>, home=\E[H, ht=^I, ind=^J,
+	is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~,
+	kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+	rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>,
+	rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
+	smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>,
+ampex219w|ampex-219w|amp219w|Ampex 132 cols,
+	cols#132, lines#24,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+	is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219,
+# (ampex232: removed <if=/usr/local/share/tabset/ampex>, no file and no <hts> --esr)
+ampex232|ampex-232|Ampex Model 232,
+	am,
+	cols#80, lines#24, xmc#1,
+	cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET,
+	flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>,
+	invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L,
+	kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
+	kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
+	kf9=^AI\r, khome=^^, use=adm+sgr,
+# (ampex: removed <if=/usr/local/share/tabset/amp-132>, no file and no <hts> -- esr)
+ampex232w|Ampex Model 232 / 132 columns,
+	cols#132, lines#24,
+	is2=\E\034Eg\El, use=ampex232,
+
+#### Ann Arbor (aa)
+#
+# Ann Arbor made dream terminals for hackers -- large screen sizes and huge
+# numbers of function keys.  At least some used monitors in portrait mode,
+# allowing up to 76-character screen heights!  They were reachable at:
+#
+#	Ann Arbor Terminals
+#	6175 Jackson Road
+#	Ann Arbor, MI 48103
+#	(313)-663-8000
+#
+# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor
+# can't be found on the Web; I fear they're long dead.  R.I.P.
+#
+
+
+# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
+# Highly modified 6/22 by Mike O'Brien.
+# split out into several for the various screen sizes by dave-yost@rand
+# Modifications made 3/82 by Mark Horton
+# Modified by Tom Quarles at UCB for greater efficiency and more diversity
+# status line moved to top of screen, <flash> removed 5/82
+# Some unknown person at SCO then hacked the init strings to make them more
+# efficient.
+#
+# assumes the following setup:
+#   A menu: 0000 1010  0001 0000
+#   B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
+#   C menu: 56   66   0    0    9600  0110 1100
+#   D menu: 0110 1001   1   0
+#
+#	Briefly, the settings are for the following modes:
+#	   (values are for bit set/clear with * indicating our preference
+#	    and the value used to test these termcaps)
+#	Note that many of these settings are irrelevent to the terminfo
+#	and are just set to the default mode of the terminal as shipped
+#	by the factory.
+#
+# A menu: 0000 1010  0001 0000
+#	Block/underline cursor*
+#	blinking/nonblinking cursor*
+#	key click/no key click*
+#	bell/no bell at column 72*
+#
+#	key pad is cursor control*/key pad is numeric
+#	return and line feed/return for <cr> key *
+#	repeat after .5 sec*/no repeat
+#	repeat at 25/15 chars per sec. *
+#
+#	hold data until pause pressed/process data unless pause pressed*
+#	slow scroll/no slow scroll*
+#	Hold in area/don't hold in area*
+#	functions keys have default*/function keys disabled on powerup
+#
+#	show/don't show position of cursor during page transmit*
+#	unused
+#	unused
+#	unused
+#
+# B menu: 9600  0100 1000  0000 0000  1000 0000  17  19
+#	Baud rate (9600*)
+#
+#	2 bits of parity - 00=odd,01=even*,10=space,11=mark
+#	1 stop bit*/2 stop bits
+#	parity error detection off*/on
+#
+#	keyboard local/on line*
+#	half/full duplex*
+#	disable/do not disable keyboard after data transmission*
+#
+#	transmit entire page/stop transmission at cursor*
+#	transfer/do not transfer protected characters*
+#	transmit all characters/transmit only selected characters*
+#	transmit all selected areas/transmit only 1 selected area*
+#
+#	transmit/do not transmit line separators to host*
+#	transmit/do not transmit page tab stops tabs to host*
+#	transmit/do not transmit column tab stop tabs to host*
+#	transmit/do not transmit graphics control (underline,inverse..)*
+#
+#	enable*/disable auto XON/XOFF control
+#	require/do not require receipt of a DC1 from host after each LF*
+#	pause key acts as a meta key/pause key is pause*
+#	unused
+#
+#	unused
+#	unused
+#	unused
+#	unused
+#
+#	XON character (17*)
+#	XOFF character (19*)
+#
+# C menu: 56   66   0    0    9600  0110 1100
+#	number of lines to print data on (printer) (56*)
+#
+#	number of lines on a sheet of paper (printer) (66*)
+#
+#	left margin (printer) (0*)
+#
+#	number of pad chars on new line to printer (0*)
+#
+#	printer baud rate (9600*)
+#
+#	printer parity: 00=odd,01=even*,10=space,11=mark
+#	printer stop bits: 2*/1
+#	print/do not print guarded areas*
+#
+#	new line is: 01=LF,10=CR,11=CRLF*
+#	unused
+#	unused
+#
+# D menu: 0110 1001   1   0
+#	LF is newline/LF is down one line, same column*
+#	wrap to preceding line if move left from col 1*/don't wrap
+#	wrap to next line if move right from col 80*/don't wrap
+#	backspace is/is not destructive*
+#
+#	display*/ignore DEL character
+#	display will not/will scroll*
+#	page/column tab stops*
+#	erase everything*/erase unprotected only
+#
+#	editing extent: 0=display,1=line*,2=field,3=area
+#
+#	unused
+#
+
+annarbor4080|aa4080|ann arbor 4080,
+	OTbs, am,
+	cols#80, lines#40,
+	bel=^G, clear=\014$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=^_,
+	cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%{64}%+%c,
+	cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=^J, kbs=^^, kcub1=^H,
+	kcud1=^J, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P,
+
+# Strange Ann Arbor terminal from BRL
+aas1901|Ann Arbor K4080 w/S1901 mod,
+	am,
+	cols#80, lines#40,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^N,
+	home=^K, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, ll=^O\0c,
+	nel=^M^J,
+
+# If you're using the GNU termcap library, add
+#	:cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp:
+# to these capabilities.  This is the nonstandard GNU termcap scrolling
+# capability, arguments are:
+#   1. Total number of lines on the screen.
+#   2. Number of lines above desired scroll region.
+#   3. Number of lines below (outside of) desired scroll region.
+#   4. Total number of lines on the screen, the same as the first parameter.
+# The generic Ann Arbor entry is the only one that uses this.
+aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly),
+	OTbs, am, km, mc5i, mir, xon,
+	cols#80, it#8,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	clear=\E[H\E[J$<156>, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+	el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
+	hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL,
+	il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8,
+	is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z,
+	kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK,
+	kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP,
+	kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT,
+	kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC,
+	kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI,
+	khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i,
+	mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m,
+	rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\\,
+	rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+	sgr0=\E[m,
+	smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\,
+	smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
+	vpa=\E[%p1%{1}%+%dd,
+
+aaa+rv|ann arbor ambassador in reverse video,
+	blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m,
+	is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
+	rs1=\E[H\E[7m\E[J$<156>,
+	sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+	sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
+# Ambassador with the DEC option, for partial vt100 compatibility.
+aaa+dec|ann arbor ambassador in dec vt100 mode,
+	acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}},
+	csr=\E[%i%p1%d;%p2%dr, enacs=\E(0, rmacs=^N,
+	sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
+	smacs=^O,
+aaa-18|ann arbor ambassador/18 lines,
+	lines#18,
+	is2=\E7\E[60;0;0;18p\E8,
+	rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p,
+	use=aaa+unk,
+aaa-18-rv|ann arbor ambassador/18 lines+reverse video,
+	use=aaa+rv, use=aaa-18,
+aaa-20|ann arbor ambassador/20 lines,
+	lines#20,
+	is2=\E7\E[60;0;0;20p\E8,
+	rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p,
+	use=aaa+unk,
+aaa-22|ann arbor ambassador/22 lines,
+	lines#22,
+	is2=\E7\E[60;0;0;22p\E8,
+	rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p,
+	use=aaa+unk,
+aaa-24|ann arbor ambassador/24 lines,
+	lines#24,
+	is2=\E7\E[60;0;0;24p\E8,
+	rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p,
+	use=aaa+unk,
+aaa-24-rv|ann arbor ambassador/24 lines+reverse video,
+	use=aaa+rv, use=aaa-24,
+aaa-26|ann arbor ambassador/26 lines,
+	lines#26,
+	is2=\E7\E[60;0;0;26p\E8,
+	rmcup=\E[60;0;0;26p\E[26;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk,
+aaa-28|ann arbor ambassador/28 lines,
+	lines#28,
+	is2=\E7\E[60;0;0;28p\E8,
+	rmcup=\E[60;0;0;28p\E[28;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[28;0;0;28p, use=aaa+unk,
+aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status,
+	eslok, hs,
+	lines#29,
+	dsl=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K,
+	fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8,
+	rmcup=\E[60;1;0;30p\E[29;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K,
+	tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
+aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status+reverse video,
+	use=aaa+rv, use=aaa-30-s,
+aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status+save context,
+	rmcup=\E[60;1;0;30p\E[59;1H\E[K,
+	smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s,
+aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video,
+	rmcup=\E[60;1;0;30p\E[59;1H\E[K,
+	smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv,
+aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines,
+	lines#30,
+	is2=\E7\E[60;0;0;30p\E8,
+	rmcup=\E[60;0;0;30p\E[30;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk,
+aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video,
+	use=aaa+rv, use=aaa-30,
+aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context,
+	rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
+	use=aaa-30,
+aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context,
+	rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
+	use=aaa+rv, use=aaa-30,
+aaa-36|ann arbor ambassador/36 lines,
+	lines#36,
+	is2=\E7\E[60;0;0;36p\E8,
+	rmcup=\E[60;0;0;36p\E[36;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk,
+aaa-36-rv|ann arbor ambassador/36 lines+reverse video,
+	use=aaa+rv, use=aaa-36,
+aaa-40|ann arbor ambassador/40 lines,
+	lines#40,
+	is2=\E7\E[60;0;0;40p\E8,
+	rmcup=\E[60;0;0;40p\E[40;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk,
+aaa-40-rv|ann arbor ambassador/40 lines+reverse video,
+	use=aaa+rv, use=aaa-40,
+aaa-48|ann arbor ambassador/48 lines,
+	lines#48,
+	is2=\E7\E[60;0;0;48p\E8,
+	rmcup=\E[60;0;0;48p\E[48;1H\E[K,
+	smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk,
+aaa-48-rv|ann arbor ambassador/48 lines+reverse video,
+	use=aaa+rv, use=aaa-48,
+aaa-60-s|ann arbor ambassador/59 lines+status,
+	eslok, hs,
+	lines#59,
+	dsl=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K,
+	fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;60p\E8,
+	tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
+aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video,
+	use=aaa+rv, use=aaa-60-s,
+aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video,
+	use=aaa+dec, use=aaa+rv, use=aaa-60-s,
+aaa-60|ann arbor ambassador/60 lines,
+	lines#60,
+	is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8,
+	use=aaa+unk,
+aaa-60-rv|ann arbor ambassador/60 lines+reverse video,
+	use=aaa+rv, use=aaa-60,
+aaa-db|ann arbor ambassador 30/destructive backspace,
+	OTbs@,
+	cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30,
+
+guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols,
+	lines#33,
+	flash=\E[>59h$<100>\E[>59l,
+	is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l,
+	rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk,
+guru+rv|guru changes for reverse video,
+	flash=\E[>59l$<100>\E[>59h, is3=\E[>59h,
+guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video,
+	use=guru+rv, use=guru-33,
+guru+s|guru status line,
+	eslok, hs,
+	dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l,
+	rmcup=\E[255;1p\E[255;1H\E[K, smcup=,
+	tsl=\E[>51h\E[1;%p1%dH\E[2K,
+guru-nctxt|guru with no saved context,
+	smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru,
+guru-s|guru-33-s|ann arbor guru/33 lines+status,
+	lines#32,
+	is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J,
+	smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-24|ann arbor guru 24 lines,
+	cols#80, lines#24,
+	is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p,
+	use=guru+unk,
+guru-44|ann arbor guru 44 lines,
+	cols#97, lines#44,
+	is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p,
+	use=guru+unk,
+guru-44-s|ann arbor guru/44 lines+status,
+	lines#43,
+	is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J,
+	smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76|guru with 76 lines by 89 cols,
+	cols#89, lines#76,
+	is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p,
+	use=guru+unk,
+guru-76-s|ann arbor guru/76 lines+status,
+	cols#89, lines#75,
+	is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J,
+	smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76-lp|guru-lp|guru with page bigger than line printer,
+	cols#134, lines#76,
+	is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p,
+	use=guru+unk,
+guru-76-w|guru 76 lines by 178 cols,
+	cols#178, lines#76,
+	is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p,
+	use=guru+unk,
+guru-76-w-s|ann arbor guru/76 lines+status+wide,
+	cols#178, lines#75,
+	is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J,
+	smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76-wm|guru 76 lines by 178 cols with 255 cols memory,
+	cols#178, lines#76,
+	is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p,
+	use=guru+unk,
+aaa-rv-unk|ann arbor unknown type,
+	lh#0, lw#0, nlab#0,
+	blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
+	is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
+	rs1=\E[H\E[7m\E[J,
+	sgr=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+	sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,
+
+#### Applied Digital Data Systems (adds)
+#
+# ADDS itself is long gone.  ADDS was bought by NCR, and the same group made
+# ADDS and NCR terminals.  When AT&T and NCR merged, the engineering for
+# terminals was merged again.  Then AT&T sold the terminal business to
+# SunRiver, which later changed its  name to Boundless Technologies.  The
+# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there
+# as of early 1995) are at:
+#
+#	Boundless Technologies
+#	100 Marcus Boulevard
+#	Hauppauge, NY 11788-3762
+#	Vox: (800)-231-5445
+#	Fax: (516)-342-7378
+#	Web: http://boundless.com
+#
+# Their voice mail used to describe the place as "SunRiver (formerly ADDS)".
+# In 1995 Boundless acquired DEC's terminals business.
+#
+
+# Regent: lowest common denominator, works on all regents.
+# (regent: renamed ":bc:" to ":le:" -- esr)
+regent|Adds Regent Series,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, cuu1=^Z,
+	home=\EY\s\s, ind=^J, ll=^A,
+# Regent 100 has a bug where if computer sends escape when user is holding
+# down shift key it gets confused, so we avoid escape.
+regent100|Adds Regent 100,
+	xmc#1,
+	bel=^G,
+	cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
+	kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r,
+	kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3,
+	lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@,
+	sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent,
+regent20|Adds Regent 20,
+	bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK,
+	use=regent,
+regent25|Adds Regent 25,
+	bel=^G, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, khome=^A,
+	use=regent20,
+regent40|Adds Regent 40,
+	xmc#1,
+	bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r,
+	kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
+	kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6,
+	lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P,
+	smul=\E0`, use=regent25,
+regent40+|Adds Regent 40+,
+	is2=\EB, use=regent40,
+regent60|regent200|Adds Regent 60,
+	dch1=\EE, is2=\EV\EB, kdch1=\EE, kich1=\EF, krmir=\EF,
+	rmir=\EF, rmso=\ER\E0@\EV, smir=\EF, smso=\ER\E0P\EV,
+	use=regent40+,
+# From: <edward@onyx.berkeley.edu> Thu Jul  9 09:27:33 1981
+# (viewpoint: added <kcuf1>, function key, and <dl1> capabilities -- esr)
+viewpoint|addsviewpoint|adds viewpoint,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+	cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>,
+	ind=^J, is2=\017\E0`, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z,
+	kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A,
+	rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N,
+# Some viewpoints have bad ROMs that foo up on ^O
+screwpoint|adds viewpoint with ^O bug,
+	cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint,
+
+# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92
+# The <civis>/<cnorm>/<sgr>/<sgr0> strings were added by ESR from specs.
+# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000,
+# underline=01100000, rev=01010000, blink=01000010,dim=01000001,
+# invis=01000100 and %c is the logical or of desired attributes.
+# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(.
+#
+# Update by TD - 2004:
+# Adapted from
+#	http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt
+#
+# COMMANDS                        ASCII CODE
+#
+# Address, Absolute               ESC,=,row,column
+# Beep                            BEL
+# Aux Port Enable                 ESC,@
+# Aux Port Disable                ESC,A
+# Backspace                       BS
+# Cursor back                     BS
+# Cursor down                     LF
+# Cursor forward                  FF
+# Cursor home                     RS
+# Cursor up                       VT
+# Cursor supress                  ETB
+# Cursor enable                   CAN
+# Erase to end of line            ESC,T
+# Erase to end of page            ESC,Y
+# Erase screen                    SUB
+# Keyboard lock                   SI
+# Keyboard unlock                 SO
+# Read current cursor position    ESC,?
+# Set Attribute                   ESC,0,x  (see below for values of x)
+# Tag bit reset                   ESC,(
+# Tag bit set                     ESC,)
+# Transparent Print on            ESC,3
+# Transparent Print off           ESC,4
+#
+#
+# ATTRIBUTES
+#
+# Normal                          @	0100
+# Half Intensity                  A	0101
+# Blinking                        B	0102
+# Half Intensity Blinking         C	0103
+# Reverse Video                   P	0120
+# Reverse Video Half Intensity    Q	0121
+# Reverse Video Blinking          R	0122
+# Reverse Video Half Intensity
+#    Blinking                     S	0123
+# Underlined                      `	0140
+# Underlined Half Intensity       a	0141
+# Underlined Blinking             b	0142
+# Underlined Half Intensity
+#    Blinking                     c	0143
+# Video suppress                  D	0104
+vp3a+|viewpoint3a+|adds viewpoint 3a+,
+	am, bw,
+	cols#80, it#8, lines#24,
+	blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=^M,
+	cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E),
+	ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, invis=\E0D\E),
+	kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+	nel=^M^J, rev=\E0P\E), rmso=\E(,
+	sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;%?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%c%?%p7%tD%;\E)%e\E(%;,
+	sgr0=\E(, smso=\E0Q\E), smul=\E0`\E),
+vp60|viewpoint60|addsvp60|adds viewpoint60,
+	use=regent40,
+#
+# adds viewpoint 90 - from cornell
+# Note:  emacs sends ei occasionally to insure the terminal is out of
+#        insert mode. This unfortunately puts the viewpoint90 IN insert
+#        mode.  A hack to get around this is <ich1=\EF\s\EF^U>.  (Also,
+#   -    :ei=:im=: must be present in the termcap translation.)
+#   -    <xhp> indicates glitch that attributes stick to location
+#   -    <msgr> means it's safe to move in standout mode
+#   -    <clear=\EG\Ek>: clears screen and visual attributes without affecting
+#               the status line
+# Function key and label capabilities merged in from SCO.
+vp90|viewpoint90|adds viewpoint 90,
+	OTbs, bw, msgr, xhp,
+	cols#80, lines#24,
+	clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE,
+	dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I,
+	ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J,
+	kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r,
+	kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
+	kf7=^B8\r, kf8=^B9\r, kf9=^B\:\r, khome=^A, lf0=F1, lf1=F2,
+	lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9,
+	lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV,
+	sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV,
+# Note: if return acts weird on a980, check internal switch #2
+# on the top chip on the CONTROL pc board.
+adds980|a980|adds consul 980,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d,
+	dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1,
+	kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
+	kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N,
+
+#### C. Itoh Electronics
+#
+# As of 1995 these people no longer make terminals (they're still in the
+# printer business).  Their terminals were all clones of the DEC VT series.
+# They're located in Orange County, CA.
+#
+
+# CIT 80  - vt-52 emulator, the termcap has been modified to remove
+#           the delay times and do an auto tab set rather than the indirect
+#           file used in vt100.
+cit80|cit-80|citoh 80,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=\E[H\EJ, cr=^M, cub1=^H, cuf1=\E[C,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
+	ind=^J, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+	kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
+# From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
+# (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr)
+cit101|citc|C.itoh fast vt100,
+	OTbs, am, xenl,
+	cols#80, lines#24,
+	bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E7\E[U,
+	dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
+	flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, il1=\E[L,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m,
+# CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL
+# The following termcap entry was created from the Callan cd100 entry.  The
+# last two lines (with the capabilities in caps) are used by RM-cobol to allow
+# full selection of combinations of reverse video, underline, and blink.
+# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\
+# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\
+# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr)
+cit101e|C. Itoh CIT-101e,
+	OTbs, OTpt, am, mir, msgr,
+	cols#80, it#8, lines#24,
+	acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
+	cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
+	cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, ed=\E[J,
+	el=\E[K, if=/usr/local/share/tabset/vt100, il1=\E[L,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, kf6=\EOl,
+	kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l,
+	rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, smir=\E[4h,
+	smkx=\E=, smso=\E[7m, smul=\E[4m,
+# From: David S. Lawyer, June 1997:
+# The CIT 101-e was made in Japan in 1983-4 and imported by CIE
+# Terminals in Irvine, CA.  It was part of CITOH Electronics.  In the
+# late 1980's CIT Terminals went out of business.
+# There is no need to use the initialization string is=... (by invoking
+# tset or setterm etc.) provided that the terminal has been manually set
+# up (and the setup saved with ^S) to be compatible with this termcap.  To be
+# compatible it should be in ANSI mode (not VT52).   A set-up that
+# works is to set all the manually setable stuff to factory defaults
+# by pressing ^D in set-up mode.  Then increse the brighness with the
+# up-arrow key since the factory default will likely be dim on an old
+# terminal.  Then change any options you want (provided that they are
+# compatible with the termcap).  For my terminal I set: Screen
+# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver:
+# on.  I also set up mine for parity (but you may not need it).  Then
+# save the setup with ^S.
+# (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr)
+cit101e-rv|Citoh CIT-101e (sets reverse video),
+	am, eo, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24,
+	OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l\E[?5h$<200/>,
+	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
+	is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(B\E[m\E[20l\E[1;24r\E[24;1H,
+	kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=, rmir=\E[4l,
+	rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7,
+	sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR,
+	u7=\E[6n, u8=\E[?6c, u9=\E[c,
+cit101e-n|CIT-101e w/o am,
+	am@,
+	cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
+	use=cit101e,
+cit101e-132|CIT-101e with 132 cols,
+	cols#132,
+	kbs=^H, kcub1=^H, kcud1=^J, use=cit101e,
+cit101e-n132|CIT-101e with 132 cols w/o am,
+	am@,
+	cols#132,
+	cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
+	use=cit101e,
+# CIE Terminals CIT-500 from BRL
+# The following SET-UP modes are assumed for normal operation:
+#	GENERATE_XON/XOFF:YES	DUPLEX:FULL		NEWLINE:OFF
+#	AUTOWRAP:ON		MODE:ANSI		SCREEN_LENGTH:64_LINES
+#	DSPLY_CNTRL_CODES?NO	PAGE_WIDTH:80		EDIT_MODE:OFF
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements.
+# Hardware tabs are assumed to be set every 8 columns; they can be set up
+# by the "reset", "tset", or "tabs" utilities.  No delays are specified; use
+# "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (cit500: I added <rmam>/<smam> based on the init string -- esr)
+cit500|CIE Terminals CIT-500,
+	OTbs, OTpt, mir, msgr, xon,
+	OTkn#10, cols#80, it#8, lines#64, vt#3,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[P, kdl1=\E[M,
+	ked=\EJ, kel=\EK, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
+	kf4=\EOU, kf5=\EOV, kf6=\EOW, kf7=\EOX, kf8=\EOY, kf9=\EOZ,
+	khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1,
+	lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18,
+	lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rc=\E8, rev=\E[7m,
+	ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
+	rmso=\E[m, rmul=\E[m,
+	rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>,
+	sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+
+# C. Itoh printers begin here
+citoh|ci8510|8510|c.itoh 8510a,
+	cols#80, it#8,
+	bold=\E!, cub1@,
+	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073.,
+	rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY,
+	smul=\EX, use=lpr,
+citoh-pica|citoh in pica,
+	is1=\EN, use=citoh,
+citoh-elite|citoh in elite,
+	cols#96,
+	is1=\EE,
+	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089.,
+	use=citoh,
+citoh-comp|citoh in compressed,
+	cols#136,
+	is1=\EQ,
+	is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129.,
+	use=citoh,
+# citoh has infinite cols because we don't want lp ever inserting \n\t**.
+citoh-prop|citoh-ps|ips|citoh in proportional spacing mode,
+	cols#32767,
+	is1=\EP, use=citoh,
+citoh-6lpi|citoh in 6 lines per inch mode,
+	is3=\EA, use=citoh,
+citoh-8lpi|citoh in 8 lines per inch mode,
+	lines#88,
+	is3=\EB, use=citoh,
+
+#### Control Data (cdc)
+#
+
+cdc456|cdc 456 terminal,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
+	el=^V, home=^Y, il1=\EL, ind=^J,
+
+# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
+cdc721|CDC Viking,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
+	cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I,
+	kcuu1=^W, khome=^Y,
+cdc721ll|CDC Vikingll,
+	OTbs, am,
+	cols#132, lines#24,
+	clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
+	cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I,
+	kcuu1=^W, khome=^Y,
+# (cdc752: the BRL entry had :ll=\E1  ^Z: commented out
+cdc752|CDC 752,
+	OTbs, am, bw, xhp,
+	cols#80, lines#24,
+	bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+	cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V,
+	home=\E1\s\s, ind=^J, ll=^Y, rs1=\E1  \030\002\003\017,
+# CDC 756
+# The following switch/key settings are assumed for normal operation:
+#	96 chars	SCROLL		FULL duplex	not BLOCK
+# Other switches may be set according to communication requirements.
+# Insert/delete-character cannot be used, as the whole display is affected.
+# "so" & "se" are commented out until jove handles "sg" correctly.
+cdc756|CDC 756,
+	OTbs, am, bw,
+	OTkn#10, cols#80, lines#24,
+	bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+	cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z,
+	dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=^J,
+	kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, kdch1=\EI,
+	kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED,
+	kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y,
+	khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4,
+	lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z,
+	rs1=\031\030\002\003\017,
+#
+# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL.
+#
+# Part of the long initialization string defines the "DOWN" key to the left
+# of the tab key to send an ESC.  The real ESC key is positioned way out
+# in right field.
+#
+# The termcap won't work in 132 column mode due to the way it it moves the
+# cursor.  Termcap doesn't have the capability (as far as I could tell) to
+# handle the 721 in 132 column mode.
+#
+# (cdc721: changed :ri: to :sr: -- esr)
+cdc721-esc|Control Data 721,
+	OTbs, OTpt, am, bw, msgr, xon,
+	OTkn#10, cols#80, it#8, lines#30,
+	bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z,
+	cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W,
+	dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW,
+	ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[,
+	is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036\022J\036\022L\036\022N\036\022P\036\022Q\036\022\036\022\^\036\022b\036\022i\036W =\036\022Z\036\011C1-` `!k/o,
+	kbs=^H, kcub1=^H, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^q,
+	kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, kf7=^^x,
+	kf8=^^y, kf9=^^z, khome=^Y, ll=^B =, rev=^^D,
+	ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^],
+	sgr0=\017\025\035\036E\036\022\\, smir=, smkx=^^^Rk,
+	smso=^^D, smul=^\, tbc=^^^RY,
+
+#### Getronics
+#
+# Getronics is a Dutch electronics company that at one time was called
+# `Geveke' and made async terminals; but (according to the company itself!)
+# they've lost all their documentation on the command set.  The hardware
+# documentation suggests the terminals were actually manufactured by a
+# Taiwanese electronics company named Cal-Comp.  There are known
+# to have been at least two models, the 33 and the 50.
+#
+
+# The 50 seems to be a top end vt220 clone, with the addition of a higher
+# screen resolution, a larger screen, at least 1 page of memory above and
+# below the screen, apparently pages of memory right and left of the screen
+# which can be panned, and about 75 function keys (15 function keys x normal,
+# shift, control, func A, func B). It also has more setup possibilities than
+# the vt220. The monitor case is dated November 1978 and the keyboard case is
+# May 1982.
+#
+# The vt100 emulation works as is.  The entry below describes the rather
+# non-conformant (but more featureful) ANSI mode.
+#
+# From: Stephen Peterson <stv@utrecht.ow.nl>, 27 May 1995
+visa50|geveke visa 50 terminal in ansi 80 character mode,
+	bw, mir, msgr,
+	cols#80, lines#25,
+	acsc=0_aaffggh jjkkllmmnnooqqssttuuvvwwxx, bel=^G,
+	blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, home=\E[H,
+	hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
+	is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h,
+	ka1=\E[f, ka3=\EOQ, kb2=\EOP, kbs=^H, kc1=\EOR, kc3=\EOS,
+	kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
+	kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002,
+	kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007,
+	kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char,
+	lf3=A insert line, lf4=A delete line, lf5=A clear,
+	lf6=A ce of/cf gn, lf7=A print, lf8=A on-line,
+	lf9=A funcl0=A send, nel=^M^J, rev=\E[7m, rmacs=\E[3l,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m,
+	rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h,
+	smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
+	vpa=\E[%i%p1%dd,
+
+#### Human Designed Systems (Concept)
+#
+#	Human Designed Systems
+#	400 Fehley Drive
+#	King of Prussia, PA 19406
+#	Vox: (610)-277-8300
+#	Fax: (610)-275-5739
+#	Net: support@hds.com
+#
+# John Martin <john@hds.com> is their termcap expert.  They're mostly out of
+# the character-terminal business now (1995) and making X terminals.  In
+# particular, the whole `Concept' line described here was discontinued long
+# ago.
+#
+
+# From: <vax135!hpk>  Sat Jun 27 07:41:20 1981
+# Extensive changes to c108 by arpavax:eric Feb 1982
+# Some unknown person at SCO then translated it to terminfo.
+#
+# There seem to be a number of different versions of the C108 PROMS
+# (with bug fixes in its Z-80 program).
+#
+# The first one that we had would lock out the keyboard of you
+# sent lots of short lines (like /usr/dict/words) at 9600 baud.
+# Try that on your C108 and see if it sends a ^S when you type it.
+# If so, you have an old version of the PROMs.
+#
+# You should configure the C108 to send ^S/^Q before running this.
+# It is much faster (at 9600 baud) than the c100 because the delays
+# are not fixed.
+# new status line display entries for c108-8p:
+# <is3> - init str #3 - setup term for status display -
+# set programmer mode, select window 2, define window at last
+# line of memory, set bkgnd stat mesg there, select window 0.
+#
+# <tsl> - to status line - select window 2, home cursor, erase to
+# end-of-window, 1/2 bright on, goto(line#0, col#?)
+#
+# <fsl> - from status line - 1/2 bright off, select window 0
+#
+# <dsl> - disable status display - set bkgnd status mesg with
+# illegal window #
+#
+# There are probably more function keys that should be added but
+# I don't know what they are.
+#
+# No delays needed on c108 because of ^S/^Q handshaking
+#
+c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages,
+	is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev  \001\177p\Ep\n,
+	rmcup=\Ev  \001\177p\Ep\r\n, use=c108-4p,
+c108-4p|concept108-4p|concept 108 w/4 pages,
+	OTbs, eslok, hs, xon,
+	pb@,
+	acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=^M,
+	cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c,
+	cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
+	ind=^J, is1=\EK\E!\E F,
+	is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev  \001 p\Ep\n,
+	rmacs=\Ej\s, rmcup=\Ev  \001 p\Ep\r\n, smacs=\Ej!,
+	smcup=\EU\Ev  8p\Ep\r\E\025,
+	tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100,
+c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video,
+	rmcup=\Ev  \002 p\Ep\r\n, smcup=\EU\Ev  8p\Ep\r,
+	use=c108-rv-4p,
+c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video,
+	flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE,
+	use=c108-4p,
+c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode,
+	cols#132,
+	is1=\E F\E", rmcup=\Ev  ^A0\001D\Ep\r\n,
+	smcup=\EU\Ev  8\001D\Ep\r, use=c108-8p,
+
+# Concept 100:
+# These have only window relative cursor addressing, not screen
+# relative. To get it to work right here, smcup/rmcup (which
+# were invented for the concept) lock you into a one page
+# window for screen style programs.
+#
+# To get out of the one page window, we use a clever trick:
+# we set the window size to zero ("\Ev    " in rmcup) which the
+# terminal recognizes as an error and resets the window to all
+# of memory.
+#
+# This trick works on c100 but does not on c108, sigh.
+#
+# Some tty drivers use cr3 for concept, others use nl3, hence
+# the delays on cr and ind below. This padding is only needed at
+# 9600 baud and up.  One or the other is commented out depending on
+# local conventions.
+#
+# 2 ms padding on <rmcup> isn't always enough. 6 works fine. Maybe
+# less than 6 but more than 2 will work.
+#
+# Note: can't use function keys f7-f10 because they are
+# indistinguishable from arrow keys (!), also, del char and
+# clear eol use xon/xoff so they probably won't work very well.
+#
+# Also note that we don't define insrt/del char/delline/eop/send
+# because they don't transmit unless we reset them - I figured
+# it was a bad idea to clobber their definitions.
+#
+# The <mc5> sequence changes the escape character to ^^ so that
+# escapes will be passed through to the printer. Only trouble
+# is that ^^ won't be - ^^ was chosen to be unlikely.
+# Unfortunately, if you're sending raster bits through to be
+# plotted, any character you choose will be likely, so we lose.
+#
+# \EQ"\EY(^W (send anything from printer to host, for xon/xoff)
+# cannot be # in is2 because it will hang a c100 with no printer
+# if sent twice.
+c100|concept100|concept|c104|c100-4p|hds concept 100,
+	OTbs, am, eo, mir, ul, xenl,
+	cols#80, lines#24, pb#9600, vt#8,
+	bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r,
+	cub1=^H, cud1=^J, cuf1=\E=,
+	cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;,
+	dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>,
+	ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK,
+	ht=\011$<8>, il1=\E\022$<3*>, ind=^J, invis=\EH, ip=$<16*>,
+	is1=\EK,
+	is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E\010A@ \E4#\:"\E\:a\E4#;"\E\:b\E4#<"\E\:c,
+	is3=\Ev    $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_,
+	kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q,
+	kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7,
+	kf4=\E8, kf5=\E9, kf6=\E\:a, kf7=\E\:b, kf8=\E\:c, khome=\E?,
+	khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E.,
+	kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027,
+	mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI,
+	rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED,
+	rmcup=\Ev    $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex,
+	rmso=\Ed, rmul=\Eg, sgr0=\EN@,
+	smcup=\EU\Ev  8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX,
+	smso=\ED, smul=\EG,
+c100-rv|c100-rv-4p|concept100-rv|c100 rev video,
+	cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee,
+	smso=\EE, use=c100,
+oc100|oconcept|c100-1p|old 1 page concept 100,
+	in,
+	is3@, use=c100,
+
+# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996.
+# Lots of notes, originally inline, but ncurses doesn't grok that.
+#
+# am: 	not available in power on mode, but turned on with \E[=107;207h in
+#	is2=.  Also, \E=124l in is2= could have been used to prevent needing
+#	to specify xenl:, but that would have rendered the last space on the
+#	last line useless.
+# bw:	Not available in power on mode, but turned on with \E[=107;207h in
+#	is2=.
+# clear: Could be done with \E[2J alone, except that vi (and probably most
+#	other programs) assume that this also homes the cursor.
+# dsl:	Go to window 2, go to the beginning of the line, use a line feed to
+#	scroll the window, and go back to window 1.
+# is2:	the string may cause a warning to be issued by tic that it
+#	found a very long line and that it suspects that a comma is missing
+#	somewhere.  This warning can be ignored (unless it comes up more than
+#	once).  The initialization string contains the following commands:
+#
+#	 [Setup mode items changed from factory defaults:]
+#		\E)0			set alternate character set to
+#						graphics
+#		^O			set character set to default
+#	 [In case it wasn't]
+#		\E[m			turn off all attributes
+#	 [In case they weren't off]
+#		\E[=107;		cursor wrap and
+#			207h			character wrap on
+#		\E[90;3u		set Fkey definitions to "transmit"
+#						defaults
+#		\E[92;3u		set cursor key definitions to
+#						"transmit" defaults
+#		\E[43;1u		set shift F13 to transmit...
+#		\177\E$P\177
+#		\E[44;1u		set shift F14 to transmit...
+#			\177\E$Q\177
+#		\E[45;1u		set shift F15 to transmit...
+#			\177\E$R\177
+#		\E[46;1u		set shift F16 to transmit...
+#			\177\E$S\177
+#		\E[200;1u		set shift up to transmit...
+#			\177\E$A\177
+#		\E[201;1u		set shift down to transmit...
+#			\177\E$B\177
+#		\E[202;1u		set shift right to transmit...
+#			\177\E$C\177
+#		\E[203;1u		set shift left to transmit...
+#			\177\E$D\177
+#		\E[204;1u		set shift home to transmit...
+#			\177\E$H\177
+#		\E[212;1u		set backtab to transmit...
+#			\177\E$I\177
+#		\E[213;1u		set shift backspace to transmit...
+#			\177\E$^H\177
+#		\E[214;1u		set shift del to transmit...
+#			"\E$\177"
+#	 [Necessary items not mentioned in setup mode:]
+#		\E[2!w			move to window 2
+#		\E[25;25w		define window as line 25 of memory
+#		\E[!w			move to window 1
+#		\E[2*w			show current line of window 2 as
+#						status line
+#		\E[2+x			set meta key to use high bit
+#		\E[;3+}			move underline to bottom of character
+#
+#	All Fkeys are set to their default transmit definitions with \E[90;3u
+#	in is2=.  IMPORTANT:  to use this terminal definition, the "quit" stty
+#	setting MUST be redefined or deactivated, because the default is
+#	contained in almost all of this terminal's Fkey strings!  If for some
+#	reason "quit" cannot be altered, the Fkeys can, but it would be
+#	necessary to change ^| to ^] in all of these definitions, and add
+#	\E[2;029!t to is2.
+# lines: is set to 24 because this terminal refuses to treat the 25th
+#	line normally.
+# ll:	Not available in power on mode, but turned on with \E[=107;207h in
+#	is2=.
+# lm:	Pointless, given that this definition locks a single screen of
+#	memory into view, but what the hey...
+# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any
+#	other attributes alone), but some programs expect this to turn off
+#	everything.
+# rmul: Could use \E[4!{ to turn off only underline (leaving any other
+#	attributes alone), but some programs expect this to turn off
+#	everything.
+# sgr:	Attributes are set on this terminal with the string \E[ followed by
+#	a list of attribute code numbers (in decimal, separated by
+#	semicolons), followed by the character m.  The attribute code
+#	numbers are:
+#		  1 for bold;
+#		  2 for dim (which is ignored in power on mode);
+#		  4 for underline;
+#		  5 for blinking;
+#		  7 for inverse;
+#		  8 for not displayable; and
+#		=99 for protected (except that there are strange side
+#		effects to protected characters which make them inadvisable).
+#	 The mapping of terminfo parameters to attributes is as follows:
+#		%p1 (standout) = bold and inverse together;
+#		%p2 (underline) = underline;
+#		%p3 (reverse) = inverse;
+#		%p4 (blink) = blinking;
+#		%p5 (dim) is ignored;
+#		%p6 (bold) = bold;
+#		%p7 (invisible) = not displayable;
+#		%p8 (protected) is ignored; and
+#		%p9 (alt char set) = alt char set.
+#	 The code to do this is:
+#		\E[0		OUTPUT	\E[0
+#		%?%p1%p6%O	IF	(standout; bold) OR
+#		%t;1		THEN	OUTPUT	;1
+#		%;		ENDIF
+#		%?%p2		IF	underline
+#		%t;4		THEN	OUTPUT	;4
+#		%;		ENDIF
+#		%?%p4		IF	blink
+#		%t;5		THEN	OUTPUT	;5
+#		%;		ENDIF
+#		%?%p1%p3%O	IF	(standout; reverse) OR
+#		%t;7		THEN	OUTPUT	;7
+#		%;		ENDIF
+#		%?%p7		IF	invisible
+#		%t;8		THEN	OUTPUT	;8
+#		%;		ENDIF
+#		m		OUTPUT	m
+#		%?%p9		IF	altcharset
+#		%t^N		THEN	OUTPUT	^N
+#		%e^O		ELSE	OUTPUT	^O
+#		%;		ENDIF
+# sgr0: Everything is turned off (including alternate character set), since
+#	there is no way of knowing what it is that the program wants turned
+#	off.
+# smul: The "underline" attribute is reconfigurable to an overline or
+#	strikethru, or (as done with \E[;3+} in is2=), to a line at the true
+#	bottom of the character cell.  This was done to allow for more readable
+#	underlined characters, and to be able to distinguish between an
+#	underlined space, an underscore, and an underlined underscore.
+# xenl: Terminal can be configured to not need this, but this "glitch"
+#	behavior is actually preferable with autowrap terminals.
+#
+# Parameters kf31= thru kf53= actually contain the strings sent by the shifted
+# Fkeys.  There are no parameters for shifted Fkeys in terminfo.  The is2
+# string modifies the 'O' in kf43 to kf46 to a '$'.
+#
+# kcbt was originally ^I but redefined in is2=.
+# kHOM was \E[H originally but redefined in is2=, as were a number of
+# other keys.
+# kDC was originally \177 but redefined in is2=.
+#
+# kbs:	Shift was also ^H originally but redefined as \E$^H in is2=.
+# tsl:	Go to window 2, then do an hpa=.
+#
+#------- flash=\E[8;3!}^G\E[3;3!}
+#------- flash=\E[?5h$<100>\E[?5l
+# There are two ways to flash the screen, both of which have their drawbacks.
+# The first is to set the bell mode to video, transmit a bell character, and
+# set the bell mode back - but to what?  There is no way of knowing what the
+# user's old bell setting was before we messed with it.  Worse, the command to
+# set the bell mode also sets the key click volume, and there is no way to say
+# "leave that alone", or to know what it's set to, either.
+# The second way to do a flash is to set the screen to inverse video, pad for a
+# tenth of a second, and set it back - but like before, there's no way to know
+# that the screen wasn't ALREADY in inverse video, or that the user may prefer
+# it that way.  The point is moot anyway, since vi (and probably other
+# programs) assume that by defining flash=, you want the computer to use it
+# INSTEAD of bel=, rather than as a secondary type of signal.
+#
+#------- cvvis=\E[+{
+# The is the power on setting, which is also as visible as the cursor
+# gets.
+#-------  wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw
+# Windowing is possible, but not defined here because it is also used to
+# emulate status line functions.  Allowing a program to set a window could
+# clobber the status line or render it unusable.  There is additional memory,
+# but screen scroll functions are destructive and do not make use of it.
+#
+#-------   dim=			Not available in power on mode.
+# You have a choice of defining low intensity characters as "half bright" and
+# high intensity as "normal", or defining low as "normal" and high as "bold".
+# No matter which you choose, only one of either "half bright" or "bold" is
+# available at any time, so taking the time to override the default is
+# pointless.
+#
+#-------  prot=\E[=0;99m
+# Not defined, because it appears to have some strange side effects.
+#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
+#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
+#-------   pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%;
+#	 Available, but making them available to programs is inadvisable.
+#	 The code to do this is:
+#		%?%p1%{24}%<	IF	((key; 24) <;
+#		%p1%{30}%>		 ((key; 30) >;
+#		%p1%{54}%<		  (key; 54) <
+#		%A			 ) AND
+#		%O		  	) OR
+#	 [that is, "IF key < 24 OR (key > 30 AND key < 54)",]
+#		%t\E[		THEN	OUTPUT	\E[
+#		%p1%d			OUTPUT	(key) as decimal
+#	 [next line applies to pfx only]
+#		;1			OUTPUT	;1
+#		u			OUTPUT	u
+#		\177			OUTPUT	\177
+#		%p2%s			OUTPUT	(string) as string
+#		\177			OUTPUT	\177
+#	 [DEL chosen as delimiter, but could be any character]
+#	 [implied:		ELSE	do nothing]
+#		%;		ENDIF
+#
+#-------   rs2=
+# Not defined since anything it might do could be done faster and easier with
+# either Meta-Shift-Reset or the main power switch.
+#
+#-------  smkx=\E[1!z
+#-------  rmkx=\E[!z
+# These sequences apply to the cursor and setup keys only, not to the
+# numeric keypad.  But it doesn't matter anyway, since making these
+# available to programs is inadvisable.
+# For the key definitions below, all sequences beginning with \E$ are
+# custom and programmed into the terminal via is2.  \E$ also has no
+# meaning to any other terminal.
+#
+#------- cmdch=\E[;%p1%d!t
+# Available, but making it available to programs is inadvisable.
+#------- smxon=\E[1*q
+# Available, but making it available to programs is inadvisable.
+# Terminal will send XON/XOFF on buffer overflow.
+#------- rmxon=\E[*q
+# Available, but making it available to programs is inadvisable.
+# Terminal will not notify on buffer overflow.
+#-------   smm=\E[2+x
+#-------   rmm=\E[+x
+# Available, but making them available to programs is inadvisable.
+#
+# Printing:
+#	 It's not made clear in the manuals, but based on other ansi/vt type
+#	 terminals, it's a good guess that this terminal is capable of both
+#	 "transparent print" (which doesn't copy data to the screen, and
+#	 therefore needs mc5i: specified to say so) and "auxilliary print"
+#	 (which does duplicate printed data on the screen, in which case mc4=
+#	 and mc5= should use the \E[?4i and \E[?5i strings instead).
+
+hds200|Human Designed Systems HDS200,
+	am, bw, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, lm#0,
+	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{,
+	clear=\E[H\E[J, cnorm=\E[+{, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
+	fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	invis=\E[0;8m,
+	is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P\177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u\177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177\E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177\E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
+	kDC=\E$\177, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
+	kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\177, kent=^M, kf1=^\001\r, kf10=^\010\r,
+	kf11=^\011\r, kf12=^\012\r, kf13=\EOP, kf14=\EOQ,
+	kf15=\EOR, kf16=\EOS, kf17=^\017\r, kf18=^\018\r,
+	kf19=^\019\r, kf2=^\002\r, kf20=^\020\r, kf21=^\021\r,
+	kf22=^\022\r, kf23=^\023\r, kf3=^\003\r, kf31=^\031\r,
+	kf32=^\032\r, kf33=^\033\r, kf34=^\034\r, kf35=^\035\r,
+	kf36=^\036\r, kf37=^\037\r, kf38=^\038\r, kf39=^\039\r,
+	kf4=^\004\r, kf40=^\040\r, kf41=^\041\r, kf42=^\042\r,
+	kf43=\E$P, kf44=\E$Q, kf45=\E$R, kf46=\E$S, kf47=^\047\r,
+	kf48=^\048\r, kf49=^\049\r, kf5=^\005\r, kf50=^\050\r,
+	kf51=^\051\r, kf52=^\052\r, kf53=^\053\r, kf6=^\006\r,
+	kf7=^\007\r, kf8=^\008\r, kf9=^\009\r, khome=\E[H,
+	kind=\E[T, knp=\E[U, kpp=\E[V, kri=\E[S, ll=\E[H\E[A,
+	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\E[E, rc=\E8,
+	rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017,
+	rmul=\E[m\017, sc=\E7,
+	sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m,
+	smul=\E[0;4m, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG,
+	vpa=\E[%i%p1%dd,
+
+# <ht> through <el> included to specify padding needed in raw mode.
+# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
+avt-ns|concept avt no status line,
+	OTbs, am, eo, mir, ul, xenl, xon,
+	cols#80, it#8, lines#24, lm#192,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[=119h, dch1=\E[P, dim=\E[1!{, dl=\E[%p1%dM$<4*>,
+	dl1=\E[M$<4>, ed=\E[J$<96>, el=\E[K$<6>, home=\E[H,
+	hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>,
+	invis=\E[8m, ip=$<4>, is1=\E[=103l\E[=205l,
+	is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[!y\E[!z\E>\E[0\:0\:32!r\E[0*w\E[w\E2\r\n\E[2;27!t,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\E^B\r, ked=\E^D\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, khome=\E[H, kich1=\E^A\r, kil1=\E^C\r, ll=\E[24H,
+	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+	pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#,
+	prot=\E[99m, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m,
+	ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n,
+	rmir=\E[4l, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{,
+	sc=\E7,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+	sgr0=\E[m, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r,
+	smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m,
+	tbc=\E[2g, vpa=\E[%p1%{1}%+%dd,
+avt-rv-ns|concept avt in reverse video mode/no status line,
+	flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
+	use=avt-ns,
+avt-w-ns|concept avt in 132 column mode/no status line,
+	is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
+	use=avt-ns,
+avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video,
+	flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
+	smcup=\E[H\E[1;24;1;132w, use=avt-ns,
+
+# Concept AVT with status line. We get the status line using the
+# "Background status line" feature of the terminal. We swipe the
+# first line of memory in window 2 for the status line, keeping
+# 191 lines of memory and 24 screen lines for regular use.
+# The first line is used instead of the last so that this works
+# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this
+# assumes an 8 page AVT but lm isn't currently used anywhere.)
+#
+avt+s|concept avt status line changes,
+	eslok, hs,
+	lm#191,
+	dsl=\E[0*w, fsl=\E[1;1!w,
+	is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n,
+	rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r,
+	tsl=\E[2;1!w\E[;%p1%dH\E[2K,
+avt|avt-s|concept-avt|avt w/80 columns,
+	use=avt+s, use=avt-ns,
+avt-rv|avt-rv-s|avt reverse video w/sl,
+	flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
+	use=avt+s, use=avt-ns,
+avt-w|avt-w-s|concept avt 132 cols+status,
+	is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
+	use=avt+s, use=avt-ns,
+avt-w-rv|avt-w-rv-s|avt wide+status+rv,
+	flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
+	smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns,
+
+#### Contel Business Systems.
+#
+
+# Contel c300 and c320 terminals.
+contel300|contel320|c300|Contel Business Systems C-300 or C-320,
+	am, in, xon,
+	cols#80, lines#24, xmc#1,
+	bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+	dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
+	el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
+	hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>,
+	kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
+	kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
+	rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3,
+# Contel c301 and c321 terminals.
+contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
+	flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>,
+	use=contel300,
+
+#### Data General (dg)
+#
+# According to James Carlson <carlson@xylogics.com> writing in January 1995,
+# the terminals group at Data General was shut down in 1991; all these
+# terminals have thus been discontinued.
+#
+# DG terminals have function keys that respond to the SHIFT and CTRL keys,
+# e.g., SHIFT-F1 generates a different code from F1.  To number the keys
+# sequentially, first the unmodified key codes are listed as F1 through F15.
+# Then their SHIFT versions are listed as F16 through F30, their CTRL versions
+# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as
+# F46 through F60.  This is done in the private "includes" below whose names
+# start with "dgkeys+".
+#
+# DG terminals generally support 8 bit characters.  For each of these terminals
+# two descriptions are supplied:
+#	1) A default description for 8 bits/character communications, which
+#	   uses the default DG international character set and keyboard codes.
+#	2) A description with suffix "-7b" for 7 bits/character communications.
+#	   This description must use the NON-DEFAULT native keyboard language.
+
+# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33),
+# Ctrl/Shift fdkeys (kf34-kf44).
+
+dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys,
+	ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z,
+	kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
+	kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z,
+	kf11=\233011z, kf12=\233012z, kf13=\233013z,
+	kf14=\233014z, kf15=\233000z, kf16=\233101z,
+	kf17=\233102z, kf18=\233103z, kf19=\233104z,
+	kf2=\233002z, kf20=\233105z, kf21=\233106z,
+	kf22=\233107z, kf23=\233108z, kf24=\233109z,
+	kf25=\233110z, kf26=\233111z, kf27=\233112z,
+	kf28=\233113z, kf29=\233114z, kf3=\233003z,
+	kf30=\233100z, kf31=\233201z, kf32=\233202z,
+	kf33=\233203z, kf34=\233204z, kf35=\233205z,
+	kf36=\233206z, kf37=\233207z, kf38=\233208z,
+	kf39=\233209z, kf4=\233004z, kf40=\233210z,
+	kf41=\233211z, kf42=\233212z, kf43=\233213z,
+	kf44=\233214z, kf45=\233200z, kf46=\233301z,
+	kf47=\233302z, kf48=\233303z, kf49=\233304z,
+	kf5=\233005z, kf50=\233305z, kf51=\233306z,
+	kf52=\233307z, kf53=\233308z, kf54=\233309z,
+	kf55=\233310z, kf56=\233311z, kf57=\233312z,
+	kf58=\233313z, kf59=\233314z, kf6=\233006z,
+	kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z,
+	khome=\233H, kprt=\233i,
+
+dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys,
+	ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z,
+	kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z,
+	kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z,
+	kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z,
+	kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z,
+	kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z,
+	kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z,
+	kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z,
+	kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z,
+	kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z,
+	kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z,
+	kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z,
+	kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z,
+	kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z,
+	kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z,
+	kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z,
+	kf9=\E[009z, khome=\E[H, kprt=\E[i,
+
+dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys,
+	kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K,
+	kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c,
+	kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r,
+	kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3,
+	kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8,
+	kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#,
+	kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(,
+	kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w,
+	kf8=^^x, kf9=^^y, khome=^H,
+
+dgkeys+15|Private entry describing 15 DG mode special keys,
+	kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^,
+	kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^},
+	kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d,
+	kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i,
+	kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s,
+	kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5,
+	kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:,
+	kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!,
+	kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&,
+	kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,,
+	kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x,
+	kf9=^^y,
+
+# Data General color terminals use the "Tektronix" color model.  The total
+# number of colors varies with the terminal model, as does support for
+# attributes used in conjunction with color.
+
+# Removed u7, u8 definitions since they conflict with tack:
+#		Preserve user-defined colors in at least some cases.
+#	u7=^^Fh,
+#		Default is ACM mode.
+#	u8=^^F}20^^Fi^^F}21,
+#
+dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
+	bce,
+	colors#16, ncv#53, pairs#256,
+	op=\036Ad\036Bd,
+	setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+	setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+	setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
+
+dg+fixed|Fixed color info for DG D430C terminals in DG mode,
+	use=dgunix+fixed,
+
+# Video attributes are coordinated using static variables set by "sgr", then
+# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings.
+# (D=dim, U=underline, B=blink, R=reverse.)
+dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode,
+	bce,
+	colors#8, ncv#16, pairs#64,
+	op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m,
+	setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+
+dg+color|Color info for Data General D470C terminals in ANSI mode,
+	colors#16, ncv#53, pairs#256,
+	setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+	use=dg+color8,
+
+dgmode+color8|Color info for Data General D220/D230C terminals in DG mode,
+	bce,
+	colors#8, ncv#16, pairs#64,
+	op=\036Ad\036Bd,
+	setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
+	setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
+	setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
+
+dgmode+color|Color info for Data General D470C terminals in DG mode,
+	colors#16, pairs#256,
+	setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+	setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+	use=dgmode+color8,
+
+dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
+	bce, ccc,
+	colors#52, ncv#53, pairs#26,
+	initp=\036RG0%p1%02X%p2%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%02X,
+	oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00,
+	op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D,
+	scp=\036RG2%p1%02X,
+
+# Colors are in the order:  normal, reverse, dim, dim + reverse.
+dg+ccc|Configurable color info for DG D430C terminals in DG mode,
+	bce, ccc,
+	colors#52, ncv#53, pairs#26,
+	initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
+	oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00,
+	op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=,
+	scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c,
+
+# The generic DG terminal type (an 8-bit-clean subset of the 6053)
+# Initialization string 1 sets:
+#	^R		- vertical scrolling enabled
+#	^C		- blinking enabled
+dg-generic|Generic Data General terminal in DG mode,
+	am, bw, msgr, xon,
+	cols#80, lines#24,
+	bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X,
+	cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C,
+	mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
+	smul=^T, use=dgkeys+11,
+
+# According to the 4.4BSD termcap file, the dg200 <cup> should be the
+# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap
+# notation that's "^P%r%+\200%+\200").  Those \200s are suspicious,
+# maybe they were originally nuls (which would fit).
+
+dg200|data general dasher 200,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X,
+	cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=^J,
+	kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q,
+	kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x,
+	kf9=^^y, khome=^H, lf0=f10, nel=^J, rmso=^^E, rmul=^U,
+	smso=^^D, smul=^T,
+
+# Data General 210/211 (and 410?)	from Lee Pearson (umich!lp) via BRL
+dg210|dg-ansi|Data General 210/211,
+	am,
+	cols#80, lines#24,
+	OTnl=\E[B, clear=\E[2J, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+	nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m,
+	smul=\E[4;m,
+# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
+# courtesy of Carlos Rucalde of Vantage Software, Inc.
+# (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
+# I suspect the d200 function keys actually work on the dg211, check it out.)
+dg211|Data General d211,
+	cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@,
+	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^Z, rmcup=^L,
+	rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200,
+
+# dg450 from Cornell (not official)
+dg450|dg6134|data general 6134,
+	cub1@, cuf1=^X, use=dg200,
+
+# Not official...
+# Note: lesser Dasher terminals will not work with vi because vi insists upon
+# having a command to move straight down from any position on the bottom line
+# and scroll the screen up, or a direct vertical scroll command.  The 460 and
+# above have both, the D210/211, for instance, has neither.  We must use ANSI
+# mode rather than DG mode because standard UNIX tty drivers assume that ^H is
+# backspace on all terminals.  This is not so in DG mode.
+# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the
+# grounds that there is no matching ":ml:"
+# fixed garbled ":k9=\E[00\:z:" capability -- esr)
+dg460-ansi|Data General Dasher 460 in ANSI-mode,
+	OTbs, am, msgr, ul,
+	cols#80, it#8, lines#24,
+	OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
+	dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
+	kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
+	kf8=\E[009z, kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
+	lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m,
+	ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m,
+	smul=\E[4m,
+# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
+# Data General 605x
+# Ought to work for a Model 6242, Type D210 as well as a 605x.
+# Note that the cursor-down key transmits ^Z.  Job control users, beware!
+# This also matches a posted description of something called a `Dasher 100'
+# so there's a dg100 alias here.
+# (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr)
+dg6053-old|dg100|data general 6053,
+	OTbs, am, bw, ul,
+	cols#80, lines#24,
+	OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z,
+	cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K,
+	home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X,
+	kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v,
+	kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L,
+	rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D,
+	smul=^T,
+
+# (Some performance can be gained over the generic DG terminal type)
+dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
+	xon@,
+	home=^P\0\0, ll=^P\0^W, use=dg-generic,
+
+# Like 6053, but adds reverse video and more keypad and function keys.
+d200|d200-dg|Data General DASHER D200,
+	bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^],
+	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;,
+	sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15,
+	use=dg6053,
+
+# DASHER D210 series terminals in ANSI mode.
+#	Reverse video, no insert/delete character/line, 7 bits/character only.
+#
+# Initialization string 1 sets:
+#	<0		- scrolling enabled
+#	<1		- blink enabled
+#	<4		- print characters regardless of attributes
+d210|d214|Data General DASHER D210 series,
+	am, bw, msgr, xon,
+	cols#80, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
+	el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l,
+	ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m,
+	sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m,
+	sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
+
+# DASHER D210 series terminals in DG mode.
+# Like D200, but adds clear to end-of-screen and needs XON/XOFF.
+d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
+	xon,
+	ed=^^FF, use=d200-dg,
+
+# DASHER D211 series terminals in ANSI mode.
+# Like the D210, but with 8-bit characters and local printer support.
+#
+# Initialization string 2 sets:
+#	\E[2;1;1;1v
+#		2;1	- 8 bit operations
+#		1;1	- 8 bit (international) keyboard language
+#	\E(B		- default primary character set (U.S. ASCII)
+#	\E)4		- default secondary character set (international)
+#	^O		- primary character set
+#
+d211|d215|Data General DASHER D211 series,
+	km,
+	is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b,
+	use=d210,
+
+# Initialization string 2 sets:
+#	\E[2;0;1;0v
+#		2;0	- 7 bit operations
+#		1;0	- 7 bit (native) keyboard language
+#	\E(0		- default character set (the keyboard native language)
+#	^O		- primary character set
+d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode,
+	km@,
+	is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211,
+
+# Like the D210 series, but adds support for 8-bit characters.
+#
+# Reset string 2 sets:
+#	^^N	- secondary character set
+#	^^FS0>	- 8 bit international character set
+#	^^O	- primary character set
+#	^^FS00	- default character set (matching the native keyboard language)
+#
+d211-dg|d215-dg|Data General DASHER D211 series in DG mode,
+	km,
+	rs2=\036N\036FS0>\036O\036FS00, use=d210-dg,
+
+d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode,
+	use=d211-dg,
+
+# Enhanced DG mode with changes to be more UNIX compatible.
+d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
+	mc5i,
+	it#8,
+	acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
+	clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
+	el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J,
+	is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd,
+	kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB,
+	kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0,
+	mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
+	rs2=\036N\036FS0E\036O\036FS00,
+	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+	sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11,
+	vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg,
+d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines,
+	lines#25,
+	is3=\036Fz2, use=d216+,
+
+d217-unix|Data General DASHER D217 in DG-UNIX mode,
+	use=d216-unix,
+d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
+	use=d216-unix-25,
+
+# DASHER D220 color terminal in ANSI mode.
+# Like the D470C but with fewer colors and screen editing features.
+#
+# Initialization string 1 sets:
+#	\E[<0;<1;<4l
+#		<0	- scrolling enabled
+#		<1	- blink enabled
+#		<4	- print characters regardless of attributes
+#	\E[m		- all attributes off
+# Reset string 1 sets:
+#	\Ec		- initial mode defaults (RIS)
+#
+d220|Data General DASHER D220,
+	mc5i@,
+	dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
+	use=dg+color8, use=d470c,
+
+d220-7b|Data General DASHER D220 in 7 bit mode,
+	mc5i@,
+	dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
+	use=dg+color8, use=d470c-7b,
+
+# Initialization string 3 sets:
+#	- default cursor (solid rectangle)
+# Reset string 2 sets:
+#	^^N     - secondary character set
+#	^^FS0>  - 8 bit international character set
+#	^^O     - primary character set
+#       ^^FS00  - default character set (matching the native keyboard language)
+#
+d220-dg|Data General DASHER D220 color terminal in DG mode,
+	mc5i@,
+	dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@,
+	rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8,
+	use=d470c-dg,
+
+# DASHER D230C color terminal in ANSI mode.
+# Like the D220 but with minor ANSI compatibility improvements.
+#
+d230c|d230|Data General DASHER D230C,
+	blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J,
+	rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
+	sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
+	sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m,
+	smul=\E[4;50m, use=dgkeys+7b, use=d220,
+
+d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
+	use=d220-dg,
+
+# DASHER D400/D450 series terminals.
+# These add intelligent features like insert/delete to the D200 series.
+#
+# Initialization string 2 sets:
+#	^^FQ2		- default cursor (solid rectangle)
+#	^^FW		- character protection disabled
+#	^^FJ		- normal (80 column) mode
+#	^^F\^		- horizontal scrolling enabled (for alignment)
+#	^^FX004?	- margins at columns 0 and 79
+#	^^F]		- horizontal scrolling disabled
+#	^^O		- primary character set
+#	^^FS00		- default character set (the keyboard native language)
+#	- (should reset scrolling regions, but that glitches the screen)
+# Reset string 1 sets:
+#	^^FA		- all terminal defaults except scroll rate
+# Reset string 2 sets:
+#	^^F]		- horizontal scrolling disabled
+#	^^FT0		- jump scrolling
+#
+d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
+	mc5i,
+	acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0,
+	cnorm=\036FQ2, dch1=^^K, dl1=^^FI,
+	enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177,
+	ich1=^^J, il1=^^FH,
+	is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00,
+	ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O,
+	rs1=^^FA, rs2=\036F]\036FT0,
+	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
+	sgr0=\017\025\035\036E\036O, smacs=^^N,
+	vpa=\020\177%p1%c, use=d210-dg,
+
+# DASHER D410/D460 series terminals in ANSI mode.
+# These add a large number of intelligent terminal features.
+#
+# Initialization string 1 sets:
+#	\E[<0;<1;<2;<4l
+#		<0	- scrolling enabled
+#		<1	- blink enabled
+#		<2	- horizontal scrolling enabled (for alignment)
+#		<4	- print characters regardless of attributes
+#	\E[5;0v		- normal (80 column) mode
+#	\E[1;1;80w	- margins at columns 1 and 80
+#	\E[1;6;<2h
+#		1	- print all characters even if protected
+#		6	- character protection disabled
+#		<2	- horizontal scrolling disabled
+#	- (should reset scrolling regions, but that glitches the screen)
+#
+# Initialization string 2 sets:
+#	\E[3;2;2;1;1;1v
+#		3;2	- default cursor (solid rectangle)
+#		2;1	- 8 bit operations
+#		1;1	- international keyboard language
+#	\E(B		- default primary character set (U.S. ASCII)
+#	\E)4		- default secondary character set (international)
+#	^O		- primary character set
+#
+#	Reset string 1 sets:
+#	\Ec		- initial mode defaults (RIS)
+#	\E[<2h		- horizontal scrolling disabled
+#
+# Reset string 2 sets:
+#	\E[4;0;2;1;1;1v
+#		4;0	- jump scrolling
+#		2;1	- 8 bit operations
+#		1;1	- 8 bit (international) keyboard language
+#	\E(B		- default primary character set (U.S. ASCII)
+#	\E)4		- default secondary character set (international)
+#
+d410|d411|d460|d461|Data General DASHER D410/D460 series,
+	mc5i,
+	acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v,
+	cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+	is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h,
+	is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
+	ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
+	rs2=\E[4;0;2;1;1;1v\E(B\E)4,
+	sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;,
+	sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
+
+# Initialization string 2 sets:
+#	\E[3;2;2;0;1;0v
+#		3;2	- default cursor (solid rectangle)
+#		2;0	- 7 bit operations
+#		1;0	- 7 bit (native) keyboard language
+#	\E(0		- default character set (the keyboard native language)
+#	^O		- primary character set
+#
+# Reset string 2 sets:
+#	\E[4;0;2;0;1;0v
+#		4;0	- jump scrolling
+#		2;0	- 7 bit operations
+#		1;0	- 7 bit (native) keyboard language
+#	\E(0		- default character set (the keyboard native language)
+#
+d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode,
+	km@,
+	enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
+	rs2=\E[4;0;2;0;1;0v\E(0,
+	sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410,
+
+d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
+	km,
+	enacs@, rmacs=\036FS00,
+	sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+	sgr0=\017\025\035\036E\036FS00, smacs=\036FS11,
+	use=d400-dg,
+
+# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode.
+#
+# Initialization string 1 sets:
+#	\E[<0;<1;<2;<4l
+#		<0	- scrolling enabled
+#		<1	- blink enabled
+#		<2	- horizontal scrolling enabled (for alignment)
+#		<4	- print characters regardless of attributes
+#	\E[5;1v		- compressed (135 column) mode
+#	\E[1;1;126	- margins at columns 1 and 126
+#	\E[1;6;<2h
+#		1	- print all characters even if protected
+#		6	- character protection disabled
+#		<2	- horizontal scrolling disabled
+#	- (should reset scrolling regions, but that glitches the screen)
+#
+# Reset string 1 sets:
+#	\Ec		- initial mode defaults (RIS)
+#	\E[5;1v		- compressed (135 column) mode
+#	\E[1;1;126w	- margins at columns 1 and 126
+#	\E[<2h		- horizontal scrolling disabled
+#
+d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode,
+	cols#126,
+	is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
+	rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410,
+
+d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode,
+	cols#126,
+	is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
+	rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b,
+
+d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode,
+	use=d410-dg,
+
+# These add intelligent features like scrolling regions.
+d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode,
+	civis=\036FQ0, clear=^^FE, cnorm=\036FQ5,
+	cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI,
+	home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH,
+	is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00,
+	ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I,
+	rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10,
+	vpa=\036FPFF%p1%2.2X,
+	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
+	use=d216+,
+d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode,
+	cols#132,
+	is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00,
+	rs2=\036P@1\036FK\036FX0083,
+	wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X,
+	use=d412-unix,
+d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines,
+	lines#25,
+	is3=\036Fz2,
+	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
+	use=d462+,
+d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line,
+	eslok, hs,
+	clear=\036FG\036PH, fsl=\036F}01\022,
+	is3=\036Fz2\036F}00\036FB180000\036F}01, ll@,
+	tsl=\036F}00\036FP%p1%2.2X18\036PG,
+	wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X,
+	use=d462+,
+
+#	Relative cursor motions are confined to the current window,
+#	which is not what the scrolling region specification expects.
+#	Thus, relative vertical cursor positioning must be deleted.
+d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region,
+	csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;,
+	cud1@, cuu1@, ll@, use=d462+,
+
+d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
+	use=d412-unix,
+d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode,
+	use=d412-unix-w,
+d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines,
+	use=d412-unix-25,
+d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line,
+	use=d412-unix-s,
+d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region,
+	use=d412-unix-sr,
+
+d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode,
+	use=d413-unix,
+d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode,
+	use=d413-unix-w,
+d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines,
+	use=d413-unix-25,
+d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line,
+	use=d413-unix-s,
+d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region,
+	use=d413-unix-sr,
+
+d430c-dg|d430-dg|Data General D430C in DG mode,
+	use=d413-dg, use=dg+fixed,
+d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors,
+	use=d413-dg, use=dg+ccc,
+
+d430c-unix|d430-unix|Data General D430C in DG-UNIX mode,
+	use=d413-unix, use=dgunix+fixed,
+d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode,
+	use=d413-unix-w, use=dgunix+fixed,
+d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines,
+	use=d413-unix-25, use=dgunix+fixed,
+d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line,
+	use=d413-unix-s, use=dgunix+fixed,
+d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region,
+	use=d413-unix-sr, use=dgunix+fixed,
+d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors,
+	use=d413-unix, use=dgunix+ccc,
+d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors,
+	use=d413-unix-w, use=dgunix+ccc,
+d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors,
+	use=d413-unix-25, use=dgunix+ccc,
+d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors,
+	use=d413-unix-s, use=dgunix+ccc,
+d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors,
+	use=d413-unix-sr, use=dgunix+ccc,
+
+# DASHER D470C color terminal in ANSI mode.
+# Like the D460 but with 16 colors and without a compressed mode.
+#
+# Initialization string 1 sets:
+#	\E[<0;<1;<2;<4l
+#		<0	- scrolling enabled
+#		<1	- blink enabled
+#		<2	- horizontal scrolling enabled (for alignment)
+#		<4	- print characters regardless of attributes
+#	\E[1;1;80w	- margins at columns 1 and 80
+#	\E[1;6;<2h
+#		1	- print all characters even if protected
+#		6	- character protection disabled
+#		<2	- horizontal scrolling disabled
+#	- (should reset scrolling regions, but that glitches the screen)
+#
+d470c|d470|Data General DASHER D470C,
+	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
+	sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
+	use=dg+color, use=d460,
+
+d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
+	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
+	sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;,
+	use=dg+color, use=d460-7b,
+
+# Initialization string 2 sets:
+#	^^FQ2		- default cursor (solid rectangle)
+#	^^FW		- character protection disabled
+#	^^F\^		- horizontal scrolling enabled (for alignment)
+#	^^FX004?	- margins at columns 0 and 79
+#	^^F]		- horizontal scrolling disabled
+#	^^O		- primary character set
+#	^^FS00		- default character set (the keyboard native language)
+#	- (should reset scrolling regions, but that glitches the screen)
+#
+d470c-dg|d470-dg|Data General DASHER D470C in DG mode,
+	is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00,
+	use=dgmode+color, use=d460-dg,
+
+# DASHER D555 terminal in ANSI mode.
+# Like a D411, but has an integrated phone.
+d555|Data General DASHER D555,
+	use=d411,
+d555-7b|Data General DASHER D555 in 7-bit mode,
+	use=d411-7b,
+d555-w|Data General DASHER D555 in wide mode,
+	use=d411-w,
+d555-7b-w|Data General DASHER D555 in wide 7-bit mode,
+	use=d411-7b-w,
+d555-dg|Data General DASHER D555 series in DG mode,
+	use=d411-dg,
+
+# DASHER D577 terminal in ANSI mode.
+# Like a D411, but acts as a keyboard for serial printers ("KSR" modes).
+d577|Data General DASHER D577,
+	use=d411,
+d577-7b|Data General DASHER D577 in 7-bit mode,
+	use=d411-7b,
+d577-w|Data General DASHER D577 in wide mode,
+	use=d411-w,
+d577-7b-w|Data General DASHER D577 in wide 7-bit mode,
+	use=d411-7b-w,
+
+d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
+	use=d411-dg,
+
+# DASHER D578 terminal.
+# Like a D577, but without compressed mode; like a D470C in this respect.
+#
+# Initialization string 1 sets:
+#	\E[<0;<1;<2;<4l
+#		<0	- scrolling enabled
+#		<1	- blink enabled
+#		<2	- horizontal scrolling enabled (for alignment)
+#		<4	- print characters regardless of attributes
+#	\E[1;1;80w	- margins at columns 1 and 80
+#	\E[1;6;<2h
+#		1	- print all characters even if protected
+#		6	- character protection disabled
+#		<2	- horizontal scrolling disabled
+#	- (should reset scrolling regions, but that glitches the screen)
+#
+d578|Data General DASHER D578,
+	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577,
+d578-7b|Data General DASHER D578 in 7-bit mode,
+	is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b,
+
+#### Datamedia (dm)
+#
+# Datamedia was headquartered in Nashua, New Hampshire until it went
+# out of business in 1993, but the ID plates on the terminals referred
+# to the factory in Pennsauken, NJ.  The factory was sold to a PCB board
+# manufacturer which threw out all information about the terminals.
+#
+
+cs10|colorscan|Datamedia Color Scan 10,
+	msgr,
+	cols#80, lines#24,
+	bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+cs10-w|Datamedia Color Scan 10 with 132 columns,
+	cols#132,
+	cup=\E[%i%p1%02d;%p2%03dH, use=cs10,
+
+# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
+dm1520|dm1521|datamedia 1520,
+	OTbs, am, xenl,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
+	khome=^Y,
+# dm2500: this terminal has both <ich> and <smir>. Applications using
+# termcap/terminfo directly (rather than through ncurses) might be confused.
+dm2500|datamedia2500|datamedia 2500,
+	OTbs, OTnc,
+	cols#80, lines#24,
+	bel=^G, clear=^^^^\177, cub1=^H, cud1=^J, cuf1=^\,
+	cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z,
+	dch1=\020\010\030\035$<10*>,
+	dl1=\020\032\030\035$<10*>, el=^W, home=^B,
+	ich1=\020\034\030\035$<10*>,
+	il1=\020\n\030\035\030\035$<15>, ind=^J, pad=\377,
+	rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^],
+	smdc=^P, smir=^P, smso=^N,
+# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
+# also, has a meta-key.
+# From: <goldberger@su-csli.arpa>
+# (dmchat: ":MT:" changed to ":km:" -- esr)
+dmchat|dmchat version of datamedia 2500,
+	km,
+	dl1=\020\032\030\035$<2/>,
+	il1=\020\n\030\035\030\035$<1*/>, use=dm2500,
+# (dm3025: ":MT:" changed to ":km:" -- esr)
+dm3025|datamedia 3025a,
+	OTbs, km,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
+	dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK,
+	home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=^J, ip=$<6>,
+	is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
+	smir=\EP, smso=\EO1,
+dm3045|datamedia 3045a,
+	OTbs, am, eo, km@, ul, xenl,
+	dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
+	kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
+	kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
+	khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
+	use=dm3025,
+# Datamedia DT80 soft switches:
+# 1	0=Jump  1=Smooth
+# 	Autorepeat 	0=off  1=on
+# 	Screen		0=Dark 1=light
+# 	Cursor		0=u/l  1=block
+#
+# 2	Margin Bell	0=off  1=on
+# 	Keyclick	0=off  1=on
+# 	Ansi/VT52	0=VT52 1=Ansi
+# 	Xon/Xoff	0=Off  1=On
+#
+# 3	Shift3		0=Hash 1=UK Pound
+# 	Wrap		0=Off  1=On
+# 	Newline		0=Off  1=On
+# 	Interlace	0=Off  1=On
+#
+# 4	Parity		0=Odd  1=Even
+# 	Parity		0=Off  1=On
+# 	Bits/Char	0=7    1=8
+# 	Power		0=60Hz 1=50Hz
+#
+# 5	Line Interface  0=EIA  1=Loop
+# 	Aux Interface   0=EIA  1=Loop
+# 	Local Copy    	0=Off  1=On
+# 	Spare
+#
+# 6	Aux Parity	0=Odd  1=Even
+# 	Aux Parity	0=Off  1=On
+# 	Aux Bits/Char   0=7    1=8
+# 	CRT Saver	0=Off  1=On
+# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
+dm80|dmdt80|dt80|datamedia dt80/1,
+	clear=\E[2J\E[H, cud1=^J, cuf1=\E[C,
+	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM,
+	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+	use=vt100,
+# except in 132 column mode, where it needs a little padding.
+# This is still less padding than the vt100, and you can always turn on
+# the ^S/^Q handshaking, so you can use vt100 flavors for things like
+# reverse video.
+dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode,
+	cols#132,
+	clear=\E[H\E[2J$<50/>, cud1=^J,
+	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>,
+	ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80,
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+dt80-sas|Datamedia DT803/DTX for SAS usage,
+	am, bw,
+	cols#80, lines#24,
+	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
+	bel=^G, clear=^L, cr=^M,
+	csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2,
+	cub1=^H, cud1=\EB, cuf1=^\,
+	cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K,
+	el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB,
+	is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=^J,
+	kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N,
+	rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF,
+	smso=\E$2\004, tbc=\E'0,
+
+# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL
+# These aren't end-all Excel termcaps; but do insert/delete char/line
+# and name some of the extra function keys.  (Mike Feldman ccvaxa!feldman)
+# The naming convention has been bent somewhat, with the use of E? (where
+# E is for 'Excel') as # a name.  This was done to distinguish the entries
+# from the other Datamedias in use here, and yet to associate a model of
+# the Excel terminals with the regular datamedia terminals that share
+# major characteristics.
+excel62|excel64|datamedia Excel 62,
+	dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv,
+	kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
+	use=dt80,
+excel62-w|excel64-w|datamedia Excel 62 in 132 char mode,
+	dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv,
+	kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h,
+	use=dt80w,
+excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode,
+	dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=^J,
+	kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l,
+	smir=\E[4h, use=dt80,
+
+#### Falco
+#
+#	Falco Data Products
+#	440 Potrero Avenue
+#	Sunnyvale, CA 940864-196
+#	Vox: (800)-325-2648
+#	Fax: (408)-745-7860
+#	Net: techsup@charm.sys.falco.com
+#
+# Current Falco models as of 1995 are generally ANSI-compatible and support
+# emulations of DEC VT-series, Wyse, and Televideo types.
+#
+
+# Test version for Falco ts-1. See <arpavax.hickman@ucb> for info
+# This terminal was released around 1983 and was discontinued long ago.
+# The standout and underline highlights are the same.
+falco|ts1|ts-1|falco ts-1,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE,
+	ind=^J, is2=\Eu\E3, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+	kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0,
+	smir=\Eq, smso=\Eg1, smul=\Eg1,
+falco-p|ts1p|ts-1p|falco ts-1 with paging option,
+	OTbs, am, da, db, mir, msgr, ul,
+	cols#80, it#8, lines#24,
+	bel=^G, cbt=\EI, clear=\E*, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A,
+	dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I,
+	il1=\EE, ind=^J, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er,
+	rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq,
+	smso=\Eg4, smul=\Eg1,
+# (ts100: I added <rmam>/<smam> based on the init string -- esr)
+ts100|ts100-sp|falco ts100-sp,
+	am, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>,
+	el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
+	ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
+	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+	use=vt100+fnkeys,
+ts100-ctxt|falco ts-100 saving context,
+	rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,
+
+#### Florida Computer Graphics
+#
+
+# Florida Computer Graphics Beacon System, using terminal emulator program
+# "host.com", as provided by FCG.  This description is for an early release
+# of the "host" program.  Known bug: <ed> clears the whole screen, so it's
+# commented out.
+
+# From: David Bryant <cbosg!djb> 1/7/83
+beacon|FCG Beacon System,
+	am, da, db,
+	cols#80, lines#32,
+	bel=\ESTART\r\E37\r\EEND\r$<1>,
+	blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=^M,
+	cub1=^H, cud1=^J, cuf1=\EV,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU,
+	dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE,
+	ind=^J, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=,
+	rmso=\ESTART\r\E70\,0\r\EEND\r$<20>,
+	rmul=\ESTART\r\E60\,0\r\EEND\r,
+	sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>,
+	smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>,
+	smso=\ESTART\r\E70\,6\r\EEND\r$<20>,
+	smul=\ESTART\r\E60\,1\r\EEND\r,
+
+#### Fluke
+#
+
+# The f1720a differences from ANSI: no auto margin, destructive
+# tabs, # of lines, funny highlighting and underlining
+f1720|f1720a|fluke 1720A,
+	xt,
+	cols#80, lines#16, xmc#1,
+	bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J,
+	el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^],
+	kcuf1=^^, kcuu1=^\, ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smso=\E[7m, smul=\E[4m,
+
+#### Liberty Electronics (Freedom)
+#
+#	Liberty Electronics
+#	48089 Fremont Blvd
+#	Fremont CA 94538
+#	Vox: (510)-623-6000
+#	Fax: (510)-623-7021
+
+# From: <faletti@berkeley.edu>
+# (f100: added empty <acsc> to suppress a tic warning;
+# made this relative to adm+sgr -- note that <invis> isn't
+# known to work for f100 but does on the f110. --esr)
+f100|freedom|freedom100|freedom model 100,
+	OTbs, am, bw, hs, mir, msgr, xon,
+	cols#80, lines#24,
+	acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET,
+	flash=\Eb$<200>\Ed, fsl=^M, home=^^, hpa=\E]%p1%{32}%+%c,
+	ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=^J, ip=$<6>,
+	is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V,
+	kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er,
+	smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
+	vpa=\E[%p1%{32}%+%c, use=adm+sgr,
+f100-rv|freedom-rv|freedom 100 in reverse video,
+	flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100,
+# The f110 and f200 have problems with vi(1).  They use the ^V
+# code for the down cursor key. When kcud1 is defined in terminfo
+# as ^V, the Control Character Quoting capability (^V in insert mode)
+# is lost! It cannot be remapped in vi because it is necessary to enter
+# a ^V to to quote the ^V that is being remapped!!!
+#
+# f110/f200 users will have to decide whether
+# to lose the down cursor key or the quoting capability. We will opt
+# initially for leaving the quoting capability out, since use of VI
+# is not generally applicable to most interactive applications
+# (f110: added <ht>, <khome> & <kcbt> from f100 -- esr)
+f110|freedom110|Liberty Freedom 110,
+	bw@, eslok,
+	it#8, wsl#80,
+	blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V,
+	dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE,
+	ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET,
+	kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
+	ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq,
+	smso=\EG<, tsl=\Ef, use=f100,
+f110-14|Liberty Freedom 110 14inch,
+	dch1@, use=f110,
+f110-w|Liberty Freedom 110 - 132 cols,
+	cols#132, use=f110,
+f110-14w|Liberty Freedom 110 14in/132 cols,
+	cols#132,
+	dch1@, use=f110,
+# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
+f200|freedom200|Liberty Freedom 200,
+	OTbs, am, eslok, hs, mir, msgr, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0,
+	clear=^Z, cnorm=\E.1, cr=^M,
+	csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET,
+	flash=\Eo$<200/>\En, fsl=^M, home=^^,
+	hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=^J, kbs=^H,
+	kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW,
+	kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
+	ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<,
+	tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr,
+f200-w|Liberty Freedom 200 - 132 cols,
+	cols#132, use=f200,
+# The f200 has the ability to reprogram the down cursor key. The key is
+# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM,
+# so powering the terminal off and on will not cause the change to be lost.
+f200vi|Liberty Freedom 200 for vi,
+	flash=\Eb$<200/>\Ed, kcud1=^J, use=f200,
+f200vi-w|Liberty Freedom 200 - 132 cols for vi,
+	cols#132, use=f200vi,
+
+#### GraphOn (go)
+#
+#	Graphon Corporation
+#	544 Division Street
+#	Campbell, CA 95008
+#	Vox: (408)-370-4080
+#	Fax: (408)-370-5047
+#	Net: troy@graphon.com (Troy Morrison)
+#
+#
+# The go140 and go225 have been discontinued.  GraphOn now makes X terminals,
+# including one odd hybrid that starts out life on power-up as a character
+# terminal, than can be switched to X graphics mode (driven over the serial
+# line) by an escape sequence.  No info on this beast yet.
+# (go140: I added <rmam>/<smam> based on the init string -- esr)
+go140|graphon go-140,
+	OTbs,
+	cols#80, it#8, lines#24,
+	clear=\E[H\E[2J$<10/>, cub1=^H, cuf1=\E[C,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J$<10/>, el=\E[K, ht=^I,
+	if=/usr/local/share/tabset/vt100, il1=\E[L,
+	is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+go140w|graphon go-140 in 132 column mode,
+	am,
+	cols#132,
+	is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q,
+	use=go140,
+# Hacked up vt200 termcap to handle GO-225/VT220
+# From: <edm@nwnexus.WA.COM>
+# (go225: I added <rmam>/<smam> based on the init string -- esr)
+go225|go-225|Graphon 225,
+	OTbs, am, mir, xenl,
+	cols#80, it#8, lines#25, vt#3,
+	blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
+	rf=/usr/local/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
+	rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
+	rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
+	sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
+	smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+
+#### Harris (Beehive)
+#
+# Bletch.  These guys shared the Terminal Brain Damage laurels with Hazeltine.
+# Their terminal group is ancient history now (1995) though the parent
+# company is still in business.
+#
+
+# Beehive documentation is undated and marked Preliminary and has no figures
+# so we must have early Superbee2 (Model 600, according to phone conversation
+# with mfr.). It has proved reliable except for some missing padding
+# (notably after \EK and <nl> at bottom of screen).
+#
+# The key idea is that AEP mode is poison for <cup> & that US's in
+# the local memory should be avoided like the plague. That means
+# that the 2048 character local buffer is used as 25 lines of 80
+# characters, period. No scrolling local memory, folks. It also
+# appears that we cannot use naked INS LINE feature since it uses
+# US. The sbi fakes <il1> with an 80-space insert that may be too
+# slow at low speeds; also spaces get converted to \040 which is
+# too long for some programs (not vi).  DEL LINE is ok but slow.
+#
+# The <nl> string is designed for last line of screen ONLY; cup to
+# 25th line corrects the motion inherent in scrolling to Page 1.
+#
+# There is one understood bug. It is that the screen appears to
+# pop to a new (blank) page after a <nel>, or leave a half-line
+# ellipsis to a quad that is the extra 48 memory locations. The
+# data received is dumped into memory but not displayed.  Not to
+# worry if <cup> is being used; the lines not displayed will be,
+# whenever the cursor is moved up there. Since <cup> is addressed
+# relative to MEMORY of window, nothing is lost; but beware of
+# relative cursor motion (<cuu1>,<cud1>,<cuf1>,<cub1>). Recommended,
+# therefore, is setenv MORE -c .
+#
+# WARNING: Not all features tested.
+#
+# Timings are assembled from 3 sources. Some timings may reflect
+# SB2/Model 300 that were used if more conservative.
+# Tested on a Model 600 at 1200 and 9600 bd.
+#
+# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly
+# placed on the keyboard and useless because of AEP, is made
+# into a backspace key. In use ESC must be pressed twice (to send)
+# and sending ^C must be prefixed by ESC to avoid that weird
+# transmit mode associated with ENTER key.
+#
+# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across
+# the screen, then it has dropped into ENTER mode; hit
+# RESET--ONLINE--!tset.
+#
+# As delivered this machine has a FATAL feature that will throw
+# it into that strange transmit state (SPOW) if the space bar is
+# hit after a CR is received, but before receiving a LF (or a
+# few others).
+#
+# The circuits MUST be modified to eliminate the SPOW latch.
+# This is done by strapping on chip A46 of the I/O board; cut
+# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that
+# chip. This mod has been checked out on a Mod 600 of Superbee II.
+# With this modification absurdly high timings on cr are
+# unnecessary.
+#
+# NOTE WELL that the rear panel switch should be set to CR/LF,
+# not AEP!
+#
+sb1|beehive superbee,
+	OTbs, am, bw, da, db, mir, ul, xsb,
+	cols#80, lines#25, xmc#1,
+	bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r,
+	cub1=^H, cud1=^J, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d,
+	cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>,
+	el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1,
+	il1=\EN\EL$<3>\EQ                                                                                \EP$<3> \EO\ER\EA$<3>,
+	ind=^J, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK,
+	kf0=\E2, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu,
+	kf7=\Ev, kf8=\Ew, kf9=\E1, khome=\EH, kich1=\EQ\EO,
+	krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER,
+	rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO,
+	smso=\E_1, smul=\E_0, tbc=\E3,
+sbi|superbee|beehive superbee at Indiana U.,
+	xsb,
+	cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA,
+	use=sb1,
+# Alternate (older) description of Superbee - f1=escape, f2=^C.
+# Note: there are at least 3 kinds of superbees in the world.  The sb1
+# holds onto escapes and botches ^C's.  The sb2 is the best of the 3.
+# The sb3 puts garbage on the bottom of the screen when you scroll with
+# the switch in the back set to CRLF instead of AEP.  This description
+# is tested on the sb2 but should work on all with either switch setting.
+# The f1/f2 business is for the sb1 and the <xsb> can be taken out for
+# the other two if you want to try to hit that tiny escape key.
+# This description is tricky: being able to use cup depends on there being
+# 2048 bytes of memory and the hairy <nl> string.
+superbee-xsb|beehive super bee,
+	am, da, db, xsb,
+	cols#80, it#8, lines#25,
+	clear=\EH\EJ$<3>, cnorm=^J, cr=\r$<1000>, cub1=^H, cud1=^J,
+	cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>,
+	dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>,
+	home=\EH, ht=^I, hts=\E1,
+	ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ep, kf2=\Eq,
+	kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+	khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3,
+# This loses on lines > 80 chars long, use at your own risk
+superbeeic|super bee with insert char,
+	ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb,
+sb2|sb3|fixed superbee,
+	xsb@, use=superbee,
+
+####  Beehive Medical Electronics
+#
+# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999):
+# Regarding your question though; Beehive terminals weren't made by Harris.
+# They were made by Beehive Medical Electronics in Utah. They went out of
+# business in the early '80s.
+#
+# (OK, then, I don't know why a couple of these say "harris beehive".)
+#
+
+# Reports are that most of these Beehive entries (except superbee) have not
+# been tested and do not work right.  <rmso> is a trouble spot.  Be warned.
+
+# (bee: <ich1> was empty, which is obviously bogus -- esr)
+beehive|bee|harris beehive,
+	OTbs, am, mir,
+	cols#80, lines#24,
+	cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+	dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
+	kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
+	krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
+	smir=\EQ, smso=\EdP, smul=\Ed`,
+# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
+# good grief - does this entry make :sg:/:ug: when it doesn't have to?
+# look at those spaces in <rmso>/<smso>.  Seems strange to me...
+# (beehive: <if=/usr/local/share/tabset/beehive> removed, no such file.  If you
+# really care, cook up one using ^F -- esr)
+beehive3|bh3m|beehiveIIIm|harris beehive 3m,
+	OTbs, am,
+	cols#80, it#8, lines#20,
+	bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K,
+	dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F,
+	il1=\023$<160>, ind=^J, ll=^E^K, rmso=\s^_, smso=^]\s,
+beehive4|bh4|beehive 4,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\EE, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
+	cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=^J,
+# There was an early Australian kit-built computer called a "Microbee".
+# It's not clear whether this is for one of those or for a relative
+# of the Beehive.
+microb|microbee|micro bee series,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
+	kf6=\Eu, kf7=\Ev, kf8=\Ew, kf9=\Ex, khome=\EH, rmso=\Ed@,
+	rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`,
+
+# 8675, 8686, and bee from Cyrus Rahman
+# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
+ha8675|harris 8675,
+	is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F,
+	kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei,
+	kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=^J, kf6=^T, kf7=^H,
+	kf8=\177, kf9=\Ee, use=bee,
+# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
+# in :is: -- esr)
+ha8686|harris 8686,
+	is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#,
+	kf1=\002\Ep\003, kf10=\Ej, kf11=\EW, kf12=\002\E{\003,
+	kf13=\002\E|\003, kf14=\002\E}\003, kf15=\002\E~\003,
+	kf16=\002\E\177\003, kf2=\002\Eq\003, kf3=\002\Er\003,
+	kf4=\002\Es\003, kf5=\E3, kf6=\EI, kf7=\ER, kf8=\EJ, kf9=\E(,
+	use=bee,
+
+#### Hazeltine
+#
+# Hazeltine appears to be out of the terminal business as of 1995.  These
+# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with
+# Harris. They have a hazeltine.com domain (but no web page there ) and can
+# be reached at:
+#
+#	Hazeltine
+#	450 East Pulaski Road
+#	Greenlawn, New York 11740
+#
+# As late as 1993, manuals for the terminal product line could still be
+# purchased from:
+#
+#	TRW Customer Service Division
+#	15 Law Drive
+#	P.O. Box 2076
+#	Fairfield, NJ 07007-2078
+#
+# They're now (1998) a subsidiary of General Electric, operating under the
+# marque "GEC-Marconi Hazeltine" and doing military avionics.  Web page
+# at <http://www.gec.com/cpd/1ncpd.htm#1.55>.
+#
+
+# Since <cuf1> is blank, when you want to erase something you
+# are out of luck.  You will have to do ^L's a lot to
+# redraw the screen.  h1000 is untested.  It doesn't work in
+# vi - this terminal is too dumb for even vi.  (The code is
+# there but it isn't debugged for this case.)
+hz1000|hazeltine 1000,
+	OTbs,
+	cols#80, lines#12,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K,
+	ind=^J,
+# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
+hz1420|hazeltine 1420,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P,
+	cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S,
+	ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, rmso=\E^Y,
+	smso=\E^_,
+# New "safe" cursor movement (11/87) from <cgs@umd5.umd.edu>.  Prevents
+# freakout with out-of-range args and tn3270.  No hz since it needs to
+# receive tildes.
+hz1500|hazeltine 1500,
+	OTbs, am, hz,
+	cols#80, lines#24,
+	bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+	cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c,
+	cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R,
+	il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P,
+	kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_,
+# h1510 assumed to be in sane escape mode.  Else use h1500.
+# (h1510: early versions of this entry apparently had "<rmso=\E^_>,
+# <smso=\E^Y>, but these caps were commented out in 8.3; also,
+# removed incorrect and overridden ":do=^J:" -- esr)
+hz1510|hazeltine 1510,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P,
+	cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X,
+	el=\E^O, il1=\E^Z, ind=^J,
+# Hazeltine 1520
+# The following switch settings are assumed for normal operation:
+#	FULL		CR		U/L_CASE	ESCAPE
+#	FORMAT_OFF	EOM_A_OFF	EOM_B_OFF	WRAPAROUND_ON
+# Other switches may be set for operator convenience or communication
+# requirements.
+hz1520|Hazeltine 1520,
+	OTbs, am, bw, msgr,
+	cols#80, lines#24,
+	bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
+	ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, kbs=^H,
+	kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L,
+	kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z,
+	rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_,
+# This version works with the escape switch off
+# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
+hz1520-noesc|hazeltine 1520,
+	am, hz,
+	cols#80, lines#24,
+	bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+	cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O,
+	home=~^R, il1=~^Z, ind=^J, rmso=~^Y, smso=~^_,
+# Note: the h1552 appears to be the first Hazeltine terminal which
+# is not braindamaged.  It has tildes and backprimes and everything!
+# Be sure the auto lf/cr switch is set to cr.
+hz1552|hazeltine 1552,
+	OTbs,
+	cud1=^J, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue,
+	lf2=red, lf3=green, use=vt52,
+hz1552-rv|hazeltine 1552 reverse video,
+	cud1=^J, rmso=\ET, smso=\ES, use=hz1552,
+# Note: h2000 won't work well because of a clash between upper case and ~'s.
+hz2000|hazeltine 2000,
+	OTbs, OTnc, am,
+	cols#74, lines#27,
+	bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J,
+	cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
+	il1=~\032$<6>, ind=^J, pad=\177,
+# Date: Fri Jul 23 10:27:53 1982.  Some unknown person wrote:
+# I tested this termcap entry for the Hazeltine Esprit with vi. It seems
+# to work ok. There is one problem though if one types a lot of garbage
+# characters very fast vi seems not able to keep up and hangs while trying
+# to insert. That's in insert mode while trying to insert in the middle of
+# a line. It might be because the Esprit doesn't have insert char and delete
+# char as a built in function. Vi has to delete to end of line and then
+# redraw the rest of the line.
+esprit|Hazeltine Esprit I,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K,
+	cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
+	ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, is2=\E?, kbs=^H,
+	kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0^J,
+	kf1=^B1^J, kf2=^B2^J, kf3=^B3^J, kf4=^B4^J, kf5=^B5^J,
+	kf6=^B6^J, kf7=^B7^J, kf8=^B8^J, kf9=^B9^J, khome=\E^R,
+	lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9,
+	rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_,
+esprit-am|hazeltine esprit auto-margin,
+	am, use=esprit,
+# Hazeltine Modular-1 from Cliff Shackelton <ittvax!ittral!shackelt> via BRL
+# Vi it seems always wants to send a control J for "do" and it turned out
+# that the terminal would work somewhat if the auto LF/CR was turned off.
+# (hmod1: removed :dn=~^K: -- esr)
+hmod1|Hazeltine Modular 1,
+	OTbs, am, hz,
+	cols#80, lines#24,
+	bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+	cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
+	ind=^J, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R,
+	rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_,
+#
+# Hazeltine Executive 80 Model 30 (1554?)
+#	from  Will Martin <control@ALMSA-1.ARPA> via BRL
+# Like VT100, except for different "am" behavior.
+hazel|exec80|h80|he80|Hazeltine Executive 80,
+	OTbs, OTpt, am,
+	cols#80, it#8, lines#24, vt#3,
+	OTnl=^J, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+	clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C$<2/>,
+	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
+	ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
+	is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
+	rf=/usr/local/share/tabset/vt100, ri=\EM$<5/>,
+	rmkx=\E[?1l\E>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
+	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
+	smul=\E[4m$<2/>,
+
+#### IBM
+#
+
+ibm327x|line mode IBM 3270 style,
+	gn,
+	clear=^M^J, el=^M, home=^M,
+
+ibm3101|i3101|IBM 3101-10,
+	OTbs, am, xon,
+	cols#80, lines#24,
+	bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH,
+ibm3151|IBM 3151 display,
+	is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
+	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
+	sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
+# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
+# removed kend, knp, kpp -TD
+ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
+	OTbs, am, mir, msgr,
+	cols#80, it#8, lines#24,
+	acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370,
+	bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED,
+	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, ind=^J,
+	invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ,
+	kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r,
+	kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r,
+	kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r,
+	kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r,
+	kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r,
+	kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r,
+	kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN,
+	ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, rmcup=\E>A,
+	rmso=\E4@, rmul=\E4@,
+	sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;,
+	sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B,
+
+ibm3161-C|IBM 3161-C NLS terminal using cartridge,
+	rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161,
+ibm3162|IBM 3162 display,
+	blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a,
+	rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
+	use=ibm3161-C,
+
+# This really should not use setab/setaf, but it is clear that the
+# original terminfo does not toggle red/blue colors as in setb/setf.
+ibm3164|i3164|IBM 3164,
+	msgr,
+	colors#8, pairs#64,
+	op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A,
+	setab=\E4  %p1%{64}%+%c,
+	setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@,
+	smcup=\E!9/N\E>B, use=ibm3161,
+
+ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
+	am, bw, msgr, xon,
+	cols#80, it#8, lines#25,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H,
+	hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z,
+	kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kdch1=\E[P, ked=\E[148q, kel=\E[142q,
+	kend=\E[146q, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
+	kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, kf15=\E[015q,
+	kf16=\E[016q, kf17=\E[017q, kf18=\E[018q, kf19=\E[019q,
+	kf2=\E[002q, kf20=\E[020q, kf21=\E[021q, kf22=\E[022q,
+	kf23=\E[023q, kf24=\E[024q, kf25=\E[025q, kf26=\E[026q,
+	kf27=\E[027q, kf28=\E[028q, kf29=\E[029q, kf3=\E[003q,
+	kf30=\E[030q, kf31=\E[031q, kf32=\E[032q, kf33=\E[033q,
+	kf34=\E[034q, kf35=\E[035q, kf36=\E[036q, kf4=\E[004q,
+	kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
+	kf9=\E[009q, khome=\E[H, kich1=\E[139q, kil1=\E[140q,
+	kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q,
+	krmir=\E[4l, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmir=\E[4l,
+	rmso=\E[m, rmul=\E[m, rs2=\Ec,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m,
+	sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+
+ibmaed|IBM Experimental display,
+	OTbs, am, eo, msgr,
+	cols#80, it#8, lines#52,
+	clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+	dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP,
+	il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	rmso=\E0, sgr0=\E0, smso=\E0,
+ibm-apl|apl|IBM apl terminal simulator,
+	lines#25, use=dm1520,
+# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
+# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
+ibmmono|IBM workstation monochrome,
+	eslok, hs,
+	bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL,
+	invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET,
+	kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY,
+	khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG,
+	lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew,
+	sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo,
+	use=ibm3101,
+ibmega|IBM Enhanced Color Display,
+	cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+	nel=^M^J, use=ibmmono,
+# This color scheme is assumed in some recent IBM terminal descriptions
+# (green on black, emulated on a 16-color terminal).
+ibm+color|IBM color definitions,
+	colors#8, ncv#3, pairs#64,
+	op=\E[32m\E[40m,
+	setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e%p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}%=%t46m%e%p1%{7}%=%t107m%;,
+	setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e%p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}%=%t36m%e%p1%{7}%=%t97m%;,
+ibm+16color|IBM aixterm color definitions,
+	colors#16, pairs#256,
+	setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
+	setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
+	setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
+	setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
+ibm5154|IBM 5154 Color display,
+	colors#8, ncv@, pairs#64,
+	bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
+	use=ibm+color,
+ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline,
+	rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;,
+	use=ibmmono,
+ibmvga-c|IBM VGA display color termcap,
+	cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+	nel=^M^J, use=ibmega-c,
+ibmvga|IBM VGA display,
+	cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+	nel=^M^J, use=ibmega,
+# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
+rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
+	lines#32,
+	dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono,
+ibm6155|IBM 6155 Black & White display,
+	blink@, bold@, use=ibm5151,
+# Advanced Monochrome (6153) and Color (6154) Graphics Display:
+ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display,
+	lines#31,
+	dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono,
+ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
+	lines#31,
+	dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo,
+	use=ibmega-c,
+ibm6154|IBM 6154 Color displays,
+	blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
+	sgr0=\E[0;10m, use=ibm5154,
+ibm6153|IBM 6153 Black & White display,
+	blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
+	sgr0=\E[0;10m, use=ibm5151,
+ibm6153-90|IBM 6153 Black & White display,
+	cols#90, lines#36,
+	blink@, bold@, use=ibm5151,
+ibm6153-40|IBM 6153 Black & White display,
+	cols#40, lines#12, use=ibm6153-90,
+ibm8512|ibm8513|IBM color VGA Terminal,
+	am, mir, msgr,
+	cols#80, it#8, lines#25,
+	acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
+	clear=\E[H\E[J, cub1=\E[D, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL,
+	il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A,
+	kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
+	kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+	kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m,
+	rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
+	rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+	rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m,
+	smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb,
+	smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+	use=ibm8503,
+hft-c|HFT with Color,
+	colors#8, pairs#64,
+	acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B,
+	use=ibm5151, use=ibm+color,
+hft-c-old|HFT with Color PC850,
+	colors#8, pairs#64,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
+	use=ibm+color,
+hft-old|AIWS High Function Terminal,
+	am, xon,
+	cols#80, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
+	ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
+	kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
+	kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q,
+	ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, use=ibm+color,
+ibm-system1|system1|ibm system/1 computer,
+	am, xt,
+	cols#80, lines#24,
+	bel=^G, clear=^Z, cub1=^H, cuf1=^\,
+	cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K,
+	ind=^J,
+#       lft-pc850 : IBM Low Function Terminal Device
+#    lft "supports" underline, bold, and blink in the sense that the lft code
+#    sets all the right bits.  HOWEVER, depending upon the adapter, these
+#    attributes may or may not be supported by the device driver.
+lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
+	am, bw, msgr, xon,
+	cols#80, it#8, lines#25,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K,
+	home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL,
+	il1=\E[L, ind=\ED, indn=\E[%p1%dS, invis=\E[8m, is2=\Ec,
+	kbs=^H, kcbt=\E[Z, kclr=\E[144q, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, ked=\E[148q,
+	kel=\E[142q, kend=\E[146q, kf1=\E[001q, kf10=\E[010q,
+	kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q,
+	kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, kf18=\E[018q,
+	kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, kf21=\E[021q,
+	kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, kf25=\E[025q,
+	kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, kf29=\E[029q,
+	kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, kf32=\E[032q,
+	kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, kf36=\E[036q,
+	kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+	kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
+	kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q,
+	kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\EL, rin=\E[%p1%dT,
+	rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g,
+ibm5081|hft|IBM Megapel Color display,
+	acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
+	s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
+ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display,
+	eslok, hs,
+	lines#33,
+	dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo,
+	use=ibmega-c,
+ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display,
+	use=hft-c,
+ibm8514|IBM 8514/a color VGA display,
+	eslok, hs,
+	dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft,
+ibm8514-c|IBM 8514 color display with standout and underline,
+	eslok, hs,
+	lines#41,
+	cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J,
+	kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo,
+	use=ibmega-c,
+
+#
+# AIX entries.  IBM ships these with AIX 3.2.5.
+# -- added rc, sc based on manpage -TD
+# Note that we could use ibm+16color, but that is not how IBM defines this one.
+aixterm|IBM Aixterm Terminal Emulator,
+	eslok, hs,
+	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
+	fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6154,
+aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
+	eslok, hs,
+	acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
+	fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+	sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153,
+aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
+	eslok, hs,
+	bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+	tsl=\E[?%p1%dT, use=ibm6153,
+jaixterm|IBM Kanji Aixterm Terminal Eemulator,
+	acsc@, use=aixterm,
+jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
+	acsc@, use=aixterm-m,
+
+# This flavor is adapted from xterm, in turn from aixterm documentation -TD
+aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors,
+	use=ibm+16color, use=aixterm,
+
+#### Infoton/General Terminal Corp.
+#
+
+# gt100 sounds like something DEC would come out with.  Let's hope they don't.
+i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100),
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM,
+	ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL,
+	ind=^J, rmso=\Ea, smso=\Eb,
+i400|infoton 400,
+	OTbs, am,
+	cols#80, lines#25,
+	bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%3d;%p2%3dH, cuu1=\E[A,
+	dch1=\E[4h\E[2Q\E[P\E[4l\E[0Q, dl1=\E[M, el=\E[N,
+	il1=\E[L, ind=^J, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q,
+# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
+addrinfo,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y,
+	cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=^J, ll=^H^\,
+# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr)
+infoton,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\,
+	ed=^K, ind=^J, ll=^H^\,
+
+# The ICL6402 was actually the Kokusai Display System 6402.
+# The 6404 was the KDS7372 (color version of the 6402).
+#
+# ICL6404 control codes follow:
+#
+#code            function
+#~~~~~~~~~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#ctrl-A          set SOM position at cursor position
+#ctrl-G          Bell
+#ctrl-H          Backspace
+#ctrl-I          Horiz tab
+#ctrl-J          Linefeed
+#ctrl-K          Cursor up
+#ctrl-L          Cursor right
+#ctrl-M          Carriage return
+#ctrl-N          Disable xon/xoff to host
+#ctrl-O          Enable xon/xoff to host
+#ctrl-R          Enable bidirectional mode
+#ctrl-T          Disable bidirectional mode
+#ctrl-V          Cursor down
+#ctrl-Z          Clear unprotected data to insert char
+#ctrl-^          Cursor home
+#ctrl-_          Newline
+#
+#ESC             lead-in char for multiple character command
+#
+#ESC space R     execute power on sequence
+#ESC ! p1 p2     define scroll region:
+#                p1 = scroll top    line:  20h - 37h
+#                p1 = scroll bottom line:  20h - 37h
+#ESC "           unlock keyboard
+#ESC #           lock keyboard
+#ESC $           Semi-graphics mode on
+#ESC %           Semi-graphics mode off
+#ESC &           protect mode on
+#ESC '           protect mode off
+#ESC (           write protect mode off (full intensity)
+#ESC )           write protect mode on (half intensity)
+#
+#ESC *           clear screen
+#ESC +           clear unprotected data to insert char
+#ESC ,           clear unprotected data to half intensity spaces
+#ESC - p1 p2 p3 p4     address cursor to page, row, column:
+#                      p1 = page number  0 - 3
+#                      p2 = row          20h - 7fh
+#                      p3 = column (lo)  20h - 7fh
+#                      p4 = column (hi)  20h - 21h (only 132 col)
+#ESC . p1        set cursor style:
+#                p1 = 0  invisible cursor
+#                p1 = 1  block blinking cursor
+#                p1 = 2  block steady cursor
+#                p1 = 3  underline blinking cursor
+#                p1 = 4  underline steady cursor
+#ESC /           transmit cursor location (page, row, column)
+#ESC 0 p1 p2 p3 p4     program edit key:
+#                      p1 = edit key code: '@'-'S', '`'-'s'
+#                      p2 p3 p4 = program data (3 bytes)
+#
+#ESC 1           set tab
+#ESC 2           clear tab at cursor
+#ESC 3           clear all tabs
+#ESC 4           send unprotect line to cursor
+#ESC 5           send unprotect page to cursor
+#ESC 6           send line to cursor
+#ESC 7           send page to cursor
+#ESC 8 n         set scroll mode:
+#                n = 0   set jump scroll
+#                n = 1   set smooth scroll
+#ESC 9 n         control display:
+#                n = 0   display off
+#                n = 1   display on
+#ESC :           clear unprotected data to null
+#ESC ;           clear unprotected data to insert char
+#
+#ESC <           keyclick on
+#ESC = p1 p2     address cursor to row, column
+#                p1 = row          20h - 7fh
+#                p2 = column (lo)  20h - 7fh
+#                p3 = column (hi)  20h - 21h (only 132 col)
+#ESC >           keyclick off
+#ESC ?           transmit cursor location (row, column)
+#
+#ESC @           copy print mode on
+#ESC A           copy print mode off
+#ESC B           block mode on
+#ESC C           block mode off (conversation mode)
+#ESC D F         set full duplex
+#ESC D H         set half duplex
+#ESC E           line insert
+#ESC F p1 p2     set page colour (p1 = f/grnd, p2 = b/grnd)
+#                0 = black, 1 = red,     2 = green, 3 = yellow
+#                4 = blue,  5 = magenta, 6 = cyan,  7 = white
+#ESC G n         set serial field attribute (n = 30h - 3Fh)
+#ESC H n         full graphics mode:
+#                n = 0  exit full graphics mode
+#                n = 1  enter full graphics mode
+#ESC I           back tab
+#ESC J           back page
+#ESC K           forward page
+#
+#ESC L           unformatted page print
+#ESC M L         move window left  (132 col mode only)
+#ESC M R         move window right (132 col mode only)
+#ESC N           set page edit (clear line edit)
+#ESC O           set line edit (clear page edit)
+#ESC P           formatted page print
+#ESC Q           character insert
+#ESC R           line delete
+#ESC S           send message unprotected only
+#ESC T           erase line to insert char
+#ESC U           set monitor mode   (see ESC X, ESC u)
+#
+#ESC V n         select video attribute mode:
+#                n = 0   serial field attribute mode
+#                n = 1   parallel character attribute mode
+#ESC V 2 n       define line attribute:
+#                n = 0   single width single height
+#                n = 1   single width double height
+#                n = 2   double width single height
+#                n = 3   double width double height
+#ESC V 3 n       select character font:
+#                n = 0   system font
+#                n = 1   user defined font
+#ESC V 4 n       select screen mode:
+#                n = 0   page screen mode
+#                n = 1   virtual screen mode
+#ESC V 5 n       control mouse mode:
+#                n = 0   disable mouse
+#                n = 1   enable sample mode
+#                n = 2   send mouse information
+#                n = 3   enable request mode
+#ESC W           character delete
+#ESC X           clear monitor mode (see ESC U, ESC u)
+#ESC Y           erase page to insert char
+#
+#ESC Z n         send user/status line:
+#                n = 0   send user line
+#                n = 1   send status line
+#                n = 2   send terminal ID
+#ESC [ p1 p2 p3  set character attribute (parallel char mode):
+#                p1: 0 = normal
+#                    1 = blank
+#                    2 = blink
+#                    3 = blink blank (= blank)
+#                    4 = reverse
+#                    5 = reverse blank
+#                    6 = reverse blink
+#                    7 = reverse blink blank (= reverse blank)
+#                    8 = underline
+#                    9 = underline blank
+#                    : = underline blink
+#                    ; = underline blink blank
+#                    < = reverse underline
+#                    = = reverse underline blank
+#                    > = reverse underline blink
+#                    ? = reverse underline blink blank
+#                p2, p3: f/grnd, b/grnd colour
+#                (see ESC F for colours)
+#                use ZZ for mono, eg.
+#                    ESC [ 0 Z Z for normal
+#                    ESC [ 4 Z Z for inverse etc.
+#
+#ESC \ n         set page size:
+#                n = 1   24 lines/page
+#                n = 2   48 lines/page
+#                n = 3   72 lines/page
+#                n = 4   96 lines/page
+#ESC ] n         set Wordstar mode:
+#                n = 0   normal (KDS7372) mode
+#                n = 1   Wordstar mode
+#
+#ESC b           set foreground colour screen
+#
+#ESC c n         enter self-test mode:
+#                n = 0   exit self test mode
+#                n = 1   ROM test
+#                n = 2   RAM test
+#                n = 3   NVRAM test
+#                n = 4   screen display test
+#                n = 5   main/printer port test
+#                n = 6   mouse port test
+#                n = 7   graphics board test
+#                n = 8   graphics memory test
+#                n = 9   display all 'E'
+#                n = :   display all 'H'
+#ESC d           set background colour screen
+#
+#ESC e n         program insert char (n = insert char)
+#ESC f text CR   load user status line with 'text'
+#
+#ESC g           display user status line on 25th line
+#ESC h           display system status line on 25th line
+#ESC i           tab
+#ESC j           reverse linefeed
+#ESC k n         duplex/local edit mode:
+#                n = 0   duplex edit mode
+#                n = 1   local edit mode
+#ESC l n         select virtual screen:
+#                n = 0   screen 1
+#                n = 1   screen 2
+#ESC m           save current config to NVRAM
+#ESC n p1        select display screen:
+#                p1 = 0  screen 1
+#                p1 = 1  screen 2
+#                p1 = 2  screen 3
+#                p1 = 3  screen 4
+#ESC o p1 p2     set characters/line and attribute:
+#                p1 = 0  80 chars/line
+#
+#ESC o p1 p2     set characters/line and attribute:
+#                p1 = 0  80 chars/line
+#                p1 = 1  132 chars/line
+#                p2 = 0  single width single height
+#                p2 = 1  single width double height
+#                p2 = 2  double width single height
+#                p2 = 3  double width double height
+#
+#ESC q           insert mode on
+#ESC r           edit mode on
+#ESC s           send message all
+#ESC t           erase line to null
+#ESC u           clear monitor mode (see ESC U, ESC X)
+#ESC v           autopage mode on
+#ESC w           autopage mode off
+#ESC x p1 p2 p3  define delimiter code...
+#ESC y           erase page to null
+#
+#ESC z 2 p1 p2 p3 p4   draw quadrangle:
+#                      p1 = starting row
+#                      p2 = starting column
+#                      p3 = end row
+#                      p4 = end column
+#
+#ESC { p1 p2 p3 p4     configure main port
+#                      (baud, stop bits, parity, word length)
+#
+#ESC | p1 p2 text Ctrl-Y    program function key with 'text':
+#                        p1 = function key code:
+#                             '1' - ';'  normal f1- f11
+#                             '<' - 'F'  shifted f1 - f11
+#                        p2 = program mode:
+#                             1 = FDX
+#                             2 = LOC
+#                             3 = HDX
+#                        Ctrl-Y = terminator
+#                        (use Ctrl-P to escape ^P, ^Y )
+#
+#ESC } p1 p2 p3 p4     configure printer port
+#                      (baud, stop bits, parity, word length)
+#ESC ~           send system status
+#
+# Codes and info from Peter Disdale <pete@pdlmail.demon.co.uk> 12 May 1997
+#
+# Entry is by esr going solely on above information and is UNTESTED.
+# This actually looks a lot like a Televideo 9xx.
+# This entry uses page 0 and is monochrome; I'm not brave enough to try
+# to make color work without a test terminal.  The <am> capability is a guess.
+# The initialization string sets conversation mode, blinking underline cursor,
+# full duplex, parallel attribute mode, display user status line, white
+# foreground, black background, normal highlight.
+#
+icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
+	OTbs, am, hs,
+	cols#80, lines#24,
+	bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*,
+	cnorm=\E.3, cr=^M,
+	csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c,
+	cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I,
+	hts=\E1, il1=\EE, invis=\E[1ZZ,
+	is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ,
+	rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ,
+	rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1,
+	sgr=\E[%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ,
+	sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3,
+icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
+	rs2=\Eo1, use=icl6404,
+
+#### Interactive Systems Corp
+#
+# ISC used to sell OEMed and customized hardware to support ISC UNIX.
+# ISC UNIX still exists in 1995, but ISC itself is no more; they got
+# bought out by Sun.
+#
+
+# From: <cithep!eric>  Wed Sep 16 08:06:44 1981
+# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
+# ":le=^_:" later overridden -- esr)
+intext|Interactive Systems Corporation modified owl 1200,
+	OTbs, am,
+	cols#80, it#8, lines#24, xmc#1,
+	bel=^G, cbt=^Y, clear=\014$<132>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\,
+	dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>,
+	el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=^J, ip=$<5.5*>, kbs=^H,
+	kcub1=^_, kcud1=^J, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r,
+	kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r,
+	kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<,
+	rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036\:\264\026%%,
+	smso=^V$\,,
+intext2|intextii|INTERACTIVE modified owl 1251,
+	am, bw, ul,
+	cols#80, lines#24, xmc#0,
+	bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=^M, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J, el=\E[K,
+	flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u,
+	hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
+	kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
+	kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r,
+	kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r,
+	khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
+	lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
+	lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
+	smul=\E[18 D,
+
+#### Kimtron (abm, kt)
+#
+# Kimtron seems to be history, but as March 1998 these people are still
+# offering repair services for Kimtron equipment:
+#
+#    Com/Pair Monitor Service
+#    1105 N. Cliff Ave.
+#    Sioux Falls, South Dakota 57103
+#
+#    WATS voice:  1-800/398-4946
+#    POTS   fax: +1 605/338-8709
+#    POTS voice: +1 605/338-9650
+#         Email: <compair@sd.cybernex.net>
+#  Internet/Web: <http://www.com-pair.com>
+#
+# Kimtron entries include (undocumented) codes for: enter dim mode,
+# enter bold mode, enter reverse mode, turn off all attributes.
+#
+
+# Kimtron ABM 85 added by Dual Systems
+# (abm85: removed duplicated ":kd=^J:" -- esr)
+abm85|Kimtron ABM 85,
+	OTbs, am, bw, msgr,
+	cols#80, it#8, lines#24, xmc#1,
+	cbt=\EI, clear=\E*, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\Ey, el=\Et, ht=^I,
+	if=/usr/local/share/tabset/stdcrt, il1=\EE,
+	is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek,
+	rmul=\Em, smir=\EQ, smso=\Ej, smul=\El,
+# Kimtron ABM 85H added by Dual Systems.
+# Some notes about the abm85h entries:
+# 1) there are several firmware revs of 85H in the world. Use abm85h-old for
+#    firmware revs prior to SP51
+# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the
+#    abm85e entry if it is in tvi920 emulation mode. They are incompatible
+#    in some places and NOT software settable i.e., <is2> can't fix it)
+# 3) In 85h mode, the arrow keys and special functions transmit when
+#    the terminal is in dup-edit, and work only locally in local-edit.
+#    Vi won't swallow `del char' for instance, but <smcup> turns on
+#    dup-edit anyway so that the arrow keys will work right. If the
+#    arrow keys don't work the way you like, change <smcup>, <rmcup>, and
+#    <is2>.  Note that 920E mode does not have software commands to toggle
+#    between dup and local edit, so you get whatever was set last on the
+#    terminal.
+# 4) <flash> attribute is nice, but seems too slow to work correctly
+#    (\Eb<pad>\Ed)
+# 5) Make sure `hidden' attributes are selected. If `embedded' attributes
+#    are selected, the <xmc@> entry should be removed.
+# 6) auto new-line should be on (selectable from setup mode only)
+#
+# From: Erik Fair <fair@ucbarpa>  Sun Oct 27 07:21:05 1985
+abm85h|Kimtron ABM 85H native mode,
+	hs,
+	xmc@,
+	bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@,
+	fsl=^M, invis@,
+	is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El,
+	kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr,
+	use=abm85,
+abm85e|Kimtron ABM 85H in 920E mode,
+	xmc@,
+	bel=^G, dim=\E), flash@,
+	is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em,
+	rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
+abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev.,
+	xmc@,
+	bel=^G, dim=\E),
+	is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF,
+	rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
+# From: <malman@bbn-vax.arpa>
+# (kt7: removed obsolete :ma=^V^J^L :" -- esr)
+kt7|kimtron model kt-7,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
+	if=/usr/local/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E",
+	kbs=^H, kcbt=\EI, kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L,
+	kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r,
+	kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr,
+# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the
+# other kt7 entry and the adjacent key capabilities).  Removed EE which is
+# identical to :mh:.  Removed :ES=\EGD: which is some kind of highlight
+# but we can't figure out what.
+kt7ix|kimtron model kt-7 or 70 in IX mode,
+	am, bw,
+	cols#80, it#8, lines#25,
+	acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI,
+	civis=\E.0, clear=\E*, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V,
+	cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=^M,
+	home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=^J,
+	is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER,
+	ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ,
+	nel=^M^J, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
+	sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,
+
+#### Microdata/MDIS
+#
+# This was a line of terminals made by McDonnell-Douglas Information Systems.
+# These entries come direct from MDIS documentation.  I have edited them only
+# to move primary names of the form p[0-9] * to aliases, and to comment out
+# <rmacs>/<smacs> in a couple of entries without <acsc> strings.  I have
+# also removed the change history; the last version indicates this is
+# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989).
+#
+
+# McDonnell Information Systems Terminal Family History
+# =========================================
+#
+# Prism-1, Prism-2 and P99:
+#       Ancient Microdata and CMC terminals, vaguely like Adds Regent 25.
+#
+# Prism-4 and Prism-5:
+#       Slightly less ancient range of Microdata terminals. Follow-on from
+#       Prism-2, but with many enhancements. P5 has eight display pages.
+#
+# Prism-6:
+#       A special terminal for use with library systems, primarily in Germany.
+#       Limited numbers. Similar functionality to P5 (except attributes?).
+#
+# Prism-7, Prism-8 and Prism-9:
+#       More recent range of MDIS terminals, in which P7 and P8
+#       replace the P4 & P5, with added functionality, and P9 is the flagship.
+#       The P9 has two emulation modes - P8 and ANSI - and includes a
+#       large number of the DEC VT220 control sequences. Both
+#       P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats.
+#
+# Prism-12 and Prism-14:
+#       Latest range, functionally very similar to the P9.  The P14 has a
+#       black-on-white overscanning screen.
+#
+# The terminfo definitions given here are:
+#
+# p2      - Prism-2 (or Prism-1 or P99).
+#
+# p4      - Prism-4 (and older P7s & P8s).
+# p5      - Prism-5 (or Prism-6).
+#
+# p7      - Prism-7.
+# p8      - Prism-8 (in national or multinational mode).
+# p8-w    - 132 column version of p8.
+# p9      - Prism-9 in ANSI mode.
+# p9-w    - 132 column version of p9.
+# p9-8    - Prism-9 in Prism-8 emulation mode.
+# p9-8-w  - As p9-8, but with 132 columns.
+#
+# p12     - Prism-12 in ANSI mode.
+# p12-w   - 132 column version of p12.
+# p12-m   - Prism-12 in MDC emulation mode.
+# p12-m-w - As p12-m, but with 132 columns.
+# p14     - Prism-14 in ANSI mode.
+# p14-w   - 132 column version of p14.
+# p14-m   - Prism-14 in MDC emulation mode.
+# p14-m-w - As p14-m, but with 132 columns.
+#
+# p2: Prism-2
+# -----------
+#
+# Includes Prism-1 and basic P99 without SP or MP loaded.
+# The simplest form of Prism-type terminal.
+# Basic cursor movement and clearing operations only.
+# No video attributes.
+# Notes:
+#  Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
+#  value up, followed by backspace.
+#
+prism2|MDC Prism-2,
+	am, bw, msgr,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+	cuu1=^Z, ed=\EJ, el=\EK, home=^A,
+	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+	ind=^J, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c,
+
+# p4: Prism-4
+# -----------
+#
+# Includes early versions of P7 & P8.
+# Basic family definition for most Prisms (except P2 and P9 ANSI).
+# Notes:
+#  Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
+#  value up, followed by backspace.
+#  Cursor key definitions removed because they interfere with vi and csh keys.
+#
+prism4|p4|P4|MDC Prism-4,
+	am, bw, hs, mc5i, msgr,
+	cols#80, lines#24, wsl#72, xmc#1,
+	bel=^G, blink=^CB, civis=^]\344, clear=\014$<20>,
+	cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+	cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK,
+	fsl=^]\345, home=^A,
+	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+	ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
+	rev=^CD, rmso=^C\s, rmul=^C\s,
+	sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
+	sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343,
+	vpa=\013%p1%{32}%+%c,
+
+# p5: Prism-5
+# -----------
+#
+# Same definition as p4. Includes Prism-6 (not tested!).
+# Does not use any multi-page features.
+#
+prism5|p5|P5|MDC Prism-5,
+	use=p4,
+
+# p7: Prism-7
+# -----------
+#
+# Similar definition to p4. Uses ANSI cursor motion to avoid network problems.
+# Notes:
+#  Use p4 for very early models of P7.
+#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
+#
+prism7|p7|P7|MDC Prism-7,
+	cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4,
+
+# p8: Prism-8
+# -----------
+#
+# Similar definition to p7. Uses ANSI cursor motion to avoid network problems.
+# Supports national and multinational character sets.
+# Notes:
+#  Alternate char set operations only work in multinational mode.
+#  Use p4 for very early models of P8.
+#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
+# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
+#
+prism8|p8|P8|MDC Prism-8,
+	cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h,
+	vpa=\E[%i%p1%dd, use=p4,
+
+# p8-w: Prism-8 in 132 column mode
+# --------------------------------
+#
+# 'Wide' version of p8.
+# Notes:
+#  Rev-index removed; can't send nulls to terminal in 8-bit modes.
+#
+prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
+	cols#132,
+	is2=\E[<12h\E[<14h, use=p8,
+
+# p9: Prism-9 in ANSI mode
+# -------------------------
+#
+# The "flagship" model of this generation of terminals.
+# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones.
+# Notes:
+#  Tabs only reset by "reset". Otherwise assumes default (8 cols).
+#  Fixes to deal with terminal firmware bugs:
+#  . 'ri' uses insert-line since rev index doesn't always
+#  . 'sgr0' has extra '0' since esc[m fails
+#  . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25
+#  Not covered in the current definition:
+#  . Labels
+#  . Programming Fn keys
+#  . Graphic characters (defaults correctly to vt100)
+#  . Padding values (sets xon)
+# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
+#
+prism9|p9|P9|MDC Prism-9 in ANSII mode,
+	am, bw, hs, mc5i, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3, wsl#72,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
+	clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX,
+	ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`,
+	ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
+	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+	kf18=\E[32~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	khome=\E[H, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J,
+	prot=\E[32%{, rc=\E[%z, rep=\E[%p2%db%p1%c, rev=\E[7m,
+	ri=\E[L, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+	rs2=\E[&p\E[<12l\E F\E[3g\E[9;17;25;33;41;49;57;65;73 N,
+	sc=\E[%y,
+	sgr=\E[%{0}%?%p1%p3%|%t%{7}%+%;%?%p2%t%{2}%+%;%?%p4%t%{5}%+%;%?%p6%t%{1}%+%;m%?%p8%t\E[%{32}%+%d%%{%;%?%p9%t\016%e\017%;,
+	sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+	tbc=\E[2g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
+
+# p9-w: Prism-9 in 132 column mode
+# --------------------------------
+#
+# 'Wide' version of p9.
+#
+prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
+	cols#132,
+	is2=\E[&p\E[<12l\E F\E[<14h,
+	rs2=\E[&p\E[<12l\E F\E[<14h, use=p9,
+
+# p9-8: Prism-9 in P8 mode
+# ------------------------
+#
+# P9 terminal in P8 emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8,
+
+# p9-8-w: Prism-9 in P8 and 132 column modes
+# ------------------------------------------
+#
+# P9 terminal in P8 emulation mode and 132 column mode.
+#
+prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w,
+
+# p12: Prism-12 in ANSI mode
+# ---------------------------
+#
+# See p9 definition.
+#
+prism12|p12|P12|MDC Prism-12 in ANSI mode,
+	use=p9,
+
+# p12-w: Prism-12 in 132 column mode
+# ----------------------------------
+#
+# 'Wide' version of p12.
+#
+prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode,
+	use=p9-w,
+
+# p12-m: Prism-12 in MDC emulation mode
+# -------------------------------------
+#
+# P12 terminal in MDC emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode,
+	use=p9-8,
+
+# p12-m-w: Prism-12 in MDC emulation and 132 column modes
+# -------------------------------------------------------
+#
+# P12 terminal in MDC emulation mode and 132 column mode.
+#
+prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode,
+	use=p9-8-w,
+
+# p14: Prism-14 in ANSII mode
+# ---------------------------
+#
+# See p9 definition.
+#
+prism14|p14|P14|MDC Prism-14 in ANSII mode,
+	use=p9,
+
+# p14-w: Prism-14 in 132 column mode
+# ----------------------------------
+#
+# 'Wide' version of p14.
+#
+prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode,
+	use=p9-w,
+
+# p14-m: Prism-14 in MDC emulation mode
+# -------------------------------------
+#
+# P14 terminal in MDC emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode,
+	use=p9-8,
+
+# p14-m-w: Prism-14 in MDC emulation and 132 column modes
+# -------------------------------------------------------
+#
+# P14 terminal in MDC emulation mode and 132 column mode.
+#
+prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode,
+	use=p9-8-w,
+
+# End of McDonnell Information Systems Prism definitions
+
+# These things were popular in the Pick database community at one time
+# From: George Land <georgeland@aol.com> 24 Sep 1996
+p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
+	am, bw, hs, mir,
+	cols#80, lines#24, ma#1, wsl#78, xmc#1,
+	bel=^G, blink=^CB, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P,
+	ed=\EJ, el=\EK, home=^A, ind=^J, invis=^CH, kbs=^H, kcub1=^U,
+	kcud1=^J, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ,
+	kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r,
+	kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\r, kf2=^AA\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^A, lf1=F1, lf10=F10, lf2=F2,
+	lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=^J^M,
+	pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE,
+	smul=^C0,
+
+#### Microterm (act, mime)
+#
+# The mime1 entries refer to the Microterm Mime I or Mime II.
+# The default mime is assumed to be in enhanced act iv mode.
+#
+
+# New "safe" cursor movement (5/87) from <reuss@umd5.umd.edu>.  Prevents
+# freakout with out-of-range args on Sytek multiplexors.  No <smso=^N> and
+# <rmso=^N> since  it gets confused and it's too dim anyway.  No <ich1>
+# since Sytek insists ^S means xoff.
+# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
+act4|microterm|microterm act iv,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X,
+	cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c,
+	cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>,
+	ed=\037$<2.2*/>, el=\036$<.1*/>, home=^],
+	il1=\001<2.3*/>, ind=^J, kcub1=^H, kcud1=^K, kcuf1=^X,
+	kcuu1=^Z,
+# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
+# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
+# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
+act5|microterm5|microterm act v,
+	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
+	use=act4,
+# Mimes using brightness for standout.  Half bright is really dim unless
+# you turn up the brightness so far that lines show up on the screen.
+mime-fb|full bright mime1,
+	is2=^S\E, rmso=^S, smso=^Y, use=mime,
+mime-hb|half bright mime1,
+	is2=^Y\E, rmso=^Y, smso=^S, use=mime,
+# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
+# the more plausible ":do=^J:" -- esr)
+# uc was at one time disabled to get around a curses bug, be wary of it
+mime|mime1|mime2|mimei|mimeii|microterm mime1,
+	OTbs, am,
+	cols#80, it#8, lines#24, vt#9,
+	bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X,
+	cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c,
+	cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>,
+	il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K,
+	kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U,
+# These termcaps (for mime2a) put the terminal in low intensity mode
+# since high intensity mode is so obnoxious.
+mime2a-s|microterm mime2a (emulating an enhanced soroc iq120),
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED,
+	dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^,
+	il1=\001$<20*>, ind=^J, ip=$<2>, is2=\E), kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7,
+	smir=\EE, smso=\E\:, smul=\E6,
+# This is the preferred mode (but ^X can't be used as a kill character)
+mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52),
+	OTbs,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N,
+	dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I,
+	il1=\001$<20*>, ind=^J, ip=$<2>, is2=^Y, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
+	rmul=\E5, smir=^O, smso=\E8, smul=\E4,
+# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
+mime3a|mime1 emulating 3a,
+	am@,
+	kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
+mime3ax|mime-3ax|mime1 emulating enhanced 3a,
+	it#8,
+	dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
+	use=mime3a,
+# Wed Mar  9 18:53:21 1983
+# We run our terminals at 2400 baud, so there might be some timing problems at
+# higher speeds. The major improvements in this model are the terminal now
+# scrolls down and insert mode works without redrawing the rest of the line
+# to the right of the cursor. This is done with a bit of a kludge using the
+# exit graphics mode to get out of insert, but it does not appear to hurt
+# anything when using vi at least. If you have some users using act4s with
+# programs that use curses and graphics mode this could be a problem.
+mime314|mm314|mime 314,
+	am,
+	cols#80, lines#24,
+	clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z,
+	dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H,
+	kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S,
+# Microterm mime 340 from University of Wisconsin
+mm340|mime340|mime 340,
+	cols#80, lines#24,
+	clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>,
+	el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=^J, is2=\E\,,
+	kbs=^H, kcub1=^H, kcud1=^J, kcuu1=^K, nel=^M^J,
+# This came from University of Wisconsin marked "astro termcap for jooss".
+# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:";
+# also added <rmam>/<smam> based  on the init string -- esr)
+mt4520-rv|micro-term 4520 reverse video,
+	am, hs, msgr, xenl, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
+	fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H\E[J,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
+	ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/local/share/tabset/vt100,
+	ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
+	rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
+	sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+	tbc=\E[g, tsl=\E[25;1H,
+
+# Fri Aug  5 08:11:57 1983
+# This entry works for the ergo 4000 with the following setups:
+# ansi,wraparound,newline disabled, xon/xoff disabled in both
+# setup a & c.
+#
+# WARNING!!! There are multiple versions of ERGO 4000 microcode
+# Be advised that very early versions DO NOT WORK RIGHT !!
+# Microterm does have a ROM exchange program- use it or lose big
+# (ergo400: added <rmam>/<smam> based on the init string -- esr)
+ergo4000|microterm ergo 4000,
+	da, db, msgr,
+	cols#80, lines#66,
+	bel=^G, clear=\E[H\E[2J$<80>, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	dch1=\E[1P$<80>, dl1=\E[1M$<5*>, ed=\E[0J$<15>,
+	el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>,
+	is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
+	lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
+	smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
+	smso=\E[7m$<20>,
+
+#### NCR
+#
+# NCR's terminal group was merged with AT&T's when AT&T bought the company.
+# For what happened to that group, see the ADDS section.
+#
+# There is an NCR4103 terminal that's just a re-badged Wyse-50.
+#
+
+# The following vendor-supplied termcaps were captured from the Boundless
+# Technologies site, 8 March 1998.  I removed all-upper-case names that were
+# identical, except for case, to lower-case ones.  I also uncommented the acsc
+# capabilities.X
+#
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
+	colors#8, pairs#64,
+	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	use=ncr260vt300an,
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
+	colors#8, pairs#64,
+	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	use=ncr260vt300wan,
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
+	colors#8, pairs#64,
+	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	use=ncr260vt300pp,
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# DEC vt200/300 with color capabilities added.
+ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode,
+	colors#8, pairs#64,
+	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+	use=ncr260vt300wpp,
+# This definition for ViewPoint supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+ncr260vppp|NCR 2900_260 viewpoint,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	cols#80, lines#24, nlab#32, xmc#1,
+	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+	cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5,
+	cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
+	dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>,
+	el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, hts=\E1,
+	il1=\EM$<2>, ind=\n$<2>, invis=\EG1,
+	is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+	kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
+	kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F,
+	kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r,
+	kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r,
+	kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r,
+	kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r,
+	kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r,
+	kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r,
+	kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
+	kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ,
+	kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
+	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
+	nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
+	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+	rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+	sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
+	smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
+ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
+	cols#132,
+	cup=\Ea%i%p1%dR%p2%dC$<30>,
+	is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+	rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+	use=ncr260vppp,
+ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
+	am, hs, mir, msgr, xenl, xon,
+	cols#80, lines#24, nlab#32,
+	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
+	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+	ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>,
+	fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I,
+	hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
+	il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
+	invis=\E[8m,
+	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
+	knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>,
+	rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
+	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+	sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad,
+ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	use=ncr260vt100an,
+ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
+	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+	kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
+	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
+	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	smkx=\E=, use=ncr260vt100an,
+ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+  kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	use=ncr260vt100pp,
+ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
+	am, hs, mir, msgr, xenl, xon,
+	cols#80, lines#24, nlab#32,
+	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+	csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
+	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
+	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
+	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
+	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, kf22=\E[32~,
+	kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, kf26=\E[1~,
+	kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~,
+	kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~,
+	kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
+	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
+	ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
+	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
+	use=vt220+keypad,
+ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
+	use=ncr260vt200an,
+ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
+	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
+	use=ncr260vt200an,
+ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+  kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	use=ncr260vt200pp,
+ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
+	am, hs, mir, msgr, xenl, xon,
+	cols#80, lines#24, nlab#32,
+	acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+	csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+	cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+	cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+	cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+	cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+	dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+	ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
+	fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
+	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
+	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
+	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~,
+	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+	kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~,
+	kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~,
+	kf28=\E[3~, kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~,
+	kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~,
+	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+	khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
+	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
+	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+	rmul=\E[24m,
+	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
+	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
+	use=vt220+keypad,
+ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
+	use=ncr260vt300an,
+ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
+	ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+	kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
+	use=ncr260vt300an,
+NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+  kybd,
+	cols#132,
+	cup=\E[%i%p1%d;%p2%dH$<30>,
+	is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+	use=ncr260vt300pp,
+# This terminfo file contains color capabilities for the Wyse325 emulation of
+# the NCR 2900/260C color terminal.  Because of the structure of the command
+# (escape sequence) used to set color attributes, one of the fore/background
+# colors must be preset to a given value. I have set the background color to
+# black.  The user can change this setup by altering the last section of the
+# 'setf' definition.  The escape sequence to set color attributes is
+#		ESC d y <foreground_color> <background_color> 1
+# In addition, the background color can be changed through the desk accessories.
+# The capablitiy 'op' sets colors to green on black (default combination).
+#
+# NOTE:  The NCR Unix System Administrator's Shell will not function properly
+# 	    if the 'pairs' capability is defined. Un-Comment the 'pairs'
+#	    capability and recompile if you wish to have it included.
+#
+ncr260wy325pp|NCR 2900_260 wyse 325,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	colors#16, cols#80, lines#24, ncv#33, nlab#32,
+	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+	cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M,
+	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
+	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
+	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I,
+	hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
+	kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
+	kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
+	kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
+	kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
+	kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r,
+	kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r,
+	kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ,
+	kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
+	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
+	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
+	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	setb=\s,
+	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
+	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
+	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
+	tsl=\EF,
+ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
+	cols#132,
+	cup=\Ea%i%p1%dR%p2%dC$<30>,
+	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	use=ncr260wy325pp,
+# This definition for Wyse 350 supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+# In addition, color capabilities have been added to this file.  The drawback,
+# however, is that the background color has to be black.  The foreground colors
+# are numbered 0 through 15.
+#
+# NOTE:  The NCR Unix System Administrator's Shell does not function properly
+# 	    with the 'pairs' capability defined as below.  If you wish to
+#	    have it included, Un-comment it and recompile (using 'tic').
+#
+ncr260wy350pp|NCR 2900_260 wyse 350,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1,
+	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
+	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
+	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I,
+	hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
+	kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
+	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
+	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
+	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
+	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
+	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
+	mc0=\EP$<10>, mc4=^T, mc5=^R,
+	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
+	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
+	rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	setb=\s,
+	setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
+	sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
+	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
+	tsl=\EF,
+ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode,
+	cols#132,
+	cup=\Ea%i%p1%dR%p2%dC$<30>,
+	is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+	rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+	use=ncr260wy350pp,
+# This definition for Wyse 50+ supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+# (ncr260wy50+pp: originally contained commented-out
+# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
+ncr260wy50+pp|NCR 2900_260 wyse 50+,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	cols#80, lines#24, nlab#32, xmc#1,
+	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
+	cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
+	cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
+	ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>,
+	ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
+	invis=\EG1,
+	is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
+	kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+	kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
+	kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
+	kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
+	kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
+	kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
+	khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
+	mc0=\EP$<10>, mc4=^T, mc5=^R,
+	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
+	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
+	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
+	smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
+ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode,
+	cols#132,
+	cup=\Ea%i%p1%dR%p2%dC$<30>,
+	is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+	rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+	use=ncr260wy50+pp,
+ncr260wy60pp|NCR 2900_260 wyse 60,
+	am, bw, hs, km, mc5i, mir, msgr, xon,
+	cols#80, lines#24, nlab#32,
+	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+	cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
+	cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
+	cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
+	ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>,
+	ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>,
+	invis=\EG1,
+	is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
+	kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK,
+	kcbt=\EI$<15>, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+	kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+	kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
+	kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r,
+	kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r,
+	kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
+	mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
+	nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
+	rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
+	smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
+	tsl=\EF,
+ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode,
+	cols#132,
+	cup=\Ea%i%p1%dR%p2%dC$<30>,
+	is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+	use=ncr260wy60pp,
+ncr160vppp|NCR 2900_160 viewpoint,
+	use=ncr260vppp,
+ncr160vpwpp|NCR 2900_160 viewpoint wide mode,
+	use=ncr260vpwpp,
+ncr160vt100an|NCR 2900_160 vt100 with ansi kybd,
+	use=ncr260vt100an,
+ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd,
+	use=ncr260vt100pp,
+ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd,
+	use=ncr260vt100wan,
+ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+  kybd,
+	use=ncr260vt100wpp,
+ncr160vt200an|NCR 2900_160 vt200 with ansi kybd,
+	use=ncr260vt200an,
+ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd,
+	use=ncr260vt200pp,
+ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd,
+	use=ncr260vt200wan,
+ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+  kybd,
+	use=ncr260vt200wpp,
+ncr160vt300an|NCR 2900_160 vt300 with ansi kybd,
+	use=ncr260vt300an,
+ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd,
+	use=ncr260vt300pp,
+ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd,
+	use=ncr260vt300wan,
+ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+  kybd,
+	use=ncr260vt300wpp,
+ncr160wy50+pp|NCR 2900_160 wyse 50+,
+	use=ncr260wy50+pp,
+ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode,
+	use=ncr260wy50+wpp,
+ncr160wy60pp|NCR 2900_160 wyse 60,
+	use=ncr260wy60pp,
+ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode,
+	use=ncr260wy60wpp,
+ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
+	am, hs, mc5i, mir, msgr, xon,
+	cols#80, it#8, lines#24, nlab#32,
+	acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
+	bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
+	clear=\E[2J\E[1;1H$<300>, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
+	cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
+	cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
+	cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
+	dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
+	ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
+	enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
+	ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
+	ind=\ED,
+	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
+	kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
+	rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
+	rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
+	rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+	sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>,
+	sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
+	smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
+	tsl=\E[>+1$<70>,
+ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
+	cols#132,
+	is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
+	rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+	use=ncrvt100an,
+#
+# Vendor-supplied NCR termcaps end here
+
+# NCR7900 DIP switches:
+#
+# Switch A:
+# 1-4 - Baud Rate
+# 5   - Parity (Odd/Even)
+# 6   - Don't Send or Do Send Spaces
+# 7   - Parity Enable
+# 8   - Stop Bits (One/Two)
+#
+# Switch B:
+# 1   - Upper/Lower Shift
+# 2   - Typewriter Shift
+# 3   - Half Duplex / Full Duplex
+# 4   - Light/Dark Background
+# 5-6 - Carriage Return Without / With Line Feed
+# 7   - Extended Mode
+# 8   - Suppress Keyboard Display
+#
+# Switch C:
+# 1   - End of line entry disabled/enabled
+# 2   - Conversational mode / (Local?) Mode
+# 3   - Control characters displayed / not displayed
+# 4   - (2-wire?) / 4-wire communications
+# 5   - RTS on and off for each character
+# 6   - (50Hz?) / 60 Hz
+# 7   - Exit after level zero diagnostics
+# 8   - RS-232 interface
+#
+# Switch D:
+# 1   - Reverse Channel (yes / no)
+# 2   - Manual answer (no / yes)
+# 3-4 - Cursor appearance
+# 5   - Communication Rate
+# 6   - Enable / Disable EXT turnoff
+# 7   - Enable / Disable CR turnoff
+# 8   - Enable / Disable backspace
+#
+# Since each attribute parameter is 0 or 1, we shift each attribute (standout,
+# reverse, blink, dim, and underline) the appropriate number of bits (by
+# multiplying the 0 or 1 by a correct factor to shift) so the bias character,
+# '@' is (effectively) "or"ed with each attribute to generate the proper third
+# character in the <ESC>0 sequence.  The <sgr> string implements the following
+# equation:
+#
+# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17))    =>
+# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17))
+#
+#	Where:  P1 <==> Standout attribute parameter
+#		P2 <==> Underline attribute parameter
+#		P3 <==> Reverse attribute parameter
+#		P4 <==> Blink attribute parameter
+#		P5 <==> Dim attribute parameter
+# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
+ncr7900i|ncr7900|ncr 7900 model 1,
+	am, bw, ul,
+	cols#80, lines#24, xmc#1,
+	bel=^G, blink=\E0B, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=^J,
+	is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, kcuf1=^F,
+	kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@,
+	rmul=\E0@,
+	sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c,
+	sgr0=\E0@, smso=\E0Q, smul=\E0`,
+ncr7900iv|ncr 7900 model 4,
+	am, bw, eslok, hs,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
+	cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
+	fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
+	kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
+	khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J,
+	tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
+# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
+#	   The user can enter a CTRL-B to get out of this locked state.
+# In <hpa>, we want to output the character given by the formula:
+#		((col / 10) * 16) + (col % 10)		where "col" is "p1"
+ncr7901|ncr 7901 model,
+	am, bw, ul,
+	cols#80, lines#24,
+	bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M,
+	cub1=^H, cud1=^J, cuf1=^F,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A,
+	ed=\Ek, el=\EK,
+	hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=^J,
+	is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z,
+	khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O,
+	sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016,
+	sgr0=^O, smso=\E0Q\016, smul=\E0`\016,
+	vpa=\013%p1%{64}%+%c,
+
+# Newbury Data Recording Limited (Newbury Data)
+#
+# Have been manufacturing and reselling  various peripherals for a long time
+# They don't make terminals anymore, but are still in business (in 2007).
+# Their e-mail address is at ndsales@newburydata.co.uk
+# and their post address is:
+#
+# Newbury Data Recording Ltd,
+# Premier Park, Road One,
+# Winsford, Cheshire, CW7 3PT
+#
+# Their technical support is still good, they sent me for free a printed copy
+# of the 9500 user manual and I got it just 1 week after I first contacted them
+# (in 2005)!
+
+# NDR 9500
+# Manufactured in the early/mid eighties, behaves almost the same as a
+# Televideo 950.  Take a 950, change its cabinet for a more 80s-ish one (but
+# keep the same keyboard layout), add an optional 25-line mode, replace the DIP
+# switches with a menu and remove the "lock line" feature (ESC !  1 and ESC ! 
+# 2), here is the NDR 9500.  Even the line-lock, albeit disabled, is
+# recognized:  if you type in "ESC !", the next (third) character is not
+# echoed, showing that the terminal was actually waiting for a parameter!
+ndr9500|nd9500|Newbury Data 9500,
+	am, bw, hs, mc5i, mir, msgr, ul, xon,
+	cols#80, lines#24, wsl#79,
+	acsc=qKnImAjDwNuLtMvOlBkCxJ, bel=^G, cbt=\EI, civis=\E.0,
+	clear=\E;, cnorm=\E.1, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET,
+	flash=\Eb$<50/>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1,
+	ich1=\EQ, il1=\EE, ind=^J, is2=\Ew\E'\EDF\El\Er\EO,
+	kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z,
+	kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER,
+	ked=\EY, kel=\ET, kent=^M, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+	kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r,
+	kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r,
+	kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, kprt=\EP, mc4=\Ea, mc5=\E`, nel=^_,
+	pfloc=\E|%{48}%p1%+%c2%p2\031,
+	pfx=\E|%{48}%p1%+%c1%p2\031, prot=\E), ri=\Ej,
+	rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N,
+	sgr=\E%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;,
+	sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O,
+	tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H,
+
+ndr9500-nl|NDR 9500 with no status line,
+	hs@,
+	wsl@,
+	dsl@, fsl@, tsl@, use=ndr9500,
+
+ndr9500-25|NDR 9500 with 25th line enabled,
+	lines#25, use=ndr9500,
+
+ndr9500-25-nl|NDR 9500 with 25 lines and no status line,
+	lines#25, use=ndr9500-nl,
+
+ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink),
+	msgr@,
+	xmc#1,
+	blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
+	sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
+	sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500,
+
+ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
+	lines#25, use=ndr9500-mc,
+
+ndr9500-mc-nl|NDR 9500 with magic cookies and no status line,
+	hs@,
+	wsl@,
+	dsl@, fsl@, tsl@, use=ndr9500-mc,
+
+ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line,
+	lines#25, use=ndr9500-mc-nl,
+
+#### Perkin-Elmer (Owl)
+#
+# These are official terminfo entries from within Perkin-Elmer.
+#
+
+bantam|pe550|pe6100|perkin elmer 550,
+	OTbs,
+	cols#80, lines#24,
+	bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+	el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA,
+fox|pe1100|perkin elmer 1100,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+	ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003,
+	home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3,
+owl|pe1200|perkin elmer 1200,
+	OTbs, am, in,
+	cols#80, lines#24,
+	bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+	dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>,
+	el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH,
+	hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>,
+	kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD,
+	kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA,
+	rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3,
+pe1251|pe6300|pe6312|perkin elmer 1251,
+	am,
+	cols#80, it#8, lines#24, pb#300, vt#8, xmc#1,
+	bel=^G, clear=\EK$<332>, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+	ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J,
+	kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE,
+	kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3,
+# (pe7000m: this had
+# 	rmul=\E!\0, smul=\E!\040,
+# which is probably wrong, it collides with kf0
+pe7000m|perkin elmer 7000 series monochrome monitor,
+	am,
+	cols#80, lines#24,
+	bel=^G, cbt=\E!Y, clear=\EK, cr=^M, cub1=\ED, cud1=\EB,
+	cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+	ed=\EJ, el=\EI, home=\EH, ind=^J,
+	is1=\E!\0\EW  7o\Egf\ES7\s, kbs=^H, kcub1=\E!V,
+	kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A,
+	kf10=\E!^J, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E,
+	kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S,
+	ll=\ES7\s, ri=\ER,
+pe7000c|perkin elmer 7000 series colour monitor,
+	is1=\E!\0\EW  7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0,
+	rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m,
+
+#### Sperry Univac
+#
+# Sperry Univac has merged with Burroughs to form Unisys.
+#
+
+# This entry is for the Sperry UTS30 terminal running the TTY
+# utility under control of CP/M Plus 1R1. The functionality
+# provided is comparable to the DEC vt100.
+# (uts30: I added <rmam>/<smam> based on the init string -- esr)
+uts30|sperry uts30 with cp/m@1R1,
+	am, bw, hs,
+	cols#80, lines#24, wsl#40,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L,
+	cnorm=\ES, cr=^M, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB,
+	cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EM,
+	dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=^M, home=\E[H,
+	ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN,
+	ind=^J, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H,
+	rc=\EX, rev=\E[7m, rf=/usr/local/share/tabset/vt100, ri=\EI,
+	rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m,
+	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
+	smul=\E[4m, tsl=\E], uc=\EPB,
+
+#### Tandem
+#
+# Tandem builds these things for use with its line of fault-tolerant
+# transaction-processing computers.  They aren't generally available
+# on the merchant market, and so are fairly uncommon.
+#
+
+tandem6510|adm3a repackaged by Tandem,
+	use=adm3a,
+
+# A funny series of terminal that TANDEM uses.  The actual model numbers
+# have a fourth digit after 653 that designates minor variants.  These are
+# natively block-mode and rather ugly, but they have a character mode which
+# this doubtless(?) exploits.  There is a 6520 that is slightly dumber.
+# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
+# removed <if=/usr/local/share/tabset/tandem653>, no such file -- esr)
+tandem653|t653x|Tandem 653x multipage terminal,
+	OTbs, am, da, db, hs,
+	cols#80, lines#24, wsl#64, xmc#1,
+	clear=\EI, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r,
+	ed=\EJ, el=\EK, fsl=^M, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s,
+	rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo,
+
+#### Tandy/Radio Shack
+#
+# Tandy has a line of VDTs distinct from its microcomputers.
+#
+
+dmterm|deskmate terminal,
+	am, bw,
+	cols#80, lines#24,
+	bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, cub1=^H,
+	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I,
+	ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
+	kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
+	khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
+	lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
+	use=adm+sgr,
+dt100|dt-100|Tandy DT-100 terminal,
+	xon,
+	cols#80, lines#24, xmc#1,
+	acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
+	il1=\E[L, ind=^J, is2=\E[?3l\E)0\E(B, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[?3i,
+	kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, kf4=\E[M, kf5=\E[17~,
+	kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, khome=\E[H,
+	knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5,
+	lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
+dt100w|dt-100w|Tandy DT-100 terminal (wide mode),
+	cols#132, use=dt100,
+dt110|Tandy DT-110 emulating ansi,
+	xon,
+	cols#80, lines#24,
+	acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l,
+	clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[0B, cuf1=\E[C,
+	cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[0A, dch1=\E[0P,
+	dl1=\E[0M, ed=\E[0J, el=\E[0K, enacs=\E(B\E)0, home=\E[H,
+	ht=^I, ich1=\E[0@, il1=\E[0L, ind=^J, is2=\E[?3l\E)0\E(B,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[K,
+	kf1=\E[1~, kf10=\E[10~, kf2=\E[2~, kf3=\E[3~, kf4=\E[4~,
+	kf5=\E[5~, kf6=\E[6~, kf7=\E[7~, kf8=\E[8~, kf9=\E[9~,
+	khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, lf0=f1,
+	lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf8=f9,
+	lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smacs=^N, smso=\E[7m, smul=\E[4m,
+pt210|TRS-80 PT-210 printing terminal,
+	hc, os,
+	cols#80,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+
+#### Tektronix (tek)
+#
+# Tektronix tubes are graphics terminals.  Most of them use modified
+# oscilloscope technology incorporating a long-persistence green phosphor,
+# and support vector graphics on a main screen with an attached "dialogue
+# area" for interactive text.
+#
+
+tek|tek4012|tektronix 4012,
+	OTbs, os,
+	cols#75, lines#35,
+	bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J,
+	ff=\014$<1000>, is2=\E^O,
+# (tek4013: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
+tek4013|tektronix 4013,
+	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012,
+tek4014|tektronix 4014,
+	cols#81, lines#38,
+	is2=\E\017\E9, use=tek4012,
+# (tek4015: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
+tek4015|tektronix 4015,
+	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014,
+tek4014-sm|tektronix 4014 in small font,
+	cols#121, lines#58,
+	is2=\E\017\E\:, use=tek4014,
+# (tek4015-sm: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
+tek4015-sm|tektronix 4015 in small font,
+	acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm,
+# Tektronix 4023 from Andrew Klossner <orca!andrew.tektronix@csnet-relay>
+#
+# You need to have "stty nl2" in effect.  Some versions of tset(1) know
+# how to set it for you.
+#
+# It's got the Magic Cookie problem around stand-out mode.  If you can't
+# live with Magic Cookie, remove the :so: and :se: fields and do without
+# reverse video.  If you like reverse video stand-out mode but don't want
+# it to flash, change the letter 'H' to 'P' in the :so: field.
+tek4023|tektronix 4023,
+	OTbs, am,
+	OTdN#4, cols#80, lines#24, vt#4, xmc#1,
+	OTnl=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H,
+	rmso=^_@, smso=^_P,
+# It is recommended that you run the 4025 at 4800 baud or less;
+# various bugs in the terminal appear at 9600.  It wedges at the
+# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
+# on keyboard don't work.  You have to hit BREAK twice to get
+# one break at any speed - this is a documented feature.
+# Can't use cursor motion because it's memory relative, and
+# because it only works in the workspace, not the monitor.
+# Same for home. Likewise, standout only works in the workspace.
+#
+# <el> was commented out since vi and rogue seem to work better
+# simulating it with lots of spaces!
+#
+# <il1> and <il> had 145ms of padding, but that slowed down vi's ^U
+# and didn't seem necessary.
+#
+tek4024|tek4025|tek4027|tektronix 4024/4025/4027,
+	OTbs, am, da, db,
+	cols#80, it#8, lines#34, lm#0,
+	bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=^M,
+	cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
+	cud1=^F^J, cuf=\037rig %p1%d\r, cuf1=\037rig\r,
+	cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r,
+	dl=\037dli %p1%d\r\006, dl1=\037dli\r\006,
+	ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010,
+	il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r,
+	ind=^F^J,
+	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
+	rmkx=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r,
+	smkx=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r,
+tek4025-17|tek 4025 17 line window,
+	lines#17, use=tek4025,
+tek4025-17-ws|tek 4025 17 line window in workspace,
+	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r,
+	rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r,
+	smso=\037att e\r, use=tek4025-17,
+tek4025-ex|tek4027-ex|tek 4025/4027 w/!,
+	is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r,
+	rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
+# Tektronix 4025a
+# From: Doug Gwyn <gwyn@brl-smoke.ARPA>
+# The following status modes are assumed for normal operation (replace the
+# initial "!" by whatever the current command character is):
+#	!COM 29			# NOTE: changes command character to GS (^])
+#	^]DUP
+#	^]ECH R
+#	^]EOL
+#	^]RSS T
+#	^]SNO N
+#	^]STO 9 17 25 33 41 49 57 65 73
+# Other modes may be set according to communication requirements.
+# If the command character is inadvertently changed, termcap can't restore it.
+# Insert-character cannot be made to work on both top and bottom rows.
+# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas.
+# There also seems to be a problem with vertical motion, perhaps involving
+# delete/insert-line, following a typed carriage return.  This terminal sucks.
+# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
+# work any more. -- esr)
+tek4025a|Tektronix 4025A,
+	OTbs, OTpt, am, bw, da, db, xon,
+	cols#80, it#8, lines#34,
+	bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^],
+	cr=^M, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;,
+	cud1=^J, cuf=\035rig %p1%d;, cuf1=\035rig;,
+	cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;,
+	dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;,
+	el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I,
+	il1=\013\035ili;, ind=^J, indn=\035dow %p1%d;,
+	rs2=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;,
+	tbc=\035sto;,
+# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
+# Here's the command file that I use to get rogue to work on the 4025.
+# It should work with any program using the old curses (e.g. it better
+# not try to scroll, or cursor addressing won't work.  Also, you can't
+# see the cursor.)
+# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
+tek4025-cr|tek 4025 for curses and rogue,
+	OTbs, am,
+	cols#80, it#8, lines#33,
+	clear=\037era;, cub1=^H, cud1=^F^J, cuf1=\037rig;,
+	cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F^J,
+	is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
+	rmcup=\037wor 0, smcup=\037wor 33h,
+# next two lines commented out since curses only allows 128 chars, sigh.
+#	:ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\
+#	:te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0:
+tek4025ex|4025ex|4027ex|tek 4025 w/!,
+	is2=\037com 33\r\n!sto 9\,17\,25\,33\,41\,49\,57\,65\,73\r,
+	rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
+tek4105|tektronix 4105,
+	OTbs, am, mir, msgr, ul, xenl, xt,
+	cols#79, it#8, lines#29,
+	acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z,
+	clear=\E[2J\E[H, cr=^M, cud1=\E[1B, cuf1=\E[1C,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P,
+	dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m,
+	is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B,
+	kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T,
+	rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m,
+	rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m,
+	smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
+	smul=\E[=5;<2m, tbc=\E[1g,
+
+# (tek4105-30: I added <rmam>/<smam> based on the init string -- esr)
+tek4105-30|4015 emulating 30 line vt100,
+	am, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#30, vt#3,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+	clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
+	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
+	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
+	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>,
+	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+	use=vt100+fnkeys,
+
+# Tektronix 4105 from BRL
+# The following setup modes are assumed for normal operation:
+#	CODE ansi		CRLF no			DABUFFER 141
+#	DAENABLE yes		DALINES 30		DAMODE replace
+#	DAVISIBILITY yes	ECHO no			EDITMARGINS 1 30
+#	FLAGGING input		INSERTREPLACE replace	LFCR no
+#	ORIGINMODE relative	PROMPTMODE no		SELECTCHARSET G0 B
+#	SELECTCHARSET G1 0	TABS -2
+# Other setup modes may be set for operator convenience or communication
+# requirements; I recommend
+#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
+#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
+#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
+#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 10 1
+#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
+#	PROMPTSTRING ''		QUEUESIZE 2460		WINDOW 0 0 4095 3132
+#	XMTDELAY 0
+# and factory color maps.  After setting these modes, save them with NVSAVE. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# "IC" cannot be used in combination with "im" & "ei".
+# "tek4105a" is just a guess:
+tek4105a|Tektronix 4105,
+	OTbs, OTpt, msgr, xon,
+	OTkn#8, cols#80, it#8, lines#30, vt#3,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
+	cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
+	kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5,
+	lf5=F6, lf6=F8, ll=\E[30;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
+	rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1,
+	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>,
+	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+
+#
+# Tektronix 4106/4107/4109 from BRL
+# The following setup modes are assumed for normal operation:
+#	CODE ansi		COLUMNMODE 80		CRLF no
+#	DABUFFER 141		DAENABLE yes		DALINES 32
+#	DAMODE replace		DAVISIBILITY yes	ECHO no
+#	EDITMARGINS 1 32	FLAGGING input		INSERTREPLACE replace
+#	LFCR no			LOCKKEYBOARD no		ORIGINMODE relative
+#	PROMPTMODE no		SELECTCHARSET G0 B	SELECTCHARSET G1 0
+#	TABS -2
+# Other setup modes may be set for operator convenience or communication
+# requirements; I recommend
+#	ACURSOR 1 0		AUTOREPEAT yes		AUTOWRAP yes
+#	BYPASSCANCEL <LF>	CURSORKEYMODE no	DAINDEX 1 0 0
+#	EOFSTRING ''		EOLSTRING <CR>		EOMCHARS <CR> <NU>
+#	GAMODE overstrike	GCURSOR 0 100 0		GSPEED 9 3
+#	IGNOREDEL no		KEYEXCHAR <DL>		NVDEFINE -53 "<NU>"
+#	PROMPTSTRING ''		QUEUESIZE 2620		WINDOW 0 0 4095 3132
+#	XMTDELAY 0
+# and factory color maps.  After setting these modes, save them with NVSAVE.  No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# "IC" cannot be used in combination with "im" & "ei".
+tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
+	msgr, xon,
+	cols#80, it#8, lines#32, vt#3,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+	civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
+	cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
+	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, is2=\E%!1,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf0=\EOA, kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ,
+	kf6=\EOR, kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5,
+	lf5=F6, lf6=F8, ll=\E[32;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
+	rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1,
+	rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>,
+	sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
+	smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g,
+
+tek4107|tek4109|tektronix terminals 4107 4109,
+	OTbs, am, mir, msgr, ul, xenl, xt,
+	cols#79, it#8, lines#29,
+	bel=^G, blink=\E%!1\E[5m$<2>\E%!0,
+	bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=^M,
+	cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3,
+	dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=^J,
+	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	rev=\E%!1\E[7m$<2>\E%0, ri=\EI,
+	rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0,
+	sgr=\E%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>\E%%!0,
+	sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
+	smul=\E%!1\E[4m$<2>\E%!0,
+# Tektronix 4207 with sysline.  In the ancestral termcap file this was 4107-s;
+# see the note attached to tek4207.
+tek4207-s|Tektronix 4207 with sysline but no memory,
+	eslok, hs,
+	dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8,
+	is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
+	is2=\E7\E[?6l\E[2K\E[?6h\E8,
+	tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,
+
+# The 4110 series may be a wonderful graphics series, but they make the 4025
+# look good for screen editing.  In the dialog area, you can't move the cursor
+# off the bottom line.  Out of the dialog area, ^K moves it up, but there
+# is no way to scroll.
+#
+# Note that there is a floppy for free from Tek that makes the
+# 4112 emulate the vt52 (use the vt52 termcap). There is also
+# an expected enhancement that will use ANSI standard sequences.
+#
+# 4112 in non-dialog area pretending to scroll. It really wraps
+# but vi is said to work (more or less) in this mode.
+#
+# 'vi' works reasonably well with this entry.
+#
+otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series,
+	am,
+	cols#80, lines#34,
+	bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ind=^J,
+	rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
+# The 4112 with the ANSI compatibility enhancement
+tek4112|tek4114|tektronix 4110 series,
+	OTbs, am, db,
+	cols#80, lines#34,
+	cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, dl1=\E[M,
+	ed=\E[0J, el=\E[0K, ich1=\E[@, il1=\E[L,
+	ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8,
+	rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+tek4112-nd|4112 not in dialog area,
+	OTns,
+	cuu1=^K, use=tek4112,
+tek4112-5|4112 in 5 line dialog area,
+	lines#5, use=tek4112,
+# (tek4113: this used to have "<cuf1=\LM1\s\LM0>", someone's mistake;
+# removed "<smacs=\E^N>, <rmacs=\E^O>", which had been commented out in 8.3.
+# Note, the !0 and !1 sequences in <rmcup>/<smcup>/<cnorm>/<civis> were
+# previously \0410 and \0411 sequences...I don't *think* they were supposed
+# to be 4-digit octal -- esr)
+tek4113|tektronix 4113 color graphics with 5 line dialog area,
+	OTbs, am, da, eo,
+	cols#80, lines#5,
+	clear=\ELZ, cub1=^H, cud1=^J, cuf1=\ELM1 \ELM0,
+	flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0,
+	is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0,
+tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
+	lines#34,
+	is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113,
+# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not
+# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
+# :vb: needs enough delay to let you see the background color being toggled.
+tek4113-nd|tektronix 4113 color graphics with no dialog area,
+	OTbs, am, eo,
+	cols#80, it#8, lines#34,
+	clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K,
+	cvvis=\ELZ\EKA0,
+	flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0,
+	home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @,
+	ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0,
+# This entry is from Tek. Inc.  (Brian Biehl)
+# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
+otek4115|Tektronix 4115,
+	OTbs, am, da, db, eo,
+	cols#80, it#8, lines#34,
+	cbt=\E[Z, clear=\E[H\E[2J,
+	cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J,
+	el=\E[K, home=\E[H, ht=^I, if=/usr/local/share/tabset/vt100,
+	il1=\E[L,
+	is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?\E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
+	kbs=^H, ri=\EM, rmam=\E[?7l,
+	rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l,
+	rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
+	smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
+	smul=\E[4m,
+tek4115|newer tektronix 4115 entry with more ANSI capabilities,
+	am, xon,
+	cols#80, lines#34,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG,
+	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+	rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rmam=\E[?7l,
+	rmso=\E[m, rmul=\E[m,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+	sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
+	vpa=\E[%p1%{1}%+%dd,
+# The tek4125 emulates a vt100 incorrectly - the scrolling region
+# command is ignored.  The following entry replaces <csr> with the needed
+# <il>, <il>, and <smir>; removes some cursor pad commands that the tek4125
+# chokes on; and adds a lot of initialization for the tek dialog area.
+# Note that this entry uses all 34 lines and sets the cursor color to green.
+# Steve Jacobson 8/85
+# (tek4125: there were two "\!"s in the is that I replaced with "\E!";
+# commented out, <smir>=\E1 because there's no <rmir>  -- esr)
+tek4125|tektronix 4125,
+	lines#34,
+	csr@, dl1=\E[1M, il1=\E[1L,
+	is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	rc@, sc@, smkx=\E=, use=vt100,
+
+# From: <jcoker@ucbic>
+# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
+# supplied another, less capable 4107 entry.  So we'll use that for 4107 and
+# note that if jcoker wasn't confused you may be able to use this one.
+# I merged in <msgr>,<ind>,<ri>,<invis>,<tbc> from a BRL entry -- esr)
+tek4207|Tektronix 4207 graphics terminal with memory,
+	am, bw, mir, msgr, ul, xenl,
+	cols#80, it#8, lines#32,
+	blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J$<156/>,
+	cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\EM, dch1=\E[P$<4/>, dl1=\E[M$<3/>, ed=\E[J,
+	el=\E[K$<5/>, home=\E[H, ht=^I, ich1=\E[@$<4/>,
+	il1=\E[L$<3/>, ind=\E[S, invis=\E[=6;<5,
+	is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J,
+	kcub1=\E[D, kcud1=\ED, kcuf1=\E[C, kcuu1=\EM, khome=\E[H,
+	rev=\E[7m, ri=\E[T,
+	rmcup=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m,
+	smul=\E[4m, tbc=\E[1g,
+
+# From: <carolyn@dali.berkeley.edu>  Thu Oct 31 12:54:27 1985
+# (tek4404: There was a "\!" in <smcup> that I replaced with "\E!".
+# Tab had been given as \E2I,that must be the tab-set capability -- esr)
+tek4404|tektronix 4404,
+	OTbs,
+	cols#80, it#8, lines#32,
+	blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[1M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, il1=\E[1L,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rc=\E8,
+	rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
+	rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
+	smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
+	smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
+# Some unknown person wrote:
+# I added the is string - straight Unix has ESC ; in the login
+# string which sets a ct8500 into monitor mode (aka 4025 snoopy
+# mode). The is string here cleans up a few things (but not
+# everything).
+ct8500|tektronix ct8500,
+	am, bw, da, db,
+	cols#80, lines#25,
+	bel=^G, cbt=\E^I, clear=\E^E, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER,
+	dch1=\E^], dl1=\E^M, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\,
+	il1=\E^L, ind=^J, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s,
+	rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!,
+
+# Tektronix 4205 terminal.
+#
+# am is not defined because the wrap around occurs not when the char.
+# is placed in the 80'th column, but when we are attempting to type
+# the 81'st character on the line.  (esr: hmm, this is like the vt100
+# version of xenl, perhaps am + xenl would work!)
+#
+# Bold, dim, and standout are simulated by colors and thus not allowed
+# with colors.  The tektronix color table is mapped into the RGB color
+# table by setf/setb. All colors are reset to factory specifications by oc.
+# The <initc> cap uses RGB notation to define colors.  for arguments 1-3 the
+# interval (0-1000) is broken into 8 smaller sub-intervals (125).  Each sub-
+# interval then maps into pre-defined value.
+tek4205|tektronix 4205,
+	ccc, mir, msgr,
+	colors#8, cols#80, it#8, lines#30, ncv#49, pairs#63,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[=7;<4m, cbt=\E[Z,
+	clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch1=\E[1P, dim=\E[=1;<6m, dl1=\E[1M, ech=\E%p1%dX,
+	ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
+	initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3%e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%=%t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%<%tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}%<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:%eF4%;\E%%!1,
+	invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA,
+	kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER,
+	kf7=\ES,
+	oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40\E%!1,
+	op=\E[39;40m, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=,
+	rmir=\E[4l, rmso=\E[=0;<1m, rmul=\E[24m,
+	setb=\E[=%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
+	setf=\E[<%?%p1%{0}%=%t0m%e%p1%{1}%=%t4m%e%p1%{2}%=%t3m%e%p1%{3}%=%t5m%e%p1%{4}%=%t2m%e%p1%{5}%=%t6m%e%p1%{6}%=%t7m%e1m%;,
+	sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N,
+	smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
+	smul=\E[4m, tbc=\E[1g,
+
+#### Teletype (tty)
+#
+# These are the hardcopy Teletypes from before AT&T bought the company,
+# clattering electromechanical dinosaurs in Bakelite cases that printed on
+# pulpy yellow roll paper.  If you remember these you go back a ways.
+# Teletype-branded VDTs are listed in the AT&T section.
+#
+# The earliest UNIXes were designed to use these clunkers; nroff and a few
+# other programs still default to emitting codes for the Model 37.
+#
+
+tty33|tty35|model 33 or 35 teletype,
+	hc, os, xon,
+	cols#72,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+tty37|model 37 teletype,
+	OTbs, hc, os, xon,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
+	ind=^J,
+
+# There are known to be at least three flavors of the tty40, all seem more
+# like IBM half duplex forms fillers than ASCII terminals.  They have lots of
+# awful braindamage, such as printing a visible newline indicator after each
+# newline.  The 40-1 is a half duplex terminal and is hopeless.  The 40-2 is
+# braindamaged but has hope and is described here.  The 40-4 is a 3270
+# lookalike and beyond hope.  The terminal has visible bell but I don't know
+# it - it's null here to prevent it from showing the BL character.
+# There is an \EG in <nl> because of a bug in old vi (if stty says you have
+# a "newline" style terminal (-crmode) vi figures all it needs is nl
+# to get crlf, even if <cr> is not ^M.)
+# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
+tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2,
+	OTbs, xon,
+	cols#80, lines#24,
+	clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB,
+	cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>,
+	ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1,
+	ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^],
+	kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4,
+	rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>,
+tty43|model 43 teletype,
+	OTbs, am, hc, os, xon,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+
+#### Tymshare
+#
+
+# You can add <is2=\E<> to put this 40-column mode, though I can't
+# for the life of me think why anyone would want to.
+scanset|sc410|sc415|Tymshare Scan Set,
+	am, bw, msgr,
+	cols#80, lines#24,
+	acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=^J, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0,
+	mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,
+
+#### Volker-Craig (vc)
+#
+# If you saw a Byte Magazine cover with a terminal on it during the early
+# 1980s, it was probably one of these.  Carl Helmers liked them because
+# they could crank 19.2 and were cheap (that is, he liked them until he tried
+# to program one...)
+#
+
+# Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
+# every other linefeed.
+vc303|vc103|vc203|volker-craig 303,
+	OTbs, OTns, am,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+	cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=^J, kcuf1=^I,
+	kcuu1=^N, ll=\017$<1>W,
+vc303a|vc403a|volker-craig 303a,
+	clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>,
+	home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303,
+# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
+vc404|volker-craig 404,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+	ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J,
+	kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z,
+vc404-s|volker-craig 404 w/standout mode,
+	cud1=^J, rmso=^O, smso=^N, use=vc404,
+# From: <wolfgang@cs.sfu.ca>
+# (vc414: merged in cup/dl1/home from an old vc414h-noxon)
+vc414|vc414h|Volker-Craig 414H in sane escape mode.,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=\E\034$<40>, cud1=\E^K, cuf1=^P,
+	cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3,
+	dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R,
+	ich1=\E\:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P,
+	kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE,
+	kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2,
+	lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8,
+	rmso=\E^_, smso=\E^Y,
+vc415|volker-craig 415,
+	clear=^L, use=vc404,
+
+######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS
+#
+
+#### IBM PC and clones
+#
+
+# The pcplot IBM-PC terminal emulation program is really messed up. It is
+# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly,
+# doesn't support scrolling regions, ignores add line commands, and ignores
+# delete line commands. Consequently, the resulting behavior looks like a
+# crude adm3a-type terminal.
+# Steve Jacobson 8/85
+pcplot|pc-plot terminal emulation program,
+	xenl@,
+	csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100,
+# KayPro II from Richard G Turner <rturner at Darcom-Hq.ARPA>
+# I've found that my KayPro II, running MDM730, continues to emulate an
+# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX
+# system the following termcap entry works well:
+# I have noticed a couple of minor glitches, but nothing I can't work
+# around. (I added two capabilities from the BRL entry -- esr)
+kaypro|kaypro2|kaypro II,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W,
+	el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K,
+
+# From IBM, Thu May  5 19:35:27 1983
+# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
+ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS),
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^L^K, cr=^M^^, cub1=^], cud1=^J, cuf1=^\,
+	cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_,
+
+ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
+	OTbs, am, bw, eo, hs, km, msgr, ul,
+	cols#80, it#8, lines#24,
+	acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
+	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+	home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B,
+	indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H,
+	kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241,
+	kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247,
+	kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V,
+	ll=\E[24;1H, nel=^M, rev=\E[7m, ri=\E[T\E[A,
+	rin=\E[%p1%dT\E[%p1%dA, rmso=\E[m, rmul=\E[m,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+	sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+
+#### Apple II
+#
+# Apple II firmware console first, then various 80-column cards and
+# terminal emulators.  For two cents I'd toss all these in the UFO file
+# along with the 40-column apple entries.
+#
+
+# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL
+#	'it#8' tells UNIX that you have tabs every 8 columns.  This is a
+#		function of TIC, not the firmware.
+#	The clear key on a IIgs will do something like clear-screen,
+#		depending on what you're in.
+appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
+	OTbs, am, bw, eo, msgr,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=^J,
+	kcuf1=^U, kcuu1=^K, kdch1=\177, nel=^M^W, ri=^V, rmso=^N,
+	smso=^O,
+# Apple //e with 80-column card, entry from BRL
+# The modem interface is permitted to discard LF (maybe DC1), otherwise
+# passing characters to the 80-column firmware via COUT (PR#3 assumed).
+# Auto-wrap does not work right due to newline scrolling delay, which also
+# requires that you set "stty cr2".
+# Note: Cursor addressing is only available via the Pascal V1.1 entry,
+# not via the BASIC PR#3 hook.  All this nonsense can be avoided only by
+# using a terminal emulation program instead of the built-in firmware.
+apple2e|Apple //e,
+	bw, msgr,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, cuu1=^_,
+	ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W,
+	is2=^R^N, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^K,
+	nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
+	smso=^O,
+# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
+# 4.20, with incoming and outgoing terminals both on 0, emulation On.
+apple2e-p|Apple //e via Pascal,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H,
+	kcud1=^J, use=apple2e,
+# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
+# Enable DC3/DC1 flow control with "stty ixon -ixany".
+apple-ae|ASCII Express,
+	OTbs, am, bw, msgr, nxon, xon,
+	cols#80, it#8, lines#24,
+	bel=\007$<500/>, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=^J,
+	kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
+	smso=^O,
+appleII|apple ii plus,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	clear=^L, cnorm=^TC2, cub1=^H, cud1=^J, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6,
+	ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I,
+	is2=\024T1\016, kcud1=^J, kcuf1=^U, rmso=^N, sgr0=^N,
+	smso=^O,
+# Originally by Gary Ford 21NOV83
+# From: <ee178aci%sdcc7@SDCSVAX.ARPA>  Fri Oct 11 21:27:00 1985
+apple-80|apple II with smarterm 80 col,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=^J,
+	cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_,
+	ed=\013$<10*/>, el=\035$<10/>, home=^Y,
+apple-soroc|apple emulating soroc 120,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\E*$<300>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
+	home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+# From Peter Harrison, Computer Graphics Lab, San Francisco
+#   ucbvax!ucsfmis!harrison  .....uucp
+#   ucbvax!ucsfmis!harrison@BERKELEY   .......ARPA
+# "These two work.  If you don't have the inverse video chip for the
+# Apple with videx then remove the :so: and :se: fields."
+# (apple-videx: this used to be called DaleApple -- esr)
+apple-videx|Apple with videx videoterm 80 column board with inverse video,
+	OTbs, am, xenl,
+	cols#80, it#8, lines#24,
+	clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, ht=^I, kcub1=^H, kcud1=^J, kcuf1=^U, khome=^Y,
+	rmso=^Z2, sgr0=^Z2, smso=^Z3,
+# My system [for reference] : Apple ][+, 64K, Ultraterm display card,
+#			      Apple Cat ][ 212 modem, + more all
+#			      controlled by ASCII Express: Pro.
+# From Dave Shaver <isucs1!shaver>
+apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
+	OTbs, am, eo, xt,
+	cols#80, lines#24,
+	acsc=, clear=^L, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	flash=^W35^W06, home=^Y,
+	is2=^V4^W06\017\rVisible Bell Installed.\016\r\n,
+	rmso=^N, smso=^O,
+apple-uterm|Ultraterm for Apple micros,
+	OTbs, am, eo, xt,
+	cols#80, lines#24,
+	acsc=, clear=^L, cuf1=^\,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O,
+# from trwrba!bwong (Bradley W. Wong):
+#
+# This entry assumes that you are using an apple with the UCSD Pascal
+# language card.  SYSTEM.MISCINFO is assumed to be the same as that
+# supplied with the standard apple except that screenwidth should be set
+# using SETUP to 80 columns.  Note that the right arrow in not mapped in
+# this termcap entry.  This is because that key, on the Apple, transmits
+# a ^U and would thus preempt the more useful "up" function of vi.
+#
+# HMH 2/23/81
+apple80p|80-column apple with Pascal card,
+	am, bw,
+	cols#80, lines#24,
+	clear=^Y^L, cuf1=^\\:,
+	cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+	home=^Y, kcub1=^H,
+#
+# Apple II+ equipped with Videx 80 column card
+#
+# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL;
+# manually converted by D A Gwyn
+#
+# DO NOT use any terminal emulation with this data base, it works directly
+# with the Videx card.  This has been tested with vi 1200 baud and works fine.
+#
+# This works great for vi, except I've noticed in pre-R2, ^U will scroll back
+# 1 screen, while in R2 ^U doesn't.
+# For inverse alternate character set add:
+#	<smacs>=^O:<rmacs>=^N:
+# (apple-v: added it#8 -- esr)
+apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520),
+	am, xenl,
+	cols#80, it#8, lines#24,
+	bel=\007$<100/>, clear=\014$<16*/>, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c,
+	cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
+	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
+	khome=^Y, rmso=^Z2, smso=^Z3,
+apple-videx3|vapple|Apple II with 80 col card,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=\Ev, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
+	kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
+#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
+aepro|Apple II+ running ASCII Express Pro--vt52,
+	OTbs,
+	cols#80, lines#24,
+	clear=\014$<300/>, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, home=\EH,
+# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
+apple-vm80|ap-vm80|apple with viewmax-80,
+	OTbs,
+	cols#80, lines#24,
+	clear=\014$<300/>, cuf1=^\\:,
+	cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_,
+	ed=\013$<300/>, el=^], home=\031$<200/>,
+
+#### Apple Lisa & Macintosh
+#
+
+# (lisa: changed <cvvis> to <cnorm> -- esr)
+lisa|apple lisa console display (black on white),
+	OTbs, am, eo, msgr,
+	cols#88, it#8, lines#32,
+	acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
+	cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
+	is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
+liswb|apple lisa console display (white on black),
+	is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
+	smso=\E[m, smul=\E[4m, use=lisa,
+
+# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL;
+# <is2> revised by Ferd Brundick <fsbrn@BRL.ARPA>
+#
+# These entries assume that the 'Auto Wraparound' is enabled.
+# Xon-Xoff flow control should also be enabled.
+#
+# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab
+# settings are in non-volatile memory and don't need to be reset upon login.
+# Also setting the number of columns glitches the screen annoyingly.
+# You can type "reset" to get them set.
+#
+lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
+	OTbs, OTpt, am, xenl, xon,
+	OTkn#4, cols#80, it#8, lines#24, vt#3,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
+	el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ,
+	kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rc=\E8,
+	rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
+	sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+	tbc=\E[3g,
+# Lisaterm in 132 column ("wide") mode.
+lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
+	cols#132,
+	kbs=^H, kcub1=^H, kcud1=^J, use=lisaterm,
+# Although MacTerminal has insert/delete line, it is commented out here
+# since it is much faster and cleaner to use the "lock scrolling region"
+# method of inserting and deleting lines due to the MacTerminal implementation.
+# Also, the "Insert/delete ch" strings have an extra character appended to them
+# due to a bug in MacTerminal V1.1.  Blink is disabled since it is not
+# supported by MacTerminal.
+mac|macintosh|Macintosh with MacTerminal,
+	xenl,
+	OTdN#30,
+	blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa,
+# Lisaterm in 132 column ("wide") mode.
+mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
+	cols#132, use=mac,
+
+# The AppKit Terminal.app descriptions all have names beginning with
+# "nsterm". Note that the statusline (-s) versions use the window
+# titlebar as a phony status line, and may produce warnings during
+# compilation as a result ("tsl uses 0 parameters, expected 1".) Ignore
+# these warnings, or even ignore these entries entirely. Apps which
+# need to position the cursor or do other fancy stuff inside the status
+# line won't work with these entries. They're primarily useful for
+# programs like Pine which provide simple notifications in the status
+# line. Please note that non-ASCII characters don't work right in the
+# status line, since Terminal.app incorrectly interprets their Unicode
+# codepoints as MacRoman codepoints.
+#
+# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
+#   "nsterm" to comply with the name length and case conventions and
+#   limitations of various software packages [notably Solaris terminfo
+#   and UNIX.] A single Apple_Terminal alias is retained for
+#   backwards-compatbility.
+#
+# * Added function key support (F1-F4). These only work in Terminal.app
+#   version 51, hopefully the capabilities won't cause problems for people
+#   using version 41.
+#
+# * Added "full color" (-c) entries which support the 16-color mode in
+#   version 51.
+#
+# * By default, version 51 uses UTF-8 encoding with broken altcharset
+#   support, so "ASCII" (-7) entries without altcharset support were
+#   added.
+
+# nsterm - AppKit Terminal.app
+#
+# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
+# Terminal.app. It is a partial VT100 emulation with some xterm-like
+# extensions. This terminfo was written to describe versions 41
+# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
+# version 10.1) of Terminal.app.
+#
+# Terminal.app runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems.)  On the Mac OS X machine I
+# use, the executable for Terminal.app is:
+# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
+#
+# If you're looking for a description of the full-screen system
+# console which runs under Apple's Darwin operating system on PowerPC
+# platforms, see the "xnuppc" entry instead.
+#
+# There were no function keys in version 41. In version 51, there are
+# four working function keys (F1, F2, F3 and F4.) The function keys
+# are included in all of these entries.
+#
+# It does not support mouse pointer position reporting. Under some
+# circumstances the cursor can be positioned using option-click; this
+# works by comparing the cursor position and the selected position,
+# and simulating enough cursor-key presses to move the cursor to the
+# selected position. This technique fails in all but the simplest
+# applications.
+#
+# It provides partial ANSI color support (background colors interacted
+# badly with bold in version 41, though, as reflected in :ncv:.) The
+# monochrome (-m) entries are useful if you've disabled color support
+# or use a monochrome monitor. The full color (-c) entries are useful
+# in version 51, which doesn't exhibit the background color bug. They
+# also enable an xterm-compatible 16-color mode.
+#
+# The configurable titlebar is set using xterm-compatible sequences;
+# it is used as a status bar in the statusline (-s) entries. Its width
+# depends on font sizes and window sizes, but 50 characters seems to
+# be the default for an 80x24 window.
+#
+# The MacRoman character encoding is used for some of the alternate
+# characters in the "MacRoman" entries; the "ASCII" (-7) entries
+# disable alternate character set support entirely, and the "VT100"
+# (-acs) entries rely instead on Terminal.app's own buggy VT100
+# graphics emulation, which seems to think the character encoding is
+# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
+# are useful in Terminal.app version 51, which supports UTF-8 and
+# other ASCII-compatible character encodings but does not correctly
+# implement VT100 graphics; once VT100 graphics are correctly
+# implemented in Terminal.app, the "VT100" (-acs) entries should be
+# usable in any ASCII-compatible character encoding [except perhaps
+# in UTF-8, where some experts argue for disallowing alternate
+# characters entirely.]
+#
+# Terminal.app reports "vt100" as the terminal type, but exports
+# several environment variables which may aid detection in a shell
+# profile (i.e. .profile or .login):
+#
+# TERM=vt100
+# TERM_PROGRAM=Apple_Terminal
+# TERM_PROGRAM_VERSION=41      # in Terminal.app version 41
+# TERM_PROGRAM_VERSION=51      # in Terminal.app version 51
+#
+# For example, the following Bourne shell script would detect the
+# correct terminal type:
+#
+# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
+# then
+#     export TERM
+#     if [ :"$TERM_PROGRAM_VERSION" = :41 ]
+#     then
+#         TERM="nsterm"
+#     else
+#         TERM="nsterm-c-7"
+#     fi
+# fi
+#
+# In a C shell derivative, this would be accomplished by:
+#
+# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
+#     if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
+#          if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
+#              setenv TERM "nsterm"
+#          else
+#              setenv TERM "nsterm-c-7"
+#          endif
+#     endif
+# endif
+
+# The '+' entries are building blocks
+nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
+	am, bw, msgr, xenl, xon,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+	home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
+	sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
+
+nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	enacs=\E(B\E)0, rmacs=^O,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	smacs=^N, use=nsterm+7,
+
+nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
+	acsc=0#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245+\335-\366\,\334.\377,
+	enacs=\E(B\E)0, rmacs=^O,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+	smacs=^N, use=nsterm+7,
+
+nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
+	hs,
+	wsl#50,
+	dsl=\E]2;\007, fsl=^G, tsl=\E]2;,
+
+nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
+	op=\E[0m, use=ibm+16color,
+
+nsterm+c41|AppKit Terminal.app v41 color support,
+	colors#8, ncv#37, pairs#64,
+	op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+# These are different combinations of the building blocks
+
+# ASCII charset (-7)
+nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome),
+	use=nsterm+7,
+
+nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
+	use=nsterm+s, use=nsterm+7,
+
+nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
+	use=nsterm+c41, use=nsterm+7,
+
+nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
+	use=nsterm+c, use=nsterm+7,
+
+nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
+	use=nsterm+s, use=nsterm+c41, use=nsterm+7,
+
+nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
+	use=nsterm+s, use=nsterm+c, use=nsterm+7,
+
+# VT100 alternate-charset (-acs)
+nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
+	use=nsterm+acs,
+
+nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
+	use=nsterm+s, use=nsterm+acs,
+
+nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
+	use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
+	use=nsterm+c, use=nsterm+acs,
+
+nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
+	use=nsterm+s, use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
+	use=nsterm+s, use=nsterm+c, use=nsterm+acs,
+
+# MacRoman charset
+nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
+	use=nsterm+mac,
+
+nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
+	use=nsterm+s, use=nsterm+mac,
+
+nsterm|Apple_Terminal|AppKit Terminal.app v41+ w/MacRoman charset (color),
+	use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
+	use=nsterm+c, use=nsterm+mac,
+
+nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
+	use=nsterm+s, use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
+	use=nsterm+s, use=nsterm+c, use=nsterm+mac,
+
+
+# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
+# and D P Schreber comparing to nsterm-c-s-acs.
+#
+# D P Schreber notes that $TERM can be set in Terminal.app, e.g.,
+#	defaults write com.apple.Terminal TermCapString nsterm-c-s-acs
+# and that it is not set in Terminal's preferences dialog.
+nsterm-16color|AppKit Terminal.app v100.1.8 with MacOS X 10.3.9,
+	kdch1=\E[3~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+	knp=\E[6~, kpp=\E[5~, use=nsterm-c-s-acs,
+
+# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
+#
+# On PowerPC platforms, Apple's Darwin operating system uses a
+# full-screen system console derived from a NetBSD framebuffer
+# console. It is an ANSI-style terminal, and is not really VT-100
+# compatible.
+#
+# Under Mac OS X, this is the system console driver used while in
+# single-user mode [reachable by holding down Command-S during the
+# boot process] and when logged in using console mode [reachable by
+# typing ">console" at the graphical login prompt.]
+#
+# If you're looking for a description of the Terminal.app terminal
+# emulator which runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems,) see the "nsterm"
+# entry instead.
+#
+# NOTE: Under Mac OS X version 10.1, the default login window does not
+# prompt for user name, instead requiring an icon to be selected from
+# a list of known users. Since the special ">console" login is not in
+# this list, you must make one of two changes in the Login Window
+# panel of the Login section of System Prefs to make the special
+# ">console" login accessible. The first option is to enable 'Show
+# "Other User" in list for network users', which will add a special
+# "Other..." icon to the graphical login panel. Selecting "Other..."
+# will present the regular graphical login prompt. The second option
+# is to change the 'Display Login Window as:' setting to 'Name and
+# password entry fields', which replaces the login panel with a
+# graphical login prompt.
+#
+# There are no function keys, at least not in Darwin 1.3.
+#
+# It has no mouse support.
+#
+# It has full ANSI color support, and color combines correctly with
+# all three supported attributes: bold, inverse-video and underline.
+# However, bold colored text is almost unreadable (bolding is
+# accomplished using shifting and or-ing, and looks smeared) so bold
+# has been excluded from the list of color-compatible attributes
+# [using (ncv)]. The monochrome entry (-m) is useful if you use a
+# monochrome monitor.
+#
+# There is one serious bug with this terminal emulation's color
+# support: repositioning the cursor onto a cell with non-matching
+# colors obliterates that cell's contents, replacing it with a blank
+# and displaying a colored cursor in the "current" colors. There is
+# no complete workaround at present [other than using the monochrome
+# (-m) entries,] but removing the (msgr) capability seemed to help.
+#
+# The "standout" chosen was simple reverse-video, although a colorful
+# standout might be more aesthetically pleasing. Similarly, the bold
+# chosen is the terminal's own smeared bold, although a simple
+# color-change might be more readable. The color-bold (-b) entries
+# uses magenta colored text for bolding instead. The fancy color (-f
+# and -f2) entries use color for bold, standout and underlined text
+# (underlined text is still underlined, though.)
+#
+# Apparently the terminal emulator does support a VT-100-style
+# alternate character set, but all the alternate character set
+# positions have been left blank in the font. For this reason, no
+# alternate character set capabilities have been included in this
+# description. The console driver appears to be ASCII-only, so (enacs)
+# has been excluded [although the VT-100 sequence does work.]
+#
+# The default Mac OS X and Darwin installation reports "vt100" as the
+# terminal type, and exports no helpful environment variables. To fix
+# this, change the "console" entry in /etc/ttys from "vt100" to
+# "xnuppc-WxH", where W and H are the character dimensions of your
+# console (see below.)
+#
+# The font used by the terminal emulator is apparently one originally
+# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
+# file includes descriptions for the following geometries:
+#
+#     Pixels        Characters   Entry Name (append -m for monochrome)
+#    -------------------------------------------------------------------
+#     640x400       80x25        xnuppc-80x25
+#     640x480       80x30        xnuppc-80x30
+#     720x480       90x30        xnuppc-90x30
+#     800x600       100x37       xnuppc-100x37
+#     896x600       112x37       xnuppc-112x37
+#     1024x640      128x40       xnuppc-128x40
+#     1024x768      128x48       xnuppc-128x48
+#     1152x768      144x48       xnuppc-144x48
+#     1280x1024     160x64       xnuppc-160x64
+#     1600x1024     200x64       xnuppc-200x64
+#     1600x1200     200x75       xnuppc-200x75
+#     2048x1536     256x96       xnuppc-256x96
+#
+# The basic "xnuppc" entry includes no size information, and the
+# emulator includes no reporting capability, so you'll be at the mercy
+# of the TTY device (which reports incorrectly on my hardware.) The
+# color-bold entries do not include size information.
+
+# The '+' entries are building blocks
+xnuppc+basic|Darwin PowerPC Console basic capabilities,
+	am, bce, mir, xenl,
+	it#8,
+	bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K,
+	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
+	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
+	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+	sc=\E7,
+	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+	sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
+
+xnuppc+c|Darwin PowerPC Console ANSI color support,
+	colors#8, ncv#32, pairs#64,
+	op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+xnuppc+b|Darwin PowerPC Console color-bold support,
+	ncv#32,
+	bold=\E[35m,
+	sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+	use=xnuppc+basic,
+
+xnuppc+f|Darwin PowerPC Console fancy color support,
+	ncv#35,
+	sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m,
+	smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,
+
+xnuppc+f2|Darwin PowerPC Console alternate fancy color support,
+	ncv#35,
+	bold=\E[33m,
+	sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
+	smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,
+
+# Building blocks for specific screen sizes
+xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels),
+	cols#80, lines#25,
+
+xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels),
+	cols#80, lines#30,
+
+xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels),
+	cols#90, lines#30,
+
+xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels),
+	cols#100, lines#37,
+
+xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels),
+	cols#112, lines#37,
+
+xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels),
+	cols#128, lines#40,
+
+xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels),
+	cols#128, lines#48,
+
+xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels),
+	cols#144, lines#48,
+
+xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels),
+	cols#160, lines#64,
+
+xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels),
+	cols#200, lines#64,
+
+xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels),
+	cols#200, lines#75,
+
+xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
+	cols#256, lines#96,
+
+# These are different combinations of the building blocks
+
+xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome),
+	use=xnuppc+basic,
+
+xnuppc|darwin|Darwin PowerPC Console (color),
+	use=xnuppc+c, use=xnuppc+basic,
+
+xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold),
+	use=xnuppc+b,
+
+xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold),
+	use=xnuppc+b, use=xnuppc+c,
+
+xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome),
+	use=xnuppc+f,
+
+xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color),
+	use=xnuppc+f, use=xnuppc+c,
+
+xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome),
+	use=xnuppc+f2,
+
+xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color),
+	use=xnuppc+f2, use=xnuppc+c,
+
+# Combinations for specific screen sizes
+xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25,
+	use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25,
+	use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30,
+	use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30,
+	use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30,
+	use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30,
+	use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37,
+	use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37,
+	use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37,
+	use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37,
+	use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40,
+	use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40,
+	use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48,
+	use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48,
+	use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48,
+	use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48,
+	use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64,
+	use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64,
+	use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64,
+	use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64,
+	use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75,
+	use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75,
+	use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96,
+	use=xnuppc+256x96, use=xnuppc+basic,
+
+xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
+	use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
+
+#### Radio Shack/Tandy
+#
+
+# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7".
+# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
+# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
+coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=^_", bold=\E\:^A, civis=^E\s,
+	clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I,
+	dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=^J,
+	kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#,
+	sgr0=\037!\E\:\0, smso=^_\s, smul=^_",
+# (trs2: removed obsolete ":nl=^_:" -- esr)
+trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M,
+	OTbs, am, msgr,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^_, cuf1=^],
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B,
+	el=^A, home=^F, ht=^I, il1=^D, ind=^J, kbs=^H, kcub1=^\,
+	kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N,
+# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
+# (This had extension capabilities
+#	:BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\
+#	:CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
+# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
+trs16|trs-80 model 16 console,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L,
+	cnorm=\ERC, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+	dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
+	ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S,
+	khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7,
+	lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@,
+	smacs=\ERG, smso=\ERD,
+
+#### Atari ST
+#
+
+# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
+atari|atari st,
+	OTbs, am,
+	cols#80, it#8, lines#25,
+	clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
+	ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
+# UniTerm terminal program for the Atari ST:  49-line VT220 emulation mode
+# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
+uniterm|uniterm49|UniTerm VT220 emulator with 49 lines,
+	lines#49,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H,
+	use=vt220,
+# MiNT VT52 emulation. 80 columns, 25 rows.
+# MiNT is Now TOS, the operating system which comes with all Ataris now
+# (mainly Atari Falcon). This termcap is for the VT52 emulation you get
+# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode
+# From: Per Persson <pp@gnu.ai.mit.edu>, 27 Feb 1996
+st52|Atari ST with VT52 emulation,
+	am, km,
+	cols#80, lines#25,
+	bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, cub1=\ED,
+	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
+	ind=^J, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1,
+	kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M,
+	kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>,
+	kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G,
+	kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=^M^J, rc=\Ek,
+	ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
+	smcup=\Ee, smso=\Ep,
+
+#### Commodore Business Machines
+#
+# Formerly located in West Chester, PA; went spectacularly bust in 1994
+# after years of shaky engineering and egregious mismanagement.  Made one
+# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64,
+# C-128, VIC-20).  The C-64 is said to have been the most popular machine
+# ever (most units sold); they can still be found gathering dust in closets
+# everywhere.
+#
+
+# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
+# Added a few more entries, converted caret-type control sequence (^x) entries
+# to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
+# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998
+#
+# :as:, :ae:			Support for alternate character sets.
+# :ve=\E[\040p:vi=\E[\060\040p:	cursor visible/invisible.
+# :xn:  vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
+#     This one appears to fix a problem I always had with a line ending
+#     at 'width+1' (I think) followed by a blank line in vi. The blank
+#     line tended to disappear and reappear depending on how the screen
+#     was refreshed. Note that this is probably needed only if you use
+#     something like a Dnet Fterm with the window sized to some peculiar
+#     dimension larger than 80 columns.
+# :k0=\E9~:	map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
+# (amiga: removed obsolete :kn#10:,
+# also added empty <acsc> to suppress a warning --esr)
+amiga|Amiga ANSI,
+	OTbs, am, bw, xenl,
+	cols#80, lines#24,
+	acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
+	civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD,
+	cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+	indn=\E[%p1%dS, invis=\E[8m, is2=\E[20l, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[9~,
+	kf1=\E[0~, kf2=\E[1~, kf3=\E[2~, kf4=\E[3~, kf5=\E[4~,
+	kf6=\E[5~, kf7=\E[6~, kf8=\E[7~, kf9=\E[8~, rev=\E[7m,
+	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmso=\E[m, rmul=\E[m,
+	rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
+
+# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
+# (amiga: added empty <acsc> to suppress a warning.
+# I'm told this entry screws up badly with AS225, the Amiga
+# TCP/IP package once from Commodore, and now sold by InterWorks.--esr)
+amiga-h|Hans Verkuil's Amiga ANSI,
+	OTbs, bw, msgr,
+	cols#80, lines#24,
+	acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z,
+	civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=^M,
+	cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
+	cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
+	cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
+	dim=\2332m, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G,
+	home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S,
+	indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H,
+	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
+	kdch1=\177, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~,
+	kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~,
+	kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T,
+	rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m,
+	rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l,
+	smso=\2337m, smul=\2334m,
+
+# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
+#
+# Pavel Fedin added
+#	Home    Shift+Left
+#	End     Shift+Right
+#	PgUp    Shift+Up
+#	PgDn    Shift+Down
+amiga-8bit|Amiga ANSI using 8-bit controls,
+	acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
+	ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S,
+	kpp=\233T, ri=\215, rin@, use=amiga-h,
+
+# From: Ruediger Kuhlmann <terminfo@ruediger-kuhlmann.de>, 18 Jul 2000
+# requires use of appropriate preferences settings.
+amiga-vnc|Amiga using VNC console (black on light gray),
+	am, da, db, msgr, ndscr,
+	btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#256,
+	bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
+	clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+	dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
+	indn=\E[%p1%dS, invis=\E8m,
+	is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
+	kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kdch1=\177, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
+	kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~,
+	kf8=\E[7~, kf9=\E[8~, khlp=\E[?~, khome=\E[44~, kll=\E[45~,
+	kmous=\E[M, knp=\E[42~, kpp=\E[41~, nel=\EE, oc=\E[0m,
+	rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=\E[?7h\E[r\E[J,
+	rmkx=\E[?1l, rmso=\E[21m, rmul=\E[24m, rs1=\Ec,
+	rs2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
+	setab=\E[%?%p1%{8}%>%t%'F'%p1%+%d%e4%p1%d%;m,
+	setaf=\E[%?%p1%{8}%>%t%'2'%p1%+%d%e3%p1%d%;m,
+	sgr0=\E[0m\017\E[30;85;>15m, smcup=\E[?7h, smkx=\E[?1h,
+	smso=\E[1m, smul=\E[4m,
+
+# MorphOS on Genesi Pegasos
+# By Pavel Fedin <sonic_amiga@rambler.ru>
+morphos,
+	acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
+	ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~,
+	khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~,
+	ri=\215, rin@, use=amiga-h,
+
+# Commodore B-128 microcomputer from Doug Tyrol <det@HEL-ACE.ARPA>
+# 	I'm trying to write a termcap for a commodore b-128, and I'm
+# having a little trouble. I've had to map most of my control characters
+# to something that unix will accept (my delete-char is a ctrl-t, etc),
+# and create some functions (like cm), but thats life.
+# 	The problem is with the arrow keys - right, and up work fine, but
+# left deletes the previous character and down I just can't figure out.
+# Jove knows what I want, but I don't know what it's sending to me (it
+# isn't thats bound to next-line in jove).
+# 	Anybody got any ideas? Here's my termcap.
+# DAG -- I changed his "^n" entries to "\n"; see if that works.
+#
+commodore|b-128|Commodore B-128 micro,
+	am, bw,
+	OTdN#20, cols#80, lines#24, pb#150,
+	OTbc=^H, OTnl=^M, clear=\E\006$<10/>, cr=^M, cud1=^J,
+	cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P,
+	dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>,
+	home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>,
+	kcub1=^B, kcud1=^J, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=,
+	smir=,
+
+#### North Star
+#
+# North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL
+northstar|North Star Advantage,
+	OTbs,
+	cols#80, lines#24,
+	clear=\004$<200/>,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>,
+	el=\016$<200/>, home=\034\032$<200/>,
+
+#### Osborne
+#
+# Thu Jul  7 03:55:16 1983
+#
+# As an aside, be careful; it may sound like an anomaly on the
+# Osborne, but with the 80-column upgrade, it's too easy to
+# enter lines >80 columns!
+#
+# I've already had several comments...
+# The Osborne-1 with the 80-col option is capable of being
+# 52, 80, or 104 characters wide; default to 80 for compatibility
+# with most systems.
+#
+# The tab is destructive on the Ozzie; make sure to 'stty -tabs'.
+osborne-w|osborne1-w|osborne I in 104-column mode,
+	msgr, ul, xt,
+	cols#104, lines#24,
+	bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=^J, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El,
+# Osborne I	from ptsfa!rhc (Robert Cohen) via BRL
+osborne|osborne1|osborne I in 80-column mode,
+	OTbs, am, mir, msgr, ul, xhp,
+	OTdB#4, cols#80, lines#24,
+	clear=^Z, cub1=\010$<4>, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+	dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E),
+	rmul=\Em, smir=\EQ, smso=\E(, smul=\El,
+#
+# Osborne Executive definition from BRL
+# Similar to tvi920
+# Added by David Milligan and Tom Smith (SMU)
+osexec|Osborne executive,
+	OTbs, am,
+	OTug#1, cols#80, lines#24, xmc#1,
+	OTnl=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE,
+	is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L,
+	kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
+	kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
+	kf9=^AI\r, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej,
+	smul=\El, tbc=\E3,
+
+#### Console types for obsolete UNIX clones
+#
+# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088
+# machines that tried to emulate the UNIX look'n'feel.  Coherent and Venix
+# were commercial, Minix an educational tool sold in conjunction with a book.
+# Memory-segmentation limits and a strong tendency to look like V7 long after
+# it was obsolete made all three pretty lame.  Venix croaked early.  Coherent
+# and Minix were ported to 32-bit Intel boxes, only to be run over by a
+# steamroller named `Linux' (which, to be fair, traces some lineage to Minix).
+# Coherent's vendor, the Mark Williams Company, went belly-up in 1994.  There
+# are also, I'm told, Minix ports that ran on Amiga and Atari machines and
+# even as single processes under SunOS and the Macintosh OS.
+#
+
+# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
+minix|minix console (v1.7),
+	am, xenl,
+	cols#80, it#8, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S,
+	kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp, lf2=PgDn, lf3=Num +,
+	lf4=Num -, lf5=Num 5, nel=^M^J, rev=\E[7m, ri=\EM,
+	rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
+minix-old|minix console (v1.5),
+	xon,
+	cols#80, it#8, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+	kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G,
+	khome=\E[H, nel=^M^J, rev=\E[7m, ri=\EM, rmso=\E[0m,
+	rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+# The linewrap option can be specified by editing /usr/include/minix/config.h
+# before recompiling the minix 1.5 kernel.
+minix-old-am|minix console with linewrap,
+	am, use=minix-old,
+
+pc-minix|minix console on an Intel box,
+	use=klone+acs, use=minix,
+
+# According to the Coherent 2.3 manual, the PC console is similar
+# to a z19. The differences seem to be (1) 25 lines, (2) no status
+# line, (3) standout is broken, (4) ins/del line is broken, (5)
+# has blinking and bold.
+pc-coherent|pcz19|coherent|IBM PC console running Coherent,
+	am, mir,
+	cols#80, it#8, lines#25,
+	bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN,
+	ed=\EJ, el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
+	rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
+
+# According to the Venix 1.1 manual, the PC console is similar
+# to a DEC vt52.  Differences seem to be (1) arrow keys send
+# different strings, (2) enhanced standout, (3) added insert/delete line.
+# Note in particular that it doesn't have automatic margins.
+# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they
+# not described here because this derives from an old termcap entry.
+pc-venix|venix|IBM PC console running Venix,
+	cols#80, it#8, lines#25,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
+	ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\EK,
+	kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI,
+
+#### Miscellaneous microcomputer consoles
+#
+# If you know anything more about any of these, please tell me.
+#
+
+# The MAI Basic Four computer was obsolete at the end of the 1980s.
+# It may be used as a terminal by putting it in "line" mode as seen on
+# one of the status lines.
+# Initialization is similar to CIT80. <is2> will set ANSI mode for you.
+# Hardware tabs set by <if> at 8-spacing.  Auto line wrap causes glitches so
+# wrap mode is reset by <cvvis>.  Using <ind>=\E[S caused errors so I
+# used \ED instead.
+# From: bf347@lafn.org (David Lawyer), 28 Jun 1997
+mai|basic4|MAI Basic Four in ansi mode,
+	am, da, db, mir, msgr,
+	cols#82, it#8, lines#25,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=^X,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P,
+	dl1=\E[M, ed=^_, el=^^, home=^], ht=^I,
+	if=/usr/local/share/tabset/vt100, il1=\E[L, ind=\ED,
+	is2=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
+	kf7=\EOV, kf8=\EOW, nel=^M\ED, rc=\E8, rev=\E[7m, ri=\E[T,
+	rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
+	smir=\E[4h, smso=\E[7m, smul=\E[4m,
+# basis from Peter Harrison, Computer Graphics Lab, San Francisco
+#   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
+#
+# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
+# The Basis 108 was a Apple II clone, manufactured by the "Basis
+# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
+# about 1,5 km from where I live, but doesn't build own computers any
+# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
+# equipped with one or two 5.25" disk drives, had a monochrome and colour
+# video output for a TV set or a dedicated monitor and several slots for
+# Apple II cards. Basis 108 were quite popular at german schools before
+# the advent of the IBM PC. They run, for example, the UCSD Pascal
+# development system (which I used even in 1993 to program the steering
+# and data recording for our school's experimental solar panel :), Apple DOS
+# or CP/M.
+# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
+basis|BASIS108 computer with terminal translation table active,
+	clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
+	kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
+	smso=\E(, use=adm3a,
+# luna's BMC terminal emulator
+luna|luna68k|LUNA68K Bitmap console,
+	cols#88, lines#46, use=ansi-mini,
+megatek|pegasus workstation terminal emulator,
+	am, os,
+	cols#83, lines#60,
+# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
+# interface (pre-Macintosh by several years) that went nowhere.
+xerox820|x820|Xerox 820,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
+	home=^^, ind=^J,
+
+#### Videotex and teletext
+#
+
+# \E\:1}	switch to te'le'informatique mode (ascii terminal/ISO 6429)
+# \E[?3l	80 columns
+# \E[?4l	scrolling on
+# \E[12h	local echo off
+# \Ec		reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen
+# \E)0		G1 DEC set (line graphics)
+#
+# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
+m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique,
+	OTbs, eslok, hs, xenl,
+	cols#80, it#8, lines#24, wsl#72, xmc#0,
+	acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
+	blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
+	cnorm=\E[<1l, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=^J,
+	home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, ip=$<7/>,
+	is1=\E\:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
+	is3=\E[?3l kbs=\010, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
+	kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu,
+	kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khome=\E[H,
+	kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H,
+	mc0=\E[i, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+	rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+	rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sc=\E7, sgr0=\E[m,
+	smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A,
+	u6=\E[%i%d;%dR, u7=\E[6n,
+
+# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998
+#
+minitel1|minitel 1,
+	am, bw, eslok, hs, hz, msgr,
+	colors#8, cols#40, lines#24, pairs#8,
+	acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L,
+	cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+	cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X,
+	enacs=^Y, fsl=^J, home=^^, ind=^J,
+	is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG,
+	rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\,
+	setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;,
+	sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
+	sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c,
+# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
+minitel1b|minitel 1-bistandard (in 40cols mode),
+	mir,
+	cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+	cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
+	is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+	kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l,
+	smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
+# <rmkx> posait des problemes (logout en sortant de vi).
+minitel1b-80|minitel 1-bistandard (standard teleinformatique),
+	am@, bw@, hz@,
+	colors@, cols#80, it#8, pairs@,
+	blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
+	clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+	ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq,
+	kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw,
+	kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m,
+	ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@,
+	sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+	sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,
+
+######## OBSOLETE VDT TYPES
+#
+# These terminals are *long* dead -- these entries are retained for
+# historical interest only.
+
+#### Amtek Business Machines
+#
+
+# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y",
+# but these caps were commented out in 8.3; also, removed overridden
+# ":do=^J:" -- esr)
+abm80|amtek business machines 80,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P,
+	cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L,
+	dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z,
+
+#### Bell Labs blit terminals
+#
+# These were AT&T's official entries.  The 5620 FAQ maintained by
+# David Breneman <daveb@dgtl.com> has this to say:
+#
+#  Actually, in the beginning was the Jerq, and the Jerq was white with a
+#  green face, and Locanthi and Pike looked upon the Jerq and said the Jerq
+#  was good.  But lo, upon the horizon loomed a mighty management-type person
+#  (known now only by the initials VP) who said, the mighty Jerq must stay
+#  alone, and could not go forth into the world. So Locanthi and Pike put the
+#  Jerq to sleep, cloned its parts, and the Blit was brought forth unto the
+#  world. And the Jerq lived the rest of its days in research, but never
+#  strayed from those paths.
+#
+#  In all seriousness, the Blit was originally known as the Jerq, but when
+#  it started to be shown outside of the halls of the Bell Labs Research
+#  organization, the management powers that be decided that the name could
+#  not remain. So it was renamed to be Blit. This was in late 1981.
+#
+# (The AT&T 5620 was the commercialized Blit.  Its successors were the 630,
+# 730, and 730+.)
+#
+
+blit|jerq|blit running teletype rom,
+	am, eo, ul, xon,
+	cols#87, it#8, lines#72,
+	bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
+	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
+	dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c,
+	dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!,
+	il=\EF%p1%{32}%+%c, il1=\EF!, ind=^J, kbs=^H, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,
+
+# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
+cbblit|fixterm|blit running columbus code,
+	cols#88,
+	ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d,
+	rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!,
+	smul=\EU", use=blit,
+
+oblit|ojerq|first version of blit rom,
+	am, da, db, eo, mir, ul, xon,
+	cols#88, it#8, lines#72,
+	bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC,
+	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO,
+	dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G,
+	ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=^J, kbs=^H, rmir=\ER,
+	smir=\EQ,
+
+#### Bolt, Beranek & Newman (bbn)
+#
+# The BitGraph was a product of the now-defunct BBN Computer Corporation.
+# The parent company, best known as the architects of the Internet, is
+# still around.
+#
+# Jeff DelPapa <dp@world.std.com> writes:
+# The bitgraph was a large white box that contained a monochrome bitmap
+# display, and a 68000 to run it.  You could download code and run it on
+# the cpu, it had 128kb (I think) of memory.  I used one in the late
+# 70's, sure beat a vt100.  It had one strange feature tho -- it used
+# the cpu to bitblt pixels to scroll, it took longer than the refresh
+# rate, and looked like a rubber sheet stretching, then snapping
+# upwards.  It had everything the early mac had, except a floppy drive a
+# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt
+# Beranek and Neuman) sold at most a few hundred of them to the real
+# world.  DOD may have bought more...
+#
+
+# Entries for the BitGraph terminals.  The problem
+# with scrolling in vi can only be fixed by getting BBN to put
+# smarter scroll logic in the terminal or changing vi or padding
+# scrolls with about 500 ms delay.
+#
+# I always thought the problem was related to the terminal
+# counting newlines in its input buffer before scrolling and
+# then moving the screen that much. Then vi comes along and
+# paints lines in on the bottom line of the screen, so you get
+# this big white gap.
+
+bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video),
+	flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
+	use=bg2.0,
+bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video),
+	flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
+	use=bg2.0,
+bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init),
+	OTbs, xenl,
+	cols#85, lines#64,
+	bel=^G, clear=\E[H\E[J$<150>, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, dl1=\E[M$<2*>,
+	ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>,
+	ind=\n$<280>, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+	kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
+	lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
+	sgr0=\E[m, smkx=\E=, smso=\E[7m,
+
+bg1.25rv|bbn bitgraph 1.25 (reverse video),
+	flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
+	use=bg1.25,
+bg1.25nv|bbn bitgraph 1.25 (normal video),
+	flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
+	use=bg1.25,
+# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
+bg1.25|bbn bitgraph 1.25,
+	cols#85, lines#64,
+	bel=^G, clear=\E[H\E[J$<150>, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A,
+	dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I,
+	il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
+	lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
+	rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
+	smso=\E[7m,
+
+#### Bull (bq, dku, vip)
+#
+# (Adapted for terminfo; AIX extension capabilities translated -- esr)
+
+#============================================#
+# BULL QUESTAR 210 `SDP' terminals emulation #
+#============================================#
+#
+# Description written by R.K.Saunders (Bull Transac)
+#
+# Modifications written by F. Girard (Bull MTS)
+#		19-05-87 V02.00.01
+#		17-12-87 V02.00.02
+#		15-09-89 V02.00.05
+#
+#	Typical technical selections F1 (modes SDP/ROLL):
+# -------------------------------------------------------
+# |   01   02   03   04   05   06   07   08   09   10   |
+# |  1010 0011 1010 0110 0110 0001 0100 0000 0000 0000  |
+# |                                                     |
+# |   11   12   13   14   15   16   17   18   19   20   |
+# |  0000 0110 100? 0000 0000 0000 0001 0000 0000 0001  |
+# |                                                     |
+# |   21   22   23   24   25   26   27   28   29   30   |
+# |  0011 0000 0001 1000 0000 0000 0000 0000 0000 0000  |
+# |                                                     |
+# |   31   32   33   34   35   36   37   38   39   40   |
+# |  1010 0011 0000 0000 0000 0000 0000 0000 0000 0000  |
+# -------------------------------------------------------
+#	Typical firmware identification F5 "etat 6":
+#  P287.02.04b	(AZERTY)
+#  P297.11.04	(24-pin: 2732)	or P798.11.04	(28-pin: 2764)
+#  P298.03.03	(monochrome)	or P374.03.02	(colour)
+#
+#	SM SDP mode (VIP command):	^[[?=h
+#	RIS (erases screen):		^[c
+#	DMI disable keyboard:		^[`
+#	SM double rendition mode:	^[[?>h
+#	RM solicited status mode:	^[[5l
+#	RM character mode:		^[[>l
+#	RM echoplex mode:		^[[12l
+#	RM column tab mode:		^[[18l
+#	RM forbid SS2 keyboard mode:	^[[?<l
+#	SM scroll mode:			^[[=h
+#	FCF enable XON/XOFF:		^[P1s^[\
+#	MTL select end msg character:	^[[^Wp
+#	EMI enable keyboard:		^[b
+#	RIS retour etat initial:	^[c
+#	enable FC keypad:		^[[?<h,
+#	MPW map status line window:	^[PY99:98^[\
+#	SCP select status line:		^[[0;98v
+#	ED erase entire partition:	^[[2J
+#	SCP select main partition:	^[[v
+#	SM character insertion mode:	^[[4h
+#	RM character replacement mode:	^[[4l
+#	COO cursor on:			^[[r
+#	COO cursor off:			^[[1r
+#	SGR dim (turquoise) rev attr:	^[[2;7m
+#	SGR Data normal attr:		^[[m
+#	SO Line-graphic mode ON:	^N
+#	SI Line-graphic mode OFF:	^O
+#	MC start routing to printer:	^[[5i
+#	MC stop routing to printer:	^M^[[4i
+#
+
+# This entry covers the following terminals:
+# dku7102, tws2102, and tws models 2105 to 2112
+tws-generic|dku7102|Bull Questar tws terminals,
+	am, eslok, hs, mir, msgr, xenl, xhp@, xon,
+	cols#80, it#8, lines#24, wsl#80,
+	acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
+	bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
+	cnorm=\E[r, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
+	cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
+	fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
+	il1=\E[L, ind=^J, invis=\E[0;8m,
+	is1=\E[?=h\Ec\E`\E[?>h\EPY99\:98\E\\,
+	is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
+	is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+	ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
+	kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
+	kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
+	khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
+	mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
+	rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
+	rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
+	sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+	sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99\:98\E\\,
+	smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[2g,
+	tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m,
+tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA,
+	dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
+	use=tws-generic,
+tws2103|xdku|BULL Questar tws2103,
+	ht=^I, use=tws-generic,
+tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA,
+	ht=^I, use=tws2102-sna,
+dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
+	clear=\E[2J\E[H, cup@, dl@, dl1@,
+	dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m,
+	il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m,
+	use=tws-generic,
+dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
+	blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
+	smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,
+
+#=========================================================#
+# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
+#=========================================================#
+#
+# Description written by J. Staerck (BULL SA)
+#       Copyright (c) 1989 BULL SA
+#---------------------------------------------------------------------------
+#  This entry is used for terminals with vt320 emulation mode
+#  and following set-up :
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    7 bit Control Characters,
+#    80 columns screen.
+#  Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
+#  They are used in string capabilities with vt220-320 emulation mode.
+#  In the following DEC definitions, two kinds of terminfo databases are
+#    provided :
+#    1. the first with Command Sequence Introducer starting with escape
+#       sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
+#    2. the second with Command Sequence Introducer starting with escape
+#       sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
+#	Soft Terminal Reset		esc [ ! p
+#	RIS (erases screen):		esc c
+#	DECKPNM numeric keypad mode:	esc >
+#	DECKPAM applic. keypad mode:	esc =
+#	DECSTBM Scrolling region:	esc [ r
+#	SCS select G0 = US:		esc ( B
+#	SCS select G1 = line-graphic:	esc ) 0
+#	Select 7-bit C1 controls:	esc sp F
+#	Select 8-bit C1 controls:	esc sp G
+#	Select cursor home:		esc [  H
+#	Select erase screen:		esc [  J
+#	SM KAM lock keyboard:		esc [ 2 h
+#	RM KAM unlock keyboard:		esc [ 2 l
+#	SM SRM local echo off:		esc [ 1 2 h
+#	RM SRM local echo on:		esc [ 1 2 l
+#	SM LNM New line :		esc [ 2 0 h
+#	RM LNM return = CR only:	esc [ 2 0 l
+#	SM DECCKM cursor keys mode:	esc [ ? 1 h
+#	RM DECCKM appli. keys mode:	esc [ ? 1 l
+#	SM DECANM ANSI mode on:		esc [ ? 2 h
+#	RM DECANM ANSI mode off:	esc [ ? 2 l
+#	SM DECCOLM 132-column screen:	esc [ ? 3 h
+#	RM DECCOLM 80-column screen:	esc [ ? 3 l
+#	SM DECSCLM Smooth scroll:	esc [ ? 4 h
+#	RM DECSCLM Jump scroll:		esc [ ? 4 l
+#	SM DECSCNM screen light backgr.	esc [ ? 5 h
+#	RM DECSCNM screen dark backgr.	esc [ ? 5 l
+#	SM DECOM move within margins:	esc [ ? 6 h
+#	RM DECOM move outside margins:	esc [ ? 6 l
+#	SM DECAWM auto right margin:	esc [ ? 7 h
+#	RM DECAWM auto right margin:	esc [ ? 7 l
+#	SM DECARM auto repeat:		esc [ ? 8 h
+#	RM DECARM auto repeat:		esc [ ? 8 l
+#	DECSASD Select active main:	esc [ 0 $ }
+#	DECSASD Select active status:	esc [ 1 $ }
+#	DECSSDT Select status none:	esc [ 0 $ ~
+#	DECSSDT Select status indic.:	esc [ 1 $ ~
+#	DECSSDT Select status host-wr:	esc [ 2 $ ~
+#	SM DECTCEM Visible cursor:	esc [ ? 2 5 h
+#	RM DECTCEM Invisible cursor:	esc [ ? 2 5 l
+#	SM DECNCRM 7 bits NCR set:	esc [ ? 4 2 h
+#	RM DECNCRM Multi or ISO latin:	esc [ ? 4 2 l
+#	SM DECNKM numeric keypad mode:	esc [ ? 6 6 h
+#	RM DECNKM numeric keypad appl.:	esc [ ? 6 6 l
+#	SM DECKBUM clavier informatique	esc [ ? 6 8 h
+#	RM DECKBUM clavier bureautique:	esc [ ? 6 8 l
+#	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 " p
+# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 0 " p
+# or	DECSCL vt300 mode 8-bit ctrl:	esc [ 6 3 ; 2 " p
+#	DECSCL vt300 mode 7-bit ctrl:	esc [ 6 3 ; 1 " p
+#	Char. and Line attributes:	esc [ Ps ... Ps m
+# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+#
+
+# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
+bq300|Bull vt320 ISO Latin 1 80 columns terminal,
+	am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+	dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J,
+	el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+	flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
+	hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+	is1=\E[63;1"p\E[2h,
+	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
+	kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, kf10=\E[21~,
+	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
+	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+	khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
+	ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l,
+	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E[!p,
+	rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+	sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\E[0m\E(B, smacs=\E(0, smam=\E[?7h,
+	smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~,
+bq300-rv|Bull vt320 reverse 80 columns,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	use=bq300,
+bq300-w|Bull vt320 132 columns,
+	cols#132, wsl#132,
+	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300,
+bq300-w-rv|Bull vt320 reverse mode 132 columns,
+	cols#132, wsl#132,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300,
+
+#  This entry is used for terminals with vt320 emulation mode
+#  and following set-up :
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    8 bit Control Characters, (CSI coded as x9B for ESC [)
+#    80 columns screen.
+#	Soft Terminal Reset		csi ! p
+#	RIS (erases screen):		esc c
+#	DECKPNM numeric keypad mode:	esc >
+#	DECKPAM applic. keypad mode:	esc =
+#	DECSTBM Scrolling region:	esc [ r
+#	SCS select G0 = US:		esc ( B
+#	SCS select G1 = line-graphic:	esc ) 0
+#	Select 7-bit C1 controls:	esc sp F
+#	Select 8-bit C1 controls:	esc sp G
+#	Select cursor home:		csi H
+#	Select erase screen:		csi J
+#	SM KAM lock keyboard:		csi 2 h
+#	RM KAM unlock keyboard:		csi 2 l
+#	SM SRM local echo off:		csi 1 2 h
+#	RM SRM local echo on:		csi 1 2 l
+#	SM LNM New line :		csi 2 0 h
+#	RM LNM return = CR only:	csi 2 0 l
+#	SM DECCKM cursor keys mode:	csi ? 1 h
+#	RM DECCKM appli. keys mode:	csi ? 1 l
+#	SM DECANM ANSI mode on:		csi ? 2 h
+#	RM DECANM ANSI mode off:	csi ? 2 l
+#	SM DECCOLM 132-column screen:	csi ? 3 h
+#	RM DECCOLM 80-column screen:	csi ? 3 l
+#	SM DECSCLM Smooth scroll:	csi ? 4 h
+#	RM DECSCLM Jump scroll:		csi ? 4 l
+#	SM DECSCNM screen light backgr.	csi ? 5 h
+#	RM DECSCNM screen dark backgr.	csi ? 5 l
+#	SM DECOM move within margins:	csi ? 6 h
+#	RM DECOM move outside margins:	csi ? 6 l
+#	SM DECAWM auto right margin:	csi ? 7 h
+#	RM DECAWM auto right margin:	csi ? 7 l
+#	SM DECARM auto repeat:		csi ? 8 h
+#	RM DECARM auto repeat:		csi ? 8 l
+#	DECSASD Select active main:	csi 0 $ }
+#	DECSASD Select active status:	csi 1 $ }
+#	DECSSDT Select status none:	csi 0 $ ~
+#	DECSSDT Select status indic.:	csi 1 $ ~
+#	DECSSDT Select status host-wr:	csi 2 $ ~
+#	SM DECTCEM Visible cursor:	csi ? 2 5 h
+#	RM DECTCEM Invisible cursor:	csi ? 2 5 l
+#	SM DECNCRM 7 bits NCR set:	csi ? 4 2 h
+#	RM DECNCRM Multi or ISO latin:	csi ? 4 2 l
+#	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 " p
+# or	DECSCL vt300 mode 8-bit ctrl:	csi 6 3 ; 0 " p
+#	DECSCL vt300 mode 7-bit ctrl:	csi 6 3 ; 1 " p
+#	Char. and Line attributes:	csi Ps ... Ps m
+# with:  0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
+bq300-8|Bull vt320 full 8 bits 80 columns,
+	am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3, wsl#80,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l,
+	clear=\233H\233J, cnorm=\233?25h, cr=^M,
+	csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB,
+	cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA,
+	dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM,
+	dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J,
+	el=\233K, el1=\2331K, enacs=\E(B\E)0,
+	flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
+	ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, ind=\ED,
+	is1=\E[63;2"p\E[2h,
+	is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
+	ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
+	kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
+	kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
+	kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
+	kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
+	kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
+	kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
+	khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
+	krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
+	lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8,
+	rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l, rmcup=\233?7h,
+	rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
+	rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+	sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
+	sgr0=\2330m\E(B, smacs=^N, smam=\233?7h,
+	smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
+	smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
+bq300-8rv|Bull vt320 8-bit reverse mode 80 columns,
+	flash=\233?5l$<50>\233?5h,
+	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	use=bq300-8,
+bq300-8w|Bull vt320 8-bit 132 columns,
+	cols#132, wsl#132,
+	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	rs2=\233?3h, use=bq300-8,
+bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns,
+	cols#132, wsl#132,
+	flash=\233?5l$<50>\233?5h,
+	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	rs2=\233?3h, use=bq300-8,
+
+#  This entry is used for terminals with vt320 emulation mode
+#  a 102 keys keyboard (PC scancode !) and following set-up :
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    7 bit Control Characters,
+#    80 columns screen.
+bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns,
+	kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
+	kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@,
+	kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~,
+	kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
+	kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+	krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300,
+bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	use=bq300-pc,
+bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal,
+	cols#132, wsl#132,
+	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300-pc,
+bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns,
+	cols#132, wsl#132,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300-pc,
+#    8 bit ISO Latin Character Set (ISO 8859-1),
+#    8 bit Control Characters,
+#    80 columns screen.
+bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
+	kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
+	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
+	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
+	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
+	kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
+	khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
+	kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
+bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	use=bq300-8-pc,
+bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns,
+	cols#132, wsl#132,
+	is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300-8-pc,
+bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
+	cols#132, wsl#132,
+	flash=\E[?5l$<50>\E[?5h,
+	is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+	rs2=\E[?3h, use=bq300-8-pc,
+
+#======================================================#
+# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
+#======================================================#
+
+# normal mode, 8 bits, 80 columns terminal.
+#	RES reset :			^[e
+#	RIS reset initial state:	^[c
+#	BLE bell enable			^[h
+#	BLD bell disable		^[g
+#	CAMS char. attr. mode set	^[[D
+#	CAMR char. attr. mode reset	^[[G
+#	CLR clear			^[`
+#	KBU keyboard unlock (set)	^[[W
+#	KBL keyboard lock (reset)	^[[X
+#	CM  character mode (async.) 	^[k
+#	NEP non echoplex mode (by host)	^[l
+#	EP  echoplex mode (by host) 	^[m
+#	IM  insert mode set		^[[I
+#	IM  insert mode reset 		^[[J
+#	RMS roll mode set 		^[r
+#	RMR roll mode reset 		^[q
+#	SM78 set mode vip7800	 	^[[1q
+#	SD  scroll up  	(72 lines) 	^[[0s
+#	SD  scroll down	(72 lines) 	^[[1s
+#	RBM block mode reset		^[[E
+#	SLS status line set 		^[w
+#	SLR status line reset 		^[v
+#	SLL status line lock 		^[O
+#	LGS Line-graphic mode set 	^[G
+#	LGR Line-graphic mode reset 	^[F
+#	TBC tab clear (at cursor pos.)	^[[g
+#	TBI tab initialize 		^[[N
+#	TBS tab set (at cursor pos.)	^[p
+#	PDS  print data space		^[[0p
+#	PHD  print host data 		^[[3p
+#	PDT  print data terminator	^[[<p
+#	PRES print adapter reset	^[[2p
+#	SSPR multi-part. reset		^[[<>u
+#	SSP0 partition 0 set		^[[00u
+#	SSP1 partition n format 1 	^[[PnPnSTRINGu
+#	SSP2 partition n format 2 	^[[PnPnSTRINGu
+#	SSP3 partition n format 3 	^[[PnPnu
+#	ATR attribute (visual)
+#	    blink :			^[sB
+#	    dim :			^[sL
+#	    hide (blank) :		^[sH
+#	    restore :			^[sR
+#	    inverse video :		^[sI
+#	    prot. :			^[sP
+#	    underline :			^[s_
+#	    reset :			^{
+#
+# This covers the vip7800 and BQ3155-vip7800
+vip|Bull Questar 3155-7800,
+	am, eslok, hs, km, mc5i, msgr, xenl, xon,
+	cols#80, it#8, lines#24, vt#3, wsl#80,
+	acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
+	cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
+	dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
+	flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
+	hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH,
+	is2=\E[00u\E[<>001001024080024080u\E[01u,
+	is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
+	kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
+	kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
+	kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
+	kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
+	kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_,
+	kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER,
+	khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s,
+	kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1,
+	lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p,
+	mc5=\E[3p, nel=^M, prot=\EsP, rev=\EsI,
+	ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
+	rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
+	sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
+	smul=\Es_, tbc=\E[N, tsl=\Ew,
+# normal screen, 8 bits, 132 columns terminal.
+vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
+	cols#132, wsl#132,
+	is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip,
+vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines,
+	lines#72,
+	is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip,
+vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
+	cols#132, lines#72, wsl#132,
+	is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip,
+
+#### Chromatics
+#
+
+# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window
+# that is smaller than the screen, and puts up a warning message
+# outside the window. Te erases the warning message, puts the
+# window back to be the whole screen, and puts the cursor at just
+# below the small window. I defined <cnorm> and <civis> to really turn
+# the cursor on and off, but I have taken this out since I don't
+# like the cursor being turned off when vi exits.
+cg7900|chromatics|chromatics 7900,
+	am,
+	cols#80, lines#40,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^],
+	cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2,
+	ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=^J, ll=^A|,
+	rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40\,,
+	rmso=\001C1\,\001c2\,,
+	smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARNING DOUBLE ENTER ESCAPE and \025\001C1\,\001c2\,\001W0\,0\,79\,39\,,
+	smso=\001C4\,\001c7\,, uc=\001\001_\001\0,
+
+#### Computer Automation
+#
+
+ca22851|computer automation 22851,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<8>, cr=^M, cub1=^U, cud1=^J, cuf1=^I,
+	cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=^J,
+	kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^,
+
+#### Cybernex
+#
+
+# This entry has correct padding and the undocumented "ri" capability
+cyb83|xl83|cybernex xl-83,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+	cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
+	ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H,
+	kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N,
+# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
+cyb110|mdl110|cybernex mdl-110,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+	dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>,
+	ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y,
+	ht=\011$<43>, ich1=\016A\035$<3.5>,
+	il1=\016A\016\035$<65>, ind=^J, rmso=^NG, smso=^NF,
+
+#### Datapoint
+#
+# Datapoint is gone.  They used to be headquartered in Texas.
+# They created ARCnet, an Ethernet competitor that flourished for a while
+# in the early 1980s before 3COM got wise and cut its prices.  The service
+# side of Datapoint still lives (1995) in the form of Intelogic Trace.
+#
+
+dp3360|datapoint|datapoint 3360,
+	OTbs, am,
+	cols#82, lines#25,
+	bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z,
+	ed=^_, el=^^, home=^], ind=^J,
+
+# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997
+# The Datapoint 8242 Workstation was sold at least between 1985
+# and 1989. To make the terminal work with this entry, press
+# CONTROL-INT-INT to take the terminal off-line, and type (opt).
+# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO
+# CR/LF off. Use control-shift-[] as escape key, control-I as tab,
+# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in
+# fact unusable because the strings sent by the terminal conflict
+# with other keys).
+# The terminal is capable of displaying "box draw" characters.
+# For each graphic character you must send 2 ESC's (\E\E) followed
+# by a control character as follows:
+#         character        meaning
+#         =========        =======
+#         ctrl-E           top tee
+#         ctrl-F           right tee
+#         ctrl-G           bottom tee
+#         ctrl-H           left tee
+#         ctrl-I           cross
+#         ctrl-J           top left corner
+#         ctrl-K           top right corner
+#         ctrl-L           bottom left corner
+#         ctrl-M           bottom right corner
+#         ctrl-N           horizontal line
+#         ctrl-O           vertical line
+# Unfortunately this cannot be fitted into the termcap/terminfo
+# description scheme.
+dp8242|datapoint 8242,
+	msgr,
+	cols#80, lines#25,
+	bel=^G, civis=^Y, clear=\025\E\004\027\030, cnorm=^X,
+	cr=^M, cub1=^H, cud1=^J,
+	cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z, ed=^W, el=^V,
+	home=^U, ht=^I, il1=\E^T, ind=^C,
+	is1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
+	kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee,
+	kf10=\EK\Ea, kf2=^I\Ed, kf3=^J\Ec, kf4=^J\Eb, kf5=^S\Ea,
+	kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=^M^J,
+	rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D,
+	rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004,
+	smso=\E^E, smul=\E^F,
+	wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'\0'%+%c\025,
+
+#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
+#
+# These entries are DEC's official terminfos for its older terminals.
+# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
+# Engineering for more information.  Updated terminfos and termcaps
+# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+#
+
+gt40|dec gt40,
+	OTbs, os,
+	cols#72, lines#30,
+	bel=^G, cr=^M, cub1=^H, cud1=^J,
+gt42|dec gt42,
+	OTbs, os,
+	cols#72, lines#40,
+	bel=^G, cr=^M, cub1=^H, cud1=^J,
+vt50|dec vt50,
+	OTbs,
+	cols#80, lines#12,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J,
+vt50h|dec vt50h,
+	OTbs,
+	cols#80, lines#12,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, ht=^I, ind=^J, ri=\EI,
+# (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>)
+vt61|vt-61|vt61.5|dec vt61,
+	cols#80, lines#24,
+	bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=^J,
+	cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>,
+	cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I,
+	ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+	ri=\E$<20>I,
+
+# The gigi does standout with red!
+# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
+gigi|vk100|dec gigi graphics terminal,
+	OTbs, am, xenl,
+	cols#84, lines#24,
+	bel=^G, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
+	el=\E[K, ht=^I, ind=^J,
+	is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
+	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
+	smul=\E[4m,
+
+# DEC PRO-350 console (VT220-style).  The 350 was DEC's attempt to produce
+# a PC differentiated from the IBM clones.  It was a total, ludicrous,
+# grossly-overpriced failure (among other things, DEC's OS didn't include
+# a format program, so you had to buy pre-formatted floppies from DEC at
+# a hefty premium!).
+pro350|decpro|dec pro console,
+	OTbs,
+	cols#80, it#8, lines#24,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+	el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
+	kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
+	rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,
+
+dw1|decwriter I,
+	OTbs, hc, os,
+	cols#72,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
+dw2|decwriter|dw|decwriter II,
+	OTbs, hc, os,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+# \E(B		Use U.S. character set (otherwise # => british pound !)
+# \E[20l	Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
+# \E[w   	10 char/in pitch
+# \E[1;132	full width horizontal margins
+# \E[2g		clear all tab stops
+# \E[z		6 lines/in
+# \E[66t	66 lines/page (for \f)
+# \E[1;66r	full vertical page can be printed
+# \E[4g		clear vertical tab stops
+# \E>		disable alternate keypad mode (so it transmits numbers!)
+# \E[%i%p1%du	set tab stop at column %d (origin == 1)
+#		(Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is
+#		a tab stop)
+#
+#       The dw3 does standout with wide characters.
+#
+dw3|la120|decwriter III,
+	OTbs, hc, os,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J,
+	is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>,
+	is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r,
+	kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w,
+dw4|decwriter IV,
+	OTbs, am, hc, os,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H,
+	kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
+
+# These aren't official
+ln03|dec ln03 laser printer,
+	hc,
+	cols#80, lines#66,
+	bel=^G, cr=^M, cud1=^J, hd=\EK, ht=^I, hu=\EL, ind=^J, nel=^M^J,
+	rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m,
+	smul=\E[4m,
+ln03-w|dec ln03 laser printer 132 cols,
+	cols#132,
+	bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H,
+	kcud1=^J, nel=^M^J, use=ln03,
+
+#### Delta Data (dd)
+#
+
+# Untested. The cup sequence is hairy enough that it probably needs work.
+# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'.
+# There are BSD-derived termcap entries floating around for this puppy
+# that are *certainly* wrong.
+delta|dd5000|delta data 5000,
+	OTbs, am,
+	cols#80, lines#27,
+	bel=^G, clear=^NR, cub1=^H, cud1=^J, cuf1=^Y,
+	cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-%{57}%+%c,
+	cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=^J,
+
+#### Digital Data Research (ddr)
+#
+
+# (ddr: I added <rmam>/<smam> based on the init string -- esr)
+ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
+	OTbs, am, xenl,
+	cols#80, it#8, lines#24, vt#3,
+	blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+	clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
+	cud1=^J, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+	cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+	ht=^I, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H,
+	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+	kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
+	rf=/usr/local/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
+	rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+	sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m$<2/>,
+
+#### Evans & Sutherland
+#
+
+# Jon Leech <leech@cs.unc.edu> tells us:
+# The ps300 was the Evans & Sutherland Picture System 300, a high
+# performance 3D vector graphics system with a bunch of specialized hardware.
+# Approximate date of release was 1982 (early 80s, anyway), and it had several
+# evolutions including (limited) color versions such as the PS330C. PS300s
+# were effectively obsolete by the late 80s, replaced by raster graphics
+# systems, although specialized applications like molecular modelling
+# hung onto them for a while longer.  AFAIK all E&S vector graphics systems
+# are out of production, though of course E&S is very much alive (in 1996).
+# (ps300: changed ":pt@:" to "it@" -- esr)
+#
+ps300|Picture System 300,
+	xt,
+	it@,
+	rmso@, rmul@, smso@, smul@, use=vt100,
+
+#### General Electric (ge)
+#
+
+terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
+	OTbs, hc, os,
+	cols#120,
+	bel=^G, cr=^M, cud1=^J, ind=^J,
+
+#### Heathkit/Zenith
+#
+
+# Here is a description of the H19 DIP switches:
+#
+# S401
+# 0-3 = baud rate as follows:
+#
+#         3       2       1       0
+#	---	---	---	---
+#         0       0       1       1       300 baud
+#         0       1       0       1       1200 baud
+#         1       0       0       0       2400 baud
+#         1       0       1       0       4800 baud
+#         1       1       0       0       9600 baud
+#         1       1       0       1       19.2K baud
+#
+# 4 = parity (0 = no parity)
+# 5 = even parity (0 = odd parity)
+# 6 = stick parity (0 = normal parity)
+# 7 = full duplex (0 = half duplex)
+#
+# S402
+# 0 = block cursor (0 = underscore cursor)
+# 1 = no key click (0 = keyclick)
+# 2 = wrap at end of line (0 = no wrap)
+# 3 = auto LF on CR (0 = no LF on CR)
+# 4 = auto CR on LF (0 = no CR on LF)
+# 5 = ANSI mode (0 = VT52 mode)
+# 6 = keypad shifted (0 = keypad unshifted)
+# 7 = 50Hz refresh (1 = 60Hz refresh)
+#
+# Factory Default settings are as follows:
+#          7 6 5 4 3 2 1 0
+# S401     1 0 0 0 1 1 0 0
+# S402     0 0 0 0 0 0 0 0
+# (h19: I added <rmam>/<smam> based on the init string;
+# also added empty <acsc> to suppress a tic warning -- esr)
+h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode,
+	OTbs, am, mir, msgr,
+	cols#80, it#8, lines#24,
+	acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=^M, cub1=^H,
+	cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
+	cuu1=\E[1A, cvvis=\E[>4h, dch1=\E[1P, dl1=\E[1M$<1*>,
+	ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[1L$<1*>, ind=^J,
+	is2=\E<\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m\E[?7h,
+	kbs=^H, kcub1=\E[1D, kcud1=\E[1B, kcuf1=\E[1C, kcuu1=\E[1A,
+	kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP,
+	kf7=\EOQ, kf8=\EOR, khome=\E[H, lf6=blue, lf7=red, lf8=white,
+	ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, rmso=\E[m,
+	smacs=\E[10m, smam=\E[?7h, smir=\E[4h, smso=\E[7m,
+h19-bs|heathkit w/keypad shifted,
+	rmkx=\Eu, smkx=\Et, use=h19-b,
+h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor,
+	rmkx=\Eu, smkx=\Et, use=h19-u,
+# (h19: merged in <ip> from BSDI hp19-e entry>;
+# also added empty <acsc> to suppress a tic warning --esr)
+# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998
+# Tim tells us that:
+# I have an old Zenith-19 terminal at home that still gets a lot of use.
+# This terminal suffers from the same famous insert-mode padding lossage
+# that has been acknowledged for the Z29 terminal.  Emacs is nearly
+# unusable on this box, since even a half-scroll up or down the window
+# causes flaming terminal death.
+#
+# On the Z19, the only way I have found around this problem is to remove
+# the :al: and :dl: entries entirely.  No amount of extra padding will
+# help (I have tried up to 20000).  Removing <il1=\EL$> and <dl1=\EM$>
+# makes Emacs a little slower, but it remains in the land of the living.
+# Big win.
+h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19,
+	OTbs, am, eslok, hs, mir, msgr,
+	cols#80, it#8, lines#24,
+	acsc=~\^x`qanbkcjdmelfgg+hai.kwsutvutvozs{, bel=^G,
+	clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4,
+	dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=^J,
+	ip=<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW,
+	kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red,
+	lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
+	smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
+h19-u|heathkit with underscore cursor,
+	cnorm@, cvvis@, use=h19-b,
+h19-g|h19g|heathkit w/block cursor,
+	cnorm=\Ex4, cvvis@, use=h19-b,
+alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
+	lines#60,
+	dl1=\EM, il1=\EL, use=h19,
+
+# The major problem with the Z29 is that it requires more padding than the Z19.
+#
+# The problem with declaring an H19 to be synonymous with a Z29 is that
+# it needs more padding. It especially loses if a program attempts
+# to put the Z29 into insert mode and insert text at 9600 baud. It
+# even loses worse if the program attempts to insert tabs at 9600
+# baud. Adding padding to text that is inserted loses because in
+# order to make the Z29 not die, one must add so much padding that
+# whenever the program tries to use insert mode, the effective
+# rate is about 110 baud.
+#
+# What program would want to put the terminal into insert mode
+# and shove stuff at it at 9600 baud you ask?
+#
+# Emacs. Emacs seems to want to do the mathematically optimal
+# thing in doing a redisplay rather than the practical thing.
+# When it is about to output a line on top of a line that is
+# already on the screen, instead of just killing to the end of
+# the line and outputting the new line, it compares the old line
+# and the new line and if there are any similarities, it
+# constructs the new line by deleting the text on the old line
+# on the terminal that is already there and then inserting new
+# text into the line to transform it into the new line that is
+# to be displayed. The Z29 does not react kindly to this.
+#
+# But don't cry for too long.... There is a solution. You can make
+# a termcap entry for the Z29 that says the Z29 has no insert mode.
+# Then Emacs cannot use it. "Oh, no, but now inserting into a
+# line will be really slow", you say. Well there is a sort of a
+# solution to that too. There is an insert character option on
+# the Z29 that will insert one character. Unfortunately, it
+# involves putting the terminal into ansi mode, inserting the
+# character, and changing it back to H19 mode. All this takes 12
+# characters. Pretty expensive to insert one character, but it
+# works. Either Emacs doesn't try to use its inserting hack when
+# it's only given an insert character ability or the Z29 doesn't
+# require padding with this (the former is probably more likely,
+# but I haven't checked it out).
+# (z29: added empty <acsc> to suppress a tic warning, merged in
+# status line capabilities from BRL entry --esr)
+z29|zenith29|z29b|zenith z29b,
+	OTbs, OTpt, am, eslok, hs, mir, msgr,
+	OTkn#10, cols#80, lines#24,
+	OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4,
+	cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A,
+	cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1,
+	ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I,
+	ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
+	is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
+	kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
+	lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
+	rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
+	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
+# the world is stable. <rs1> causes the terminal to be reset to the state
+# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
+# cursor, bc -> block cursor.
+# From: Mike Meyers
+# (z29a: replaced nonexistent <if=/usr/local/share/tabset/zenith29> befause <hts>
+# looks vt100-compatible -- esr)
+z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
+	OTbs, OTpt, am, eslok, hs, mir, msgr,
+	OTkn#10, cols#80, it#8, lines#24,
+	OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
+	dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, home=\E[H,
+	ht=^I, hts=\EH, if=/usr/local/share/tabset/vt100, il=\E[%p1%dL,
+	ind=\ED, kbs=^H, kclr=\E[J, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, ked=\E[J, kf0=\E[~, kf1=\EOS,
+	kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
+	kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help, mc0=\E#7,
+	nel=^M\ED, rc=\E[r, rev=\E[7m, ri=\EM, rmcup=\E[?7h,
+	rmso=\E[m, rmul=\E[m,
+	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m,
+	sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m,
+	tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K,
+z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick and underscore cursor,
+	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m,
+	use=z29a,
+z29a-nkc-bc|h29a-nkc-bc|z29 ansi mode with block cursor and no keyclick,
+	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m,
+	use=z29a,
+z29a-nkc-uc|h29a-nkc-uc|z29 ansi mode with underscore cursor and no keyclick,
+	rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m,
+	use=z29a,
+# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
+z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
+	am, eslok, hs, mc5i, mir, msgr, xon,
+	cols#80, lines#24,
+	acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+	blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h,
+	clear=\E[2J\E[H, cnorm=\E[>5l, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+	dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
+	dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K,
+	fsl=\E[u, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L,
+	ind=^J, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
+	ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS,
+	kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
+	kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
+	mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
+	rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
+	rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
+	smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+	tsl=\E[s\E[>1h\E[25;%i%p1%dH,
+
+# From: Brad Brahms <Brahms@USC-ECLC>
+z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor,
+	cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw,
+# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
+z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc,
+	OTbs, OTpt, mir, msgr,
+	OTkn#10, cols#80, it#8, lines#24,
+	acsc=~\^x`qanbkcjdmelfgg+hai.kwsutvutvozs{,
+	clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA,
+	cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK,
+	home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB,
+	kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU,
+	kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI,
+	khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
+	smir=\E@, smso=\Ep,
+p19|h19-b with il1/dl1,
+	dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
+# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
+# (ztx: removed duplicate :sr: -- esr)
+ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11,
+	OTbs, am, eslok, hs,
+	cols#80, it#8, lines#24,
+	clear=\EE, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
+	dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I,
+	il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>,
+	kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
+	kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
+	ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
+	tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+
+#### IMS International (ims)
+#
+# There was a company called IMS International located in Carson City,
+# Nevada, that flourished from the mid-70s to mid-80s.  They made S-100
+# bus/Z80 hardware and a line of terminals called Ultimas.
+#
+
+# From: Erik Fair <fair@ucbarpa.berkeley.edu>  Sun Oct 27 07:21:05 1985
+ims950-b|bare ims950 no init string,
+	is2@, use=ims950,
+# (ims950: removed obsolete ":ko@:" -- esr)
+ims950|ims televideo 950 emulation,
+	xenl@,
+	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
+	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950,
+# (ims950-rv: removed obsolete ":ko@:" -- esr)
+ims950-rv|ims tvi950 rev video,
+	xenl@,
+	flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
+	kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
+ims-ansi|ultima2|ultimaII|IMS Ultima II,
+	OTbs, am,
+	cols#80, it#8, lines#24,
+	clear=\E[H\E[2J, cub1=^H, cud1=\ED,
+	cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K,
+	ht=^I, if=/usr/local/share/tabset/vt100,
+	is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM,
+	rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m,
+	smul=\E[4m,
+
+#### Intertec Data Systems
+#
+# I think this company is long dead as of 1995.  They made an early CP/M
+# micro called the "Intertec Superbrain" that was moderately popular,
+# then sank out of sight.
+#
+
+superbrain|intertec superbrain,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J,
+	cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
+	ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U,
+	kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L,
+# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>,
+# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM,
+# and the reverse is actually true.  Try it. -- esr)
+intertube|intertec|Intertec InterTube,
+	OTbs, am,
+	cols#80, lines#25,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
+	ind=^J, rmso=\E0@, smso=\E0P,
+# The intertube 2 has the "full duplex" problem like the tek 4025: if you
+# are typing and a command comes in, the keystrokes you type get interspersed
+# with the command and it messes up
+intertube2|intertec data systems intertube 2,
+	OTbs,
+	cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
+	el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c,
+	ll=^K^X\r, vpa=\013%p1%c, use=intertube,
+
+#### Ithaca Intersystems
+#
+# This company made S100-bus personal computers long ago in the pre-IBM-PC
+# past.  They used to be reachable at:
+#
+#	Ithaca Intersystems
+#	1650 Hanshaw Road
+#	Ithaca, New York 14850
+#
+# However, the outfit went bankrupt years ago.
+#
+
+# The Graphos III was a color graphics terminal from Ithaca Intersystems.
+# These entries were written (originally in termcap syntax) by Brian Yandell
+# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the
+# University of Wisconsin.
+
+# (graphos: removed obsolete and syntactically incorrect :kn=4:,
+# removed <if=/usr/local/share/tabset/init.graphos> and
+# <rf=/usr/local/share/tabset/init.graphos> no such file & no <hts> -- esr)
+graphos|graphos III,
+	am, mir,
+	cols#80, it#8, lines#24,
+	clear=\E[H\E[2J, cnorm=\Ez56;2;0;0z\Ez73z\Ez4;1;1z,
+	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A,
+	cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
+	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
+	kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
+	rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h,
+	smir=\E[4h, smso=\E[7m,
+graphos-30|graphos III with 30 lines,
+	lines#30,
+	cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,
+
+#### Modgraph
+#
+# These people used to be reachable at:
+#
+#	Modgraph, Inc
+#	1393 Main Street,
+#	Waltham, MA 02154
+#	Vox: (617)-890-5796.
+#
+# However, if you call that number today you'll get an insurance company.
+# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
+# 26 Feb 1997 that says:
+#
+# Modgraph GX-1000, replaced by GX-2000.  Both are out of production, have been
+# for ~7 years.  Modgraph still in business.  Products are rugged laptop and
+# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount
+# panel-mount etc).  I can be emailed at sonfour@aol.com
+#
+# Peter D. Smith <pdsmith@nbbn.com> notes that his modgraph manual was
+# dated 1984.  According to the manual, it featured Tek 4010/4014
+# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard.
+#
+
+modgraph|mod24|modgraph terminal emulating vt100,
+	xenl@,
+	cols#80, lines#24,
+	cvvis=\E\^9;0s\E\^7;1s,
+	is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s,
+	rf@, ri=\EM\E[K$<5/>, use=vt100,
+# The GX-1000 manual is dated 1984.  This looks rather like a VT-52.
+modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
+	am, da, db,
+	cols#80, it#8, lines#24,
+	clear=\EH\EJ$<50/>, cub1=^H, cuf1=\EC$<2/>,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>, cuu1=\EA$<2/>,
+	ed=\EJ$<50/>, el=\EK$<3/>, ht=^I,
+	is2=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1,
+	ri=\EI$<5/>,
+#
+# Modgraph from Nancy L. Cider <nancyc@brl-tbd>
+# BUG NOTE from Barbara E. Ringers <barb@brl-tbd>:
+# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a
+# mark and using delete-to-killbuffer work correctly.  However, we would
+# like normal mode of operation to be using a Modgraph with 48 line setting.
+# If we set TERM=mod (which is a valid entry in termcap with 48 lines)
+# the setting mark and delete-to-killbuffer results in the deletion of only
+# the line the mark is set on.
+# We've discovered that the delete-to-killbuffer works correctly
+# with TERM=mod and screen set to 80x48 but it's not obvious.  Only
+# the first line disappears but a ctrl-l shows that it did work
+# correctly.
+modgraph48|mod|Modgraph w/48 lines,
+	OTbs, OTpt, am, xenl,
+	cols#80, it#8, lines#48, vt#3,
+	OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+	flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q,
+	home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h,
+	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
+	ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
+	smso=\E[7m, smul=\E[4m,
+
+#### Morrow Designs
+#
+# This was George Morrow's company.  They started in the late 1970s making
+# S100-bus machines.  They used to be reachable at:
+#
+#        Morrow
+#        600 McCormick St.
+#        San Leandro, CA 94577
+#
+# but they're long gone now (1995).
+#
+
+# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
+# Jeff's specimen was dated June 1984.
+# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
+mt70|mt-70|Morrow MD-70; native Morrow mode,
+	am, mir, msgr, xon,
+	cols#80, it#8, lines#24,
+	acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G,
+	cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=^M, cub1=^H,
+	cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>,
+	cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>,
+	flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE,
+	ind=^J, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r,
+	kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r,
+	kcuu1=^AJ\r, kdch1=\177, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r,
+	kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r,
+	kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_,
+	rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E],
+	smul=\EG1, tbc=\E0, use=adm+sgr,
+
+#### Motorola
+#
+
+# Motorola EXORterm 155	from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL
+# (Seth H Zirin)
+ex155|Motorola Exorterm 155,
+	OTbs, am, bw,
+	OTkn#5, OTug#1, cols#80, lines#24,
+	cbt=\E[, clear=\EX, cud1=\EB, cuf1=\ED,
+	cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU,
+	home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
+	kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
+	rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED,
+
+#### Omron
+#
+# This company is still around in 1995, manufacturing point-of-sale systems.
+
+omron|Omron 8025AG,
+	OTbs, am, da, db,
+	cols#80, lines#24,
+	bel=^G, clear=\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, cuu1=\EA,
+	cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH,
+	il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef,
+
+#### Ramtek
+#
+# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they
+# were competition for things like the Tektronics 4025.
+#
+
+# Ramtek 6221 from BRL, probably by Doug Gwyn
+# The following SET-UP modes are assumed for normal operation:
+#	UNDERLINE_CURSOR	ANSI_MODE	AUTO_XON/XOFF_ON
+#	NEWLINE_OFF		80_COLUMNS
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements; I recommend
+#	SMOOTH_SCROLL	AUTO_REPEAT_ON	3_#_SHIFTED	WRAP_AROUND_ON
+# Hardware tabs are assumed to be every 8 columns; they can be set up by the
+# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this).
+# Note that the Control-E key is useless on this brain-damaged terminal.  No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+rt6221|Ramtek 6221 80x24,
+	OTbs, OTpt, msgr, xon,
+	OTkn#4, cols#80, it#8, lines#24, vt#3,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l,
+	clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=^M,
+	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+	cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I,
+	hts=\EH, ind=^J, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR,
+	kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H,
+	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>,
+	rmso=\E[m, rmul=\E[m,
+	rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h\E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#5\E>,
+	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g,
+# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
+rt6221-w|Ramtek 6221 160x48,
+	cols#160, lines#48,
+	ll=\E[48;1H, use=rt6221,
+
+#### RCA
+#
+
+# RCA VP3301 or VP3501
+rca|rca vp3301/vp3501,
+	OTbs,
+	cols#40, lines#24,
+	clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1,
+
+
+#### Selanar
+#
+
+# Selanar HiREZ-100 from BRL, probably by Doug Gwyn
+# The following SET-UP modes are assumed for normal operation:
+#	SET_DEFAULT_TABS	48_LINES		80_COLUMNS
+#	ONLINE			ANSI			CURSOR_VISIBLE
+#	VT102_AUTO_WRAP_ON	VT102_NEWLINE_OFF	VT102_MONITOR_MODE_OFF
+#	LOCAL_ECHO_OFF		US_CHAR_SET		WPS_TERMINAL_DISABLED
+#	CPU_AUTO_XON/XOFF_ENABLED			PRINT_FULL_SCREEN
+# For use with graphics software, all graphics modes should be set to factory
+# default.  Other SET-UP modes may be set for operator convenience or
+# communication requirements.  No delays are specified; use "stty ixon -ixany"
+# to enable DC3/DC1 flow control!
+# I commented out the scrolling capabilities since they are too slow.
+hirez100|Selanar HiREZ-100,
+	OTbs, OTpt, mir, msgr, xon,
+	OTkn#4, cols#80, it#8, lines#48, vt#3,
+	acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+	cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	hts=\EH, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
+	kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
+	lf3=PF4, ll=\E[48H, mc0=\E[i, mc4=\E[4i\E[?4i,
+	mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O,
+	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+	rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>,
+	sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g,
+hirez100-w|Selanar HiREZ-100 in 132-column mode,
+	cols#132, use=hirez100,
+
+#### Signetics
+#
+
+# From University of Wisconsin
+vsc|Signetics Vsc Video driver by RMC,
+	am, msgr,
+	cols#80, it#8, lines#26,
+	clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+	ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rev=^_\s,
+	rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",
+
+#### Soroc
+#
+# Alan Frisbie <frisbie@flying-disk.com> writes:
+#
+# As you may recall, the Soroc logo consisted of their name,
+# with the letter "S" superimposed over an odd design.   This
+# consisted of a circle with a slightly smaller 15 degree (approx.)
+# wedge with rounded corners inside it.   The color was sort of
+# a metallic gold/yellow.
+#
+# If I had been more of a beer drinker it might have been obvious
+# to me, but it took a clue from their service department to make
+# me exclaim, "Of course!"   The circular object was the top of
+# a beer can (the old removable pop-top style) and "Soroc" was an
+# anagram for "Coors".
+#
+# I can just imagine the founders of the company sitting around
+# one evening, tossing back a few and trying to decide what to
+# call their new company and what to use for a logo.
+#
+
+# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
+soroc120|iq120|soroc|soroc iq120,
+	clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J,
+	kcuf1=^L, kcuu1=^K, use=adm3a,
+soroc140|iq140|soroc iq140,
+	OTbs, am, mir,
+	cols#80, lines#24,
+	bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew,
+	dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=^J,
+	kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A@\r, kf2=^AA\r,
+	kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+	kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8,
+	rmso=\E\177, rmul=\E^A, smir=\E9, smso=\E\177, smul=\E^A,
+
+#### Southwest Technical Products
+#
+# These guys made an early personal micro called the M6800.
+# The ct82 was probably its console terminal.
+#
+
+# (swtp: removed obsolete ":bc=^D:" -- esr)
+swtp|ct82|southwest technical products ct82,
+	am,
+	cols#82, lines#20,
+	bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, cuf1=^S,
+	cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F,
+	home=^P, ich1=^\^X, il1=^\^Y, ind=^N,
+	is2=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011,
+	ll=^C, ri=^O, rmso=^^^F, smso=^^^V,
+
+#### Synertek
+#
+# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995):
+#
+# Synertek used to make ICs, various 6502-based single-board process
+# control and hobbyist computers, and assorted peripherals including a
+# series of small inexpensive terminals (I think they were one of the
+# first to have a "terminal-on-a-keyboard", where the terminal itself
+# was only slightly larger than the keyboard).
+#
+# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40
+# was a 40x24 terminal that could connect to a standard TV through a
+# video modulator.  The KTM-2/80 was the 80-column version (the 2/40
+# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM).
+# I have a KTM-2/80 still in working order.  The KTM-2s had fully
+# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program
+# ROM and 2 ROMs as character generators. They were incredibly simple,
+# and I've never had any problems with mine (witness the fact that mine
+# was made in 1981 and is still working great... I've blown the video
+# output transistor a couple of times, but it's a 2N2222 :-)
+#
+# The KTM-3 (which is what is listed in the terminfo file) was their
+# attempt at putting a KTM-2 in a box (and some models came with a
+# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
+# control and escape sequences are very different. The KTM-3 was always
+# real broken, at least according to the folks I've talked to about it.
+#
+# The padding in the entry is probably off--these terminals were very
+# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
+# anyone with any sanity replaced the ROMs with something that provided
+# a reasonable subset of VT100 functionality, since the usual ROMs were
+# obviously very primitive... oh, you could get an upgraded ROM from
+# Synertek for some incredible amount of money, but what hacker with an
+# EPROM burner would do that? :)
+#
+# Sorry I don't have any contact info; I believe they were located in
+# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
+# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
+# business these days.
+#
+
+# Tested, seems to work fine with vi.
+synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
+	am,
+	cols#80, lines#24,
+	clear=^Z, cub1=^H, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
+
+#### Tab Office Products
+#
+#	TAB Products Co. - Palo Alto, California
+#	Electronic Office Products,
+#	1451 California Avenue 94304
+#
+# I think they're out of business.
+#
+
+# The tab 132 uses xon/xoff, so no padding needed.
+# <smkx>/<rmkx> have nothing to do with arrow keys.
+# <is2> sets 80 col mode, normal video, autowrap on (for <am>).
+# Seems to be no way to get rid of status line.
+# The manual for this puppy was dated June 1981.  It claims to be VT52-
+# compatible but looks more vt100-like.
+tab132|tab|tab132-15|tab 132/15,
+	da, db,
+	OTdN@, cols#80, lines#24, lm#96,
+	cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
+	il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B,
+	kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, use=vt100,
+tab132-w|tab132 in wide mode,
+	cols#132,
+	is2=\E[?7h\E[?3h\E[?5l, use=tab132,
+tab132-rv|tab132 in reverse-video mode,
+	is2=\E[?7h\E[?3l\E[?5h, use=tab132,
+tab132-w-rv|tab132 in reverse-video/wide mode,
+	is2=\E[?7h\E[?3h\E[?5h, use=tab132-w,
+
+
+#### Teleray
+#
+#	Research Incorporated
+#	6425 Flying Cloud Drive
+#	Eden Prairie, MN 55344
+#	Vox: (612)-941-3300
+#
+# The Teleray terminals were all discontinued in 1992-93.  RI still services
+# and repairs these beasts, but no longer manufactures them.  The Teleray
+# people believe that all the types listed below are very rare now (1995).
+# There was a newer line of Telerays (Model 7, Model 20, Model 30, and
+# Model 100) that were ANSI-compatible.
+#
+# Note two things called "teleray".  Reorder should move the common one
+# to the front if you have either.  A dumb teleray with the cursor stuck
+# on the bottom and no obvious model number is probably a 3700.
+#
+
+t3700|dumb teleray 3700,
+	OTbs,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J,
+t3800|teleray 3800 series,
+	OTbs,
+	cols#80, it#8, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
+	home=\EH, ht=^I, ind=^J, ll=\EY7\s,
+t1061|teleray|teleray 1061,
+	OTbs, am, km, xhp, xt,
+	cols#80, it#8, lines#24, xmc#1,
+	bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+	dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF,
+	ich1=\EP, il1=\EL$<2*>, ind=^J, ip=$<0.4*>,
+	is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef,
+	kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7,
+	kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH,
+	tbc=\EG,
+t1061f|teleray 1061 with fast PROMs,
+	dl1=\EM, il1=\EL, ip@, use=t1061,
+# "Teleray Arpa Special", officially designated as
+# "Teleray Arpa network model 10" with "Special feature 720".
+# This is the new (1981) fast microcode updating the older "arpa" proms
+# (which gave meta-key and programmable-fxn keys).  720 is much much faster,
+# converts the keypad to programmable function keys, and has other goodies.
+# Standout mode is still broken (magic cookie, etc) so is suppressed as no
+# programs handle such lossage properly.
+# Note: this is NOT the old termcap's "t1061f with fast proms."
+# From: J. Lepreau <lepreau@utah-cs> Tue Feb  1 06:39:37 1983, Univ of Utah
+# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr)
+t10|teleray 10 special,
+	OTbs, km, xhp, xt,
+	cols#80, it#8, lines#24, xmc#2,
+	clear=\Ej$<30/>, cub1=^H, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+	dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
+	ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD,
+	smul=\ERH,
+# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and
+# back/forth words. Put the function keys (f1-f10) where they can be
+# found, and turn off the other magic keys along the top row, except
+# for line/local. Do the magic appropriate to make the page shifts work.
+# Also toggle ^S/^Q for those of us who use Emacs.
+t16|teleray 16,
+	am, da, db, mir, xhp, xt,
+	cols#80, lines#24,
+	bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L,
+	ind=^J, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
+	kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T,
+	rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, rmso=\E[m,
+	rmul=\E[m, sgr0=\E[m, smcup=\E[U\E[?38l, smir=\E[4h,
+	smso=\E[7m, smul=\E[4m,
+
+#### Texas Instruments (ti)
+#
+
+# The Silent 700 was so called because it was built around a quiet thermal
+# printer.  It was portable, equipped with an acoustic coupler, and pretty
+# neat for its day.
+ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800,
+	OTbs, hc, os,
+	cols#80,
+	bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J,
+
+#
+# Texas Instruments 916 VDT 7 bit control mode
+#
+ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
+	da, db, in, msgr,
+	cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>,
+	cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB,
+	cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+	dch=\E[%p1%dP$<250>, dch1=\E[P, dl=\E[%p1%dM,
+	ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, el1=\E[1K,
+	enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
+	hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>,
+	il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H,
+	kcmd=\E[29~, kdch1=\E[P, kent=^J, kf1=\E[17~, kf10=\E[28~,
+	kf11=\E[29~, kf12=\E[31~, kf2=\E[18~, kf3=\E[19~,
+	kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
+	kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T,
+	kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@,
+	smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+	use=vt220,
+#
+# Texas Instruments 916 VDT 8 bit control mode
+#
+ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL,
+	kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
+	kcuu1=\233A, kdch1=\233P, kent=^J, kf1=\23317~,
+	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
+	kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
+	kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
+	kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
+#
+# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
+#
+ti916-132|Texas Instruments 916 VDT vt220 132 column,
+	cols#132, use=ti916,
+#
+# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode
+#
+ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column,
+	cols#132, use=ti916-8,
+ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
+	OTbs, am, xon,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
+	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
+	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kf1=\EOP, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
+	kf8=\E[19~, kf9=\E[20~, kich1=\E[@, rc=\E8, rev=\E[7m,
+	ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g,
+ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL,
+	am, xon,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+	clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M,
+	csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+	cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
+	il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=P$<\233>, kf1=P$<\217>,
+	kf2=Q$<\217>, kf3=R$<\217>, kf4=S$<\217>, kf5=~$<\23316>,
+	kf6=~$<\23317>, kf7=~$<\23318>, kf8=~$<\23319>,
+	kf9=~$<\23320>, kich1=@$<\233>, rc=\E8, rev=\E[7m, ri=\EM,
+	rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
+	smul=\E[4m, tbc=\E[3g,
+ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode,
+	cols#132, use=ti924,
+ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
+	cols#132, use=ti924-8,
+ti931|Texas Instruments 931 VDT,
+	OTbs, am, xon,
+	cols#80, lines#24,
+	bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED,
+	cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
+	ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
+	is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+	kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
+	kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
+	kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
+	sgr0=\E4@, smso=\E4A, smul=\E4D,
+ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
+	csr@, ind=\E[1S, ri=\E[1T, use=ti924,
+# (ti926-8: I corrected this from the broken SCO entry -- esr)
+ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL,
+	csr@, ind=\2331S, ri=\2331T, use=ti924-8,
+ti_ansi|basic entry for ti928,
+	am, bce, eo, xenl, xon,
+	colors#8, cols#80, it#8, lines#25, pairs#64,
+	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
+	cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
+	cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+	dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
+	il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
+	kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
+	kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
+	op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
+	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
+	smso=\E[7m, smul=\E[4m,
+#
+#       928 VDT 7 bit control mode
+#
+ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
+	kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~,
+	kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~,
+	kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~,
+	kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
+	kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
+#
+#       928 VDT 8 bit control mode
+#
+ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
+	kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~,
+	kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~,
+	kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~,
+	kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~,
+	kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S,
+	kpp=\233T, kprt=\23335~, use=ti_ansi,
+
+#### Zentec (zen)
+#
+
+# (zen30: removed obsolete :ma=^L ^R^L^K^P:.  This entry originally
+# had just <smso>=\EG6 which I think means standout was supposed to be
+# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
+# <invis> might work-- esr)
+zen30|z30|zentec 30,
+	OTbs, am, mir, ul,
+	cols#80, lines#24,
+	bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+	dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^,
+	il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6,
+	smul@, use=adm+sgr,
+# (zen50: this had extension capabilities
+#	:BS=^U:CL=^V:CR=^B:
+# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
+# which were also in the original entry -- esr)
+# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
+zen50|z50|zentec zephyr,
+	OTbs, am,
+	cols#80, lines#24, xmc#1,
+	clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+	cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE,
+	invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+	rmul@, smul@, use=adm+sgr,
+
+# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
+cci|cci1|z8001|zen8001|CCI Custom Zentec 8001,
+	OTbs, am, bw,
+	cols#80, lines#24,
+	blink=\EM", clear=\EH\EJ, cnorm=\EP,
+	csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^J,
+	cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+	cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH,
+	invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED,
+	kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
+	rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
+	smso=\EM$, smul=\EM0,
+
+######## OBSOLETE UNIX CONSOLES
+#
+
+#### Apollo consoles
+#
+# Apollo got bought by Hewlett-Packard.  The Apollo workstations are
+# labeled HP700s now.
+#
+
+# From: Gary Darland <goodmanc@garnet.berkeley.edu>
+apollo|apollo console,
+	OTbs, am, mir,
+	cols#88, lines#53,
+	clear=^L, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL,
+	ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED,
+	rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ,
+	smso=\ES, smul=\EU, vpa=\EO+\s,
+
+# We don't know whether or not the apollo guys replicated DEC's firmware bug
+# in the VT132 that reversed <rmir>/<smir>.  To be on the safe side, disable
+# both these capabilities.
+apollo_15P|apollo 15 inch display,
+	rmir@, smir@, use=vt132,
+apollo_19L|apollo 19 inch display,
+	rmir@, smir@, use=vt132,
+apollo_color|apollo color display,
+	rmir@, smir@, use=vt132,
+
+#### Convergent Technology
+#
+# Burroughs bought Convergent shortly before it merged with Univac.
+# CTOS is (I believe) dead.  Probably the aws is too (this entry dates
+# from 1991 or earlier).
+#
+
+# Convergent AWS workstation from Gould/SEL UTX/32 via BRL
+# (aws: removed unknown :dn=^K: -- esr)
+aws|Convergent Technologies AWS workstation under UTX and Xenix,
+	am,
+	OTug#0, cols#80, lines#28, xmc#0,
+	OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=^J, acsc=,
+	clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A,
+	dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c,
+	ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K,
+	kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF,
+	rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN,
+	vpa=\EV%p1%c,
+awsc|Convergent Technologies AWS workstation under CTOS,
+	am,
+	OTug#0, cols#80, lines#24, xmc#0,
+	OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L,
+	cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF,
+	el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A,
+	rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE,
+	smul=\EAC,
+
+#### DEC consoles
+#
+
+# The MicroVax console.  Tim Theisen <tim@cs.wisc.edu> writes:
+# The digital uVax II's had a graphic display called a qdss.  It was
+# supposed to be a high performance graphic accelerator, but it was
+# late to market and barely appeared before faster dumb frame buffers
+# appeared.  I have only used this display while running X11.  However,
+# during bootup, it was in text mode, and probably had a terminal emulator
+# within it.  And that is what your termcap entry is for.  In graphics
+# mode the screen size is 1024x864 pixels.
+qdss|qdcons|qdss glass tty,
+	OTbs, am,
+	cols#128, lines#57,
+	clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\E=%p1%c%p2%c, cuu1=^K,
+
+#### Fortune Systems consoles
+#
+# Fortune made a line of 68K-based UNIX boxes that were pretty nifty
+# in their day; I (esr) used one myself for a year or so around 1984.
+# They had no graphics, though, and couldn't compete against Suns and
+# the like.  R.I.P.
+#
+
+# From: Robert Nathanson <c160-3bp@Coral> via tut   Wed Oct 5, 1983
+# (This had extension capabilities
+#	:rv=\EH:re=\EI:rg=0:GG=0:\
+#	:CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\
+#	:RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\
+#	:PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F:
+# It had both ":bs:" and ":bs=^H:"; I removed the latter.  Also, it had
+# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily)
+# to force both magic cookie glitches off.  Once upon a time, I
+# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are
+# function keys; thus the "Al" value for HM was certainly an error.  I renamed
+# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC.
+# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent
+# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard
+# names below.  I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
+fos|fortune|Fortune system,
+	OTbs, am, bw,
+	cols#80, lines#25,
+	acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E],
+	clear=\014$<20>, cnorm=\E\\, cr=^M, cub1=^H, cud1=\n$<3>,
+	cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>,
+	cvvis=\E\:, dch1=\034W$<5>, dl1=\034R$<15>,
+	ed=\034Y$<3*>, el=^\Z, home=\036$<10>, ht=^Z,
+	ich1=\034Q$<5>, il1=\034E$<15>, ind=^J, is2=^_.., kbs=^H,
+	kcub1=^Aw\r, kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r,
+	kend=^Ak\r, kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r,
+	kf4=^Ad\r, kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r,
+	khome=^A?\r, knp=^Ao\r, kpp=^An\r, nel=^M^J, rev=\EH,
+	rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo,
+	smso=^\H`, smul=^\HP,
+
+#### Masscomp consoles
+#
+# Masscomp has gone out of business.  Their product line was purchased by
+# comany in Georgia (US) called "XS International", parts and service may
+# still be available through them.
+#
+
+# (masscomp: ":MT:" changed to ":km:";  -- esr)
+masscomp|masscomp workstation console,
+	OTbs, km, mir,
+	cols#80, it#8, lines#24,
+	clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
+	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
+	rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
+masscomp1|masscomp large screen version 1,
+	cols#104, lines#36, use=masscomp,
+masscomp2|masscomp large screen version 2,
+	cols#64, lines#21, use=masscomp,
+
+######## OTHER OBSOLETE TYPES
+#
+# These terminals are *long* dead -- these entries are retained for
+# historical interest only.
+#
+
+#### Obsolete non-ANSI software emulations
+#
+
+# CTRM terminal emulator
+# 1. underlining is not allowed with colors: first, is is simulated by
+# black on white, second, it disables background color manipulations.
+# 2. BLINKING, REVERSE and BOLD are allowed with colors,
+# so we have to save their status in the static registers A, B and H
+# respectively, to be able to restore them when color changes
+# (because any color change turns off ALL attributes)
+# 3. <bold> and <rev> sequences alternate modes,
+# rather than simply  entering them.  Thus we have to check the
+# static register B and H to determine the status, before sending the
+# escape sequence.
+# 4. <sgr0> now must set the status of all 3 register (A,B,H) to zero
+# and then reset colors
+# 5. implementation of the protect mode would badly penalize the performance.
+# we would have to use \E&bn sequence to turn off colors (as well as all
+# other attributes), and keep the status of protect mode in yet another
+# static variable.  If someone really needs this mode, they would have to
+# create another terminfo entry.
+# 6. original color-pair is white on black.
+# store the information about colors into static registers
+# 7. set foreground color.  it performs the following steps.
+#   1) turn off all attributes
+#   2) turn on the background and video attributes that have been turned
+#      on before (this information is stored in static registers X,Y,Z,A,B,H,D).
+#   3) turn on foreground attributes
+#   4) store information about foreground into U,V,W static registers
+# 8. turn on background: similar to turn on foreground above
+ctrm|C terminal emulator,
+	am, bce, xon,
+	colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0,
+	pairs#63, pb#19200, vt#6,
+	bel=^G, blink=\E&dA%{1}%PA,
+	bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei,
+	clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM,
+	ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1,
+	il1=\EL, ind=^J, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
+	kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r,
+	kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r,
+	kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r,
+	op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU,
+	rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA,
+	setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t\E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX,
+	setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t\E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU,
+	sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2%t\E&dD%;,
+	sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB,
+	smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+
+# gs6300 - can't use blue foreground, it clashes with underline;
+# it's simulated with cyan
+# Bug: The <op> capability probably resets attributes.
+# (gs6300: commented out <rmln> (no <smln>) --esr)
+gs6300|emots|AT&T PC6300 with EMOTS terminal emulator,
+	am, bce, msgr, xon,
+	colors#8, cols#80, it#8, lines#24, pairs#63,
+	acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+	ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+	is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s,
+	kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s,
+	khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
+	ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
+	setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
+	sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,
+
+# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
+# MS-Kermit with Heath-19 emulation mode enabled
+# (h19k: changed ":pt@:" to ":it@"
+h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin),
+	am@, da, db, xt,
+	it@,
+	ht@, use=h19-u,
+
+# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy
+# Software (formerly Peripherals Computers & Supplies, Inc) of
+# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376.  They can
+# also be reached at support@synergy.com.
+versaterm|versaterm vt100 emulator for the macintosh,
+	am, xenl,
+	cols#80, it#8, lines#24,
+	bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+	clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+	cub1=^H, cud1=^J, cuf1=\E[C$<2/>,
+	cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
+	dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, ed=\E[J$<50/>,
+	el=\E[K$<3/>, home=\E[H, ht=^I, ich1=\E[1@$<7/>,
+	il1=\E[1L$<9/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD,
+	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, nel=^M^J, rc=\E8, rev=\E[7m$<2/>,
+	rf=/usr/local/share/tabset/vt100, ri=\EM$<5/>,
+	rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>,
+	sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>,
+	smul=\E[4m$<2/>,
+
+# From: Rick Thomas <ihnp4!btlunix!rbt>
+# (xtalk: I added <rmam>/<smam> based on the init string.
+xtalk|IBM PC with xtalk communication program (versions up to 3.4),
+	am, mir, msgr, xon,
+	cols#80, it#8, lines#24, vt#3, xmc#1,
+	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+	bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H,
+	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+	cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>,
+	el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH,
+	il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+	kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
+	rmkx=\E[?1l\E>, rmso=\E[m\s,
+	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
+	smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
+	tbc=\E[3g, use=vt100+fnkeys,
+
+# The official PC terminal emulator program of the AT&T Product Centers.
+# Note - insert mode commented out - doesn't seem to work on AT&T PC.
+simterm|attpc running simterm,
+	am,
+	cols#80, lines#24,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC,
+	cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER,
+	dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=^J, rmcup=\EVE,
+	rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB,
+
+#### Daisy wheel printers
+#
+# This section collects Diablo, DTC, Xerox, Qume, and other daisy
+# wheel terminals.  These are now largely obsolete.
+#
+
+# (diablo1620: removed <if=/usr/local/share/tabset/xerox1720>, no such file -- esr)
+diablo1620|diablo1720|diablo450|ipsi|diablo 1620,
+	hc, os,
+	cols#132, it#8,
+	cub1=^H, cud1=^J, cuu1=\E^J, hd=\ED, hpa=\E\011%i%p1%c,
+	ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2,
+diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin,
+	cols#124,
+	is2=\r        \E9, use=diablo1620,
+# (diablo1640: removed <if=/usr/local/share/tabset/xerox1730>, no such file -- esr)
+diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640,
+	bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE,
+	use=diablo1620,
+# (diablo1640-lm: removed <if=/usr/local/share/tabset/xerox1730-lm>, no such
+# file -- esr)
+diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin,
+	cols#124,
+	rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620,
+diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer,
+	use=diablo1640-lm,
+# DTC 382 with VDU.  Has no <ed> so we fake it with <el>.  Standout
+# <smso=^P\s\002^PF> works but won't go away without dynamite <rmso=^P\s\0>.
+# The terminal has tabs, but I'm getting tired of fighting the braindamage.
+# If no tab is set or the terminal's in a bad mood, it glitches the screen
+# around all of memory.  Note that return puts a blank ("a return character")
+# in the space the cursor was at, so we use ^P return (and thus ^P newline for
+# newline).  Note also that if you turn off :pt: and let Unix expand tabs,
+# curses won't work (some old BSD versions) because it doesn't clear this bit,
+# and cursor addressing sends a tab for row/column 9.  What a losing terminal!
+# I have been unable to get tabs set in all 96 lines - it always leaves at
+# least one line with no tabs in it, and once you tab through that line,
+# it completely weirds out.
+# (dtc382: change <rmcup> to <smcup> -- it  just does a clear --esr)
+dtc382|DTC 382,
+	am, da, db, xhp,
+	cols#80, lines#24, lm#96,
+	bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P^M, cub1=^H,
+	cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB,
+	dch1=^X, dl1=^P^S, ed=\020\025\020\023\020\023, el=^P^U,
+	home=^P^R, il1=^P^Z, ind=^J, pad=\177, rmcup=, rmir=^Pi,
+	rmul=^P \0, smcup=\020\035$<20>, smir=^PI, smul=^P ^P,
+dtc300s|DTC 300s,
+	hc, os,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
+	hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3,
+gsi|mystery gsi terminal,
+	hc, os,
+	cols#132,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH,
+	ind=^J,
+aj830|aj832|aj|anderson jacobson,
+	hc, os,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
+	ind=^J,
+# From: Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST
+aj510|Anderson-Jacobson model 510,
+	am, mir,
+	cols#80, lines#24,
+	clear=^L, cub1=^H, cuf1=\EX,
+	cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY,
+	dch1=.1*\E'D, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=,
+	il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ,
+	kcuf1=\EX, kcuu1=\EY, pad=\177, rmcup=\E"N, rmir=\E'J,
+	rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I,
+	smul=\E"U,
+# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
+# This is incomplete, but it's a start.
+nec5520|nec|spinwriter|nec 5520,
+	hc, os,
+	cols#132, it#8,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E9, ff=^L,
+	hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=^J,
+	kbs=^H, tbc=\E3,
+qume5|qume|Qume Sprint 5,
+	hc, os,
+	cols#80, it#8,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I,
+	hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3,
+# I suspect the xerox 1720 is the same as the diablo 1620.
+xerox1720|x1720|x1750|xerox 1720,
+	hc, os,
+	cols#132, it#8,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ht=^I, hts=\E1, ind=^J,
+	tbc=\E2,
+
+#### Miscellaneous obsolete terminals, manufacturers unknown
+#
+# If you have any information about these (like, a manufacturer's name,
+# and a date on the serial-number plate) please send it!
+
+cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars,
+	OTbs, am,
+	cols#73, lines#36,
+	clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^,
+cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars,
+	OTbs, am,
+	cols#85, lines#39,
+	clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3,
+	kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7,
+	kf4=\E8, rmso=\Em^C, smso=\Em^L,
+cops10|cops|cops-10|cops 10,
+	am, bw,
+	cols#80, lines#24,
+	bel=^G, clear=\030$<30/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+	cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V,
+	ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+	khome=^Y,
+# (d132: removed duplicate :ic=\E5:,
+# merged in capabilities from a BRL entry -- esr)
+d132|datagraphix|datagraphix 132a,
+	da, db, in,
+	cols#80, lines#30,
+	bel=^G, clear=^L, cnorm=\Em\En, cr=^M, cub1=^H, cud1=^J,
+	cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex,
+	dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=^J, kbs=^H,
+	kcub1=^H, kcud1=^J, nel=^M^J, ri=\Ew,
+# The d800 was an early portable terminal from c.1984-85 that looked a lot
+# like the original Compaq `lunchbox' portable (but no handle).  It had a vt220
+# mode (which is what this entry looks like) and several other lesser-known
+# emulations.
+d800|Direct 800/A,
+	OTbs, am, da, db, msgr, xhp,
+	cols#80, it#8, lines#24,
+	acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
+	bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=^M, cub1=^H,
+	cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+	cvvis=\E[>12l, ed=\E[J, el=\E[K, ht=^I, ind=\ED, kcub1=\E[D,
+	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+	ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smacs=\E[1m, smso=\E[7m, smul=\E[4m,
+digilog|digilog 333,
+	OTbs,
+	cols#80, lines#16,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X,
+	home=^N, ind=^J,
+# The DWK was a terminal manufactured in the Soviet Union c.1986
+dwk|dwk-vt|dwk terminal,
+	am,
+	cols#80, it#8, lines#24,
+	acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_,
+	bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+	ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177,
+	kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
+	kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
+	kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh,
+	kpp=\Eg, nel=^M^J, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
+	sgr0=\EX, smacs=\EF, smso=\ET,
+env230|envision230|envision 230 graphics terminal,
+	xenl@,
+	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+	sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
+	use=vt100,
+# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
+# coupler attached, the whole rig fitting in a suitcase and more or less
+# portable.  Hot stuff for c.1977 :-) -- esr
+ep48|ep4080|execuport 4080,
+	OTbs, am, os,
+	cols#80,
+	bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J,
+ep40|ep4000|execuport 4000,
+	cols#136, use=ep4080,
+# Adam Thompson <athompso@pangea.ca> tells us:
+# Informer series - these are all portable units, resembling older
+# automatic bread-baking machines.  The terminal looks like a `clamshell'
+# design, but isn't.  The structure is similar to the Direct terminals,
+# but only half the width.  The entire unit is only about 10" wide.
+# It features an 8" screen (6" or 7" if you have color!), and an 9"x6"
+# keyboard.  All the keys are crammed together, much like some laptop
+# PCs today, but perhaps less well organized...all these units have a
+# bewildering array of plugs on the back, including a built-in modem.
+# The 305 was a color version of the 304; the 306 and 307 were mono and
+# color terminals built for IBM bisync protocols.
+# From: Paul Leondis <unllab@amber.berkeley.edu>
+ifmr|Informer D304,
+	OTbs, am,
+	cols#80, lines#24,
+	clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC,
+	cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\,
+	ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK,
+	smso=\EJ,
+# Entry largely based on wy60 and has the features of wy60ak.
+opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
+	am, bw, hs, km, mir, msgr, ul, xon,
+	cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80,
+	acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
+	cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=^M,
+	cub1=^H, cud1=^J, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K,
+	dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r,
+	ed=\EY$<100>, el=\ET, fsl=^M, home=\036$<2>, ht=\011$<5>,
+	hts=\E1, if=/usr/local/share/tabset/std, il1=\EE$<4>, ind=^J,
+	ip=$<3>,
+	is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12,
+	kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY,
+	kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r,
+	kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+	kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+	kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+	kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
+	mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
+	pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+	pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+	pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
+	rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
+	rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
+	rs3=\EwG\Ee($<150>,
+	sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+	sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
+	smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
+	smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
+	uc=\EG8\EG0, use=adm+sgr,
+teletec|Teletec Datascreen,
+	OTbs, am,
+	cols#80, lines#24,
+	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K,
+	home=^^, ind=^J,
+# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
+# This description is for the LANPAR Technologies VISION 3220
+# terminal from 1984/85.  The function key definitions k0-k5 represent the
+# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
+# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys.
+#
+# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
+# I had a couple of scopes (3221) like this once where I used to work, around
+# the 1987 time frame if memory serves me correctly.  These scopes were made
+# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
+# compatible.  The 3220 was a plain text terminal like the VT-220, the 3221
+# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
+# was like the VT-241 (color with Regis + Sixel Graphics).  These terminals
+# (3221) cost about $1500 each, and one was always broken -- had to be sent
+# back to the shop for repairs.
+# The only real advantage these scopes had over the VT-240's were:
+# 1) They were faster in the Regis display, or at least the ones I did
+# 2) They had a handy debugging feature where you could split-screen the
+# scope, the graphics would appear on the top, and the REGIS commands would
+# appear on the bottom.  I don't remember the VT-240s being able to do that.
+# I would swear that LANPAR Technologies was in MA someplace, but since I
+# don't work at the same place anymore, and those terminals and manuals were
+# long since junked, I cannot be any more sure than that.
+#
+# (v3220: removed obsolete ":kn#10:",
+# I added <rmam>/<smam> based on the init string -- esr)
+v3220|LANPAR Vision II model 3220/3221/3222,
+	OTbs, am, mir, xenl,
+	cols#80, it#8, lines#24,
+	clear=\E[H\E[J, cub1=^H, cuf1=\E[C,
+	cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+	ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
+	is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
+	kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
+	kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
+	kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
+	rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+	smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+######## ICH/ICH1 VERSUS RMIR/SMIR
+#
+# Some non-curses applications get confused if both ich/ich1 and rmir/smir
+# are present; the symptom is doubled characters in an update using insert.
+# These applications are technically correct; in both 4.3BSD termcap and
+# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir
+# unless the terminal needs both.  To my knowledge, no terminal still in this
+# file requires both other than the very obsolete dm2500.
+#
+# For ncurses-based applications this is not a problem, as ncurses uses
+# one or the other as appropriate but never mixes the two.  Therefore we
+# have not corrected entries like `linux' and `xterm' that specify both.
+# If you see doubled characters from these, use the linux-nic and xterm-nic
+# entries that suppress ich/ich1.  And upgrade to ncurses!
+#
+
+######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS
+#
+# ANSI X3.64 has been withdrawn and replaced by ECMA-48.  The ISO 6429 and
+# ECMA-48 standards are said to be almost identical, but are not the same
+# as X3.64 (though for practical purposes they are close supersets of it).
+#
+# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch
+# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for
+# Coded Character Sets"), include your snail-mail address, and you should
+# receive the document in due course.  Don't expect an email acknowledgement.
+#
+# Related standards include "X3.4-1977: American National Standard Code for
+# Information Interchange" (the ASCII standard) and "X3.41.1974:
+# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of
+# American National Standard for Information Interchange."  I believe (but
+# am not certain) that these are effectively identical to ECMA-6 and ECMA-35
+# respectively.
+#
+
+#### VT100/ANSI/ECMA-48
+#
+# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
+# and ECMA-48 Control Functions for Coded Character Sets.
+#
+# Much of the content of this comment is adapted from a table prepared by
+# Richard Shuford, based on a 1984 Byte article.  Terminfo correspondences,
+# discussion of some terminfo-related issues, and updates to capture ECMA-48
+# have been added.  Control functions described in ECMA-48 only are tagged
+# with * after their names.
+#
+# The table is a complete list of the defined ANSI X3.64/ECMA-48 control
+# sequences.  In the main table, \E stands for an escape (\033) character,
+# SPC for space.  Pn stands for a single numeric parameter to be inserted
+# in decimal ASCII.  Ps stands for a list of such parameters separated by
+# semicolons.  Parameter meanings for most parametrized sequences are
+# decribed in the notes.
+#
+# Sequence     Sequence                             Parameter   or
+# Mnemonic     Name              Sequence           Value      Mode   terminfo
+# -----------------------------------------------------------------------------
+# APC  Applicatn Program Command \E _                -         Delim  -
+# BEL  Bell *                    ^G                  -         -      bel
+# BPH  Break Permitted Here *    \E B                -         *      -
+# BS   Backpace *                ^H                  -         EF     -
+# CAN  Cancel *                  ^X                  -         -      -   (A)
+# CBT  Cursor Backward Tab       \E [ Pn Z           1         eF     cbt
+# CCH  Cancel Previous Character \E T                -         -      -
+# CHA  Cursor Horizntal Absolute \E [ Pn G           1         eF     hpa (B)
+# CHT  Cursor Horizontal Tab     \E [ Pn I           1         eF     tab (C)
+# CMD  Coding Method Delimiter * \E
+# CNL  Cursor Next Line          \E [ Pn E           1         eF     nel (D)
+# CPL  Cursor Preceding Line     \E [ Pn F           1         eF     -
+# CPR  Cursor Position Report    \E [ Pn ; Pn R      1, 1      -      -   (E)
+# CSI  Control Sequence Intro    \E [                -         Intro  -
+# CTC  Cursor Tabulation Control \E [ Ps W           0         eF     -   (F)
+# CUB  Cursor Backward           \E [ Pn D           1         eF     cub
+# CUD  Cursor Down               \E [ Pn B           1         eF     cud
+# CUF  Cursor Forward            \E [ Pn C           1         eF     cuf
+# CUP  Cursor Position           \E [ Pn ; Pn H      1, 1      eF     cup (G)
+# CUU  Cursor Up                 \E [ Pn A           1         eF     cuu
+# CVT  Cursor Vertical Tab       \E [ Pn Y           -         eF     -   (H)
+# DA   Device Attributes         \E [ Pn c           0         -      -
+# DAQ  Define Area Qualification \E [ Ps o           0         -      -
+# DCH  Delete Character          \E [ Pn P           1         eF     dch
+# DCS  Device Control String     \E P                -         Delim  -
+# DL   Delete Line               \E [ Pn M           1         eF     dl
+# DLE  Data Link Escape *        ^P                  -         -      -
+# DMI  Disable Manual Input      \E \                -         Fs     -
+# DSR  Device Status Report      \E [ Ps n           0         -      -   (I)
+# DTA  Dimension Text Area *     \E [ Pn ; Pn SPC T  -         PC     -
+# EA   Erase in Area             \E [ Ps O           0         eF     -   (J)
+# ECH  Erase Character           \E [ Pn X           1         eF     ech
+# ED   Erase in Display          \E [ Ps J           0         eF     ed  (J)
+# EF   Erase in Field            \E [ Ps N           0         eF     -
+# EL   Erase in Line             \E [ Ps K           0         eF     el  (J)
+# EM   End of Medium *           ^Y                  -         -      -
+# EMI  Enable Manual Input       \E b                          Fs     -
+# ENQ  Enquire                   ^E                  -         -      -
+# EOT  End Of Transmission       ^D                  -         *      -
+# EPA  End of Protected Area     \E W                -         -      -   (K)
+# ESA  End of Selected Area      \E G                -         -      -
+# ESC  Escape                    ^[                  -         -      -
+# ETB  End Transmission Block    ^W                  -         -      -
+# ETX  End of Text               ^C                  -         -      -
+# FF   Form Feed                 ^L                  -         -      -
+# FNK  Function Key *            \E [ Pn SPC W       -         -      -
+# GCC  Graphic Char Combination* \E [ Pn ; Pn SPC B  -         -      -
+# FNT  Font Selection            \E [ Pn ; Pn SPC D  0, 0      FE     -
+# GSM  Graphic Size Modify       \E [ Pn ; Pn SPC B  100, 100  FE     -   (L)
+# GSS  Graphic Size Selection    \E [ Pn SPC C       none      FE     -
+# HPA  Horz Position Absolute    \E [ Pn `           1         FE     -   (B)
+# HPB  Char Position Backward    \E [ j              1         FE     -
+# HPR  Horz Position Relative    \E [ Pn a           1         FE     -   (M)
+# HT   Horizontal Tab *          ^I                  -         FE     -   (N)
+# HTJ  Horz Tab w/Justification  \E I                -         FE     -
+# HTS  Horizontal Tab Set        \E H                -         FE     hts
+# HVP  Horz & Vertical Position  \E [ Pn ; Pn f      1, 1      FE     -   (G)
+# ICH  Insert Character          \E [ Pn @           1         eF     ich
+# IDCS ID Device Control String  \E [ SPC O          -         *      -
+# IGS  ID Graphic Subrepertoire  \E [ SPC M          -         *      -
+# IL   Insert Line               \E [ Pn L           1         eF     il
+# IND  Index                     \E D                -         FE     -
+# INT  Interrupt                 \E a                -         Fs     -
+# JFY  Justify                   \E [ Ps SPC F       0         FE     -
+# IS1  Info Separator #1 *       ^_                  -         *      -
+# IS2  Info Separator #1 *       ^^                  -         *      -
+# IS3  Info Separator #1 *       ^]                  -         *      -
+# IS4  Info Separator #1 *       ^\                  -         *      -
+# LF   Line Feed                 ^J                  -         -      -
+# LS1R Locking Shift Right 1 *   \E ~                -         -      -
+# LS2  Locking Shift 2 *         \E n                -         -      -
+# LS2R Locking Shift Right 2 *   \E }                -         -      -
+# LS3  Locking Shift 3 *         \E o                -         -      -
+# LS3R Locking Shift Right 3 *   \E |                -         -      -
+# MC   Media Copy                \E [ Ps i           0         -      -   (S)
+# MW   Message Waiting           \E U                -         -      -
+# NAK  Negative Acknowledge *    ^U                  -         *      -
+# NBH  No Break Here *           \E C                -         -      -
+# NEL  Next Line                 \E E                -         FE     nel (D)
+# NP   Next Page                 \E [ Pn U           1         eF     -
+# NUL  Null *                    ^@                  -         -      -
+# OSC  Operating System Command  \E ]                -         Delim  -
+# PEC  Pres. Expand/Contract *   \E Pn SPC Z         0         -      -
+# PFS  Page Format Selection *   \E Pn SPC J         0         -      -
+# PLD  Partial Line Down         \E K                -         FE     -   (T)
+# PLU  Partial Line Up           \E L                -         FE     -   (U)
+# PM   Privacy Message           \E ^                -         Delim  -
+# PP   Preceding Page            \E [ Pn V           1         eF     -
+# PPA  Page Position Absolute *  \E [ Pn SPC P       1         FE     -
+# PPB  Page Position Backward *  \E [ Pn SPC R       1         FE     -
+# PPR  Page Position Forward *   \E [ Pn SPC Q       1         FE     -
+# PTX  Parallel Texts *          \E [ \              -         -      -
+# PU1  Private Use 1             \E Q                -         -      -
+# PU2  Private Use 2             \E R                -         -      -
+# QUAD Typographic Quadding      \E [ Ps SPC H       0         FE     -
+# REP  Repeat Char or Control    \E [ Pn b           1         -      rep
+# RI   Reverse Index             \E M                -         FE     -   (V)
+# RIS  Reset to Initial State    \E c                -         Fs     -
+# RM   Reset Mode *              \E [ Ps l           -         -      -   (W)
+# SACS Set Add. Char. Sep. *     \E [ Pn SPC /       0         -      -
+# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ]       0         -      -   (X)
+# SCI  Single-Char Introducer    \E Z                -         -      -
+# SCO  Sel. Char. Orientation *  \E [ Pn ; Pn SPC k  -         -      -
+# SCS  Set Char. Spacing *       \E [ Pn SPC g       -         -      -
+# SD   Scroll Down               \E [ Pn T           1         eF     rin
+# SDS  Start Directed String *   \E [ Pn ]           1         -      -
+# SEE  Select Editing Extent     \E [ Ps Q           0         -      -   (Y)
+# SEF  Sheet Eject & Feed *      \E [ Ps ; Ps SPC Y  0,0       -      -
+# SGR  Select Graphic Rendition  \E [ Ps m           0         FE     sgr (O)
+# SHS  Select Char. Spacing *    \E [ Ps SPC K       0         -      -
+# SI   Shift In                  ^O                  -         -      -   (P)
+# SIMD Sel. Imp. Move Direct. *  \E [ Ps ^           -         -      -
+# SL   Scroll Left               \E [ Pn SPC @       1         eF     -
+# SLH  Set Line Home *           \E [ Pn SPC U       -         -      -
+# SLL  Set Line Limit *          \E [ Pn SPC V       -         -      -
+# SLS  Set Line Spacing *        \E [ Pn SPC h       -         -      -
+# SM   Select Mode               \E [ Ps h           none      -      -   (W)
+# SO   Shift Out                 ^N                  -         -      -   (Q)
+# SOH  Start Of Heading *        ^A                  -         -      -
+# SOS  Start of String *         \E X                -         -      -
+# SPA  Start of Protected Area   \E V                -         -      -   (Z)
+# SPD  Select Pres. Direction *  \E [ Ps ; Ps SPC S  0,0       -      -
+# SPH  Set Page Home *           \E [ Ps SPC G       -         -      -
+# SPI  Spacing Increment         \E [ Pn ; Pn SPC G  none      FE     -
+# SPL  Set Page Limit *          \E [ Ps SPC j       -         -      -
+# SPQR Set Pr. Qual. & Rapid. *  \E [ Ps SPC X       0         -      -
+# SR   Scroll Right              \E [ Pn SPC A       1         eF     -
+# SRCS Set Reduced Char. Sep. *  \E [ Pn SPC f       0         -      -
+# SRS  Start Reversed String *   \E [ Ps [           0         -      -
+# SSA  Start of Selected Area    \E F                -         -      -
+# SSU  Select Size Unit *        \E [ Pn SPC I       0         -      -
+# SSW  Set Space Width *         \E [ Pn SPC [       none      -      -
+# SS2  Single Shift 2 (G2 set)   \E N                -         Intro  -
+# SS3  Single Shift 3 (G3 set)   \E O                -         Intro  -
+# ST   String Terminator         \E \                -         Delim  -
+# STAB Selective Tabulation *    \E [ Pn SPC ^       -         -      -
+# STS  Set Transmit State        \E S                -         -      -
+# STX  Start pf Text *           ^B                  -         -      -
+# SU   Scroll Up                 \E [ Pn S           1         eF     indn
+# SUB  Substitute *              ^Z                  -         -      -
+# SVS  Select Line Spacing *     \E [ Pn SPC \       1         -      -
+# SYN  Synchronous Idle *        ^F                  -         -      -
+# TAC  Tabul. Aligned Centered * \E [ Pn SPC b       -         -      -
+# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a       -         -      -
+# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC `       -         -      -
+# TBC  Tab Clear                 \E [ Ps g           0         FE     tbc
+# TCC  Tabul. Centered on Char * \E [ Pn SPC c       -         -      -
+# TSR  Tabulation Stop Remove  * \E [ Pn SPC d       -         FE     -
+# TSS  Thin Space Specification  \E [ Pn SC E        none      FE     -
+# VPA  Vert. Position Absolute   \E [ Pn d           1         FE     vpa
+# VPB  Line Position Backward *  \E [ Pn k           1         FE     -
+# VPR  Vert. Position Relative   \E [ Pn e           1         FE     -   (R)
+# VT   Vertical Tabulation *     ^K                  -         FE     -
+# VTS  Vertical Tabulation Set   \E J                -         FE     -
+#
+# ---------------------------------------------------------------------------
+#
+# Notes:
+#
+# Some control characters are listed in the ECMA-48 standard without
+# being assigned functions relevant to terminal control there (they
+# referred to other standards such as ISO 1745 or ECMA-35).  They are listed
+# here anyway for completeness.
+#
+# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation.
+#
+# (B) There seems to be some confusion abroad between CHA and HPA.  Most
+# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls
+# the capability (hpa).  ECMA-48 calls this "Cursor Character Absolute" but
+# preserved the CHA abbreviation.
+#
+# (C) CHT corresponds to terminfo (tab).  Usually it has the value ^I.
+# Occasionally (as on, for example, certain HP terminals) this has the HTJ
+# value.  ECMA-48 calls this "Cursor Forward Tabulation" but preserved the
+# CHT abbreviation.
+#
+# (D) terminfo (nel) is usually \r\n rather than ANSI \EE.
+#
+# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR
+# abbreviation.
+#
+# (F) CTC parameter values: 0 = set char tab, 1 = set line tab, 2 = clear
+# char tab, 3 = clear line tab, 4 = clear all char tabs on current line,
+# 5 = clear all char tabs, 6 = clear all line tabs.
+#
+# (G) CUP and HVP are identical in effect.  Some ANSI.SYS versions accept
+# HVP, but always allow CUP as an alternate.  ECMA-48 calls HVP "Character
+# Position Absolute" but retains the HVP abbreviation.
+#
+# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT
+# abbreviation.
+#
+# (I) DSR parameter values: 0 = ready, 1 = busy, 2 = busy, will send DSR
+# later, 3 = malfunction, 4 = malfunction, will send DSR later, 5 = request
+# DSR, 6 = request CPR response.
+#
+# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: 0 = clear to end,
+# 1 = clear from beginning, 2 = clear.
+#
+# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation.
+#
+# (L) The GSM parameters are vertical and horizontal parameters to scale by.
+#
+# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals
+# use CUF for this function and ignore HPR.  ECMA-48 calls this "Character
+# Position Relative" but retains the HPR abbreviation.
+#
+# (N) ECMA-48 calls this "Character Tabulation" but retains the HT
+# abbreviation.
+#
+# (O) SGR parameter values: 0 = default mode (attributes off), 1 = bold,
+# 2 = dim, 3 = italicized, 4 = underlined, 5 = slow blink, 6 = fast blink,
+# 7 = reverse video, 8 = invisible, 9 = crossed-out (marked for deletion),
+# 10 = primary font, 10 + n (n in 1..9) = nth alternative font, 20 = Fraktur,
+# 21 = double underline, 22 = turn off 2, 23 = turn off 3, 24 = turn off 4,
+# 25 = turn off 5, 26 = proportional spacing, 27 = turn off 7, 28 = turn off
+# 8, 29 = turn off 9, 30 = black fg, 31 = red fg, 32 = green fg, 33 = yellow
+# fg, 34 = blue fg, 35 = magenta fg, 36 = cyan fg, 37 = white fg, 38 = set
+# fg color as in CCIT T.416, 39 = set default fg color, 40 = black bg
+# 41 = red bg, 42 = green bg, 43 = yellow bg, 44 = blue bg, 45 = magenta bg,
+# 46 = cyan bg, 47 = white bg, 48 = set bg color as in CCIT T.416, 39 = set
+# default bg color, 50 = turn off 26, 51 = framed, 52 = encircled, 53 =
+# overlined, 54 = turn off 51 & 52, 55 = not overlined, 56-59 = reserved,
+# 61-65 = variable highlights for ideograms.
+#
+# (P) SI is also called LSO, Locking Shift Zero.
+#
+# (Q) SI is also called LS1, Locking Shift One.
+#
+# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals
+# use CUD for this function and ignore VPR.  ECMA calls it `Line Position
+# Absolute' but retains the VPA abbreviation.
+#
+# (S) MC parameters: 0 = start xfer to primary aux device, 1 = start xfer from
+# primary aux device, 2 = start xfer to secondary aux device, 3 = start xfer
+# from secondary aux device, 4 = stop relay to primary aux device, 5 =
+# start relay to primary aux device, 6 = stop relay to secondary aux device,
+# 7 = start relay to secondary aux device.
+#
+# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD
+# abbreviation.
+#
+# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU
+# abbreviation.
+#
+# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
+#
+# (W) RM/SM modes are as follows: 1 = Guarded Area Transfer Mode (GATM),
+# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM),
+# 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM),
+# 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional
+# Support Mode (BDSM), 9 = Device Component Select Mode (DCSM),
+# 10 = Character Editing Mode (HEM), 11 = Positioning Unit Mode (PUM),
+# 12 = Send/Receive Mode, 13 = Format Effector Action Mode (FEAM),
+# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer
+# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer
+# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed
+# New Line Mode (LF/NL), Graphic Rendition Combination Mode (GRCM), 22 =
+# Zero Default Mode (ZDM).  The EBM and LF/NL modes have actually been removed
+# from ECMA-48's 5th edition but are listed here for reference.
+#
+# (X) Select Alternate Presentation Variants is used only for non-Latin
+# alphabets.
+#
+# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM).
+#
+# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA
+# abbreviation.
+#
+# ---------------------------------------------------------------------------
+#
+# Abbreviations:
+#
+# Intro  an Introducer of some kind of defined sequence; the normal 7-bit
+#        X3.64 Control Sequence Introducer is the two characters "Escape ["
+#
+# Delim  a Delimiter
+#
+# x/y    identifies a character by position in the ASCII table (column/row)
+#
+# eF     editor function (see explanation)
+#
+# FE     format effector (see explanation)
+#
+# F      is a Final character in
+#             an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
+#             a control sequence (F from 4/0 to 7/14)
+#
+# Gs     is a graphic character appearing in strings (Gs ranges from
+#        2/0 to 7/14) in the ASCII table
+#
+# Ce     is a control represented as a single bit combination in the C1 set
+#        of controls in an 8-bit character set
+#
+# C0     the familiar set of 7-bit ASCII control characters
+#
+# C1     roughly, the set of control chars available only in 8-bit systems.
+#        This is too complicated to explain fully here, so read Jim Fleming's
+#        article in the February 1983 BYTE, especially pages 214 through 224.
+#
+# Fe     is a Final character of a 2-character Escape sequence that has an
+#        equivalent representation in an 8-bit environment as a Ce-type
+#        (Fe ranges from 4/0 to 5/15)
+#
+# Fs     is a Final character of a 2-character Escape sequence that is
+#        standardized internationally with identical representation in 7-bit
+#        and 8-bit environments and is independent of the currently
+#        designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
+#
+# I      is an Intermediate character from 2/0 to 2/15 (inclusive) in the
+#        ASCII table
+#
+# P      is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
+#        table
+#
+# Pn     is a numeric parameter in a control sequence, a string of zero or
+#        more characters ranging from 3/0 to 3/9 in the ASCII table
+#
+# Ps     is a variable number of selective parameters in a control sequence
+#        with each selective parameter separated from the other by the code
+#        3/11 (which usually represents a semicolon); Ps ranges from
+#        3/0 to 3/9 and includes 3/11
+#
+# *      Not relevant to terminal control, listed for completeness only.
+#
+# Format Effectors versus Editor Functions
+#
+# A format effector specifies how following output is to be displayed.
+# An editor function allows you to modify the display.  Informally
+# format effectors may be destructive; format effectors should not be.
+#
+# For instance, a format effector that moves the "active position" (the
+# cursor or equivalent) one space to the left would be useful when you want to
+# create an overstrike, a compound character made of two standard characters
+# overlaid. Control-H, the Backspace character, is actually supposed to be a
+# format effector, so you can do this. But many systems use it in a
+# nonstandard fashion, as an editor function, deleting the character to the
+# left of the cursor and moving the cursor left. When Control-H is assumed to
+# be an editor function, you cannot predict whether its use will create an
+# overstrike unless you also know whether the output device is in an "insert
+# mode" or an "overwrite mode". When Control-H is used as a format effector,
+# its effect can always be predicted. The familiar characters carriage
+# return, linefeed, formfeed, etc., are defined as format effectors.
+#
+# NOTES ON THE DEC VT100 IMPLEMENTATION
+#
+# Control sequences implemented in the VT100 are as follows:
+#
+#      CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
+#      LNM, NEL, RI, RIS, RM, SGR, SM, TBC
+#
+# plus several private DEC commands.
+#
+# Erasing parts of the display (EL and ED) in the VT100 is performed thus:
+#
+#      Erase from cursor to end of line           Esc [ 0 K    or Esc [ K
+#      Erase from beginning of line to cursor     Esc [ 1 K
+#      Erase line containing cursor               Esc [ 2 K
+#      Erase from cursor to end of screen         Esc [ 0 J    or Esc [ J
+#      Erase from beginning of screen to cursor   Esc [ 1 J
+#      Erase entire screen                        Esc [ 2 J
+#
+# Some brain-damaged terminal/emulators respond to Esc [ J as if it were
+# Esc [ 2 J, but this is wrong; the default is 0.
+#
+# The VT100 responds to receiving the DA (Device Attributes) control
+#
+#      Esc [ c    (or Esc [ 0 c)
+#
+# by transmitting the sequence
+#
+#      Esc [ ? l ; Ps c
+#
+# where Ps is a character that describes installed options.
+#
+# The VT100's cursor location can be read with the DSR (Device Status
+# Report) control
+#
+#      Esc [ 6 n
+#
+# The VT100 reports by transmitting the CPR sequence
+#
+#      Esc [ Pl ; Pc R
+#
+# where Pl is the line number and Pc is the column number (in decimal).
+#
+# The specification for the DEC VT100 is document EK-VT100-UG-003.
+
+#### ANSI.SYS
+#
+# Here is a description of the color and attribute controls supported in the
+# the ANSI.SYS driver under MS-DOS.  Most console drivers and ANSI
+# terminal emulators for Intel boxes obey these.  They are a proper subset
+# of the ECMA-48 escapes.
+#
+# 0	all attributes off
+# 1	foreground bright
+# 4	underscore on
+# 5	blink on/background bright (not reliable with brown)
+# 7	reverse-video
+# 8	set blank (non-display)
+# 10	set primary font
+# 11	set first alternate font (on PCs, display ROM characters 1-31)
+# 12	set second alternate font (on PCs, display IBM high-half chars)
+#
+#			Color attribute sets
+# 3n	set foreground color       / 0=black, 1=red,     2=green, 3=brown,
+# 4n	set background color       \ 4=blue,  5=magenta, 6=cyan,  7=white
+# Bright black becomes gray.  Bright brown becomes yellow,
+# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard.
+#
+# * If the 5 attribute is on and you set a background color (40-47) it is
+#   supposed to enable bright background.
+#
+# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing
+#   when you try to set a "bright brown" (yellow) background with attribute
+#   5 (you get a blinking yellow foreground instead).  A few displays
+#   (including the System V console) support an attribute 6 that undoes this
+#   braindamage (this is required by iBCS2).
+#
+# * Some older versions of ANSI.SYS have a bug that causes thems to require
+#   ESC [ Pn k as EL rather than the ANSI ESC [ Pn K.  (This is not ECMA-48
+#   compatible.)
+
+#### Intel Binary Compatibility Standard
+#
+# For comparison, here are the capabilities implied by the Intel Binary
+# Compatibility Standard for UNIX systems (Intel order number 468366-001).
+# These recommendations are optional.  IBCS2 allows the leading escape to
+# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with
+# the ANSI X.364/ISO 6429/ECMA-48 standard.  Here are the iBCS2 capabilities
+# (as described in figure 9-3 of the standard).  Those expressed in the ibcs2
+# terminfo entry are followed with the corresponding capability in parens:
+#
+#	CSI <n>k		disable (n=0) or enable (n=1) keyclick
+#	CSI 2h   		lock keyboard
+#	CSI 2i  		send screen as input
+#	CSI 2l  		unlock keyboard
+#	CSI 6m  		enable background color intensity
+#	CSI <0-2>c		reserved
+#	CSI <0-59>m		select graphic rendition
+#	CSI <n>;<m>H	(cup)	cursor to line n and column m
+#	CSI <n>;<m>f		cursor to line n and column m
+#	CSI <n>@	(ich)	insert characters
+#	CSI <n>A	(cuu)	cursor up n lines
+#	CSI <n>B	(cud)	cursor down n lines
+#	CSI <n>C	(cuu)	cursor right n characters
+#	CSI <n>D	(cud)	cursor left n characters
+#	CSI <n>E		cursor down n lines and in first column
+#	CSI <n>F		cursor up n lines and in first column
+#	CSI <n>G	(hpa)	position cursor at column n-1
+#	CSI <n>J	(ed)	erase in display
+#	CSI <n>K	(el)	erase in line
+#	CSI <n>L	(il)	insert line(s)
+#	CSI <n>P	(dch)	delete characters
+#	CSI <n>S	(indn)	scroll up n lines
+#	CSI <n>T	(rin)	scroll down n lines
+#	CSI <n>X	(ech)	erase characters
+#	CSI <n>Z	(cbt)	back up n tab stops
+#	CSI <n>`		cursor to column n on line
+#	CSI <n>a	(cuu)	cursor right n characters
+#	CSI <n>d	(vpa)	cursor to line n
+#	CSI <n>e		cursor down n lines and in first column
+#	CSI <n>g	(cbt)	clear all tabs
+#	CSI <n>z		make virtual terminal n active
+#	CSI ?7h 	(smam)	turn automargin on
+#	CSI ?7l 	(rmam)	turn automargin off
+#	CSI s     		save cursor position
+#	CSI u   		restore cursor position to saved value
+#	CSI =<c>A		set overscan color
+#	CSI =<c>F		set normal foreground color
+#	CSI =<c>G		set normal background color
+#	CSI =<c>H		set reverse foreground color
+#	CSI =<c>I		set reverse foreground color
+#	CSI =<c>J		set graphic foreground color
+#	CSI =<c>K		set graphic foreground color
+#	CSI =<n>g	(dispc) display n from alternate graphics character set
+#	CSI =<p>;<d>B		set bell parameters
+#	CSI =<s>;<e>C		set cursor parameters
+#	CSI =<x>D		enable/disable intensity of background color
+#	CSI =<x>E		set/clear blink vs. bold background
+#	CSI 7     	(sc)	(sc) save cursor position
+#	CSI 8   	(rc)	(rc) restore cursor position to saved value
+#	CSI H		(hts)	(hts) set tab stop
+#	CSI Q<n><string>	define function key string
+#				(string must begin and end with delimiter char)
+#	CSI c   	(clear) clear screen
+#
+# The lack of any specification for attributes in SGR (among other things)
+# makes this a wretchedly weak standard. The table above is literally
+# everything iBSC2 has to say about terminal escape sequences; there is
+# no further discussion of their meaning or how to set the parameters
+# in these sequences at all.
+#
+
+######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE
+#
+# The historical termcap file entries were written primarily in 4.4BSD termcap.
+# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set,
+# with the extension names chosen for compatibility with the termcap names
+# assigned in System V terminfo.  There are some variant extension sets out
+# there.  We try to describe them here.
+#
+# XENIX extensions:
+#
+# The XENIX extensions include a set of function-key capabilities as follows:
+#
+#       code	XENIX variable name	terminfo name	name clashes?
+#	----	-------------------	-------------	-----------------------
+#	CL	key_char_left
+#	CR	key_char_right
+#	CW	key_change_window			create_window
+#	EN	key_end          	kend
+#	HM	key_home		khome
+#	HP	??
+#	LD	key_delete_line  	kdl1
+#	LF	key_linefeed     			label_off
+#	NU	key_next_unlocked_cell
+#	PD	key_page_down   	knp
+#	PL	??
+#	PN	start_print		mc5
+#	PR	??
+#	PS	stop_print		mc4
+#	PU	key_page_up     	kpp		pulse
+#	RC	key_recalc				remove_clock
+#	RF	key_toggle_ref				req_for_input
+#	RT	key_return      	kent
+#	UP	key_up_arrow           	kcuu1   	parm_up_cursor
+#	WL	key_word_left
+#	WR	key_word_right
+#
+# The XENIX extensions also include the following character-set and highlight
+# capabilities:
+#
+#	XENIX	terminfo	function
+#	-----	--------	------------------------------
+#	GS	smacs		start alternate character set
+#	GE	rmacs		end alternate character set
+#	GG			:as:/:ae: glitch (analogous to :sg:/:ug:)
+#	bo	blink		begin blink (not used in /etc/termcap)
+#	be			end blink (not used in /etc/termcap)
+#	bb			blink glitch  (not used in /etc/termcap)
+#	it	dim		begin dim (not used in /etc/termcap)
+#	ie			end dim (not used in /etc/termcap)
+#	ig			dim glitch  (not used in /etc/termcap)
+#
+# Finally, XENIX also used the following forms-drawing capabilities:
+#
+#	single	double  type             ASCII approximation
+#	------	------	-------------    -------------------
+#	GV	Gv	vertical line             |
+#	GH	Gv	horizontal line       -   _
+#	G1	G5	top right corner       _   |
+#	G2	G6	top left corner       |
+#	G3	G7	bottom left corner         |_
+#	G4	G8	bottom right corner   _|
+#	GD	Gd	down-tick character        T
+#	GL	Gl	left-tick character   -|
+#	GR	Gr	right-tick character       |-
+#	GC	Gc	middle intersection   -|-
+#	GU	Gu	up-tick character          _|_
+#
+# These were invented to take advantage of the IBM PC ROM character set.  One
+# can compose an acsc string from the single-width characters as follows
+#	"j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}"
+# When translating a termcap file, ncurses tic will do this automatically.
+# The double forms characters don't fit the SVr4 terminfo model.
+#
+# AT&T Extensions:
+#
+# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
+# nonstandard capabilities.  Its signature is the KM capability, used to name
+# some sort of keymap file.  EE, BO, CI, CV, XS, DS, FL and FE are in this
+# set.  Comments in the original, and a little cross-checking with other AT&T
+# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh:
+# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights),
+# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make
+# cursor invisible), and CV=:ve: (make cursor normal).
+#
+# HP Extensions
+#
+# The HP library (as of mid-1995, their term.h file version 70.1) appears to
+# have the System V capabilities up to SVr1 level.  After that, it supports
+# two nonstandard caps meml and memu corresponding to the old termcap :ml:,
+# :mu: capabilities.  After that, it supports caps plab_norm, label_on,
+# label_off, and key_f11..key_f63 capabilities like SVr4's.  This makes the
+# HP binary format incompatible with SVr4's.
+#
+# IBM Extensions
+#
+# There is a set of nonstandard terminfos used by IBM's AIX operating system.
+# The AIX terminfo library diverged from SVr1 terminfo, and replaces all
+# capabilities following prtr_non with the following special capabilties:
+# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab,
+# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr,
+# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml,
+# rvert, lvert.   Some of these are identical to XPG4/SVr4 equivalents:
+# kcmd, kend, khlp, and kf11...kf63.  Two others (kbtab and ksel) can be
+# renamed (to kcbt and kslt).  The places in the box[12] capabilities
+# correspond to acsc chars, here is the mapping:
+#
+#	box1[0]  = ACS_ULCORNER
+#	box1[1]  = ACS_HLINE
+#	box1[2]  = ACS_URCORNER
+#	box1[3]  = ACS_VLINE
+#	box1[4]  = ACS_LRCORNER
+#	box1[5]  = ACS_LLCORNER
+#	box1[6]  = ACS_TTEE
+#	box1[7]  = ACS_RTEE
+#	box1[8]  = ACS_BTEE
+#	box1[9]  = ACS_LTEE
+#	box1[10] = ACS_PLUS
+#
+# The box2 characters are the double-line versions of these forms graphics.
+# The AIX binary terminfo format is incompatible with SVr4's.
+#
+# Iris console extensions:
+#
+# HS is half-intensity start; HE is half-intensity end
+# CT is color terminal type (for Curses & rogue)
+# CP is color change escape sequence
+# CZ are color names (for Curses & rogue)
+#
+# The ncurses tic utility recognizes HS as an alias for mh <dim>.
+#
+# TC Extensions:
+#
+# There is a set of extended termcaps associated with something
+# called the "Terminal Control" or TC package created by MainStream Systems,
+# Winfield Kansas.  This one also uses GS/GE for as/ae, and also uses
+# CF for civis and CO for cvvis.  Finally, they define a boolean :ct:
+# that flags color terminals.
+#
+######## CHANGE HISTORY
+#
+# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
+# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses
+# project.
+#
+# This file contains all the capability information present in John Kunze's
+# last version of the termcap master file, except as noted in the change
+# comments at end of file.  Some information about very ancient obsolete
+# capabilities has been moved to comments.  Some all-numeric names of older
+# terminals have been retired.
+#
+# I changed :MT: to :km: (the 4.4BSD name) everywhere.  I commented out some
+# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer
+# used by BSD curses.
+#
+# The 9.1.0 version of this file was translated from my lightly-edited copy of
+# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for
+# the purpose.  Unless the ncurses tic implementation and the Lisp code were
+# making perfectly synchronized mistakes which I then failed to catch by
+# eyeball, the translation was correct and perfectly information-preserving.
+#
+# Major version number bumps correspond to major version changes in ncurses.
+#
+# Here is a log of the changes since then:
+#
+# 9.1.0 (Wed Feb  1 04:50:32 EST 1995):
+#	* First terminfo master translated from 8.3.
+# 9.2.0 (Wed Feb  1 12:21:45 EST 1995):
+#	* Replaced Wyse entries with updated entries supplied by vendor.
+#
+# 9.3.0 (Mon Feb  6 19:14:40 EST 1995):
+#	* Added contact & status info from G. Clark Brown <clark@sssi.com>.
+# 9.3.1 (Tue Feb  7 12:00:24 EST 1995):
+#	* Better XENIX keycap translation.  Describe TC termcaps.
+#	* Contact and history info supplied by Qume.
+# 9.3.2 (Sat Feb 11 23:40:02 EST 1995):
+#	* Raided the Shuford FTP site for recent termcaps/terminfos.
+#	* Added information on X3.64 and VT100 standard escape sequences.
+# 9.3.3 (Mon Feb 13 12:26:15 EST 1995):
+#	* Added a correct X11R6 xterm entry.
+#	* Fixed terminfo translations of padding.
+# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
+#	* Added correct acsc/smacs/rmacs strings for vt100 and xterm.
+#	* Added u6/u7/u8/u9 capabilities.
+#	* Added PCVT entry.
+# 9.3.5 (Thu Feb 23 09:37:12 EST 1995):
+#	* Emacs uses :so:, not :mr:, for its mode line.  Fix linux entry
+#	  to use reverse-video standout so Emacs will look right.
+#	* Added el1 capability to ansi.
+#	* Added smacs/rmacs to ansi.sys.
+#
+# 9.4.0 (Sat Feb 25 16:43:25 EST 1995):
+#	* New mt70 entry.
+#	* Added COPYRIGHTS AND OTHER DELUSIONS.
+#	* Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics
+#	  smartvid & smarterm, ampex 175 & 219 & 232,
+#	  env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20,
+#	  ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2,
+#	  screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan,
+#	  adm36, mime314, ergo4000, ca22851.  Replaced att7300, esprit, dd5500.
+#	* Replaced the Perkin-Elmer entries with vendor's official ones.
+#	* Restored the old minimal-ansi entry, luna needs it.
+#	* Fixed some incorrect ip and proportional-padding translations.
+# 9.4.1 (Mon Feb 27 14:18:33 EST 1995):
+#	* Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly.
+#	* Make the xterm entry 65 lines again; create xterm25 and xterm24
+#	  to force a particular height.
+#	* Added beehive4 and reorganized other Harris entries.
+# 9.4.2 (Thu Mar  9 01:45:44 EST 1995):
+#	* Merged in DEC's official entries for its terminals.  The only old
+#	  entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
+#	* Replaced the translated BBN Bitgraph entries with purpose-built
+#	  ones from AT&T's SVr3.
+#	* Replaced the AT&T entries with AT&T's official terminfos.
+#	* Added teleray 16, vc415, cops10.
+#	* Merged in many individual capabilities from SCO terminfo files.
+# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
+#	* Typo fixes.
+#	* Change linux entry so A_PROTECT enables IBM-PC ROM characters.
+# 9.4.4 (Mon Mar 27 12:32:35 EST 1995):
+#	* Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803,
+#	  pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21,
+#	  simterm, citoh and variants.
+#	* Replaced sol entry with sol1 and sol2.
+#	* Replaced Qume QVT and Freedom-series entries with purpose-built
+#	  terminfo entries.
+#	* Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
+#	  and dg200 entries using caps from from SCO.
+#	* Added the usual set of function-key mappings to ANSI entry.
+#	* Corrected xterm's function-key capabilities.
+# 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
+#	* Fix in xterm entry, cub and cud are not reliable under X11R6.
+# 9.4.6 (Thu Mar 30 14:52:15 EST 1995):
+#	* Fix in xterm entry, get the arrow keys right.
+#	* Change some \0 escapes to \200.
+# 9.4.7 (Tue Apr  4 11:27:11 EDT 1995)
+#	* Added apple (Videx card), adm1a, oadm31.
+#	* Fixed malformed ampex csr.
+#	* Fixed act4, cyb110; they had old-style prefix padding left in.
+#	* Changed mandatory to advisory padding in many entries.
+#	* Replaced HP entries up to hpsub with purpose-built ones.
+#	* Blank rmir/smir/rmdc/smdc capabilities removed.
+#	* Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
+# 9.4.8 (Fri Apr  7 09:36:34 EDT 199):
+#	* Replaced the Ann Arbor entries with SCO's, the init strings are
+#	  more efficient (but the entries otherwise identical).
+#	* Added dg211 from Shuford archive.
+#	* Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk,
+#	  adm42-nl, pc52, gs6300, xerox820, uts30.
+#	* Pull SCO's padding into vi200 entry.
+#	* Improved capabilities for tvi4107 and other Televideo and Viewpoint
+#	  entries merged in from SCO's descriptions.
+#	* Fixed old-style prefix padding on zen50, h1500.
+#	* Moved old superbee entry to superbee-xsb, pulled in new superbee
+#	  entry from SCO's description.
+#	* Reorganized the special entries.
+#	* Added lm#0 to cbunix and virtual entries.
+#
+# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995):
+#	* Restored cdc456tst.
+#	* Fixed sb1 entry, SCO erroneously left out the xsb glitch.
+#	* Added megatek, beacon, microkit.
+#	* Freeze for ncurses-1.9 release.
+# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995):
+#	* Added historical data for TAB.
+#	* Comment fixes from David MacKenzie.
+#	* Added the new BSDI pc3 entry.
+# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995)
+#	* A change in the tic -C logic now ensures that all entries in
+#	  the termcap translation will fit in < 1024 bytes.
+#	* Added `bobcat' and `gator' HP consoles and the Nu machine entries
+#	  from GNU termcap file.  This merges in all their local information.
+# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995)
+#	* Changed tic -C logic to dump all capabilities used by GNU termcap.
+#	* Added warnings about entries with long translations (restoring
+#	  all the GNU termcaps pushes a few over the edge).
+# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995)
+#	* Yet another tic change, and a couple of entry tweaks, to reduce the
+#	  number of long (> 1024) termcap translations back to 0.
+#
+# 9.6.0 (Mon May  1 10:35:54 EDT 1995)
+#	* Added kf13-kf20 to Linux entry.
+#	* Regularize Prime terminal names.
+#	* Historical data on Synertek.
+#	* Freeze for ncurses-1.9.1.
+# 9.6.1 (Sat May  6 02:00:52 EDT 1995):
+#	* Added true xterm-color entry, renamed djm's pseudo-color entry.
+#	* Eliminate whitespace in short name fields, this tanks some scripts.
+#	* Name field changes to shorten some long entries.
+#	* Termcap translation now automatically generates empty rmir/smir
+#	  when ich1/ich is present (copes with an ancient vi bug).
+#	* Added `screen' entries from FSF's screen-3.6.2.
+#	* Added linux-nic and xterm-nic entries.
+# 9.6.2 (Sat May  6 17:00:55 EDT 1995):
+#	* Change linux entry to use smacs=\E[11m and have an explicit acsc,
+#	  eliminating some special-case code in ncurses.
+#
+# 9.7.0 (Tue May  9 18:03:12 EDT 1995):
+#	* Added vt320-k3, rsvidtx from the Emacs termcap.dat file.  I think
+#	  that captures everything unique from it.
+#	* Added reorder script generator.
+#	* Freeze for ncurses 1.9.2 release.
+# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995):
+#	* Added Sean Farley's kspd, flash, rs1 capabilities for linux.
+#	* Added Olaf Siebert's corrections for adm12.
+#	* ansi-pc-color now includes the colors and pairs caps, so that
+#	  entries which use it will inherit them automatically.
+#	* The linux entry can now recognize the center (keypad 5) key.
+#	* Removed some junk that found its way into Linux acsc.
+#
+# 9.8.0 (Fri Jul  7 04:46:57 EDT 1995):
+#	* Add 50% cut mark as a desperate hack to reduce tic's core usage.
+#	* xterm doesn't try to use application keypad mode any more.
+#	* Freeze for ncurses-1.9.3 release.
+# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995):
+#	* Added corrected sun entry from vendor.
+#	* Added csr capability to linux entry.
+#	* Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG.
+#	* Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators.
+#	* Some commented-out caps in long entries come back in, my code
+#	  for computing string-table lengths had a bug in it.
+#	* pcansi series modified to fit comm-program reality better.
+# 9.8.2 (Sat Sep  9 23:35:00 EDT 1995):
+#	* BSD/OS actually ships the ibmpc3 bold entry as its console.
+#	* Correct some bad aliases in the pcansi series
+#	* Added entry for QNX console.
+#	* Clean up duplicate long names for use with 4.4 library.
+#	* Change vt100 standout to be normal reverse vide, not bright reverse;
+#	  this makes the Emacs status line look better.
+# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995):
+#	* Added Adam Thompson's VT320 entries, also his dtx-sas and z340.
+#	* Minor surgery, mostly on name strings, to shorten termcap version.
+#
+# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995):
+#	* Added dec-vt100 for use with the EWAN emulator.
+#	* Added kmous to xterm for use with xterm's mouse-tracking facility.
+#	* Freeze for 1.9.5 alpha release.
+# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995):
+#	* Changed xterm lines to 24, the X11R6 default.
+# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995):
+#	* Added 7 newly discovered, undocumented acsc characters to linux
+#	  entry (the pryz{|} characters).
+#	* ncurses no longer steals A_PROTECT.  Simplify linux sgr accordingly.
+#	* Correct two typos in the xterm entries introduced in 9.9.1.
+#	* I finally figured out how to translate ko capabilities.  Done.
+#	* Added tvi921 entries from Tim Theisen.
+#	* Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl.
+#	* Removed mystery tec entry, it was neither interesting nor useful.
+#	* shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f,
+#	  vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a,
+#	  trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211,
+#	  by making them relative to use capabilities
+#	* Added cuf1=^L to tvi925 from deleted variant tvi925a.
+#	* fixed cup in adm22 entry and parametrized strings in vt320-k3.
+#	* added it#8 to entries that used to have :pt: -- tvi912, vi200,
+#	  ampex80,
+#	* Translate all home=\E[;H capabilities to home=\E[H, they're
+#	  equivalent.
+#	* Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of
+#	  vt100 and ANSI-like terminals.
+# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995):
+#	* Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic
+#	  does this now, too.
+#	* fviewpoint is gone, it duplicated screwpoint.
+#	* Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c,
+#	  ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3,
+#	  versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW.
+#	  The UW vi50 replaces the old one, which becomes vi50adm,
+#	* No more embedded commas in name fields.
+#
+# 9.10.0 (Wed Oct  4 15:39:37 EDT 1995):
+#	* XENIX forms characters in fos, trs16, scoansi become acsc strings,
+#	* Introduced klone+* entries for describing Intel-console behavior.
+#	* Linux kbs is default-mapped to delete for some brain-dead reason.
+#	* -nsl -> -ns.  The -pp syntax is obsolete.
+#	* Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs.
+#	* Make xterm entry do application-keypad mode again.  I got complaints
+#	  that it was messing up someone's 3270 emulator.
+#	* Added some longname fields in order to avoid warning messages from
+#	  older tic implementations.
+#	* According to ctlseqs.ms, xterm has a full vt100 graphics set.  Use
+#	  it! (This gives us pi, greater than, less than, and a few more.)
+#	* Freeze for ncurses-1.9.6 release.
+# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995):
+#	* Add xon to a number of console entries, they're memory-mapped and
+#	  don't need padding.
+#	* Correct the use dependencies in the ansi series.
+#	* Hand-translate more XENIX capabilities.
+#	* Added hpterm entry for HP's X terminal emulator.
+#	* Added aixterm entries.
+#	* Shortened four names so everything fits in 14 chars.
+#
+# 9.11.0 (Thu Nov  2 17:29:35 EST 1995):
+#	* Added ibcs2 entry and info on iBCS2 standard.
+#	* Corrected hpa/vpa in linux entry.  They still fail the worm test.
+#	* We can handle the HP meml/memu capability now.
+#	* Added smacs to klone entries, just as documentation.
+#	* Carrected ansi.sys and cit-500 entries.
+#	* Added z39, vt320-k311, v220c, and avatar entries.
+#	* Make pcansi use the ansi.sys invis capability.
+#	* Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c,
+#	  tvi925, tvi950, dt80, ncr7900i, h19.
+#	* X3.64 has been withdrawn, change some references.
+#	* Removed function keys from ansi-m entry.
+#	* Corrected ansi.sys entry.
+#	* Freeze for ncurses-1.9.7 release.
+# 9.11.1 (Tue Nov  6 18:18:38 EST 1995):
+#	* Added rmam/smam capabilities to many entries based on init strings.
+#	* Added correct hpa/vpa to linux.
+#	* Reduced several entries relative to vt52.
+# 9.11.2 (Tue Nov  7 00:21:06 EST 1995):
+#	* Exiled some utterly unidentifiable custom and homebrew types to the
+#	  UFO file; also, obsolete small-screen hardware; also, entries which
+#	  look flat-out incorrect, garbled, or redundant.  These include the
+#	  following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec,
+#	  tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile,
+#	  apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu,
+#	  fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55,
+#	  yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2,
+#	  vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200,
+#	  trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40,
+#	  att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w,
+#	  tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na,
+#	  c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na,
+#	  regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb,
+#	  vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam,
+#	  vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms.
+#	* Corrected pcvt25h as suggested by Brian C. Grayson
+#	  <bgrayson@pine.ece.utexas.edu>.
+# 9.11.3 (Thu Nov  9 12:14:40 EST 1995):
+#	* Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
+#	* Added kent=\EOM to xterm entry.
+#
+# 9.11.4 (Fri Nov 10 08:31:35 EST 1995):
+#	* Corrected gigi entry.
+#	* Restored cuf/cud1 to xterm, their apparent bugginess was due to
+#	  bad hpa/vpa capabilities.
+#	* Corrected flash strings to have a uniform delay of .2 sec.  No
+#	  more speed-dependent NUL-padding!
+#	* terminfo capabilities in comments bracketed with <>.
+# 9.11.5 (Fri Nov 10 15:35:02 EST 1995):
+#	* Replaced pcvt with the 3.31 pcvt entries.
+#	* Freeze for 1.9.7a.
+# 9.11.6 (Mon Nov 13 10:20:24 EST 1995):
+#	* Added emu entry from the X11R6 contrib tape sources.
+#
+# 9.12.0 (Wed Nov 29 04:22:25 EST 1995):
+#	* Improved iris-ansi and sun entries.
+#	* More flash string improvements.
+#	* Corrected wy160 & wy160 as suggested by Robert Dunn
+#	* Added dim to at386.
+#	* Reconciled pc3 and ibmpc3 with the BSDI termcap file.  Keith says
+#	  he's ready to start using the termcap generated from this one.
+#	* Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m,
+#	  ln03, lno3-w, h19-g, z29a*, qdss.  Made vt200 an alias of vt220.
+#	* Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925,
+#	  att610, att620, att630,
+#	* Changed hazeltine name prefix from h to hz.
+#	* Sent t500 to the UFI file.
+#	* I think we've sucked all the juice out of BSDI's termcap file now.
+#	* Freeze for ncurses 1.9.8 release
+# 9.12.1 (Thu Nov 30 03:14:06 EST 1995)
+#	* Unfreeze, linux kbs needed to be fixed.
+#	* Tim Theisen pinned down a bug in the DMD firmware.
+# 9.12.2 (Thu Nov 30 19:08:55 EST 1995):
+#	* Fixes to ansi and klone capabilities (thank you, Aaron Ucko).
+#	  (The broken ones had been shadowed by sgr.)
+# 9.12.3 (Thu Dec  7 17:47:22 EST 1995):
+#	* Added documentation on ECMA-48 standard.
+#	* New Amiga entry.
+# 9.12.4 (Thu Dec 14 04:16:39 EST 1995):
+#	* More ECMA-48 stuff
+#	* Corrected typo in minix entry, added pc-minix.
+#	* Corrected khome/kend in xterm (thank you again, Aaron Ucko).
+#	* Added rxvt entry.
+#	* Added 1.3.x color-change capabilities to linux entry.
+# 9.12.5 (Tue Dec 19 00:22:10 EST 1995):
+#	* Corrected rxvt entry khome/kend.
+#	* Corrected linux color change capabilities.
+#	* NeXT entries from Dave Wetzel.
+#	* Cleaned up if and rf file names (all in /usr/share now).
+#	* Changed linux op capability to avoid screwing up a background color
+#	  pair set by setterm.
+# 9.12.6 (Wed Feb  7 16:14:35 EST 1996):
+#	* Added xterm-sun.
+# 9.12.7 (Fri Feb  9 13:27:35 EST 1996):
+#	* Added visa50.
+#
+# 9.13.0 (Sun Mar 10 00:13:08 EST 1996):
+#	* Another sweep through the Shuford archive looking for new info.
+#	* Added dg100 alias to dg6053 based on a comp.terminals posting.
+# 	* Added st52 from Per Persson.
+#	* Added eterm from the GNU Emacs 19.30 distribution.
+#	* Freeze for 1.9.9.
+# 9.13.1 (Fri Mar 29 14:06:46 EST 1996):
+#	* FreeBSD console entries from Andrew Chernov.
+#	* Removed duplicate Atari st52 name.
+# 9.13.2 (Tue May  7 16:10:06 EDT 1996)
+#	* xterm doesn't actually have ACS_BLOCK.
+#	* Change klone+color setf/setb to simpler forms that can be
+#	  translated into termcap.
+#	* Added xterm1.
+#	* Removed mechanically-generated junk capabilities from cons* entries.
+#	* Added color support to bsdos.
+# 9.13.3 (Thu May  9 10:35:51 EDT 1996):
+#	* Added Wyse 520 entries from Wm. Randolph Franklin <wrf@ecse.rpi.edu>.
+#	* Created ecma+color, linux can use it.  Also added ech to linux.
+#	* Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates.
+#	* Add descriptions to FreeBSD console entries.  Also shorten
+#	  some aliases to <= 14 chars for portability.
+#	* Added x68k console
+#	* Added OTbs to several VT-series entries.
+# 9.13.4 (Wed May 22 10:54:09 EDT 1996):
+#	* screen entry update for 3.7.1 from Michael Alan Dorman.
+# 9.13.5 (Wed Jun  5 11:22:41 EDT 1996):
+#	* kterm correction due to Kenji Rikitake.
+#	* ACS correction in vt320-kll due to Phillippe De Muyter.
+# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996):
+#	* Sun console entry correction from J.T. Conklin.
+#	* Changed all DEC VT300 and up terminals to use VT300 tab set
+# 9.13.7 (Mon Jul  8 20:14:32 EDT 1996):
+#	* Added smul to linux entry (we never noticed it was missing
+#	  because of sgr!).
+#	* Added rmln to hp+labels (deduced from other HP entries).
+#	* Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas,
+#	  pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3.
+#	* Corrected vt220 acsc.
+#	* The klone+sgr and klone+sgr-dumb entries now use klone+acs;
+#	  this corresponds to reality and helps prevent some tic warnings.
+#	* Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2,
+#	  hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11,
+#	  adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200,
+#	  qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc,
+#	  wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90,
+#	  adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p,
+#	  f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000,
+#	  owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx,
+#	  lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25,
+#	  dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800,
+#	  ifmr, v3220, wy100q, tandem653, ibmaed.
+#	* Added DWK terminal description.
+# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996):
+#	* Many entries now have highlights inherited from adm+sgr.
+#	* xterm entry now corresponds to XFree86 3.1.2E, with color.
+#	* xtitle and xtitle-twm enable access to the X status line.
+#	* Added linux-1.3.6 color palette caps in conventional format.
+#	* Added adm1178 terminal.
+#	* Move fos and apollo terminals to obsolete category.
+#	* Aha! The BRL terminals file told us what the Iris extensions mean.
+#	* Added, from the BRL termcap file: rt6221, rt6221-w, northstar,
+#	  commodore, cdc721-esc, excel62, osexec.  Replaced from the BRL file:
+#	  cit500, adm11.
+# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996):
+#	* Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756,
+#	  aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155.
+#	* Corrected, from BRL termcap file: vi50.
+#	* Better rxvt entry & corrected xterm entries from Thomas Dickey.
+# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996):
+#	* Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1,
+#	  att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne
+#	  (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi,
+#	  tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro,
+#	  apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae.
+#	* Paired-attribute fixes to various terminals.
+#	* Sun entry corrections from A. Lukyanov & Gert-Jan Vons.
+#	* xterm entry corrections from Thomas Dickey.
+# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996):
+#	* Added t916 entry, translated from a termcap in SCO's support area.
+#	* New qnx entry from Michael Hunter.
+# 9.13.12 (Mon Aug  5 14:31:11 EDT 1996):
+#	* Added hpex2 from Ville Sulko.
+#	* Fixed a bug that ran the qnx and pcvtXX together.
+# 9.13.13 (Fri Aug  9 01:16:17 EDT 1996):
+#	* Added dtterm entry from Solaris CDE.
+# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996):
+#	* corrected pairs#8 typo in dtterm entry.
+#	* added tvi9065.
+# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996):
+#	* updated xterm entry to cover 3.1.2E's new features.
+# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996):
+#	* Added new minix entry
+#	* Removed aliases of the form ^[0-9]* for obsolete terminals.
+#	* Commented out linux-old, nobody's using pre-1.2 kernels now.
+# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996):
+#	* Added Prism entries and kt7ix.
+#	* Caution notes about EWAN and tabset files.
+#	* Changed /usr/lib/tabset -> /usr/local/share/tabset.
+#	* Added acsc/rmacs/smacs to vt52.
+# 9.13.18 (Mon Oct 28 13:24:59 EST 1996):
+#	* Merged in Thomas Dickey's reorganization of the xterm entries;
+#	  added technical corrections to avoid warning messages.
+# 9.13.19 (Sat Nov 16 16:05:49 EST 1996):
+#	* Added rmso=\E[27m in Linux entry.
+#	* Added koi8-r support for Linux console.
+#	* Replace xterm entries with canonical ones from XFree86 3.2.
+# 9.13.20 (Sun Nov 17 23:02:51 EST 1996):
+#	* Added color_xterm from Jacob Mandelson
+# 9.13.21 (Mon Nov 18 12:43:42 EST 1996):
+#	* Back off the xterm entry to use r6 as a base.
+# 9.13.22 (Sat Nov 30 11:51:31 EST 1996):
+#	* Added dec-vt220 at Adrian Garside's request.
+#
+#-(original-changelog-1996/12/29-to-1998/02/28-by-TD)---------------------------
+#
+# 10.1.0 (Sun Dec 29 02:36:31 EST 1996): withdrawn
+#	* Minor corrections to xterm entries.
+#	* Replaced EWAN telnet entry.
+#	* Dropped the reorder script generator.  It was a fossil.
+# 9.13.23 (Fri Feb 21 16:36:06 EST 1997):
+#	* Replaced minitel-2 entry.
+#	* Added MGR, ansi-nt.
+# 9.13.24 (Sun Feb 23 20:55:23 EST 1997):
+#	* Thorsten Lockert added termcap `bs' to a lot of types, working from
+#	  the 4.4BSD Lite2 file.
+#
+# 10.1.1 (Sat May  3 21:41:27 EDT 1997):
+#	* Use setaf/setab consistently with SVr4.
+#	* Remove ech, el1 from cons25w, they do not work in FreeBSD 2.1.5
+# 10.1.2 (Sat May 24 21:10:57 EDT 1997)
+#	* update xterm-xf86-v32 to match XFree86 3.2A (changes F1-F4)
+#	* add xterm-16color, for XFree86 3.3
+# 10.1.3 (Sat May 31 12:21:05 EDT 1997)
+#	* correct typo in emu
+#	* correct typo in vt102-w (Robert Wuest)
+#	* make new entry xterm-xf86-v33, restored xterm-xf86-v32.
+# 10.1.4 (Sun Jun 15 08:29:05 EDT 1997)
+#	* remove ech capability from rxvt (it does the wrong thing)
+# 10.1.5 (Sat Jun 28 21:34:36 EDT 1997)
+#	* remove spurious newlines from several entries (hp+color, wy50,
+#	  wy350, wy370-nk, wy99gt-tek, wy370-tek, ibm3161, tek4205, ctrm,
+#	  gs6300)
+# 10.1.6 (Sat Jul  5 15:08:16 EDT 1997)
+#	* correct rmso capability of wy50-mc
+# 10.1.7 (Sat Jul 12 20:05:55 EDT 1997)
+#	* add cbt to xterm-xf86-v32
+#	* disentangle some entries from 'xterm', preferring xterm-r6 in case
+#	  'xterm' is derived from xterm-xf86-v32, which implements ech and
+#	  other capabilities not in xterm-r6.
+#	* remove alternate character set from kterm entry.
+# 10.1.8 (Sat Aug  2 18:43:18 EDT 1997)
+#	* correct acsc entries for ACS_LANTERN, which is 'i', not 'I'.
+# 10.1.9 (Sat Aug 23 17:54:38 EDT 1997)
+#	* add xterm-8bit entry.
+# 10.1.10 (Sat Oct  4 18:17:13 EDT 1997)
+#	* repair several places where early version of tic replaced \, with \\\,
+#	* make acsc entries canonical form (sorted, uniq).
+#	* modify acsc entries for linux, linux-koi8
+#	* new rxvt entry, from corrected copy of distribution in rxvt 2.21b
+#	* add color, mouse support to kterm.
+# 10.1.11 (Sat Oct 11 14:57:10 EDT 1997)
+#	* correct wy120 smxon/tbc capabilities which were stuck together.
+# 10.1.12 (Sat Oct 18 17:38:41 EDT 1997)
+#	* add entry for xterm-xf86-v39t
+# 10.1.13 (Sat Nov  8 13:43:33 EST 1997)
+#	* add u8,u9 to sun-il description
+# 10.1.14 (Sat Nov 22 19:59:03 EST 1997)
+#	* add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97
+#	  version.
+#	* add hds200 description (Walter Skorski)
+#	* add EMX 0.9b descriptions
+#	* correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver)
+#	* rename xhpterm back to hpterm.
+# 10.1.15 (Sat Nov 29 19:21:59 EST 1997)
+#	* change initc in linux-c-nc to use 0..1000 range.
+# 10.1.16 (Sat Dec 13 19:41:59 EST 1997)
+#	* remove hpa/vpa from rxvt, which implements them incorrectly.
+#	* add sgr0 for rxvt.
+#	* remove bogus smacs/rmacs from EMX descriptions.
+# 10.1.17 (Sat Dec 20 17:54:10 EST 1997)
+#	* revised entry for att7300
+# 10.1.18 (Sat Jan  3 17:58:49 EST 1998)
+#	* use \0 rather than \200.
+#	* rename rxvt-color to rxvt to match rxvt 2.4.5 distribution.
+# 10.1.19 (Sat Jan 17 14:24:57 EST 1998)
+#	* change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset.
+#	* rename xterm-xf86-v39t to xterm-xf86-v40
+#	* remove bold/underline from sun console entries since they're not
+#	  implemented.
+# 10.1.20 (Sat Jan 24 11:02:51 EST 1998)
+#	* add beterm entry (Fred Fish)
+#	* add irix-color/xwsh entry.
+#	* turn ncv off for linux.
+# 10.1.21 (Sat Jan 31 17:39:16 EST 1998)
+#	* set ncv for FreeBSD console (treat colors with reverse specially).
+#	* remove sgr string from qnx based on report by Xiaodan Tang
+# 10.1.22 (Wed Feb 11 18:40:12 EST 1998)
+#	* remove spurious commas from descriptions
+#	* correct xterm-8bit to match XFree86 3.9Ad F1-F4.
+# 10.1.23 (Sat Feb 28 17:48:38 EST 1998)
+#	* add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
+#	  apparently based on cp-866).
+#
+#-(replaced-changelog-1998/02/28-by-ESR)----------------------------------------
+#
+# 9.13.23 (Fri Feb 21 16:36:06 EST 1997):
+#	* Replaced minitel-2 entry.
+#	* Added MGR, ansi-nt.
+#	* Minor corrections to xterm entries.
+#	* Replaced EWAN telnet entry.
+#	* Dropped the reorder script generator.  It was a fossil.
+# 9.13.24 (Sun Feb 23 20:55:23 EST 1997):
+#	* Thorsten Lockert added termcap `bs' to a lot of types, working from
+#	  the 4.4BSD Lite2 file.
+# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997):
+#	* Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js.
+#	* Updated iris-ansi; corrected vt102-w.
+#	* Switch base xterm entry to 3.3 level.
+# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997)
+#	* Added basic4.
+#	* Removed rmir/smir from tv92B.
+#
+# 10.2.0 (Sat Feb 28 12:47:36 EST 1998):
+#	* add hds200 description (Walter Skorski)
+#	* add beterm entry (Fred Fish)
+#	* add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color,
+#	  iris-color entries.
+#	* add emx entries.
+#	* Replaced unixpc entry with Benjamin Sittler's corrected version.
+#	* Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's
+#	  versions.
+#	* remove sgr string from qnx based on report by Xiaodan Tang
+#	* Added u8/u9, removed rmul/smul from sun-il.
+#	* 4.2 tic displays \0 rather than \200.
+#	* add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
+#	  apparently based on cp-866).
+#	* Merged in Pavel Roskin's acsc for linux-koi8
+#	* Corrected some erroneous \\'s to \.
+#	* 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV.
+#	* II -> ii in pcvtXX, screen, xterm.
+#	* Removed \n chars following ANSI escapes in sgr & friends.
+#	* Updated Wyse entries.
+#	* h19 corrections from Tim Pierce.
+#	* Noted that the dm2500 has both ich and smir.
+#	* added pccons for the Alpha under OSF/1.
+#	* Added Sony NEWS workstation entries and cit101e-rv.
+#	* Reverted `amiga'; to Kent Polk's version, as I'm told
+#	  the Verkuil entry messes up with Amiga Telnet.
+# 10.2.1 (Sun Mar  8 18:32:04 EST 1998):
+#	* Corrected attributions in 10.2.0 release notes.
+#	* Scanned the Shuford archive for new terminfos and information.
+#	* Removed sgr from qnx entry (Thomas Dickey).
+#	* Added entries for ICL and Kokusai Data Systems terminals.
+#	* Incorporated NCR terminfos from the Boundless Technology FTP site.
+#	* Incorporated att700 from the Boundless Technology FTP site.
+#	* Miscellaneous contact-address and Web-page updates.
+#
+#-(changelog-beginning-ncurses-4.2)---------------------------------------------
+#
+# 1998/5/9
+#	* add nxterm and xterm-color terminfo description (request by Cristian
+#	  Gafton <gafton@redhat.com>).
+#	* modify rxvt terminfo description to clear alternate screen before
+#	  switching back to normal screen, for compatibility with applications
+#	  which use xterm (reported by Manoj Kasichainula <manojk@io.com>).
+#	* modify linux terminfo description to reset color palette (reported
+#	  by Telford Tendys <telford@eng.uts.edu.au>).
+#
+# 1998/7/4
+#	* merge changes from current XFree86 xterm terminfo descriptions.
+#
+# 1998/7/25
+#	* Added minitel1 entries from Alexander Montaron.
+#	* Added qnxt2 from Federico Bianchi.
+#	* Added arm100 terminfo entries from Dave Millen.
+#
+# 1998/8/6
+#	* Added ncsa telnet entries from Francesco Potorti
+#
+# 1998/8/15
+#	* modify ncsa telnet entry to reflect color, other capabilities based on
+#	  examination of the source code - T.Dickey.
+#
+# 1998/8/22
+#	* Corrected some erroneous \\'s to \ (eterm, osborne) - TD.
+#
+# 1998/8/29
+#	* Added Francesco Potorti's tuned Wyse 99 entries.
+#	* dtterm enacs correction from Alexander V. Lukyanov.
+#	* Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
+#	* correct a typo in icl6404 entry.
+#	* add xtermm and xtermc
+#
+# 1998/9/26
+#	* format most %'char' sequences to %{number}
+#	* adapt IBM AIX 3.2.5 terminfo - T.Dickey
+#	* merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD
+#
+# 1998/10/10
+#	* update xterm-xfree86 to current (patch 84), for is2/rs2 changes - TD
+#	* correct initialization string in xterm-r5, add misc other features
+#	  to correspond with xterm patch 84 - TD
+#
+# 1998/12/19
+#	* update xterm-xfree86 to current (patch 90), smcur/rmcur changes - TD
+#	* add Mathew Vernon's mach console entries
+#	* corrections for ncsa function-keys (report by Larry Virden)
+#
+# 1998/12/19
+#	* change linux to use ncv#2, since underline does not work with color - TD
+#
+# 1999/1/9
+#	* add kbt to iris-ansi, document other shift/control functionkeys - TD
+#	* correct iris-ansi and iris-ansi-ap with respect to normal vs keypad
+#	  application modes, change kent to use the correct keypad code - TD
+#
+# 1999/1/10
+#	* add entry for Tera Term - TD
+#
+# 1999/1/23
+#	* minor improvements for teraterm entry - TD
+#	* rename several entries used by BSDI: bsdos to bsdos-pc-nobold,
+#	  and bsdos-bold to bsdos-pc (Jeffrey C Honig)
+#
+# 1999/2/20
+#	* resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
+#	  xterm and ncsa entries by removing the unneeded ones.  Note that
+#	  some entries will return kend & khome versus kslt and kfnd, for
+#	  PC-style keyboards versus strict vt220 compatiblity - TD
+#
+# 1999/3/13
+#	* adjust xterm-xfree86 khome/kend to match default PC-style keyboard
+#	  tables - TD
+#	* add 'crt' entry - TD
+#	* correct typos in 'linux-c' entry - TD
+#
+# 1999/3/14
+#	* update entries for BSD/OS console to use klone+sgr and klone+color
+#	  (Jeffrey C Honig)
+#
+# 1999/3/27
+#	* adjust xterm-xfree86 miscellaneous keypad keys, as per patch #94 - TD.
+#
+# 1999/4/10
+#	* add linux-lat, from RedHat patches to ncurses 4.2
+#
+# 1999/4/17
+#	* add complete set of default function-key definitions for scoansi - TD.
+#
+# 1999/7/3
+#	* add cnorm, cvvis for Linux 2.2 kernels
+#
+# 1999/7/24
+#	* add kmous to xterm-r5 -TD
+#	* correct entries xterm+sl and xterm+sl-twm, which were missing the
+#	  parent "use" clause -TD
+#
+# 1999/7/31
+#	* corrected cnorm, added el1 in 'screen' description -TD
+#
+# 1999/8/14
+#	* add ms-vt100 -TD
+#
+# 1999/8/21
+#	* corrections to beterm entry -TD
+#
+# 1999/8/28
+#	* add cygwin entry -TD
+#
+# 1999/9/4
+#	* minor corrections for beterm entry -TD
+#
+# 1999/9/18
+#	* add acsc string to HP 70092 terminfo entry -Joerg Wunsch
+#
+# 1999/9/25
+#	* add amiga-8bit entry
+#	* add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons,
+#	  rcons-color, based on
+#	  ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src
+#	* add alias for iris-ansi-net
+#
+# 1999/10/2
+#	* corrected scoansi entry's acsc, some function keys, add color -TD
+#
+# 1999/10/23
+#	* add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD
+#	* reorder ncsa entries to make ncsa-vt220 use the alternate function
+#	  key mapping, leaving Potorti's entries more like he named them -TD
+#	* remove enter/exit am-mode from cygwin -TD
+#
+# 1999/10/30
+#	* correct typos in several entries (missing '[' from CSI):
+#	  mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir
+#	  strings for avt-ns -TD
+#	* add 'dim' to ncv mask for linux (report by Klaus Weide).
+#
+# 1999/11/27
+#	* correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD
+#	* add hts to xterm-r6, and u6-u9 to xterm-r5 -TD
+#	* add xterm-88color and xterm-256color -TD
+#
+# 1999/12/4
+#	* add "obsolete" termcap strings -TD
+#	* add kvt and gnome entries -TD
+#
+# 1999/12/11
+#	* correct cup string for regent100 -TD
+#
+# 2000/1/1
+#	* update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD
+#	* add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD
+#	* change OTrs capabilities to rs2 -TD
+#	* add obsolete and extended capabilities to 'screen' -TD
+#
+# 2000/1/5
+#	* remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts
+#	  with kf10 -TD
+#	* updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove',
+#	  and adding kcbt -TD
+#
+# 2000/1/12
+#	* remove incorrect khome/kend from xterm-xf86-v333, which was based on
+#	  nonstandard resource settings -TD
+#
+# 2000/2/26
+#	* minor fixes for xterm-*, based on Debian #58530 -TD
+#
+# 2000/3/4
+#	* add several terminal types from esr's "11.0", as well as comments.
+#	  bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*,
+#	  vt220-8bit, vt220-old, wy85-8bit
+#
+# 2000/3/18
+#	* add several terminal types from esr's "11.0.1" (ansi-*).
+#	* update OTxx capabilities for changes on 2000/3/4.
+#	* revert part of vt220 change (request by Todd C Miller for OpenBSD)
+#
+# 2000/3/26
+#	* move screen's AX extension to ecma+color, modify several entries to
+#	  use that, adjusting ncv as needed -TD
+#
+# 2000/4/8
+#	* add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig)
+#	* correct spelling error in entry name: bq300-rv was given as bg300-rv
+#	  in esr's version.
+#
+# 2000/4/15
+#	* add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD
+#	* correct color definition for ibm3164, make minor changes to other
+#	  IBM terminal definitions based on recent terminfo descriptions -TD
+#
+# 2000/4/22
+#	* add mgterm, from NetBSD -TD
+#	* add alias sun-cgsix for sun-ss5 as per NetBSD
+#	* change cons25w to use rs2 for reset rather than rs1 -TD
+#	* add rc/sc to aixterm based on manpage -TD
+#
+# 2000/5/13
+#	* remove ncv from xterm-16color, xterm-256color
+#
+# 2000/6/10
+#	* add kmous capability to linux to use Joerg Schoen's gpm patch.
+#
+# 2000/7/1
+#	* add Eterm (Michael Jennings)
+#
+# 2000-07-18
+#       * add amiga-vnc entry.
+#
+# 2000-08-12
+#	* correct description of Top Gun Telnet.
+#	* add kterm-color
+#
+# 2000-08-26
+#	* add qansi* entries from QNX ftp site.
+#
+# 2000-09-16
+#	* add Matrix Orbital entries by Eric Z. Ayers).
+#	* add xterm-basic, xterm-sco entries, update related entries to XFree86
+#	  4.0.1c -TD
+#
+# 2000-09-17
+#	* add S0, E0 extensions to screen's entry -TD
+#
+# 2000-09-23
+#	* several corrections based on tic's new parameter-checking code -TD
+#	* modify xterm-r6 and similar rs2 sequences which had \E7...\E8
+#	  bracketing sequences that reset video attributes (\E8 would restore
+#	  them) -TD
+#
+# 2000-11-11
+#	* rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD
+#
+# 2000-12-16
+#	* improved scoansi, based on SCO man-page, and testing console,
+#	  scoterm with tack -TD
+#
+# 2001-01-27
+#	* modify kterm to use acsc via SCS controls.
+#
+# 2001-02-10
+#	* screen 3.9.8 allows xterm mouse controls to pass-through
+#
+# 2001-03-11
+#	* remove spurious "%|" from some xterm entries.
+#
+# 2001-03-31
+#	* modify 'screen' khome/kend to match screen 3.09.08
+#	* add examples of 'screen' customization (screen.xterm-xfree86,
+#	  screen.xterm-r6, screen.teraterm) -TD
+#
+# 2001-04-14
+#	* correct definitions of shifted editing keys for xterm-xfree86 -TD
+#	* add "Apple_Terminal" entries -Benjamin Sittler
+#	* remove time-delays from "Apple_Terminal" entries -TD
+#	* make sgr entries time-delays consistent with individual caps -TD
+#
+# 2001-05-05
+#	* corrected/updated screen.xterm-xfree86
+#
+# 2001-05-19
+#	* ELKS descriptions, from Federico Bianchi
+#	* add u6 (CSR) to Eterm (Michael Jennings).
+#
+# 2001-07-21
+#	* renamed "Apple_Terminal" entries to "nsterm" to work with Solaris's
+#	  tic which handles names no longer than 14 characters.  Add
+#	  corresponding descriptions for the Darwin PowerPC console named
+#	  "xnuppc" -Benjamin Sittler
+#
+# 2001-09-01
+#	* change kbs in mach entries to ^? (Marcus Brinkmann).
+#
+# 2001-11-17
+#	* add "putty" entry -TD
+#	* updated "Apple_Terminal" entries -Benjamin Sittler
+#
+# 2001-11-24
+#	* add ms-vt100-color entry -TD
+#	* add "konsole" entries -TD
+#
+# 2001-12-08
+#	* update gnome entry to Redhat 7.2 -TD
+#
+# 2002-05-25
+#	* add kf13-kf48 strings to cons25w -TD
+#	* add pcvt25-color entry -TD
+#	* changed a few /usr/lib/tabset -> /usr/local/share/tabset.
+#	* improve some features of scoansi entry based on SCO's version -TD
+#	* add scoansi-new entry corresponding to OpenServer 5.0.6
+#
+# 2002-06-15
+#	* add kcbt to screen entry -TD
+#
+# 2002-06-22
+#	* add rxvt-16color, ibm+16color, mvterm entries -TD
+#
+# 2002-09-28
+#	* split out linux-basic entry, making linux-c inherit from that, and
+#	  in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect
+#	  the history of this console type -TD
+#	* scaled the linux-c terminfo entry to match linux-c-nc, i.e., the
+#	  r/g/b parameters of initc are in the range 0 to 1000 -TD
+#
+# 2002-10-05
+#	* minor fix for scale-factor of linux-c and linux-c-nc -TD
+#
+# 2002-11-09
+#	* split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2
+#	  in the latter -TD
+#
+# 2002-11-16
+#	* add entries for mterm (mterm, mterm-ansi, decansi) -TD
+#	* ncr260wy350pp has only 16 color pairs -TD
+#	* add sun-type4 from NetBSD -TD
+#	* update xterm-xfree86 to current (patch 170) -TD
+#	* add screen-bce, screen-s entries -TD
+#	* add xterm-1002, xterm-1003 entries -TD
+#
+# 2003-01-11
+#	* update homepage for Top Gun Telnet/SSH
+#
+# 2003-01-25
+#	* reduce duplication in emx entries, added emx-base -TD
+#
+# 2003-05-24
+#	* corrected acs for screen.teraterm -TD
+#	* add tkterm entry -TD
+#
+# 2003-07-15
+#	* cygwin changes from Charles Wilson:
+#	  misc/terminfo.src (nxterm|xterm-color): make xterm-color
+#	  primary instead of nxterm, to match XFree86's xterm.terminfo
+#	  usage and to prevent circular links.
+#	  (rxvt): add additional codes from rxvt.org.
+#	  (rxvt-color): new alias
+#	  (rxvt-xpm): new alias
+#	  (rxvt-cygwin): like rxvt, but with special acsc codes.
+#	  (rxvt-cygwin-native): ditto.  rxvt may be run under XWindows, or
+#	  with a "native" MSWin GUI.  Each takes different acsc codes,
+#	  which are both different from the "normal" rxvt's acsc.
+#	  (cygwin): cygwin-in-cmd.exe window.  Lots of fixes.
+#	  (cygwinDBG): ditto.
+#
+# 2003-09-27
+#	* update gnome terminal entries -TD
+#
+# 2003-10-04
+#	* add entries for djgpp 2.03 and 2.04 -TD
+#
+# 2003-10-25
+#	* add alias for vtnt -TD
+#	* update xterm-xfree86 for XFree86 4.4 -TD
+#
+# 2003-11-22
+#	* add linux-vt (Andrey V Lukyanov)
+#
+# 2003-12-20
+#	* add screen.linux -TD
+#
+# 2004-01-10
+#	* revised/improved entries for tvi912b, tvi920b (Benjamin Sittler)
+#
+# 2004-01-17
+#	* add OpenNT/Interix/SFU entries (Federico Bianchi)
+#	* add vt100+ and vt-utf8 entries -TD
+#	* add uwin entry -TD
+#
+# 2004-03-27
+#	* add sgr strings to several common entries lacking them, e.g.,
+#	  screen, to make the entries more portable -TD
+#	* remove cvvis from rxvt entry, since it is the same as cnorm -TD
+#	* similar fixups for cvvis/cnorm various entries -TD
+#
+# 2004-05-22
+#	* remove 'ncv' from xterm-256color (patch 188) -TD
+#
+# 2004-06-26
+#	* add mlterm -TD
+#	* add xterm-xf86-v44 -TD
+#	* modify xterm-new aka xterm-xfree86 to accommodate luit, which relies
+#	  on G1 being used via an ISO-2022 escape sequence (report by
+#	  Juliusz Chroboczek) -TD
+#	* add 'hurd' entry -TD
+#
+# 2004-07-03
+#	* make xterm-xf86-v43 derived from xterm-xf86-v40 rather than
+#	  xterm-basic -TD
+#	* align with xterm #192's use of xterm-new -TD
+#	* update xterm-new and xterm-8bit for cvvis/cnorm strings -TD
+#	* make xterm-new the default "xterm" -TD
+#
+# 2004-07-10
+#	* minor fixes for emu -TD
+#	* add emu-220
+#	* add rmam/smam to linux (Trevor Van Bremen)
+#	* change wyse acsc strings to use 'i' map rather than 'I' -TD
+#	* fixes for avatar0 -TD
+#	* fixes for vp3a+ -TD
+#
+# 2004-07-17
+#	* add xterm-pc-fkeys -TD
+#	* review/update gnome and gnome-rh90 entries (prompted by
+#	  Redhat Bugzilla #122815) -TD
+#	* review/update konsole entries -TD
+#	* add sgr, correct sgr0 for kterm and mlterm -TD
+#	* correct tsl string in kterm -TD
+#
+# 2004-07-24
+#	* make ncsa-m rmacs/smacs consistent with sgr -TD
+#	* add sgr, rc/sc and ech to syscons entries -TD
+#	* add function-keys to decansi -TD
+#	* add sgr to mterm-ansi -TD
+#	* add sgr, civis, cnorm to emu -TD
+#	* correct/simplify cup in addrinfo -TD
+#	* corrections for gnome and konsole entries
+#	  (Redhat Bugzilla #122815) -Hans de Goede
+#	* modify DEC entries (vt220, etc), to add sgr string, and to use
+#	  ISO-2022 strings for rmacs/smacs -TD
+#
+# 2004-07-31
+#	* rename xterm-pc-fkeys to xterm+pcfkeys -TD
+#
+# 2004-08-07
+#	* improved putty entry -Robert de Bath
+#
+# 2004-08-14
+#	* remove dch/dch1 from rxvt because they are implemented inconsistently
+#	  with the common usage of bce/ech -TD
+#	* remove khome from vt220 (vt220's have no home key) -TD
+#	* add rxvt+pcfkeys -TD
+#
+# 2004-08-21
+#	* modify several entries to ensure xterm mouse and cursor visibility
+#	  are reset in rs2 string:  hurd, putty, gnome, konsole-base, mlterm,
+#	  Eterm, screen.  (The xterm entries are left alone - old ones for
+#	  compatibility, and the new ones do not require this change) -TD
+#
+# 2004-08-28
+#	* add morphos entry -Pavel Fedin
+#	* modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin
+#	* corrected \E[5?l to \E[?5l in vt320 entries -TD
+#
+# 2004-11-20
+#	* update wsvt25 entry -TD
+#
+# 2005-01-29
+#	* update pairs for xterm-88color and xterm-256color to reflect the
+#	  ncurses extended-color support -TD
+#
+# 2005-02-26
+#	* modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD
+#	* add aixterm-16color to demonstrate 16-color capability -TD
+#
+# 2005-04-23
+#	* add media-copy to vt100 -TD
+#	* corrected acsc string for vt52 -TD
+#
+# 2005-04-30
+#	* add kUP, kDN (user-defined shifted up/down arrow) definitions for
+#	  xterm-new -TD
+#	* add kUP5, kUP6, etc., for xterm-new and rxvt -TD
+#
+# 2005-05-07
+#	* re-corrected acsc string for vt52 -TD
+#
+# 2005-05-28
+#	* corrected sun-il sgr string which referred to bold and underline -TD
+#	* add sun-color entry -TD
+#
+# 2005-07-23
+#	* modify sgr0 in several entries to reset alternate-charset as in the
+#	  sgr string -TD
+#	* modify sgr string of prism9 to better match the individual
+#	  attributes -TD
+#
+# 2005-10-15
+#	* correct order of use= in rxvt-basic -TD
+#
+# 2005-10-26
+#	* use kind/kri as shifted up/down cursor keys for xterm-new -TD
+#
+# 2005-11-12
+#	* other minor fixes to cygwin based on tack -TD
+#	* correct smacs in cygwin (report by Baurzhan Ismagulov).
+#
+# 2006-02-18
+#	* add nsterm-16color entry -TD
+#	* remove ncv flag from xterm-16color -TD
+#	* remove setf/setb from xterm-256color to match xterm #209 -TD
+#	* update mlterm entry to 2.9.2 -TD
+#
+# 2006-02-25
+#	* fixes to make nsterm-16color match report
+#	  by Christian Ebert -Alain Bench
+#
+# 2006-04-22
+#	* add xterm+256color building block -TD
+#	* add gnome-256color, putty-256color, rxvt-256color -TD
+#
+# 2006-05-06
+#	* add hpterm-color -TD
+#
+# 2006-06-24
+#	* add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD
+#	* add gnome-fc5 (prompted by GenToo #122566) -TD
+#	* remove obsolete/misleading comments about kcbt on Linux -Alain Bench
+#	* improve xterm-256color by combining the ibm+16color setaf/setab
+#	  strings with SGR 48.  The setf/setb strings also are cancelled here
+#	  rather than omitted so derived entries will cancel those also -Alain
+#	  Bench
+#
+# 2006-07-01
+#	* add some notes regarding copyright to terminfo.src -TD
+#	* use rxvt+pcfkeys in Eterm -TD
+#	* remove km and flash from gnome, Eterm and rxvt since they do not work
+#	  as one would expect (km sends ESC rather than setting the 8th bit
+#	  of the key) -TD
+#	* add/use ansi+enq, vt100+enq and vt102+enq -TD
+#	* add konsole-solaris -TD
+#
+# 2006-07-22
+#	* update xterm-sun and xterm-sco entries to match xterm #216 -TD
+#	* modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD
+#	* modify xterm-24 to inherit from "xterm" -TD
+#	* add xiterm entry -TD
+#	* add putty-vt100 entry -TD
+#	* corrected spelling of Michael A Dorman's name, prompted by
+#	  http://www.advogato.org/person/mdorman/diary.html -TD
+#
+# 2006-08-05
+#	* add xterm+pcf0, xterm+pcf2 from xterm #216 -TD
+#	* update xterm+pcfkeys to match xterm #216 -TD
+#
+# 2006-08-17
+#	* make descriptions of xterm entries consistent with its terminfo -TD
+#
+# 2006-08-26
+#	* add xfce, mgt -TD
+#
+# 2006-09-02
+#	* correct acsc string in kterm -TD
+#
+# 2006-09-09
+#	* add kon entry -TD
+#	* remove invis from linux and related entries, add klone+sgr8 for those
+#	  that implement the feature (or have not been shown to lack it) -TD
+#
+# 2006-09-23
+#	* add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD
+#	* minor improvements to rxvt+pcfkeys -TD
+#
+# 2006-09-30
+#	* fix a few typos in if/then/else expressions -TD
+#
+# 2006-10-07
+#	* add several GNU Screen variations with 16- and 256-colors, and
+#	  status line (Alain Bench).
+#
+# 2007-03-03
+#	* add Newbury Data entries (Jean-Charles Billaud).
+#
+# 2007-06-10
+#	* corrected xterm+pcf2 modifiers for F1-F4, match xterm #226 -TD
+#
+# 2007-07-14
+#	* restore section of pre-ncurses-4.2 changelog to fix attribution -TD
+#	* add konsole-256color entry -TD
+#
+# 2007-08-18
+#	* add 9term entry (request by Juhapekka Tolvanen) -TD
+#
+# 2007-10-13
+#	* correct kIC in rxvt+pcfkeys (prompted by Debian #446444) -TD
+#	* add shift-control- and control-modified keys for rxvt editing
+#	  keypad -TD
+#	* update mlterm entry to 2.9.3 -TD
+#	* add mlterm+pcfkeys -TD
+#
+# 2007-10-20
+#	* move kLFT, kRIT, kind and kri capabilities from xterm-new to
+#	  xterm+pcc0, etc., to make the corresponding building blocks reflect
+#	  xterm's capabilities -TD
+#	* add mrxvt entry -TD
+#	* add xterm+r6f2, use in mlterm and mrxvt entries -TD
+#
+# 2007-11-03
+#	* correct acsc strings for h19 and z100 (Benjamin Sittler)
+#
+# 2007-11-11
+#	* use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to
+#	  xterm starting with patch #216 -TD
+#	* make legacy xterm entries such as xterm-24 inherit from xterm-old,
+#	  to match xterm #230 -TD
+#	* extend xterm+pccX entries to match xterm #230 -TD
+#	* add xterm+app, xterm+noapp, from xterm #230 -TD
+#	* add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD
+#
+# 2008-04-19
+#	* add screen.rxvt -TD
+#
+# 2008-04-28
+#	* add screen+fkeys (prompted by Debian # 478094) -TD
+#
+# 2008-06-28
+#	* add screen.mlterm -TD
+#	* improve mlterm and mlterm+pcfkeys -TD
+#
+# 2008-08-23
+#	* add Eterm-256color, Eterm-88color -TD
+#	* add rxvt-88color -TD
+#
+# 2008-10-12
+#	* add teraterm4.59 entry, use that as primary teraterm entry, rename
+#	  original to teraterm2.3 -TD
+#	* update "gnome" to 2.22.3 -TD
+#	* update "konsole" to 1.6.6 -TD
+#	* add "aterm" -TD
+#	* add "linux2.6.26" -TD
+#
+# The following sets edit modes for GNU EMACS.
+# Local Variables:
+# fill-prefix:"\t"
+# fill-column:75
+# comment-column:0
+# comment-start-skip:"^#+"
+# comment-start:"# "
+# compile-command:"tic -c terminfo.master"
+# End:
+######## SHANTIH!  SHANTIH!  SHANTIH!
diff --git a/ncurses/Makefile b/ncurses/Makefile
new file mode 100644
index 0000000..cf9bbab
--- /dev/null
+++ b/ncurses/Makefile
@@ -0,0 +1,2022 @@
+# $Id: Makefile.in,v 1.113 2008/10/18 14:11:54 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2007,2008 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for ncurses source code.
+#
+# This makes the following:
+#	programs
+#	includes
+#	libraries (normal/debug/profile/shared)
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+# and the programs with the configured default model.
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+CF_MFLAGS 	= 
+
+
+x		= 
+o		= .o
+
+MODEL		= normal
+DESTDIR		= 
+top_srcdir	= ..
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+includedir	= ${prefix}/include/ncurses
+datadir		= ${prefix}/share
+
+LIBTOOL		= 
+LIBTOOL_CLEAN	= 
+LIBTOOL_COMPILE	= 
+LIBTOOL_LINK	= ${CC}
+LIBTOOL_INSTALL	= 
+LIBTOOL_UNINSTALL = 
+
+INSTALL		= /usr/bin/install -c
+INSTALL_LIB	= /usr/bin/install -c -m 644
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AR		= arm-eabi-ar
+AR_OPTS		= rv
+AWK		= mawk
+LD		= arm-eabi-ld
+LN_S		= ln -s
+
+CC		= agcc.pl
+CPP		= agcc.pl -E
+CFLAGS		= -O2 --param max-inline-insns-single=1200
+
+INCDIR		= $(srcdir)/../include
+CPPFLAGS	= -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I. -I../include  -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=199506L -DNDEBUG -I${includedir}
+
+CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
+
+BUILD_CPPFLAGS	= -I../include 
+BUILD_CC	= gcc
+BUILD_CCFLAGS	= -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I$(INCDIR) $(BUILD_CPPFLAGS) 
+BUILD_LDFLAGS	= 
+BUILD_LIBS	= 
+
+# The executables built in this directory are used for generating source that
+# is compiled into the build, or are test-programs that are not installed.
+
+BUILD_EXEEXT	= 
+x		= 
+
+CFLAGS_LIBTOOL	= $(CCFLAGS)
+CFLAGS_NORMAL	= $(CCFLAGS)
+CFLAGS_DEBUG	= $(CCFLAGS) -g -DTRACE
+CFLAGS_PROFILE	= $(CCFLAGS) -pg
+CFLAGS_SHARED	= $(CCFLAGS) unknown
+
+CFLAGS_DEFAULT	= $(CFLAGS_NORMAL)
+
+LINK		= $(LIBTOOL)
+LDFLAGS		=   
+
+SHLIB_DIRS	= -L../lib
+SHLIB_LIST	= $(SHLIB_DIRS) 
+TINFO_LIST	= $(SHLIB_DIRS) 
+TICS_LIST	= $(SHLIB_DIRS) 
+
+MK_SHARED_LIB	= echo unknown
+
+NCURSES_MAJOR	= 5
+NCURSES_MINOR	= 7
+REL_VERSION	= 5.7
+ABI_VERSION	= 5
+
+RANLIB		= arm-eabi-ranlib
+
+LIBRARIES	=  ../lib/libncurses.a ../lib/libncurses_g.a
+
+LINT		= 
+LINT_OPTS	= 
+LINT_LIBS	= -lncurses 
+
+FALLBACK_LIST	= 
+
+USE_BIG_STRINGS	= 1
+TERMINFO_CAPS	= $(top_srcdir)/include/Caps
+
+AUTO_SRC = \
+	./codes.c \
+	./comp_captab.c \
+	./expanded.c \
+	./fallback.c \
+	./lib_gen.c \
+	./lib_keyname.c \
+	./link_test.c \
+	./names.c \
+	./unctrl.c \
+	init_keytry.h \
+	keys.list
+
+TEST_DEPS	= ../lib/libncurses.a
+TEST_ARGS	= -static -L../lib -lform -lmenu -lpanel -lncurses  -dynamic 
+TEST_LDFLAGS	=  $(TEST_ARGS)   
+
+TEST_PROGS = \
+	captoinfo$x \
+	hardscroll$x \
+	link_test$x \
+	hashmap$x \
+	lib_mvcur$x
+
+base	= $(srcdir)/base
+serial	= $(srcdir)/tty
+tinfo	= $(srcdir)/tinfo
+trace	= $(srcdir)/trace
+wide	= $(srcdir)/widechar
+
+################################################################################
+all \
+libs ::		$(AUTO_SRC) ../lib $(LIBRARIES)
+
+sources:	$(AUTO_SRC)
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) :
+	sh $(srcdir)/../mkdirs.sh $@
+
+../lib : ; mkdir $@
+
+./fallback.c : $(tinfo)/MKfallback.sh
+	sh -e $(tinfo)/MKfallback.sh /usr/local/share/terminfo ${top_srcdir}/misc/terminfo.src $(FALLBACK_LIST) >$@
+
+./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
+	sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
+
+init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
+	./make_keys$(BUILD_EXEEXT) keys.list > $@
+
+keys.list :	$(tinfo)/MKkeys_list.sh
+	AWK=$(AWK) sh $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@
+
+make_keys$(BUILD_EXEEXT) : \
+		$(tinfo)/make_keys.c \
+		names.c
+	$(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+
+make_hash$(BUILD_EXEEXT) : \
+		$(tinfo)/comp_hash.c \
+		../include/hashsize.h
+	$(BUILD_CC) -o $@ $(BUILD_CCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+
+./expanded.c : $(serial)/MKexpanded.sh
+	sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
+
+./comp_captab.c: \
+		make_hash$(BUILD_EXEEXT) \
+		../include/hashsize.h \
+		$(tinfo)/MKcaptab.sh \
+		$(tinfo)/MKcaptab.awk
+	sh -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/Caps > $@
+
+./lib_keyname.c: keys.list $(base)/MKkeyname.awk
+	$(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@
+
+./codes.c: $(tinfo)/MKcodes.awk
+	$(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@
+
+./names.c: $(tinfo)/MKnames.awk
+	$(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@
+
+./unctrl.c: $(base)/MKunctrl.awk
+	echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@
+
+tags:
+	ctags *.[ch] */*.[ch]
+
+TAGS:
+	etags *.[ch] */*.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+	-rm -f $(TEST_PROGS)
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+	-rm -f make_keys$(BUILD_EXEEXT)
+	-rm -f make_hash$(BUILD_EXEEXT)
+	-rm -rf .libs
+
+distclean :: clean
+	-rm -f Makefile
+
+realclean :: distclean
+
+# These rules are used to allow "make -n" to work on a clean directory-tree
+../include/hashsize.h \
+../include/parametrized.h \
+../include/term.h :
+	cd ../include; $(MAKE) $(CF_MFLAGS)
+
+# These rules build test-programs for the modules that have test-drivers
+test_progs : $(TEST_PROGS)
+
+./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
+	sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
+
+captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
+
+hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
+
+hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS)
+
+lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
+		../objects/dump_entry$o
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../objects/dump_entry$o $(TEST_LDFLAGS)
+
+link_test$x : ./link_test.c $(TEST_DEPS) \
+		../objects/link_test$o
+	 $(CC) -o $@ $(CFLAGS_DEFAULT) ../objects/link_test$o $(TEST_LDFLAGS)
+
+../objects/dump_entry$o:
+	cd ../progs && $(MAKE) ../objects/dump_entry$o
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# generated by mk-0th.awk
+#   libname:    ncurses
+#   subsets:    ticlib+termlib+ext_tinfo+base+ext_funcs
+
+.SUFFIXES: .c .cc .h .i .ii
+.c.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+.cc.ii :
+	$(CPP) $(CPPFLAGS) $< >$@
+.h.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+
+C_SRC = \
+	$(serial)/hardscroll.c \
+	$(serial)/hashmap.c \
+	$(base)/lib_addch.c \
+	$(base)/lib_addstr.c \
+	$(base)/lib_beep.c \
+	$(base)/lib_bkgd.c \
+	$(base)/lib_box.c \
+	$(base)/lib_chgat.c \
+	$(base)/lib_clear.c \
+	$(base)/lib_clearok.c \
+	$(base)/lib_clrbot.c \
+	$(base)/lib_clreol.c \
+	$(base)/lib_color.c \
+	$(base)/lib_colorset.c \
+	$(base)/lib_delch.c \
+	$(base)/lib_delwin.c \
+	$(base)/lib_echo.c \
+	$(base)/lib_endwin.c \
+	$(base)/lib_erase.c \
+	$(base)/lib_flash.c \
+	./lib_gen.c \
+	$(base)/lib_getch.c \
+	$(base)/lib_getstr.c \
+	$(base)/lib_hline.c \
+	$(base)/lib_immedok.c \
+	$(base)/lib_inchstr.c \
+	$(base)/lib_initscr.c \
+	$(base)/lib_insch.c \
+	$(base)/lib_insdel.c \
+	$(base)/lib_insnstr.c \
+	$(base)/lib_instr.c \
+	$(base)/lib_isendwin.c \
+	$(base)/lib_leaveok.c \
+	$(base)/lib_mouse.c \
+	$(base)/lib_move.c \
+	$(serial)/lib_mvcur.c \
+	$(base)/lib_mvwin.c \
+	$(base)/lib_newterm.c \
+	$(base)/lib_newwin.c \
+	$(base)/lib_nl.c \
+	$(base)/lib_overlay.c \
+	$(base)/lib_pad.c \
+	$(base)/lib_printw.c \
+	$(base)/lib_redrawln.c \
+	$(base)/lib_refresh.c \
+	$(base)/lib_restart.c \
+	$(base)/lib_scanw.c \
+	$(base)/lib_screen.c \
+	$(base)/lib_scroll.c \
+	$(base)/lib_scrollok.c \
+	$(base)/lib_scrreg.c \
+	$(base)/lib_set_term.c \
+	$(base)/lib_slk.c \
+	$(base)/lib_slkatr_set.c \
+	$(base)/lib_slkatrof.c \
+	$(base)/lib_slkatron.c \
+	$(base)/lib_slkatrset.c \
+	$(base)/lib_slkattr.c \
+	$(base)/lib_slkclear.c \
+	$(base)/lib_slkcolor.c \
+	$(base)/lib_slkinit.c \
+	$(base)/lib_slklab.c \
+	$(base)/lib_slkrefr.c \
+	$(base)/lib_slkset.c \
+	$(base)/lib_slktouch.c \
+	$(base)/lib_touch.c \
+	$(trace)/lib_tracedmp.c \
+	$(trace)/lib_tracemse.c \
+	$(serial)/lib_tstp.c \
+	$(base)/lib_ungetch.c \
+	$(serial)/lib_vidattr.c \
+	$(base)/lib_vline.c \
+	$(base)/lib_wattroff.c \
+	$(base)/lib_wattron.c \
+	$(base)/lib_winch.c \
+	$(base)/lib_window.c \
+	$(base)/nc_panel.c \
+	$(base)/safe_sprintf.c \
+	$(serial)/tty_update.c \
+	$(trace)/varargs.c \
+	$(base)/memmove.c \
+	$(base)/vsscanf.c \
+	$(base)/lib_freeall.c \
+	./expanded.c \
+	$(base)/legacy_coding.c \
+	$(base)/lib_dft_fgbg.c \
+	$(tinfo)/lib_print.c \
+	$(base)/resizeterm.c \
+	$(trace)/trace_xnames.c \
+	$(tinfo)/use_screen.c \
+	$(base)/use_window.c \
+	$(base)/wresize.c \
+	$(tinfo)/access.c \
+	$(tinfo)/add_tries.c \
+	$(tinfo)/alloc_ttype.c \
+	./codes.c \
+	$(tinfo)/comp_error.c \
+	$(tinfo)/db_iterator.c \
+	$(tinfo)/doalloc.c \
+	$(tinfo)/entries.c \
+	./fallback.c \
+	$(tinfo)/free_ttype.c \
+	$(tinfo)/getenv_num.c \
+	$(tinfo)/home_terminfo.c \
+	$(tinfo)/init_keytry.c \
+	$(tinfo)/lib_acs.c \
+	$(tinfo)/lib_baudrate.c \
+	$(tinfo)/lib_cur_term.c \
+	$(tinfo)/lib_data.c \
+	$(tinfo)/lib_has_cap.c \
+	$(tinfo)/lib_kernel.c \
+	./lib_keyname.c \
+	$(tinfo)/lib_longname.c \
+	$(tinfo)/lib_napms.c \
+	$(tinfo)/lib_options.c \
+	$(tinfo)/lib_raw.c \
+	$(tinfo)/lib_setup.c \
+	$(tinfo)/lib_termcap.c \
+	$(tinfo)/lib_termname.c \
+	$(tinfo)/lib_tgoto.c \
+	$(tinfo)/lib_ti.c \
+	$(tinfo)/lib_tparm.c \
+	$(tinfo)/lib_tputs.c \
+	$(trace)/lib_trace.c \
+	$(trace)/lib_traceatr.c \
+	$(trace)/lib_tracebits.c \
+	$(trace)/lib_tracechr.c \
+	$(tinfo)/lib_ttyflags.c \
+	$(serial)/lib_twait.c \
+	$(tinfo)/name_match.c \
+	./names.c \
+	$(tinfo)/read_entry.c \
+	$(tinfo)/read_termcap.c \
+	$(tinfo)/setbuf.c \
+	$(tinfo)/strings.c \
+	$(trace)/trace_buf.c \
+	$(trace)/trace_tries.c \
+	$(base)/tries.c \
+	$(tinfo)/trim_sgr0.c \
+	./unctrl.c \
+	$(trace)/visbuf.c \
+	$(tinfo)/alloc_entry.c \
+	$(tinfo)/captoinfo.c \
+	./comp_captab.c \
+	$(tinfo)/comp_expand.c \
+	$(tinfo)/comp_hash.c \
+	$(tinfo)/comp_parse.c \
+	$(tinfo)/comp_scan.c \
+	$(tinfo)/parse_entry.c \
+	$(tinfo)/write_entry.c \
+	$(base)/define_key.c \
+	$(tinfo)/hashed_db.c \
+	$(base)/key_defined.c \
+	$(base)/keybound.c \
+	$(base)/keyok.c \
+	$(base)/version.c
+
+# Producing llib-lncurses is time-consuming, so there's no direct-dependency for
+# it in the lintlib rule.  We'll only remove in the cleanest setup.
+clean ::
+	rm -f llib-lncurses.*
+
+realclean ::
+	rm -f llib-lncurses
+
+llib-lncurses : $(C_SRC)
+	cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@
+
+lintlib :
+	sh $(srcdir)/../misc/makellib ncurses $(CPPFLAGS)
+lint :
+	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          ncurses
+#  traces:        DEBUG
+#  MODEL:         NORMAL
+#  model:         objects
+#  prefix:        lib
+#  suffix:        .a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./curses.priv.h
+#  host:          arm-unknown-eabi
+
+NORMAL_OBJS = \
+	../objects/hardscroll$o \
+	../objects/hashmap$o \
+	../objects/lib_addch$o \
+	../objects/lib_addstr$o \
+	../objects/lib_beep$o \
+	../objects/lib_bkgd$o \
+	../objects/lib_box$o \
+	../objects/lib_chgat$o \
+	../objects/lib_clear$o \
+	../objects/lib_clearok$o \
+	../objects/lib_clrbot$o \
+	../objects/lib_clreol$o \
+	../objects/lib_color$o \
+	../objects/lib_colorset$o \
+	../objects/lib_delch$o \
+	../objects/lib_delwin$o \
+	../objects/lib_echo$o \
+	../objects/lib_endwin$o \
+	../objects/lib_erase$o \
+	../objects/lib_flash$o \
+	../objects/lib_gen$o \
+	../objects/lib_getch$o \
+	../objects/lib_getstr$o \
+	../objects/lib_hline$o \
+	../objects/lib_immedok$o \
+	../objects/lib_inchstr$o \
+	../objects/lib_initscr$o \
+	../objects/lib_insch$o \
+	../objects/lib_insdel$o \
+	../objects/lib_insnstr$o \
+	../objects/lib_instr$o \
+	../objects/lib_isendwin$o \
+	../objects/lib_leaveok$o \
+	../objects/lib_mouse$o \
+	../objects/lib_move$o \
+	../objects/lib_mvcur$o \
+	../objects/lib_mvwin$o \
+	../objects/lib_newterm$o \
+	../objects/lib_newwin$o \
+	../objects/lib_nl$o \
+	../objects/lib_overlay$o \
+	../objects/lib_pad$o \
+	../objects/lib_printw$o \
+	../objects/lib_redrawln$o \
+	../objects/lib_refresh$o \
+	../objects/lib_restart$o \
+	../objects/lib_scanw$o \
+	../objects/lib_screen$o \
+	../objects/lib_scroll$o \
+	../objects/lib_scrollok$o \
+	../objects/lib_scrreg$o \
+	../objects/lib_set_term$o \
+	../objects/lib_slk$o \
+	../objects/lib_slkatr_set$o \
+	../objects/lib_slkatrof$o \
+	../objects/lib_slkatron$o \
+	../objects/lib_slkatrset$o \
+	../objects/lib_slkattr$o \
+	../objects/lib_slkclear$o \
+	../objects/lib_slkcolor$o \
+	../objects/lib_slkinit$o \
+	../objects/lib_slklab$o \
+	../objects/lib_slkrefr$o \
+	../objects/lib_slkset$o \
+	../objects/lib_slktouch$o \
+	../objects/lib_touch$o \
+	../objects/lib_tstp$o \
+	../objects/lib_ungetch$o \
+	../objects/lib_vidattr$o \
+	../objects/lib_vline$o \
+	../objects/lib_wattroff$o \
+	../objects/lib_wattron$o \
+	../objects/lib_winch$o \
+	../objects/lib_window$o \
+	../objects/nc_panel$o \
+	../objects/safe_sprintf$o \
+	../objects/tty_update$o \
+	../objects/varargs$o \
+	../objects/memmove$o \
+	../objects/vsscanf$o \
+	../objects/lib_freeall$o \
+	../objects/expanded$o \
+	../objects/legacy_coding$o \
+	../objects/lib_dft_fgbg$o \
+	../objects/lib_print$o \
+	../objects/resizeterm$o \
+	../objects/use_screen$o \
+	../objects/use_window$o \
+	../objects/wresize$o \
+	../objects/access$o \
+	../objects/add_tries$o \
+	../objects/alloc_ttype$o \
+	../objects/codes$o \
+	../objects/comp_error$o \
+	../objects/db_iterator$o \
+	../objects/doalloc$o \
+	../objects/entries$o \
+	../objects/fallback$o \
+	../objects/free_ttype$o \
+	../objects/getenv_num$o \
+	../objects/home_terminfo$o \
+	../objects/init_keytry$o \
+	../objects/lib_acs$o \
+	../objects/lib_baudrate$o \
+	../objects/lib_cur_term$o \
+	../objects/lib_data$o \
+	../objects/lib_has_cap$o \
+	../objects/lib_kernel$o \
+	../objects/lib_keyname$o \
+	../objects/lib_longname$o \
+	../objects/lib_napms$o \
+	../objects/lib_options$o \
+	../objects/lib_raw$o \
+	../objects/lib_setup$o \
+	../objects/lib_termcap$o \
+	../objects/lib_termname$o \
+	../objects/lib_tgoto$o \
+	../objects/lib_ti$o \
+	../objects/lib_tparm$o \
+	../objects/lib_tputs$o \
+	../objects/lib_trace$o \
+	../objects/lib_ttyflags$o \
+	../objects/lib_twait$o \
+	../objects/name_match$o \
+	../objects/names$o \
+	../objects/read_entry$o \
+	../objects/read_termcap$o \
+	../objects/setbuf$o \
+	../objects/strings$o \
+	../objects/tries$o \
+	../objects/trim_sgr0$o \
+	../objects/unctrl$o \
+	../objects/visbuf$o \
+	../objects/alloc_entry$o \
+	../objects/captoinfo$o \
+	../objects/comp_captab$o \
+	../objects/comp_expand$o \
+	../objects/comp_hash$o \
+	../objects/comp_parse$o \
+	../objects/comp_scan$o \
+	../objects/parse_entry$o \
+	../objects/write_entry$o \
+	../objects/define_key$o \
+	../objects/hashed_db$o \
+	../objects/key_defined$o \
+	../objects/keybound$o \
+	../objects/keyok$o \
+	../objects/version$o
+
+$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h
+
+../lib/libncurses.a : $(NORMAL_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.ncurses :: $(DESTDIR)$(libdir) ../lib/libncurses.a
+	@echo installing ../lib/libncurses.a as $(DESTDIR)$(libdir)/libncurses.a
+	$(INSTALL_DATA) ../lib/libncurses.a $(DESTDIR)$(libdir)/libncurses.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libncurses.a
+
+uninstall \
+uninstall.libs \
+uninstall.ncurses ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libncurses.a
+	-@rm -f $(DESTDIR)$(libdir)/libncurses.a
+
+clean ::
+	-rm -f ../lib/libncurses.a
+
+mostlyclean::
+	-rm -f $(NORMAL_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      objects
+#   MODEL:      NORMAL
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../objects/hardscroll$o :	$(serial)/hardscroll.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hardscroll.c -o ../objects/hardscroll$o
+
+../objects/hashmap$o :	$(serial)/hashmap.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hashmap.c -o ../objects/hashmap$o
+
+../objects/lib_addch$o :	$(base)/lib_addch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addch.c -o ../objects/lib_addch$o
+
+../objects/lib_addstr$o :	$(base)/lib_addstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addstr.c -o ../objects/lib_addstr$o
+
+../objects/lib_beep$o :	$(base)/lib_beep.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_beep.c -o ../objects/lib_beep$o
+
+../objects/lib_bkgd$o :	$(base)/lib_bkgd.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_bkgd.c -o ../objects/lib_bkgd$o
+
+../objects/lib_box$o :	$(base)/lib_box.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_box.c -o ../objects/lib_box$o
+
+../objects/lib_chgat$o :	$(base)/lib_chgat.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_chgat.c -o ../objects/lib_chgat$o
+
+../objects/lib_clear$o :	$(base)/lib_clear.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clear.c -o ../objects/lib_clear$o
+
+../objects/lib_clearok$o :	$(base)/lib_clearok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clearok.c -o ../objects/lib_clearok$o
+
+../objects/lib_clrbot$o :	$(base)/lib_clrbot.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clrbot.c -o ../objects/lib_clrbot$o
+
+../objects/lib_clreol$o :	$(base)/lib_clreol.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clreol.c -o ../objects/lib_clreol$o
+
+../objects/lib_color$o :	$(base)/lib_color.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_color.c -o ../objects/lib_color$o
+
+../objects/lib_colorset$o :	$(base)/lib_colorset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_colorset.c -o ../objects/lib_colorset$o
+
+../objects/lib_delch$o :	$(base)/lib_delch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delch.c -o ../objects/lib_delch$o
+
+../objects/lib_delwin$o :	$(base)/lib_delwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delwin.c -o ../objects/lib_delwin$o
+
+../objects/lib_echo$o :	$(base)/lib_echo.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_echo.c -o ../objects/lib_echo$o
+
+../objects/lib_endwin$o :	$(base)/lib_endwin.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_endwin.c -o ../objects/lib_endwin$o
+
+../objects/lib_erase$o :	$(base)/lib_erase.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_erase.c -o ../objects/lib_erase$o
+
+../objects/lib_flash$o :	$(base)/lib_flash.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_flash.c -o ../objects/lib_flash$o
+
+../objects/lib_gen$o :	./lib_gen.c \
+			../include/curses.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/lib_gen.c -o ../objects/lib_gen$o
+
+../objects/lib_getch$o :	$(base)/lib_getch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getch.c -o ../objects/lib_getch$o
+
+../objects/lib_getstr$o :	$(base)/lib_getstr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getstr.c -o ../objects/lib_getstr$o
+
+../objects/lib_hline$o :	$(base)/lib_hline.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_hline.c -o ../objects/lib_hline$o
+
+../objects/lib_immedok$o :	$(base)/lib_immedok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_immedok.c -o ../objects/lib_immedok$o
+
+../objects/lib_inchstr$o :	$(base)/lib_inchstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_inchstr.c -o ../objects/lib_inchstr$o
+
+../objects/lib_initscr$o :	$(base)/lib_initscr.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_initscr.c -o ../objects/lib_initscr$o
+
+../objects/lib_insch$o :	$(base)/lib_insch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insch.c -o ../objects/lib_insch$o
+
+../objects/lib_insdel$o :	$(base)/lib_insdel.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insdel.c -o ../objects/lib_insdel$o
+
+../objects/lib_insnstr$o :	$(base)/lib_insnstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insnstr.c -o ../objects/lib_insnstr$o
+
+../objects/lib_instr$o :	$(base)/lib_instr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_instr.c -o ../objects/lib_instr$o
+
+../objects/lib_isendwin$o :	$(base)/lib_isendwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_isendwin.c -o ../objects/lib_isendwin$o
+
+../objects/lib_leaveok$o :	$(base)/lib_leaveok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_leaveok.c -o ../objects/lib_leaveok$o
+
+../objects/lib_mouse$o :	$(base)/lib_mouse.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mouse.c -o ../objects/lib_mouse$o
+
+../objects/lib_move$o :	$(base)/lib_move.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_move.c -o ../objects/lib_move$o
+
+../objects/lib_mvcur$o :	$(serial)/lib_mvcur.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_mvcur.c -o ../objects/lib_mvcur$o
+
+../objects/lib_mvwin$o :	$(base)/lib_mvwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mvwin.c -o ../objects/lib_mvwin$o
+
+../objects/lib_newterm$o :	$(base)/lib_newterm.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newterm.c -o ../objects/lib_newterm$o
+
+../objects/lib_newwin$o :	$(base)/lib_newwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newwin.c -o ../objects/lib_newwin$o
+
+../objects/lib_nl$o :	$(base)/lib_nl.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_nl.c -o ../objects/lib_nl$o
+
+../objects/lib_overlay$o :	$(base)/lib_overlay.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_overlay.c -o ../objects/lib_overlay$o
+
+../objects/lib_pad$o :	$(base)/lib_pad.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_pad.c -o ../objects/lib_pad$o
+
+../objects/lib_printw$o :	$(base)/lib_printw.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_printw.c -o ../objects/lib_printw$o
+
+../objects/lib_redrawln$o :	$(base)/lib_redrawln.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_redrawln.c -o ../objects/lib_redrawln$o
+
+../objects/lib_refresh$o :	$(base)/lib_refresh.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_refresh.c -o ../objects/lib_refresh$o
+
+../objects/lib_restart$o :	$(base)/lib_restart.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_restart.c -o ../objects/lib_restart$o
+
+../objects/lib_scanw$o :	$(base)/lib_scanw.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scanw.c -o ../objects/lib_scanw$o
+
+../objects/lib_screen$o :	$(base)/lib_screen.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_screen.c -o ../objects/lib_screen$o
+
+../objects/lib_scroll$o :	$(base)/lib_scroll.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scroll.c -o ../objects/lib_scroll$o
+
+../objects/lib_scrollok$o :	$(base)/lib_scrollok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrollok.c -o ../objects/lib_scrollok$o
+
+../objects/lib_scrreg$o :	$(base)/lib_scrreg.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrreg.c -o ../objects/lib_scrreg$o
+
+../objects/lib_set_term$o :	$(base)/lib_set_term.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_set_term.c -o ../objects/lib_set_term$o
+
+../objects/lib_slk$o :	$(base)/lib_slk.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slk.c -o ../objects/lib_slk$o
+
+../objects/lib_slkatr_set$o :	$(base)/lib_slkatr_set.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatr_set.c -o ../objects/lib_slkatr_set$o
+
+../objects/lib_slkatrof$o :	$(base)/lib_slkatrof.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrof.c -o ../objects/lib_slkatrof$o
+
+../objects/lib_slkatron$o :	$(base)/lib_slkatron.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatron.c -o ../objects/lib_slkatron$o
+
+../objects/lib_slkatrset$o :	$(base)/lib_slkatrset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrset.c -o ../objects/lib_slkatrset$o
+
+../objects/lib_slkattr$o :	$(base)/lib_slkattr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkattr.c -o ../objects/lib_slkattr$o
+
+../objects/lib_slkclear$o :	$(base)/lib_slkclear.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkclear.c -o ../objects/lib_slkclear$o
+
+../objects/lib_slkcolor$o :	$(base)/lib_slkcolor.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkcolor.c -o ../objects/lib_slkcolor$o
+
+../objects/lib_slkinit$o :	$(base)/lib_slkinit.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkinit.c -o ../objects/lib_slkinit$o
+
+../objects/lib_slklab$o :	$(base)/lib_slklab.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slklab.c -o ../objects/lib_slklab$o
+
+../objects/lib_slkrefr$o :	$(base)/lib_slkrefr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkrefr.c -o ../objects/lib_slkrefr$o
+
+../objects/lib_slkset$o :	$(base)/lib_slkset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkset.c -o ../objects/lib_slkset$o
+
+../objects/lib_slktouch$o :	$(base)/lib_slktouch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slktouch.c -o ../objects/lib_slktouch$o
+
+../objects/lib_touch$o :	$(base)/lib_touch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_touch.c -o ../objects/lib_touch$o
+
+../objects/lib_tstp$o :	$(serial)/lib_tstp.c \
+			$(srcdir)/SigAction.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_tstp.c -o ../objects/lib_tstp$o
+
+../objects/lib_ungetch$o :	$(base)/lib_ungetch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_ungetch.c -o ../objects/lib_ungetch$o
+
+../objects/lib_vidattr$o :	$(serial)/lib_vidattr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_vidattr.c -o ../objects/lib_vidattr$o
+
+../objects/lib_vline$o :	$(base)/lib_vline.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_vline.c -o ../objects/lib_vline$o
+
+../objects/lib_wattroff$o :	$(base)/lib_wattroff.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattroff.c -o ../objects/lib_wattroff$o
+
+../objects/lib_wattron$o :	$(base)/lib_wattron.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattron.c -o ../objects/lib_wattron$o
+
+../objects/lib_winch$o :	$(base)/lib_winch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_winch.c -o ../objects/lib_winch$o
+
+../objects/lib_window$o :	$(base)/lib_window.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_window.c -o ../objects/lib_window$o
+
+../objects/link_test$o :	./link_test.c \
+			../include/curses.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/link_test.c -o ../objects/link_test$o
+
+../objects/nc_panel$o :	$(base)/nc_panel.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/nc_panel.c -o ../objects/nc_panel$o
+
+../objects/safe_sprintf$o :	$(base)/safe_sprintf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/safe_sprintf.c -o ../objects/safe_sprintf$o
+
+../objects/tty_update$o :	$(serial)/tty_update.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/tty_update.c -o ../objects/tty_update$o
+
+../objects/varargs$o :	$(trace)/varargs.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/varargs.c -o ../objects/varargs$o
+
+../objects/memmove$o :	$(base)/memmove.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/memmove.c -o ../objects/memmove$o
+
+../objects/vsscanf$o :	$(base)/vsscanf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/vsscanf.c -o ../objects/vsscanf$o
+
+../objects/lib_freeall$o :	$(base)/lib_freeall.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_freeall.c -o ../objects/lib_freeall$o
+
+../objects/expanded$o :	./expanded.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/expanded.c -o ../objects/expanded$o
+
+../objects/legacy_coding$o :	$(base)/legacy_coding.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/legacy_coding.c -o ../objects/legacy_coding$o
+
+../objects/lib_dft_fgbg$o :	$(base)/lib_dft_fgbg.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_dft_fgbg.c -o ../objects/lib_dft_fgbg$o
+
+../objects/lib_print$o :	$(tinfo)/lib_print.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_print.c -o ../objects/lib_print$o
+
+../objects/resizeterm$o :	$(base)/resizeterm.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/resizeterm.c -o ../objects/resizeterm$o
+
+../objects/use_screen$o :	$(tinfo)/use_screen.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/use_screen.c -o ../objects/use_screen$o
+
+../objects/use_window$o :	$(base)/use_window.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/use_window.c -o ../objects/use_window$o
+
+../objects/wresize$o :	$(base)/wresize.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/wresize.c -o ../objects/wresize$o
+
+../objects/access$o :	$(tinfo)/access.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/access.c -o ../objects/access$o
+
+../objects/add_tries$o :	$(tinfo)/add_tries.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/add_tries.c -o ../objects/add_tries$o
+
+../objects/alloc_ttype$o :	$(tinfo)/alloc_ttype.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/alloc_ttype.c -o ../objects/alloc_ttype$o
+
+../objects/codes$o :	./codes.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/codes.c -o ../objects/codes$o
+
+../objects/comp_error$o :	$(tinfo)/comp_error.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_error.c -o ../objects/comp_error$o
+
+../objects/db_iterator$o :	$(tinfo)/db_iterator.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/db_iterator.c -o ../objects/db_iterator$o
+
+../objects/doalloc$o :	$(tinfo)/doalloc.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/doalloc.c -o ../objects/doalloc$o
+
+../objects/entries$o :	$(tinfo)/entries.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/entries.c -o ../objects/entries$o
+
+../objects/fallback$o :	./fallback.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/fallback.c -o ../objects/fallback$o
+
+../objects/free_ttype$o :	$(tinfo)/free_ttype.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/free_ttype.c -o ../objects/free_ttype$o
+
+../objects/getenv_num$o :	$(tinfo)/getenv_num.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/getenv_num.c -o ../objects/getenv_num$o
+
+../objects/home_terminfo$o :	$(tinfo)/home_terminfo.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/home_terminfo.c -o ../objects/home_terminfo$o
+
+../objects/init_keytry$o :	$(tinfo)/init_keytry.c \
+			../include/term.h \
+			$(INCDIR)/tic.h \
+			init_keytry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/init_keytry.c -o ../objects/init_keytry$o
+
+../objects/lib_acs$o :	$(tinfo)/lib_acs.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_acs.c -o ../objects/lib_acs$o
+
+../objects/lib_baudrate$o :	$(tinfo)/lib_baudrate.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_baudrate.c -o ../objects/lib_baudrate$o
+
+../objects/lib_cur_term$o :	$(tinfo)/lib_cur_term.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_cur_term.c -o ../objects/lib_cur_term$o
+
+../objects/lib_data$o :	$(tinfo)/lib_data.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_data.c -o ../objects/lib_data$o
+
+../objects/lib_has_cap$o :	$(tinfo)/lib_has_cap.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_has_cap.c -o ../objects/lib_has_cap$o
+
+../objects/lib_kernel$o :	$(tinfo)/lib_kernel.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_kernel.c -o ../objects/lib_kernel$o
+
+../objects/lib_keyname$o :	./lib_keyname.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/lib_keyname.c -o ../objects/lib_keyname$o
+
+../objects/lib_longname$o :	$(tinfo)/lib_longname.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_longname.c -o ../objects/lib_longname$o
+
+../objects/lib_napms$o :	$(tinfo)/lib_napms.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_napms.c -o ../objects/lib_napms$o
+
+../objects/lib_options$o :	$(tinfo)/lib_options.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_options.c -o ../objects/lib_options$o
+
+../objects/lib_raw$o :	$(tinfo)/lib_raw.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_raw.c -o ../objects/lib_raw$o
+
+../objects/lib_setup$o :	$(tinfo)/lib_setup.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_setup.c -o ../objects/lib_setup$o
+
+../objects/lib_termcap$o :	$(tinfo)/lib_termcap.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_termcap.c -o ../objects/lib_termcap$o
+
+../objects/lib_termname$o :	$(tinfo)/lib_termname.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_termname.c -o ../objects/lib_termname$o
+
+../objects/lib_tgoto$o :	$(tinfo)/lib_tgoto.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tgoto.c -o ../objects/lib_tgoto$o
+
+../objects/lib_ti$o :	$(tinfo)/lib_ti.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_ti.c -o ../objects/lib_ti$o
+
+../objects/lib_tparm$o :	$(tinfo)/lib_tparm.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tparm.c -o ../objects/lib_tparm$o
+
+../objects/lib_tputs$o :	$(tinfo)/lib_tputs.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tputs.c -o ../objects/lib_tputs$o
+
+../objects/lib_trace$o :	$(trace)/lib_trace.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/lib_trace.c -o ../objects/lib_trace$o
+
+../objects/lib_ttyflags$o :	$(tinfo)/lib_ttyflags.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_ttyflags.c -o ../objects/lib_ttyflags$o
+
+../objects/lib_twait$o :	$(serial)/lib_twait.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_twait.c -o ../objects/lib_twait$o
+
+../objects/name_match$o :	$(tinfo)/name_match.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/name_match.c -o ../objects/name_match$o
+
+../objects/names$o :	./names.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/names.c -o ../objects/names$o
+
+../objects/read_entry$o :	$(tinfo)/read_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/read_entry.c -o ../objects/read_entry$o
+
+../objects/read_termcap$o :	$(tinfo)/read_termcap.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/read_termcap.c -o ../objects/read_termcap$o
+
+../objects/setbuf$o :	$(tinfo)/setbuf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/setbuf.c -o ../objects/setbuf$o
+
+../objects/strings$o :	$(tinfo)/strings.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/strings.c -o ../objects/strings$o
+
+../objects/tries$o :	$(base)/tries.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/tries.c -o ../objects/tries$o
+
+../objects/trim_sgr0$o :	$(tinfo)/trim_sgr0.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/trim_sgr0.c -o ../objects/trim_sgr0$o
+
+../objects/unctrl$o :	./unctrl.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/unctrl.c -o ../objects/unctrl$o
+
+../objects/visbuf$o :	$(trace)/visbuf.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/visbuf.c -o ../objects/visbuf$o
+
+../objects/alloc_entry$o :	$(tinfo)/alloc_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/alloc_entry.c -o ../objects/alloc_entry$o
+
+../objects/captoinfo$o :	$(tinfo)/captoinfo.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/captoinfo.c -o ../objects/captoinfo$o
+
+../objects/comp_captab$o :	./comp_captab.c \
+			$(INCDIR)/tic.h \
+			../include/term.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/comp_captab.c -o ../objects/comp_captab$o
+
+../objects/comp_expand$o :	$(tinfo)/comp_expand.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_expand.c -o ../objects/comp_expand$o
+
+../objects/comp_hash$o :	$(tinfo)/comp_hash.c \
+			../include/term.h \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_hash.c -o ../objects/comp_hash$o
+
+../objects/comp_parse$o :	$(tinfo)/comp_parse.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_parse.c -o ../objects/comp_parse$o
+
+../objects/comp_scan$o :	$(tinfo)/comp_scan.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_scan.c -o ../objects/comp_scan$o
+
+../objects/parse_entry$o :	$(tinfo)/parse_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h \
+			../include/parametrized.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/parse_entry.c -o ../objects/parse_entry$o
+
+../objects/write_entry$o :	$(tinfo)/write_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/write_entry.c -o ../objects/write_entry$o
+
+../objects/define_key$o :	$(base)/define_key.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/define_key.c -o ../objects/define_key$o
+
+../objects/hashed_db$o :	$(tinfo)/hashed_db.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/hashed_db.c -o ../objects/hashed_db$o
+
+../objects/key_defined$o :	$(base)/key_defined.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/key_defined.c -o ../objects/key_defined$o
+
+../objects/keybound$o :	$(base)/keybound.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/keybound.c -o ../objects/keybound$o
+
+../objects/keyok$o :	$(base)/keyok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/keyok.c -o ../objects/keyok$o
+
+../objects/version$o :	$(base)/version.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/version.c -o ../objects/version$o
+
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          ncurses
+#  traces:        DEBUG
+#  MODEL:         DEBUG
+#  model:         obj_g
+#  prefix:        lib
+#  suffix:        _g.a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./curses.priv.h
+#  host:          arm-unknown-eabi
+
+DEBUG_OBJS = \
+	../obj_g/hardscroll$o \
+	../obj_g/hashmap$o \
+	../obj_g/lib_addch$o \
+	../obj_g/lib_addstr$o \
+	../obj_g/lib_beep$o \
+	../obj_g/lib_bkgd$o \
+	../obj_g/lib_box$o \
+	../obj_g/lib_chgat$o \
+	../obj_g/lib_clear$o \
+	../obj_g/lib_clearok$o \
+	../obj_g/lib_clrbot$o \
+	../obj_g/lib_clreol$o \
+	../obj_g/lib_color$o \
+	../obj_g/lib_colorset$o \
+	../obj_g/lib_delch$o \
+	../obj_g/lib_delwin$o \
+	../obj_g/lib_echo$o \
+	../obj_g/lib_endwin$o \
+	../obj_g/lib_erase$o \
+	../obj_g/lib_flash$o \
+	../obj_g/lib_gen$o \
+	../obj_g/lib_getch$o \
+	../obj_g/lib_getstr$o \
+	../obj_g/lib_hline$o \
+	../obj_g/lib_immedok$o \
+	../obj_g/lib_inchstr$o \
+	../obj_g/lib_initscr$o \
+	../obj_g/lib_insch$o \
+	../obj_g/lib_insdel$o \
+	../obj_g/lib_insnstr$o \
+	../obj_g/lib_instr$o \
+	../obj_g/lib_isendwin$o \
+	../obj_g/lib_leaveok$o \
+	../obj_g/lib_mouse$o \
+	../obj_g/lib_move$o \
+	../obj_g/lib_mvcur$o \
+	../obj_g/lib_mvwin$o \
+	../obj_g/lib_newterm$o \
+	../obj_g/lib_newwin$o \
+	../obj_g/lib_nl$o \
+	../obj_g/lib_overlay$o \
+	../obj_g/lib_pad$o \
+	../obj_g/lib_printw$o \
+	../obj_g/lib_redrawln$o \
+	../obj_g/lib_refresh$o \
+	../obj_g/lib_restart$o \
+	../obj_g/lib_scanw$o \
+	../obj_g/lib_screen$o \
+	../obj_g/lib_scroll$o \
+	../obj_g/lib_scrollok$o \
+	../obj_g/lib_scrreg$o \
+	../obj_g/lib_set_term$o \
+	../obj_g/lib_slk$o \
+	../obj_g/lib_slkatr_set$o \
+	../obj_g/lib_slkatrof$o \
+	../obj_g/lib_slkatron$o \
+	../obj_g/lib_slkatrset$o \
+	../obj_g/lib_slkattr$o \
+	../obj_g/lib_slkclear$o \
+	../obj_g/lib_slkcolor$o \
+	../obj_g/lib_slkinit$o \
+	../obj_g/lib_slklab$o \
+	../obj_g/lib_slkrefr$o \
+	../obj_g/lib_slkset$o \
+	../obj_g/lib_slktouch$o \
+	../obj_g/lib_touch$o \
+	../obj_g/lib_tracedmp$o \
+	../obj_g/lib_tracemse$o \
+	../obj_g/lib_tstp$o \
+	../obj_g/lib_ungetch$o \
+	../obj_g/lib_vidattr$o \
+	../obj_g/lib_vline$o \
+	../obj_g/lib_wattroff$o \
+	../obj_g/lib_wattron$o \
+	../obj_g/lib_winch$o \
+	../obj_g/lib_window$o \
+	../obj_g/nc_panel$o \
+	../obj_g/safe_sprintf$o \
+	../obj_g/tty_update$o \
+	../obj_g/varargs$o \
+	../obj_g/memmove$o \
+	../obj_g/vsscanf$o \
+	../obj_g/lib_freeall$o \
+	../obj_g/expanded$o \
+	../obj_g/legacy_coding$o \
+	../obj_g/lib_dft_fgbg$o \
+	../obj_g/lib_print$o \
+	../obj_g/resizeterm$o \
+	../obj_g/trace_xnames$o \
+	../obj_g/use_screen$o \
+	../obj_g/use_window$o \
+	../obj_g/wresize$o \
+	../obj_g/access$o \
+	../obj_g/add_tries$o \
+	../obj_g/alloc_ttype$o \
+	../obj_g/codes$o \
+	../obj_g/comp_error$o \
+	../obj_g/db_iterator$o \
+	../obj_g/doalloc$o \
+	../obj_g/entries$o \
+	../obj_g/fallback$o \
+	../obj_g/free_ttype$o \
+	../obj_g/getenv_num$o \
+	../obj_g/home_terminfo$o \
+	../obj_g/init_keytry$o \
+	../obj_g/lib_acs$o \
+	../obj_g/lib_baudrate$o \
+	../obj_g/lib_cur_term$o \
+	../obj_g/lib_data$o \
+	../obj_g/lib_has_cap$o \
+	../obj_g/lib_kernel$o \
+	../obj_g/lib_keyname$o \
+	../obj_g/lib_longname$o \
+	../obj_g/lib_napms$o \
+	../obj_g/lib_options$o \
+	../obj_g/lib_raw$o \
+	../obj_g/lib_setup$o \
+	../obj_g/lib_termcap$o \
+	../obj_g/lib_termname$o \
+	../obj_g/lib_tgoto$o \
+	../obj_g/lib_ti$o \
+	../obj_g/lib_tparm$o \
+	../obj_g/lib_tputs$o \
+	../obj_g/lib_trace$o \
+	../obj_g/lib_traceatr$o \
+	../obj_g/lib_tracebits$o \
+	../obj_g/lib_tracechr$o \
+	../obj_g/lib_ttyflags$o \
+	../obj_g/lib_twait$o \
+	../obj_g/name_match$o \
+	../obj_g/names$o \
+	../obj_g/read_entry$o \
+	../obj_g/read_termcap$o \
+	../obj_g/setbuf$o \
+	../obj_g/strings$o \
+	../obj_g/trace_buf$o \
+	../obj_g/trace_tries$o \
+	../obj_g/tries$o \
+	../obj_g/trim_sgr0$o \
+	../obj_g/unctrl$o \
+	../obj_g/visbuf$o \
+	../obj_g/alloc_entry$o \
+	../obj_g/captoinfo$o \
+	../obj_g/comp_captab$o \
+	../obj_g/comp_expand$o \
+	../obj_g/comp_hash$o \
+	../obj_g/comp_parse$o \
+	../obj_g/comp_scan$o \
+	../obj_g/parse_entry$o \
+	../obj_g/write_entry$o \
+	../obj_g/define_key$o \
+	../obj_g/hashed_db$o \
+	../obj_g/key_defined$o \
+	../obj_g/keybound$o \
+	../obj_g/keyok$o \
+	../obj_g/version$o
+
+$(DEBUG_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h
+
+../lib/libncurses_g.a : $(DEBUG_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.ncurses :: $(DESTDIR)$(libdir) ../lib/libncurses_g.a
+	@echo installing ../lib/libncurses_g.a as $(DESTDIR)$(libdir)/libncurses_g.a
+	$(INSTALL_DATA) ../lib/libncurses_g.a $(DESTDIR)$(libdir)/libncurses_g.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libncurses_g.a
+
+uninstall \
+uninstall.libs \
+uninstall.ncurses ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libncurses_g.a
+	-@rm -f $(DESTDIR)$(libdir)/libncurses_g.a
+
+clean ::
+	-rm -f ../lib/libncurses_g.a
+
+mostlyclean::
+	-rm -f $(DEBUG_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      obj_g
+#   MODEL:      DEBUG
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../obj_g/hardscroll$o :	$(serial)/hardscroll.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/hardscroll.c -o ../obj_g/hardscroll$o
+
+../obj_g/hashmap$o :	$(serial)/hashmap.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/hashmap.c -o ../obj_g/hashmap$o
+
+../obj_g/lib_addch$o :	$(base)/lib_addch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_addch.c -o ../obj_g/lib_addch$o
+
+../obj_g/lib_addstr$o :	$(base)/lib_addstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_addstr.c -o ../obj_g/lib_addstr$o
+
+../obj_g/lib_beep$o :	$(base)/lib_beep.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_beep.c -o ../obj_g/lib_beep$o
+
+../obj_g/lib_bkgd$o :	$(base)/lib_bkgd.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_bkgd.c -o ../obj_g/lib_bkgd$o
+
+../obj_g/lib_box$o :	$(base)/lib_box.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_box.c -o ../obj_g/lib_box$o
+
+../obj_g/lib_chgat$o :	$(base)/lib_chgat.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_chgat.c -o ../obj_g/lib_chgat$o
+
+../obj_g/lib_clear$o :	$(base)/lib_clear.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clear.c -o ../obj_g/lib_clear$o
+
+../obj_g/lib_clearok$o :	$(base)/lib_clearok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clearok.c -o ../obj_g/lib_clearok$o
+
+../obj_g/lib_clrbot$o :	$(base)/lib_clrbot.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clrbot.c -o ../obj_g/lib_clrbot$o
+
+../obj_g/lib_clreol$o :	$(base)/lib_clreol.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clreol.c -o ../obj_g/lib_clreol$o
+
+../obj_g/lib_color$o :	$(base)/lib_color.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_color.c -o ../obj_g/lib_color$o
+
+../obj_g/lib_colorset$o :	$(base)/lib_colorset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_colorset.c -o ../obj_g/lib_colorset$o
+
+../obj_g/lib_delch$o :	$(base)/lib_delch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_delch.c -o ../obj_g/lib_delch$o
+
+../obj_g/lib_delwin$o :	$(base)/lib_delwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_delwin.c -o ../obj_g/lib_delwin$o
+
+../obj_g/lib_echo$o :	$(base)/lib_echo.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_echo.c -o ../obj_g/lib_echo$o
+
+../obj_g/lib_endwin$o :	$(base)/lib_endwin.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_endwin.c -o ../obj_g/lib_endwin$o
+
+../obj_g/lib_erase$o :	$(base)/lib_erase.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_erase.c -o ../obj_g/lib_erase$o
+
+../obj_g/lib_flash$o :	$(base)/lib_flash.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_flash.c -o ../obj_g/lib_flash$o
+
+../obj_g/lib_gen$o :	./lib_gen.c \
+			../include/curses.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/lib_gen.c -o ../obj_g/lib_gen$o
+
+../obj_g/lib_getch$o :	$(base)/lib_getch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_getch.c -o ../obj_g/lib_getch$o
+
+../obj_g/lib_getstr$o :	$(base)/lib_getstr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_getstr.c -o ../obj_g/lib_getstr$o
+
+../obj_g/lib_hline$o :	$(base)/lib_hline.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_hline.c -o ../obj_g/lib_hline$o
+
+../obj_g/lib_immedok$o :	$(base)/lib_immedok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_immedok.c -o ../obj_g/lib_immedok$o
+
+../obj_g/lib_inchstr$o :	$(base)/lib_inchstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_inchstr.c -o ../obj_g/lib_inchstr$o
+
+../obj_g/lib_initscr$o :	$(base)/lib_initscr.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_initscr.c -o ../obj_g/lib_initscr$o
+
+../obj_g/lib_insch$o :	$(base)/lib_insch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insch.c -o ../obj_g/lib_insch$o
+
+../obj_g/lib_insdel$o :	$(base)/lib_insdel.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insdel.c -o ../obj_g/lib_insdel$o
+
+../obj_g/lib_insnstr$o :	$(base)/lib_insnstr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insnstr.c -o ../obj_g/lib_insnstr$o
+
+../obj_g/lib_instr$o :	$(base)/lib_instr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_instr.c -o ../obj_g/lib_instr$o
+
+../obj_g/lib_isendwin$o :	$(base)/lib_isendwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_isendwin.c -o ../obj_g/lib_isendwin$o
+
+../obj_g/lib_leaveok$o :	$(base)/lib_leaveok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_leaveok.c -o ../obj_g/lib_leaveok$o
+
+../obj_g/lib_mouse$o :	$(base)/lib_mouse.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_mouse.c -o ../obj_g/lib_mouse$o
+
+../obj_g/lib_move$o :	$(base)/lib_move.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_move.c -o ../obj_g/lib_move$o
+
+../obj_g/lib_mvcur$o :	$(serial)/lib_mvcur.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_mvcur.c -o ../obj_g/lib_mvcur$o
+
+../obj_g/lib_mvwin$o :	$(base)/lib_mvwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_mvwin.c -o ../obj_g/lib_mvwin$o
+
+../obj_g/lib_newterm$o :	$(base)/lib_newterm.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_newterm.c -o ../obj_g/lib_newterm$o
+
+../obj_g/lib_newwin$o :	$(base)/lib_newwin.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_newwin.c -o ../obj_g/lib_newwin$o
+
+../obj_g/lib_nl$o :	$(base)/lib_nl.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_nl.c -o ../obj_g/lib_nl$o
+
+../obj_g/lib_overlay$o :	$(base)/lib_overlay.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_overlay.c -o ../obj_g/lib_overlay$o
+
+../obj_g/lib_pad$o :	$(base)/lib_pad.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_pad.c -o ../obj_g/lib_pad$o
+
+../obj_g/lib_printw$o :	$(base)/lib_printw.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_printw.c -o ../obj_g/lib_printw$o
+
+../obj_g/lib_redrawln$o :	$(base)/lib_redrawln.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_redrawln.c -o ../obj_g/lib_redrawln$o
+
+../obj_g/lib_refresh$o :	$(base)/lib_refresh.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_refresh.c -o ../obj_g/lib_refresh$o
+
+../obj_g/lib_restart$o :	$(base)/lib_restart.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_restart.c -o ../obj_g/lib_restart$o
+
+../obj_g/lib_scanw$o :	$(base)/lib_scanw.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scanw.c -o ../obj_g/lib_scanw$o
+
+../obj_g/lib_screen$o :	$(base)/lib_screen.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_screen.c -o ../obj_g/lib_screen$o
+
+../obj_g/lib_scroll$o :	$(base)/lib_scroll.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scroll.c -o ../obj_g/lib_scroll$o
+
+../obj_g/lib_scrollok$o :	$(base)/lib_scrollok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scrollok.c -o ../obj_g/lib_scrollok$o
+
+../obj_g/lib_scrreg$o :	$(base)/lib_scrreg.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scrreg.c -o ../obj_g/lib_scrreg$o
+
+../obj_g/lib_set_term$o :	$(base)/lib_set_term.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_set_term.c -o ../obj_g/lib_set_term$o
+
+../obj_g/lib_slk$o :	$(base)/lib_slk.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slk.c -o ../obj_g/lib_slk$o
+
+../obj_g/lib_slkatr_set$o :	$(base)/lib_slkatr_set.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatr_set.c -o ../obj_g/lib_slkatr_set$o
+
+../obj_g/lib_slkatrof$o :	$(base)/lib_slkatrof.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatrof.c -o ../obj_g/lib_slkatrof$o
+
+../obj_g/lib_slkatron$o :	$(base)/lib_slkatron.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatron.c -o ../obj_g/lib_slkatron$o
+
+../obj_g/lib_slkatrset$o :	$(base)/lib_slkatrset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatrset.c -o ../obj_g/lib_slkatrset$o
+
+../obj_g/lib_slkattr$o :	$(base)/lib_slkattr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkattr.c -o ../obj_g/lib_slkattr$o
+
+../obj_g/lib_slkclear$o :	$(base)/lib_slkclear.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkclear.c -o ../obj_g/lib_slkclear$o
+
+../obj_g/lib_slkcolor$o :	$(base)/lib_slkcolor.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkcolor.c -o ../obj_g/lib_slkcolor$o
+
+../obj_g/lib_slkinit$o :	$(base)/lib_slkinit.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkinit.c -o ../obj_g/lib_slkinit$o
+
+../obj_g/lib_slklab$o :	$(base)/lib_slklab.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slklab.c -o ../obj_g/lib_slklab$o
+
+../obj_g/lib_slkrefr$o :	$(base)/lib_slkrefr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkrefr.c -o ../obj_g/lib_slkrefr$o
+
+../obj_g/lib_slkset$o :	$(base)/lib_slkset.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkset.c -o ../obj_g/lib_slkset$o
+
+../obj_g/lib_slktouch$o :	$(base)/lib_slktouch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slktouch.c -o ../obj_g/lib_slktouch$o
+
+../obj_g/lib_touch$o :	$(base)/lib_touch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_touch.c -o ../obj_g/lib_touch$o
+
+../obj_g/lib_tracedmp$o :	$(trace)/lib_tracedmp.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracedmp.c -o ../obj_g/lib_tracedmp$o
+
+../obj_g/lib_tracemse$o :	$(trace)/lib_tracemse.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracemse.c -o ../obj_g/lib_tracemse$o
+
+../obj_g/lib_tstp$o :	$(serial)/lib_tstp.c \
+			$(srcdir)/SigAction.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_tstp.c -o ../obj_g/lib_tstp$o
+
+../obj_g/lib_ungetch$o :	$(base)/lib_ungetch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_ungetch.c -o ../obj_g/lib_ungetch$o
+
+../obj_g/lib_vidattr$o :	$(serial)/lib_vidattr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_vidattr.c -o ../obj_g/lib_vidattr$o
+
+../obj_g/lib_vline$o :	$(base)/lib_vline.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_vline.c -o ../obj_g/lib_vline$o
+
+../obj_g/lib_wattroff$o :	$(base)/lib_wattroff.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_wattroff.c -o ../obj_g/lib_wattroff$o
+
+../obj_g/lib_wattron$o :	$(base)/lib_wattron.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_wattron.c -o ../obj_g/lib_wattron$o
+
+../obj_g/lib_winch$o :	$(base)/lib_winch.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_winch.c -o ../obj_g/lib_winch$o
+
+../obj_g/lib_window$o :	$(base)/lib_window.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_window.c -o ../obj_g/lib_window$o
+
+../obj_g/link_test$o :	./link_test.c \
+			../include/curses.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/link_test.c -o ../obj_g/link_test$o
+
+../obj_g/nc_panel$o :	$(base)/nc_panel.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/nc_panel.c -o ../obj_g/nc_panel$o
+
+../obj_g/safe_sprintf$o :	$(base)/safe_sprintf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/safe_sprintf.c -o ../obj_g/safe_sprintf$o
+
+../obj_g/tty_update$o :	$(serial)/tty_update.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/tty_update.c -o ../obj_g/tty_update$o
+
+../obj_g/varargs$o :	$(trace)/varargs.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/varargs.c -o ../obj_g/varargs$o
+
+../obj_g/memmove$o :	$(base)/memmove.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/memmove.c -o ../obj_g/memmove$o
+
+../obj_g/vsscanf$o :	$(base)/vsscanf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/vsscanf.c -o ../obj_g/vsscanf$o
+
+../obj_g/lib_freeall$o :	$(base)/lib_freeall.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_freeall.c -o ../obj_g/lib_freeall$o
+
+../obj_g/expanded$o :	./expanded.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/expanded.c -o ../obj_g/expanded$o
+
+../obj_g/legacy_coding$o :	$(base)/legacy_coding.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/legacy_coding.c -o ../obj_g/legacy_coding$o
+
+../obj_g/lib_dft_fgbg$o :	$(base)/lib_dft_fgbg.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_dft_fgbg.c -o ../obj_g/lib_dft_fgbg$o
+
+../obj_g/lib_print$o :	$(tinfo)/lib_print.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_print.c -o ../obj_g/lib_print$o
+
+../obj_g/resizeterm$o :	$(base)/resizeterm.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/resizeterm.c -o ../obj_g/resizeterm$o
+
+../obj_g/trace_xnames$o :	$(trace)/trace_xnames.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_xnames.c -o ../obj_g/trace_xnames$o
+
+../obj_g/use_screen$o :	$(tinfo)/use_screen.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/use_screen.c -o ../obj_g/use_screen$o
+
+../obj_g/use_window$o :	$(base)/use_window.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/use_window.c -o ../obj_g/use_window$o
+
+../obj_g/wresize$o :	$(base)/wresize.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/wresize.c -o ../obj_g/wresize$o
+
+../obj_g/access$o :	$(tinfo)/access.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/access.c -o ../obj_g/access$o
+
+../obj_g/add_tries$o :	$(tinfo)/add_tries.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/add_tries.c -o ../obj_g/add_tries$o
+
+../obj_g/alloc_ttype$o :	$(tinfo)/alloc_ttype.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/alloc_ttype.c -o ../obj_g/alloc_ttype$o
+
+../obj_g/codes$o :	./codes.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/codes.c -o ../obj_g/codes$o
+
+../obj_g/comp_error$o :	$(tinfo)/comp_error.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_error.c -o ../obj_g/comp_error$o
+
+../obj_g/db_iterator$o :	$(tinfo)/db_iterator.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/db_iterator.c -o ../obj_g/db_iterator$o
+
+../obj_g/doalloc$o :	$(tinfo)/doalloc.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/doalloc.c -o ../obj_g/doalloc$o
+
+../obj_g/entries$o :	$(tinfo)/entries.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/entries.c -o ../obj_g/entries$o
+
+../obj_g/fallback$o :	./fallback.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/fallback.c -o ../obj_g/fallback$o
+
+../obj_g/free_ttype$o :	$(tinfo)/free_ttype.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/free_ttype.c -o ../obj_g/free_ttype$o
+
+../obj_g/getenv_num$o :	$(tinfo)/getenv_num.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/getenv_num.c -o ../obj_g/getenv_num$o
+
+../obj_g/home_terminfo$o :	$(tinfo)/home_terminfo.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/home_terminfo.c -o ../obj_g/home_terminfo$o
+
+../obj_g/init_keytry$o :	$(tinfo)/init_keytry.c \
+			../include/term.h \
+			$(INCDIR)/tic.h \
+			init_keytry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/init_keytry.c -o ../obj_g/init_keytry$o
+
+../obj_g/lib_acs$o :	$(tinfo)/lib_acs.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_acs.c -o ../obj_g/lib_acs$o
+
+../obj_g/lib_baudrate$o :	$(tinfo)/lib_baudrate.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_baudrate.c -o ../obj_g/lib_baudrate$o
+
+../obj_g/lib_cur_term$o :	$(tinfo)/lib_cur_term.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_cur_term.c -o ../obj_g/lib_cur_term$o
+
+../obj_g/lib_data$o :	$(tinfo)/lib_data.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_data.c -o ../obj_g/lib_data$o
+
+../obj_g/lib_has_cap$o :	$(tinfo)/lib_has_cap.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_has_cap.c -o ../obj_g/lib_has_cap$o
+
+../obj_g/lib_kernel$o :	$(tinfo)/lib_kernel.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_kernel.c -o ../obj_g/lib_kernel$o
+
+../obj_g/lib_keyname$o :	./lib_keyname.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/lib_keyname.c -o ../obj_g/lib_keyname$o
+
+../obj_g/lib_longname$o :	$(tinfo)/lib_longname.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_longname.c -o ../obj_g/lib_longname$o
+
+../obj_g/lib_napms$o :	$(tinfo)/lib_napms.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_napms.c -o ../obj_g/lib_napms$o
+
+../obj_g/lib_options$o :	$(tinfo)/lib_options.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_options.c -o ../obj_g/lib_options$o
+
+../obj_g/lib_raw$o :	$(tinfo)/lib_raw.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_raw.c -o ../obj_g/lib_raw$o
+
+../obj_g/lib_setup$o :	$(tinfo)/lib_setup.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_setup.c -o ../obj_g/lib_setup$o
+
+../obj_g/lib_termcap$o :	$(tinfo)/lib_termcap.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_termcap.c -o ../obj_g/lib_termcap$o
+
+../obj_g/lib_termname$o :	$(tinfo)/lib_termname.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_termname.c -o ../obj_g/lib_termname$o
+
+../obj_g/lib_tgoto$o :	$(tinfo)/lib_tgoto.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tgoto.c -o ../obj_g/lib_tgoto$o
+
+../obj_g/lib_ti$o :	$(tinfo)/lib_ti.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_ti.c -o ../obj_g/lib_ti$o
+
+../obj_g/lib_tparm$o :	$(tinfo)/lib_tparm.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tparm.c -o ../obj_g/lib_tparm$o
+
+../obj_g/lib_tputs$o :	$(tinfo)/lib_tputs.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tputs.c -o ../obj_g/lib_tputs$o
+
+../obj_g/lib_trace$o :	$(trace)/lib_trace.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_trace.c -o ../obj_g/lib_trace$o
+
+../obj_g/lib_traceatr$o :	$(trace)/lib_traceatr.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_traceatr.c -o ../obj_g/lib_traceatr$o
+
+../obj_g/lib_tracebits$o :	$(trace)/lib_tracebits.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracebits.c -o ../obj_g/lib_tracebits$o
+
+../obj_g/lib_tracechr$o :	$(trace)/lib_tracechr.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracechr.c -o ../obj_g/lib_tracechr$o
+
+../obj_g/lib_ttyflags$o :	$(tinfo)/lib_ttyflags.c \
+			../include/term.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_ttyflags.c -o ../obj_g/lib_ttyflags$o
+
+../obj_g/lib_twait$o :	$(serial)/lib_twait.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_twait.c -o ../obj_g/lib_twait$o
+
+../obj_g/name_match$o :	$(tinfo)/name_match.c \
+			../include/term.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/name_match.c -o ../obj_g/name_match$o
+
+../obj_g/names$o :	./names.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/names.c -o ../obj_g/names$o
+
+../obj_g/read_entry$o :	$(tinfo)/read_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/read_entry.c -o ../obj_g/read_entry$o
+
+../obj_g/read_termcap$o :	$(tinfo)/read_termcap.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/read_termcap.c -o ../obj_g/read_termcap$o
+
+../obj_g/setbuf$o :	$(tinfo)/setbuf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/setbuf.c -o ../obj_g/setbuf$o
+
+../obj_g/strings$o :	$(tinfo)/strings.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/strings.c -o ../obj_g/strings$o
+
+../obj_g/trace_buf$o :	$(trace)/trace_buf.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_buf.c -o ../obj_g/trace_buf$o
+
+../obj_g/trace_tries$o :	$(trace)/trace_tries.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_tries.c -o ../obj_g/trace_tries$o
+
+../obj_g/tries$o :	$(base)/tries.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/tries.c -o ../obj_g/tries$o
+
+../obj_g/trim_sgr0$o :	$(tinfo)/trim_sgr0.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/trim_sgr0.c -o ../obj_g/trim_sgr0$o
+
+../obj_g/unctrl$o :	./unctrl.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/unctrl.c -o ../obj_g/unctrl$o
+
+../obj_g/visbuf$o :	$(trace)/visbuf.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/visbuf.c -o ../obj_g/visbuf$o
+
+../obj_g/alloc_entry$o :	$(tinfo)/alloc_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/alloc_entry.c -o ../obj_g/alloc_entry$o
+
+../obj_g/captoinfo$o :	$(tinfo)/captoinfo.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/captoinfo.c -o ../obj_g/captoinfo$o
+
+../obj_g/comp_captab$o :	./comp_captab.c \
+			$(INCDIR)/tic.h \
+			../include/term.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/comp_captab.c -o ../obj_g/comp_captab$o
+
+../obj_g/comp_expand$o :	$(tinfo)/comp_expand.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_expand.c -o ../obj_g/comp_expand$o
+
+../obj_g/comp_hash$o :	$(tinfo)/comp_hash.c \
+			../include/term.h \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_hash.c -o ../obj_g/comp_hash$o
+
+../obj_g/comp_parse$o :	$(tinfo)/comp_parse.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_parse.c -o ../obj_g/comp_parse$o
+
+../obj_g/comp_scan$o :	$(tinfo)/comp_scan.c \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_scan.c -o ../obj_g/comp_scan$o
+
+../obj_g/parse_entry$o :	$(tinfo)/parse_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h \
+			../include/parametrized.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/parse_entry.c -o ../obj_g/parse_entry$o
+
+../obj_g/write_entry$o :	$(tinfo)/write_entry.c \
+			../include/term.h \
+			$(INCDIR)/term_entry.h \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/write_entry.c -o ../obj_g/write_entry$o
+
+../obj_g/define_key$o :	$(base)/define_key.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/define_key.c -o ../obj_g/define_key$o
+
+../obj_g/hashed_db$o :	$(tinfo)/hashed_db.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/hashed_db.c -o ../obj_g/hashed_db$o
+
+../obj_g/key_defined$o :	$(base)/key_defined.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/key_defined.c -o ../obj_g/key_defined$o
+
+../obj_g/keybound$o :	$(base)/keybound.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/keybound.c -o ../obj_g/keybound$o
+
+../obj_g/keyok$o :	$(base)/keyok.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/keyok.c -o ../obj_g/keyok$o
+
+../obj_g/version$o :	$(base)/version.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/version.c -o ../obj_g/version$o
+
+depend : ${AUTO_SRC}
+	makedepend -- ${CPPFLAGS} -- ${C_SRC}
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/ncurses/codes.c b/ncurses/codes.c
new file mode 100644
index 0000000..14c785a
--- /dev/null
+++ b/ncurses/codes.c
@@ -0,0 +1,666 @@
+/* This file was generated by MKcodes.awk */
+
+#include <curses.priv.h>
+
+#define IT NCURSES_CONST char * const
+
+
+#if BROKEN_LINKER || USE_REENTRANT
+
+#include <term.h>
+
+static const char _nc_code_blob[] = 
+"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" "in\0" \
+"da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" "xo\0" "nx\0" \
+"5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" "YA\0" "YB\0" "YC\0" \
+"YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" "lm\0" "sg\0" "pb\0" "vt\0" \
+"ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" "Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" \
+"Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" "Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" \
+"Yn\0" "BT\0" "Yo\0" "Yp\0" "bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" \
+"cd\0" "ch\0" "CC\0" "cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" \
+"ll\0" "up\0" "vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" \
+"dm\0" "mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \
+"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" "i3\0" \
+"if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" "kL\0" "kd\0" \
+"kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" "k4\0" "k5\0" "k6\0" \
+"k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" "kH\0" "kN\0" "kP\0" "kr\0" \
+"kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" "l0\0" "l1\0" "la\0" "l2\0" "l3\0" \
+"l4\0" "l5\0" "l6\0" "l7\0" "l8\0" "l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" \
+"DL\0" "DO\0" "IC\0" "SF\0" "AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" \
+"px\0" "ps\0" "pf\0" "po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" \
+"sc\0" "sf\0" "sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" \
+"K1\0" "K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \
+"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" "@3\0" \
+"@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" "%3\0" "%4\0" \
+"%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" "&3\0" "&4\0" "&5\0" \
+"&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" "*3\0" "*4\0" "*5\0" "*6\0" \
+"*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" "#3\0" "#4\0" "%a\0" "%b\0" "%c\0" \
+"%d\0" "%e\0" "%f\0" "%g\0" "%h\0" "%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" \
+"F1\0" "F2\0" "F3\0" "F4\0" "F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" \
+"FC\0" "FD\0" "FE\0" "FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" \
+"FN\0" "FO\0" "FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" \
+"FY\0" "FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \
+"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" "MC\0" \
+"ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" "DI\0" "QD\0" \
+"TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" "u3\0" "u4\0" "u5\0" \
+"u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" "Ip\0" "sp\0" "Sf\0" "Sb\0" \
+"ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" "ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" \
+"ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" "ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" \
+"ZW\0" "ZX\0" "ZY\0" "ZZ\0" "Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" \
+"Zh\0" "Zi\0" "Zj\0" "Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" \
+"Zs\0" "Zt\0" "Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" \
+"AF\0" "AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \
+"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" "S3\0" \
+"S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" "Xt\0" "Xv\0" \
+"sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" "dC\0" "dN\0" "nl\0" \
+"bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" "ma\0" "pt\0" "xr\0" "G2\0" \
+"G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" "GD\0" "GH\0" "GV\0" "GC\0" "ml\0" \
+"mu\0" "bx\0" ;
+static const short _nc_offset_boolcodes[] = {
+0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42,
+45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87,
+90, 93, 96, 99, 102, 105, 108, 1401, 1404, 1407, 1422, 1425, 1443, 1446, };
+
+static NCURSES_CONST char ** ptr_boolcodes = 0;
+
+static const short _nc_offset_numcodes[] = {
+111, 114, 117, 120, 123, 126,
+129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162,
+165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198,
+201, 204, 207, 1398, 1410, 1413, 1428, 1431, 1434, };
+
+static NCURSES_CONST char ** ptr_numcodes = 0;
+
+static const short _nc_offset_strcodes[] = {
+210, 213, 216, 219, 222, 225, 228, 231, 234,
+237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270,
+273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306,
+309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342,
+345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378,
+381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414,
+417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450,
+453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486,
+489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522,
+525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558,
+561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594,
+597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630,
+633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666,
+669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702,
+705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738,
+741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774,
+777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810,
+813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846,
+849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882,
+885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918,
+921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954,
+957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990,
+993, 996, 999, 1002, 1005, 1008, 1011, 1014, 1017, 1020, 1023,
+1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053, 1056,
+1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089,
+1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119, 1122,
+1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, 1155,
+1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 1185, 1188,
+1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
+1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251, 1254,
+1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287,
+1290, 1293, 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320,
+1323, 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347, 1350, 1353,
+1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383, 1386,
+1389, 1392, 1395, 1416, 1419,
+1437, 1440, 1449, 1452,
+1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485,
+1488, };
+
+static NCURSES_CONST char ** ptr_strcodes = 0;
+
+
+static IT *
+alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size)
+{
+	if (*value == 0) {
+		if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) {
+			unsigned n;
+			for (n = 0; n < size; ++n) {
+				(*value)[n] = _nc_code_blob + offsets[n];
+			}
+		}
+	}
+	return *value;
+}
+
+#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }
+
+FIX(boolcodes)
+FIX(numcodes)
+FIX(strcodes)
+
+#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_codes_leaks(void)
+{
+FREE_FIX(boolcodes)
+FREE_FIX(numcodes)
+FREE_FIX(strcodes)
+}
+#endif
+
+#else
+
+#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]
+
+DCL(boolcodes) = {
+		"bw",
+		"am",
+		"xb",
+		"xs",
+		"xn",
+		"eo",
+		"gn",
+		"hc",
+		"km",
+		"hs",
+		"in",
+		"da",
+		"db",
+		"mi",
+		"ms",
+		"os",
+		"es",
+		"xt",
+		"hz",
+		"ul",
+		"xo",
+		"nx",
+		"5i",
+		"HC",
+		"NR",
+		"NP",
+		"ND",
+		"cc",
+		"ut",
+		"hl",
+		"YA",
+		"YB",
+		"YC",
+		"YD",
+		"YE",
+		"YF",
+		"YG",
+		"bs",
+		"ns",
+		"nc",
+		"MT",
+		"NL",
+		"pt",
+		"xr",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numcodes) = {
+		"co",
+		"it",
+		"li",
+		"lm",
+		"sg",
+		"pb",
+		"vt",
+		"ws",
+		"Nl",
+		"lh",
+		"lw",
+		"ma",
+		"MW",
+		"Co",
+		"pa",
+		"NC",
+		"Ya",
+		"Yb",
+		"Yc",
+		"Yd",
+		"Ye",
+		"Yf",
+		"Yg",
+		"Yh",
+		"Yi",
+		"Yj",
+		"Yk",
+		"Yl",
+		"Ym",
+		"Yn",
+		"BT",
+		"Yo",
+		"Yp",
+		"ug",
+		"dC",
+		"dN",
+		"dB",
+		"dT",
+		"kn",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strcodes) = {
+		"bt",
+		"bl",
+		"cr",
+		"cs",
+		"ct",
+		"cl",
+		"ce",
+		"cd",
+		"ch",
+		"CC",
+		"cm",
+		"do",
+		"ho",
+		"vi",
+		"le",
+		"CM",
+		"ve",
+		"nd",
+		"ll",
+		"up",
+		"vs",
+		"dc",
+		"dl",
+		"ds",
+		"hd",
+		"as",
+		"mb",
+		"md",
+		"ti",
+		"dm",
+		"mh",
+		"im",
+		"mk",
+		"mp",
+		"mr",
+		"so",
+		"us",
+		"ec",
+		"ae",
+		"me",
+		"te",
+		"ed",
+		"ei",
+		"se",
+		"ue",
+		"vb",
+		"ff",
+		"fs",
+		"i1",
+		"is",
+		"i3",
+		"if",
+		"ic",
+		"al",
+		"ip",
+		"kb",
+		"ka",
+		"kC",
+		"kt",
+		"kD",
+		"kL",
+		"kd",
+		"kM",
+		"kE",
+		"kS",
+		"k0",
+		"k1",
+		"k;",
+		"k2",
+		"k3",
+		"k4",
+		"k5",
+		"k6",
+		"k7",
+		"k8",
+		"k9",
+		"kh",
+		"kI",
+		"kA",
+		"kl",
+		"kH",
+		"kN",
+		"kP",
+		"kr",
+		"kF",
+		"kR",
+		"kT",
+		"ku",
+		"ke",
+		"ks",
+		"l0",
+		"l1",
+		"la",
+		"l2",
+		"l3",
+		"l4",
+		"l5",
+		"l6",
+		"l7",
+		"l8",
+		"l9",
+		"mo",
+		"mm",
+		"nw",
+		"pc",
+		"DC",
+		"DL",
+		"DO",
+		"IC",
+		"SF",
+		"AL",
+		"LE",
+		"RI",
+		"SR",
+		"UP",
+		"pk",
+		"pl",
+		"px",
+		"ps",
+		"pf",
+		"po",
+		"rp",
+		"r1",
+		"r2",
+		"r3",
+		"rf",
+		"rc",
+		"cv",
+		"sc",
+		"sf",
+		"sr",
+		"sa",
+		"st",
+		"wi",
+		"ta",
+		"ts",
+		"uc",
+		"hu",
+		"iP",
+		"K1",
+		"K3",
+		"K2",
+		"K4",
+		"K5",
+		"pO",
+		"rP",
+		"ac",
+		"pn",
+		"kB",
+		"SX",
+		"RX",
+		"SA",
+		"RA",
+		"XN",
+		"XF",
+		"eA",
+		"LO",
+		"LF",
+		"@1",
+		"@2",
+		"@3",
+		"@4",
+		"@5",
+		"@6",
+		"@7",
+		"@8",
+		"@9",
+		"@0",
+		"%1",
+		"%2",
+		"%3",
+		"%4",
+		"%5",
+		"%6",
+		"%7",
+		"%8",
+		"%9",
+		"%0",
+		"&1",
+		"&2",
+		"&3",
+		"&4",
+		"&5",
+		"&6",
+		"&7",
+		"&8",
+		"&9",
+		"&0",
+		"*1",
+		"*2",
+		"*3",
+		"*4",
+		"*5",
+		"*6",
+		"*7",
+		"*8",
+		"*9",
+		"*0",
+		"#1",
+		"#2",
+		"#3",
+		"#4",
+		"%a",
+		"%b",
+		"%c",
+		"%d",
+		"%e",
+		"%f",
+		"%g",
+		"%h",
+		"%i",
+		"%j",
+		"!1",
+		"!2",
+		"!3",
+		"RF",
+		"F1",
+		"F2",
+		"F3",
+		"F4",
+		"F5",
+		"F6",
+		"F7",
+		"F8",
+		"F9",
+		"FA",
+		"FB",
+		"FC",
+		"FD",
+		"FE",
+		"FF",
+		"FG",
+		"FH",
+		"FI",
+		"FJ",
+		"FK",
+		"FL",
+		"FM",
+		"FN",
+		"FO",
+		"FP",
+		"FQ",
+		"FR",
+		"FS",
+		"FT",
+		"FU",
+		"FV",
+		"FW",
+		"FX",
+		"FY",
+		"FZ",
+		"Fa",
+		"Fb",
+		"Fc",
+		"Fd",
+		"Fe",
+		"Ff",
+		"Fg",
+		"Fh",
+		"Fi",
+		"Fj",
+		"Fk",
+		"Fl",
+		"Fm",
+		"Fn",
+		"Fo",
+		"Fp",
+		"Fq",
+		"Fr",
+		"cb",
+		"MC",
+		"ML",
+		"MR",
+		"Lf",
+		"SC",
+		"DK",
+		"RC",
+		"CW",
+		"WG",
+		"HU",
+		"DI",
+		"QD",
+		"TO",
+		"PU",
+		"fh",
+		"PA",
+		"WA",
+		"u0",
+		"u1",
+		"u2",
+		"u3",
+		"u4",
+		"u5",
+		"u6",
+		"u7",
+		"u8",
+		"u9",
+		"op",
+		"oc",
+		"Ic",
+		"Ip",
+		"sp",
+		"Sf",
+		"Sb",
+		"ZA",
+		"ZB",
+		"ZC",
+		"ZD",
+		"ZE",
+		"ZF",
+		"ZG",
+		"ZH",
+		"ZI",
+		"ZJ",
+		"ZK",
+		"ZL",
+		"ZM",
+		"ZN",
+		"ZO",
+		"ZP",
+		"ZQ",
+		"ZR",
+		"ZS",
+		"ZT",
+		"ZU",
+		"ZV",
+		"ZW",
+		"ZX",
+		"ZY",
+		"ZZ",
+		"Za",
+		"Zb",
+		"Zc",
+		"Zd",
+		"Ze",
+		"Zf",
+		"Zg",
+		"Zh",
+		"Zi",
+		"Zj",
+		"Zk",
+		"Zl",
+		"Zm",
+		"Zn",
+		"Zo",
+		"Zp",
+		"Zq",
+		"Zr",
+		"Zs",
+		"Zt",
+		"Zu",
+		"Zv",
+		"Zw",
+		"Zx",
+		"Zy",
+		"Km",
+		"Mi",
+		"RQ",
+		"Gm",
+		"AF",
+		"AB",
+		"xl",
+		"dv",
+		"ci",
+		"s0",
+		"s1",
+		"s2",
+		"s3",
+		"ML",
+		"MT",
+		"Xy",
+		"Zz",
+		"Yv",
+		"Yw",
+		"Yx",
+		"Yy",
+		"Yz",
+		"YZ",
+		"S1",
+		"S2",
+		"S3",
+		"S4",
+		"S5",
+		"S6",
+		"S7",
+		"S8",
+		"Xh",
+		"Xl",
+		"Xo",
+		"Xr",
+		"Xt",
+		"Xv",
+		"sA",
+		"sL",
+		"i2",
+		"rs",
+		"nl",
+		"bc",
+		"ko",
+		"ma",
+		"G2",
+		"G3",
+		"G1",
+		"G4",
+		"GR",
+		"GL",
+		"GU",
+		"GD",
+		"GH",
+		"GV",
+		"GC",
+		"ml",
+		"mu",
+		"bx",
+
+		(NCURSES_CONST char *)0,
+};
+
+
+#endif /* BROKEN_LINKER */
diff --git a/ncurses/comp_captab.c b/ncurses/comp_captab.c
new file mode 100644
index 0000000..bb50ac3
--- /dev/null
+++ b/ncurses/comp_captab.c
@@ -0,0 +1,3355 @@
+/*
+ *	comp_captab.c -- The names of the capabilities indexed via a hash
+ *		         table for the compiler.
+ *
+ */
+
+#include <curses.priv.h>
+#include <tic.h>
+#include <hashsize.h>
+
+static const char info_names_text[] = \
+"bw\0" "am\0" "xsb\0" "xhp\0" "xenl\0" "eo\0" "gn\0" "hc\0" "km\0" \
+"hs\0" "in\0" "da\0" "db\0" "mir\0" "msgr\0" "os\0" "eslok\0" "xt\0" \
+"hz\0" "ul\0" "xon\0" "nxon\0" "mc5i\0" "chts\0" "nrrmc\0" "npc\0" \
+"ndscr\0" "ccc\0" "bce\0" "hls\0" "xhpa\0" "crxm\0" "daisy\0" "xvpa\0" \
+"sam\0" "cpix\0" "lpix\0" "cols\0" "it\0" "lines\0" "lm\0" "xmc\0" \
+"pb\0" "vt\0" "wsl\0" "nlab\0" "lh\0" "lw\0" "ma\0" "wnum\0" "colors\0" \
+"pairs\0" "ncv\0" "bufsz\0" "spinv\0" "spinh\0" "maddr\0" "mjump\0" \
+"mcs\0" "mls\0" "npins\0" "orc\0" "orl\0" "orhi\0" "orvi\0" "cps\0" \
+"widcs\0" "btns\0" "bitwin\0" "bitype\0" "cbt\0" "bel\0" "cr\0" "csr\0" \
+"tbc\0" "clear\0" "el\0" "ed\0" "hpa\0" "cmdch\0" "cup\0" "cud1\0" \
+"home\0" "civis\0" "cub1\0" "mrcup\0" "cnorm\0" "cuf1\0" "ll\0" \
+"cuu1\0" "cvvis\0" "dch1\0" "dl1\0" "dsl\0" "hd\0" "smacs\0" "blink\0" \
+"bold\0" "smcup\0" "smdc\0" "dim\0" "smir\0" "invis\0" "prot\0" "rev\0" \
+"smso\0" "smul\0" "ech\0" "rmacs\0" "sgr0\0" "rmcup\0" "rmdc\0" \
+"rmir\0" "rmso\0" "rmul\0" "flash\0" "ff\0" "fsl\0" "is1\0" "is2\0" \
+"is3\0" "if\0" "ich1\0" "il1\0" "ip\0" "kbs\0" "ktbc\0" "kclr\0" \
+"kctab\0" "kdch1\0" "kdl1\0" "kcud1\0" "krmir\0" "kel\0" "ked\0" \
+"kf0\0" "kf1\0" "kf10\0" "kf2\0" "kf3\0" "kf4\0" "kf5\0" "kf6\0" \
+"kf7\0" "kf8\0" "kf9\0" "khome\0" "kich1\0" "kil1\0" "kcub1\0" "kll\0" \
+"knp\0" "kpp\0" "kcuf1\0" "kind\0" "kri\0" "khts\0" "kcuu1\0" "rmkx\0" \
+"smkx\0" "lf0\0" "lf1\0" "lf10\0" "lf2\0" "lf3\0" "lf4\0" "lf5\0" \
+"lf6\0" "lf7\0" "lf8\0" "lf9\0" "rmm\0" "smm\0" "nel\0" "pad\0" "dch\0" \
+"dl\0" "cud\0" "ich\0" "indn\0" "il\0" "cub\0" "cuf\0" "rin\0" "cuu\0" \
+"pfkey\0" "pfloc\0" "pfx\0" "mc0\0" "mc4\0" "mc5\0" "rep\0" "rs1\0" \
+"rs2\0" "rs3\0" "rf\0" "rc\0" "vpa\0" "sc\0" "ind\0" "ri\0" "sgr\0" \
+"hts\0" "wind\0" "ht\0" "tsl\0" "uc\0" "hu\0" "iprog\0" "ka1\0" "ka3\0" \
+"kb2\0" "kc1\0" "kc3\0" "mc5p\0" "rmp\0" "acsc\0" "pln\0" "kcbt\0" \
+"smxon\0" "rmxon\0" "smam\0" "rmam\0" "xonc\0" "xoffc\0" "enacs\0" \
+"smln\0" "rmln\0" "kbeg\0" "kcan\0" "kclo\0" "kcmd\0" "kcpy\0" "kcrt\0" \
+"kend\0" "kent\0" "kext\0" "kfnd\0" "khlp\0" "kmrk\0" "kmsg\0" "kmov\0" \
+"knxt\0" "kopn\0" "kopt\0" "kprv\0" "kprt\0" "krdo\0" "kref\0" "krfr\0" \
+"krpl\0" "krst\0" "kres\0" "ksav\0" "kspd\0" "kund\0" "kBEG\0" "kCAN\0" \
+"kCMD\0" "kCPY\0" "kCRT\0" "kDC\0" "kDL\0" "kslt\0" "kEND\0" "kEOL\0" \
+"kEXT\0" "kFND\0" "kHLP\0" "kHOM\0" "kIC\0" "kLFT\0" "kMSG\0" "kMOV\0" \
+"kNXT\0" "kOPT\0" "kPRV\0" "kPRT\0" "kRDO\0" "kRPL\0" "kRIT\0" "kRES\0" \
+"kSAV\0" "kSPD\0" "kUND\0" "rfi\0" "kf11\0" "kf12\0" "kf13\0" "kf14\0" \
+"kf15\0" "kf16\0" "kf17\0" "kf18\0" "kf19\0" "kf20\0" "kf21\0" "kf22\0" \
+"kf23\0" "kf24\0" "kf25\0" "kf26\0" "kf27\0" "kf28\0" "kf29\0" "kf30\0" \
+"kf31\0" "kf32\0" "kf33\0" "kf34\0" "kf35\0" "kf36\0" "kf37\0" "kf38\0" \
+"kf39\0" "kf40\0" "kf41\0" "kf42\0" "kf43\0" "kf44\0" "kf45\0" "kf46\0" \
+"kf47\0" "kf48\0" "kf49\0" "kf50\0" "kf51\0" "kf52\0" "kf53\0" "kf54\0" \
+"kf55\0" "kf56\0" "kf57\0" "kf58\0" "kf59\0" "kf60\0" "kf61\0" "kf62\0" \
+"kf63\0" "el1\0" "mgc\0" "smgl\0" "smgr\0" "fln\0" "sclk\0" "dclk\0" \
+"rmclk\0" "cwin\0" "wingo\0" "hup\0" "dial\0" "qdial\0" "tone\0" \
+"pulse\0" "hook\0" "pause\0" "wait\0" "u0\0" "u1\0" "u2\0" "u3\0" \
+"u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "initc\0" \
+"initp\0" "scp\0" "setf\0" "setb\0" "cpi\0" "lpi\0" "chr\0" "cvr\0" \
+"defc\0" "swidm\0" "sdrfq\0" "sitm\0" "slm\0" "smicm\0" "snlq\0" \
+"snrmq\0" "sshm\0" "ssubm\0" "ssupm\0" "sum\0" "rwidm\0" "ritm\0" \
+"rlm\0" "rmicm\0" "rshm\0" "rsubm\0" "rsupm\0" "rum\0" "mhpa\0" \
+"mcud1\0" "mcub1\0" "mcuf1\0" "mvpa\0" "mcuu1\0" "porder\0" "mcud\0" \
+"mcub\0" "mcuf\0" "mcuu\0" "scs\0" "smgb\0" "smgbp\0" "smglp\0" \
+"smgrp\0" "smgt\0" "smgtp\0" "sbim\0" "scsd\0" "rbim\0" "rcsd\0" \
+"subcs\0" "supcs\0" "docr\0" "zerom\0" "csnm\0" "kmous\0" "minfo\0" \
+"reqmp\0" "getm\0" "setaf\0" "setab\0" "pfxl\0" "devt\0" "csin\0" \
+"s0ds\0" "s1ds\0" "s2ds\0" "s3ds\0" "smglr\0" "smgtb\0" "birep\0" \
+"binel\0" "bicr\0" "colornm\0" "defbi\0" "endbi\0" "setcolor\0" \
+"slines\0" "dispc\0" "smpch\0" "rmpch\0" "smsc\0" "rmsc\0" "pctrm\0" \
+"scesc\0" "scesa\0" "ehhlm\0" "elhlm\0" "elohlm\0" "erhlm\0" "ethlm\0" \
+"evhlm\0" "sgr1\0" "slength\0" "OTi2\0" "OTrs\0" "OTug\0" "OTbs\0" \
+"OTns\0" "OTnc\0" "OTdC\0" "OTdN\0" "OTnl\0" "OTbc\0" "OTMT\0" "OTNL\0" \
+"OTdB\0" "OTdT\0" "OTkn\0" "OTko\0" "OTma\0" "OTpt\0" "OTxr\0" "OTG2\0" \
+"OTG3\0" "OTG1\0" "OTG4\0" "OTGR\0" "OTGL\0" "OTGU\0" "OTGD\0" "OTGH\0" \
+"OTGV\0" "OTGC\0" "meml\0" "memu\0" "box1\0" ;
+
+static name_table_data const info_names_data[] =
+{
+	{               0,	   BOOLEAN,	  0,  -1 },
+	{               3,	   BOOLEAN,	  1,  -1 },
+	{               6,	   BOOLEAN,	  2,  -1 },
+	{              10,	   BOOLEAN,	  3,  -1 },
+	{              14,	   BOOLEAN,	  4,  -1 },
+	{              19,	   BOOLEAN,	  5,  -1 },
+	{              22,	   BOOLEAN,	  6,  -1 },
+	{              25,	   BOOLEAN,	  7,  -1 },
+	{              28,	   BOOLEAN,	  8,  -1 },
+	{              31,	   BOOLEAN,	  9,  -1 },
+	{              34,	   BOOLEAN,	 10,  -1 },
+	{              37,	   BOOLEAN,	 11,  -1 },
+	{              40,	   BOOLEAN,	 12,  -1 },
+	{              43,	   BOOLEAN,	 13,  -1 },
+	{              47,	   BOOLEAN,	 14,  -1 },
+	{              52,	   BOOLEAN,	 15,  -1 },
+	{              55,	   BOOLEAN,	 16,  -1 },
+	{              61,	   BOOLEAN,	 17,  -1 },
+	{              64,	   BOOLEAN,	 18,  -1 },
+	{              67,	   BOOLEAN,	 19,  -1 },
+	{              70,	   BOOLEAN,	 20,  -1 },
+	{              74,	   BOOLEAN,	 21,  -1 },
+	{              79,	   BOOLEAN,	 22,  -1 },
+	{              84,	   BOOLEAN,	 23,  -1 },
+	{              89,	   BOOLEAN,	 24,  -1 },
+	{              95,	   BOOLEAN,	 25,  -1 },
+	{              99,	   BOOLEAN,	 26,  -1 },
+	{             105,	   BOOLEAN,	 27,  -1 },
+	{             109,	   BOOLEAN,	 28,  -1 },
+	{             113,	   BOOLEAN,	 29,  -1 },
+	{             117,	   BOOLEAN,	 30,  -1 },
+	{             122,	   BOOLEAN,	 31,  -1 },
+	{             127,	   BOOLEAN,	 32,  -1 },
+	{             133,	   BOOLEAN,	 33,  -1 },
+	{             138,	   BOOLEAN,	 34,  -1 },
+	{             142,	   BOOLEAN,	 35,  -1 },
+	{             147,	   BOOLEAN,	 36,  -1 },
+	{             152,	    NUMBER,	  0,  -1 },
+	{             157,	    NUMBER,	  1,  -1 },
+	{             160,	    NUMBER,	  2,   6 },
+	{             166,	    NUMBER,	  3,  -1 },
+	{             169,	    NUMBER,	  4,  -1 },
+	{             173,	    NUMBER,	  5,  -1 },
+	{             176,	    NUMBER,	  6,  -1 },
+	{             179,	    NUMBER,	  7,  -1 },
+	{             183,	    NUMBER,	  8,  -1 },
+	{             188,	    NUMBER,	  9,  -1 },
+	{             191,	    NUMBER,	 10,  -1 },
+	{             194,	    NUMBER,	 11,  -1 },
+	{             197,	    NUMBER,	 12,  -1 },
+	{             202,	    NUMBER,	 13,  -1 },
+	{             209,	    NUMBER,	 14,  -1 },
+	{             215,	    NUMBER,	 15,  -1 },
+	{             219,	    NUMBER,	 16,  46 },
+	{             225,	    NUMBER,	 17,  -1 },
+	{             231,	    NUMBER,	 18,  -1 },
+	{             237,	    NUMBER,	 19,  -1 },
+	{             243,	    NUMBER,	 20,  -1 },
+	{             249,	    NUMBER,	 21,  -1 },
+	{             253,	    NUMBER,	 22,  -1 },
+	{             257,	    NUMBER,	 23,  -1 },
+	{             263,	    NUMBER,	 24,  -1 },
+	{             267,	    NUMBER,	 25,  -1 },
+	{             271,	    NUMBER,	 26,  -1 },
+	{             276,	    NUMBER,	 27,  -1 },
+	{             281,	    NUMBER,	 28,  -1 },
+	{             285,	    NUMBER,	 29,  -1 },
+	{             291,	    NUMBER,	 30,  -1 },
+	{             296,	    NUMBER,	 31,  -1 },
+	{             303,	    NUMBER,	 32,  68 },
+	{             310,	    STRING,	  0,  -1 },
+	{             314,	    STRING,	  1,  -1 },
+	{             318,	    STRING,	  2,  -1 },
+	{             321,	    STRING,	  3,  -1 },
+	{             325,	    STRING,	  4,  -1 },
+	{             329,	    STRING,	  5,  -1 },
+	{             335,	    STRING,	  6,  -1 },
+	{             338,	    STRING,	  7,  -1 },
+	{             341,	    STRING,	  8,  -1 },
+	{             345,	    STRING,	  9,  -1 },
+	{             351,	    STRING,	 10,  73 },
+	{             355,	    STRING,	 11,  -1 },
+	{             360,	    STRING,	 12,  -1 },
+	{             365,	    STRING,	 13,  -1 },
+	{             371,	    STRING,	 14,  -1 },
+	{             376,	    STRING,	 15,  -1 },
+	{             382,	    STRING,	 16,  -1 },
+	{             388,	    STRING,	 17,  -1 },
+	{             393,	    STRING,	 18,  -1 },
+	{             396,	    STRING,	 19,  -1 },
+	{             401,	    STRING,	 20,  -1 },
+	{             407,	    STRING,	 21,  -1 },
+	{             412,	    STRING,	 22,  -1 },
+	{             416,	    STRING,	 23,  -1 },
+	{             420,	    STRING,	 24,  -1 },
+	{             423,	    STRING,	 25,  -1 },
+	{             429,	    STRING,	 26,  -1 },
+	{             435,	    STRING,	 27,  -1 },
+	{             440,	    STRING,	 28,  -1 },
+	{             446,	    STRING,	 29,  -1 },
+	{             451,	    STRING,	 30,  -1 },
+	{             455,	    STRING,	 31,  -1 },
+	{             460,	    STRING,	 32,  -1 },
+	{             466,	    STRING,	 33,  -1 },
+	{             471,	    STRING,	 34,  -1 },
+	{             475,	    STRING,	 35,  -1 },
+	{             480,	    STRING,	 36,  -1 },
+	{             485,	    STRING,	 37,  -1 },
+	{             489,	    STRING,	 38,  -1 },
+	{             495,	    STRING,	 39,  -1 },
+	{             500,	    STRING,	 40,  -1 },
+	{             506,	    STRING,	 41,  -1 },
+	{             511,	    STRING,	 42,  -1 },
+	{             516,	    STRING,	 43,  -1 },
+	{             521,	    STRING,	 44,  -1 },
+	{             526,	    STRING,	 45,  -1 },
+	{             532,	    STRING,	 46,  -1 },
+	{             535,	    STRING,	 47,  -1 },
+	{             539,	    STRING,	 48,  -1 },
+	{             543,	    STRING,	 49,  59 },
+	{             547,	    STRING,	 50,  76 },
+	{             551,	    STRING,	 51,  -1 },
+	{             554,	    STRING,	 52,  20 },
+	{             559,	    STRING,	 53,  -1 },
+	{             563,	    STRING,	 54,  -1 },
+	{             566,	    STRING,	 55,  -1 },
+	{             570,	    STRING,	 56,  -1 },
+	{             575,	    STRING,	 57,  98 },
+	{             580,	    STRING,	 58,  -1 },
+	{             586,	    STRING,	 59,  -1 },
+	{             592,	    STRING,	 60,  -1 },
+	{             597,	    STRING,	 61,  -1 },
+	{             603,	    STRING,	 62,  -1 },
+	{             609,	    STRING,	 63,  -1 },
+	{             613,	    STRING,	 64,  -1 },
+	{             617,	    STRING,	 65,  -1 },
+	{             621,	    STRING,	 66,  -1 },
+	{             625,	    STRING,	 67,  -1 },
+	{             630,	    STRING,	 68,  -1 },
+	{             634,	    STRING,	 69,  -1 },
+	{             638,	    STRING,	 70,  -1 },
+	{             642,	    STRING,	 71,  61 },
+	{             646,	    STRING,	 72,  -1 },
+	{             650,	    STRING,	 73,  -1 },
+	{             654,	    STRING,	 74,  -1 },
+	{             658,	    STRING,	 75,  -1 },
+	{             662,	    STRING,	 76,  -1 },
+	{             668,	    STRING,	 77,  -1 },
+	{             674,	    STRING,	 78,  -1 },
+	{             679,	    STRING,	 79,  -1 },
+	{             685,	    STRING,	 80,  -1 },
+	{             689,	    STRING,	 81,  -1 },
+	{             693,	    STRING,	 82,  -1 },
+	{             697,	    STRING,	 83,  -1 },
+	{             703,	    STRING,	 84,  55 },
+	{             708,	    STRING,	 85, 105 },
+	{             712,	    STRING,	 86,  -1 },
+	{             717,	    STRING,	 87,  81 },
+	{             723,	    STRING,	 88,  -1 },
+	{             728,	    STRING,	 89,  -1 },
+	{             733,	    STRING,	 90,  -1 },
+	{             737,	    STRING,	 91,  -1 },
+	{             741,	    STRING,	 92,  -1 },
+	{             746,	    STRING,	 93,  -1 },
+	{             750,	    STRING,	 94,  33 },
+	{             754,	    STRING,	 95,  -1 },
+	{             758,	    STRING,	 96,  -1 },
+	{             762,	    STRING,	 97,  -1 },
+	{             766,	    STRING,	 98,   7 },
+	{             770,	    STRING,	 99,  94 },
+	{             774,	    STRING,	100,  -1 },
+	{             778,	    STRING,	101, 131 },
+	{             782,	    STRING,	102,  -1 },
+	{             786,	    STRING,	103,  -1 },
+	{             790,	    STRING,	104,  30 },
+	{             794,	    STRING,	105,  -1 },
+	{             798,	    STRING,	106,  -1 },
+	{             801,	    STRING,	107,  -1 },
+	{             805,	    STRING,	108,  -1 },
+	{             809,	    STRING,	109,  -1 },
+	{             814,	    STRING,	110,  -1 },
+	{             817,	    STRING,	111,  -1 },
+	{             821,	    STRING,	112, 156 },
+	{             825,	    STRING,	113,  -1 },
+	{             829,	    STRING,	114,  -1 },
+	{             833,	    STRING,	115,  51 },
+	{             839,	    STRING,	116,  -1 },
+	{             845,	    STRING,	117,  -1 },
+	{             849,	    STRING,	118,  -1 },
+	{             853,	    STRING,	119,  -1 },
+	{             857,	    STRING,	120,  -1 },
+	{             861,	    STRING,	121,  -1 },
+	{             865,	    STRING,	122,  -1 },
+	{             869,	    STRING,	123,  -1 },
+	{             873,	    STRING,	124, 126 },
+	{             877,	    STRING,	125,  -1 },
+	{             880,	    STRING,	126,  -1 },
+	{             883,	    STRING,	127,  -1 },
+	{             887,	    STRING,	128,  -1 },
+	{             890,	    STRING,	129,  -1 },
+	{             894,	    STRING,	130,  -1 },
+	{             897,	    STRING,	131,  -1 },
+	{             901,	    STRING,	132,  -1 },
+	{             905,	    STRING,	133,  -1 },
+	{             910,	    STRING,	134,  -1 },
+	{             913,	    STRING,	135,  -1 },
+	{             917,	    STRING,	136,  23 },
+	{             920,	    STRING,	137,  -1 },
+	{             923,	    STRING,	138,  -1 },
+	{             929,	    STRING,	139,  -1 },
+	{             933,	    STRING,	140,  -1 },
+	{             937,	    STRING,	141, 210 },
+	{             941,	    STRING,	142, 211 },
+	{             945,	    STRING,	143, 135 },
+	{             949,	    STRING,	144,  -1 },
+	{             954,	    STRING,	145,  -1 },
+	{             958,	    STRING,	146, 176 },
+	{             963,	    STRING,	147,  -1 },
+	{             967,	    STRING,	148, 194 },
+	{             972,	    STRING,	149,  -1 },
+	{             978,	    STRING,	150,  -1 },
+	{             984,	    STRING,	151, 137 },
+	{             989,	    STRING,	152,  -1 },
+	{             994,	    STRING,	153,  -1 },
+	{             999,	    STRING,	154,  -1 },
+	{            1005,	    STRING,	155,  -1 },
+	{            1011,	    STRING,	156,  -1 },
+	{            1016,	    STRING,	157,  -1 },
+	{            1021,	    STRING,	158,  -1 },
+	{            1026,	    STRING,	159,  -1 },
+	{            1031,	    STRING,	160,  -1 },
+	{            1036,	    STRING,	161,  -1 },
+	{            1041,	    STRING,	162,  -1 },
+	{            1046,	    STRING,	163,  54 },
+	{            1051,	    STRING,	164, 192 },
+	{            1056,	    STRING,	165,  -1 },
+	{            1061,	    STRING,	166,  -1 },
+	{            1066,	    STRING,	167, 193 },
+	{            1071,	    STRING,	168,  -1 },
+	{            1076,	    STRING,	169,  70 },
+	{            1081,	    STRING,	170, 235 },
+	{            1086,	    STRING,	171,  -1 },
+	{            1091,	    STRING,	172,  -1 },
+	{            1096,	    STRING,	173, 177 },
+	{            1101,	    STRING,	174,  -1 },
+	{            1106,	    STRING,	175,  -1 },
+	{            1111,	    STRING,	176,  -1 },
+	{            1116,	    STRING,	177,  -1 },
+	{            1121,	    STRING,	178,  -1 },
+	{            1126,	    STRING,	179, 239 },
+	{            1131,	    STRING,	180, 219 },
+	{            1136,	    STRING,	181,  80 },
+	{            1141,	    STRING,	182, 249 },
+	{            1146,	    STRING,	183, 252 },
+	{            1151,	    STRING,	184, 240 },
+	{            1156,	    STRING,	185, 254 },
+	{            1161,	    STRING,	186,  -1 },
+	{            1166,	    STRING,	187,  -1 },
+	{            1171,	    STRING,	188, 101 },
+	{            1176,	    STRING,	189,  -1 },
+	{            1181,	    STRING,	190,  -1 },
+	{            1186,	    STRING,	191,  -1 },
+	{            1190,	    STRING,	192,  -1 },
+	{            1194,	    STRING,	193, 244 },
+	{            1199,	    STRING,	194,  -1 },
+	{            1204,	    STRING,	195, 152 },
+	{            1209,	    STRING,	196,  -1 },
+	{            1214,	    STRING,	197, 150 },
+	{            1219,	    STRING,	198,  -1 },
+	{            1224,	    STRING,	199, 268 },
+	{            1229,	    STRING,	200,  -1 },
+	{            1233,	    STRING,	201,  72 },
+	{            1238,	    STRING,	202,  -1 },
+	{            1243,	    STRING,	203,  -1 },
+	{            1248,	    STRING,	204,  -1 },
+	{            1253,	    STRING,	205,  -1 },
+	{            1258,	    STRING,	206,  -1 },
+	{            1263,	    STRING,	207, 196 },
+	{            1268,	    STRING,	208,  -1 },
+	{            1273,	    STRING,	209,  -1 },
+	{            1278,	    STRING,	210,  -1 },
+	{            1283,	    STRING,	211,  -1 },
+	{            1288,	    STRING,	212, 281 },
+	{            1293,	    STRING,	213, 272 },
+	{            1298,	    STRING,	214, 283 },
+	{            1303,	    STRING,	215,  -1 },
+	{            1307,	    STRING,	216,  -1 },
+	{            1312,	    STRING,	217, 134 },
+	{            1317,	    STRING,	218,  -1 },
+	{            1322,	    STRING,	219,  -1 },
+	{            1327,	    STRING,	220,  -1 },
+	{            1332,	    STRING,	221,  43 },
+	{            1337,	    STRING,	222, 256 },
+	{            1342,	    STRING,	223,  -1 },
+	{            1347,	    STRING,	224,  -1 },
+	{            1352,	    STRING,	225, 286 },
+	{            1357,	    STRING,	226, 287 },
+	{            1362,	    STRING,	227, 288 },
+	{            1367,	    STRING,	228, 289 },
+	{            1372,	    STRING,	229, 290 },
+	{            1377,	    STRING,	230, 291 },
+	{            1382,	    STRING,	231, 292 },
+	{            1387,	    STRING,	232, 293 },
+	{            1392,	    STRING,	233, 294 },
+	{            1397,	    STRING,	234, 133 },
+	{            1402,	    STRING,	235, 296 },
+	{            1407,	    STRING,	236, 297 },
+	{            1412,	    STRING,	237, 298 },
+	{            1417,	    STRING,	238, 299 },
+	{            1422,	    STRING,	239, 300 },
+	{            1427,	    STRING,	240, 301 },
+	{            1432,	    STRING,	241, 302 },
+	{            1437,	    STRING,	242, 303 },
+	{            1442,	    STRING,	243, 304 },
+	{            1447,	    STRING,	244, 257 },
+	{            1452,	    STRING,	245, 306 },
+	{            1457,	    STRING,	246, 307 },
+	{            1462,	    STRING,	247, 308 },
+	{            1467,	    STRING,	248, 309 },
+	{            1472,	    STRING,	249, 310 },
+	{            1477,	    STRING,	250, 311 },
+	{            1482,	    STRING,	251, 312 },
+	{            1487,	    STRING,	252, 313 },
+	{            1492,	    STRING,	253, 314 },
+	{            1497,	    STRING,	254, 226 },
+	{            1502,	    STRING,	255, 316 },
+	{            1507,	    STRING,	256, 317 },
+	{            1512,	    STRING,	257, 318 },
+	{            1517,	    STRING,	258, 319 },
+	{            1522,	    STRING,	259, 320 },
+	{            1527,	    STRING,	260, 321 },
+	{            1532,	    STRING,	261, 322 },
+	{            1537,	    STRING,	262, 323 },
+	{            1542,	    STRING,	263, 324 },
+	{            1547,	    STRING,	264, 258 },
+	{            1552,	    STRING,	265, 326 },
+	{            1557,	    STRING,	266, 327 },
+	{            1562,	    STRING,	267, 328 },
+	{            1567,	    STRING,	268, 329 },
+	{            1572,	    STRING,	269,  -1 },
+	{            1576,	    STRING,	270,  -1 },
+	{            1580,	    STRING,	271, 335 },
+	{            1585,	    STRING,	272, 332 },
+	{            1590,	    STRING,	273,  -1 },
+	{            1594,	    STRING,	274,  -1 },
+	{            1599,	    STRING,	275,  -1 },
+	{            1604,	    STRING,	276,  -1 },
+	{            1610,	    STRING,	277,  37 },
+	{            1615,	    STRING,	278,  -1 },
+	{            1621,	    STRING,	279,  -1 },
+	{            1625,	    STRING,	280,  -1 },
+	{            1630,	    STRING,	281,  -1 },
+	{            1636,	    STRING,	282,  -1 },
+	{            1641,	    STRING,	283,  -1 },
+	{            1647,	    STRING,	284,  -1 },
+	{            1652,	    STRING,	285,   8 },
+	{            1658,	    STRING,	286, 262 },
+	{            1663,	    STRING,	287,  -1 },
+	{            1666,	    STRING,	288,  -1 },
+	{            1669,	    STRING,	289,  -1 },
+	{            1672,	    STRING,	290,  -1 },
+	{            1675,	    STRING,	291,  -1 },
+	{            1678,	    STRING,	292,  -1 },
+	{            1681,	    STRING,	293,  -1 },
+	{            1684,	    STRING,	294,  -1 },
+	{            1687,	    STRING,	295,  -1 },
+	{            1690,	    STRING,	296,  -1 },
+	{            1693,	    STRING,	297,  -1 },
+	{            1696,	    STRING,	298,  -1 },
+	{            1699,	    STRING,	299,  -1 },
+	{            1705,	    STRING,	300,  -1 },
+	{            1711,	    STRING,	301,  -1 },
+	{            1715,	    STRING,	302, 325 },
+	{            1720,	    STRING,	303, 221 },
+	{            1725,	    STRING,	304, 243 },
+	{            1729,	    STRING,	305,  -1 },
+	{            1733,	    STRING,	306, 250 },
+	{            1737,	    STRING,	307,  -1 },
+	{            1741,	    STRING,	308, 141 },
+	{            1746,	    STRING,	309, 248 },
+	{            1752,	    STRING,	310, 218 },
+	{            1758,	    STRING,	311,  -1 },
+	{            1763,	    STRING,	312, 201 },
+	{            1767,	    STRING,	313, 229 },
+	{            1773,	    STRING,	314, 264 },
+	{            1778,	    STRING,	315, 253 },
+	{            1784,	    STRING,	316, 334 },
+	{            1789,	    STRING,	317,  -1 },
+	{            1795,	    STRING,	318, 236 },
+	{            1801,	    STRING,	319, 185 },
+	{            1805,	    STRING,	320,  -1 },
+	{            1811,	    STRING,	321,  -1 },
+	{            1816,	    STRING,	322,  -1 },
+	{            1820,	    STRING,	323,  -1 },
+	{            1826,	    STRING,	324, 112 },
+	{            1831,	    STRING,	325,  -1 },
+	{            1837,	    STRING,	326,  -1 },
+	{            1843,	    STRING,	327,  -1 },
+	{            1847,	    STRING,	328,  -1 },
+	{            1852,	    STRING,	329,  -1 },
+	{            1858,	    STRING,	330,  -1 },
+	{            1864,	    STRING,	331,  53 },
+	{            1870,	    STRING,	332,  -1 },
+	{            1875,	    STRING,	333,  47 },
+	{            1881,	    STRING,	334, 155 },
+	{            1888,	    STRING,	335,  -1 },
+	{            1893,	    STRING,	336,  -1 },
+	{            1898,	    STRING,	337,  -1 },
+	{            1903,	    STRING,	338,  -1 },
+	{            1908,	    STRING,	339,  -1 },
+	{            1912,	    STRING,	340,  -1 },
+	{            1917,	    STRING,	341, 383 },
+	{            1923,	    STRING,	342,  -1 },
+	{            1929,	    STRING,	343,  -1 },
+	{            1935,	    STRING,	344, 386 },
+	{            1940,	    STRING,	345, 238 },
+	{            1946,	    STRING,	346,  -1 },
+	{            1951,	    STRING,	347, 344 },
+	{            1956,	    STRING,	348,  31 },
+	{            1961,	    STRING,	349,  -1 },
+	{            1966,	    STRING,	350, 380 },
+	{            1972,	    STRING,	351, 255 },
+	{            1978,	    STRING,	352,  -1 },
+	{            1983,	    STRING,	353,  -1 },
+	{            1989,	    STRING,	354, 347 },
+	{            1994,	    STRING,	355,  -1 },
+	{            2000,	    STRING,	356,  -1 },
+	{            2006,	    STRING,	357,  -1 },
+	{            2012,	    STRING,	358,  87 },
+	{            2017,	    STRING,	359,  -1 },
+	{            2023,	    STRING,	360,  -1 },
+	{            2029,	    STRING,	361,  -1 },
+	{            2034,	    STRING,	362,  -1 },
+	{            2039,	    STRING,	363,  -1 },
+	{            2044,	    STRING,	364,  -1 },
+	{            2049,	    STRING,	365, 212 },
+	{            2054,	    STRING,	366, 109 },
+	{            2059,	    STRING,	367, 213 },
+	{            2064,	    STRING,	368, 230 },
+	{            2070,	    STRING,	369,  -1 },
+	{            2076,	    STRING,	370,  -1 },
+	{            2082,	    STRING,	371,  -1 },
+	{            2088,	    STRING,	372,  -1 },
+	{            2093,	    STRING,	373,  -1 },
+	{            2101,	    STRING,	374,  -1 },
+	{            2107,	    STRING,	375,  -1 },
+	{            2113,	    STRING,	376,  -1 },
+	{            2122,	    STRING,	377, 116 },
+	{            2129,	    STRING,	378,  -1 },
+	{            2135,	    STRING,	379, 231 },
+	{            2141,	    STRING,	380,  -1 },
+	{            2147,	    STRING,	381, 338 },
+	{            2152,	    STRING,	382,  -1 },
+	{            2157,	    STRING,	383,  -1 },
+	{            2163,	    STRING,	384, 197 },
+	{            2169,	    STRING,	385, 430 },
+	{            2175,	    STRING,	386,  -1 },
+	{            2181,	    STRING,	387,  -1 },
+	{            2187,	    STRING,	388,  -1 },
+	{            2194,	    STRING,	389,  -1 },
+	{            2200,	    STRING,	390,  -1 },
+	{            2206,	    STRING,	391,  -1 },
+	{            2212,	    STRING,	392, 437 },
+	{            2217,	    STRING,	393,  -1 },
+	{            2225,	    STRING,	394,  -1 },
+	{            2230,	    STRING,	395,  -1 },
+	{            2235,	    NUMBER,	 33,  -1 },
+	{            2240,	   BOOLEAN,	 37,  -1 },
+	{            2245,	   BOOLEAN,	 38,  -1 },
+	{            2250,	   BOOLEAN,	 39,  -1 },
+	{            2255,	    NUMBER,	 34,  -1 },
+	{            2260,	    NUMBER,	 35,  -1 },
+	{            2265,	    STRING,	396,  -1 },
+	{            2270,	    STRING,	397,  13 },
+	{            2275,	   BOOLEAN,	 40,  -1 },
+	{            2280,	   BOOLEAN,	 41, 446 },
+	{            2285,	    NUMBER,	 36,  -1 },
+	{            2290,	    NUMBER,	 37,  -1 },
+	{            2295,	    NUMBER,	 38,  -1 },
+	{            2300,	    STRING,	398, 472 },
+	{            2305,	    STRING,	399,  -1 },
+	{            2310,	   BOOLEAN,	 42,  -1 },
+	{            2315,	   BOOLEAN,	 43,  -1 },
+	{            2320,	    STRING,	400,  -1 },
+	{            2325,	    STRING,	401,  -1 },
+	{            2330,	    STRING,	402,  -1 },
+	{            2335,	    STRING,	403,  -1 },
+	{            2340,	    STRING,	404,  -1 },
+	{            2345,	    STRING,	405,  -1 },
+	{            2350,	    STRING,	406,  -1 },
+	{            2355,	    STRING,	407,  -1 },
+	{            2360,	    STRING,	408,  26 },
+	{            2365,	    STRING,	409,  60 },
+	{            2370,	    STRING,	410, 121 },
+	{            2375,	    STRING,	411, 407 },
+	{            2380,	    STRING,	412, 402 },
+	{            2385,	    STRING,	413,  -1 } 
+};
+
+static struct name_table_entry *_nc_info_table = 0;
+
+static const short _nc_info_hash_table[995] =
+{
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	465,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	261,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	457,
+	 -1,
+	 -1,
+	265,
+	216,
+	120,
+	 -1,
+	 -1,
+	 -1,
+	180,
+	 -1,
+	 -1,
+	 88,
+	 -1,
+	420,
+	 -1,
+	398,
+	 -1,
+	348,
+	 -1,
+	 -1,
+	 19,
+	 -1,
+	 -1,
+	 -1,
+	359,
+	 -1,
+	174,
+	 -1,
+	245,
+	 -1,
+	 74,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	269,
+	 -1,
+	480,
+	 -1,
+	 -1,
+	 -1,
+	124,
+	 -1,
+	 -1,
+	 -1,
+	390,
+	379,
+	367,
+	 -1,
+	 -1,
+	444,
+	 -1,
+	 -1,
+	 -1,
+	305,
+	 -1,
+	 -1,
+	363,
+	 -1,
+	 -1,
+	483,
+	377,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	460,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	204,
+	 38,
+	 -1,
+	 82,
+	 -1,
+	110,
+	127,
+	 -1,
+	 -1,
+	463,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	336,
+	 -1,
+	 17,
+	128,
+	434,
+	 -1,
+	188,
+	129,
+	 -1,
+	351,
+	 -1,
+	 -1,
+	 16,
+	 -1,
+	 -1,
+	259,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	489,
+	 -1,
+	353,
+	 -1,
+	 71,
+	247,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 78,
+	 -1,
+	 -1,
+	331,
+	 -1,
+	 -1,
+	173,
+	136,
+	161,
+	189,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	454,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	224,
+	479,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	354,
+	 -1,
+	 -1,
+	233,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	125,
+	 11,
+	 -1,
+	 -1,
+	378,
+	166,
+	 -1,
+	191,
+	 -1,
+	 -1,
+	 48,
+	228,
+	 -1,
+	  2,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	374,
+	 -1,
+	408,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	375,
+	 -1,
+	 52,
+	145,
+	170,
+	 -1,
+	392,
+	382,
+	 -1,
+	393,
+	411,
+	 -1,
+	 -1,
+	 -1,
+	276,
+	 -1,
+	 -1,
+	 35,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	396,
+	388,
+	 36,
+	 -1,
+	 -1,
+	 64,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	350,
+	 -1,
+	 -1,
+	215,
+	 91,
+	 -1,
+	 -1,
+	439,
+	 -1,
+	122,
+	 -1,
+	200,
+	 -1,
+	 67,
+	 -1,
+	410,
+	 -1,
+	 -1,
+	 89,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 96,
+	 21,
+	 -1,
+	103,
+	  1,
+	 -1,
+	 -1,
+	369,
+	 -1,
+	 -1,
+	345,
+	 -1,
+	 -1,
+	 -1,
+	355,
+	 40,
+	 -1,
+	 27,
+	 -1,
+	406,
+	 -1,
+	 -1,
+	 -1,
+	482,
+	419,
+	417,
+	 -1,
+	 -1,
+	360,
+	270,
+	 -1,
+	 -1,
+	251,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	349,
+	 -1,
+	 -1,
+	278,
+	 -1,
+	442,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	438,
+	 -1,
+	494,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	315,
+	 -1,
+	340,
+	364,
+	356,
+	 -1,
+	484,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 32,
+	 -1,
+	 -1,
+	 -1,
+	260,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	207,
+	487,
+	 84,
+	453,
+	 -1,
+	 -1,
+	413,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	214,
+	 -1,
+	337,
+	352,
+	477,
+	 -1,
+	435,
+	 56,
+	 -1,
+	 -1,
+	 34,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	132,
+	 -1,
+	 85,
+	492,
+	428,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	199,
+	 -1,
+	342,
+	 -1,
+	 -1,
+	 -1,
+	138,
+	163,
+	190,
+	147,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	266,
+	 -1,
+	 -1,
+	433,
+	 -1,
+	 -1,
+	474,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	385,
+	100,
+	 -1,
+	 -1,
+	 -1,
+	431,
+	 -1,
+	391,
+	381,
+	 12,
+	 58,
+	 -1,
+	142,
+	167,
+	 -1,
+	 -1,
+	409,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 42,
+	 45,
+	 66,
+	 -1,
+	 -1,
+	424,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	220,
+	376,
+	 -1,
+	 -1,
+	343,
+	 -1,
+	 -1,
+	 -1,
+	114,
+	106,
+	 -1,
+	 -1,
+	447,
+	 -1,
+	217,
+	493,
+	171,
+	172,
+	399,
+	346,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	195,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	496,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	241,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	151,
+	 -1,
+	118,
+	 -1,
+	 62,
+	187,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	234,
+	 -1,
+	443,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	357,
+	 -1,
+	 -1,
+	 -1,
+	246,
+	 -1,
+	 -1,
+	 -1,
+	448,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 39,
+	 -1,
+	 10,
+	397,
+	389,
+	 -1,
+	 -1,
+	154,
+	 -1,
+	 -1,
+	 -1,
+	130,
+	 -1,
+	 22,
+	222,
+	373,
+	162,
+	 -1,
+	361,
+	203,
+	 -1,
+	 -1,
+	242,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	459,
+	 -1,
+	 -1,
+	271,
+	 -1,
+	 97,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	427,
+	 -1,
+	175,
+	107,
+	 -1,
+	 -1,
+	 -1,
+	178,
+	423,
+	372,
+	 69,
+	 -1,
+	365,
+	 -1,
+	  4,
+	486,
+	184,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	461,
+	 -1,
+	 -1,
+	282,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	475,
+	 -1,
+	 -1,
+	 -1,
+	395,
+	387,
+	 -1,
+	 -1,
+	 79,
+	 63,
+	 -1,
+	 -1,
+	452,
+	451,
+	 -1,
+	 50,
+	 -1,
+	436,
+	 -1,
+	 -1,
+	285,
+	 -1,
+	 -1,
+	 83,
+	455,
+	 -1,
+	 -1,
+	 -1,
+	279,
+	370,
+	 -1,
+	 -1,
+	 -1,
+	 18,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	421,
+	 -1,
+	495,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	227,
+	333,
+	 -1,
+	 -1,
+	 25,
+	139,
+	164,
+	 -1,
+	 -1,
+	371,
+	 -1,
+	 -1,
+	429,
+	 -1,
+	 -1,
+	 -1,
+	273,
+	 -1,
+	466,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	181,
+	 -1,
+	 -1,
+	 75,
+	 -1,
+	 92,
+	339,
+	 -1,
+	384,
+	 -1,
+	123,
+	 -1,
+	143,
+	168,
+	 -1,
+	183,
+	186,
+	 -1,
+	108,
+	 95,
+	368,
+	 -1,
+	 -1,
+	277,
+	198,
+	 -1,
+	206,
+	432,
+	 -1,
+	476,
+	 -1,
+	458,
+	 -1,
+	 -1,
+	182,
+	 -1,
+	441,
+	 -1,
+	 -1,
+	 -1,
+	115,
+	113,
+	404,
+	 -1,
+	473,
+	 -1,
+	 -1,
+	 -1,
+	490,
+	104,
+	 -1,
+	 -1,
+	450,
+	449,
+	 -1,
+	 -1,
+	 -1,
+	274,
+	 -1,
+	481,
+	111,
+	 99,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	263,
+	 93,
+	 -1,
+	117,
+	 -1,
+	 29,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	119,
+	 -1,
+	 -1,
+	426,
+	491,
+	 -1,
+	 -1,
+	205,
+	 -1,
+	237,
+	 44,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	418,
+	416,
+	 -1,
+	 -1,
+	358,
+	 -1,
+	 -1,
+	 -1,
+	 65,
+	 -1,
+	440,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  5,
+	 -1,
+	 -1,
+	 -1,
+	488,
+	 -1,
+	 -1,
+	 -1,
+	 28,
+	412,
+	 -1,
+	405,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	295,
+	 -1,
+	471,
+	362,
+	 -1,
+	 -1,
+	485,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	202,
+	 -1,
+	 -1,
+	284,
+	 -1,
+	469,
+	 -1,
+	 -1,
+	  9,
+	 24,
+	 -1,
+	 -1,
+	179,
+	 -1,
+	 -1,
+	 15,
+	 -1,
+	 -1,
+	148,
+	 -1,
+	 -1,
+	 -1,
+	341,
+	 -1,
+	 -1,
+	366,
+	209,
+	223,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  0,
+	 -1,
+	208,
+	467,
+	 -1,
+	422,
+	 -1,
+	464,
+	157,
+	 -1,
+	403,
+	 -1,
+	415,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	445,
+	 -1,
+	 -1,
+	330,
+	 -1,
+	 -1,
+	 -1,
+	462,
+	160,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 86,
+	 -1,
+	 -1,
+	 41,
+	 -1,
+	280,
+	 -1,
+	478,
+	 -1,
+	 -1,
+	 57,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	394,
+	414,
+	 -1,
+	 -1,
+	 -1,
+	140,
+	165,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	275,
+	102,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	232,
+	 -1,
+	 14,
+	 -1,
+	 -1,
+	225,
+	 -1,
+	 -1,
+	267,
+	 -1,
+	 77,
+	 -1,
+	144,
+	169,
+	 -1,
+	149,
+	 -1,
+	400,
+	 -1,
+	 -1,
+	 -1,
+	  3,
+	 -1,
+	 -1,
+	 -1,
+	468,
+	425,
+	 -1,
+	 -1,
+	470,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	456,
+	 -1,
+	158,
+	159,
+	 -1,
+	 -1,
+	146,
+	 49,
+	 -1,
+	 -1,
+	153,
+	 -1,
+	401,
+	 90,
+	0	/* base-of-table */
+};
+
+#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414)
+#error	--> term.h and comp_captab.c disagree about the <--
+#error	--> numbers of booleans, numbers and/or strings <--
+#endif
+
+static const char cap_names_text[] = \
+"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" \
+"in\0" "da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" \
+"xo\0" "nx\0" "5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" \
+"YA\0" "YB\0" "YC\0" "YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" \
+"lm\0" "sg\0" "pb\0" "vt\0" "ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" \
+"Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" "Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" \
+"Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" "Yn\0" "BT\0" "Yo\0" "Yp\0" \
+"bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" "cd\0" "ch\0" "CC\0" \
+"cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" "ll\0" "up\0" \
+"vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" "dm\0" \
+"mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \
+"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" \
+"i3\0" "if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" \
+"kL\0" "kd\0" "kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" \
+"k4\0" "k5\0" "k6\0" "k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" \
+"kH\0" "kN\0" "kP\0" "kr\0" "kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" \
+"l0\0" "l1\0" "la\0" "l2\0" "l3\0" "l4\0" "l5\0" "l6\0" "l7\0" "l8\0" \
+"l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" "DL\0" "DO\0" "IC\0" "SF\0" \
+"AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" "px\0" "ps\0" "pf\0" \
+"po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" "sc\0" "sf\0" \
+"sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" "K1\0" \
+"K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \
+"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" \
+"@3\0" "@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" \
+"%3\0" "%4\0" "%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" \
+"&3\0" "&4\0" "&5\0" "&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" \
+"*3\0" "*4\0" "*5\0" "*6\0" "*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" \
+"#3\0" "#4\0" "%a\0" "%b\0" "%c\0" "%d\0" "%e\0" "%f\0" "%g\0" "%h\0" \
+"%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" "F1\0" "F2\0" "F3\0" "F4\0" \
+"F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" "FC\0" "FD\0" "FE\0" \
+"FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" "FN\0" "FO\0" \
+"FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" "FY\0" \
+"FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \
+"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" \
+"MC\0" "ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" \
+"DI\0" "QD\0" "TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" \
+"u3\0" "u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" \
+"Ip\0" "sp\0" "Sf\0" "Sb\0" "ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" \
+"ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" "ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" \
+"ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" "ZW\0" "ZX\0" "ZY\0" "ZZ\0" \
+"Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" "Zh\0" "Zi\0" "Zj\0" \
+"Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" "Zs\0" "Zt\0" \
+"Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" "AF\0" \
+"AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \
+"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" \
+"S3\0" "S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" \
+"Xt\0" "Xv\0" "sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" \
+"dC\0" "dN\0" "nl\0" "bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" \
+"ma\0" "pt\0" "xr\0" "G2\0" "G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" \
+"GD\0" "GH\0" "GV\0" "GC\0" "ml\0" "mu\0" "bx\0" ;
+
+static name_table_data const cap_names_data[] =
+{
+	{               0,	   BOOLEAN,	  0,  -1 },
+	{               3,	   BOOLEAN,	  1,  -1 },
+	{               6,	   BOOLEAN,	  2,  -1 },
+	{               9,	   BOOLEAN,	  3,  -1 },
+	{              12,	   BOOLEAN,	  4,  -1 },
+	{              15,	   BOOLEAN,	  5,  -1 },
+	{              18,	   BOOLEAN,	  6,  -1 },
+	{              21,	   BOOLEAN,	  7,  -1 },
+	{              24,	   BOOLEAN,	  8,  -1 },
+	{              27,	   BOOLEAN,	  9,  -1 },
+	{              30,	   BOOLEAN,	 10,  -1 },
+	{              33,	   BOOLEAN,	 11,  -1 },
+	{              36,	   BOOLEAN,	 12,  -1 },
+	{              39,	   BOOLEAN,	 13,  -1 },
+	{              42,	   BOOLEAN,	 14,  -1 },
+	{              45,	   BOOLEAN,	 15,  -1 },
+	{              48,	   BOOLEAN,	 16,  -1 },
+	{              51,	   BOOLEAN,	 17,  -1 },
+	{              54,	   BOOLEAN,	 18,  -1 },
+	{              57,	   BOOLEAN,	 19,  -1 },
+	{              60,	   BOOLEAN,	 20,  -1 },
+	{              63,	   BOOLEAN,	 21,  -1 },
+	{              66,	   BOOLEAN,	 22,  -1 },
+	{              69,	   BOOLEAN,	 23,  -1 },
+	{              72,	   BOOLEAN,	 24,   1 },
+	{              75,	   BOOLEAN,	 25,  -1 },
+	{              78,	   BOOLEAN,	 26,  -1 },
+	{              81,	   BOOLEAN,	 27,  -1 },
+	{              84,	   BOOLEAN,	 28,  -1 },
+	{              87,	   BOOLEAN,	 29,  -1 },
+	{              90,	   BOOLEAN,	 30,  -1 },
+	{              93,	   BOOLEAN,	 31,  -1 },
+	{              96,	   BOOLEAN,	 32,  -1 },
+	{              99,	   BOOLEAN,	 33,  -1 },
+	{             102,	   BOOLEAN,	 34,  -1 },
+	{             105,	   BOOLEAN,	 35,  -1 },
+	{             108,	   BOOLEAN,	 36,  -1 },
+	{             111,	    NUMBER,	  0,  -1 },
+	{             114,	    NUMBER,	  1,  -1 },
+	{             117,	    NUMBER,	  2,  -1 },
+	{             120,	    NUMBER,	  3,  -1 },
+	{             123,	    NUMBER,	  4,  -1 },
+	{             126,	    NUMBER,	  5,  -1 },
+	{             129,	    NUMBER,	  6,  -1 },
+	{             132,	    NUMBER,	  7,  -1 },
+	{             135,	    NUMBER,	  8,  -1 },
+	{             138,	    NUMBER,	  9,  -1 },
+	{             141,	    NUMBER,	 10,  -1 },
+	{             144,	    NUMBER,	 11,  -1 },
+	{             147,	    NUMBER,	 12,  -1 },
+	{             150,	    NUMBER,	 13,  -1 },
+	{             153,	    NUMBER,	 14,  -1 },
+	{             156,	    NUMBER,	 15,  -1 },
+	{             159,	    NUMBER,	 16,  -1 },
+	{             162,	    NUMBER,	 17,  -1 },
+	{             165,	    NUMBER,	 18,  -1 },
+	{             168,	    NUMBER,	 19,  -1 },
+	{             171,	    NUMBER,	 20,  -1 },
+	{             174,	    NUMBER,	 21,  -1 },
+	{             177,	    NUMBER,	 22,  -1 },
+	{             180,	    NUMBER,	 23,  -1 },
+	{             183,	    NUMBER,	 24,  -1 },
+	{             186,	    NUMBER,	 25,  -1 },
+	{             189,	    NUMBER,	 26,  -1 },
+	{             192,	    NUMBER,	 27,  -1 },
+	{             195,	    NUMBER,	 28,  -1 },
+	{             198,	    NUMBER,	 29,  -1 },
+	{             201,	    NUMBER,	 30,  -1 },
+	{             204,	    NUMBER,	 31,  -1 },
+	{             207,	    NUMBER,	 32,  -1 },
+	{             210,	    STRING,	  0,  -1 },
+	{             213,	    STRING,	  1,  -1 },
+	{             216,	    STRING,	  2,  -1 },
+	{             219,	    STRING,	  3,  -1 },
+	{             222,	    STRING,	  4,  -1 },
+	{             225,	    STRING,	  5,  -1 },
+	{             228,	    STRING,	  6,  -1 },
+	{             231,	    STRING,	  7,  -1 },
+	{             234,	    STRING,	  8,  -1 },
+	{             237,	    STRING,	  9,  -1 },
+	{             240,	    STRING,	 10,  -1 },
+	{             243,	    STRING,	 11,  -1 },
+	{             246,	    STRING,	 12,  -1 },
+	{             249,	    STRING,	 13,  -1 },
+	{             252,	    STRING,	 14,  -1 },
+	{             255,	    STRING,	 15,  -1 },
+	{             258,	    STRING,	 16,  -1 },
+	{             261,	    STRING,	 17,  -1 },
+	{             264,	    STRING,	 18,  -1 },
+	{             267,	    STRING,	 19,  -1 },
+	{             270,	    STRING,	 20,  -1 },
+	{             273,	    STRING,	 21,  -1 },
+	{             276,	    STRING,	 22,  -1 },
+	{             279,	    STRING,	 23,  -1 },
+	{             282,	    STRING,	 24,  -1 },
+	{             285,	    STRING,	 25,  -1 },
+	{             288,	    STRING,	 26,  -1 },
+	{             291,	    STRING,	 27,  -1 },
+	{             294,	    STRING,	 28,  -1 },
+	{             297,	    STRING,	 29,  -1 },
+	{             300,	    STRING,	 30,  -1 },
+	{             303,	    STRING,	 31,  -1 },
+	{             306,	    STRING,	 32,  -1 },
+	{             309,	    STRING,	 33,  -1 },
+	{             312,	    STRING,	 34,  -1 },
+	{             315,	    STRING,	 35,  -1 },
+	{             318,	    STRING,	 36,  -1 },
+	{             321,	    STRING,	 37,  -1 },
+	{             324,	    STRING,	 38,  -1 },
+	{             327,	    STRING,	 39,  -1 },
+	{             330,	    STRING,	 40,  -1 },
+	{             333,	    STRING,	 41,  -1 },
+	{             336,	    STRING,	 42,  -1 },
+	{             339,	    STRING,	 43,  -1 },
+	{             342,	    STRING,	 44,  -1 },
+	{             345,	    STRING,	 45,  -1 },
+	{             348,	    STRING,	 46,  -1 },
+	{             351,	    STRING,	 47,  -1 },
+	{             354,	    STRING,	 48, 102 },
+	{             357,	    STRING,	 49,  -1 },
+	{             360,	    STRING,	 50,  -1 },
+	{             363,	    STRING,	 51,  -1 },
+	{             366,	    STRING,	 52,  -1 },
+	{             369,	    STRING,	 53,  -1 },
+	{             372,	    STRING,	 54,  -1 },
+	{             375,	    STRING,	 55,  -1 },
+	{             378,	    STRING,	 56,  -1 },
+	{             381,	    STRING,	 57,  -1 },
+	{             384,	    STRING,	 58,  -1 },
+	{             387,	    STRING,	 59,  -1 },
+	{             390,	    STRING,	 60,  -1 },
+	{             393,	    STRING,	 61,  -1 },
+	{             396,	    STRING,	 62,  -1 },
+	{             399,	    STRING,	 63,  -1 },
+	{             402,	    STRING,	 64,  -1 },
+	{             405,	    STRING,	 65,  -1 },
+	{             408,	    STRING,	 66,  -1 },
+	{             411,	    STRING,	 67,  -1 },
+	{             414,	    STRING,	 68,  -1 },
+	{             417,	    STRING,	 69,  -1 },
+	{             420,	    STRING,	 70,  -1 },
+	{             423,	    STRING,	 71,  -1 },
+	{             426,	    STRING,	 72,  -1 },
+	{             429,	    STRING,	 73,  -1 },
+	{             432,	    STRING,	 74,  -1 },
+	{             435,	    STRING,	 75,  15 },
+	{             438,	    STRING,	 76,  -1 },
+	{             441,	    STRING,	 77,  -1 },
+	{             444,	    STRING,	 78,  -1 },
+	{             447,	    STRING,	 79,  -1 },
+	{             450,	    STRING,	 80,  -1 },
+	{             453,	    STRING,	 81,  -1 },
+	{             456,	    STRING,	 82,  -1 },
+	{             459,	    STRING,	 83,  -1 },
+	{             462,	    STRING,	 84,  -1 },
+	{             465,	    STRING,	 85,  -1 },
+	{             468,	    STRING,	 86,  -1 },
+	{             471,	    STRING,	 87,  -1 },
+	{             474,	    STRING,	 88,  -1 },
+	{             477,	    STRING,	 89,  -1 },
+	{             480,	    STRING,	 90,  -1 },
+	{             483,	    STRING,	 91,  -1 },
+	{             486,	    STRING,	 92,  35 },
+	{             489,	    STRING,	 93,  -1 },
+	{             492,	    STRING,	 94,  -1 },
+	{             495,	    STRING,	 95,  -1 },
+	{             498,	    STRING,	 96,  -1 },
+	{             501,	    STRING,	 97,  -1 },
+	{             504,	    STRING,	 98,  -1 },
+	{             507,	    STRING,	 99,  -1 },
+	{             510,	    STRING,	100,  -1 },
+	{             513,	    STRING,	101,  -1 },
+	{             516,	    STRING,	102, 120 },
+	{             519,	    STRING,	103,  -1 },
+	{             522,	    STRING,	104,  -1 },
+	{             525,	    STRING,	105,  -1 },
+	{             528,	    STRING,	106,  -1 },
+	{             531,	    STRING,	107,  -1 },
+	{             534,	    STRING,	108,  -1 },
+	{             537,	    STRING,	109,  -1 },
+	{             540,	    STRING,	110,  -1 },
+	{             543,	    STRING,	111,  -1 },
+	{             546,	    STRING,	112, 111 },
+	{             549,	    STRING,	113,  -1 },
+	{             552,	    STRING,	114,  -1 },
+	{             555,	    STRING,	115, 161 },
+	{             558,	    STRING,	116, 163 },
+	{             561,	    STRING,	117,  -1 },
+	{             564,	    STRING,	118, 170 },
+	{             567,	    STRING,	119,  -1 },
+	{             570,	    STRING,	120, 166 },
+	{             573,	    STRING,	121,  -1 },
+	{             576,	    STRING,	122,  -1 },
+	{             579,	    STRING,	123,  -1 },
+	{             582,	    STRING,	124,  -1 },
+	{             585,	    STRING,	125,  -1 },
+	{             588,	    STRING,	126,  -1 },
+	{             591,	    STRING,	127,  -1 },
+	{             594,	    STRING,	128,  -1 },
+	{             597,	    STRING,	129,  -1 },
+	{             600,	    STRING,	130,  -1 },
+	{             603,	    STRING,	131,  -1 },
+	{             606,	    STRING,	132,  -1 },
+	{             609,	    STRING,	133,  -1 },
+	{             612,	    STRING,	134,  -1 },
+	{             615,	    STRING,	135,  -1 },
+	{             618,	    STRING,	136,  -1 },
+	{             621,	    STRING,	137,  -1 },
+	{             624,	    STRING,	138,  -1 },
+	{             627,	    STRING,	139,  -1 },
+	{             630,	    STRING,	140,  -1 },
+	{             633,	    STRING,	141,  -1 },
+	{             636,	    STRING,	142,  -1 },
+	{             639,	    STRING,	143,  -1 },
+	{             642,	    STRING,	144,  -1 },
+	{             645,	    STRING,	145,  37 },
+	{             648,	    STRING,	146,  -1 },
+	{             651,	    STRING,	147, 165 },
+	{             654,	    STRING,	148,  -1 },
+	{             657,	    STRING,	149, 117 },
+	{             660,	    STRING,	150,  16 },
+	{             663,	    STRING,	151,  -1 },
+	{             666,	    STRING,	152,  -1 },
+	{             669,	    STRING,	153,  -1 },
+	{             672,	    STRING,	154, 126 },
+	{             675,	    STRING,	155,  -1 },
+	{             678,	    STRING,	156,  -1 },
+	{             681,	    STRING,	157,  -1 },
+	{             684,	    STRING,	158,  -1 },
+	{             687,	    STRING,	159,  -1 },
+	{             690,	    STRING,	160,  -1 },
+	{             693,	    STRING,	161,  -1 },
+	{             696,	    STRING,	162,  -1 },
+	{             699,	    STRING,	163,  -1 },
+	{             702,	    STRING,	164, 183 },
+	{             705,	    STRING,	165,  -1 },
+	{             708,	    STRING,	166,  -1 },
+	{             711,	    STRING,	167, 116 },
+	{             714,	    STRING,	168,  -1 },
+	{             717,	    STRING,	169,  97 },
+	{             720,	    STRING,	170, 109 },
+	{             723,	    STRING,	171,  -1 },
+	{             726,	    STRING,	172,  -1 },
+	{             729,	    STRING,	173, 100 },
+	{             732,	    STRING,	174,  13 },
+	{             735,	    STRING,	175,  -1 },
+	{             738,	    STRING,	176, 118 },
+	{             741,	    STRING,	177,  96 },
+	{             744,	    STRING,	178,  -1 },
+	{             747,	    STRING,	179,  87 },
+	{             750,	    STRING,	180,  -1 },
+	{             753,	    STRING,	181,  -1 },
+	{             756,	    STRING,	182,  -1 },
+	{             759,	    STRING,	183,  -1 },
+	{             762,	    STRING,	184,  -1 },
+	{             765,	    STRING,	185,  -1 },
+	{             768,	    STRING,	186,  -1 },
+	{             771,	    STRING,	187,  -1 },
+	{             774,	    STRING,	188, 196 },
+	{             777,	    STRING,	189,  -1 },
+	{             780,	    STRING,	190,  -1 },
+	{             783,	    STRING,	191, 195 },
+	{             786,	    STRING,	192,  -1 },
+	{             789,	    STRING,	193,  -1 },
+	{             792,	    STRING,	194,  -1 },
+	{             795,	    STRING,	195,  -1 },
+	{             798,	    STRING,	196,  -1 },
+	{             801,	    STRING,	197,  -1 },
+	{             804,	    STRING,	198,  -1 },
+	{             807,	    STRING,	199, 131 },
+	{             810,	    STRING,	200, 158 },
+	{             813,	    STRING,	201,  -1 },
+	{             816,	    STRING,	202,  -1 },
+	{             819,	    STRING,	203,  -1 },
+	{             822,	    STRING,	204,  -1 },
+	{             825,	    STRING,	205,  -1 },
+	{             828,	    STRING,	206,  -1 },
+	{             831,	    STRING,	207,  -1 },
+	{             834,	    STRING,	208,  -1 },
+	{             837,	    STRING,	209,  -1 },
+	{             840,	    STRING,	210,  -1 },
+	{             843,	    STRING,	211,  -1 },
+	{             846,	    STRING,	212, 122 },
+	{             849,	    STRING,	213,  -1 },
+	{             852,	    STRING,	214,  -1 },
+	{             855,	    STRING,	215,  -1 },
+	{             858,	    STRING,	216,  -1 },
+	{             861,	    STRING,	217,  46 },
+	{             864,	    STRING,	218,  39 },
+	{             867,	    STRING,	219,  -1 },
+	{             870,	    STRING,	220,  -1 },
+	{             873,	    STRING,	221,  88 },
+	{             876,	    STRING,	222,  40 },
+	{             879,	    STRING,	223,  -1 },
+	{             882,	    STRING,	224,  -1 },
+	{             885,	    STRING,	225,  47 },
+	{             888,	    STRING,	226,  -1 },
+	{             891,	    STRING,	227,  -1 },
+	{             894,	    STRING,	228,  -1 },
+	{             897,	    STRING,	229,  -1 },
+	{             900,	    STRING,	230,  53 },
+	{             903,	    STRING,	231,  54 },
+	{             906,	    STRING,	232,  55 },
+	{             909,	    STRING,	233,  56 },
+	{             912,	    STRING,	234,  57 },
+	{             915,	    STRING,	235,  58 },
+	{             918,	    STRING,	236,  59 },
+	{             921,	    STRING,	237,  60 },
+	{             924,	    STRING,	238,  61 },
+	{             927,	    STRING,	239,  62 },
+	{             930,	    STRING,	240,  63 },
+	{             933,	    STRING,	241,  64 },
+	{             936,	    STRING,	242,  65 },
+	{             939,	    STRING,	243,  66 },
+	{             942,	    STRING,	244,  68 },
+	{             945,	    STRING,	245,  69 },
+	{             948,	    STRING,	246,  -1 },
+	{             951,	    STRING,	247,  -1 },
+	{             954,	    STRING,	248,  -1 },
+	{             957,	    STRING,	249,  -1 },
+	{             960,	    STRING,	250,  -1 },
+	{             963,	    STRING,	251,  -1 },
+	{             966,	    STRING,	252,  -1 },
+	{             969,	    STRING,	253,  -1 },
+	{             972,	    STRING,	254,  -1 },
+	{             975,	    STRING,	255,  -1 },
+	{             978,	    STRING,	256,  -1 },
+	{             981,	    STRING,	257,   7 },
+	{             984,	    STRING,	258,  94 },
+	{             987,	    STRING,	259,  -1 },
+	{             990,	    STRING,	260,  -1 },
+	{             993,	    STRING,	261,  -1 },
+	{             996,	    STRING,	262,  -1 },
+	{             999,	    STRING,	263,  -1 },
+	{            1002,	    STRING,	264,  -1 },
+	{            1005,	    STRING,	265, 184 },
+	{            1008,	    STRING,	266,  29 },
+	{            1011,	    STRING,	267,  -1 },
+	{            1014,	    STRING,	268,  -1 },
+	{            1017,	    STRING,	269,  -1 },
+	{            1020,	    STRING,	270,  -1 },
+	{            1023,	    STRING,	271,  -1 },
+	{            1026,	    STRING,	272,  -1 },
+	{            1029,	    STRING,	273, 257 },
+	{            1032,	    STRING,	274,  -1 },
+	{            1035,	    STRING,	275,  -1 },
+	{            1038,	    STRING,	276,  -1 },
+	{            1041,	    STRING,	277,   4 },
+	{            1044,	    STRING,	278,  -1 },
+	{            1047,	    STRING,	279,  -1 },
+	{            1050,	    STRING,	280,  -1 },
+	{            1053,	    STRING,	281,  -1 },
+	{            1056,	    STRING,	282,  -1 },
+	{            1059,	    STRING,	283,  -1 },
+	{            1062,	    STRING,	284, 229 },
+	{            1065,	    STRING,	285,  -1 },
+	{            1068,	    STRING,	286,  -1 },
+	{            1071,	    STRING,	287,  -1 },
+	{            1074,	    STRING,	288,  -1 },
+	{            1077,	    STRING,	289,  -1 },
+	{            1080,	    STRING,	290,  -1 },
+	{            1083,	    STRING,	291,  -1 },
+	{            1086,	    STRING,	292,  -1 },
+	{            1089,	    STRING,	293,  -1 },
+	{            1092,	    STRING,	294,  -1 },
+	{            1095,	    STRING,	295,  -1 },
+	{            1098,	    STRING,	296,  -1 },
+	{            1101,	    STRING,	297, 142 },
+	{            1104,	    STRING,	298,  -1 },
+	{            1107,	    STRING,	299,  -1 },
+	{            1110,	    STRING,	300, 149 },
+	{            1113,	    STRING,	301,  -1 },
+	{            1116,	    STRING,	302,  -1 },
+	{            1119,	    STRING,	303,  -1 },
+	{            1122,	    STRING,	304,  -1 },
+	{            1125,	    STRING,	305,  -1 },
+	{            1128,	    STRING,	306,  -1 },
+	{            1131,	    STRING,	307,  -1 },
+	{            1134,	    STRING,	308,  -1 },
+	{            1137,	    STRING,	309,  48 },
+	{            1140,	    STRING,	310, 247 },
+	{            1143,	    STRING,	311, 238 },
+	{            1146,	    STRING,	312, 239 },
+	{            1149,	    STRING,	313, 240 },
+	{            1152,	    STRING,	314, 241 },
+	{            1155,	    STRING,	315, 242 },
+	{            1158,	    STRING,	316, 243 },
+	{            1161,	    STRING,	317, 244 },
+	{            1164,	    STRING,	318, 245 },
+	{            1167,	    STRING,	319, 246 },
+	{            1170,	    STRING,	320,  -1 },
+	{            1173,	    STRING,	321, 172 },
+	{            1176,	    STRING,	322,  -1 },
+	{            1179,	    STRING,	323, 171 },
+	{            1182,	    STRING,	324, 103 },
+	{            1185,	    STRING,	325,  -1 },
+	{            1188,	    STRING,	326, 104 },
+	{            1191,	    STRING,	327,  14 },
+	{            1194,	    STRING,	328,  -1 },
+	{            1197,	    STRING,	329,  -1 },
+	{            1200,	    STRING,	330,  -1 },
+	{            1203,	    STRING,	331,  -1 },
+	{            1206,	    STRING,	332,  -1 },
+	{            1209,	    STRING,	333,  -1 },
+	{            1212,	    STRING,	334,  -1 },
+	{            1215,	    STRING,	335,  -1 },
+	{            1218,	    STRING,	336,  -1 },
+	{            1221,	    STRING,	337,  -1 },
+	{            1224,	    STRING,	338,  -1 },
+	{            1227,	    STRING,	339,  -1 },
+	{            1230,	    STRING,	340,  -1 },
+	{            1233,	    STRING,	341,  -1 },
+	{            1236,	    STRING,	342,  -1 },
+	{            1239,	    STRING,	343,  -1 },
+	{            1242,	    STRING,	344, 208 },
+	{            1245,	    STRING,	345,  -1 },
+	{            1248,	    STRING,	346,  -1 },
+	{            1251,	    STRING,	347,  -1 },
+	{            1254,	    STRING,	348,  -1 },
+	{            1257,	    STRING,	349,  -1 },
+	{            1260,	    STRING,	350,  -1 },
+	{            1263,	    STRING,	351,  -1 },
+	{            1266,	    STRING,	352,  -1 },
+	{            1269,	    STRING,	353, 272 },
+	{            1272,	    STRING,	354, 273 },
+	{            1275,	    STRING,	355, 387 },
+	{            1278,	    STRING,	356,  -1 },
+	{            1281,	    STRING,	357,  -1 },
+	{            1284,	    STRING,	358,  -1 },
+	{            1287,	    STRING,	359,  -1 },
+	{            1290,	    STRING,	360,  -1 },
+	{            1293,	    STRING,	361,  -1 },
+	{            1296,	    STRING,	362,  -1 },
+	{            1299,	    STRING,	363,  -1 },
+	{            1302,	    STRING,	364,  -1 },
+	{            1305,	    STRING,	365,  67 },
+	{            1308,	    STRING,	366,  -1 },
+	{            1311,	    STRING,	367,  -1 },
+	{            1314,	    STRING,	368, 341 },
+	{            1317,	    STRING,	369,  -1 },
+	{            1320,	    STRING,	370,  -1 },
+	{            1323,	    STRING,	371, 274 },
+	{            1326,	    STRING,	372,  -1 },
+	{            1329,	    STRING,	373,  -1 },
+	{            1332,	    STRING,	374,  -1 },
+	{            1335,	    STRING,	375,  -1 },
+	{            1338,	    STRING,	376,  -1 },
+	{            1341,	    STRING,	377,  -1 },
+	{            1344,	    STRING,	378,  -1 },
+	{            1347,	    STRING,	379,  -1 },
+	{            1350,	    STRING,	380,  -1 },
+	{            1353,	    STRING,	381, 357 },
+	{            1356,	    STRING,	382, 358 },
+	{            1359,	    STRING,	383, 359 },
+	{            1362,	    STRING,	384, 360 },
+	{            1365,	    STRING,	385, 361 },
+	{            1368,	    STRING,	386,  -1 },
+	{            1371,	    STRING,	387,  -1 },
+	{            1374,	    STRING,	388,  -1 },
+	{            1377,	    STRING,	389,  -1 },
+	{            1380,	    STRING,	390,  -1 },
+	{            1383,	    STRING,	391,  -1 },
+	{            1386,	    STRING,	392,  -1 },
+	{            1389,	    STRING,	393,  -1 },
+	{            1392,	    STRING,	394, 390 },
+	{            1395,	    STRING,	395,  -1 },
+	{            1398,	    NUMBER,	 33,  -1 },
+	{            1401,	   BOOLEAN,	 37,  -1 },
+	{            1404,	   BOOLEAN,	 38,  -1 },
+	{            1407,	   BOOLEAN,	 39, 248 },
+	{            1410,	    NUMBER,	 34,  -1 },
+	{            1413,	    NUMBER,	 35, 203 },
+	{            1416,	    STRING,	396,  -1 },
+	{            1419,	    STRING,	397,  -1 },
+	{            1422,	   BOOLEAN,	 40, 439 },
+	{            1425,	   BOOLEAN,	 41,  -1 },
+	{            1428,	    NUMBER,	 36,  -1 },
+	{            1431,	    NUMBER,	 37,  -1 },
+	{            1434,	    NUMBER,	 38,  -1 },
+	{            1437,	    STRING,	398,  -1 },
+	{            1440,	    STRING,	399, 379 },
+	{            1443,	   BOOLEAN,	 42,  -1 },
+	{            1446,	   BOOLEAN,	 43,  -1 },
+	{            1449,	    STRING,	400, 386 },
+	{            1452,	    STRING,	401, 425 },
+	{            1455,	    STRING,	402, 385 },
+	{            1458,	    STRING,	403, 388 },
+	{            1461,	    STRING,	404, 412 },
+	{            1464,	    STRING,	405, 406 },
+	{            1467,	    STRING,	406, 415 },
+	{            1470,	    STRING,	407,  -1 },
+	{            1473,	    STRING,	408, 402 },
+	{            1476,	    STRING,	409, 416 },
+	{            1479,	    STRING,	410,  -1 },
+	{            1482,	    STRING,	411, 464 },
+	{            1485,	    STRING,	412, 399 },
+	{            1488,	    STRING,	413,  -1 } 
+};
+
+static struct name_table_entry *_nc_cap_table = 0;
+
+static const short _nc_cap_hash_table[995] =
+{
+	253,
+	 -1,
+	 45,
+	211,
+	263,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	449,
+	457,
+	311,
+	411,
+	 -1,
+	132,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	123,
+	 71,
+	 75,
+	 92,
+	427,
+	233,
+	 -1,
+	336,
+	 -1,
+	 -1,
+	370,
+	291,
+	494,
+	472,
+	138,
+	186,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 19,
+	193,
+	436,
+	431,
+	453,
+	 -1,
+	315,
+	489,
+	349,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	353,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	124,
+	 -1,
+	 -1,
+	 -1,
+	394,
+	 -1,
+	367,
+	167,
+	 -1,
+	191,
+	371,
+	 -1,
+	 89,
+	 -1,
+	 -1,
+	 -1,
+	363,
+	460,
+	319,
+	419,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 70,
+	 74,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 38,
+	 -1,
+	128,
+	 -1,
+	398,
+	 -1,
+	 -1,
+	481,
+	 -1,
+	 -1,
+	202,
+	 -1,
+	 28,
+	 43,
+	 -1,
+	 17,
+	 -1,
+	 -1,
+	444,
+	423,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	496,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	430,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	296,
+	 -1,
+	 21,
+	 -1,
+	187,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	321,
+	276,
+	 -1,
+	 -1,
+	 31,
+	375,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	429,
+	476,
+	 -1,
+	 -1,
+	 -1,
+	300,
+	400,
+	 -1,
+	218,
+	 -1,
+	 -1,
+	227,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 11,
+	285,
+	179,
+	 -1,
+	325,
+	280,
+	 -1,
+	224,
+	162,
+	480,
+	 -1,
+	 -1,
+	 51,
+	 -1,
+	 -1,
+	201,
+	204,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 22,
+	 -1,
+	304,
+	404,
+	 -1,
+	154,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	108,
+	 -1,
+	 76,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	329,
+	284,
+	 -1,
+	270,
+	 84,
+	383,
+	250,
+	426,
+	 -1,
+	 -1,
+	260,
+	113,
+	110,
+	114,
+	 86,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	308,
+	408,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	433,
+	 -1,
+	112,
+	230,
+	 -1,
+	333,
+	428,
+	 -1,
+	223,
+	288,
+	484,
+	254,
+	 -1,
+	 -1,
+	210,
+	264,
+	 -1,
+	 98,
+	 -1,
+	 83,
+	471,
+	 -1,
+	450,
+	 -1,
+	312,
+	487,
+	 -1,
+	151,
+	 -1,
+	 -1,
+	 -1,
+	342,
+	 24,
+	 -1,
+	 80,
+	 99,
+	 -1,
+	234,
+	 -1,
+	337,
+	101,
+	 -1,
+	  8,
+	292,
+	391,
+	 -1,
+	139,
+	164,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	194,
+	437,
+	 -1,
+	454,
+	 -1,
+	316,
+	492,
+	 -1,
+	155,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	395,
+	 -1,
+	143,
+	168,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	364,
+	 -1,
+	320,
+	420,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	207,
+	 -1,
+	 -1,
+	157,
+	447,
+	495,
+	 -1,
+	137,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	440,
+	445,
+	424,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 79,
+	175,
+	 -1,
+	297,
+	493,
+	 23,
+	178,
+	 -1,
+	 -1,
+	 -1,
+	340,
+	 52,
+	 -1,
+	 -1,
+	 -1,
+	346,
+	344,
+	 -1,
+	322,
+	277,
+	 -1,
+	 -1,
+	 32,
+	376,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	373,
+	 -1,
+	470,
+	 -1,
+	 -1,
+	 -1,
+	301,
+	401,
+	 -1,
+	127,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	339,
+	 12,
+	 -1,
+	 -1,
+	 -1,
+	326,
+	281,
+	348,
+	125,
+	 36,
+	380,
+	343,
+	 -1,
+	 42,
+	 -1,
+	267,
+	 -1,
+	 -1,
+	372,
+	115,
+	 -1,
+	  2,
+	345,
+	 -1,
+	305,
+	405,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	237,
+	 -1,
+	330,
+	121,
+	 -1,
+	271,
+	 -1,
+	384,
+	251,
+	 -1,
+	189,
+	 -1,
+	261,
+	199,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	177,
+	 -1,
+	309,
+	409,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	226,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	231,
+	352,
+	334,
+	 -1,
+	 -1,
+	 -1,
+	289,
+	486,
+	255,
+	135,
+	160,
+	212,
+	265,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	434,
+	 -1,
+	451,
+	 -1,
+	313,
+	413,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	214,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	235,
+	  6,
+	338,
+	 10,
+	 -1,
+	478,
+	293,
+	392,
+	 -1,
+	140,
+	217,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	347,
+	455,
+	459,
+	317,
+	417,
+	 -1,
+	134,
+	 -1,
+	 -1,
+	 -1,
+	 49,
+	 -1,
+	 -1,
+	 72,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	153,
+	 -1,
+	396,
+	 -1,
+	144,
+	169,
+	 -1,
+	 -1,
+	200,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	482,
+	365,
+	461,
+	442,
+	421,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	197,
+	432,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	446,
+	441,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 18,
+	 -1,
+	 -1,
+	 -1,
+	298,
+	490,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 26,
+	 -1,
+	 -1,
+	351,
+	 -1,
+	 -1,
+	 -1,
+	323,
+	278,
+	 -1,
+	369,
+	 33,
+	377,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	302,
+	491,
+	 -1,
+	129,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	216,
+	473,
+	 27,
+	 91,
+	107,
+	 -1,
+	 -1,
+	327,
+	282,
+	 -1,
+	268,
+	 -1,
+	381,
+	469,
+	368,
+	174,
+	 -1,
+	258,
+	198,
+	 -1,
+	206,
+	180,
+	 -1,
+	 -1,
+	176,
+	 -1,
+	306,
+	488,
+	 -1,
+	150,
+	 -1,
+	 -1,
+	 -1,
+	438,
+	475,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	228,
+	 -1,
+	331,
+	 -1,
+	 -1,
+	 -1,
+	286,
+	485,
+	252,
+	 -1,
+	 -1,
+	209,
+	262,
+	 41,
+	 -1,
+	466,
+	 -1,
+	 -1,
+	 -1,
+	448,
+	 -1,
+	310,
+	410,
+	 -1,
+	130,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 25,
+	 -1,
+	 -1,
+	463,
+	 50,
+	232,
+	 -1,
+	335,
+	 -1,
+	 -1,
+	 -1,
+	290,
+	389,
+	256,
+	136,
+	185,
+	213,
+	266,
+	 -1,
+	 -1,
+	 -1,
+	192,
+	435,
+	 -1,
+	452,
+	458,
+	314,
+	414,
+	 -1,
+	152,
+	 -1,
+	 -1,
+	 -1,
+	474,
+	 -1,
+	 -1,
+	215,
+	 81,
+	  5,
+	236,
+	 -1,
+	 82,
+	 -1,
+	 -1,
+	479,
+	294,
+	393,
+	 -1,
+	141,
+	190,
+	 -1,
+	 -1,
+	105,
+	 -1,
+	 -1,
+	 -1,
+	477,
+	 20,
+	362,
+	 -1,
+	318,
+	418,
+	 -1,
+	156,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 95,
+	467,
+	 73,
+	 93,
+	220,
+	219,
+	 -1,
+	  9,
+	119,
+	 -1,
+	159,
+	 -1,
+	397,
+	468,
+	145,
+	188,
+	 -1,
+	465,
+	 -1,
+	205,
+	106,
+	 90,
+	 44,
+	  3,
+	366,
+	 -1,
+	443,
+	422,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  0,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	295,
+	 -1,
+	173,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	355,
+	 -1,
+	222,
+	221,
+	 -1,
+	 -1,
+	275,
+	356,
+	 -1,
+	 30,
+	374,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	225,
+	 -1,
+	 -1,
+	299,
+	 -1,
+	 -1,
+	148,
+	 -1,
+	 -1,
+	181,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	462,
+	 -1,
+	 -1,
+	 -1,
+	324,
+	279,
+	 -1,
+	 -1,
+	 34,
+	378,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	350,
+	 -1,
+	303,
+	403,
+	 -1,
+	133,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 77,
+	 -1,
+	182,
+	 -1,
+	 -1,
+	328,
+	283,
+	 -1,
+	269,
+	 -1,
+	382,
+	249,
+	 -1,
+	 -1,
+	 -1,
+	259,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 85,
+	 -1,
+	456,
+	307,
+	407,
+	 -1,
+	147,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 78,
+	 -1,
+	 -1,
+	354,
+	 -1,
+	332,
+	 -1,
+	 -1,
+	146,
+	287,
+	483,
+	0	/* base-of-table */
+};
+
+#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414)
+#error	--> term.h and comp_captab.c disagree about the <--
+#error	--> numbers of booleans, numbers and/or strings <--
+#endif
+
+/* generated by MKcaptab.awk capalias(1) */
+
+static struct alias *_nc_capalias_table = 0;
+
+static const char capalias_text[] = "\
+sb\0sr\0BSD\0\
+BO\0mr\0AT&T\0\
+CI\0vi\0AT&T\0\
+CV\0ve\0AT&T\0\
+DS\0mh\0AT&T\0\
+FE\0LF\0AT&T\0\
+FL\0LO\0AT&T\0\
+XS\0mk\0AT&T\0\
+EE\0mh\0XENIX\0\
+GE\0ae\0XENIX\0\
+GS\0as\0XENIX\0\
+CF\0vi\0XENIX\0\
+CO\0ve\0XENIX\0\
+EN\0@7\0XENIX\0\
+HM\0kh\0XENIX\0\
+LD\0kL\0XENIX\0\
+PD\0kN\0XENIX\0\
+PN\0po\0XENIX\0\
+PS\0pf\0XENIX\0\
+PU\0kP\0XENIX\0\
+RT\0@8\0XENIX\0\
+UP\0ku\0XENIX\0\
+G6\0XENIX\0\
+G7\0XENIX\0\
+G5\0XENIX\0\
+G8\0XENIX\0\
+Gr\0XENIX\0\
+Gr\0XENIX\0\
+Gu\0XENIX\0\
+Gd\0XENIX\0\
+Gh\0XENIX\0\
+Gv\0XENIX\0\
+Gc\0XENIX\0\
+GG\0XENIX\0\
+kq\0%1\0IBM\0\
+HS\0mh\0IRIS\0\
+KA\0k;\0Tek\0\
+KB\0F1\0Tek\0\
+KC\0F2\0Tek\0\
+KD\0F3\0Tek\0\
+KE\0F4\0Tek\0\
+KF\0F5\0Tek\0\
+BC\0Sb\0Tek\0\
+FC\0Sf\0Tek\0\
+";
+
+static const alias_table_data capalias_data[] = {
+	{    0,     3,     6},	 /* scroll */
+	{   10,    13,    16},	 /* enter_reverse_mode */
+	{   21,    24,    27},	 /* cursor_invisible */
+	{   32,    35,    38},	 /* cursor_normal */
+	{   43,    46,    49},	 /* enter_dim_mode */
+	{   54,    57,    60},	 /* label_on */
+	{   65,    68,    71},	 /* label_off */
+	{   76,    79,    82},	 /* enter_secure_mode */
+	{   87,    90,    93},	 /* exit_attribute_mode */
+	{   99,   102,   105},	 /* exit_alt_charset_mode */
+	{  111,   114,   117},	 /* enter_alt_charset_mode */
+	{  123,   126,   129},	 /* cursor_invis */
+	{  135,   138,   141},	 /* cursor_normal */
+	{  147,   150,   153},	 /* key_end */
+	{  159,   162,   165},	 /* key_home */
+	{  171,   174,   177},	 /* key_dl */
+	{  183,   186,   189},	 /* key_npage */
+	{  195,   198,   201},	 /* prtr_off */
+	{  207,   210,   213},	 /* prtr_on */
+	{  219,   222,   225},	 /* key_ppage */
+	{  231,   234,   237},	 /* kent */
+	{  243,   246,   249},	 /* kcuu1 */
+	{  255,    -1,   258},	 /* double-ACS_ULCORNER */
+	{  264,    -1,   267},	 /* double-ACS_LLCORNER */
+	{  273,    -1,   276},	 /* double-ACS_URCORNER */
+	{  282,    -1,   285},	 /* double-ACS_LRCORNER */
+	{  291,    -1,   294},	 /* double-ACS_LTEE */
+	{  300,    -1,   303},	 /* double-ACS_RTEE */
+	{  309,    -1,   312},	 /* double-ACS_BTEE */
+	{  318,    -1,   321},	 /* double */
+	{  327,    -1,   330},	 /* double-ACS_HLINE */
+	{  336,    -1,   339},	 /* double-ACS_VLINE */
+	{  345,    -1,   348},	 /* double-ACS_PLUS */
+	{  354,    -1,   357},	 /* acs-glitch */
+	{  363,   366,   369},	 /* key_help */
+	{  373,   376,   379},	 /* enter_dim_mode */
+	{  384,   387,   390},	 /* key_f10 */
+	{  394,   397,   400},	 /* key_f11 */
+	{  404,   407,   410},	 /* key_f12 */
+	{  414,   417,   420},	 /* key_f13 */
+	{  424,   427,   430},	 /* key_f14 */
+	{  434,   437,   440},	 /* key_f15 */
+	{  444,   447,   450},	 /* set_background */
+	{  454,   457,   460},	 /* set_foreground */
+};
+
+/* generated by MKcaptab.awk infoalias(1) */
+
+static struct alias *_nc_infoalias_table = 0;
+
+static const char infoalias_text[] = "\
+font0\0s0ds\0IBM\0\
+font1\0s1ds\0IBM\0\
+font2\0s2ds\0IBM\0\
+font3\0s3ds\0IBM\0\
+kbtab\0kcbt\0IBM\0\
+ksel\0kslt\0IBM\0\
+";
+
+static const alias_table_data infoalias_data[] = {
+	{    0,     6,    11},	 /* set0_des_seq */
+	{   15,    21,    26},	 /* set1_des_seq */
+	{   30,    36,    41},	 /* set2_des_seq */
+	{   45,    51,    56},	 /* set3_des_seq */
+	{   60,    66,    71},	 /* key_backtab */
+	{   75,    80,    85},	 /* key_select */
+};
+
+
+#if 1
+static void
+next_string(const char *strings, unsigned *offset)
+{
+	*offset += strlen(strings + *offset) + 1;
+}
+
+static const struct name_table_entry *
+_nc_build_names(struct name_table_entry **actual,
+		const name_table_data *source,
+		const char *strings)
+{
+	if (*actual == 0) {
+		*actual = typeCalloc(struct name_table_entry, CAPTABSIZE);
+		if (*actual != 0) {
+			unsigned n;
+			unsigned len = 0;
+			for (n = 0; n < CAPTABSIZE; ++n) {
+				(*actual)[n].nte_name = strings + len;
+				(*actual)[n].nte_type = source[n].nte_type;
+				(*actual)[n].nte_index = source[n].nte_index;
+				(*actual)[n].nte_link = source[n].nte_link;
+				next_string(strings, &len);
+			}
+		}
+	}
+	return *actual;
+}
+
+#define add_alias(field) \
+	if (source[n].field >= 0) { \
+		(*actual)[n].field = strings + source[n].field; \
+	}
+
+static const struct alias *
+_nc_build_alias(struct alias **actual,
+		const alias_table_data *source,
+		const char *strings,
+		unsigned tablesize)
+{
+	if (*actual == 0) {
+		*actual = typeCalloc(struct alias, tablesize + 1);
+		if (*actual != 0) {
+			unsigned n;
+			for (n = 0; n < tablesize; ++n) {
+				add_alias(from);
+				add_alias(to);
+				add_alias(source);
+			}
+		}
+	}
+	return *actual;
+}
+
+#define build_names(root) _nc_build_names(&_nc_##root##_table, \
+					  root##_names_data, \
+					  root##_names_text)
+#define build_alias(root) _nc_build_alias(&_nc_##root##alias_table, \
+					  root##alias_data, \
+					  root##alias_text, \
+					  SIZEOF(root##alias_data))
+#else
+#define build_names(root) _nc_ ## root ## _table
+#define build_alias(root) _nc_ ## root ## alias_table
+#endif
+
+NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap)
+{
+	return termcap ? build_names(cap) : build_names(info) ;
+}
+
+NCURSES_EXPORT(const short *) _nc_get_hash_table (bool termcap)
+{
+	return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
+}
+
+NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap)
+{
+	return termcap ? build_alias(cap) : build_alias(info) ;
+}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void) _nc_comp_captab_leaks(void)
+{
+#if 1
+	FreeIfNeeded(_nc_cap_table);
+	FreeIfNeeded(_nc_info_table);
+	FreeIfNeeded(_nc_capalias_table);
+	FreeIfNeeded(_nc_infoalias_table);
+#endif
+}
+#endif /* NO_LEAKS */
diff --git a/ncurses/expanded.c b/ncurses/expanded.c
new file mode 100644
index 0000000..d96ddef
--- /dev/null
+++ b/ncurses/expanded.c
@@ -0,0 +1,27 @@
+/* generated by MKexpanded.sh */
+#include <curses.priv.h>
+#include <term.h>
+#if NCURSES_EXPANDED
+ void _nc_toggle_attr_on (attr_t *S, attr_t at)
+{
+ { if (PAIR_NUMBER(at) > 0) { (*S) = ((*S) & ALL_BUT_COLOR) | (at); } else { (*S) |= (at); } ;};
+}
+ void _nc_toggle_attr_off (attr_t *S, attr_t at)
+{
+ { if (PAIR_NUMBER(at) > 0) { (*S) &= ~(at|((((1UL) << 8) - 1UL) << ((0) + 8))); } else { (*S) &= ~(at); } ;};
+}
+ int _nc_DelCharCost (int count)
+{
+ return ((cur_term->type. Strings[105] != 0) ? SP->_dch_cost : ((cur_term->type. Strings[21] != 0) ? (SP->_dch1_cost * count) : 1000000));
+}
+ int _nc_InsCharCost (int count)
+{
+ return ((cur_term->type. Strings[108] != 0) ? SP->_ich_cost : ((cur_term->type. Strings[31] && cur_term->type. Strings[42]) ? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) : ((cur_term->type. Strings[52] != 0) ? ((SP->_ich1_cost + SP->_ip_cost) * count) : 1000000)));
+}
+ void _nc_UpdateAttrs (chtype c)
+{
+ if (!((((*((SP)->_current_attr))) & (chtype)((~(1UL - 1UL)) << ((0) + 8))) == ((c) & (chtype)((~(1UL - 1UL)) << ((0) + 8))))) vidattr(((c) & (chtype)((~(1UL - 1UL)) << ((0) + 8))));;
+}
+#else /* ! NCURSES_EXPANDED */
+NCURSES_EXPORT(void) _nc_expanded (void) { }
+#endif /* NCURSES_EXPANDED */
diff --git a/ncurses/fallback.c b/ncurses/fallback.c
new file mode 100644
index 0000000..a94e4ae
--- /dev/null
+++ b/ncurses/fallback.c
@@ -0,0 +1,12 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!  It is generated by MKfallback.sh.
+ */
+
+#include <curses.priv.h>
+#include <term.h>
+
+NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *name GCC_UNUSED)
+{
+	/* the fallback list is empty */
+	return((TERMTYPE *)0);
+}
diff --git a/ncurses/init_keytry.h b/ncurses/init_keytry.h
new file mode 100644
index 0000000..c89150d
--- /dev/null
+++ b/ncurses/init_keytry.h
@@ -0,0 +1,162 @@
+#ifndef NCU_KEYS_H
+#define NCU_KEYS_H 1
+
+/* This file was generated by MAKE_KEYS */
+
+#if BROKEN_LINKER
+static
+#endif
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {
+	{  139, KEY_A1           },	/* key_a1 */
+	{  140, KEY_A3           },	/* key_a3 */
+	{  141, KEY_B2           },	/* key_b2 */
+	{   55, KEY_BACKSPACE    },	/* key_backspace */
+	{  158, KEY_BEG          },	/* key_beg */
+	{  148, KEY_BTAB         },	/* key_btab */
+	{  142, KEY_C1           },	/* key_c1 */
+	{  143, KEY_C3           },	/* key_c3 */
+	{  159, KEY_CANCEL       },	/* key_cancel */
+	{   56, KEY_CATAB        },	/* key_catab */
+	{   57, KEY_CLEAR        },	/* key_clear */
+	{  160, KEY_CLOSE        },	/* key_close */
+	{  161, KEY_COMMAND      },	/* key_command */
+	{  162, KEY_COPY         },	/* key_copy */
+	{  163, KEY_CREATE       },	/* key_create */
+	{   58, KEY_CTAB         },	/* key_ctab */
+	{   59, KEY_DC           },	/* key_dc */
+	{   60, KEY_DL           },	/* key_dl */
+	{   61, KEY_DOWN         },	/* key_down */
+	{   62, KEY_EIC          },	/* key_eic */
+	{  164, KEY_END          },	/* key_end */
+	{  165, KEY_ENTER        },	/* key_enter */
+	{   63, KEY_EOL          },	/* key_eol */
+	{   64, KEY_EOS          },	/* key_eos */
+	{  166, KEY_EXIT         },	/* key_exit */
+	{   65, KEY_F(0)         },	/* key_f0 */
+	{   67, KEY_F(10)        },	/* key_f10 */
+	{  216, KEY_F(11)        },	/* key_f11 */
+	{  217, KEY_F(12)        },	/* key_f12 */
+	{  218, KEY_F(13)        },	/* key_f13 */
+	{  219, KEY_F(14)        },	/* key_f14 */
+	{  220, KEY_F(15)        },	/* key_f15 */
+	{  221, KEY_F(16)        },	/* key_f16 */
+	{  222, KEY_F(17)        },	/* key_f17 */
+	{  223, KEY_F(18)        },	/* key_f18 */
+	{  224, KEY_F(19)        },	/* key_f19 */
+	{   66, KEY_F(1)         },	/* key_f1 */
+	{  225, KEY_F(20)        },	/* key_f20 */
+	{  226, KEY_F(21)        },	/* key_f21 */
+	{  227, KEY_F(22)        },	/* key_f22 */
+	{  228, KEY_F(23)        },	/* key_f23 */
+	{  229, KEY_F(24)        },	/* key_f24 */
+	{  230, KEY_F(25)        },	/* key_f25 */
+	{  231, KEY_F(26)        },	/* key_f26 */
+	{  232, KEY_F(27)        },	/* key_f27 */
+	{  233, KEY_F(28)        },	/* key_f28 */
+	{  234, KEY_F(29)        },	/* key_f29 */
+	{   68, KEY_F(2)         },	/* key_f2 */
+	{  235, KEY_F(30)        },	/* key_f30 */
+	{  236, KEY_F(31)        },	/* key_f31 */
+	{  237, KEY_F(32)        },	/* key_f32 */
+	{  238, KEY_F(33)        },	/* key_f33 */
+	{  239, KEY_F(34)        },	/* key_f34 */
+	{  240, KEY_F(35)        },	/* key_f35 */
+	{  241, KEY_F(36)        },	/* key_f36 */
+	{  242, KEY_F(37)        },	/* key_f37 */
+	{  243, KEY_F(38)        },	/* key_f38 */
+	{  244, KEY_F(39)        },	/* key_f39 */
+	{   69, KEY_F(3)         },	/* key_f3 */
+	{  245, KEY_F(40)        },	/* key_f40 */
+	{  246, KEY_F(41)        },	/* key_f41 */
+	{  247, KEY_F(42)        },	/* key_f42 */
+	{  248, KEY_F(43)        },	/* key_f43 */
+	{  249, KEY_F(44)        },	/* key_f44 */
+	{  250, KEY_F(45)        },	/* key_f45 */
+	{  251, KEY_F(46)        },	/* key_f46 */
+	{  252, KEY_F(47)        },	/* key_f47 */
+	{  253, KEY_F(48)        },	/* key_f48 */
+	{  254, KEY_F(49)        },	/* key_f49 */
+	{   70, KEY_F(4)         },	/* key_f4 */
+	{  255, KEY_F(50)        },	/* key_f50 */
+	{  256, KEY_F(51)        },	/* key_f51 */
+	{  257, KEY_F(52)        },	/* key_f52 */
+	{  258, KEY_F(53)        },	/* key_f53 */
+	{  259, KEY_F(54)        },	/* key_f54 */
+	{  260, KEY_F(55)        },	/* key_f55 */
+	{  261, KEY_F(56)        },	/* key_f56 */
+	{  262, KEY_F(57)        },	/* key_f57 */
+	{  263, KEY_F(58)        },	/* key_f58 */
+	{  264, KEY_F(59)        },	/* key_f59 */
+	{   71, KEY_F(5)         },	/* key_f5 */
+	{  265, KEY_F(60)        },	/* key_f60 */
+	{  266, KEY_F(61)        },	/* key_f61 */
+	{  267, KEY_F(62)        },	/* key_f62 */
+	{  268, KEY_F(63)        },	/* key_f63 */
+	{   72, KEY_F(6)         },	/* key_f6 */
+	{   73, KEY_F(7)         },	/* key_f7 */
+	{   74, KEY_F(8)         },	/* key_f8 */
+	{   75, KEY_F(9)         },	/* key_f9 */
+	{  167, KEY_FIND         },	/* key_find */
+	{  168, KEY_HELP         },	/* key_help */
+	{   76, KEY_HOME         },	/* key_home */
+	{   77, KEY_IC           },	/* key_ic */
+	{   78, KEY_IL           },	/* key_il */
+	{   79, KEY_LEFT         },	/* key_left */
+	{   80, KEY_LL           },	/* key_ll */
+	{  169, KEY_MARK         },	/* key_mark */
+	{  170, KEY_MESSAGE      },	/* key_message */
+	{  355, KEY_MOUSE        },	/* key_mouse */
+	{  171, KEY_MOVE         },	/* key_move */
+	{  172, KEY_NEXT         },	/* key_next */
+	{   81, KEY_NPAGE        },	/* key_npage */
+	{  173, KEY_OPEN         },	/* key_open */
+	{  174, KEY_OPTIONS      },	/* key_options */
+	{   82, KEY_PPAGE        },	/* key_ppage */
+	{  175, KEY_PREVIOUS     },	/* key_previous */
+	{  176, KEY_PRINT        },	/* key_print */
+	{  177, KEY_REDO         },	/* key_redo */
+	{  178, KEY_REFERENCE    },	/* key_reference */
+	{  179, KEY_REFRESH      },	/* key_refresh */
+	{  180, KEY_REPLACE      },	/* key_replace */
+	{  181, KEY_RESTART      },	/* key_restart */
+	{  182, KEY_RESUME       },	/* key_resume */
+	{   83, KEY_RIGHT        },	/* key_right */
+	{  183, KEY_SAVE         },	/* key_save */
+	{  186, KEY_SBEG         },	/* key_sbeg */
+	{  187, KEY_SCANCEL      },	/* key_scancel */
+	{  188, KEY_SCOMMAND     },	/* key_scommand */
+	{  189, KEY_SCOPY        },	/* key_scopy */
+	{  190, KEY_SCREATE      },	/* key_screate */
+	{  191, KEY_SDC          },	/* key_sdc */
+	{  192, KEY_SDL          },	/* key_sdl */
+	{  193, KEY_SELECT       },	/* key_select */
+	{  194, KEY_SEND         },	/* key_send */
+	{  195, KEY_SEOL         },	/* key_seol */
+	{  196, KEY_SEXIT        },	/* key_sexit */
+	{  197, KEY_SFIND        },	/* key_sfind */
+	{   84, KEY_SF           },	/* key_sf */
+	{  198, KEY_SHELP        },	/* key_shelp */
+	{  199, KEY_SHOME        },	/* key_shome */
+	{  200, KEY_SIC          },	/* key_sic */
+	{  201, KEY_SLEFT        },	/* key_sleft */
+	{  202, KEY_SMESSAGE     },	/* key_smessage */
+	{  203, KEY_SMOVE        },	/* key_smove */
+	{  204, KEY_SNEXT        },	/* key_snext */
+	{  205, KEY_SOPTIONS     },	/* key_soptions */
+	{  206, KEY_SPREVIOUS    },	/* key_sprevious */
+	{  207, KEY_SPRINT       },	/* key_sprint */
+	{  208, KEY_SREDO        },	/* key_sredo */
+	{  209, KEY_SREPLACE     },	/* key_sreplace */
+	{  210, KEY_SRIGHT       },	/* key_sright */
+	{   85, KEY_SR           },	/* key_sr */
+	{  211, KEY_SRSUME       },	/* key_srsume */
+	{  212, KEY_SSAVE        },	/* key_ssave */
+	{  213, KEY_SSUSPEND     },	/* key_ssuspend */
+	{   86, KEY_STAB         },	/* key_stab */
+	{  214, KEY_SUNDO        },	/* key_sundo */
+	{  184, KEY_SUSPEND      },	/* key_suspend */
+	{  185, KEY_UNDO         },	/* key_undo */
+	{   87, KEY_UP           },	/* key_up */
+	{ 0, 0} };
+
+#endif /* NCU_KEYS_H */
diff --git a/ncurses/keys.list b/ncurses/keys.list
new file mode 100644
index 0000000..1bca98f
--- /dev/null
+++ b/ncurses/keys.list
@@ -0,0 +1,155 @@
+KEY_A1	key_a1
+KEY_A3	key_a3
+KEY_B2	key_b2
+KEY_BACKSPACE	key_backspace
+KEY_BEG	key_beg
+KEY_BREAK
+KEY_BTAB	key_btab
+KEY_C1	key_c1
+KEY_C3	key_c3
+KEY_CANCEL	key_cancel
+KEY_CATAB	key_catab
+KEY_CLEAR	key_clear
+KEY_CLOSE	key_close
+KEY_COMMAND	key_command
+KEY_COPY	key_copy
+KEY_CREATE	key_create
+KEY_CTAB	key_ctab
+KEY_DC	key_dc
+KEY_DL	key_dl
+KEY_DOWN	key_down
+KEY_EIC	key_eic
+KEY_END	key_end
+KEY_ENTER	key_enter
+KEY_EOL	key_eol
+KEY_EOS	key_eos
+KEY_EXIT	key_exit
+KEY_F(0)	key_f0
+KEY_F(10)	key_f10
+KEY_F(11)	key_f11
+KEY_F(12)	key_f12
+KEY_F(13)	key_f13
+KEY_F(14)	key_f14
+KEY_F(15)	key_f15
+KEY_F(16)	key_f16
+KEY_F(17)	key_f17
+KEY_F(18)	key_f18
+KEY_F(19)	key_f19
+KEY_F(1)	key_f1
+KEY_F(20)	key_f20
+KEY_F(21)	key_f21
+KEY_F(22)	key_f22
+KEY_F(23)	key_f23
+KEY_F(24)	key_f24
+KEY_F(25)	key_f25
+KEY_F(26)	key_f26
+KEY_F(27)	key_f27
+KEY_F(28)	key_f28
+KEY_F(29)	key_f29
+KEY_F(2)	key_f2
+KEY_F(30)	key_f30
+KEY_F(31)	key_f31
+KEY_F(32)	key_f32
+KEY_F(33)	key_f33
+KEY_F(34)	key_f34
+KEY_F(35)	key_f35
+KEY_F(36)	key_f36
+KEY_F(37)	key_f37
+KEY_F(38)	key_f38
+KEY_F(39)	key_f39
+KEY_F(3)	key_f3
+KEY_F(40)	key_f40
+KEY_F(41)	key_f41
+KEY_F(42)	key_f42
+KEY_F(43)	key_f43
+KEY_F(44)	key_f44
+KEY_F(45)	key_f45
+KEY_F(46)	key_f46
+KEY_F(47)	key_f47
+KEY_F(48)	key_f48
+KEY_F(49)	key_f49
+KEY_F(4)	key_f4
+KEY_F(50)	key_f50
+KEY_F(51)	key_f51
+KEY_F(52)	key_f52
+KEY_F(53)	key_f53
+KEY_F(54)	key_f54
+KEY_F(55)	key_f55
+KEY_F(56)	key_f56
+KEY_F(57)	key_f57
+KEY_F(58)	key_f58
+KEY_F(59)	key_f59
+KEY_F(5)	key_f5
+KEY_F(60)	key_f60
+KEY_F(61)	key_f61
+KEY_F(62)	key_f62
+KEY_F(63)	key_f63
+KEY_F(6)	key_f6
+KEY_F(7)	key_f7
+KEY_F(8)	key_f8
+KEY_F(9)	key_f9
+KEY_FIND	key_find
+KEY_HELP	key_help
+KEY_HOME	key_home
+KEY_IC	key_ic
+KEY_IL	key_il
+KEY_LEFT	key_left
+KEY_LL	key_ll
+KEY_MARK	key_mark
+KEY_MESSAGE	key_message
+KEY_MOUSE	key_mouse
+KEY_MOVE	key_move
+KEY_NEXT	key_next
+KEY_NPAGE	key_npage
+KEY_OPEN	key_open
+KEY_OPTIONS	key_options
+KEY_PPAGE	key_ppage
+KEY_PREVIOUS	key_previous
+KEY_PRINT	key_print
+KEY_REDO	key_redo
+KEY_REFERENCE	key_reference
+KEY_REFRESH	key_refresh
+KEY_REPLACE	key_replace
+KEY_RESET
+KEY_RESIZE
+KEY_RESTART	key_restart
+KEY_RESUME	key_resume
+KEY_RIGHT	key_right
+KEY_SAVE	key_save
+KEY_SBEG	key_sbeg
+KEY_SCANCEL	key_scancel
+KEY_SCOMMAND	key_scommand
+KEY_SCOPY	key_scopy
+KEY_SCREATE	key_screate
+KEY_SDC	key_sdc
+KEY_SDL	key_sdl
+KEY_SELECT	key_select
+KEY_SEND	key_send
+KEY_SEOL	key_seol
+KEY_SEXIT	key_sexit
+KEY_SFIND	key_sfind
+KEY_SF	key_sf
+KEY_SHELP	key_shelp
+KEY_SHOME	key_shome
+KEY_SIC	key_sic
+KEY_SLEFT	key_sleft
+KEY_SMESSAGE	key_smessage
+KEY_SMOVE	key_smove
+KEY_SNEXT	key_snext
+KEY_SOPTIONS	key_soptions
+KEY_SPREVIOUS	key_sprevious
+KEY_SPRINT	key_sprint
+KEY_SREDO	key_sredo
+KEY_SREPLACE	key_sreplace
+KEY_SRESET
+KEY_SRIGHT	key_sright
+KEY_SR	key_sr
+KEY_SRSUME	key_srsume
+KEY_SSAVE	key_ssave
+KEY_SSUSPEND	key_ssuspend
+KEY_STAB	key_stab
+KEY_SUNDO	key_sundo
+KEY_SUSPEND	key_suspend
+KEY_UNDO	key_undo
+KEY_UP	key_up
+# These definitions were generated by ./tinfo/MKkeys_list.sh ../include/Caps
diff --git a/ncurses/lib_gen.c b/ncurses/lib_gen.c
new file mode 100644
index 0000000..e36b89f
--- /dev/null
+++ b/ncurses/lib_gen.c
@@ -0,0 +1,973 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!
+ * It is generated by ./base/MKlib_gen.sh generated.
+ *
+ * This is a file of trivial functions generated from macro
+ * definitions in curses.h to satisfy the XSI Curses requirement
+ * that every macro also exist as a callable function.
+ *
+ * It will never be linked unless you call one of the entry
+ * points with its normal macro definition disabled. In that
+ * case, if you have no shared libraries, it will indirectly
+ * pull most of the rest of the library into your link image.
+ */
+#define NCURSES_ATTR_T int
+#include <curses.priv.h>
+
+
+#undef addch
+NCURSES_EXPORT(int) addch (const chtype z)
+{
+	T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,z));
+}
+
+
+#undef addchnstr
+NCURSES_EXPORT(int) addchnstr (const chtype * a1, int z)
+{
+	T((T_CALLED("addchnstr(%p,%d)"), a1, z)); returnCode(waddchnstr(stdscr,a1,z));
+}
+
+
+#undef addchstr
+NCURSES_EXPORT(int) addchstr (const chtype * z)
+{
+	T((T_CALLED("addchstr(%p)"), z)); returnCode(waddchnstr(stdscr,z,-1));
+}
+
+
+#undef addnstr
+NCURSES_EXPORT(int) addnstr (const char * a1, int z)
+{
+	T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,a1,z));
+}
+
+
+#undef addstr
+NCURSES_EXPORT(int) addstr (const char * z)
+{
+	T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,z,-1));
+}
+
+
+#undef attroff
+NCURSES_EXPORT(int) attroff (int z)
+{
+	T((T_CALLED("attroff(%s)"), _traceattr2(0,z))); returnCode(wattr_off(stdscr, (attr_t)(z), ((void *)0)));
+}
+
+
+#undef attron
+NCURSES_EXPORT(int) attron (int z)
+{
+	T((T_CALLED("attron(%s)"), _traceattr2(0,z))); returnCode(wattr_on(stdscr, (attr_t)(z), ((void *)0)));
+}
+
+
+#undef attrset
+NCURSES_EXPORT(int) attrset (int z)
+{
+	T((T_CALLED("attrset(%s)"), _traceattr2(0,z))); returnAttr(((stdscr)->_attrs = (z)));
+}
+
+
+#undef attr_get
+NCURSES_EXPORT(int) attr_get (attr_t * a1, short * a2, void * z)
+{
+	T((T_CALLED("attr_get(%p,%p,%p)"), a1, a2, z)); returnCode(((void)((a1) != (void *)0 && (*(a1) = (stdscr)->_attrs)), (void)((a2) != (void *)0 && (*(a2) = ((int)(((((stdscr)->_attrs) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))))), (0)));
+}
+
+
+#undef attr_off
+NCURSES_EXPORT(int) attr_off (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_off(stdscr,a1,z));
+}
+
+
+#undef attr_on
+NCURSES_EXPORT(int) attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_on(stdscr,a1,z));
+}
+
+
+#undef attr_set
+NCURSES_EXPORT(int) attr_set (attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, z)); returnCode(((stdscr)->_attrs = (((a1) & ~((((1UL) << 8) - 1UL) << ((0) + 8))) | ((a2) << ((0) + 8))), (0)));
+}
+
+
+#undef bkgd
+NCURSES_EXPORT(int) bkgd (chtype z)
+{
+	T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,z));
+}
+
+
+#undef bkgdset
+NCURSES_EXPORT(void) bkgdset (chtype z)
+{
+	T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,z);
+	returnVoid;
+}
+
+
+#undef border
+NCURSES_EXPORT(int) border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z)
+{
+	T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z));
+}
+
+
+#undef box
+NCURSES_EXPORT(int) box (WINDOW * a1, chtype a2, chtype z)
+{
+	T((T_CALLED("box(%p,%s,%s)"), a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0));
+}
+
+
+#undef chgat
+NCURSES_EXPORT(int) chgat (int a1, attr_t a2, short a3, const void * z)
+{
+	T((T_CALLED("chgat(%d,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(wchgat(stdscr,a1,a2,a3,z));
+}
+
+
+#undef clear
+NCURSES_EXPORT(int) clear (void)
+{
+	T((T_CALLED("clear()"))); returnCode(wclear(stdscr));
+}
+
+
+#undef clrtobot
+NCURSES_EXPORT(int) clrtobot (void)
+{
+	T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr));
+}
+
+
+#undef clrtoeol
+NCURSES_EXPORT(int) clrtoeol (void)
+{
+	T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr));
+}
+
+
+#undef color_set
+NCURSES_EXPORT(int) color_set (short a1, void * z)
+{
+	T((T_CALLED("color_set(%d,%p)"), a1, z)); returnCode(wcolor_set(stdscr,a1,z));
+}
+
+
+#undef COLOR_PAIR
+NCURSES_EXPORT(int) COLOR_PAIR (int z)
+{
+	T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((z) << ((0) + 8)));
+}
+
+
+#undef delch
+NCURSES_EXPORT(int) delch (void)
+{
+	T((T_CALLED("delch()"))); returnCode(wdelch(stdscr));
+}
+
+
+#undef deleteln
+NCURSES_EXPORT(int) deleteln (void)
+{
+	T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1));
+}
+
+
+#undef echochar
+NCURSES_EXPORT(int) echochar (const chtype z)
+{
+	T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,z));
+}
+
+
+#undef erase
+NCURSES_EXPORT(int) erase (void)
+{
+	T((T_CALLED("erase()"))); returnCode(werase(stdscr));
+}
+
+
+#undef getbkgd
+NCURSES_EXPORT(chtype) getbkgd (WINDOW * z)
+{
+	T((T_CALLED("getbkgd(%p)"), z)); returnChar(((z)->_bkgd));
+}
+
+
+#undef getch
+NCURSES_EXPORT(int) getch (void)
+{
+	T((T_CALLED("getch()"))); returnCode(wgetch(stdscr));
+}
+
+
+#undef getnstr
+NCURSES_EXPORT(int) getnstr (char * a1, int z)
+{
+	T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, z));
+}
+
+
+#undef getstr
+NCURSES_EXPORT(int) getstr (char * z)
+{
+	T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, z, -1));
+}
+
+
+#undef hline
+NCURSES_EXPORT(int) hline (chtype a1, int z)
+{
+	T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, z));
+}
+
+
+#undef inch
+NCURSES_EXPORT(chtype) inch (void)
+{
+	T((T_CALLED("inch()"))); returnChar(winch(stdscr));
+}
+
+
+#undef inchnstr
+NCURSES_EXPORT(int) inchnstr (chtype * a1, int z)
+{
+	T((T_CALLED("inchnstr(%p,%d)"), a1, z)); returnCode(winchnstr(stdscr,a1,z));
+}
+
+
+#undef inchstr
+NCURSES_EXPORT(int) inchstr (chtype * z)
+{
+	T((T_CALLED("inchstr(%p)"), z)); returnCode(winchnstr(stdscr, z, -1));
+}
+
+
+#undef innstr
+NCURSES_EXPORT(int) innstr (char * a1, int z)
+{
+	return winnstr(stdscr,a1,z) ;
+}
+
+
+#undef insch
+NCURSES_EXPORT(int) insch (chtype z)
+{
+	T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,z));
+}
+
+
+#undef insdelln
+NCURSES_EXPORT(int) insdelln (int z)
+{
+	T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,z));
+}
+
+
+#undef insertln
+NCURSES_EXPORT(int) insertln (void)
+{
+	T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1));
+}
+
+
+#undef insnstr
+NCURSES_EXPORT(int) insnstr (const char * a1, int z)
+{
+	T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,a1,z));
+}
+
+
+#undef insstr
+NCURSES_EXPORT(int) insstr (const char * z)
+{
+	T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, z, -1));
+}
+
+
+#undef instr
+NCURSES_EXPORT(int) instr (char * z)
+{
+	T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, z, -1));
+}
+
+
+#undef move
+NCURSES_EXPORT(int) move (int a1, int z)
+{
+	T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,a1,z));
+}
+
+
+#undef mvaddch
+NCURSES_EXPORT(int) mvaddch (int a1, int a2, const chtype z)
+{
+	T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddch(stdscr,z)));
+}
+
+
+#undef mvaddchnstr
+NCURSES_EXPORT(int) mvaddchnstr (int a1, int a2, const chtype * a3, int z)
+{
+	T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,a3,z)));
+}
+
+
+#undef mvaddchstr
+NCURSES_EXPORT(int) mvaddchstr (int a1, int a2, const chtype * z)
+{
+	T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,z,-1)));
+}
+
+
+#undef mvaddnstr
+NCURSES_EXPORT(int) mvaddnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,a3,z)));
+}
+
+
+#undef mvaddstr
+NCURSES_EXPORT(int) mvaddstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,z,-1)));
+}
+
+
+#undef mvchgat
+NCURSES_EXPORT(int) mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z)
+{
+	T((T_CALLED("mvchgat(%d,%d,%d,%s,%d,%p)"), a1, a2, a3, _traceattr2(3,a4), a5, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wchgat(stdscr,a3,a4,a5,z)));
+}
+
+
+#undef mvdelch
+NCURSES_EXPORT(int) mvdelch (int a1, int z)
+{
+	T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wdelch(stdscr)));
+}
+
+
+#undef mvgetch
+NCURSES_EXPORT(int) mvgetch (int a1, int z)
+{
+	T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wgetch(stdscr)));
+}
+
+
+#undef mvgetnstr
+NCURSES_EXPORT(int) mvgetnstr (int a1, int a2, char * a3, int z)
+{
+	T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr,a3,z)));
+}
+
+
+#undef mvgetstr
+NCURSES_EXPORT(int) mvgetstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr, z, -1)));
+}
+
+
+#undef mvhline
+NCURSES_EXPORT(int) mvhline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline(stdscr,a3,z)));
+}
+
+
+#undef mvinch
+NCURSES_EXPORT(chtype) mvinch (int a1, int z)
+{
+	T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChar((wmove(stdscr,a1,z) == (-1) ? (chtype)((-1)) : winch(stdscr)));
+}
+
+
+#undef mvinchnstr
+NCURSES_EXPORT(int) mvinchnstr (int a1, int a2, chtype * a3, int z)
+{
+	T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr,a3,z)));
+}
+
+
+#undef mvinchstr
+NCURSES_EXPORT(int) mvinchstr (int a1, int a2, chtype * z)
+{
+	T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr, z, -1)));
+}
+
+
+#undef mvinnstr
+NCURSES_EXPORT(int) mvinnstr (int a1, int a2, char * a3, int z)
+{
+	return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr,a3,z)) ;
+}
+
+
+#undef mvinsch
+NCURSES_EXPORT(int) mvinsch (int a1, int a2, chtype z)
+{
+	T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsch(stdscr,z)));
+}
+
+
+#undef mvinsnstr
+NCURSES_EXPORT(int) mvinsnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr,a3,z)));
+}
+
+
+#undef mvinsstr
+NCURSES_EXPORT(int) mvinsstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr, z, -1)));
+}
+
+
+#undef mvinstr
+NCURSES_EXPORT(int) mvinstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr, z, -1)));
+}
+
+
+#undef mvvline
+NCURSES_EXPORT(int) mvvline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline(stdscr,a3,z)));
+}
+
+
+#undef mvwaddch
+NCURSES_EXPORT(int) mvwaddch (WINDOW * a1, int a2, int a3, const chtype z)
+{
+	T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddch(a1,z)));
+}
+
+
+#undef mvwaddchnstr
+NCURSES_EXPORT(int) mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z)
+{
+	T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,a4,z)));
+}
+
+
+#undef mvwaddchstr
+NCURSES_EXPORT(int) mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z)
+{
+	T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,z,-1)));
+}
+
+
+#undef mvwaddnstr
+NCURSES_EXPORT(int) mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,a4,z)));
+}
+
+
+#undef mvwaddstr
+NCURSES_EXPORT(int) mvwaddstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,z,-1)));
+}
+
+
+#undef mvwchgat
+NCURSES_EXPORT(int) mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z)
+{
+	T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%d,%p)"), a1, a2, a3, a4, _traceattr2(4,a5), a6, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wchgat(a1,a4,a5,a6,z)));
+}
+
+
+#undef mvwdelch
+NCURSES_EXPORT(int) mvwdelch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwdelch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wdelch(a1)));
+}
+
+
+#undef mvwgetch
+NCURSES_EXPORT(int) mvwgetch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwgetch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wgetch(a1)));
+}
+
+
+#undef mvwgetnstr
+NCURSES_EXPORT(int) mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1,a4,z)));
+}
+
+
+#undef mvwgetstr
+NCURSES_EXPORT(int) mvwgetstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1, z, -1)));
+}
+
+
+#undef mvwhline
+NCURSES_EXPORT(int) mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline(a1,a4,z)));
+}
+
+
+#undef mvwinch
+NCURSES_EXPORT(chtype) mvwinch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwinch(%p,%d,%d)"), a1, a2, z)); returnChar((wmove(a1,a2,z) == (-1) ? (chtype)((-1)) : winch(a1)));
+}
+
+
+#undef mvwinchnstr
+NCURSES_EXPORT(int) mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z)
+{
+	T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1,a4,z)));
+}
+
+
+#undef mvwinchstr
+NCURSES_EXPORT(int) mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z)
+{
+	T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1, z, -1)));
+}
+
+
+#undef mvwinnstr
+NCURSES_EXPORT(int) mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	return (wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1,a4,z)) ;
+}
+
+
+#undef mvwinsch
+NCURSES_EXPORT(int) mvwinsch (WINDOW * a1, int a2, int a3, chtype z)
+{
+	T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsch(a1,z)));
+}
+
+
+#undef mvwinsnstr
+NCURSES_EXPORT(int) mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1,a4,z)));
+}
+
+
+#undef mvwinsstr
+NCURSES_EXPORT(int) mvwinsstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1, z, -1)));
+}
+
+
+#undef mvwinstr
+NCURSES_EXPORT(int) mvwinstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1, z, -1)));
+}
+
+
+#undef mvwvline
+NCURSES_EXPORT(int) mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline(a1,a4,z)));
+}
+
+
+#undef PAIR_NUMBER
+NCURSES_EXPORT(int) PAIR_NUMBER (int z)
+{
+	T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((z) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))));
+}
+
+
+#undef redrawwin
+NCURSES_EXPORT(int) redrawwin (WINDOW * z)
+{
+	T((T_CALLED("redrawwin(%p)"), z)); returnCode(wredrawln(z, 0, (z)->_maxy+1));
+}
+
+
+#undef refresh
+NCURSES_EXPORT(int) refresh (void)
+{
+	T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr));
+}
+
+
+#undef scrl
+NCURSES_EXPORT(int) scrl (int z)
+{
+	T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,z));
+}
+
+
+#undef scroll
+NCURSES_EXPORT(int) scroll (WINDOW * z)
+{
+	T((T_CALLED("scroll(%p)"), z)); returnCode(wscrl(z,1));
+}
+
+
+#undef setscrreg
+NCURSES_EXPORT(int) setscrreg (int a1, int z)
+{
+	T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,a1,z));
+}
+
+
+#if USE_WIDEC_SUPPORT
+#undef slk_attr_off
+NCURSES_EXPORT(int) slk_attr_off (const attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attroff(a1)));
+}
+#endif
+
+
+#if USE_WIDEC_SUPPORT
+#undef slk_attr_on
+NCURSES_EXPORT(int) slk_attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attron(a1)));
+}
+#endif
+
+
+#undef standout
+NCURSES_EXPORT(int) standout (void)
+{
+	T((T_CALLED("standout()"))); returnAttr((((stdscr)->_attrs = (((1UL) << ((8) + 8))))));
+}
+
+
+#undef standend
+NCURSES_EXPORT(int) standend (void)
+{
+	T((T_CALLED("standend()"))); returnAttr((((stdscr)->_attrs = ((1UL - 1UL)))));
+}
+
+
+#undef timeout
+NCURSES_EXPORT(void) timeout (int z)
+{
+	T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,z);
+	returnVoid;
+}
+
+
+#undef touchline
+NCURSES_EXPORT(int) touchline (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("touchline(%p,%d,%d)"), a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1));
+}
+
+
+#undef touchwin
+NCURSES_EXPORT(int) touchwin (WINDOW * z)
+{
+	T((T_CALLED("touchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1));
+}
+
+
+#undef untouchwin
+NCURSES_EXPORT(int) untouchwin (WINDOW * z)
+{
+	T((T_CALLED("untouchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0));
+}
+
+
+#undef vline
+NCURSES_EXPORT(int) vline (chtype a1, int z)
+{
+	T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, z));
+}
+
+
+#undef vw_printw
+NCURSES_EXPORT(int) vw_printw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_printw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+#undef vw_scanw
+NCURSES_EXPORT(int) vw_scanw (WINDOW * a1, char * a2, va_list z)
+{
+	T((T_CALLED("vw_scanw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+#undef waddchstr
+NCURSES_EXPORT(int) waddchstr (WINDOW * a1, const chtype * z)
+{
+	T((T_CALLED("waddchstr(%p,%p)"), a1, z)); returnCode(waddchnstr(a1,z,-1));
+}
+
+
+#undef waddstr
+NCURSES_EXPORT(int) waddstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("waddstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1));
+}
+
+
+#undef wattron
+NCURSES_EXPORT(int) wattron (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattron(%p,%d)"), a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void *)0)));
+}
+
+
+#undef wattroff
+NCURSES_EXPORT(int) wattroff (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattroff(%p,%d)"), a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void *)0)));
+}
+
+
+#undef wattrset
+NCURSES_EXPORT(int) wattrset (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattrset(%p,%d)"), a1, z)); returnAttr(((a1)->_attrs = (z)));
+}
+
+
+#undef wattr_get
+NCURSES_EXPORT(int) wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z)
+{
+	T((T_CALLED("wattr_get(%p,%p,%p,%p)"), a1, a2, a3, z)); returnCode(((void)((a2) != (void *)0 && (*(a2) = (a1)->_attrs)), (void)((a3) != (void *)0 && (*(a3) = ((int)(((((a1)->_attrs) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))))), (0)));
+}
+
+
+#undef wattr_set
+NCURSES_EXPORT(int) wattr_set (WINDOW * a1, attr_t a2, short a3, void * z)
+{
+	T((T_CALLED("wattr_set(%p,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(((a1)->_attrs = (((a2) & ~((((1UL) << 8) - 1UL) << ((0) + 8))) | ((a3) << ((0) + 8))), (0)));
+}
+
+
+#undef wdeleteln
+NCURSES_EXPORT(int) wdeleteln (WINDOW * z)
+{
+	T((T_CALLED("wdeleteln(%p)"), z)); returnCode(winsdelln(z,-1));
+}
+
+
+#undef wgetstr
+NCURSES_EXPORT(int) wgetstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("wgetstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1));
+}
+
+
+#undef winchstr
+NCURSES_EXPORT(int) winchstr (WINDOW * a1, chtype * z)
+{
+	T((T_CALLED("winchstr(%p,%p)"), a1, z)); returnCode(winchnstr(a1, z, -1));
+}
+
+
+#undef winsertln
+NCURSES_EXPORT(int) winsertln (WINDOW * z)
+{
+	T((T_CALLED("winsertln(%p)"), z)); returnCode(winsdelln(z,1));
+}
+
+
+#undef winsstr
+NCURSES_EXPORT(int) winsstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("winsstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1));
+}
+
+
+#undef winstr
+NCURSES_EXPORT(int) winstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("winstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1));
+}
+
+
+#undef wstandout
+NCURSES_EXPORT(int) wstandout (WINDOW * z)
+{
+	T((T_CALLED("wstandout(%p)"), z)); returnAttr((((z)->_attrs = (((1UL) << ((8) + 8))))));
+}
+
+
+#undef wstandend
+NCURSES_EXPORT(int) wstandend (WINDOW * z)
+{
+	T((T_CALLED("wstandend(%p)"), z)); returnAttr((((z)->_attrs = ((1UL - 1UL)))));
+}
+
+
+#undef getattrs
+NCURSES_EXPORT(int) getattrs (const WINDOW * z)
+{
+	T((T_CALLED("getattrs(%p)"), z)); returnCode(((z) ? (z)->_attrs : (1UL - 1UL)));
+}
+
+
+#undef getcurx
+NCURSES_EXPORT(int) getcurx (const WINDOW * z)
+{
+	T((T_CALLED("getcurx(%p)"), z)); returnCode(((z) ? (z)->_curx : (-1)));
+}
+
+
+#undef getcury
+NCURSES_EXPORT(int) getcury (const WINDOW * z)
+{
+	T((T_CALLED("getcury(%p)"), z)); returnCode(((z) ? (z)->_cury : (-1)));
+}
+
+
+#undef getbegx
+NCURSES_EXPORT(int) getbegx (const WINDOW * z)
+{
+	T((T_CALLED("getbegx(%p)"), z)); returnCode(((z) ? (z)->_begx : (-1)));
+}
+
+
+#undef getbegy
+NCURSES_EXPORT(int) getbegy (const WINDOW * z)
+{
+	T((T_CALLED("getbegy(%p)"), z)); returnCode(((z) ? (z)->_begy : (-1)));
+}
+
+
+#undef getmaxx
+NCURSES_EXPORT(int) getmaxx (const WINDOW * z)
+{
+	T((T_CALLED("getmaxx(%p)"), z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1)));
+}
+
+
+#undef getmaxy
+NCURSES_EXPORT(int) getmaxy (const WINDOW * z)
+{
+	T((T_CALLED("getmaxy(%p)"), z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1)));
+}
+
+
+#undef getparx
+NCURSES_EXPORT(int) getparx (const WINDOW * z)
+{
+	T((T_CALLED("getparx(%p)"), z)); returnCode(((z) ? (z)->_parx : (-1)));
+}
+
+
+#undef getpary
+NCURSES_EXPORT(int) getpary (const WINDOW * z)
+{
+	T((T_CALLED("getpary(%p)"), z)); returnCode(((z) ? (z)->_pary : (-1)));
+}
+
+
+#undef wgetparent
+NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW * z)
+{
+	T((T_CALLED("(%p)"), z)); returnWin(((z) ? (z)->_parent : 0));
+}
+
+
+#undef is_cleared
+NCURSES_EXPORT(NCURSES_BOOL) is_cleared (const WINDOW * z)
+{
+	T((T_CALLED("is_cleared(%p)"), z)); returnBool(((z)->_clear));
+}
+
+
+#undef is_idcok
+NCURSES_EXPORT(NCURSES_BOOL) is_idcok (const WINDOW * z)
+{
+	T((T_CALLED("is_idcok(%p)"), z)); returnBool(((z)->_idcok));
+}
+
+
+#undef is_idlok
+NCURSES_EXPORT(NCURSES_BOOL) is_idlok (const WINDOW * z)
+{
+	T((T_CALLED("is_idlok(%p)"), z)); returnBool(((z)->_idlok));
+}
+
+
+#undef is_immedok
+NCURSES_EXPORT(NCURSES_BOOL) is_immedok (const WINDOW * z)
+{
+	T((T_CALLED("is_immedok(%p)"), z)); returnBool(((z)->_immed));
+}
+
+
+#undef is_keypad
+NCURSES_EXPORT(NCURSES_BOOL) is_keypad (const WINDOW * z)
+{
+	T((T_CALLED("is_keypad(%p)"), z)); returnBool(((z)->_use_keypad));
+}
+
+
+#undef is_leaveok
+NCURSES_EXPORT(NCURSES_BOOL) is_leaveok (const WINDOW * z)
+{
+	T((T_CALLED("is_leaveok(%p)"), z)); returnBool(((z)->_leaveok));
+}
+
+
+#undef is_nodelay
+NCURSES_EXPORT(NCURSES_BOOL) is_nodelay (const WINDOW * z)
+{
+	T((T_CALLED("is_nodelay(%p)"), z)); returnBool(((z)->_delay == 0));
+}
+
+
+#undef is_notimeout
+NCURSES_EXPORT(NCURSES_BOOL) is_notimeout (const WINDOW * z)
+{
+	T((T_CALLED("is_notimeout(%p)"), z)); returnBool(((z)->_notimeout));
+}
+
+
+#undef is_scrollok
+NCURSES_EXPORT(NCURSES_BOOL) is_scrollok (const WINDOW * z)
+{
+	T((T_CALLED("is_scrollok(%p)"), z)); returnBool(((z)->_scroll));
+}
+
+
+#undef is_syncok
+NCURSES_EXPORT(NCURSES_BOOL) is_syncok (const WINDOW * z)
+{
+	T((T_CALLED("is_syncok(%p)"), z)); returnBool(((z)->_sync));
+}
+
+
+#undef wgetscrreg
+NCURSES_EXPORT(int) wgetscrreg (const WINDOW * a1, int * a2, int * z)
+{
+	T((T_CALLED("wgetscrreg(%p,%p,%p)"), a1, a2, z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1)));
+}
+
+
+#undef mouse_trafo
+NCURSES_EXPORT(NCURSES_BOOL) mouse_trafo (int * a1, int * a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), a1, a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z));
+}
diff --git a/ncurses/lib_keyname.c b/ncurses/lib_keyname.c
new file mode 100644
index 0000000..ae2a95a
--- /dev/null
+++ b/ncurses/lib_keyname.c
@@ -0,0 +1,405 @@
+/* generated by MKkeyname.awk */
+
+#include <curses.priv.h>
+#include <tic.h>
+#include <term_entry.h>
+
+struct kn { short offset; int code; };
+static const struct kn _nc_key_names[] = {
+	{ 0, KEY_A1 },
+	{ 7, KEY_A3 },
+	{ 14, KEY_B2 },
+	{ 21, KEY_BACKSPACE },
+	{ 35, KEY_BEG },
+	{ 43, KEY_BREAK },
+	{ 53, KEY_BTAB },
+	{ 62, KEY_C1 },
+	{ 69, KEY_C3 },
+	{ 76, KEY_CANCEL },
+	{ 87, KEY_CATAB },
+	{ 97, KEY_CLEAR },
+	{ 107, KEY_CLOSE },
+	{ 117, KEY_COMMAND },
+	{ 129, KEY_COPY },
+	{ 138, KEY_CREATE },
+	{ 149, KEY_CTAB },
+	{ 158, KEY_DC },
+	{ 165, KEY_DL },
+	{ 172, KEY_DOWN },
+	{ 181, KEY_EIC },
+	{ 189, KEY_END },
+	{ 197, KEY_ENTER },
+	{ 207, KEY_EOL },
+	{ 215, KEY_EOS },
+	{ 223, KEY_EXIT },
+	{ 232, KEY_F(0) },
+	{ 241, KEY_F(10) },
+	{ 251, KEY_F(11) },
+	{ 261, KEY_F(12) },
+	{ 271, KEY_F(13) },
+	{ 281, KEY_F(14) },
+	{ 291, KEY_F(15) },
+	{ 301, KEY_F(16) },
+	{ 311, KEY_F(17) },
+	{ 321, KEY_F(18) },
+	{ 331, KEY_F(19) },
+	{ 341, KEY_F(1) },
+	{ 350, KEY_F(20) },
+	{ 360, KEY_F(21) },
+	{ 370, KEY_F(22) },
+	{ 380, KEY_F(23) },
+	{ 390, KEY_F(24) },
+	{ 400, KEY_F(25) },
+	{ 410, KEY_F(26) },
+	{ 420, KEY_F(27) },
+	{ 430, KEY_F(28) },
+	{ 440, KEY_F(29) },
+	{ 450, KEY_F(2) },
+	{ 459, KEY_F(30) },
+	{ 469, KEY_F(31) },
+	{ 479, KEY_F(32) },
+	{ 489, KEY_F(33) },
+	{ 499, KEY_F(34) },
+	{ 509, KEY_F(35) },
+	{ 519, KEY_F(36) },
+	{ 529, KEY_F(37) },
+	{ 539, KEY_F(38) },
+	{ 549, KEY_F(39) },
+	{ 559, KEY_F(3) },
+	{ 568, KEY_F(40) },
+	{ 578, KEY_F(41) },
+	{ 588, KEY_F(42) },
+	{ 598, KEY_F(43) },
+	{ 608, KEY_F(44) },
+	{ 618, KEY_F(45) },
+	{ 628, KEY_F(46) },
+	{ 638, KEY_F(47) },
+	{ 648, KEY_F(48) },
+	{ 658, KEY_F(49) },
+	{ 668, KEY_F(4) },
+	{ 677, KEY_F(50) },
+	{ 687, KEY_F(51) },
+	{ 697, KEY_F(52) },
+	{ 707, KEY_F(53) },
+	{ 717, KEY_F(54) },
+	{ 727, KEY_F(55) },
+	{ 737, KEY_F(56) },
+	{ 747, KEY_F(57) },
+	{ 757, KEY_F(58) },
+	{ 767, KEY_F(59) },
+	{ 777, KEY_F(5) },
+	{ 786, KEY_F(60) },
+	{ 796, KEY_F(61) },
+	{ 806, KEY_F(62) },
+	{ 816, KEY_F(63) },
+	{ 826, KEY_F(6) },
+	{ 835, KEY_F(7) },
+	{ 844, KEY_F(8) },
+	{ 853, KEY_F(9) },
+	{ 862, KEY_FIND },
+	{ 871, KEY_HELP },
+	{ 880, KEY_HOME },
+	{ 889, KEY_IC },
+	{ 896, KEY_IL },
+	{ 903, KEY_LEFT },
+	{ 912, KEY_LL },
+	{ 919, KEY_MARK },
+	{ 928, KEY_MESSAGE },
+	{ 940, KEY_MOUSE },
+	{ 950, KEY_MOVE },
+	{ 959, KEY_NEXT },
+	{ 968, KEY_NPAGE },
+	{ 978, KEY_OPEN },
+	{ 987, KEY_OPTIONS },
+	{ 999, KEY_PPAGE },
+	{ 1009, KEY_PREVIOUS },
+	{ 1022, KEY_PRINT },
+	{ 1032, KEY_REDO },
+	{ 1041, KEY_REFERENCE },
+	{ 1055, KEY_REFRESH },
+	{ 1067, KEY_REPLACE },
+	{ 1079, KEY_RESET },
+	{ 1089, KEY_RESIZE },
+	{ 1100, KEY_RESTART },
+	{ 1112, KEY_RESUME },
+	{ 1123, KEY_RIGHT },
+	{ 1133, KEY_SAVE },
+	{ 1142, KEY_SBEG },
+	{ 1151, KEY_SCANCEL },
+	{ 1163, KEY_SCOMMAND },
+	{ 1176, KEY_SCOPY },
+	{ 1186, KEY_SCREATE },
+	{ 1198, KEY_SDC },
+	{ 1206, KEY_SDL },
+	{ 1214, KEY_SELECT },
+	{ 1225, KEY_SEND },
+	{ 1234, KEY_SEOL },
+	{ 1243, KEY_SEXIT },
+	{ 1253, KEY_SFIND },
+	{ 1263, KEY_SF },
+	{ 1270, KEY_SHELP },
+	{ 1280, KEY_SHOME },
+	{ 1290, KEY_SIC },
+	{ 1298, KEY_SLEFT },
+	{ 1308, KEY_SMESSAGE },
+	{ 1321, KEY_SMOVE },
+	{ 1331, KEY_SNEXT },
+	{ 1341, KEY_SOPTIONS },
+	{ 1354, KEY_SPREVIOUS },
+	{ 1368, KEY_SPRINT },
+	{ 1379, KEY_SREDO },
+	{ 1389, KEY_SREPLACE },
+	{ 1402, KEY_SRESET },
+	{ 1413, KEY_SRIGHT },
+	{ 1424, KEY_SR },
+	{ 1431, KEY_SRSUME },
+	{ 1442, KEY_SSAVE },
+	{ 1452, KEY_SSUSPEND },
+	{ 1465, KEY_STAB },
+	{ 1474, KEY_SUNDO },
+	{ 1484, KEY_SUSPEND },
+	{ 1496, KEY_UNDO },
+	{ 1505, KEY_UP },
+	{ -1, 0 }};
+
+static const char key_names[] = 
+	"KEY_A1\0"
+	"KEY_A3\0"
+	"KEY_B2\0"
+	"KEY_BACKSPACE\0"
+	"KEY_BEG\0"
+	"KEY_BREAK\0"
+	"KEY_BTAB\0"
+	"KEY_C1\0"
+	"KEY_C3\0"
+	"KEY_CANCEL\0"
+	"KEY_CATAB\0"
+	"KEY_CLEAR\0"
+	"KEY_CLOSE\0"
+	"KEY_COMMAND\0"
+	"KEY_COPY\0"
+	"KEY_CREATE\0"
+	"KEY_CTAB\0"
+	"KEY_DC\0"
+	"KEY_DL\0"
+	"KEY_DOWN\0"
+	"KEY_EIC\0"
+	"KEY_END\0"
+	"KEY_ENTER\0"
+	"KEY_EOL\0"
+	"KEY_EOS\0"
+	"KEY_EXIT\0"
+	"KEY_F(0)\0"
+	"KEY_F(10)\0"
+	"KEY_F(11)\0"
+	"KEY_F(12)\0"
+	"KEY_F(13)\0"
+	"KEY_F(14)\0"
+	"KEY_F(15)\0"
+	"KEY_F(16)\0"
+	"KEY_F(17)\0"
+	"KEY_F(18)\0"
+	"KEY_F(19)\0"
+	"KEY_F(1)\0"
+	"KEY_F(20)\0"
+	"KEY_F(21)\0"
+	"KEY_F(22)\0"
+	"KEY_F(23)\0"
+	"KEY_F(24)\0"
+	"KEY_F(25)\0"
+	"KEY_F(26)\0"
+	"KEY_F(27)\0"
+	"KEY_F(28)\0"
+	"KEY_F(29)\0"
+	"KEY_F(2)\0"
+	"KEY_F(30)\0"
+	"KEY_F(31)\0"
+	"KEY_F(32)\0"
+	"KEY_F(33)\0"
+	"KEY_F(34)\0"
+	"KEY_F(35)\0"
+	"KEY_F(36)\0"
+	"KEY_F(37)\0"
+	"KEY_F(38)\0"
+	"KEY_F(39)\0"
+	"KEY_F(3)\0"
+	"KEY_F(40)\0"
+	"KEY_F(41)\0"
+	"KEY_F(42)\0"
+	"KEY_F(43)\0"
+	"KEY_F(44)\0"
+	"KEY_F(45)\0"
+	"KEY_F(46)\0"
+	"KEY_F(47)\0"
+	"KEY_F(48)\0"
+	"KEY_F(49)\0"
+	"KEY_F(4)\0"
+	"KEY_F(50)\0"
+	"KEY_F(51)\0"
+	"KEY_F(52)\0"
+	"KEY_F(53)\0"
+	"KEY_F(54)\0"
+	"KEY_F(55)\0"
+	"KEY_F(56)\0"
+	"KEY_F(57)\0"
+	"KEY_F(58)\0"
+	"KEY_F(59)\0"
+	"KEY_F(5)\0"
+	"KEY_F(60)\0"
+	"KEY_F(61)\0"
+	"KEY_F(62)\0"
+	"KEY_F(63)\0"
+	"KEY_F(6)\0"
+	"KEY_F(7)\0"
+	"KEY_F(8)\0"
+	"KEY_F(9)\0"
+	"KEY_FIND\0"
+	"KEY_HELP\0"
+	"KEY_HOME\0"
+	"KEY_IC\0"
+	"KEY_IL\0"
+	"KEY_LEFT\0"
+	"KEY_LL\0"
+	"KEY_MARK\0"
+	"KEY_MESSAGE\0"
+	"KEY_MOUSE\0"
+	"KEY_MOVE\0"
+	"KEY_NEXT\0"
+	"KEY_NPAGE\0"
+	"KEY_OPEN\0"
+	"KEY_OPTIONS\0"
+	"KEY_PPAGE\0"
+	"KEY_PREVIOUS\0"
+	"KEY_PRINT\0"
+	"KEY_REDO\0"
+	"KEY_REFERENCE\0"
+	"KEY_REFRESH\0"
+	"KEY_REPLACE\0"
+	"KEY_RESET\0"
+	"KEY_RESIZE\0"
+	"KEY_RESTART\0"
+	"KEY_RESUME\0"
+	"KEY_RIGHT\0"
+	"KEY_SAVE\0"
+	"KEY_SBEG\0"
+	"KEY_SCANCEL\0"
+	"KEY_SCOMMAND\0"
+	"KEY_SCOPY\0"
+	"KEY_SCREATE\0"
+	"KEY_SDC\0"
+	"KEY_SDL\0"
+	"KEY_SELECT\0"
+	"KEY_SEND\0"
+	"KEY_SEOL\0"
+	"KEY_SEXIT\0"
+	"KEY_SFIND\0"
+	"KEY_SF\0"
+	"KEY_SHELP\0"
+	"KEY_SHOME\0"
+	"KEY_SIC\0"
+	"KEY_SLEFT\0"
+	"KEY_SMESSAGE\0"
+	"KEY_SMOVE\0"
+	"KEY_SNEXT\0"
+	"KEY_SOPTIONS\0"
+	"KEY_SPREVIOUS\0"
+	"KEY_SPRINT\0"
+	"KEY_SREDO\0"
+	"KEY_SREPLACE\0"
+	"KEY_SRESET\0"
+	"KEY_SRIGHT\0"
+	"KEY_SR\0"
+	"KEY_SRSUME\0"
+	"KEY_SSAVE\0"
+	"KEY_SSUSPEND\0"
+	"KEY_STAB\0"
+	"KEY_SUNDO\0"
+	"KEY_SUSPEND\0"
+	"KEY_UNDO\0"
+	"KEY_UP\0";
+
+#define SIZEOF_TABLE 256
+#define MyTable _nc_globals.keyname_table
+
+NCURSES_EXPORT(NCURSES_CONST char *) _nc_keyname (SCREEN *sp, int c)
+{
+	int i;
+	char name[20];
+	char *p;
+	NCURSES_CONST char *result = 0;
+
+	if (c == -1) {
+		result = "-1";
+	} else {
+		for (i = 0; _nc_key_names[i].offset != -1; i++) {
+			if (_nc_key_names[i].code == c) {
+				result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset;
+				break;
+			}
+		}
+
+		if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {
+			if (MyTable == 0)
+				MyTable = typeCalloc(char *, SIZEOF_TABLE);
+			if (MyTable != 0) {
+				if (MyTable[c] == 0) {
+					int cc = c;
+					p = name;
+					if (cc >= 128 && (sp == 0 || sp->_use_meta)) {
+						strcpy(p, "M-");
+						p += 2;
+						cc -= 128;
+					}
+					if (cc < 32)
+						sprintf(p, "^%c", cc + '@');
+					else if (cc == 127)
+						strcpy(p, "^?");
+					else
+						sprintf(p, "%c", cc);
+					MyTable[c] = strdup(name);
+				}
+				result = MyTable[c];
+			}
+#if NCURSES_EXT_FUNCS && NCURSES_XNAMES
+		} else if (result == 0 && cur_term != 0) {
+			int j, k;
+			char * bound;
+			TERMTYPE *tp = &(cur_term->type);
+			int save_trace = _nc_tracing;
+
+			_nc_tracing = 0;	/* prevent recursion via keybound() */
+			for (j = 0; (bound = keybound(c, j)) != 0; ++j) {
+				for(k = STRCOUNT; k < (int) NUM_STRINGS(tp);  k++) {
+					if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) {
+						result = ExtStrname(tp, k, strnames);
+						break;
+					}
+				}
+				free(bound);
+				if (result != 0)
+					break;
+			}
+			_nc_tracing = save_trace;
+#endif
+		}
+	}
+	return result;
+}
+
+NCURSES_EXPORT(NCURSES_CONST char *) keyname (int c)
+{
+	return _nc_keyname(SP, c);
+}
+
+#if NO_LEAKS
+void _nc_keyname_leaks(void)
+{
+	int j;
+	if (MyTable != 0) {
+		for (j = 0; j < SIZEOF_TABLE; ++j) {
+			FreeIfNeeded(MyTable[j]);
+		}
+		FreeAndNull(MyTable);
+	}
+}
+#endif /* NO_LEAKS */
diff --git a/ncurses/link_test.c b/ncurses/link_test.c
new file mode 100644
index 0000000..588a754
--- /dev/null
+++ b/ncurses/link_test.c
@@ -0,0 +1,1999 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!
+ * It is generated by ./base/MKlib_gen.sh implemented.
+ */
+#define NCURSES_ATTR_T int
+#include <curses.priv.h>
+
+
+extern int call_addch (const chtype z);
+int call_addch (const chtype z)
+{
+	T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,z));
+}
+
+
+extern int call_addchnstr (const chtype * a1, int z);
+int call_addchnstr (const chtype * a1, int z)
+{
+	T((T_CALLED("addchnstr(%p,%d)"), a1, z)); returnCode(waddchnstr(stdscr,a1,z));
+}
+
+
+extern int call_addchstr (const chtype * z);
+int call_addchstr (const chtype * z)
+{
+	T((T_CALLED("addchstr(%p)"), z)); returnCode(waddchnstr(stdscr,z,-1));
+}
+
+
+extern int call_addnstr (const char * a1, int z);
+int call_addnstr (const char * a1, int z)
+{
+	T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,a1,z));
+}
+
+
+extern int call_addstr (const char * z);
+int call_addstr (const char * z)
+{
+	T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,z,-1));
+}
+
+
+extern int call_attroff (int z);
+int call_attroff (int z)
+{
+	T((T_CALLED("attroff(%s)"), _traceattr2(0,z))); returnCode(wattr_off(stdscr, (attr_t)(z), ((void *)0)));
+}
+
+
+extern int call_attron (int z);
+int call_attron (int z)
+{
+	T((T_CALLED("attron(%s)"), _traceattr2(0,z))); returnCode(wattr_on(stdscr, (attr_t)(z), ((void *)0)));
+}
+
+
+extern int call_attrset (int z);
+int call_attrset (int z)
+{
+	T((T_CALLED("attrset(%s)"), _traceattr2(0,z))); returnAttr(((stdscr)->_attrs = (z)));
+}
+
+
+extern int call_attr_get (attr_t * a1, short * a2, void * z);
+int call_attr_get (attr_t * a1, short * a2, void * z)
+{
+	T((T_CALLED("attr_get(%p,%p,%p)"), a1, a2, z)); returnCode(((void)((a1) != (void *)0 && (*(a1) = (stdscr)->_attrs)), (void)((a2) != (void *)0 && (*(a2) = ((int)(((((stdscr)->_attrs) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))))), (0)));
+}
+
+
+extern int call_attr_off (attr_t a1, void * z);
+int call_attr_off (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_off(stdscr,a1,z));
+}
+
+
+extern int call_attr_on (attr_t a1, void * z);
+int call_attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_on(stdscr,a1,z));
+}
+
+
+extern int call_attr_set (attr_t a1, short a2, void * z);
+int call_attr_set (attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, z)); returnCode(((stdscr)->_attrs = (((a1) & ~((((1UL) << 8) - 1UL) << ((0) + 8))) | ((a2) << ((0) + 8))), (0)));
+}
+
+
+extern int call_baudrate (void);
+int call_baudrate (void)
+{
+	T((T_CALLED("baudrate()"))); returnCode(baudrate());
+}
+
+
+extern int call_beep (void);
+int call_beep (void)
+{
+	T((T_CALLED("beep()"))); returnCode(beep());
+}
+
+
+extern int call_bkgd (chtype z);
+int call_bkgd (chtype z)
+{
+	T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,z));
+}
+
+
+extern void call_bkgdset (chtype z);
+void call_bkgdset (chtype z)
+{
+	T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,z);
+	returnVoid;
+}
+
+
+extern int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z);
+int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z)
+{
+	T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z));
+}
+
+
+extern int call_box (WINDOW * a1, chtype a2, chtype z);
+int call_box (WINDOW * a1, chtype a2, chtype z)
+{
+	T((T_CALLED("box(%p,%s,%s)"), a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0));
+}
+
+
+extern NCURSES_BOOL call_can_change_color (void);
+NCURSES_BOOL call_can_change_color (void)
+{
+	T((T_CALLED("can_change_color()"))); returnBool(can_change_color());
+}
+
+
+extern int call_cbreak (void);
+int call_cbreak (void)
+{
+	T((T_CALLED("cbreak()"))); returnCode(cbreak());
+}
+
+
+extern int call_chgat (int a1, attr_t a2, short a3, const void * z);
+int call_chgat (int a1, attr_t a2, short a3, const void * z)
+{
+	T((T_CALLED("chgat(%d,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(wchgat(stdscr,a1,a2,a3,z));
+}
+
+
+extern int call_clear (void);
+int call_clear (void)
+{
+	T((T_CALLED("clear()"))); returnCode(wclear(stdscr));
+}
+
+
+extern int call_clearok (WINDOW * a1, NCURSES_BOOL z);
+int call_clearok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("clearok(%p,%#lx)"), a1, (long)z)); returnCode(clearok(a1, z));
+}
+
+
+extern int call_clrtobot (void);
+int call_clrtobot (void)
+{
+	T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr));
+}
+
+
+extern int call_clrtoeol (void);
+int call_clrtoeol (void)
+{
+	T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr));
+}
+
+
+extern int call_color_content (short a1, short * a2, short * a3, short * z);
+int call_color_content (short a1, short * a2, short * a3, short * z)
+{
+	T((T_CALLED("color_content(%d,%p,%p,%p)"), a1, a2, a3, z)); returnCode(color_content(a1, a2, a3, z));
+}
+
+
+extern int call_color_set (short a1, void * z);
+int call_color_set (short a1, void * z)
+{
+	T((T_CALLED("color_set(%d,%p)"), a1, z)); returnCode(wcolor_set(stdscr,a1,z));
+}
+
+
+extern int call_COLOR_PAIR (int z);
+int call_COLOR_PAIR (int z)
+{
+	T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((z) << ((0) + 8)));
+}
+
+
+extern int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z);
+int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z)
+{
+	T((T_CALLED("copywin(%p,%p,%d,%d,%d,%d,%d,%d,%d)"), a1, a2, a3, a4, a5, a6, a7, a8, z)); returnCode(copywin(a1, a2, a3, a4, a5, a6, a7, a8, z));
+}
+
+
+extern int call_curs_set (int z);
+int call_curs_set (int z)
+{
+	T((T_CALLED("curs_set(%d)"), z)); returnCode(curs_set(z));
+}
+
+
+extern int call_def_prog_mode (void);
+int call_def_prog_mode (void)
+{
+	T((T_CALLED("def_prog_mode()"))); returnCode(def_prog_mode());
+}
+
+
+extern int call_def_shell_mode (void);
+int call_def_shell_mode (void)
+{
+	T((T_CALLED("def_shell_mode()"))); returnCode(def_shell_mode());
+}
+
+
+extern int call_delay_output (int z);
+int call_delay_output (int z)
+{
+	T((T_CALLED("delay_output(%d)"), z)); returnCode(delay_output(z));
+}
+
+
+extern int call_delch (void);
+int call_delch (void)
+{
+	T((T_CALLED("delch()"))); returnCode(wdelch(stdscr));
+}
+
+
+extern void call_delscreen (SCREEN * z);
+void call_delscreen (SCREEN * z)
+{
+	T((T_CALLED("delscreen(%p)"), z)); delscreen(z);
+	returnVoid;
+}
+
+
+extern int call_delwin (WINDOW * z);
+int call_delwin (WINDOW * z)
+{
+	T((T_CALLED("delwin(%p)"), z)); returnCode(delwin(z));
+}
+
+
+extern int call_deleteln (void);
+int call_deleteln (void)
+{
+	T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1));
+}
+
+
+extern WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("(%p,%d,%d,%d,%d)"), a1, a2, a3, a4, z)); returnWin(derwin(a1, a2, a3, a4, z));
+}
+
+
+extern int call_doupdate (void);
+int call_doupdate (void)
+{
+	T((T_CALLED("doupdate()"))); returnCode(doupdate());
+}
+
+
+extern WINDOW * call_dupwin (WINDOW * z);
+WINDOW * call_dupwin (WINDOW * z)
+{
+	T((T_CALLED("(%p)"), z)); returnWin(dupwin(z));
+}
+
+
+extern int call_echo (void);
+int call_echo (void)
+{
+	T((T_CALLED("echo()"))); returnCode(echo());
+}
+
+
+extern int call_echochar (const chtype z);
+int call_echochar (const chtype z)
+{
+	T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,z));
+}
+
+
+extern int call_erase (void);
+int call_erase (void)
+{
+	T((T_CALLED("erase()"))); returnCode(werase(stdscr));
+}
+
+
+extern int call_endwin (void);
+int call_endwin (void)
+{
+	T((T_CALLED("endwin()"))); returnCode(endwin());
+}
+
+
+extern char call_erasechar (void);
+char call_erasechar (void)
+{
+	T((T_CALLED("erasechar()"))); returnCode(erasechar());
+}
+
+
+extern void call_filter (void);
+void call_filter (void)
+{
+	T((T_CALLED("filter()"))); filter();
+	returnVoid;
+}
+
+
+extern int call_flash (void);
+int call_flash (void)
+{
+	T((T_CALLED("flash()"))); returnCode(flash());
+}
+
+
+extern int call_flushinp (void);
+int call_flushinp (void)
+{
+	T((T_CALLED("flushinp()"))); returnCode(flushinp());
+}
+
+
+extern chtype call_getbkgd (WINDOW * z);
+chtype call_getbkgd (WINDOW * z)
+{
+	T((T_CALLED("getbkgd(%p)"), z)); returnChar(((z)->_bkgd));
+}
+
+
+extern int call_getch (void);
+int call_getch (void)
+{
+	T((T_CALLED("getch()"))); returnCode(wgetch(stdscr));
+}
+
+
+extern int call_getnstr (char * a1, int z);
+int call_getnstr (char * a1, int z)
+{
+	T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, z));
+}
+
+
+extern int call_getstr (char * z);
+int call_getstr (char * z)
+{
+	T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, z, -1));
+}
+
+
+extern WINDOW * call_getwin (FILE * z);
+WINDOW * call_getwin (FILE * z)
+{
+	T((T_CALLED("(%p)"), z)); returnWin(getwin(z));
+}
+
+
+extern int call_halfdelay (int z);
+int call_halfdelay (int z)
+{
+	T((T_CALLED("halfdelay(%d)"), z)); returnCode(halfdelay(z));
+}
+
+
+extern NCURSES_BOOL call_has_colors (void);
+NCURSES_BOOL call_has_colors (void)
+{
+	T((T_CALLED("has_colors()"))); returnBool(has_colors());
+}
+
+
+extern NCURSES_BOOL call_has_ic (void);
+NCURSES_BOOL call_has_ic (void)
+{
+	T((T_CALLED("has_ic()"))); returnBool(has_ic());
+}
+
+
+extern NCURSES_BOOL call_has_il (void);
+NCURSES_BOOL call_has_il (void)
+{
+	T((T_CALLED("has_il()"))); returnBool(has_il());
+}
+
+
+extern int call_hline (chtype a1, int z);
+int call_hline (chtype a1, int z)
+{
+	T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, z));
+}
+
+
+extern void call_idcok (WINDOW * a1, NCURSES_BOOL z);
+void call_idcok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("idcok(%p,%#lx)"), a1, (long)z)); idcok(a1, z);
+	returnVoid;
+}
+
+
+extern int call_idlok (WINDOW * a1, NCURSES_BOOL z);
+int call_idlok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("idlok(%p,%#lx)"), a1, (long)z)); returnCode(idlok(a1, z));
+}
+
+
+extern void call_immedok (WINDOW * a1, NCURSES_BOOL z);
+void call_immedok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("immedok(%p,%#lx)"), a1, (long)z)); immedok(a1, z);
+	returnVoid;
+}
+
+
+extern chtype call_inch (void);
+chtype call_inch (void)
+{
+	T((T_CALLED("inch()"))); returnChar(winch(stdscr));
+}
+
+
+extern int call_inchnstr (chtype * a1, int z);
+int call_inchnstr (chtype * a1, int z)
+{
+	T((T_CALLED("inchnstr(%p,%d)"), a1, z)); returnCode(winchnstr(stdscr,a1,z));
+}
+
+
+extern int call_inchstr (chtype * z);
+int call_inchstr (chtype * z)
+{
+	T((T_CALLED("inchstr(%p)"), z)); returnCode(winchnstr(stdscr, z, -1));
+}
+
+
+extern WINDOW * call_initscr (void);
+WINDOW * call_initscr (void)
+{
+	T((T_CALLED("()"))); returnWin(initscr());
+}
+
+
+extern int call_init_color (short a1, short a2, short a3, short z);
+int call_init_color (short a1, short a2, short a3, short z)
+{
+	T((T_CALLED("init_color(%d,%d,%d,%d)"), a1, a2, a3, z)); returnCode(init_color(a1, a2, a3, z));
+}
+
+
+extern int call_init_pair (short a1, short a2, short z);
+int call_init_pair (short a1, short a2, short z)
+{
+	T((T_CALLED("init_pair(%d,%d,%d)"), a1, a2, z)); returnCode(init_pair(a1, a2, z));
+}
+
+
+extern int call_innstr (char * a1, int z);
+int call_innstr (char * a1, int z)
+{
+	return winnstr(stdscr,a1,z) ;
+}
+
+
+extern int call_insch (chtype z);
+int call_insch (chtype z)
+{
+	T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,z));
+}
+
+
+extern int call_insdelln (int z);
+int call_insdelln (int z)
+{
+	T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,z));
+}
+
+
+extern int call_insertln (void);
+int call_insertln (void)
+{
+	T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1));
+}
+
+
+extern int call_insnstr (const char * a1, int z);
+int call_insnstr (const char * a1, int z)
+{
+	T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,a1,z));
+}
+
+
+extern int call_insstr (const char * z);
+int call_insstr (const char * z)
+{
+	T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, z, -1));
+}
+
+
+extern int call_instr (char * z);
+int call_instr (char * z)
+{
+	T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, z, -1));
+}
+
+
+extern int call_intrflush (WINDOW * a1, NCURSES_BOOL z);
+int call_intrflush (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("intrflush(%p,%#lx)"), a1, (long)z)); returnCode(intrflush(a1, z));
+}
+
+
+extern NCURSES_BOOL call_isendwin (void);
+NCURSES_BOOL call_isendwin (void)
+{
+	T((T_CALLED("isendwin()"))); returnBool(isendwin());
+}
+
+
+extern NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z);
+NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z)
+{
+	T((T_CALLED("is_linetouched(%p,%d)"), a1, z)); returnBool(is_linetouched(a1, z));
+}
+
+
+extern NCURSES_BOOL call_is_wintouched (WINDOW * z);
+NCURSES_BOOL call_is_wintouched (WINDOW * z)
+{
+	T((T_CALLED("is_wintouched(%p)"), z)); returnBool(is_wintouched(z));
+}
+
+
+extern char * call_keyname (int z);
+char * call_keyname (int z)
+{
+	T((T_CALLED("(%d)"), z)); returnPtr(keyname(z));
+}
+
+
+extern int call_keypad (WINDOW * a1, NCURSES_BOOL z);
+int call_keypad (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("keypad(%p,%#lx)"), a1, (long)z)); returnCode(keypad(a1, z));
+}
+
+
+extern char call_killchar (void);
+char call_killchar (void)
+{
+	T((T_CALLED("killchar()"))); returnCode(killchar());
+}
+
+
+extern int call_leaveok (WINDOW * a1, NCURSES_BOOL z);
+int call_leaveok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("leaveok(%p,%#lx)"), a1, (long)z)); returnCode(leaveok(a1, z));
+}
+
+
+extern char * call_longname (void);
+char * call_longname (void)
+{
+	T((T_CALLED("()"))); returnPtr(longname());
+}
+
+
+extern int call_meta (WINDOW * a1, NCURSES_BOOL z);
+int call_meta (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("meta(%p,%#lx)"), a1, (long)z)); returnCode(meta(a1, z));
+}
+
+
+extern int call_move (int a1, int z);
+int call_move (int a1, int z)
+{
+	T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,a1,z));
+}
+
+
+extern int call_mvaddch (int a1, int a2, const chtype z);
+int call_mvaddch (int a1, int a2, const chtype z)
+{
+	T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddch(stdscr,z)));
+}
+
+
+extern int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z);
+int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z)
+{
+	T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,a3,z)));
+}
+
+
+extern int call_mvaddchstr (int a1, int a2, const chtype * z);
+int call_mvaddchstr (int a1, int a2, const chtype * z)
+{
+	T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,z,-1)));
+}
+
+
+extern int call_mvaddnstr (int a1, int a2, const char * a3, int z);
+int call_mvaddnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,a3,z)));
+}
+
+
+extern int call_mvaddstr (int a1, int a2, const char * z);
+int call_mvaddstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,z,-1)));
+}
+
+
+extern int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z);
+int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z)
+{
+	T((T_CALLED("mvchgat(%d,%d,%d,%s,%d,%p)"), a1, a2, a3, _traceattr2(3,a4), a5, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wchgat(stdscr,a3,a4,a5,z)));
+}
+
+
+extern int call_mvcur (int a1, int a2, int a3, int z);
+int call_mvcur (int a1, int a2, int a3, int z)
+{
+	T((T_CALLED("mvcur(%d,%d,%d,%d)"), a1, a2, a3, z)); returnCode(mvcur(a1, a2, a3, z));
+}
+
+
+extern int call_mvdelch (int a1, int z);
+int call_mvdelch (int a1, int z)
+{
+	T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wdelch(stdscr)));
+}
+
+
+extern int call_mvderwin (WINDOW * a1, int a2, int z);
+int call_mvderwin (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvderwin(%p,%d,%d)"), a1, a2, z)); returnCode(mvderwin(a1, a2, z));
+}
+
+
+extern int call_mvgetch (int a1, int z);
+int call_mvgetch (int a1, int z)
+{
+	T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wgetch(stdscr)));
+}
+
+
+extern int call_mvgetnstr (int a1, int a2, char * a3, int z);
+int call_mvgetnstr (int a1, int a2, char * a3, int z)
+{
+	T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr,a3,z)));
+}
+
+
+extern int call_mvgetstr (int a1, int a2, char * z);
+int call_mvgetstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr, z, -1)));
+}
+
+
+extern int call_mvhline (int a1, int a2, chtype a3, int z);
+int call_mvhline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline(stdscr,a3,z)));
+}
+
+
+extern chtype call_mvinch (int a1, int z);
+chtype call_mvinch (int a1, int z)
+{
+	T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChar((wmove(stdscr,a1,z) == (-1) ? (chtype)((-1)) : winch(stdscr)));
+}
+
+
+extern int call_mvinchnstr (int a1, int a2, chtype * a3, int z);
+int call_mvinchnstr (int a1, int a2, chtype * a3, int z)
+{
+	T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr,a3,z)));
+}
+
+
+extern int call_mvinchstr (int a1, int a2, chtype * z);
+int call_mvinchstr (int a1, int a2, chtype * z)
+{
+	T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr, z, -1)));
+}
+
+
+extern int call_mvinnstr (int a1, int a2, char * a3, int z);
+int call_mvinnstr (int a1, int a2, char * a3, int z)
+{
+	return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr,a3,z)) ;
+}
+
+
+extern int call_mvinsch (int a1, int a2, chtype z);
+int call_mvinsch (int a1, int a2, chtype z)
+{
+	T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsch(stdscr,z)));
+}
+
+
+extern int call_mvinsnstr (int a1, int a2, const char * a3, int z);
+int call_mvinsnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr,a3,z)));
+}
+
+
+extern int call_mvinsstr (int a1, int a2, const char * z);
+int call_mvinsstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr, z, -1)));
+}
+
+
+extern int call_mvinstr (int a1, int a2, char * z);
+int call_mvinstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr, z, -1)));
+}
+
+
+extern int call_mvvline (int a1, int a2, chtype a3, int z);
+int call_mvvline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline(stdscr,a3,z)));
+}
+
+
+extern int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z);
+int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z)
+{
+	T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddch(a1,z)));
+}
+
+
+extern int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z);
+int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z)
+{
+	T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,a4,z)));
+}
+
+
+extern int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z);
+int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z)
+{
+	T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,z,-1)));
+}
+
+
+extern int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z);
+int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,a4,z)));
+}
+
+
+extern int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z);
+int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,z,-1)));
+}
+
+
+extern int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z);
+int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z)
+{
+	T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%d,%p)"), a1, a2, a3, a4, _traceattr2(4,a5), a6, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wchgat(a1,a4,a5,a6,z)));
+}
+
+
+extern int call_mvwdelch (WINDOW * a1, int a2, int z);
+int call_mvwdelch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwdelch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wdelch(a1)));
+}
+
+
+extern int call_mvwgetch (WINDOW * a1, int a2, int z);
+int call_mvwgetch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwgetch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wgetch(a1)));
+}
+
+
+extern int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z);
+int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1,a4,z)));
+}
+
+
+extern int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z);
+int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1, z, -1)));
+}
+
+
+extern int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z);
+int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline(a1,a4,z)));
+}
+
+
+extern int call_mvwin (WINDOW * a1, int a2, int z);
+int call_mvwin (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwin(%p,%d,%d)"), a1, a2, z)); returnCode(mvwin(a1, a2, z));
+}
+
+
+extern chtype call_mvwinch (WINDOW * a1, int a2, int z);
+chtype call_mvwinch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwinch(%p,%d,%d)"), a1, a2, z)); returnChar((wmove(a1,a2,z) == (-1) ? (chtype)((-1)) : winch(a1)));
+}
+
+
+extern int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z);
+int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z)
+{
+	T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1,a4,z)));
+}
+
+
+extern int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z);
+int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z)
+{
+	T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1, z, -1)));
+}
+
+
+extern int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z);
+int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	return (wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1,a4,z)) ;
+}
+
+
+extern int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z);
+int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z)
+{
+	T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsch(a1,z)));
+}
+
+
+extern int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z);
+int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1,a4,z)));
+}
+
+
+extern int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z);
+int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1, z, -1)));
+}
+
+
+extern int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z);
+int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1, z, -1)));
+}
+
+
+extern int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z);
+int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline(a1,a4,z)));
+}
+
+
+extern int call_napms (int z);
+int call_napms (int z)
+{
+	T((T_CALLED("napms(%d)"), z)); returnCode(napms(z));
+}
+
+
+extern WINDOW * call_newpad (int a1, int z);
+WINDOW * call_newpad (int a1, int z)
+{
+	T((T_CALLED("(%d,%d)"), a1, z)); returnWin(newpad(a1, z));
+}
+
+
+extern SCREEN * call_newterm (char * a1, FILE * a2, FILE * z);
+SCREEN * call_newterm (char * a1, FILE * a2, FILE * z)
+{
+	T((T_CALLED("(%s,%p,%p)"), _nc_visbuf2(0,a1), a2, z)); returnSP(newterm(a1, a2, z));
+}
+
+
+extern WINDOW * call_newwin (int a1, int a2, int a3, int z);
+WINDOW * call_newwin (int a1, int a2, int a3, int z)
+{
+	T((T_CALLED("(%d,%d,%d,%d)"), a1, a2, a3, z)); returnWin(newwin(a1, a2, a3, z));
+}
+
+
+extern int call_nl (void);
+int call_nl (void)
+{
+	T((T_CALLED("nl()"))); returnCode(nl());
+}
+
+
+extern int call_nocbreak (void);
+int call_nocbreak (void)
+{
+	T((T_CALLED("nocbreak()"))); returnCode(nocbreak());
+}
+
+
+extern int call_nodelay (WINDOW * a1, NCURSES_BOOL z);
+int call_nodelay (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("nodelay(%p,%#lx)"), a1, (long)z)); returnCode(nodelay(a1, z));
+}
+
+
+extern int call_noecho (void);
+int call_noecho (void)
+{
+	T((T_CALLED("noecho()"))); returnCode(noecho());
+}
+
+
+extern int call_nonl (void);
+int call_nonl (void)
+{
+	T((T_CALLED("nonl()"))); returnCode(nonl());
+}
+
+
+extern void call_noqiflush (void);
+void call_noqiflush (void)
+{
+	T((T_CALLED("noqiflush()"))); noqiflush();
+	returnVoid;
+}
+
+
+extern int call_noraw (void);
+int call_noraw (void)
+{
+	T((T_CALLED("noraw()"))); returnCode(noraw());
+}
+
+
+extern int call_notimeout (WINDOW * a1, NCURSES_BOOL z);
+int call_notimeout (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("notimeout(%p,%#lx)"), a1, (long)z)); returnCode(notimeout(a1, z));
+}
+
+
+extern int call_overlay (const WINDOW * a1, WINDOW * z);
+int call_overlay (const WINDOW * a1, WINDOW * z)
+{
+	T((T_CALLED("overlay(%p,%p)"), a1, z)); returnCode(overlay(a1, z));
+}
+
+
+extern int call_overwrite (const WINDOW * a1, WINDOW * z);
+int call_overwrite (const WINDOW * a1, WINDOW * z)
+{
+	T((T_CALLED("overwrite(%p,%p)"), a1, z)); returnCode(overwrite(a1, z));
+}
+
+
+extern int call_pair_content (short a1, short * a2, short * z);
+int call_pair_content (short a1, short * a2, short * z)
+{
+	T((T_CALLED("pair_content(%d,%p,%p)"), a1, a2, z)); returnCode(pair_content(a1, a2, z));
+}
+
+
+extern int call_PAIR_NUMBER (int z);
+int call_PAIR_NUMBER (int z)
+{
+	T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((z) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))));
+}
+
+
+extern int call_pechochar (WINDOW * a1, const chtype z);
+int call_pechochar (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("pechochar(%p,%s)"), a1, _tracechtype2(1,z))); returnCode(pechochar(a1, z));
+}
+
+
+extern int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z);
+int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z)
+{
+	T((T_CALLED("pnoutrefresh(%p,%d,%d,%d,%d,%d,%d)"), a1, a2, a3, a4, a5, a6, z)); returnCode(pnoutrefresh(a1, a2, a3, a4, a5, a6, z));
+}
+
+
+extern int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z);
+int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z)
+{
+	T((T_CALLED("prefresh(%p,%d,%d,%d,%d,%d,%d)"), a1, a2, a3, a4, a5, a6, z)); returnCode(prefresh(a1, a2, a3, a4, a5, a6, z));
+}
+
+
+extern int call_putwin (WINDOW * a1, FILE * z);
+int call_putwin (WINDOW * a1, FILE * z)
+{
+	T((T_CALLED("putwin(%p,%p)"), a1, z)); returnCode(putwin(a1, z));
+}
+
+
+extern void call_qiflush (void);
+void call_qiflush (void)
+{
+	T((T_CALLED("qiflush()"))); qiflush();
+	returnVoid;
+}
+
+
+extern int call_raw (void);
+int call_raw (void)
+{
+	T((T_CALLED("raw()"))); returnCode(raw());
+}
+
+
+extern int call_redrawwin (WINDOW * z);
+int call_redrawwin (WINDOW * z)
+{
+	T((T_CALLED("redrawwin(%p)"), z)); returnCode(wredrawln(z, 0, (z)->_maxy+1));
+}
+
+
+extern int call_refresh (void);
+int call_refresh (void)
+{
+	T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr));
+}
+
+
+extern int call_resetty (void);
+int call_resetty (void)
+{
+	T((T_CALLED("resetty()"))); returnCode(resetty());
+}
+
+
+extern int call_reset_prog_mode (void);
+int call_reset_prog_mode (void)
+{
+	T((T_CALLED("reset_prog_mode()"))); returnCode(reset_prog_mode());
+}
+
+
+extern int call_reset_shell_mode (void);
+int call_reset_shell_mode (void)
+{
+	T((T_CALLED("reset_shell_mode()"))); returnCode(reset_shell_mode());
+}
+
+
+extern int call_ripoffline (int a1, int(* z)(WINDOW * a2, int));
+int call_ripoffline (int a1, int(* z)(WINDOW * a2, int))
+{
+	return ripoffline(a1, z) ;
+}
+
+
+extern int call_savetty (void);
+int call_savetty (void)
+{
+	T((T_CALLED("savetty()"))); returnCode(savetty());
+}
+
+
+extern int call_scr_dump (const char * z);
+int call_scr_dump (const char * z)
+{
+	T((T_CALLED("scr_dump(%s)"), _nc_visbuf2(0,z))); returnCode(scr_dump(z));
+}
+
+
+extern int call_scr_init (const char * z);
+int call_scr_init (const char * z)
+{
+	T((T_CALLED("scr_init(%s)"), _nc_visbuf2(0,z))); returnCode(scr_init(z));
+}
+
+
+extern int call_scrl (int z);
+int call_scrl (int z)
+{
+	T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,z));
+}
+
+
+extern int call_scroll (WINDOW * z);
+int call_scroll (WINDOW * z)
+{
+	T((T_CALLED("scroll(%p)"), z)); returnCode(wscrl(z,1));
+}
+
+
+extern int call_scrollok (WINDOW * a1, NCURSES_BOOL z);
+int call_scrollok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("scrollok(%p,%#lx)"), a1, (long)z)); returnCode(scrollok(a1, z));
+}
+
+
+extern int call_scr_restore (const char * z);
+int call_scr_restore (const char * z)
+{
+	T((T_CALLED("scr_restore(%s)"), _nc_visbuf2(0,z))); returnCode(scr_restore(z));
+}
+
+
+extern int call_scr_set (const char * z);
+int call_scr_set (const char * z)
+{
+	T((T_CALLED("scr_set(%s)"), _nc_visbuf2(0,z))); returnCode(scr_set(z));
+}
+
+
+extern int call_setscrreg (int a1, int z);
+int call_setscrreg (int a1, int z)
+{
+	T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,a1,z));
+}
+
+
+extern SCREEN * call_set_term (SCREEN * z);
+SCREEN * call_set_term (SCREEN * z)
+{
+	T((T_CALLED("(%p)"), z)); returnSP(set_term(z));
+}
+
+
+extern int call_slk_attroff (const chtype z);
+int call_slk_attroff (const chtype z)
+{
+	T((T_CALLED("slk_attroff(%s)"), _tracechtype2(0,z))); returnCode(slk_attroff(z));
+}
+
+
+#if USE_WIDEC_SUPPORT
+extern int call_slk_attr_off (const attr_t a1, void * z);
+int call_slk_attr_off (const attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attroff(a1)));
+}
+#endif
+
+
+extern int call_slk_attron (const chtype z);
+int call_slk_attron (const chtype z)
+{
+	T((T_CALLED("slk_attron(%s)"), _tracechtype2(0,z))); returnCode(slk_attron(z));
+}
+
+
+#if USE_WIDEC_SUPPORT
+extern int call_slk_attr_on (attr_t a1, void * z);
+int call_slk_attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attron(a1)));
+}
+#endif
+
+
+extern int call_slk_attrset (const chtype z);
+int call_slk_attrset (const chtype z)
+{
+	T((T_CALLED("slk_attrset(%s)"), _tracechtype2(0,z))); returnCode(slk_attrset(z));
+}
+
+
+extern attr_t call_slk_attr (void);
+attr_t call_slk_attr (void)
+{
+	T((T_CALLED("slk_attr()"))); returnAttr(slk_attr());
+}
+
+
+extern int call_slk_attr_set (const attr_t a1, short a2, void * z);
+int call_slk_attr_set (const attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("slk_attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, z)); returnCode(slk_attr_set(a1, a2, z));
+}
+
+
+extern int call_slk_clear (void);
+int call_slk_clear (void)
+{
+	T((T_CALLED("slk_clear()"))); returnCode(slk_clear());
+}
+
+
+extern int call_slk_color (short z);
+int call_slk_color (short z)
+{
+	T((T_CALLED("slk_color(%d)"), z)); returnCode(slk_color(z));
+}
+
+
+extern int call_slk_init (int z);
+int call_slk_init (int z)
+{
+	T((T_CALLED("slk_init(%d)"), z)); returnCode(slk_init(z));
+}
+
+
+extern char * call_slk_label (int z);
+char * call_slk_label (int z)
+{
+	T((T_CALLED("(%d)"), z)); returnPtr(slk_label(z));
+}
+
+
+extern int call_slk_noutrefresh (void);
+int call_slk_noutrefresh (void)
+{
+	T((T_CALLED("slk_noutrefresh()"))); returnCode(slk_noutrefresh());
+}
+
+
+extern int call_slk_refresh (void);
+int call_slk_refresh (void)
+{
+	T((T_CALLED("slk_refresh()"))); returnCode(slk_refresh());
+}
+
+
+extern int call_slk_restore (void);
+int call_slk_restore (void)
+{
+	T((T_CALLED("slk_restore()"))); returnCode(slk_restore());
+}
+
+
+extern int call_slk_set (int a1, const char * a2, int z);
+int call_slk_set (int a1, const char * a2, int z)
+{
+	T((T_CALLED("slk_set(%d,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(slk_set(a1, a2, z));
+}
+
+
+extern int call_slk_touch (void);
+int call_slk_touch (void)
+{
+	T((T_CALLED("slk_touch()"))); returnCode(slk_touch());
+}
+
+
+extern int call_standout (void);
+int call_standout (void)
+{
+	T((T_CALLED("standout()"))); returnAttr((((stdscr)->_attrs = (((1UL) << ((8) + 8))))));
+}
+
+
+extern int call_standend (void);
+int call_standend (void)
+{
+	T((T_CALLED("standend()"))); returnAttr((((stdscr)->_attrs = ((1UL - 1UL)))));
+}
+
+
+extern int call_start_color (void);
+int call_start_color (void)
+{
+	T((T_CALLED("start_color()"))); returnCode(start_color());
+}
+
+
+extern WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("(%p,%d,%d,%d,%d)"), a1, a2, a3, a4, z)); returnWin(subpad(a1, a2, a3, a4, z));
+}
+
+
+extern WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("(%p,%d,%d,%d,%d)"), a1, a2, a3, a4, z)); returnWin(subwin(a1, a2, a3, a4, z));
+}
+
+
+extern int call_syncok (WINDOW * a1, NCURSES_BOOL z);
+int call_syncok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("syncok(%p,%#lx)"), a1, (long)z)); returnCode(syncok(a1, z));
+}
+
+
+extern chtype call_termattrs (void);
+chtype call_termattrs (void)
+{
+	T((T_CALLED("termattrs()"))); returnChar(termattrs());
+}
+
+
+extern char * call_termname (void);
+char * call_termname (void)
+{
+	T((T_CALLED("()"))); returnPtr(termname());
+}
+
+
+extern void call_timeout (int z);
+void call_timeout (int z)
+{
+	T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,z);
+	returnVoid;
+}
+
+
+extern int call_touchline (WINDOW * a1, int a2, int z);
+int call_touchline (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("touchline(%p,%d,%d)"), a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1));
+}
+
+
+extern int call_touchwin (WINDOW * z);
+int call_touchwin (WINDOW * z)
+{
+	T((T_CALLED("touchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1));
+}
+
+
+extern int call_typeahead (int z);
+int call_typeahead (int z)
+{
+	T((T_CALLED("typeahead(%d)"), z)); returnCode(typeahead(z));
+}
+
+
+extern int call_ungetch (int z);
+int call_ungetch (int z)
+{
+	T((T_CALLED("ungetch(%d)"), z)); returnCode(ungetch(z));
+}
+
+
+extern int call_untouchwin (WINDOW * z);
+int call_untouchwin (WINDOW * z)
+{
+	T((T_CALLED("untouchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0));
+}
+
+
+extern void call_use_env (NCURSES_BOOL z);
+void call_use_env (NCURSES_BOOL z)
+{
+	T((T_CALLED("use_env(%#lx)"), (long)z)); use_env(z);
+	returnVoid;
+}
+
+
+extern int call_vidattr (chtype z);
+int call_vidattr (chtype z)
+{
+	T((T_CALLED("vidattr(%s)"), _tracechtype2(0,z))); returnCode(vidattr(z));
+}
+
+
+extern int call_vidputs (chtype a1, int(* z)(int));
+int call_vidputs (chtype a1, int(* z)(int))
+{
+	T((T_CALLED("vidputs(%s,"), _tracechtype2(0,a1))); returnCode(vidputs(a1, z));
+}
+
+
+extern int call_vline (chtype a1, int z);
+int call_vline (chtype a1, int z)
+{
+	T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, z));
+}
+
+
+extern int call_vwprintw (WINDOW * a1, const char * a2, va_list z);
+int call_vwprintw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vwprintw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+extern int call_vw_printw (WINDOW * a1, const char * a2, va_list z);
+int call_vw_printw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_printw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+extern int call_vwscanw (WINDOW * a1, char * a2, va_list z);
+int call_vwscanw (WINDOW * a1, char * a2, va_list z)
+{
+	T((T_CALLED("vwscanw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+extern int call_vw_scanw (WINDOW * a1, char * a2, va_list z);
+int call_vw_scanw (WINDOW * a1, char * a2, va_list z)
+{
+	T((T_CALLED("vw_scanw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+extern int call_waddch (WINDOW * a1, const chtype z);
+int call_waddch (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("waddch(%p,%s)"), a1, _tracechtype2(1,z))); returnCode(waddch(a1, z));
+}
+
+
+extern int call_waddchnstr (WINDOW * a1, const chtype * a2, int z);
+int call_waddchnstr (WINDOW * a1, const chtype * a2, int z)
+{
+	T((T_CALLED("waddchnstr(%p,%p,%d)"), a1, a2, z)); returnCode(waddchnstr(a1, a2, z));
+}
+
+
+extern int call_waddchstr (WINDOW * a1, const chtype * z);
+int call_waddchstr (WINDOW * a1, const chtype * z)
+{
+	T((T_CALLED("waddchstr(%p,%p)"), a1, z)); returnCode(waddchnstr(a1,z,-1));
+}
+
+
+extern int call_waddnstr (WINDOW * a1, const char * a2, int z);
+int call_waddnstr (WINDOW * a1, const char * a2, int z)
+{
+	T((T_CALLED("waddnstr(%p,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(waddnstr(a1, a2, z));
+}
+
+
+extern int call_waddstr (WINDOW * a1, const char * z);
+int call_waddstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("waddstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1));
+}
+
+
+extern int call_wattron (WINDOW * a1, int z);
+int call_wattron (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattron(%p,%d)"), a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void *)0)));
+}
+
+
+extern int call_wattroff (WINDOW * a1, int z);
+int call_wattroff (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattroff(%p,%d)"), a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void *)0)));
+}
+
+
+extern int call_wattrset (WINDOW * a1, int z);
+int call_wattrset (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattrset(%p,%d)"), a1, z)); returnAttr(((a1)->_attrs = (z)));
+}
+
+
+extern int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z);
+int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z)
+{
+	T((T_CALLED("wattr_get(%p,%p,%p,%p)"), a1, a2, a3, z)); returnCode(((void)((a2) != (void *)0 && (*(a2) = (a1)->_attrs)), (void)((a3) != (void *)0 && (*(a3) = ((int)(((((a1)->_attrs) & ((((1UL) << 8) - 1UL) << ((0) + 8))) >> 8))))), (0)));
+}
+
+
+extern int call_wattr_on (WINDOW * a1, attr_t a2, void * z);
+int call_wattr_on (WINDOW * a1, attr_t a2, void * z)
+{
+	T((T_CALLED("wattr_on(%p,%s,%p)"), a1, _traceattr2(1,a2), z)); returnCode(wattr_on(a1, a2, z));
+}
+
+
+extern int call_wattr_off (WINDOW * a1, attr_t a2, void * z);
+int call_wattr_off (WINDOW * a1, attr_t a2, void * z)
+{
+	T((T_CALLED("wattr_off(%p,%s,%p)"), a1, _traceattr2(1,a2), z)); returnCode(wattr_off(a1, a2, z));
+}
+
+
+extern int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z);
+int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z)
+{
+	T((T_CALLED("wattr_set(%p,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(((a1)->_attrs = (((a2) & ~((((1UL) << 8) - 1UL) << ((0) + 8))) | ((a3) << ((0) + 8))), (0)));
+}
+
+
+extern int call_wbkgd (WINDOW * a1, chtype z);
+int call_wbkgd (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("wbkgd(%p,%s)"), a1, _tracechtype2(1,z))); returnCode(wbkgd(a1, z));
+}
+
+
+extern void call_wbkgdset (WINDOW * a1, chtype z);
+void call_wbkgdset (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("wbkgdset(%p,%s)"), a1, _tracechtype2(1,z))); wbkgdset(a1, z);
+	returnVoid;
+}
+
+
+extern int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z);
+int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z)
+{
+	T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), a1, _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,a8), _tracechtype2(8,z))); returnCode(wborder(a1, a2, a3, a4, a5, a6, a7, a8, z));
+}
+
+
+extern int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z);
+int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z)
+{
+	T((T_CALLED("wchgat(%p,%d,%s,%d,%p)"), a1, a2, _traceattr2(2,a3), a4, z)); returnCode(wchgat(a1, a2, a3, a4, z));
+}
+
+
+extern int call_wclear (WINDOW * z);
+int call_wclear (WINDOW * z)
+{
+	T((T_CALLED("wclear(%p)"), z)); returnCode(wclear(z));
+}
+
+
+extern int call_wclrtobot (WINDOW * z);
+int call_wclrtobot (WINDOW * z)
+{
+	T((T_CALLED("wclrtobot(%p)"), z)); returnCode(wclrtobot(z));
+}
+
+
+extern int call_wclrtoeol (WINDOW * z);
+int call_wclrtoeol (WINDOW * z)
+{
+	T((T_CALLED("wclrtoeol(%p)"), z)); returnCode(wclrtoeol(z));
+}
+
+
+extern int call_wcolor_set (WINDOW * a1, short a2, void * z);
+int call_wcolor_set (WINDOW * a1, short a2, void * z)
+{
+	T((T_CALLED("wcolor_set(%p,%d,%p)"), a1, a2, z)); returnCode(wcolor_set(a1, a2, z));
+}
+
+
+extern void call_wcursyncup (WINDOW * z);
+void call_wcursyncup (WINDOW * z)
+{
+	T((T_CALLED("wcursyncup(%p)"), z)); wcursyncup(z);
+	returnVoid;
+}
+
+
+extern int call_wdelch (WINDOW * z);
+int call_wdelch (WINDOW * z)
+{
+	T((T_CALLED("wdelch(%p)"), z)); returnCode(wdelch(z));
+}
+
+
+extern int call_wdeleteln (WINDOW * z);
+int call_wdeleteln (WINDOW * z)
+{
+	T((T_CALLED("wdeleteln(%p)"), z)); returnCode(winsdelln(z,-1));
+}
+
+
+extern int call_wechochar (WINDOW * a1, const chtype z);
+int call_wechochar (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("wechochar(%p,%s)"), a1, _tracechtype2(1,z))); returnCode(wechochar(a1, z));
+}
+
+
+extern int call_werase (WINDOW * z);
+int call_werase (WINDOW * z)
+{
+	T((T_CALLED("werase(%p)"), z)); returnCode(werase(z));
+}
+
+
+extern int call_wgetch (WINDOW * z);
+int call_wgetch (WINDOW * z)
+{
+	T((T_CALLED("wgetch(%p)"), z)); returnCode(wgetch(z));
+}
+
+
+extern int call_wgetnstr (WINDOW * a1, char * a2, int z);
+int call_wgetnstr (WINDOW * a1, char * a2, int z)
+{
+	T((T_CALLED("wgetnstr(%p,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(wgetnstr(a1, a2, z));
+}
+
+
+extern int call_wgetstr (WINDOW * a1, char * z);
+int call_wgetstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("wgetstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1));
+}
+
+
+extern int call_whline (WINDOW * a1, chtype a2, int z);
+int call_whline (WINDOW * a1, chtype a2, int z)
+{
+	T((T_CALLED("whline(%p,%s,%d)"), a1, _tracechtype2(1,a2), z)); returnCode(whline(a1, a2, z));
+}
+
+
+extern chtype call_winch (WINDOW * z);
+chtype call_winch (WINDOW * z)
+{
+	T((T_CALLED("winch(%p)"), z)); returnChar(winch(z));
+}
+
+
+extern int call_winchnstr (WINDOW * a1, chtype * a2, int z);
+int call_winchnstr (WINDOW * a1, chtype * a2, int z)
+{
+	T((T_CALLED("winchnstr(%p,%p,%d)"), a1, a2, z)); returnCode(winchnstr(a1, a2, z));
+}
+
+
+extern int call_winchstr (WINDOW * a1, chtype * z);
+int call_winchstr (WINDOW * a1, chtype * z)
+{
+	T((T_CALLED("winchstr(%p,%p)"), a1, z)); returnCode(winchnstr(a1, z, -1));
+}
+
+
+extern int call_winnstr (WINDOW * a1, char * a2, int z);
+int call_winnstr (WINDOW * a1, char * a2, int z)
+{
+	return winnstr(a1, a2, z) ;
+}
+
+
+extern int call_winsch (WINDOW * a1, chtype z);
+int call_winsch (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("winsch(%p,%s)"), a1, _tracechtype2(1,z))); returnCode(winsch(a1, z));
+}
+
+
+extern int call_winsdelln (WINDOW * a1, int z);
+int call_winsdelln (WINDOW * a1, int z)
+{
+	T((T_CALLED("winsdelln(%p,%d)"), a1, z)); returnCode(winsdelln(a1, z));
+}
+
+
+extern int call_winsertln (WINDOW * z);
+int call_winsertln (WINDOW * z)
+{
+	T((T_CALLED("winsertln(%p)"), z)); returnCode(winsdelln(z,1));
+}
+
+
+extern int call_winsnstr (WINDOW * a1, const char * a2, int z);
+int call_winsnstr (WINDOW * a1, const char * a2, int z)
+{
+	T((T_CALLED("winsnstr(%p,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(winsnstr(a1, a2, z));
+}
+
+
+extern int call_winsstr (WINDOW * a1, const char * z);
+int call_winsstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("winsstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1));
+}
+
+
+extern int call_winstr (WINDOW * a1, char * z);
+int call_winstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("winstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1));
+}
+
+
+extern int call_wmove (WINDOW * a1, int a2, int z);
+int call_wmove (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wmove(%p,%d,%d)"), a1, a2, z)); returnCode(wmove(a1, a2, z));
+}
+
+
+extern int call_wnoutrefresh (WINDOW * z);
+int call_wnoutrefresh (WINDOW * z)
+{
+	T((T_CALLED("wnoutrefresh(%p)"), z)); returnCode(wnoutrefresh(z));
+}
+
+
+extern int call_wredrawln (WINDOW * a1, int a2, int z);
+int call_wredrawln (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wredrawln(%p,%d,%d)"), a1, a2, z)); returnCode(wredrawln(a1, a2, z));
+}
+
+
+extern int call_wrefresh (WINDOW * z);
+int call_wrefresh (WINDOW * z)
+{
+	T((T_CALLED("wrefresh(%p)"), z)); returnCode(wrefresh(z));
+}
+
+
+extern int call_wscrl (WINDOW * a1, int z);
+int call_wscrl (WINDOW * a1, int z)
+{
+	T((T_CALLED("wscrl(%p,%d)"), a1, z)); returnCode(wscrl(a1, z));
+}
+
+
+extern int call_wsetscrreg (WINDOW * a1, int a2, int z);
+int call_wsetscrreg (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wsetscrreg(%p,%d,%d)"), a1, a2, z)); returnCode(wsetscrreg(a1, a2, z));
+}
+
+
+extern int call_wstandout (WINDOW * z);
+int call_wstandout (WINDOW * z)
+{
+	T((T_CALLED("wstandout(%p)"), z)); returnAttr((((z)->_attrs = (((1UL) << ((8) + 8))))));
+}
+
+
+extern int call_wstandend (WINDOW * z);
+int call_wstandend (WINDOW * z)
+{
+	T((T_CALLED("wstandend(%p)"), z)); returnAttr((((z)->_attrs = ((1UL - 1UL)))));
+}
+
+
+extern void call_wsyncdown (WINDOW * z);
+void call_wsyncdown (WINDOW * z)
+{
+	T((T_CALLED("wsyncdown(%p)"), z)); wsyncdown(z);
+	returnVoid;
+}
+
+
+extern void call_wsyncup (WINDOW * z);
+void call_wsyncup (WINDOW * z)
+{
+	T((T_CALLED("wsyncup(%p)"), z)); wsyncup(z);
+	returnVoid;
+}
+
+
+extern void call_wtimeout (WINDOW * a1, int z);
+void call_wtimeout (WINDOW * a1, int z)
+{
+	T((T_CALLED("wtimeout(%p,%d)"), a1, z)); wtimeout(a1, z);
+	returnVoid;
+}
+
+
+extern int call_wtouchln (WINDOW * a1, int a2, int a3, int z);
+int call_wtouchln (WINDOW * a1, int a2, int a3, int z)
+{
+	T((T_CALLED("wtouchln(%p,%d,%d,%d)"), a1, a2, a3, z)); returnCode(wtouchln(a1, a2, a3, z));
+}
+
+
+extern int call_wvline (WINDOW * a1, chtype a2, int z);
+int call_wvline (WINDOW * a1, chtype a2, int z)
+{
+	T((T_CALLED("wvline(%p,%s,%d)"), a1, _tracechtype2(1,a2), z)); returnCode(wvline(a1, a2, z));
+}
+
+
+extern int call_tigetflag (char * z);
+int call_tigetflag (char * z)
+{
+	T((T_CALLED("tigetflag(%s)"), _nc_visbuf2(0,z))); returnCode(tigetflag(z));
+}
+
+
+extern int call_tigetnum (char * z);
+int call_tigetnum (char * z)
+{
+	T((T_CALLED("tigetnum(%s)"), _nc_visbuf2(0,z))); returnCode(tigetnum(z));
+}
+
+
+extern char * call_tigetstr (char * z);
+char * call_tigetstr (char * z)
+{
+	T((T_CALLED("(%s)"), _nc_visbuf2(0,z))); returnPtr(tigetstr(z));
+}
+
+
+extern int call_putp (const char * z);
+int call_putp (const char * z)
+{
+	T((T_CALLED("putp(%s)"), _nc_visbuf2(0,z))); returnCode(putp(z));
+}
+
+
+extern int call_getattrs (const WINDOW * z);
+int call_getattrs (const WINDOW * z)
+{
+	T((T_CALLED("getattrs(%p)"), z)); returnCode(((z) ? (z)->_attrs : (1UL - 1UL)));
+}
+
+
+extern int call_getcurx (const WINDOW * z);
+int call_getcurx (const WINDOW * z)
+{
+	T((T_CALLED("getcurx(%p)"), z)); returnCode(((z) ? (z)->_curx : (-1)));
+}
+
+
+extern int call_getcury (const WINDOW * z);
+int call_getcury (const WINDOW * z)
+{
+	T((T_CALLED("getcury(%p)"), z)); returnCode(((z) ? (z)->_cury : (-1)));
+}
+
+
+extern int call_getbegx (const WINDOW * z);
+int call_getbegx (const WINDOW * z)
+{
+	T((T_CALLED("getbegx(%p)"), z)); returnCode(((z) ? (z)->_begx : (-1)));
+}
+
+
+extern int call_getbegy (const WINDOW * z);
+int call_getbegy (const WINDOW * z)
+{
+	T((T_CALLED("getbegy(%p)"), z)); returnCode(((z) ? (z)->_begy : (-1)));
+}
+
+
+extern int call_getmaxx (const WINDOW * z);
+int call_getmaxx (const WINDOW * z)
+{
+	T((T_CALLED("getmaxx(%p)"), z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1)));
+}
+
+
+extern int call_getmaxy (const WINDOW * z);
+int call_getmaxy (const WINDOW * z)
+{
+	T((T_CALLED("getmaxy(%p)"), z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1)));
+}
+
+
+extern int call_getparx (const WINDOW * z);
+int call_getparx (const WINDOW * z)
+{
+	T((T_CALLED("getparx(%p)"), z)); returnCode(((z) ? (z)->_parx : (-1)));
+}
+
+
+extern int call_getpary (const WINDOW * z);
+int call_getpary (const WINDOW * z)
+{
+	T((T_CALLED("getpary(%p)"), z)); returnCode(((z) ? (z)->_pary : (-1)));
+}
+
+
+extern WINDOW * call_wgetparent (const WINDOW * z);
+WINDOW * call_wgetparent (const WINDOW * z)
+{
+	T((T_CALLED("(%p)"), z)); returnWin(((z) ? (z)->_parent : 0));
+}
+
+
+extern NCURSES_BOOL call_is_cleared (const WINDOW * z);
+NCURSES_BOOL call_is_cleared (const WINDOW * z)
+{
+	T((T_CALLED("is_cleared(%p)"), z)); returnBool(((z)->_clear));
+}
+
+
+extern NCURSES_BOOL call_is_idcok (const WINDOW * z);
+NCURSES_BOOL call_is_idcok (const WINDOW * z)
+{
+	T((T_CALLED("is_idcok(%p)"), z)); returnBool(((z)->_idcok));
+}
+
+
+extern NCURSES_BOOL call_is_idlok (const WINDOW * z);
+NCURSES_BOOL call_is_idlok (const WINDOW * z)
+{
+	T((T_CALLED("is_idlok(%p)"), z)); returnBool(((z)->_idlok));
+}
+
+
+extern NCURSES_BOOL call_is_immedok (const WINDOW * z);
+NCURSES_BOOL call_is_immedok (const WINDOW * z)
+{
+	T((T_CALLED("is_immedok(%p)"), z)); returnBool(((z)->_immed));
+}
+
+
+extern NCURSES_BOOL call_is_keypad (const WINDOW * z);
+NCURSES_BOOL call_is_keypad (const WINDOW * z)
+{
+	T((T_CALLED("is_keypad(%p)"), z)); returnBool(((z)->_use_keypad));
+}
+
+
+extern NCURSES_BOOL call_is_leaveok (const WINDOW * z);
+NCURSES_BOOL call_is_leaveok (const WINDOW * z)
+{
+	T((T_CALLED("is_leaveok(%p)"), z)); returnBool(((z)->_leaveok));
+}
+
+
+extern NCURSES_BOOL call_is_nodelay (const WINDOW * z);
+NCURSES_BOOL call_is_nodelay (const WINDOW * z)
+{
+	T((T_CALLED("is_nodelay(%p)"), z)); returnBool(((z)->_delay == 0));
+}
+
+
+extern NCURSES_BOOL call_is_notimeout (const WINDOW * z);
+NCURSES_BOOL call_is_notimeout (const WINDOW * z)
+{
+	T((T_CALLED("is_notimeout(%p)"), z)); returnBool(((z)->_notimeout));
+}
+
+
+extern NCURSES_BOOL call_is_scrollok (const WINDOW * z);
+NCURSES_BOOL call_is_scrollok (const WINDOW * z)
+{
+	T((T_CALLED("is_scrollok(%p)"), z)); returnBool(((z)->_scroll));
+}
+
+
+extern NCURSES_BOOL call_is_syncok (const WINDOW * z);
+NCURSES_BOOL call_is_syncok (const WINDOW * z)
+{
+	T((T_CALLED("is_syncok(%p)"), z)); returnBool(((z)->_sync));
+}
+
+
+extern int call_wgetscrreg (const WINDOW * a1, int * a2, int * z);
+int call_wgetscrreg (const WINDOW * a1, int * a2, int * z)
+{
+	T((T_CALLED("wgetscrreg(%p,%p,%p)"), a1, a2, z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1)));
+}
+
+
+extern NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z);
+NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), a1, a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z));
+}
+int main(void) { return 0; }
diff --git a/ncurses/make_hash b/ncurses/make_hash
new file mode 100755
index 0000000..4d7f2b4
--- /dev/null
+++ b/ncurses/make_hash
Binary files differ
diff --git a/ncurses/make_keys b/ncurses/make_keys
new file mode 100755
index 0000000..c611105
--- /dev/null
+++ b/ncurses/make_keys
Binary files differ
diff --git a/ncurses/names.c b/ncurses/names.c
new file mode 100644
index 0000000..360e733
--- /dev/null
+++ b/ncurses/names.c
@@ -0,0 +1,1365 @@
+/* This file was generated by MKnames.awk */
+
+#include <curses.priv.h>
+
+#define IT NCURSES_CONST char * const
+
+
+#if BROKEN_LINKER || USE_REENTRANT
+
+#include <term.h>
+
+static const char _nc_name_blob[] = 
+"bw\0" "auto_left_margin\0" "am\0" "auto_right_margin\0" "xsb\0" "no_esc_ctlc\0" \
+"xhp\0" "ceol_standout_glitch\0" "xenl\0" "eat_newline_glitch\0" "eo\0" \
+"erase_overstrike\0" "gn\0" "generic_type\0" "hc\0" "hard_copy\0" "km\0" \
+"has_meta_key\0" "hs\0" "has_status_line\0" "in\0" "insert_null_glitch\0" \
+"da\0" "memory_above\0" "db\0" "memory_below\0" "mir\0" "move_insert_mode\0" \
+"msgr\0" "move_standout_mode\0" "os\0" "over_strike\0" "eslok\0" "status_line_esc_ok\0" \
+"xt\0" "dest_tabs_magic_smso\0" "hz\0" "tilde_glitch\0" "ul\0" "transparent_underline\0" \
+"xon\0" "xon_xoff\0" "nxon\0" "needs_xon_xoff\0" "mc5i\0" "prtr_silent\0" \
+"chts\0" "hard_cursor\0" "nrrmc\0" "non_rev_rmcup\0" "npc\0" "no_pad_char\0" \
+"ndscr\0" "non_dest_scroll_region\0" "ccc\0" "can_change\0" "bce\0" "back_color_erase\0" \
+"hls\0" "hue_lightness_saturation\0" "xhpa\0" "col_addr_glitch\0" "crxm\0" \
+"cr_cancels_micro_mode\0" "daisy\0" "has_print_wheel\0" "xvpa\0" "row_addr_glitch\0" \
+"sam\0" "semi_auto_right_margin\0" "cpix\0" "cpi_changes_res\0" "lpix\0" \
+"lpi_changes_res\0" "cols\0" "columns\0" "it\0" "init_tabs\0" "lines\0" \
+"lines\0" "lm\0" "lines_of_memory\0" "xmc\0" "magic_cookie_glitch\0" "pb\0" \
+"padding_baud_rate\0" "vt\0" "virtual_terminal\0" "wsl\0" "width_status_line\0" \
+"nlab\0" "num_labels\0" "lh\0" "label_height\0" "lw\0" "label_width\0" \
+"ma\0" "max_attributes\0" "wnum\0" "maximum_windows\0" "colors\0" "max_colors\0" \
+"pairs\0" "max_pairs\0" "ncv\0" "no_color_video\0" "bufsz\0" "buffer_capacity\0" \
+"spinv\0" "dot_vert_spacing\0" "spinh\0" "dot_horz_spacing\0" "maddr\0" \
+"max_micro_address\0" "mjump\0" "max_micro_jump\0" "mcs\0" "micro_col_size\0" \
+"mls\0" "micro_line_size\0" "npins\0" "number_of_pins\0" "orc\0" "output_res_char\0" \
+"orl\0" "output_res_line\0" "orhi\0" "output_res_horz_inch\0" "orvi\0" \
+"output_res_vert_inch\0" "cps\0" "print_rate\0" "widcs\0" "wide_char_size\0" \
+"btns\0" "buttons\0" "bitwin\0" "bit_image_entwining\0" "bitype\0" "bit_image_type\0" \
+"cbt\0" "back_tab\0" "bel\0" "bell\0" "cr\0" "carriage_return\0" "csr\0" \
+"change_scroll_region\0" "tbc\0" "clear_all_tabs\0" "clear\0" "clear_screen\0" \
+"el\0" "clr_eol\0" "ed\0" "clr_eos\0" "hpa\0" "column_address\0" "cmdch\0" \
+"command_character\0" "cup\0" "cursor_address\0" "cud1\0" "cursor_down\0" \
+"home\0" "cursor_home\0" "civis\0" "cursor_invisible\0" "cub1\0" "cursor_left\0" \
+"mrcup\0" "cursor_mem_address\0" "cnorm\0" "cursor_normal\0" "cuf1\0" "cursor_right\0" \
+"ll\0" "cursor_to_ll\0" "cuu1\0" "cursor_up\0" "cvvis\0" "cursor_visible\0" \
+"dch1\0" "delete_character\0" "dl1\0" "delete_line\0" "dsl\0" "dis_status_line\0" \
+"hd\0" "down_half_line\0" "smacs\0" "enter_alt_charset_mode\0" "blink\0" \
+"enter_blink_mode\0" "bold\0" "enter_bold_mode\0" "smcup\0" "enter_ca_mode\0" \
+"smdc\0" "enter_delete_mode\0" "dim\0" "enter_dim_mode\0" "smir\0" "enter_insert_mode\0" \
+"invis\0" "enter_secure_mode\0" "prot\0" "enter_protected_mode\0" "rev\0" \
+"enter_reverse_mode\0" "smso\0" "enter_standout_mode\0" "smul\0" "enter_underline_mode\0" \
+"ech\0" "erase_chars\0" "rmacs\0" "exit_alt_charset_mode\0" "sgr0\0" "exit_attribute_mode\0" \
+"rmcup\0" "exit_ca_mode\0" "rmdc\0" "exit_delete_mode\0" "rmir\0" "exit_insert_mode\0" \
+"rmso\0" "exit_standout_mode\0" "rmul\0" "exit_underline_mode\0" "flash\0" \
+"flash_screen\0" "ff\0" "form_feed\0" "fsl\0" "from_status_line\0" "is1\0" \
+"init_1string\0" "is2\0" "init_2string\0" "is3\0" "init_3string\0" "if\0" \
+"init_file\0" "ich1\0" "insert_character\0" "il1\0" "insert_line\0" "ip\0" \
+"insert_padding\0" "kbs\0" "key_backspace\0" "ktbc\0" "key_catab\0" "kclr\0" \
+"key_clear\0" "kctab\0" "key_ctab\0" "kdch1\0" "key_dc\0" "kdl1\0" "key_dl\0" \
+"kcud1\0" "key_down\0" "krmir\0" "key_eic\0" "kel\0" "key_eol\0" "ked\0" \
+"key_eos\0" "kf0\0" "key_f0\0" "kf1\0" "key_f1\0" "kf10\0" "key_f10\0" \
+"kf2\0" "key_f2\0" "kf3\0" "key_f3\0" "kf4\0" "key_f4\0" "kf5\0" "key_f5\0" \
+"kf6\0" "key_f6\0" "kf7\0" "key_f7\0" "kf8\0" "key_f8\0" "kf9\0" "key_f9\0" \
+"khome\0" "key_home\0" "kich1\0" "key_ic\0" "kil1\0" "key_il\0" "kcub1\0" \
+"key_left\0" "kll\0" "key_ll\0" "knp\0" "key_npage\0" "kpp\0" "key_ppage\0" \
+"kcuf1\0" "key_right\0" "kind\0" "key_sf\0" "kri\0" "key_sr\0" "khts\0" \
+"key_stab\0" "kcuu1\0" "key_up\0" "rmkx\0" "keypad_local\0" "smkx\0" "keypad_xmit\0" \
+"lf0\0" "lab_f0\0" "lf1\0" "lab_f1\0" "lf10\0" "lab_f10\0" "lf2\0" "lab_f2\0" \
+"lf3\0" "lab_f3\0" "lf4\0" "lab_f4\0" "lf5\0" "lab_f5\0" "lf6\0" "lab_f6\0" \
+"lf7\0" "lab_f7\0" "lf8\0" "lab_f8\0" "lf9\0" "lab_f9\0" "rmm\0" "meta_off\0" \
+"smm\0" "meta_on\0" "nel\0" "newline\0" "pad\0" "pad_char\0" "dch\0" "parm_dch\0" \
+"dl\0" "parm_delete_line\0" "cud\0" "parm_down_cursor\0" "ich\0" "parm_ich\0" \
+"indn\0" "parm_index\0" "il\0" "parm_insert_line\0" "cub\0" "parm_left_cursor\0" \
+"cuf\0" "parm_right_cursor\0" "rin\0" "parm_rindex\0" "cuu\0" "parm_up_cursor\0" \
+"pfkey\0" "pkey_key\0" "pfloc\0" "pkey_local\0" "pfx\0" "pkey_xmit\0" "mc0\0" \
+"print_screen\0" "mc4\0" "prtr_off\0" "mc5\0" "prtr_on\0" "rep\0" "repeat_char\0" \
+"rs1\0" "reset_1string\0" "rs2\0" "reset_2string\0" "rs3\0" "reset_3string\0" \
+"rf\0" "reset_file\0" "rc\0" "restore_cursor\0" "vpa\0" "row_address\0" \
+"sc\0" "save_cursor\0" "ind\0" "scroll_forward\0" "ri\0" "scroll_reverse\0" \
+"sgr\0" "set_attributes\0" "hts\0" "set_tab\0" "wind\0" "set_window\0" \
+"ht\0" "tab\0" "tsl\0" "to_status_line\0" "uc\0" "underline_char\0" "hu\0" \
+"up_half_line\0" "iprog\0" "init_prog\0" "ka1\0" "key_a1\0" "ka3\0" "key_a3\0" \
+"kb2\0" "key_b2\0" "kc1\0" "key_c1\0" "kc3\0" "key_c3\0" "mc5p\0" "prtr_non\0" \
+"rmp\0" "char_padding\0" "acsc\0" "acs_chars\0" "pln\0" "plab_norm\0" "kcbt\0" \
+"key_btab\0" "smxon\0" "enter_xon_mode\0" "rmxon\0" "exit_xon_mode\0" "smam\0" \
+"enter_am_mode\0" "rmam\0" "exit_am_mode\0" "xonc\0" "xon_character\0" \
+"xoffc\0" "xoff_character\0" "enacs\0" "ena_acs\0" "smln\0" "label_on\0" \
+"rmln\0" "label_off\0" "kbeg\0" "key_beg\0" "kcan\0" "key_cancel\0" "kclo\0" \
+"key_close\0" "kcmd\0" "key_command\0" "kcpy\0" "key_copy\0" "kcrt\0" "key_create\0" \
+"kend\0" "key_end\0" "kent\0" "key_enter\0" "kext\0" "key_exit\0" "kfnd\0" \
+"key_find\0" "khlp\0" "key_help\0" "kmrk\0" "key_mark\0" "kmsg\0" "key_message\0" \
+"kmov\0" "key_move\0" "knxt\0" "key_next\0" "kopn\0" "key_open\0" "kopt\0" \
+"key_options\0" "kprv\0" "key_previous\0" "kprt\0" "key_print\0" "krdo\0" \
+"key_redo\0" "kref\0" "key_reference\0" "krfr\0" "key_refresh\0" "krpl\0" \
+"key_replace\0" "krst\0" "key_restart\0" "kres\0" "key_resume\0" "ksav\0" \
+"key_save\0" "kspd\0" "key_suspend\0" "kund\0" "key_undo\0" "kBEG\0" "key_sbeg\0" \
+"kCAN\0" "key_scancel\0" "kCMD\0" "key_scommand\0" "kCPY\0" "key_scopy\0" \
+"kCRT\0" "key_screate\0" "kDC\0" "key_sdc\0" "kDL\0" "key_sdl\0" "kslt\0" \
+"key_select\0" "kEND\0" "key_send\0" "kEOL\0" "key_seol\0" "kEXT\0" "key_sexit\0" \
+"kFND\0" "key_sfind\0" "kHLP\0" "key_shelp\0" "kHOM\0" "key_shome\0" "kIC\0" \
+"key_sic\0" "kLFT\0" "key_sleft\0" "kMSG\0" "key_smessage\0" "kMOV\0" "key_smove\0" \
+"kNXT\0" "key_snext\0" "kOPT\0" "key_soptions\0" "kPRV\0" "key_sprevious\0" \
+"kPRT\0" "key_sprint\0" "kRDO\0" "key_sredo\0" "kRPL\0" "key_sreplace\0" \
+"kRIT\0" "key_sright\0" "kRES\0" "key_srsume\0" "kSAV\0" "key_ssave\0" \
+"kSPD\0" "key_ssuspend\0" "kUND\0" "key_sundo\0" "rfi\0" "req_for_input\0" \
+"kf11\0" "key_f11\0" "kf12\0" "key_f12\0" "kf13\0" "key_f13\0" "kf14\0" \
+"key_f14\0" "kf15\0" "key_f15\0" "kf16\0" "key_f16\0" "kf17\0" "key_f17\0" \
+"kf18\0" "key_f18\0" "kf19\0" "key_f19\0" "kf20\0" "key_f20\0" "kf21\0" \
+"key_f21\0" "kf22\0" "key_f22\0" "kf23\0" "key_f23\0" "kf24\0" "key_f24\0" \
+"kf25\0" "key_f25\0" "kf26\0" "key_f26\0" "kf27\0" "key_f27\0" "kf28\0" \
+"key_f28\0" "kf29\0" "key_f29\0" "kf30\0" "key_f30\0" "kf31\0" "key_f31\0" \
+"kf32\0" "key_f32\0" "kf33\0" "key_f33\0" "kf34\0" "key_f34\0" "kf35\0" \
+"key_f35\0" "kf36\0" "key_f36\0" "kf37\0" "key_f37\0" "kf38\0" "key_f38\0" \
+"kf39\0" "key_f39\0" "kf40\0" "key_f40\0" "kf41\0" "key_f41\0" "kf42\0" \
+"key_f42\0" "kf43\0" "key_f43\0" "kf44\0" "key_f44\0" "kf45\0" "key_f45\0" \
+"kf46\0" "key_f46\0" "kf47\0" "key_f47\0" "kf48\0" "key_f48\0" "kf49\0" \
+"key_f49\0" "kf50\0" "key_f50\0" "kf51\0" "key_f51\0" "kf52\0" "key_f52\0" \
+"kf53\0" "key_f53\0" "kf54\0" "key_f54\0" "kf55\0" "key_f55\0" "kf56\0" \
+"key_f56\0" "kf57\0" "key_f57\0" "kf58\0" "key_f58\0" "kf59\0" "key_f59\0" \
+"kf60\0" "key_f60\0" "kf61\0" "key_f61\0" "kf62\0" "key_f62\0" "kf63\0" \
+"key_f63\0" "el1\0" "clr_bol\0" "mgc\0" "clear_margins\0" "smgl\0" "set_left_margin\0" \
+"smgr\0" "set_right_margin\0" "fln\0" "label_format\0" "sclk\0" "set_clock\0" \
+"dclk\0" "display_clock\0" "rmclk\0" "remove_clock\0" "cwin\0" "create_window\0" \
+"wingo\0" "goto_window\0" "hup\0" "hangup\0" "dial\0" "dial_phone\0" "qdial\0" \
+"quick_dial\0" "tone\0" "tone\0" "pulse\0" "pulse\0" "hook\0" "flash_hook\0" \
+"pause\0" "fixed_pause\0" "wait\0" "wait_tone\0" "u0\0" "user0\0" "u1\0" \
+"user1\0" "u2\0" "user2\0" "u3\0" "user3\0" "u4\0" "user4\0" "u5\0" "user5\0" \
+"u6\0" "user6\0" "u7\0" "user7\0" "u8\0" "user8\0" "u9\0" "user9\0" "op\0" \
+"orig_pair\0" "oc\0" "orig_colors\0" "initc\0" "initialize_color\0" "initp\0" \
+"initialize_pair\0" "scp\0" "set_color_pair\0" "setf\0" "set_foreground\0" \
+"setb\0" "set_background\0" "cpi\0" "change_char_pitch\0" "lpi\0" "change_line_pitch\0" \
+"chr\0" "change_res_horz\0" "cvr\0" "change_res_vert\0" "defc\0" "define_char\0" \
+"swidm\0" "enter_doublewide_mode\0" "sdrfq\0" "enter_draft_quality\0" "sitm\0" \
+"enter_italics_mode\0" "slm\0" "enter_leftward_mode\0" "smicm\0" "enter_micro_mode\0" \
+"snlq\0" "enter_near_letter_quality\0" "snrmq\0" "enter_normal_quality\0" \
+"sshm\0" "enter_shadow_mode\0" "ssubm\0" "enter_subscript_mode\0" "ssupm\0" \
+"enter_superscript_mode\0" "sum\0" "enter_upward_mode\0" "rwidm\0" "exit_doublewide_mode\0" \
+"ritm\0" "exit_italics_mode\0" "rlm\0" "exit_leftward_mode\0" "rmicm\0" \
+"exit_micro_mode\0" "rshm\0" "exit_shadow_mode\0" "rsubm\0" "exit_subscript_mode\0" \
+"rsupm\0" "exit_superscript_mode\0" "rum\0" "exit_upward_mode\0" "mhpa\0" \
+"micro_column_address\0" "mcud1\0" "micro_down\0" "mcub1\0" "micro_left\0" \
+"mcuf1\0" "micro_right\0" "mvpa\0" "micro_row_address\0" "mcuu1\0" "micro_up\0" \
+"porder\0" "order_of_pins\0" "mcud\0" "parm_down_micro\0" "mcub\0" "parm_left_micro\0" \
+"mcuf\0" "parm_right_micro\0" "mcuu\0" "parm_up_micro\0" "scs\0" "select_char_set\0" \
+"smgb\0" "set_bottom_margin\0" "smgbp\0" "set_bottom_margin_parm\0" "smglp\0" \
+"set_left_margin_parm\0" "smgrp\0" "set_right_margin_parm\0" "smgt\0" "set_top_margin\0" \
+"smgtp\0" "set_top_margin_parm\0" "sbim\0" "start_bit_image\0" "scsd\0" \
+"start_char_set_def\0" "rbim\0" "stop_bit_image\0" "rcsd\0" "stop_char_set_def\0" \
+"subcs\0" "subscript_characters\0" "supcs\0" "superscript_characters\0" \
+"docr\0" "these_cause_cr\0" "zerom\0" "zero_motion\0" "csnm\0" "char_set_names\0" \
+"kmous\0" "key_mouse\0" "minfo\0" "mouse_info\0" "reqmp\0" "req_mouse_pos\0" \
+"getm\0" "get_mouse\0" "setaf\0" "set_a_foreground\0" "setab\0" "set_a_background\0" \
+"pfxl\0" "pkey_plab\0" "devt\0" "device_type\0" "csin\0" "code_set_init\0" \
+"s0ds\0" "set0_des_seq\0" "s1ds\0" "set1_des_seq\0" "s2ds\0" "set2_des_seq\0" \
+"s3ds\0" "set3_des_seq\0" "smglr\0" "set_lr_margin\0" "smgtb\0" "set_tb_margin\0" \
+"birep\0" "bit_image_repeat\0" "binel\0" "bit_image_newline\0" "bicr\0" \
+"bit_image_carriage_return\0" "colornm\0" "color_names\0" "defbi\0" "define_bit_image_region\0" \
+"endbi\0" "end_bit_image_region\0" "setcolor\0" "set_color_band\0" "slines\0" \
+"set_page_length\0" "dispc\0" "display_pc_char\0" "smpch\0" "enter_pc_charset_mode\0" \
+"rmpch\0" "exit_pc_charset_mode\0" "smsc\0" "enter_scancode_mode\0" "rmsc\0" \
+"exit_scancode_mode\0" "pctrm\0" "pc_term_options\0" "scesc\0" "scancode_escape\0" \
+"scesa\0" "alt_scancode_esc\0" "ehhlm\0" "enter_horizontal_hl_mode\0" "elhlm\0" \
+"enter_left_hl_mode\0" "elohlm\0" "enter_low_hl_mode\0" "erhlm\0" "enter_right_hl_mode\0" \
+"ethlm\0" "enter_top_hl_mode\0" "evhlm\0" "enter_vertical_hl_mode\0" "sgr1\0" \
+"set_a_attributes\0" "slength\0" "set_pglen_inch\0" "OTi2\0" "termcap_init2\0" \
+"OTrs\0" "termcap_reset\0" "OTug\0" "magic_cookie_glitch_ul\0" "OTbs\0" \
+"backspaces_with_bs\0" "OTns\0" "crt_no_scrolling\0" "OTnc\0" "no_correctly_working_cr\0" \
+"OTdC\0" "carriage_return_delay\0" "OTdN\0" "new_line_delay\0" "OTnl\0" \
+"linefeed_if_not_lf\0" "OTbc\0" "backspace_if_not_bs\0" "OTMT\0" "gnu_has_meta_key\0" \
+"OTNL\0" "linefeed_is_newline\0" "OTdB\0" "backspace_delay\0" "OTdT\0" \
+"horizontal_tab_delay\0" "OTkn\0" "number_of_function_keys\0" "OTko\0" \
+"other_non_function_keys\0" "OTma\0" "arrow_key_map\0" "OTpt\0" "has_hardware_tabs\0" \
+"OTxr\0" "return_does_clr_eol\0" "OTG2\0" "acs_ulcorner\0" "OTG3\0" "acs_llcorner\0" \
+"OTG1\0" "acs_urcorner\0" "OTG4\0" "acs_lrcorner\0" "OTGR\0" "acs_ltee\0" \
+"OTGL\0" "acs_rtee\0" "OTGU\0" "acs_btee\0" "OTGD\0" "acs_ttee\0" "OTGH\0" \
+"acs_hline\0" "OTGV\0" "acs_vline\0" "OTGC\0" "acs_plus\0" "meml\0" "memory_lock\0" \
+"memu\0" "memory_unlock\0" "box1\0" "box_chars_1\0" ;
+static const short _nc_offset_boolfnames[] = {
+3, 23, 45, 61, 87, 109, 129,
+145, 158, 174, 193, 215, 231,
+248, 270, 292, 310, 332, 356,
+372, 398, 412, 432, 449, 467,
+485, 503, 530, 545, 566, 596,
+617, 645, 666, 686, 714, 735,
+8193, 8217, 8239, 8364, 8386, 8535, 8558, };
+
+static NCURSES_CONST char ** ptr_boolfnames = 0;
+
+static const short _nc_offset_boolnames[] = {
+0, 20, 41, 57, 82, 106, 126, 142, 155, 171, 190, 212, 228, 244, 265, 289, 304, 329, 353, 369, 394, 407, 427, 444, 461, 481, 497, 526, 541, 562, 591, 612, 639, 661, 682, 709, 730, 8188, 8212, 8234, 8359, 8381, 8530, 8553, };
+
+static NCURSES_CONST char ** ptr_boolnames = 0;
+
+static const short _nc_offset_numfnames[] = {
+756, 767, 783, 792, 812, 835,
+856, 877, 900, 914, 930, 945,
+965, 988, 1005, 1019, 1040, 1062, 1085, 1108, 1132, 1151, 1170,
+1192, 1211, 1231, 1252, 1278, 1303, 1320, 1340, 1355, 1382, 8165,
+8268, 8295, 8411, 8432,
+8458, };
+
+static NCURSES_CONST char ** ptr_numfnames = 0;
+
+static const short _nc_offset_numnames[] = {
+751, 764, 777, 789, 808, 832, 853, 873, 895, 911, 927, 942, 960, 981, 999, 1015, 1034, 1056,
+1079, 1102, 1126, 1147, 1166, 1186, 1207, 1227, 1247, 1273, 1299,
+1314, 1335, 1348, 1375, 8160, 8263, 8290, 8406, 8427, 8453, };
+
+static NCURSES_CONST char ** ptr_numnames = 0;
+
+static const short _nc_offset_strfnames[] = {
+1401,
+1414, 1422, 1442, 1467, 1488, 1504, 1515, 1527, 1548, 1570, 1590,
+1607, 1625, 1647, 1665, 1690, 1709, 1725, 1743, 1759, 1779, 1800,
+1816, 1835, 1856, 1885, 1907, 1929, 1948, 1970, 1990, 2014, 2037,
+2062, 2086, 2111, 2136, 2154, 2181, 2207, 2225, 2247, 2269, 2293,
+2319, 2335, 2349, 2370, 2387, 2404, 2420, 2435, 2456, 2471, 2490,
+2509, 2524, 2540, 2555, 2567, 2580, 2595, 2607, 2619, 2631, 2642,
+2654, 2666, 2677, 2688, 2699, 2710, 2721, 2732, 2743, 2756, 2771,
+2783, 2796, 2809, 2820, 2834, 2850, 2865, 2876, 2888, 2903, 2915,
+2933, 2949, 2960, 2972, 2984, 2995, 3006, 3017, 3028, 3039, 3050,
+3061, 3072, 3085, 3097, 3109, 3122, 3134, 3155, 3176, 3190, 3204,
+3225, 3246, 3268, 3284, 3305, 3320, 3335, 3349, 3366, 3379, 3391,
+3407, 3425, 3443, 3460, 3474, 3493, 3508, 3524, 3542, 3561, 3580,
+3593, 3607, 3615, 3633, 3651, 3670, 3684, 3695, 3706, 3717, 3728,
+3740, 3753, 3771, 3785, 3800, 3815, 3836, 3855, 3874, 3892, 3912,
+3933, 3946, 3960, 3975, 3988, 4004, 4019, 4036, 4050, 4066, 4079,
+4094, 4108, 4122, 4136, 4150, 4167, 4181, 4195, 4209, 4226, 4244,
+4259, 4273, 4292, 4309, 4326, 4343, 4359, 4373, 4390, 4404, 4418,
+4435, 4453, 4468, 4484, 4496, 4509, 4525, 4539, 4553, 4568, 4583,
+4598, 4612, 4625, 4640, 4658, 4673, 4688, 4706, 4725, 4741, 4756,
+4774, 4790, 4806, 4821, 4839, 4853, 4872, 4885, 4898, 4911, 4924,
+4937, 4950, 4963, 4976, 4989, 5002, 5015, 5028, 5041, 5054, 5067,
+5080, 5093, 5106, 5119, 5132, 5145, 5158, 5171, 5184, 5197, 5210,
+5223, 5236, 5249, 5262, 5275, 5288, 5301, 5314, 5327, 5340, 5353,
+5366, 5379, 5392, 5405, 5418, 5431, 5444, 5457, 5470, 5483, 5496,
+5509, 5522, 5535, 5548, 5560, 5572, 5591, 5612, 5633, 5651, 5666,
+5686, 5704, 5724, 5740, 5752, 5769, 5785, 5796, 5807, 5824, 5841,
+5854, 5863, 5872, 5881, 5890, 5899, 5908, 5917, 5926, 5935, 5944,
+5957, 5975, 5998, 6018, 6038, 6058, 6077, 6099, 6121, 6141, 6162,
+6180, 6208, 6233, 6256, 6282, 6304, 6336, 6362, 6386, 6413, 6440,
+6464, 6490, 6512, 6537, 6558, 6581, 6607, 6633, 6655, 6682, 6699,
+6716, 6733, 6757, 6773, 6792, 6813, 6834, 6856, 6874, 6895, 6919,
+6948, 6975, 7002, 7023, 7048, 7069, 7093, 7113, 7137, 7164, 7192,
+7213, 7230, 7251, 7267, 7284, 7303, 7319, 7342, 7364, 7379, 7396,
+7415, 7433, 7451, 7469, 7488, 7508, 7528, 7551, 7574, 7608, 7626,
+7656, 7686, 7708, 7730, 7752, 7780, 7806, 7831, 7856, 7878, 7900,
+7923, 7954, 7980, 8004, 8030, 8054, 8082, 8107, 8127, 8146, 8315, 8339, 8487, 8516, 8583, 8601, 8619, 8637, 8655, 8669,
+8683, 8697, 8711, 8726, 8741, 8755, 8772, 8791, };
+
+static NCURSES_CONST char ** ptr_strfnames = 0;
+
+static const short _nc_offset_strnames[] = {
+1397, 1410, 1419, 1438, 1463, 1482, 1501,
+1512, 1523, 1542, 1566, 1585, 1602, 1619, 1642, 1659, 1684, 1704,
+1722, 1738, 1753, 1774, 1796, 1812, 1832, 1850, 1879, 1902, 1923,
+1943, 1966, 1985, 2008, 2032, 2058, 2081, 2106, 2132, 2148, 2176,
+2201, 2220, 2242, 2264, 2288, 2313, 2332, 2345, 2366, 2383, 2400,
+2417, 2430, 2452, 2468, 2486, 2504, 2519, 2534, 2549, 2562, 2574,
+2589, 2603, 2615, 2627, 2638, 2649, 2662, 2673, 2684, 2695, 2706,
+2717, 2728, 2739, 2750, 2765, 2778, 2790, 2805, 2816, 2830, 2844,
+2860, 2872, 2883, 2897, 2910, 2928, 2945, 2956, 2967, 2980, 2991,
+3002, 3013, 3024, 3035, 3046, 3057, 3068, 3081, 3093, 3105, 3118,
+3131, 3151, 3172, 3185, 3201, 3221, 3242, 3264, 3280, 3299, 3314,
+3331, 3345, 3362, 3375, 3387, 3403, 3421, 3439, 3457, 3471, 3489,
+3505, 3520, 3539, 3557, 3576, 3588, 3604, 3611, 3630, 3648, 3664,
+3680, 3691, 3702, 3713, 3724, 3735, 3749, 3766, 3781, 3795, 3809,
+3830, 3850, 3869, 3887, 3906, 3927, 3941, 3955, 3970, 3983, 3999,
+4014, 4031, 4045, 4061, 4074, 4089, 4103, 4117, 4131, 4145, 4162,
+4176, 4190, 4204, 4221, 4239, 4254, 4268, 4287, 4304, 4321, 4338,
+4354, 4368, 4385, 4399, 4413, 4430, 4448, 4463, 4480, 4492, 4504,
+4520, 4534, 4548, 4563, 4578, 4593, 4608, 4620, 4635, 4653, 4668,
+4683, 4701, 4720, 4736, 4751, 4769, 4785, 4801, 4816, 4834, 4849,
+4867, 4880, 4893, 4906, 4919, 4932, 4945, 4958, 4971, 4984, 4997,
+5010, 5023, 5036, 5049, 5062, 5075, 5088, 5101, 5114, 5127, 5140,
+5153, 5166, 5179, 5192, 5205, 5218, 5231, 5244, 5257, 5270, 5283,
+5296, 5309, 5322, 5335, 5348, 5361, 5374, 5387, 5400, 5413, 5426,
+5439, 5452, 5465, 5478, 5491, 5504, 5517, 5530, 5543, 5556, 5568,
+5586, 5607, 5629, 5646, 5661, 5680, 5699, 5718, 5736, 5747, 5763,
+5780, 5790, 5802, 5818, 5836, 5851, 5860, 5869, 5878, 5887, 5896,
+5905, 5914, 5923, 5932, 5941, 5954, 5969, 5992, 6014, 6033, 6053,
+6073, 6095, 6117, 6137, 6157, 6174, 6202, 6228, 6252, 6276, 6299,
+6330, 6357, 6380, 6407, 6436, 6458, 6485, 6508, 6531, 6553, 6575,
+6601, 6629, 6650, 6676, 6693, 6710, 6728, 6751, 6766, 6787, 6808,
+6829, 6851, 6870, 6890, 6913, 6942, 6969, 6997, 7017, 7043, 7064,
+7088, 7108, 7131, 7158, 7187, 7207, 7225, 7245, 7261, 7278, 7298,
+7313, 7336, 7359, 7374, 7391, 7410, 7428, 7446, 7464, 7482, 7502,
+7522, 7545, 7569, 7600, 7620, 7650, 7677, 7701, 7724, 7746, 7774,
+7801, 7826, 7850, 7872, 7894, 7917, 7948, 7973, 7998, 8024, 8048,
+8077, 8099, 8122, 8141, 8310,
+8334, 8482, 8511, 8578,
+8596, 8614, 8632, 8650, 8664, 8678, 8692, 8706, 8721, 8736, 8750,
+8767, 8786, };
+
+static NCURSES_CONST char ** ptr_strnames = 0;
+
+
+static IT *
+alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size)
+{
+	if (*value == 0) {
+		if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) {
+			unsigned n;
+			for (n = 0; n < size; ++n) {
+				(*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n];
+			}
+		}
+	}
+	return *value;
+}
+
+#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }
+
+FIX(boolnames)
+FIX(boolfnames)
+FIX(numnames)
+FIX(numfnames)
+FIX(strnames)
+FIX(strfnames)
+
+
+#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_names_leaks(void)
+{
+FREE_FIX(boolnames)
+FREE_FIX(boolfnames)
+FREE_FIX(numnames)
+FREE_FIX(numfnames)
+FREE_FIX(strnames)
+FREE_FIX(strfnames)
+}
+#endif
+
+#else
+
+#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]
+
+DCL(boolnames) = {
+		"bw",
+		"am",
+		"xsb",
+		"xhp",
+		"xenl",
+		"eo",
+		"gn",
+		"hc",
+		"km",
+		"hs",
+		"in",
+		"da",
+		"db",
+		"mir",
+		"msgr",
+		"os",
+		"eslok",
+		"xt",
+		"hz",
+		"ul",
+		"xon",
+		"nxon",
+		"mc5i",
+		"chts",
+		"nrrmc",
+		"npc",
+		"ndscr",
+		"ccc",
+		"bce",
+		"hls",
+		"xhpa",
+		"crxm",
+		"daisy",
+		"xvpa",
+		"sam",
+		"cpix",
+		"lpix",
+		"OTbs",
+		"OTns",
+		"OTnc",
+		"OTMT",
+		"OTNL",
+		"OTpt",
+		"OTxr",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(boolfnames) = {
+		"auto_left_margin",
+		"auto_right_margin",
+		"no_esc_ctlc",
+		"ceol_standout_glitch",
+		"eat_newline_glitch",
+		"erase_overstrike",
+		"generic_type",
+		"hard_copy",
+		"has_meta_key",
+		"has_status_line",
+		"insert_null_glitch",
+		"memory_above",
+		"memory_below",
+		"move_insert_mode",
+		"move_standout_mode",
+		"over_strike",
+		"status_line_esc_ok",
+		"dest_tabs_magic_smso",
+		"tilde_glitch",
+		"transparent_underline",
+		"xon_xoff",
+		"needs_xon_xoff",
+		"prtr_silent",
+		"hard_cursor",
+		"non_rev_rmcup",
+		"no_pad_char",
+		"non_dest_scroll_region",
+		"can_change",
+		"back_color_erase",
+		"hue_lightness_saturation",
+		"col_addr_glitch",
+		"cr_cancels_micro_mode",
+		"has_print_wheel",
+		"row_addr_glitch",
+		"semi_auto_right_margin",
+		"cpi_changes_res",
+		"lpi_changes_res",
+		"backspaces_with_bs",
+		"crt_no_scrolling",
+		"no_correctly_working_cr",
+		"gnu_has_meta_key",
+		"linefeed_is_newline",
+		"has_hardware_tabs",
+		"return_does_clr_eol",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numnames) = {
+		"cols",
+		"it",
+		"lines",
+		"lm",
+		"xmc",
+		"pb",
+		"vt",
+		"wsl",
+		"nlab",
+		"lh",
+		"lw",
+		"ma",
+		"wnum",
+		"colors",
+		"pairs",
+		"ncv",
+		"bufsz",
+		"spinv",
+		"spinh",
+		"maddr",
+		"mjump",
+		"mcs",
+		"mls",
+		"npins",
+		"orc",
+		"orl",
+		"orhi",
+		"orvi",
+		"cps",
+		"widcs",
+		"btns",
+		"bitwin",
+		"bitype",
+		"OTug",
+		"OTdC",
+		"OTdN",
+		"OTdB",
+		"OTdT",
+		"OTkn",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numfnames) = {
+		"columns",
+		"init_tabs",
+		"lines",
+		"lines_of_memory",
+		"magic_cookie_glitch",
+		"padding_baud_rate",
+		"virtual_terminal",
+		"width_status_line",
+		"num_labels",
+		"label_height",
+		"label_width",
+		"max_attributes",
+		"maximum_windows",
+		"max_colors",
+		"max_pairs",
+		"no_color_video",
+		"buffer_capacity",
+		"dot_vert_spacing",
+		"dot_horz_spacing",
+		"max_micro_address",
+		"max_micro_jump",
+		"micro_col_size",
+		"micro_line_size",
+		"number_of_pins",
+		"output_res_char",
+		"output_res_line",
+		"output_res_horz_inch",
+		"output_res_vert_inch",
+		"print_rate",
+		"wide_char_size",
+		"buttons",
+		"bit_image_entwining",
+		"bit_image_type",
+		"magic_cookie_glitch_ul",
+		"carriage_return_delay",
+		"new_line_delay",
+		"backspace_delay",
+		"horizontal_tab_delay",
+		"number_of_function_keys",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strnames) = {
+		"cbt",
+		"bel",
+		"cr",
+		"csr",
+		"tbc",
+		"clear",
+		"el",
+		"ed",
+		"hpa",
+		"cmdch",
+		"cup",
+		"cud1",
+		"home",
+		"civis",
+		"cub1",
+		"mrcup",
+		"cnorm",
+		"cuf1",
+		"ll",
+		"cuu1",
+		"cvvis",
+		"dch1",
+		"dl1",
+		"dsl",
+		"hd",
+		"smacs",
+		"blink",
+		"bold",
+		"smcup",
+		"smdc",
+		"dim",
+		"smir",
+		"invis",
+		"prot",
+		"rev",
+		"smso",
+		"smul",
+		"ech",
+		"rmacs",
+		"sgr0",
+		"rmcup",
+		"rmdc",
+		"rmir",
+		"rmso",
+		"rmul",
+		"flash",
+		"ff",
+		"fsl",
+		"is1",
+		"is2",
+		"is3",
+		"if",
+		"ich1",
+		"il1",
+		"ip",
+		"kbs",
+		"ktbc",
+		"kclr",
+		"kctab",
+		"kdch1",
+		"kdl1",
+		"kcud1",
+		"krmir",
+		"kel",
+		"ked",
+		"kf0",
+		"kf1",
+		"kf10",
+		"kf2",
+		"kf3",
+		"kf4",
+		"kf5",
+		"kf6",
+		"kf7",
+		"kf8",
+		"kf9",
+		"khome",
+		"kich1",
+		"kil1",
+		"kcub1",
+		"kll",
+		"knp",
+		"kpp",
+		"kcuf1",
+		"kind",
+		"kri",
+		"khts",
+		"kcuu1",
+		"rmkx",
+		"smkx",
+		"lf0",
+		"lf1",
+		"lf10",
+		"lf2",
+		"lf3",
+		"lf4",
+		"lf5",
+		"lf6",
+		"lf7",
+		"lf8",
+		"lf9",
+		"rmm",
+		"smm",
+		"nel",
+		"pad",
+		"dch",
+		"dl",
+		"cud",
+		"ich",
+		"indn",
+		"il",
+		"cub",
+		"cuf",
+		"rin",
+		"cuu",
+		"pfkey",
+		"pfloc",
+		"pfx",
+		"mc0",
+		"mc4",
+		"mc5",
+		"rep",
+		"rs1",
+		"rs2",
+		"rs3",
+		"rf",
+		"rc",
+		"vpa",
+		"sc",
+		"ind",
+		"ri",
+		"sgr",
+		"hts",
+		"wind",
+		"ht",
+		"tsl",
+		"uc",
+		"hu",
+		"iprog",
+		"ka1",
+		"ka3",
+		"kb2",
+		"kc1",
+		"kc3",
+		"mc5p",
+		"rmp",
+		"acsc",
+		"pln",
+		"kcbt",
+		"smxon",
+		"rmxon",
+		"smam",
+		"rmam",
+		"xonc",
+		"xoffc",
+		"enacs",
+		"smln",
+		"rmln",
+		"kbeg",
+		"kcan",
+		"kclo",
+		"kcmd",
+		"kcpy",
+		"kcrt",
+		"kend",
+		"kent",
+		"kext",
+		"kfnd",
+		"khlp",
+		"kmrk",
+		"kmsg",
+		"kmov",
+		"knxt",
+		"kopn",
+		"kopt",
+		"kprv",
+		"kprt",
+		"krdo",
+		"kref",
+		"krfr",
+		"krpl",
+		"krst",
+		"kres",
+		"ksav",
+		"kspd",
+		"kund",
+		"kBEG",
+		"kCAN",
+		"kCMD",
+		"kCPY",
+		"kCRT",
+		"kDC",
+		"kDL",
+		"kslt",
+		"kEND",
+		"kEOL",
+		"kEXT",
+		"kFND",
+		"kHLP",
+		"kHOM",
+		"kIC",
+		"kLFT",
+		"kMSG",
+		"kMOV",
+		"kNXT",
+		"kOPT",
+		"kPRV",
+		"kPRT",
+		"kRDO",
+		"kRPL",
+		"kRIT",
+		"kRES",
+		"kSAV",
+		"kSPD",
+		"kUND",
+		"rfi",
+		"kf11",
+		"kf12",
+		"kf13",
+		"kf14",
+		"kf15",
+		"kf16",
+		"kf17",
+		"kf18",
+		"kf19",
+		"kf20",
+		"kf21",
+		"kf22",
+		"kf23",
+		"kf24",
+		"kf25",
+		"kf26",
+		"kf27",
+		"kf28",
+		"kf29",
+		"kf30",
+		"kf31",
+		"kf32",
+		"kf33",
+		"kf34",
+		"kf35",
+		"kf36",
+		"kf37",
+		"kf38",
+		"kf39",
+		"kf40",
+		"kf41",
+		"kf42",
+		"kf43",
+		"kf44",
+		"kf45",
+		"kf46",
+		"kf47",
+		"kf48",
+		"kf49",
+		"kf50",
+		"kf51",
+		"kf52",
+		"kf53",
+		"kf54",
+		"kf55",
+		"kf56",
+		"kf57",
+		"kf58",
+		"kf59",
+		"kf60",
+		"kf61",
+		"kf62",
+		"kf63",
+		"el1",
+		"mgc",
+		"smgl",
+		"smgr",
+		"fln",
+		"sclk",
+		"dclk",
+		"rmclk",
+		"cwin",
+		"wingo",
+		"hup",
+		"dial",
+		"qdial",
+		"tone",
+		"pulse",
+		"hook",
+		"pause",
+		"wait",
+		"u0",
+		"u1",
+		"u2",
+		"u3",
+		"u4",
+		"u5",
+		"u6",
+		"u7",
+		"u8",
+		"u9",
+		"op",
+		"oc",
+		"initc",
+		"initp",
+		"scp",
+		"setf",
+		"setb",
+		"cpi",
+		"lpi",
+		"chr",
+		"cvr",
+		"defc",
+		"swidm",
+		"sdrfq",
+		"sitm",
+		"slm",
+		"smicm",
+		"snlq",
+		"snrmq",
+		"sshm",
+		"ssubm",
+		"ssupm",
+		"sum",
+		"rwidm",
+		"ritm",
+		"rlm",
+		"rmicm",
+		"rshm",
+		"rsubm",
+		"rsupm",
+		"rum",
+		"mhpa",
+		"mcud1",
+		"mcub1",
+		"mcuf1",
+		"mvpa",
+		"mcuu1",
+		"porder",
+		"mcud",
+		"mcub",
+		"mcuf",
+		"mcuu",
+		"scs",
+		"smgb",
+		"smgbp",
+		"smglp",
+		"smgrp",
+		"smgt",
+		"smgtp",
+		"sbim",
+		"scsd",
+		"rbim",
+		"rcsd",
+		"subcs",
+		"supcs",
+		"docr",
+		"zerom",
+		"csnm",
+		"kmous",
+		"minfo",
+		"reqmp",
+		"getm",
+		"setaf",
+		"setab",
+		"pfxl",
+		"devt",
+		"csin",
+		"s0ds",
+		"s1ds",
+		"s2ds",
+		"s3ds",
+		"smglr",
+		"smgtb",
+		"birep",
+		"binel",
+		"bicr",
+		"colornm",
+		"defbi",
+		"endbi",
+		"setcolor",
+		"slines",
+		"dispc",
+		"smpch",
+		"rmpch",
+		"smsc",
+		"rmsc",
+		"pctrm",
+		"scesc",
+		"scesa",
+		"ehhlm",
+		"elhlm",
+		"elohlm",
+		"erhlm",
+		"ethlm",
+		"evhlm",
+		"sgr1",
+		"slength",
+		"OTi2",
+		"OTrs",
+		"OTnl",
+		"OTbc",
+		"OTko",
+		"OTma",
+		"OTG2",
+		"OTG3",
+		"OTG1",
+		"OTG4",
+		"OTGR",
+		"OTGL",
+		"OTGU",
+		"OTGD",
+		"OTGH",
+		"OTGV",
+		"OTGC",
+		"meml",
+		"memu",
+		"box1",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strfnames) = {
+		"back_tab",
+		"bell",
+		"carriage_return",
+		"change_scroll_region",
+		"clear_all_tabs",
+		"clear_screen",
+		"clr_eol",
+		"clr_eos",
+		"column_address",
+		"command_character",
+		"cursor_address",
+		"cursor_down",
+		"cursor_home",
+		"cursor_invisible",
+		"cursor_left",
+		"cursor_mem_address",
+		"cursor_normal",
+		"cursor_right",
+		"cursor_to_ll",
+		"cursor_up",
+		"cursor_visible",
+		"delete_character",
+		"delete_line",
+		"dis_status_line",
+		"down_half_line",
+		"enter_alt_charset_mode",
+		"enter_blink_mode",
+		"enter_bold_mode",
+		"enter_ca_mode",
+		"enter_delete_mode",
+		"enter_dim_mode",
+		"enter_insert_mode",
+		"enter_secure_mode",
+		"enter_protected_mode",
+		"enter_reverse_mode",
+		"enter_standout_mode",
+		"enter_underline_mode",
+		"erase_chars",
+		"exit_alt_charset_mode",
+		"exit_attribute_mode",
+		"exit_ca_mode",
+		"exit_delete_mode",
+		"exit_insert_mode",
+		"exit_standout_mode",
+		"exit_underline_mode",
+		"flash_screen",
+		"form_feed",
+		"from_status_line",
+		"init_1string",
+		"init_2string",
+		"init_3string",
+		"init_file",
+		"insert_character",
+		"insert_line",
+		"insert_padding",
+		"key_backspace",
+		"key_catab",
+		"key_clear",
+		"key_ctab",
+		"key_dc",
+		"key_dl",
+		"key_down",
+		"key_eic",
+		"key_eol",
+		"key_eos",
+		"key_f0",
+		"key_f1",
+		"key_f10",
+		"key_f2",
+		"key_f3",
+		"key_f4",
+		"key_f5",
+		"key_f6",
+		"key_f7",
+		"key_f8",
+		"key_f9",
+		"key_home",
+		"key_ic",
+		"key_il",
+		"key_left",
+		"key_ll",
+		"key_npage",
+		"key_ppage",
+		"key_right",
+		"key_sf",
+		"key_sr",
+		"key_stab",
+		"key_up",
+		"keypad_local",
+		"keypad_xmit",
+		"lab_f0",
+		"lab_f1",
+		"lab_f10",
+		"lab_f2",
+		"lab_f3",
+		"lab_f4",
+		"lab_f5",
+		"lab_f6",
+		"lab_f7",
+		"lab_f8",
+		"lab_f9",
+		"meta_off",
+		"meta_on",
+		"newline",
+		"pad_char",
+		"parm_dch",
+		"parm_delete_line",
+		"parm_down_cursor",
+		"parm_ich",
+		"parm_index",
+		"parm_insert_line",
+		"parm_left_cursor",
+		"parm_right_cursor",
+		"parm_rindex",
+		"parm_up_cursor",
+		"pkey_key",
+		"pkey_local",
+		"pkey_xmit",
+		"print_screen",
+		"prtr_off",
+		"prtr_on",
+		"repeat_char",
+		"reset_1string",
+		"reset_2string",
+		"reset_3string",
+		"reset_file",
+		"restore_cursor",
+		"row_address",
+		"save_cursor",
+		"scroll_forward",
+		"scroll_reverse",
+		"set_attributes",
+		"set_tab",
+		"set_window",
+		"tab",
+		"to_status_line",
+		"underline_char",
+		"up_half_line",
+		"init_prog",
+		"key_a1",
+		"key_a3",
+		"key_b2",
+		"key_c1",
+		"key_c3",
+		"prtr_non",
+		"char_padding",
+		"acs_chars",
+		"plab_norm",
+		"key_btab",
+		"enter_xon_mode",
+		"exit_xon_mode",
+		"enter_am_mode",
+		"exit_am_mode",
+		"xon_character",
+		"xoff_character",
+		"ena_acs",
+		"label_on",
+		"label_off",
+		"key_beg",
+		"key_cancel",
+		"key_close",
+		"key_command",
+		"key_copy",
+		"key_create",
+		"key_end",
+		"key_enter",
+		"key_exit",
+		"key_find",
+		"key_help",
+		"key_mark",
+		"key_message",
+		"key_move",
+		"key_next",
+		"key_open",
+		"key_options",
+		"key_previous",
+		"key_print",
+		"key_redo",
+		"key_reference",
+		"key_refresh",
+		"key_replace",
+		"key_restart",
+		"key_resume",
+		"key_save",
+		"key_suspend",
+		"key_undo",
+		"key_sbeg",
+		"key_scancel",
+		"key_scommand",
+		"key_scopy",
+		"key_screate",
+		"key_sdc",
+		"key_sdl",
+		"key_select",
+		"key_send",
+		"key_seol",
+		"key_sexit",
+		"key_sfind",
+		"key_shelp",
+		"key_shome",
+		"key_sic",
+		"key_sleft",
+		"key_smessage",
+		"key_smove",
+		"key_snext",
+		"key_soptions",
+		"key_sprevious",
+		"key_sprint",
+		"key_sredo",
+		"key_sreplace",
+		"key_sright",
+		"key_srsume",
+		"key_ssave",
+		"key_ssuspend",
+		"key_sundo",
+		"req_for_input",
+		"key_f11",
+		"key_f12",
+		"key_f13",
+		"key_f14",
+		"key_f15",
+		"key_f16",
+		"key_f17",
+		"key_f18",
+		"key_f19",
+		"key_f20",
+		"key_f21",
+		"key_f22",
+		"key_f23",
+		"key_f24",
+		"key_f25",
+		"key_f26",
+		"key_f27",
+		"key_f28",
+		"key_f29",
+		"key_f30",
+		"key_f31",
+		"key_f32",
+		"key_f33",
+		"key_f34",
+		"key_f35",
+		"key_f36",
+		"key_f37",
+		"key_f38",
+		"key_f39",
+		"key_f40",
+		"key_f41",
+		"key_f42",
+		"key_f43",
+		"key_f44",
+		"key_f45",
+		"key_f46",
+		"key_f47",
+		"key_f48",
+		"key_f49",
+		"key_f50",
+		"key_f51",
+		"key_f52",
+		"key_f53",
+		"key_f54",
+		"key_f55",
+		"key_f56",
+		"key_f57",
+		"key_f58",
+		"key_f59",
+		"key_f60",
+		"key_f61",
+		"key_f62",
+		"key_f63",
+		"clr_bol",
+		"clear_margins",
+		"set_left_margin",
+		"set_right_margin",
+		"label_format",
+		"set_clock",
+		"display_clock",
+		"remove_clock",
+		"create_window",
+		"goto_window",
+		"hangup",
+		"dial_phone",
+		"quick_dial",
+		"tone",
+		"pulse",
+		"flash_hook",
+		"fixed_pause",
+		"wait_tone",
+		"user0",
+		"user1",
+		"user2",
+		"user3",
+		"user4",
+		"user5",
+		"user6",
+		"user7",
+		"user8",
+		"user9",
+		"orig_pair",
+		"orig_colors",
+		"initialize_color",
+		"initialize_pair",
+		"set_color_pair",
+		"set_foreground",
+		"set_background",
+		"change_char_pitch",
+		"change_line_pitch",
+		"change_res_horz",
+		"change_res_vert",
+		"define_char",
+		"enter_doublewide_mode",
+		"enter_draft_quality",
+		"enter_italics_mode",
+		"enter_leftward_mode",
+		"enter_micro_mode",
+		"enter_near_letter_quality",
+		"enter_normal_quality",
+		"enter_shadow_mode",
+		"enter_subscript_mode",
+		"enter_superscript_mode",
+		"enter_upward_mode",
+		"exit_doublewide_mode",
+		"exit_italics_mode",
+		"exit_leftward_mode",
+		"exit_micro_mode",
+		"exit_shadow_mode",
+		"exit_subscript_mode",
+		"exit_superscript_mode",
+		"exit_upward_mode",
+		"micro_column_address",
+		"micro_down",
+		"micro_left",
+		"micro_right",
+		"micro_row_address",
+		"micro_up",
+		"order_of_pins",
+		"parm_down_micro",
+		"parm_left_micro",
+		"parm_right_micro",
+		"parm_up_micro",
+		"select_char_set",
+		"set_bottom_margin",
+		"set_bottom_margin_parm",
+		"set_left_margin_parm",
+		"set_right_margin_parm",
+		"set_top_margin",
+		"set_top_margin_parm",
+		"start_bit_image",
+		"start_char_set_def",
+		"stop_bit_image",
+		"stop_char_set_def",
+		"subscript_characters",
+		"superscript_characters",
+		"these_cause_cr",
+		"zero_motion",
+		"char_set_names",
+		"key_mouse",
+		"mouse_info",
+		"req_mouse_pos",
+		"get_mouse",
+		"set_a_foreground",
+		"set_a_background",
+		"pkey_plab",
+		"device_type",
+		"code_set_init",
+		"set0_des_seq",
+		"set1_des_seq",
+		"set2_des_seq",
+		"set3_des_seq",
+		"set_lr_margin",
+		"set_tb_margin",
+		"bit_image_repeat",
+		"bit_image_newline",
+		"bit_image_carriage_return",
+		"color_names",
+		"define_bit_image_region",
+		"end_bit_image_region",
+		"set_color_band",
+		"set_page_length",
+		"display_pc_char",
+		"enter_pc_charset_mode",
+		"exit_pc_charset_mode",
+		"enter_scancode_mode",
+		"exit_scancode_mode",
+		"pc_term_options",
+		"scancode_escape",
+		"alt_scancode_esc",
+		"enter_horizontal_hl_mode",
+		"enter_left_hl_mode",
+		"enter_low_hl_mode",
+		"enter_right_hl_mode",
+		"enter_top_hl_mode",
+		"enter_vertical_hl_mode",
+		"set_a_attributes",
+		"set_pglen_inch",
+		"termcap_init2",
+		"termcap_reset",
+		"linefeed_if_not_lf",
+		"backspace_if_not_bs",
+		"other_non_function_keys",
+		"arrow_key_map",
+		"acs_ulcorner",
+		"acs_llcorner",
+		"acs_urcorner",
+		"acs_lrcorner",
+		"acs_ltee",
+		"acs_rtee",
+		"acs_btee",
+		"acs_ttee",
+		"acs_hline",
+		"acs_vline",
+		"acs_plus",
+		"memory_lock",
+		"memory_unlock",
+		"box_chars_1",
+
+		(NCURSES_CONST char *)0,
+};
+
+
+#endif /* BROKEN_LINKER */
diff --git a/ncurses/unctrl.c b/ncurses/unctrl.c
new file mode 100644
index 0000000..563b176
--- /dev/null
+++ b/ncurses/unctrl.c
@@ -0,0 +1,163 @@
+/* generated by MKunctrl.awk */
+
+#include <curses.priv.h>
+#include <ctype.h>
+
+#if USE_WIDEC_SUPPORT
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+#endif
+
+#undef unctrl
+
+NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *sp, chtype ch)
+{
+static const short unctrl_table[] = {
+       0,   3,   6,   9,  12,  15,  18,  21,
+      24,  27,  30,  33,  36,  39,  42,  45,
+      48,  51,  54,  57,  60,  63,  66,  69,
+      72,  75,  78,  81,  84,  87,  90,  93,
+      96,  98, 100, 102, 104, 106, 108, 110,
+     112, 114, 116, 118, 120, 122, 124, 126,
+     128, 130, 132, 134, 136, 138, 140, 142,
+     144, 146, 148, 150, 152, 154, 156, 158,
+     160, 162, 164, 166, 168, 170, 172, 174,
+     176, 178, 180, 182, 184, 186, 188, 190,
+     192, 194, 196, 198, 200, 202, 204, 206,
+     208, 210, 212, 214, 216, 218, 220, 222,
+     224, 226, 228, 230, 232, 234, 236, 238,
+     240, 242, 244, 246, 248, 250, 252, 254,
+     256, 258, 260, 262, 264, 266, 268, 270,
+     272, 274, 276, 278, 280, 282, 284, 286,
+     289, 292, 295, 298, 301, 304, 307, 310,
+     313, 316, 319, 322, 325, 328, 331, 334,
+     337, 340, 343, 346, 349, 352, 355, 358,
+     361, 364, 367, 370, 373, 376, 379, 382,
+     385, 389, 393, 397, 401, 405, 409, 413,
+     417, 421, 425, 429, 433, 437, 441, 445,
+     449, 453, 457, 461, 465, 469, 473, 477,
+     481, 485, 489, 493, 497, 501, 505, 509,
+     513, 517, 521, 525, 529, 533, 537, 541,
+     545, 549, 553, 557, 561, 565, 569, 573,
+     577, 581, 585, 589, 593, 597, 601, 605,
+     609, 613, 617, 621, 625, 629, 633, 637,
+     641, 645, 649, 653, 657, 661, 665, 669,
+     673, 677, 681, 685, 689, 693, 697, 701,
+     705, 709, 713, 717, 721, 725, 729, 733,
+     737, 741, 745, 749, 753, 757, 761, 765,};
+
+#if NCURSES_EXT_FUNCS
+static const short unctrl_c1[] = {
+     768, 770, 772, 774, 776, 778, 780, 782,
+     784, 786, 788, 790, 792, 794, 796, 798,
+     800, 802, 804, 806, 808, 810, 812, 814,
+     816, 818, 820, 822, 824, 826, 828, 830,
+     832, 834, 836, 838, 840, 842, 844, 846,
+     848, 850, 852, 854, 856, 858, 860, 862,
+     864, 866, 868, 870, 872, 874, 876, 878,
+     880, 882, 884, 886, 888, 890, 892, 894,
+     896, 898, 900, 902, 904, 906, 908, 910,
+     912, 914, 916, 918, 920, 922, 924, 926,
+     928, 930, 932, 934, 936, 938, 940, 942,
+     944, 946, 948, 950, 952, 954, 956, 958,
+     960, 962, 964, 966, 968, 970, 972, 974,
+     976, 978, 980, 982, 984, 986, 988, 990,
+     992, 994, 996, 998,1000,1002,1004,1006,
+    1008,1010,1012,1014,1016,1018,1020,1022,};
+#endif /* NCURSES_EXT_FUNCS */
+
+static const char unctrl_blob[] = 
+    "^\100\0^\101\0^\102\0^\103\0^\104\0^\105\0^\106\0^\107\0"
+    "^\110\0^\111\0^\112\0^\113\0^\114\0^\115\0^\116\0^\117\0"
+    "^\120\0^\121\0^\122\0^\123\0^\124\0^\125\0^\126\0^\127\0"
+    "^\130\0^\131\0^\132\0^\133\0^\134\0^\135\0^\136\0^\137\0"
+    "\040\0\041\0\042\0\043\0\044\0\045\0\046\0\047\0"
+    "\050\0\051\0\052\0\053\0\054\0\055\0\056\0\057\0"
+    "\060\0\061\0\062\0\063\0\064\0\065\0\066\0\067\0"
+    "\070\0\071\0\072\0\073\0\074\0\075\0\076\0\077\0"
+    "\100\0\101\0\102\0\103\0\104\0\105\0\106\0\107\0"
+    "\110\0\111\0\112\0\113\0\114\0\115\0\116\0\117\0"
+    "\120\0\121\0\122\0\123\0\124\0\125\0\126\0\127\0"
+    "\130\0\131\0\132\0\133\0\134\0\135\0\136\0\137\0"
+    "\140\0\141\0\142\0\143\0\144\0\145\0\146\0\147\0"
+    "\150\0\151\0\152\0\153\0\154\0\155\0\156\0\157\0"
+    "\160\0\161\0\162\0\163\0\164\0\165\0\166\0\167\0"
+    "\170\0\171\0\172\0\173\0\174\0\175\0\176\0^?\0"
+    "~\100\0~\101\0~\102\0~\103\0~\104\0~\105\0~\106\0~\107\0"
+    "~\110\0~\111\0~\112\0~\113\0~\114\0~\115\0~\116\0~\117\0"
+    "~\120\0~\121\0~\122\0~\123\0~\124\0~\125\0~\126\0~\127\0"
+    "~\130\0~\131\0~\132\0~\133\0~\134\0~\135\0~\136\0~\137\0"
+    "M-\040\0M-\041\0M-\042\0M-\043\0M-\044\0M-\045\0M-\046\0M-\047\0"
+    "M-\050\0M-\051\0M-\052\0M-\053\0M-\054\0M-\055\0M-\056\0M-\057\0"
+    "M-\060\0M-\061\0M-\062\0M-\063\0M-\064\0M-\065\0M-\066\0M-\067\0"
+    "M-\070\0M-\071\0M-\072\0M-\073\0M-\074\0M-\075\0M-\076\0M-\077\0"
+    "M-\100\0M-\101\0M-\102\0M-\103\0M-\104\0M-\105\0M-\106\0M-\107\0"
+    "M-\110\0M-\111\0M-\112\0M-\113\0M-\114\0M-\115\0M-\116\0M-\117\0"
+    "M-\120\0M-\121\0M-\122\0M-\123\0M-\124\0M-\125\0M-\126\0M-\127\0"
+    "M-\130\0M-\131\0M-\132\0M-\133\0M-\134\0M-\135\0M-\136\0M-\137\0"
+    "M-\140\0M-\141\0M-\142\0M-\143\0M-\144\0M-\145\0M-\146\0M-\147\0"
+    "M-\150\0M-\151\0M-\152\0M-\153\0M-\154\0M-\155\0M-\156\0M-\157\0"
+    "M-\160\0M-\161\0M-\162\0M-\163\0M-\164\0M-\165\0M-\166\0M-\167\0"
+    "M-\170\0M-\171\0M-\172\0M-\173\0M-\174\0M-\175\0M-\176\0~?\0"
+/* printable values in 128-255 range */
+    "\200\0\201\0\202\0\203\0\204\0\205\0\206\0\207\0"
+    "\210\0\211\0\212\0\213\0\214\0\215\0\216\0\217\0"
+    "\220\0\221\0\222\0\223\0\224\0\225\0\226\0\227\0"
+    "\230\0\231\0\232\0\233\0\234\0\235\0\236\0\237\0"
+    "\240\0\241\0\242\0\243\0\244\0\245\0\246\0\247\0"
+    "\250\0\251\0\252\0\253\0\254\0\255\0\256\0\257\0"
+    "\260\0\261\0\262\0\263\0\264\0\265\0\266\0\267\0"
+    "\270\0\271\0\272\0\273\0\274\0\275\0\276\0\277\0"
+    "\300\0\301\0\302\0\303\0\304\0\305\0\306\0\307\0"
+    "\310\0\311\0\312\0\313\0\314\0\315\0\316\0\317\0"
+    "\320\0\321\0\322\0\323\0\324\0\325\0\326\0\327\0"
+    "\330\0\331\0\332\0\333\0\334\0\335\0\336\0\337\0"
+    "\340\0\341\0\342\0\343\0\344\0\345\0\346\0\347\0"
+    "\350\0\351\0\352\0\353\0\354\0\355\0\356\0\357\0"
+    "\360\0\361\0\362\0\363\0\364\0\365\0\366\0\367\0"
+    "\370\0\371\0\372\0\373\0\374\0\375\0\376\0\377\0"
+;
+
+	int check = ChCharOf(ch);
+	const char *result;
+
+	if (check >= 0 && check < (int)SIZEOF(unctrl_table)) {
+#if NCURSES_EXT_FUNCS
+		if ((sp != 0)
+		 && (sp->_legacy_coding > 1)
+		 && (check >= 128)
+		 && (check < 160))
+			result = unctrl_blob + unctrl_c1[check - 128];
+		else
+#if USE_WIDEC_SUPPORT
+		if ((check >= 160)
+		 && (check < 256)
+		 && ((sp != 0)
+		  && ((sp->_legacy_coding > 0)
+		   || (sp->_legacy_coding == 0
+		       && (isprint(check) || iswprint(check))))))
+			result = unctrl_blob + unctrl_c1[check - 128];
+		else
+#else
+		if ((check >= 160)
+		 && (check < 256)
+		 && ((sp != 0)
+		  && ((sp->_legacy_coding > 0)
+		   || (sp->_legacy_coding == 0
+		       && isprint(check)))))
+			result = unctrl_blob + unctrl_c1[check - 128];
+		else
+#endif /* USE_WIDEC_SUPPORT */
+#endif /* NCURSES_EXT_FUNCS */
+			result = unctrl_blob + unctrl_table[check];
+	} else {
+		result = 0;
+	}
+	return (NCURSES_CONST char *)result;
+}
+
+NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype ch)
+{
+	return _nc_unctrl(SP, ch);
+}
diff --git a/panel/Makefile b/panel/Makefile
new file mode 100644
index 0000000..a4a8e3d
--- /dev/null
+++ b/panel/Makefile
@@ -0,0 +1,492 @@
+# $Id: Makefile.in,v 1.52 2007/04/28 14:56:11 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2006,2007 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 "Software"), #
+# to deal in the Software without restriction, including without limitation  #
+# the rights to use, copy, modify, merge, publish, distribute, distribute    #
+# with modifications, 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 COPYRIGHT HOLDERS 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for panels source code.
+#
+# This makes the following:
+#	libraries (normal/debug/profile/shared)
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+THIS		= Makefile
+
+x		= 
+o		= .o
+
+MODEL		= normal
+DESTDIR		= 
+srcdir		= .
+prefix		= /usr/local
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+includedir	= ${prefix}/include/ncurses
+datadir		= ${prefix}/share
+
+LIBTOOL		= 
+LIBTOOL_CLEAN	= 
+LIBTOOL_COMPILE	= 
+LIBTOOL_LINK	= ${CC}
+LIBTOOL_INSTALL	= 
+LIBTOOL_UNINSTALL = 
+
+INSTALL		= /usr/bin/install -c
+INSTALL_LIB	= /usr/bin/install -c -m 644
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AR		= arm-eabi-ar
+AR_OPTS		= rv
+AWK		= mawk
+LD		= arm-eabi-ld
+LN_S		= ln -s
+
+CC		= agcc.pl
+CPP		= agcc.pl -E
+CFLAGS		= -O2 --param max-inline-insns-single=1200
+
+CPPFLAGS	= -I../ncurses -DHAVE_CONFIG_H -I. -I../include  -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=199506L -DNDEBUG -I${includedir}
+
+CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
+
+CFLAGS_LIBTOOL	= $(CCFLAGS)
+CFLAGS_NORMAL	= $(CCFLAGS)
+CFLAGS_DEBUG	= $(CCFLAGS) -g -DTRACE
+CFLAGS_PROFILE	= $(CCFLAGS) -pg
+CFLAGS_SHARED	= $(CCFLAGS) unknown
+
+CFLAGS_DEFAULT	= $(CFLAGS_NORMAL)
+
+LINK		= $(LIBTOOL_LINK)
+LDFLAGS		=   
+
+SHLIB_DIRS	= -L../lib
+SHLIB_LIST	= $(SHLIB_DIRS) -lncurses 
+
+MK_SHARED_LIB	= echo unknown
+
+NCURSES_MAJOR	= 5
+NCURSES_MINOR	= 7
+REL_VERSION	= 5.7
+ABI_VERSION	= 5
+
+RANLIB		= arm-eabi-ranlib
+
+LIBRARIES	=  ../lib/libpanel.a ../lib/libpanel_g.a
+
+LINT		= 
+LINT_OPTS	= 
+LINT_LIBS	= -lpanel -lncurses 
+
+AUTO_SRC	= \
+		../include/panel.h
+
+################################################################################
+all \
+libs \
+install ::	$(AUTO_SRC) $(LIBRARIES)
+
+sources:	$(AUTO_SRC)
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) :
+	sh $(srcdir)/../mkdirs.sh $@
+
+# make a copy to simplify include-paths while still keeping panel's include
+# file in this directory.
+../include/panel.h : $(srcdir)/panel.h
+	-rm -f $@
+	cp $(srcdir)/panel.h $@
+
+PANEL_PRIV_H = \
+	$(srcdir)/panel.priv.h \
+	$(srcdir)/panel.h
+
+tags:
+	ctags *.[ch]
+
+TAGS:
+	etags *.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+
+distclean :: clean
+	-rm -f Makefile
+
+realclean :: distclean
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# generated by mk-0th.awk
+#   libname:    panel
+#   subsets:    ticlib+termlib+ext_tinfo+base+ext_funcs
+
+.SUFFIXES: .c .cc .h .i .ii
+.c.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+.cc.ii :
+	$(CPP) $(CPPFLAGS) $< >$@
+.h.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+
+C_SRC = \
+	$(srcdir)/panel.c \
+	$(srcdir)/p_above.c \
+	$(srcdir)/p_below.c \
+	$(srcdir)/p_bottom.c \
+	$(srcdir)/p_delete.c \
+	$(srcdir)/p_hide.c \
+	$(srcdir)/p_hidden.c \
+	$(srcdir)/p_move.c \
+	$(srcdir)/p_new.c \
+	$(srcdir)/p_replace.c \
+	$(srcdir)/p_show.c \
+	$(srcdir)/p_top.c \
+	$(srcdir)/p_update.c \
+	$(srcdir)/p_user.c \
+	$(srcdir)/p_win.c
+
+# Producing llib-lpanel is time-consuming, so there's no direct-dependency for
+# it in the lintlib rule.  We'll only remove in the cleanest setup.
+clean ::
+	rm -f llib-lpanel.*
+
+realclean ::
+	rm -f llib-lpanel
+
+llib-lpanel : $(C_SRC)
+	cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@
+
+lintlib :
+	sh $(srcdir)/../misc/makellib panel $(CPPFLAGS)
+lint :
+	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          panel
+#  traces:        DEBUG
+#  MODEL:         NORMAL
+#  model:         objects
+#  prefix:        lib
+#  suffix:        .a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./panel.priv.h
+#  host:          arm-unknown-eabi
+
+NORMAL_OBJS = \
+	../objects/panel$o \
+	../objects/p_above$o \
+	../objects/p_below$o \
+	../objects/p_bottom$o \
+	../objects/p_delete$o \
+	../objects/p_hide$o \
+	../objects/p_hidden$o \
+	../objects/p_move$o \
+	../objects/p_new$o \
+	../objects/p_replace$o \
+	../objects/p_show$o \
+	../objects/p_top$o \
+	../objects/p_update$o \
+	../objects/p_user$o \
+	../objects/p_win$o
+
+$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./panel.priv.h
+
+../lib/libpanel.a : $(NORMAL_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.panel :: $(DESTDIR)$(libdir) ../lib/libpanel.a
+	@echo installing ../lib/libpanel.a as $(DESTDIR)$(libdir)/libpanel.a
+	$(INSTALL_DATA) ../lib/libpanel.a $(DESTDIR)$(libdir)/libpanel.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libpanel.a
+
+uninstall \
+uninstall.libs \
+uninstall.panel ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libpanel.a
+	-@rm -f $(DESTDIR)$(libdir)/libpanel.a
+
+clean ::
+	-rm -f ../lib/libpanel.a
+
+mostlyclean::
+	-rm -f $(NORMAL_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      objects
+#   MODEL:      NORMAL
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../objects/panel$o :	$(srcdir)/panel.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/panel.c -o ../objects/panel$o
+
+../objects/p_above$o :	$(srcdir)/p_above.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_above.c -o ../objects/p_above$o
+
+../objects/p_below$o :	$(srcdir)/p_below.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_below.c -o ../objects/p_below$o
+
+../objects/p_bottom$o :	$(srcdir)/p_bottom.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_bottom.c -o ../objects/p_bottom$o
+
+../objects/p_delete$o :	$(srcdir)/p_delete.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_delete.c -o ../objects/p_delete$o
+
+../objects/p_hide$o :	$(srcdir)/p_hide.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_hide.c -o ../objects/p_hide$o
+
+../objects/p_hidden$o :	$(srcdir)/p_hidden.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_hidden.c -o ../objects/p_hidden$o
+
+../objects/p_move$o :	$(srcdir)/p_move.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_move.c -o ../objects/p_move$o
+
+../objects/p_new$o :	$(srcdir)/p_new.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_new.c -o ../objects/p_new$o
+
+../objects/p_replace$o :	$(srcdir)/p_replace.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_replace.c -o ../objects/p_replace$o
+
+../objects/p_show$o :	$(srcdir)/p_show.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_show.c -o ../objects/p_show$o
+
+../objects/p_top$o :	$(srcdir)/p_top.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_top.c -o ../objects/p_top$o
+
+../objects/p_update$o :	$(srcdir)/p_update.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_update.c -o ../objects/p_update$o
+
+../objects/p_user$o :	$(srcdir)/p_user.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_user.c -o ../objects/p_user$o
+
+../objects/p_win$o :	$(srcdir)/p_win.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_win.c -o ../objects/p_win$o
+
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          panel
+#  traces:        DEBUG
+#  MODEL:         DEBUG
+#  model:         obj_g
+#  prefix:        lib
+#  suffix:        _g.a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  ShlibVer:      auto
+#  ShlibVerInfix: no
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        
+#  DoLinks:       no
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./panel.priv.h
+#  host:          arm-unknown-eabi
+
+DEBUG_OBJS = \
+	../obj_g/panel$o \
+	../obj_g/p_above$o \
+	../obj_g/p_below$o \
+	../obj_g/p_bottom$o \
+	../obj_g/p_delete$o \
+	../obj_g/p_hide$o \
+	../obj_g/p_hidden$o \
+	../obj_g/p_move$o \
+	../obj_g/p_new$o \
+	../obj_g/p_replace$o \
+	../obj_g/p_show$o \
+	../obj_g/p_top$o \
+	../obj_g/p_update$o \
+	../obj_g/p_user$o \
+	../obj_g/p_win$o
+
+$(DEBUG_OBJS) : ../include/ncurses_cfg.h ./panel.priv.h
+
+../lib/libpanel_g.a : $(DEBUG_OBJS)
+	$(AR) $(AR_OPTS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.panel :: $(DESTDIR)$(libdir) ../lib/libpanel_g.a
+	@echo installing ../lib/libpanel_g.a as $(DESTDIR)$(libdir)/libpanel_g.a
+	$(INSTALL_DATA) ../lib/libpanel_g.a $(DESTDIR)$(libdir)/libpanel_g.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libpanel_g.a
+
+uninstall \
+uninstall.libs \
+uninstall.panel ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libpanel_g.a
+	-@rm -f $(DESTDIR)$(libdir)/libpanel_g.a
+
+clean ::
+	-rm -f ../lib/libpanel_g.a
+
+mostlyclean::
+	-rm -f $(DEBUG_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      obj_g
+#   MODEL:      DEBUG
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: no
+#   traces:     DEBUG
+#   srcdir:     .
+
+../obj_g/panel$o :	$(srcdir)/panel.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/panel.c -o ../obj_g/panel$o
+
+../obj_g/p_above$o :	$(srcdir)/p_above.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_above.c -o ../obj_g/p_above$o
+
+../obj_g/p_below$o :	$(srcdir)/p_below.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_below.c -o ../obj_g/p_below$o
+
+../obj_g/p_bottom$o :	$(srcdir)/p_bottom.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_bottom.c -o ../obj_g/p_bottom$o
+
+../obj_g/p_delete$o :	$(srcdir)/p_delete.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_delete.c -o ../obj_g/p_delete$o
+
+../obj_g/p_hide$o :	$(srcdir)/p_hide.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_hide.c -o ../obj_g/p_hide$o
+
+../obj_g/p_hidden$o :	$(srcdir)/p_hidden.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_hidden.c -o ../obj_g/p_hidden$o
+
+../obj_g/p_move$o :	$(srcdir)/p_move.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_move.c -o ../obj_g/p_move$o
+
+../obj_g/p_new$o :	$(srcdir)/p_new.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_new.c -o ../obj_g/p_new$o
+
+../obj_g/p_replace$o :	$(srcdir)/p_replace.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_replace.c -o ../obj_g/p_replace$o
+
+../obj_g/p_show$o :	$(srcdir)/p_show.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_show.c -o ../obj_g/p_show$o
+
+../obj_g/p_top$o :	$(srcdir)/p_top.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_top.c -o ../obj_g/p_top$o
+
+../obj_g/p_update$o :	$(srcdir)/p_update.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_update.c -o ../obj_g/p_update$o
+
+../obj_g/p_user$o :	$(srcdir)/p_user.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_user.c -o ../obj_g/p_user$o
+
+../obj_g/p_win$o :	$(srcdir)/p_win.c \
+			$(PANEL_PRIV_H)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../panel/p_win.c -o ../obj_g/p_win$o
+
+
+# generated by mk-hdr.awk
+#  subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#  compat:     yes
+
+${DESTDIR}${includedir} :
+	sh ${srcdir}/../mkdirs.sh $@
+
+install \
+install.libs \
+install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \
+		$(srcdir)/panel.h
+	@ (cd ${DESTDIR}${includedir} && rm -f panel.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/panel.h
+
+uninstall \
+uninstall.libs \
+uninstall.includes ::
+	-@ (cd ${DESTDIR}${includedir} && rm -f panel.h)
+depend : ${AUTO_SRC}
+	makedepend -- ${CPPFLAGS} -- ${C_SRC}
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/progs/clear b/progs/clear
new file mode 100755
index 0000000..2e8d121
--- /dev/null
+++ b/progs/clear
Binary files differ
diff --git a/progs/infocmp b/progs/infocmp
new file mode 100755
index 0000000..42060de
--- /dev/null
+++ b/progs/infocmp
Binary files differ
diff --git a/progs/termsort.c b/progs/termsort.c
new file mode 100644
index 0000000..9cd80f8
--- /dev/null
+++ b/progs/termsort.c
@@ -0,0 +1,2163 @@
+/*
+ * termsort.c --- sort order arrays for use by infocmp.
+ *
+ * Note: this file is generated using MKtermsort.sh, do not edit by hand.
+ */
+static const PredIdx bool_terminfo_sort[] = {
+	 40 ,	/*  OTMT  */
+	 41 ,	/*  OTNL  */
+	 37 ,	/*  OTbs  */
+	 39 ,	/*  OTnc  */
+	 38 ,	/*  OTns  */
+	 42 ,	/*  OTpt  */
+	 43 ,	/*  OTxr  */
+	 1 ,	/*  am  */
+	 28 ,	/*  bce  */
+	 0 ,	/*  bw  */
+	 27 ,	/*  ccc  */
+	 23 ,	/*  chts  */
+	 35 ,	/*  cpix  */
+	 31 ,	/*  crxm  */
+	 11 ,	/*  da  */
+	 32 ,	/*  daisy  */
+	 12 ,	/*  db  */
+	 5 ,	/*  eo  */
+	 16 ,	/*  eslok  */
+	 6 ,	/*  gn  */
+	 7 ,	/*  hc  */
+	 29 ,	/*  hls  */
+	 9 ,	/*  hs  */
+	 18 ,	/*  hz  */
+	 10 ,	/*  in  */
+	 8 ,	/*  km  */
+	 36 ,	/*  lpix  */
+	 22 ,	/*  mc5i  */
+	 13 ,	/*  mir  */
+	 14 ,	/*  msgr  */
+	 26 ,	/*  ndscr  */
+	 25 ,	/*  npc  */
+	 24 ,	/*  nrrmc  */
+	 21 ,	/*  nxon  */
+	 15 ,	/*  os  */
+	 34 ,	/*  sam  */
+	 19 ,	/*  ul  */
+	 4 ,	/*  xenl  */
+	 3 ,	/*  xhp  */
+	 30 ,	/*  xhpa  */
+	 20 ,	/*  xon  */
+	 2 ,	/*  xsb  */
+	 17 ,	/*  xt  */
+	 33 ,	/*  xvpa  */
+};
+
+static const PredIdx num_terminfo_sort[] = {
+	 36 ,	/*  OTdB  */
+	 34 ,	/*  OTdC  */
+	 35 ,	/*  OTdN  */
+	 37 ,	/*  OTdT  */
+	 38 ,	/*  OTkn  */
+	 33 ,	/*  OTug  */
+	 31 ,	/*  bitwin  */
+	 32 ,	/*  bitype  */
+	 30 ,	/*  btns  */
+	 16 ,	/*  bufsz  */
+	 13 ,	/*  colors  */
+	 0 ,	/*  cols  */
+	 28 ,	/*  cps  */
+	 1 ,	/*  it  */
+	 9 ,	/*  lh  */
+	 2 ,	/*  lines  */
+	 3 ,	/*  lm  */
+	 10 ,	/*  lw  */
+	 11 ,	/*  ma  */
+	 19 ,	/*  maddr  */
+	 21 ,	/*  mcs  */
+	 20 ,	/*  mjump  */
+	 22 ,	/*  mls  */
+	 15 ,	/*  ncv  */
+	 8 ,	/*  nlab  */
+	 23 ,	/*  npins  */
+	 24 ,	/*  orc  */
+	 26 ,	/*  orhi  */
+	 25 ,	/*  orl  */
+	 27 ,	/*  orvi  */
+	 14 ,	/*  pairs  */
+	 5 ,	/*  pb  */
+	 18 ,	/*  spinh  */
+	 17 ,	/*  spinv  */
+	 6 ,	/*  vt  */
+	 29 ,	/*  widcs  */
+	 12 ,	/*  wnum  */
+	 7 ,	/*  wsl  */
+	 4 ,	/*  xmc  */
+};
+
+static const PredIdx str_terminfo_sort[] = {
+	 402 ,	/*  OTG1  */
+	 400 ,	/*  OTG2  */
+	 401 ,	/*  OTG3  */
+	 403 ,	/*  OTG4  */
+	 410 ,	/*  OTGC  */
+	 407 ,	/*  OTGD  */
+	 408 ,	/*  OTGH  */
+	 405 ,	/*  OTGL  */
+	 404 ,	/*  OTGR  */
+	 406 ,	/*  OTGU  */
+	 409 ,	/*  OTGV  */
+	 397 ,	/*  OTbc  */
+	 394 ,	/*  OTi2  */
+	 398 ,	/*  OTko  */
+	 399 ,	/*  OTma  */
+	 396 ,	/*  OTnl  */
+	 395 ,	/*  OTrs  */
+	 146 ,	/*  acsc  */
+	 1 ,	/*  bel  */
+	 372 ,	/*  bicr  */
+	 371 ,	/*  binel  */
+	 370 ,	/*  birep  */
+	 26 ,	/*  blink  */
+	 27 ,	/*  bold  */
+	 413 ,	/*  box1  */
+	 0 ,	/*  cbt  */
+	 306 ,	/*  chr  */
+	 13 ,	/*  civis  */
+	 5 ,	/*  clear  */
+	 9 ,	/*  cmdch  */
+	 16 ,	/*  cnorm  */
+	 373 ,	/*  colornm  */
+	 304 ,	/*  cpi  */
+	 2 ,	/*  cr  */
+	 363 ,	/*  csin  */
+	 354 ,	/*  csnm  */
+	 3 ,	/*  csr  */
+	 111 ,	/*  cub  */
+	 14 ,	/*  cub1  */
+	 107 ,	/*  cud  */
+	 11 ,	/*  cud1  */
+	 112 ,	/*  cuf  */
+	 17 ,	/*  cuf1  */
+	 10 ,	/*  cup  */
+	 114 ,	/*  cuu  */
+	 19 ,	/*  cuu1  */
+	 307 ,	/*  cvr  */
+	 20 ,	/*  cvvis  */
+	 277 ,	/*  cwin  */
+	 105 ,	/*  dch  */
+	 21 ,	/*  dch1  */
+	 275 ,	/*  dclk  */
+	 374 ,	/*  defbi  */
+	 308 ,	/*  defc  */
+	 362 ,	/*  devt  */
+	 280 ,	/*  dial  */
+	 30 ,	/*  dim  */
+	 378 ,	/*  dispc  */
+	 106 ,	/*  dl  */
+	 22 ,	/*  dl1  */
+	 352 ,	/*  docr  */
+	 23 ,	/*  dsl  */
+	 37 ,	/*  ech  */
+	 7 ,	/*  ed  */
+	 386 ,	/*  ehhlm  */
+	 6 ,	/*  el  */
+	 269 ,	/*  el1  */
+	 387 ,	/*  elhlm  */
+	 388 ,	/*  elohlm  */
+	 155 ,	/*  enacs  */
+	 375 ,	/*  endbi  */
+	 389 ,	/*  erhlm  */
+	 390 ,	/*  ethlm  */
+	 391 ,	/*  evhlm  */
+	 46 ,	/*  ff  */
+	 45 ,	/*  flash  */
+	 273 ,	/*  fln  */
+	 47 ,	/*  fsl  */
+	 358 ,	/*  getm  */
+	 24 ,	/*  hd  */
+	 12 ,	/*  home  */
+	 284 ,	/*  hook  */
+	 8 ,	/*  hpa  */
+	 134 ,	/*  ht  */
+	 132 ,	/*  hts  */
+	 137 ,	/*  hu  */
+	 279 ,	/*  hup  */
+	 108 ,	/*  ich  */
+	 52 ,	/*  ich1  */
+	 51 ,	/*  if  */
+	 110 ,	/*  il  */
+	 53 ,	/*  il1  */
+	 129 ,	/*  ind  */
+	 109 ,	/*  indn  */
+	 299 ,	/*  initc  */
+	 300 ,	/*  initp  */
+	 32 ,	/*  invis  */
+	 54 ,	/*  ip  */
+	 138 ,	/*  iprog  */
+	 48 ,	/*  is1  */
+	 49 ,	/*  is2  */
+	 50 ,	/*  is3  */
+	 186 ,	/*  kBEG  */
+	 187 ,	/*  kCAN  */
+	 188 ,	/*  kCMD  */
+	 189 ,	/*  kCPY  */
+	 190 ,	/*  kCRT  */
+	 191 ,	/*  kDC  */
+	 192 ,	/*  kDL  */
+	 194 ,	/*  kEND  */
+	 195 ,	/*  kEOL  */
+	 196 ,	/*  kEXT  */
+	 197 ,	/*  kFND  */
+	 198 ,	/*  kHLP  */
+	 199 ,	/*  kHOM  */
+	 200 ,	/*  kIC  */
+	 201 ,	/*  kLFT  */
+	 203 ,	/*  kMOV  */
+	 202 ,	/*  kMSG  */
+	 204 ,	/*  kNXT  */
+	 205 ,	/*  kOPT  */
+	 207 ,	/*  kPRT  */
+	 206 ,	/*  kPRV  */
+	 208 ,	/*  kRDO  */
+	 211 ,	/*  kRES  */
+	 210 ,	/*  kRIT  */
+	 209 ,	/*  kRPL  */
+	 212 ,	/*  kSAV  */
+	 213 ,	/*  kSPD  */
+	 214 ,	/*  kUND  */
+	 139 ,	/*  ka1  */
+	 140 ,	/*  ka3  */
+	 141 ,	/*  kb2  */
+	 158 ,	/*  kbeg  */
+	 55 ,	/*  kbs  */
+	 142 ,	/*  kc1  */
+	 143 ,	/*  kc3  */
+	 159 ,	/*  kcan  */
+	 148 ,	/*  kcbt  */
+	 160 ,	/*  kclo  */
+	 57 ,	/*  kclr  */
+	 161 ,	/*  kcmd  */
+	 162 ,	/*  kcpy  */
+	 163 ,	/*  kcrt  */
+	 58 ,	/*  kctab  */
+	 79 ,	/*  kcub1  */
+	 61 ,	/*  kcud1  */
+	 83 ,	/*  kcuf1  */
+	 87 ,	/*  kcuu1  */
+	 59 ,	/*  kdch1  */
+	 60 ,	/*  kdl1  */
+	 64 ,	/*  ked  */
+	 63 ,	/*  kel  */
+	 164 ,	/*  kend  */
+	 165 ,	/*  kent  */
+	 166 ,	/*  kext  */
+	 65 ,	/*  kf0  */
+	 66 ,	/*  kf1  */
+	 67 ,	/*  kf10  */
+	 216 ,	/*  kf11  */
+	 217 ,	/*  kf12  */
+	 218 ,	/*  kf13  */
+	 219 ,	/*  kf14  */
+	 220 ,	/*  kf15  */
+	 221 ,	/*  kf16  */
+	 222 ,	/*  kf17  */
+	 223 ,	/*  kf18  */
+	 224 ,	/*  kf19  */
+	 68 ,	/*  kf2  */
+	 225 ,	/*  kf20  */
+	 226 ,	/*  kf21  */
+	 227 ,	/*  kf22  */
+	 228 ,	/*  kf23  */
+	 229 ,	/*  kf24  */
+	 230 ,	/*  kf25  */
+	 231 ,	/*  kf26  */
+	 232 ,	/*  kf27  */
+	 233 ,	/*  kf28  */
+	 234 ,	/*  kf29  */
+	 69 ,	/*  kf3  */
+	 235 ,	/*  kf30  */
+	 236 ,	/*  kf31  */
+	 237 ,	/*  kf32  */
+	 238 ,	/*  kf33  */
+	 239 ,	/*  kf34  */
+	 240 ,	/*  kf35  */
+	 241 ,	/*  kf36  */
+	 242 ,	/*  kf37  */
+	 243 ,	/*  kf38  */
+	 244 ,	/*  kf39  */
+	 70 ,	/*  kf4  */
+	 245 ,	/*  kf40  */
+	 246 ,	/*  kf41  */
+	 247 ,	/*  kf42  */
+	 248 ,	/*  kf43  */
+	 249 ,	/*  kf44  */
+	 250 ,	/*  kf45  */
+	 251 ,	/*  kf46  */
+	 252 ,	/*  kf47  */
+	 253 ,	/*  kf48  */
+	 254 ,	/*  kf49  */
+	 71 ,	/*  kf5  */
+	 255 ,	/*  kf50  */
+	 256 ,	/*  kf51  */
+	 257 ,	/*  kf52  */
+	 258 ,	/*  kf53  */
+	 259 ,	/*  kf54  */
+	 260 ,	/*  kf55  */
+	 261 ,	/*  kf56  */
+	 262 ,	/*  kf57  */
+	 263 ,	/*  kf58  */
+	 264 ,	/*  kf59  */
+	 72 ,	/*  kf6  */
+	 265 ,	/*  kf60  */
+	 266 ,	/*  kf61  */
+	 267 ,	/*  kf62  */
+	 268 ,	/*  kf63  */
+	 73 ,	/*  kf7  */
+	 74 ,	/*  kf8  */
+	 75 ,	/*  kf9  */
+	 167 ,	/*  kfnd  */
+	 168 ,	/*  khlp  */
+	 76 ,	/*  khome  */
+	 86 ,	/*  khts  */
+	 77 ,	/*  kich1  */
+	 78 ,	/*  kil1  */
+	 84 ,	/*  kind  */
+	 80 ,	/*  kll  */
+	 355 ,	/*  kmous  */
+	 171 ,	/*  kmov  */
+	 169 ,	/*  kmrk  */
+	 170 ,	/*  kmsg  */
+	 81 ,	/*  knp  */
+	 172 ,	/*  knxt  */
+	 173 ,	/*  kopn  */
+	 174 ,	/*  kopt  */
+	 82 ,	/*  kpp  */
+	 176 ,	/*  kprt  */
+	 175 ,	/*  kprv  */
+	 177 ,	/*  krdo  */
+	 178 ,	/*  kref  */
+	 182 ,	/*  kres  */
+	 179 ,	/*  krfr  */
+	 85 ,	/*  kri  */
+	 62 ,	/*  krmir  */
+	 180 ,	/*  krpl  */
+	 181 ,	/*  krst  */
+	 183 ,	/*  ksav  */
+	 193 ,	/*  kslt  */
+	 184 ,	/*  kspd  */
+	 56 ,	/*  ktbc  */
+	 185 ,	/*  kund  */
+	 90 ,	/*  lf0  */
+	 91 ,	/*  lf1  */
+	 92 ,	/*  lf10  */
+	 93 ,	/*  lf2  */
+	 94 ,	/*  lf3  */
+	 95 ,	/*  lf4  */
+	 96 ,	/*  lf5  */
+	 97 ,	/*  lf6  */
+	 98 ,	/*  lf7  */
+	 99 ,	/*  lf8  */
+	 100 ,	/*  lf9  */
+	 18 ,	/*  ll  */
+	 305 ,	/*  lpi  */
+	 118 ,	/*  mc0  */
+	 119 ,	/*  mc4  */
+	 120 ,	/*  mc5  */
+	 144 ,	/*  mc5p  */
+	 336 ,	/*  mcub  */
+	 330 ,	/*  mcub1  */
+	 335 ,	/*  mcud  */
+	 329 ,	/*  mcud1  */
+	 337 ,	/*  mcuf  */
+	 331 ,	/*  mcuf1  */
+	 338 ,	/*  mcuu  */
+	 333 ,	/*  mcuu1  */
+	 411 ,	/*  meml  */
+	 412 ,	/*  memu  */
+	 270 ,	/*  mgc  */
+	 328 ,	/*  mhpa  */
+	 356 ,	/*  minfo  */
+	 15 ,	/*  mrcup  */
+	 332 ,	/*  mvpa  */
+	 103 ,	/*  nel  */
+	 298 ,	/*  oc  */
+	 297 ,	/*  op  */
+	 104 ,	/*  pad  */
+	 285 ,	/*  pause  */
+	 383 ,	/*  pctrm  */
+	 115 ,	/*  pfkey  */
+	 116 ,	/*  pfloc  */
+	 117 ,	/*  pfx  */
+	 361 ,	/*  pfxl  */
+	 147 ,	/*  pln  */
+	 334 ,	/*  porder  */
+	 33 ,	/*  prot  */
+	 283 ,	/*  pulse  */
+	 281 ,	/*  qdial  */
+	 348 ,	/*  rbim  */
+	 126 ,	/*  rc  */
+	 349 ,	/*  rcsd  */
+	 121 ,	/*  rep  */
+	 357 ,	/*  reqmp  */
+	 34 ,	/*  rev  */
+	 125 ,	/*  rf  */
+	 215 ,	/*  rfi  */
+	 130 ,	/*  ri  */
+	 113 ,	/*  rin  */
+	 321 ,	/*  ritm  */
+	 322 ,	/*  rlm  */
+	 38 ,	/*  rmacs  */
+	 152 ,	/*  rmam  */
+	 276 ,	/*  rmclk  */
+	 40 ,	/*  rmcup  */
+	 41 ,	/*  rmdc  */
+	 323 ,	/*  rmicm  */
+	 42 ,	/*  rmir  */
+	 88 ,	/*  rmkx  */
+	 157 ,	/*  rmln  */
+	 101 ,	/*  rmm  */
+	 145 ,	/*  rmp  */
+	 380 ,	/*  rmpch  */
+	 382 ,	/*  rmsc  */
+	 43 ,	/*  rmso  */
+	 44 ,	/*  rmul  */
+	 150 ,	/*  rmxon  */
+	 122 ,	/*  rs1  */
+	 123 ,	/*  rs2  */
+	 124 ,	/*  rs3  */
+	 324 ,	/*  rshm  */
+	 325 ,	/*  rsubm  */
+	 326 ,	/*  rsupm  */
+	 327 ,	/*  rum  */
+	 320 ,	/*  rwidm  */
+	 364 ,	/*  s0ds  */
+	 365 ,	/*  s1ds  */
+	 366 ,	/*  s2ds  */
+	 367 ,	/*  s3ds  */
+	 346 ,	/*  sbim  */
+	 128 ,	/*  sc  */
+	 385 ,	/*  scesa  */
+	 384 ,	/*  scesc  */
+	 274 ,	/*  sclk  */
+	 301 ,	/*  scp  */
+	 339 ,	/*  scs  */
+	 347 ,	/*  scsd  */
+	 310 ,	/*  sdrfq  */
+	 360 ,	/*  setab  */
+	 359 ,	/*  setaf  */
+	 303 ,	/*  setb  */
+	 376 ,	/*  setcolor  */
+	 302 ,	/*  setf  */
+	 131 ,	/*  sgr  */
+	 39 ,	/*  sgr0  */
+	 392 ,	/*  sgr1  */
+	 311 ,	/*  sitm  */
+	 393 ,	/*  slength  */
+	 377 ,	/*  slines  */
+	 312 ,	/*  slm  */
+	 25 ,	/*  smacs  */
+	 151 ,	/*  smam  */
+	 28 ,	/*  smcup  */
+	 29 ,	/*  smdc  */
+	 340 ,	/*  smgb  */
+	 341 ,	/*  smgbp  */
+	 271 ,	/*  smgl  */
+	 342 ,	/*  smglp  */
+	 368 ,	/*  smglr  */
+	 272 ,	/*  smgr  */
+	 343 ,	/*  smgrp  */
+	 344 ,	/*  smgt  */
+	 369 ,	/*  smgtb  */
+	 345 ,	/*  smgtp  */
+	 313 ,	/*  smicm  */
+	 31 ,	/*  smir  */
+	 89 ,	/*  smkx  */
+	 156 ,	/*  smln  */
+	 102 ,	/*  smm  */
+	 379 ,	/*  smpch  */
+	 381 ,	/*  smsc  */
+	 35 ,	/*  smso  */
+	 36 ,	/*  smul  */
+	 149 ,	/*  smxon  */
+	 314 ,	/*  snlq  */
+	 315 ,	/*  snrmq  */
+	 316 ,	/*  sshm  */
+	 317 ,	/*  ssubm  */
+	 318 ,	/*  ssupm  */
+	 350 ,	/*  subcs  */
+	 319 ,	/*  sum  */
+	 351 ,	/*  supcs  */
+	 309 ,	/*  swidm  */
+	 4 ,	/*  tbc  */
+	 282 ,	/*  tone  */
+	 135 ,	/*  tsl  */
+	 287 ,	/*  u0  */
+	 288 ,	/*  u1  */
+	 289 ,	/*  u2  */
+	 290 ,	/*  u3  */
+	 291 ,	/*  u4  */
+	 292 ,	/*  u5  */
+	 293 ,	/*  u6  */
+	 294 ,	/*  u7  */
+	 295 ,	/*  u8  */
+	 296 ,	/*  u9  */
+	 136 ,	/*  uc  */
+	 127 ,	/*  vpa  */
+	 286 ,	/*  wait  */
+	 133 ,	/*  wind  */
+	 278 ,	/*  wingo  */
+	 154 ,	/*  xoffc  */
+	 153 ,	/*  xonc  */
+	 353 ,	/*  zerom  */
+};
+
+static const PredIdx bool_variable_sort[] = {
+	 0 ,	/*  auto_left_margin  */
+	 1 ,	/*  auto_right_margin  */
+	 28 ,	/*  back_color_erase  */
+	 37 ,	/*  backspaces_with_bs  */
+	 27 ,	/*  can_change  */
+	 3 ,	/*  ceol_standout_glitch  */
+	 30 ,	/*  col_addr_glitch  */
+	 35 ,	/*  cpi_changes_res  */
+	 31 ,	/*  cr_cancels_micro_mode  */
+	 38 ,	/*  crt_no_scrolling  */
+	 17 ,	/*  dest_tabs_magic_smso  */
+	 4 ,	/*  eat_newline_glitch  */
+	 5 ,	/*  erase_overstrike  */
+	 6 ,	/*  generic_type  */
+	 40 ,	/*  gnu_has_meta_key  */
+	 7 ,	/*  hard_copy  */
+	 23 ,	/*  hard_cursor  */
+	 42 ,	/*  has_hardware_tabs  */
+	 8 ,	/*  has_meta_key  */
+	 32 ,	/*  has_print_wheel  */
+	 9 ,	/*  has_status_line  */
+	 29 ,	/*  hue_lightness_saturation  */
+	 10 ,	/*  insert_null_glitch  */
+	 41 ,	/*  linefeed_is_newline  */
+	 36 ,	/*  lpi_changes_res  */
+	 11 ,	/*  memory_above  */
+	 12 ,	/*  memory_below  */
+	 13 ,	/*  move_insert_mode  */
+	 14 ,	/*  move_standout_mode  */
+	 21 ,	/*  needs_xon_xoff  */
+	 39 ,	/*  no_correctly_working_cr  */
+	 2 ,	/*  no_esc_ctlc  */
+	 25 ,	/*  no_pad_char  */
+	 26 ,	/*  non_dest_scroll_region  */
+	 24 ,	/*  non_rev_rmcup  */
+	 15 ,	/*  over_strike  */
+	 22 ,	/*  prtr_silent  */
+	 43 ,	/*  return_does_clr_eol  */
+	 33 ,	/*  row_addr_glitch  */
+	 34 ,	/*  semi_auto_right_margin  */
+	 16 ,	/*  status_line_esc_ok  */
+	 18 ,	/*  tilde_glitch  */
+	 19 ,	/*  transparent_underline  */
+	 20 ,	/*  xon_xoff  */
+};
+
+static const PredIdx num_variable_sort[] = {
+	 36 ,	/*  backspace_delay  */
+	 31 ,	/*  bit_image_entwining  */
+	 32 ,	/*  bit_image_type  */
+	 16 ,	/*  buffer_capacity  */
+	 30 ,	/*  buttons  */
+	 34 ,	/*  carriage_return_delay  */
+	 0 ,	/*  columns  */
+	 18 ,	/*  dot_horz_spacing  */
+	 17 ,	/*  dot_vert_spacing  */
+	 37 ,	/*  horizontal_tab_delay  */
+	 1 ,	/*  init_tabs  */
+	 9 ,	/*  label_height  */
+	 10 ,	/*  label_width  */
+	 2 ,	/*  lines  */
+	 3 ,	/*  lines_of_memory  */
+	 4 ,	/*  magic_cookie_glitch  */
+	 33 ,	/*  magic_cookie_glitch_ul  */
+	 11 ,	/*  max_attributes  */
+	 13 ,	/*  max_colors  */
+	 19 ,	/*  max_micro_address  */
+	 20 ,	/*  max_micro_jump  */
+	 14 ,	/*  max_pairs  */
+	 12 ,	/*  maximum_windows  */
+	 21 ,	/*  micro_col_size  */
+	 22 ,	/*  micro_line_size  */
+	 35 ,	/*  new_line_delay  */
+	 15 ,	/*  no_color_video  */
+	 8 ,	/*  num_labels  */
+	 38 ,	/*  number_of_function_keys  */
+	 23 ,	/*  number_of_pins  */
+	 24 ,	/*  output_res_char  */
+	 26 ,	/*  output_res_horz_inch  */
+	 25 ,	/*  output_res_line  */
+	 27 ,	/*  output_res_vert_inch  */
+	 5 ,	/*  padding_baud_rate  */
+	 28 ,	/*  print_rate  */
+	 6 ,	/*  virtual_terminal  */
+	 29 ,	/*  wide_char_size  */
+	 7 ,	/*  width_status_line  */
+};
+
+static const PredIdx str_variable_sort[] = {
+	 406 ,	/*  acs_btee  */
+	 146 ,	/*  acs_chars  */
+	 408 ,	/*  acs_hline  */
+	 401 ,	/*  acs_llcorner  */
+	 403 ,	/*  acs_lrcorner  */
+	 404 ,	/*  acs_ltee  */
+	 410 ,	/*  acs_plus  */
+	 405 ,	/*  acs_rtee  */
+	 407 ,	/*  acs_ttee  */
+	 400 ,	/*  acs_ulcorner  */
+	 402 ,	/*  acs_urcorner  */
+	 409 ,	/*  acs_vline  */
+	 385 ,	/*  alt_scancode_esc  */
+	 399 ,	/*  arrow_key_map  */
+	 0 ,	/*  back_tab  */
+	 397 ,	/*  backspace_if_not_bs  */
+	 1 ,	/*  bell  */
+	 372 ,	/*  bit_image_carriage_return  */
+	 371 ,	/*  bit_image_newline  */
+	 370 ,	/*  bit_image_repeat  */
+	 413 ,	/*  box_chars_1  */
+	 2 ,	/*  carriage_return  */
+	 304 ,	/*  change_char_pitch  */
+	 305 ,	/*  change_line_pitch  */
+	 306 ,	/*  change_res_horz  */
+	 307 ,	/*  change_res_vert  */
+	 3 ,	/*  change_scroll_region  */
+	 145 ,	/*  char_padding  */
+	 354 ,	/*  char_set_names  */
+	 4 ,	/*  clear_all_tabs  */
+	 270 ,	/*  clear_margins  */
+	 5 ,	/*  clear_screen  */
+	 269 ,	/*  clr_bol  */
+	 6 ,	/*  clr_eol  */
+	 7 ,	/*  clr_eos  */
+	 363 ,	/*  code_set_init  */
+	 373 ,	/*  color_names  */
+	 8 ,	/*  column_address  */
+	 9 ,	/*  command_character  */
+	 277 ,	/*  create_window  */
+	 10 ,	/*  cursor_address  */
+	 11 ,	/*  cursor_down  */
+	 12 ,	/*  cursor_home  */
+	 13 ,	/*  cursor_invisible  */
+	 14 ,	/*  cursor_left  */
+	 15 ,	/*  cursor_mem_address  */
+	 16 ,	/*  cursor_normal  */
+	 17 ,	/*  cursor_right  */
+	 18 ,	/*  cursor_to_ll  */
+	 19 ,	/*  cursor_up  */
+	 20 ,	/*  cursor_visible  */
+	 374 ,	/*  define_bit_image_region  */
+	 308 ,	/*  define_char  */
+	 21 ,	/*  delete_character  */
+	 22 ,	/*  delete_line  */
+	 362 ,	/*  device_type  */
+	 280 ,	/*  dial_phone  */
+	 23 ,	/*  dis_status_line  */
+	 275 ,	/*  display_clock  */
+	 378 ,	/*  display_pc_char  */
+	 24 ,	/*  down_half_line  */
+	 155 ,	/*  ena_acs  */
+	 375 ,	/*  end_bit_image_region  */
+	 25 ,	/*  enter_alt_charset_mode  */
+	 151 ,	/*  enter_am_mode  */
+	 26 ,	/*  enter_blink_mode  */
+	 27 ,	/*  enter_bold_mode  */
+	 28 ,	/*  enter_ca_mode  */
+	 29 ,	/*  enter_delete_mode  */
+	 30 ,	/*  enter_dim_mode  */
+	 309 ,	/*  enter_doublewide_mode  */
+	 310 ,	/*  enter_draft_quality  */
+	 386 ,	/*  enter_horizontal_hl_mode  */
+	 31 ,	/*  enter_insert_mode  */
+	 311 ,	/*  enter_italics_mode  */
+	 387 ,	/*  enter_left_hl_mode  */
+	 312 ,	/*  enter_leftward_mode  */
+	 388 ,	/*  enter_low_hl_mode  */
+	 313 ,	/*  enter_micro_mode  */
+	 314 ,	/*  enter_near_letter_quality  */
+	 315 ,	/*  enter_normal_quality  */
+	 379 ,	/*  enter_pc_charset_mode  */
+	 33 ,	/*  enter_protected_mode  */
+	 34 ,	/*  enter_reverse_mode  */
+	 389 ,	/*  enter_right_hl_mode  */
+	 381 ,	/*  enter_scancode_mode  */
+	 32 ,	/*  enter_secure_mode  */
+	 316 ,	/*  enter_shadow_mode  */
+	 35 ,	/*  enter_standout_mode  */
+	 317 ,	/*  enter_subscript_mode  */
+	 318 ,	/*  enter_superscript_mode  */
+	 390 ,	/*  enter_top_hl_mode  */
+	 36 ,	/*  enter_underline_mode  */
+	 319 ,	/*  enter_upward_mode  */
+	 391 ,	/*  enter_vertical_hl_mode  */
+	 149 ,	/*  enter_xon_mode  */
+	 37 ,	/*  erase_chars  */
+	 38 ,	/*  exit_alt_charset_mode  */
+	 152 ,	/*  exit_am_mode  */
+	 39 ,	/*  exit_attribute_mode  */
+	 40 ,	/*  exit_ca_mode  */
+	 41 ,	/*  exit_delete_mode  */
+	 320 ,	/*  exit_doublewide_mode  */
+	 42 ,	/*  exit_insert_mode  */
+	 321 ,	/*  exit_italics_mode  */
+	 322 ,	/*  exit_leftward_mode  */
+	 323 ,	/*  exit_micro_mode  */
+	 380 ,	/*  exit_pc_charset_mode  */
+	 382 ,	/*  exit_scancode_mode  */
+	 324 ,	/*  exit_shadow_mode  */
+	 43 ,	/*  exit_standout_mode  */
+	 325 ,	/*  exit_subscript_mode  */
+	 326 ,	/*  exit_superscript_mode  */
+	 44 ,	/*  exit_underline_mode  */
+	 327 ,	/*  exit_upward_mode  */
+	 150 ,	/*  exit_xon_mode  */
+	 285 ,	/*  fixed_pause  */
+	 284 ,	/*  flash_hook  */
+	 45 ,	/*  flash_screen  */
+	 46 ,	/*  form_feed  */
+	 47 ,	/*  from_status_line  */
+	 358 ,	/*  get_mouse  */
+	 278 ,	/*  goto_window  */
+	 279 ,	/*  hangup  */
+	 48 ,	/*  init_1string  */
+	 49 ,	/*  init_2string  */
+	 50 ,	/*  init_3string  */
+	 51 ,	/*  init_file  */
+	 138 ,	/*  init_prog  */
+	 299 ,	/*  initialize_color  */
+	 300 ,	/*  initialize_pair  */
+	 52 ,	/*  insert_character  */
+	 53 ,	/*  insert_line  */
+	 54 ,	/*  insert_padding  */
+	 139 ,	/*  key_a1  */
+	 140 ,	/*  key_a3  */
+	 141 ,	/*  key_b2  */
+	 55 ,	/*  key_backspace  */
+	 158 ,	/*  key_beg  */
+	 148 ,	/*  key_btab  */
+	 142 ,	/*  key_c1  */
+	 143 ,	/*  key_c3  */
+	 159 ,	/*  key_cancel  */
+	 56 ,	/*  key_catab  */
+	 57 ,	/*  key_clear  */
+	 160 ,	/*  key_close  */
+	 161 ,	/*  key_command  */
+	 162 ,	/*  key_copy  */
+	 163 ,	/*  key_create  */
+	 58 ,	/*  key_ctab  */
+	 59 ,	/*  key_dc  */
+	 60 ,	/*  key_dl  */
+	 61 ,	/*  key_down  */
+	 62 ,	/*  key_eic  */
+	 164 ,	/*  key_end  */
+	 165 ,	/*  key_enter  */
+	 63 ,	/*  key_eol  */
+	 64 ,	/*  key_eos  */
+	 166 ,	/*  key_exit  */
+	 65 ,	/*  key_f0  */
+	 66 ,	/*  key_f1  */
+	 67 ,	/*  key_f10  */
+	 216 ,	/*  key_f11  */
+	 217 ,	/*  key_f12  */
+	 218 ,	/*  key_f13  */
+	 219 ,	/*  key_f14  */
+	 220 ,	/*  key_f15  */
+	 221 ,	/*  key_f16  */
+	 222 ,	/*  key_f17  */
+	 223 ,	/*  key_f18  */
+	 224 ,	/*  key_f19  */
+	 68 ,	/*  key_f2  */
+	 225 ,	/*  key_f20  */
+	 226 ,	/*  key_f21  */
+	 227 ,	/*  key_f22  */
+	 228 ,	/*  key_f23  */
+	 229 ,	/*  key_f24  */
+	 230 ,	/*  key_f25  */
+	 231 ,	/*  key_f26  */
+	 232 ,	/*  key_f27  */
+	 233 ,	/*  key_f28  */
+	 234 ,	/*  key_f29  */
+	 69 ,	/*  key_f3  */
+	 235 ,	/*  key_f30  */
+	 236 ,	/*  key_f31  */
+	 237 ,	/*  key_f32  */
+	 238 ,	/*  key_f33  */
+	 239 ,	/*  key_f34  */
+	 240 ,	/*  key_f35  */
+	 241 ,	/*  key_f36  */
+	 242 ,	/*  key_f37  */
+	 243 ,	/*  key_f38  */
+	 244 ,	/*  key_f39  */
+	 70 ,	/*  key_f4  */
+	 245 ,	/*  key_f40  */
+	 246 ,	/*  key_f41  */
+	 247 ,	/*  key_f42  */
+	 248 ,	/*  key_f43  */
+	 249 ,	/*  key_f44  */
+	 250 ,	/*  key_f45  */
+	 251 ,	/*  key_f46  */
+	 252 ,	/*  key_f47  */
+	 253 ,	/*  key_f48  */
+	 254 ,	/*  key_f49  */
+	 71 ,	/*  key_f5  */
+	 255 ,	/*  key_f50  */
+	 256 ,	/*  key_f51  */
+	 257 ,	/*  key_f52  */
+	 258 ,	/*  key_f53  */
+	 259 ,	/*  key_f54  */
+	 260 ,	/*  key_f55  */
+	 261 ,	/*  key_f56  */
+	 262 ,	/*  key_f57  */
+	 263 ,	/*  key_f58  */
+	 264 ,	/*  key_f59  */
+	 72 ,	/*  key_f6  */
+	 265 ,	/*  key_f60  */
+	 266 ,	/*  key_f61  */
+	 267 ,	/*  key_f62  */
+	 268 ,	/*  key_f63  */
+	 73 ,	/*  key_f7  */
+	 74 ,	/*  key_f8  */
+	 75 ,	/*  key_f9  */
+	 167 ,	/*  key_find  */
+	 168 ,	/*  key_help  */
+	 76 ,	/*  key_home  */
+	 77 ,	/*  key_ic  */
+	 78 ,	/*  key_il  */
+	 79 ,	/*  key_left  */
+	 80 ,	/*  key_ll  */
+	 169 ,	/*  key_mark  */
+	 170 ,	/*  key_message  */
+	 355 ,	/*  key_mouse  */
+	 171 ,	/*  key_move  */
+	 172 ,	/*  key_next  */
+	 81 ,	/*  key_npage  */
+	 173 ,	/*  key_open  */
+	 174 ,	/*  key_options  */
+	 82 ,	/*  key_ppage  */
+	 175 ,	/*  key_previous  */
+	 176 ,	/*  key_print  */
+	 177 ,	/*  key_redo  */
+	 178 ,	/*  key_reference  */
+	 179 ,	/*  key_refresh  */
+	 180 ,	/*  key_replace  */
+	 181 ,	/*  key_restart  */
+	 182 ,	/*  key_resume  */
+	 83 ,	/*  key_right  */
+	 183 ,	/*  key_save  */
+	 186 ,	/*  key_sbeg  */
+	 187 ,	/*  key_scancel  */
+	 188 ,	/*  key_scommand  */
+	 189 ,	/*  key_scopy  */
+	 190 ,	/*  key_screate  */
+	 191 ,	/*  key_sdc  */
+	 192 ,	/*  key_sdl  */
+	 193 ,	/*  key_select  */
+	 194 ,	/*  key_send  */
+	 195 ,	/*  key_seol  */
+	 196 ,	/*  key_sexit  */
+	 84 ,	/*  key_sf  */
+	 197 ,	/*  key_sfind  */
+	 198 ,	/*  key_shelp  */
+	 199 ,	/*  key_shome  */
+	 200 ,	/*  key_sic  */
+	 201 ,	/*  key_sleft  */
+	 202 ,	/*  key_smessage  */
+	 203 ,	/*  key_smove  */
+	 204 ,	/*  key_snext  */
+	 205 ,	/*  key_soptions  */
+	 206 ,	/*  key_sprevious  */
+	 207 ,	/*  key_sprint  */
+	 85 ,	/*  key_sr  */
+	 208 ,	/*  key_sredo  */
+	 209 ,	/*  key_sreplace  */
+	 210 ,	/*  key_sright  */
+	 211 ,	/*  key_srsume  */
+	 212 ,	/*  key_ssave  */
+	 213 ,	/*  key_ssuspend  */
+	 86 ,	/*  key_stab  */
+	 214 ,	/*  key_sundo  */
+	 184 ,	/*  key_suspend  */
+	 185 ,	/*  key_undo  */
+	 87 ,	/*  key_up  */
+	 88 ,	/*  keypad_local  */
+	 89 ,	/*  keypad_xmit  */
+	 90 ,	/*  lab_f0  */
+	 91 ,	/*  lab_f1  */
+	 92 ,	/*  lab_f10  */
+	 93 ,	/*  lab_f2  */
+	 94 ,	/*  lab_f3  */
+	 95 ,	/*  lab_f4  */
+	 96 ,	/*  lab_f5  */
+	 97 ,	/*  lab_f6  */
+	 98 ,	/*  lab_f7  */
+	 99 ,	/*  lab_f8  */
+	 100 ,	/*  lab_f9  */
+	 273 ,	/*  label_format  */
+	 157 ,	/*  label_off  */
+	 156 ,	/*  label_on  */
+	 396 ,	/*  linefeed_if_not_lf  */
+	 411 ,	/*  memory_lock  */
+	 412 ,	/*  memory_unlock  */
+	 101 ,	/*  meta_off  */
+	 102 ,	/*  meta_on  */
+	 328 ,	/*  micro_column_address  */
+	 329 ,	/*  micro_down  */
+	 330 ,	/*  micro_left  */
+	 331 ,	/*  micro_right  */
+	 332 ,	/*  micro_row_address  */
+	 333 ,	/*  micro_up  */
+	 356 ,	/*  mouse_info  */
+	 103 ,	/*  newline  */
+	 334 ,	/*  order_of_pins  */
+	 298 ,	/*  orig_colors  */
+	 297 ,	/*  orig_pair  */
+	 398 ,	/*  other_non_function_keys  */
+	 104 ,	/*  pad_char  */
+	 105 ,	/*  parm_dch  */
+	 106 ,	/*  parm_delete_line  */
+	 107 ,	/*  parm_down_cursor  */
+	 335 ,	/*  parm_down_micro  */
+	 108 ,	/*  parm_ich  */
+	 109 ,	/*  parm_index  */
+	 110 ,	/*  parm_insert_line  */
+	 111 ,	/*  parm_left_cursor  */
+	 336 ,	/*  parm_left_micro  */
+	 112 ,	/*  parm_right_cursor  */
+	 337 ,	/*  parm_right_micro  */
+	 113 ,	/*  parm_rindex  */
+	 114 ,	/*  parm_up_cursor  */
+	 338 ,	/*  parm_up_micro  */
+	 383 ,	/*  pc_term_options  */
+	 115 ,	/*  pkey_key  */
+	 116 ,	/*  pkey_local  */
+	 361 ,	/*  pkey_plab  */
+	 117 ,	/*  pkey_xmit  */
+	 147 ,	/*  plab_norm  */
+	 118 ,	/*  print_screen  */
+	 144 ,	/*  prtr_non  */
+	 119 ,	/*  prtr_off  */
+	 120 ,	/*  prtr_on  */
+	 283 ,	/*  pulse  */
+	 281 ,	/*  quick_dial  */
+	 276 ,	/*  remove_clock  */
+	 121 ,	/*  repeat_char  */
+	 215 ,	/*  req_for_input  */
+	 357 ,	/*  req_mouse_pos  */
+	 122 ,	/*  reset_1string  */
+	 123 ,	/*  reset_2string  */
+	 124 ,	/*  reset_3string  */
+	 125 ,	/*  reset_file  */
+	 126 ,	/*  restore_cursor  */
+	 127 ,	/*  row_address  */
+	 128 ,	/*  save_cursor  */
+	 384 ,	/*  scancode_escape  */
+	 129 ,	/*  scroll_forward  */
+	 130 ,	/*  scroll_reverse  */
+	 339 ,	/*  select_char_set  */
+	 364 ,	/*  set0_des_seq  */
+	 365 ,	/*  set1_des_seq  */
+	 366 ,	/*  set2_des_seq  */
+	 367 ,	/*  set3_des_seq  */
+	 392 ,	/*  set_a_attributes  */
+	 360 ,	/*  set_a_background  */
+	 359 ,	/*  set_a_foreground  */
+	 131 ,	/*  set_attributes  */
+	 303 ,	/*  set_background  */
+	 340 ,	/*  set_bottom_margin  */
+	 341 ,	/*  set_bottom_margin_parm  */
+	 274 ,	/*  set_clock  */
+	 376 ,	/*  set_color_band  */
+	 301 ,	/*  set_color_pair  */
+	 302 ,	/*  set_foreground  */
+	 271 ,	/*  set_left_margin  */
+	 342 ,	/*  set_left_margin_parm  */
+	 368 ,	/*  set_lr_margin  */
+	 377 ,	/*  set_page_length  */
+	 393 ,	/*  set_pglen_inch  */
+	 272 ,	/*  set_right_margin  */
+	 343 ,	/*  set_right_margin_parm  */
+	 132 ,	/*  set_tab  */
+	 369 ,	/*  set_tb_margin  */
+	 344 ,	/*  set_top_margin  */
+	 345 ,	/*  set_top_margin_parm  */
+	 133 ,	/*  set_window  */
+	 346 ,	/*  start_bit_image  */
+	 347 ,	/*  start_char_set_def  */
+	 348 ,	/*  stop_bit_image  */
+	 349 ,	/*  stop_char_set_def  */
+	 350 ,	/*  subscript_characters  */
+	 351 ,	/*  superscript_characters  */
+	 134 ,	/*  tab  */
+	 394 ,	/*  termcap_init2  */
+	 395 ,	/*  termcap_reset  */
+	 352 ,	/*  these_cause_cr  */
+	 135 ,	/*  to_status_line  */
+	 282 ,	/*  tone  */
+	 136 ,	/*  underline_char  */
+	 137 ,	/*  up_half_line  */
+	 287 ,	/*  user0  */
+	 288 ,	/*  user1  */
+	 289 ,	/*  user2  */
+	 290 ,	/*  user3  */
+	 291 ,	/*  user4  */
+	 292 ,	/*  user5  */
+	 293 ,	/*  user6  */
+	 294 ,	/*  user7  */
+	 295 ,	/*  user8  */
+	 296 ,	/*  user9  */
+	 286 ,	/*  wait_tone  */
+	 154 ,	/*  xoff_character  */
+	 153 ,	/*  xon_character  */
+	 353 ,	/*  zero_motion  */
+};
+
+static const PredIdx bool_termcap_sort[] = {
+	 22 ,	/*  5i  */
+	 23 ,	/*  HC  */
+	 40 ,	/*  MT  */
+	 26 ,	/*  ND  */
+	 41 ,	/*  NL  */
+	 25 ,	/*  NP  */
+	 24 ,	/*  NR  */
+	 30 ,	/*  YA  */
+	 31 ,	/*  YB  */
+	 32 ,	/*  YC  */
+	 33 ,	/*  YD  */
+	 34 ,	/*  YE  */
+	 35 ,	/*  YF  */
+	 36 ,	/*  YG  */
+	 1 ,	/*  am  */
+	 37 ,	/*  bs  */
+	 0 ,	/*  bw  */
+	 27 ,	/*  cc  */
+	 11 ,	/*  da  */
+	 12 ,	/*  db  */
+	 5 ,	/*  eo  */
+	 16 ,	/*  es  */
+	 6 ,	/*  gn  */
+	 7 ,	/*  hc  */
+	 29 ,	/*  hl  */
+	 9 ,	/*  hs  */
+	 18 ,	/*  hz  */
+	 10 ,	/*  in  */
+	 8 ,	/*  km  */
+	 13 ,	/*  mi  */
+	 14 ,	/*  ms  */
+	 39 ,	/*  nc  */
+	 38 ,	/*  ns  */
+	 21 ,	/*  nx  */
+	 15 ,	/*  os  */
+	 42 ,	/*  pt  */
+	 19 ,	/*  ul  */
+	 28 ,	/*  ut  */
+	 2 ,	/*  xb  */
+	 4 ,	/*  xn  */
+	 20 ,	/*  xo  */
+	 43 ,	/*  xr  */
+	 3 ,	/*  xs  */
+	 17 ,	/*  xt  */
+};
+
+static const PredIdx num_termcap_sort[] = {
+	 30 ,	/*  BT  */
+	 13 ,	/*  Co  */
+	 12 ,	/*  MW  */
+	 15 ,	/*  NC  */
+	 8 ,	/*  Nl  */
+	 16 ,	/*  Ya  */
+	 17 ,	/*  Yb  */
+	 18 ,	/*  Yc  */
+	 19 ,	/*  Yd  */
+	 20 ,	/*  Ye  */
+	 21 ,	/*  Yf  */
+	 22 ,	/*  Yg  */
+	 23 ,	/*  Yh  */
+	 24 ,	/*  Yi  */
+	 25 ,	/*  Yj  */
+	 26 ,	/*  Yk  */
+	 27 ,	/*  Yl  */
+	 28 ,	/*  Ym  */
+	 29 ,	/*  Yn  */
+	 31 ,	/*  Yo  */
+	 32 ,	/*  Yp  */
+	 0 ,	/*  co  */
+	 36 ,	/*  dB  */
+	 34 ,	/*  dC  */
+	 35 ,	/*  dN  */
+	 37 ,	/*  dT  */
+	 1 ,	/*  it  */
+	 38 ,	/*  kn  */
+	 9 ,	/*  lh  */
+	 2 ,	/*  li  */
+	 3 ,	/*  lm  */
+	 10 ,	/*  lw  */
+	 11 ,	/*  ma  */
+	 14 ,	/*  pa  */
+	 5 ,	/*  pb  */
+	 4 ,	/*  sg  */
+	 33 ,	/*  ug  */
+	 6 ,	/*  vt  */
+	 7 ,	/*  ws  */
+};
+
+static const PredIdx str_termcap_sort[] = {
+	 212 ,	/*  !1  */
+	 213 ,	/*  !2  */
+	 214 ,	/*  !3  */
+	 198 ,	/*  #1  */
+	 199 ,	/*  #2  */
+	 200 ,	/*  #3  */
+	 201 ,	/*  #4  */
+	 177 ,	/*  %0  */
+	 168 ,	/*  %1  */
+	 169 ,	/*  %2  */
+	 170 ,	/*  %3  */
+	 171 ,	/*  %4  */
+	 172 ,	/*  %5  */
+	 173 ,	/*  %6  */
+	 174 ,	/*  %7  */
+	 175 ,	/*  %8  */
+	 176 ,	/*  %9  */
+	 202 ,	/*  %a  */
+	 203 ,	/*  %b  */
+	 204 ,	/*  %c  */
+	 205 ,	/*  %d  */
+	 206 ,	/*  %e  */
+	 207 ,	/*  %f  */
+	 208 ,	/*  %g  */
+	 209 ,	/*  %h  */
+	 210 ,	/*  %i  */
+	 211 ,	/*  %j  */
+	 187 ,	/*  &0  */
+	 178 ,	/*  &1  */
+	 179 ,	/*  &2  */
+	 180 ,	/*  &3  */
+	 181 ,	/*  &4  */
+	 182 ,	/*  &5  */
+	 183 ,	/*  &6  */
+	 184 ,	/*  &7  */
+	 185 ,	/*  &8  */
+	 186 ,	/*  &9  */
+	 197 ,	/*  *0  */
+	 188 ,	/*  *1  */
+	 189 ,	/*  *2  */
+	 190 ,	/*  *3  */
+	 191 ,	/*  *4  */
+	 192 ,	/*  *5  */
+	 193 ,	/*  *6  */
+	 194 ,	/*  *7  */
+	 195 ,	/*  *8  */
+	 196 ,	/*  *9  */
+	 167 ,	/*  @0  */
+	 158 ,	/*  @1  */
+	 159 ,	/*  @2  */
+	 160 ,	/*  @3  */
+	 161 ,	/*  @4  */
+	 162 ,	/*  @5  */
+	 163 ,	/*  @6  */
+	 164 ,	/*  @7  */
+	 165 ,	/*  @8  */
+	 166 ,	/*  @9  */
+	 360 ,	/*  AB  */
+	 359 ,	/*  AF  */
+	 110 ,	/*  AL  */
+	 9 ,	/*  CC  */
+	 15 ,	/*  CM  */
+	 277 ,	/*  CW  */
+	 105 ,	/*  DC  */
+	 280 ,	/*  DI  */
+	 275 ,	/*  DK  */
+	 106 ,	/*  DL  */
+	 107 ,	/*  DO  */
+	 216 ,	/*  F1  */
+	 217 ,	/*  F2  */
+	 218 ,	/*  F3  */
+	 219 ,	/*  F4  */
+	 220 ,	/*  F5  */
+	 221 ,	/*  F6  */
+	 222 ,	/*  F7  */
+	 223 ,	/*  F8  */
+	 224 ,	/*  F9  */
+	 225 ,	/*  FA  */
+	 226 ,	/*  FB  */
+	 227 ,	/*  FC  */
+	 228 ,	/*  FD  */
+	 229 ,	/*  FE  */
+	 230 ,	/*  FF  */
+	 231 ,	/*  FG  */
+	 232 ,	/*  FH  */
+	 233 ,	/*  FI  */
+	 234 ,	/*  FJ  */
+	 235 ,	/*  FK  */
+	 236 ,	/*  FL  */
+	 237 ,	/*  FM  */
+	 238 ,	/*  FN  */
+	 239 ,	/*  FO  */
+	 240 ,	/*  FP  */
+	 241 ,	/*  FQ  */
+	 242 ,	/*  FR  */
+	 243 ,	/*  FS  */
+	 244 ,	/*  FT  */
+	 245 ,	/*  FU  */
+	 246 ,	/*  FV  */
+	 247 ,	/*  FW  */
+	 248 ,	/*  FX  */
+	 249 ,	/*  FY  */
+	 250 ,	/*  FZ  */
+	 251 ,	/*  Fa  */
+	 252 ,	/*  Fb  */
+	 253 ,	/*  Fc  */
+	 254 ,	/*  Fd  */
+	 255 ,	/*  Fe  */
+	 256 ,	/*  Ff  */
+	 257 ,	/*  Fg  */
+	 258 ,	/*  Fh  */
+	 259 ,	/*  Fi  */
+	 260 ,	/*  Fj  */
+	 261 ,	/*  Fk  */
+	 262 ,	/*  Fl  */
+	 263 ,	/*  Fm  */
+	 264 ,	/*  Fn  */
+	 265 ,	/*  Fo  */
+	 266 ,	/*  Fp  */
+	 267 ,	/*  Fq  */
+	 268 ,	/*  Fr  */
+	 402 ,	/*  G1  */
+	 400 ,	/*  G2  */
+	 401 ,	/*  G3  */
+	 403 ,	/*  G4  */
+	 410 ,	/*  GC  */
+	 407 ,	/*  GD  */
+	 408 ,	/*  GH  */
+	 405 ,	/*  GL  */
+	 404 ,	/*  GR  */
+	 406 ,	/*  GU  */
+	 409 ,	/*  GV  */
+	 358 ,	/*  Gm  */
+	 279 ,	/*  HU  */
+	 108 ,	/*  IC  */
+	 299 ,	/*  Ic  */
+	 300 ,	/*  Ip  */
+	 139 ,	/*  K1  */
+	 141 ,	/*  K2  */
+	 140 ,	/*  K3  */
+	 142 ,	/*  K4  */
+	 143 ,	/*  K5  */
+	 355 ,	/*  Km  */
+	 111 ,	/*  LE  */
+	 157 ,	/*  LF  */
+	 156 ,	/*  LO  */
+	 273 ,	/*  Lf  */
+	 270 ,	/*  MC  */
+	 271 ,	/*  ML  */
+	 368 ,	/*  ML  */
+	 272 ,	/*  MR  */
+	 369 ,	/*  MT  */
+	 356 ,	/*  Mi  */
+	 285 ,	/*  PA  */
+	 283 ,	/*  PU  */
+	 281 ,	/*  QD  */
+	 152 ,	/*  RA  */
+	 276 ,	/*  RC  */
+	 215 ,	/*  RF  */
+	 112 ,	/*  RI  */
+	 357 ,	/*  RQ  */
+	 150 ,	/*  RX  */
+	 378 ,	/*  S1  */
+	 379 ,	/*  S2  */
+	 380 ,	/*  S3  */
+	 381 ,	/*  S4  */
+	 382 ,	/*  S5  */
+	 383 ,	/*  S6  */
+	 384 ,	/*  S7  */
+	 385 ,	/*  S8  */
+	 151 ,	/*  SA  */
+	 274 ,	/*  SC  */
+	 109 ,	/*  SF  */
+	 113 ,	/*  SR  */
+	 149 ,	/*  SX  */
+	 303 ,	/*  Sb  */
+	 302 ,	/*  Sf  */
+	 282 ,	/*  TO  */
+	 114 ,	/*  UP  */
+	 286 ,	/*  WA  */
+	 278 ,	/*  WG  */
+	 154 ,	/*  XF  */
+	 153 ,	/*  XN  */
+	 386 ,	/*  Xh  */
+	 387 ,	/*  Xl  */
+	 388 ,	/*  Xo  */
+	 389 ,	/*  Xr  */
+	 390 ,	/*  Xt  */
+	 391 ,	/*  Xv  */
+	 370 ,	/*  Xy  */
+	 377 ,	/*  YZ  */
+	 372 ,	/*  Yv  */
+	 373 ,	/*  Yw  */
+	 374 ,	/*  Yx  */
+	 375 ,	/*  Yy  */
+	 376 ,	/*  Yz  */
+	 304 ,	/*  ZA  */
+	 305 ,	/*  ZB  */
+	 306 ,	/*  ZC  */
+	 307 ,	/*  ZD  */
+	 308 ,	/*  ZE  */
+	 309 ,	/*  ZF  */
+	 310 ,	/*  ZG  */
+	 311 ,	/*  ZH  */
+	 312 ,	/*  ZI  */
+	 313 ,	/*  ZJ  */
+	 314 ,	/*  ZK  */
+	 315 ,	/*  ZL  */
+	 316 ,	/*  ZM  */
+	 317 ,	/*  ZN  */
+	 318 ,	/*  ZO  */
+	 319 ,	/*  ZP  */
+	 320 ,	/*  ZQ  */
+	 321 ,	/*  ZR  */
+	 322 ,	/*  ZS  */
+	 323 ,	/*  ZT  */
+	 324 ,	/*  ZU  */
+	 325 ,	/*  ZV  */
+	 326 ,	/*  ZW  */
+	 327 ,	/*  ZX  */
+	 328 ,	/*  ZY  */
+	 329 ,	/*  ZZ  */
+	 330 ,	/*  Za  */
+	 331 ,	/*  Zb  */
+	 332 ,	/*  Zc  */
+	 333 ,	/*  Zd  */
+	 334 ,	/*  Ze  */
+	 335 ,	/*  Zf  */
+	 336 ,	/*  Zg  */
+	 337 ,	/*  Zh  */
+	 338 ,	/*  Zi  */
+	 339 ,	/*  Zj  */
+	 340 ,	/*  Zk  */
+	 341 ,	/*  Zl  */
+	 342 ,	/*  Zm  */
+	 343 ,	/*  Zn  */
+	 344 ,	/*  Zo  */
+	 345 ,	/*  Zp  */
+	 346 ,	/*  Zq  */
+	 347 ,	/*  Zr  */
+	 348 ,	/*  Zs  */
+	 349 ,	/*  Zt  */
+	 350 ,	/*  Zu  */
+	 351 ,	/*  Zv  */
+	 352 ,	/*  Zw  */
+	 353 ,	/*  Zx  */
+	 354 ,	/*  Zy  */
+	 371 ,	/*  Zz  */
+	 146 ,	/*  ac  */
+	 38 ,	/*  ae  */
+	 53 ,	/*  al  */
+	 25 ,	/*  as  */
+	 397 ,	/*  bc  */
+	 1 ,	/*  bl  */
+	 0 ,	/*  bt  */
+	 413 ,	/*  bx  */
+	 269 ,	/*  cb  */
+	 7 ,	/*  cd  */
+	 6 ,	/*  ce  */
+	 8 ,	/*  ch  */
+	 363 ,	/*  ci  */
+	 5 ,	/*  cl  */
+	 10 ,	/*  cm  */
+	 2 ,	/*  cr  */
+	 3 ,	/*  cs  */
+	 4 ,	/*  ct  */
+	 127 ,	/*  cv  */
+	 21 ,	/*  dc  */
+	 22 ,	/*  dl  */
+	 29 ,	/*  dm  */
+	 11 ,	/*  do  */
+	 23 ,	/*  ds  */
+	 362 ,	/*  dv  */
+	 155 ,	/*  eA  */
+	 37 ,	/*  ec  */
+	 41 ,	/*  ed  */
+	 42 ,	/*  ei  */
+	 46 ,	/*  ff  */
+	 284 ,	/*  fh  */
+	 47 ,	/*  fs  */
+	 24 ,	/*  hd  */
+	 12 ,	/*  ho  */
+	 137 ,	/*  hu  */
+	 48 ,	/*  i1  */
+	 394 ,	/*  i2  */
+	 50 ,	/*  i3  */
+	 138 ,	/*  iP  */
+	 52 ,	/*  ic  */
+	 51 ,	/*  if  */
+	 31 ,	/*  im  */
+	 54 ,	/*  ip  */
+	 49 ,	/*  is  */
+	 65 ,	/*  k0  */
+	 66 ,	/*  k1  */
+	 68 ,	/*  k2  */
+	 69 ,	/*  k3  */
+	 70 ,	/*  k4  */
+	 71 ,	/*  k5  */
+	 72 ,	/*  k6  */
+	 73 ,	/*  k7  */
+	 74 ,	/*  k8  */
+	 75 ,	/*  k9  */
+	 67 ,	/*  k;  */
+	 78 ,	/*  kA  */
+	 148 ,	/*  kB  */
+	 57 ,	/*  kC  */
+	 59 ,	/*  kD  */
+	 63 ,	/*  kE  */
+	 84 ,	/*  kF  */
+	 80 ,	/*  kH  */
+	 77 ,	/*  kI  */
+	 60 ,	/*  kL  */
+	 62 ,	/*  kM  */
+	 81 ,	/*  kN  */
+	 82 ,	/*  kP  */
+	 85 ,	/*  kR  */
+	 64 ,	/*  kS  */
+	 86 ,	/*  kT  */
+	 56 ,	/*  ka  */
+	 55 ,	/*  kb  */
+	 61 ,	/*  kd  */
+	 88 ,	/*  ke  */
+	 76 ,	/*  kh  */
+	 79 ,	/*  kl  */
+	 398 ,	/*  ko  */
+	 83 ,	/*  kr  */
+	 89 ,	/*  ks  */
+	 58 ,	/*  kt  */
+	 87 ,	/*  ku  */
+	 90 ,	/*  l0  */
+	 91 ,	/*  l1  */
+	 93 ,	/*  l2  */
+	 94 ,	/*  l3  */
+	 95 ,	/*  l4  */
+	 96 ,	/*  l5  */
+	 97 ,	/*  l6  */
+	 98 ,	/*  l7  */
+	 99 ,	/*  l8  */
+	 100 ,	/*  l9  */
+	 92 ,	/*  la  */
+	 14 ,	/*  le  */
+	 18 ,	/*  ll  */
+	 399 ,	/*  ma  */
+	 26 ,	/*  mb  */
+	 27 ,	/*  md  */
+	 39 ,	/*  me  */
+	 30 ,	/*  mh  */
+	 32 ,	/*  mk  */
+	 411 ,	/*  ml  */
+	 102 ,	/*  mm  */
+	 101 ,	/*  mo  */
+	 33 ,	/*  mp  */
+	 34 ,	/*  mr  */
+	 412 ,	/*  mu  */
+	 17 ,	/*  nd  */
+	 396 ,	/*  nl  */
+	 103 ,	/*  nw  */
+	 298 ,	/*  oc  */
+	 297 ,	/*  op  */
+	 144 ,	/*  pO  */
+	 104 ,	/*  pc  */
+	 119 ,	/*  pf  */
+	 115 ,	/*  pk  */
+	 116 ,	/*  pl  */
+	 147 ,	/*  pn  */
+	 120 ,	/*  po  */
+	 118 ,	/*  ps  */
+	 117 ,	/*  px  */
+	 122 ,	/*  r1  */
+	 123 ,	/*  r2  */
+	 124 ,	/*  r3  */
+	 145 ,	/*  rP  */
+	 126 ,	/*  rc  */
+	 125 ,	/*  rf  */
+	 121 ,	/*  rp  */
+	 395 ,	/*  rs  */
+	 364 ,	/*  s0  */
+	 365 ,	/*  s1  */
+	 366 ,	/*  s2  */
+	 367 ,	/*  s3  */
+	 392 ,	/*  sA  */
+	 393 ,	/*  sL  */
+	 131 ,	/*  sa  */
+	 128 ,	/*  sc  */
+	 43 ,	/*  se  */
+	 129 ,	/*  sf  */
+	 35 ,	/*  so  */
+	 301 ,	/*  sp  */
+	 130 ,	/*  sr  */
+	 132 ,	/*  st  */
+	 134 ,	/*  ta  */
+	 40 ,	/*  te  */
+	 28 ,	/*  ti  */
+	 135 ,	/*  ts  */
+	 287 ,	/*  u0  */
+	 288 ,	/*  u1  */
+	 289 ,	/*  u2  */
+	 290 ,	/*  u3  */
+	 291 ,	/*  u4  */
+	 292 ,	/*  u5  */
+	 293 ,	/*  u6  */
+	 294 ,	/*  u7  */
+	 295 ,	/*  u8  */
+	 296 ,	/*  u9  */
+	 136 ,	/*  uc  */
+	 44 ,	/*  ue  */
+	 19 ,	/*  up  */
+	 36 ,	/*  us  */
+	 45 ,	/*  vb  */
+	 16 ,	/*  ve  */
+	 13 ,	/*  vi  */
+	 20 ,	/*  vs  */
+	 133 ,	/*  wi  */
+	 361 ,	/*  xl  */
+};
+
+static const bool bool_from_termcap[] = {
+	TRUE,	/*  bw  */
+	TRUE,	/*  am  */
+	TRUE,	/*  xsb  */
+	TRUE,	/*  xhp  */
+	TRUE,	/*  xenl  */
+	TRUE,	/*  eo  */
+	TRUE,	/*  gn  */
+	TRUE,	/*  hc  */
+	TRUE,	/*  km  */
+	TRUE,	/*  hs  */
+	TRUE,	/*  in  */
+	TRUE,	/*  da  */
+	TRUE,	/*  db  */
+	TRUE,	/*  mir  */
+	TRUE,	/*  msgr  */
+	TRUE,	/*  os  */
+	TRUE,	/*  eslok  */
+	TRUE,	/*  xt  */
+	TRUE,	/*  hz  */
+	TRUE,	/*  ul  */
+	TRUE,	/*  xon  */
+	FALSE,	/*  nxon  */
+	FALSE,	/*  mc5i  */
+	FALSE,	/*  chts  */
+	FALSE,	/*  nrrmc  */
+	FALSE,	/*  npc  */
+	FALSE,	/*  ndscr  */
+	FALSE,	/*  ccc  */
+	FALSE,	/*  bce  */
+	FALSE,	/*  hls  */
+	FALSE,	/*  xhpa  */
+	FALSE,	/*  crxm  */
+	FALSE,	/*  daisy  */
+	FALSE,	/*  xvpa  */
+	FALSE,	/*  sam  */
+	FALSE,	/*  cpix  */
+	FALSE,	/*  lpix  */
+	TRUE,	/*  OTbs  */
+	TRUE,	/*  OTns  */
+	TRUE,	/*  OTnc  */
+	FALSE,	/*  OTMT  */
+	TRUE,	/*  OTNL  */
+	TRUE,	/*  OTpt  */
+	TRUE,	/*  OTxr  */
+};
+
+static const bool num_from_termcap[] = {
+	TRUE,	/*  cols  */
+	TRUE,	/*  it  */
+	TRUE,	/*  lines  */
+	TRUE,	/*  lm  */
+	TRUE,	/*  xmc  */
+	TRUE,	/*  pb  */
+	TRUE,	/*  vt  */
+	TRUE,	/*  wsl  */
+	FALSE,	/*  nlab  */
+	FALSE,	/*  lh  */
+	FALSE,	/*  lw  */
+	TRUE,	/*  ma  */
+	FALSE,	/*  wnum  */
+	FALSE,	/*  colors  */
+	FALSE,	/*  pairs  */
+	FALSE,	/*  ncv  */
+	FALSE,	/*  bufsz  */
+	FALSE,	/*  spinv  */
+	FALSE,	/*  spinh  */
+	FALSE,	/*  maddr  */
+	FALSE,	/*  mjump  */
+	FALSE,	/*  mcs  */
+	FALSE,	/*  mls  */
+	FALSE,	/*  npins  */
+	FALSE,	/*  orc  */
+	FALSE,	/*  orl  */
+	FALSE,	/*  orhi  */
+	FALSE,	/*  orvi  */
+	FALSE,	/*  cps  */
+	FALSE,	/*  widcs  */
+	FALSE,	/*  btns  */
+	FALSE,	/*  bitwin  */
+	FALSE,	/*  bitype  */
+	TRUE,	/*  OTug  */
+	TRUE,	/*  OTdC  */
+	TRUE,	/*  OTdN  */
+	TRUE,	/*  OTdB  */
+	TRUE,	/*  OTdT  */
+	FALSE,	/*  OTkn  */
+};
+
+static const bool str_from_termcap[] = {
+	TRUE,	/*  cbt  */
+	TRUE,	/*  bel  */
+	TRUE,	/*  cr  */
+	TRUE,	/*  csr  */
+	TRUE,	/*  tbc  */
+	TRUE,	/*  clear  */
+	TRUE,	/*  el  */
+	TRUE,	/*  ed  */
+	FALSE,	/*  hpa  */
+	TRUE,	/*  cmdch  */
+	TRUE,	/*  cup  */
+	TRUE,	/*  cud1  */
+	TRUE,	/*  home  */
+	TRUE,	/*  civis  */
+	TRUE,	/*  cub1  */
+	TRUE,	/*  mrcup  */
+	TRUE,	/*  cnorm  */
+	TRUE,	/*  cuf1  */
+	TRUE,	/*  ll  */
+	TRUE,	/*  cuu1  */
+	TRUE,	/*  cvvis  */
+	TRUE,	/*  dch1  */
+	TRUE,	/*  dl1  */
+	TRUE,	/*  dsl  */
+	TRUE,	/*  hd  */
+	TRUE,	/*  smacs  */
+	TRUE,	/*  blink  */
+	TRUE,	/*  bold  */
+	TRUE,	/*  smcup  */
+	TRUE,	/*  smdc  */
+	TRUE,	/*  dim  */
+	TRUE,	/*  smir  */
+	FALSE,	/*  invis  */
+	FALSE,	/*  prot  */
+	TRUE,	/*  rev  */
+	TRUE,	/*  smso  */
+	TRUE,	/*  smul  */
+	TRUE,	/*  ech  */
+	TRUE,	/*  rmacs  */
+	TRUE,	/*  sgr0  */
+	TRUE,	/*  rmcup  */
+	TRUE,	/*  rmdc  */
+	TRUE,	/*  rmir  */
+	TRUE,	/*  rmso  */
+	TRUE,	/*  rmul  */
+	TRUE,	/*  flash  */
+	TRUE,	/*  ff  */
+	TRUE,	/*  fsl  */
+	TRUE,	/*  is1  */
+	TRUE,	/*  is2  */
+	TRUE,	/*  is3  */
+	TRUE,	/*  if  */
+	TRUE,	/*  ich1  */
+	TRUE,	/*  il1  */
+	TRUE,	/*  ip  */
+	TRUE,	/*  kbs  */
+	FALSE,	/*  ktbc  */
+	FALSE,	/*  kclr  */
+	FALSE,	/*  kctab  */
+	TRUE,	/*  kdch1  */
+	FALSE,	/*  kdl1  */
+	TRUE,	/*  kcud1  */
+	FALSE,	/*  krmir  */
+	FALSE,	/*  kel  */
+	FALSE,	/*  ked  */
+	TRUE,	/*  kf0  */
+	TRUE,	/*  kf1  */
+	FALSE,	/*  kf10  */
+	TRUE,	/*  kf2  */
+	TRUE,	/*  kf3  */
+	TRUE,	/*  kf4  */
+	TRUE,	/*  kf5  */
+	TRUE,	/*  kf6  */
+	TRUE,	/*  kf7  */
+	TRUE,	/*  kf8  */
+	TRUE,	/*  kf9  */
+	TRUE,	/*  khome  */
+	TRUE,	/*  kich1  */
+	FALSE,	/*  kil1  */
+	TRUE,	/*  kcub1  */
+	TRUE,	/*  kll  */
+	TRUE,	/*  knp  */
+	TRUE,	/*  kpp  */
+	TRUE,	/*  kcuf1  */
+	FALSE,	/*  kind  */
+	FALSE,	/*  kri  */
+	FALSE,	/*  khts  */
+	TRUE,	/*  kcuu1  */
+	TRUE,	/*  rmkx  */
+	TRUE,	/*  smkx  */
+	FALSE,	/*  lf0  */
+	FALSE,	/*  lf1  */
+	FALSE,	/*  lf10  */
+	FALSE,	/*  lf2  */
+	FALSE,	/*  lf3  */
+	FALSE,	/*  lf4  */
+	FALSE,	/*  lf5  */
+	FALSE,	/*  lf6  */
+	FALSE,	/*  lf7  */
+	FALSE,	/*  lf8  */
+	FALSE,	/*  lf9  */
+	TRUE,	/*  rmm  */
+	TRUE,	/*  smm  */
+	TRUE,	/*  nel  */
+	TRUE,	/*  pad  */
+	TRUE,	/*  dch  */
+	TRUE,	/*  dl  */
+	TRUE,	/*  cud  */
+	TRUE,	/*  ich  */
+	TRUE,	/*  indn  */
+	TRUE,	/*  il  */
+	TRUE,	/*  cub  */
+	TRUE,	/*  cuf  */
+	TRUE,	/*  rin  */
+	TRUE,	/*  cuu  */
+	FALSE,	/*  pfkey  */
+	FALSE,	/*  pfloc  */
+	FALSE,	/*  pfx  */
+	FALSE,	/*  mc0  */
+	FALSE,	/*  mc4  */
+	FALSE,	/*  mc5  */
+	TRUE,	/*  rep  */
+	FALSE,	/*  rs1  */
+	FALSE,	/*  rs2  */
+	FALSE,	/*  rs3  */
+	FALSE,	/*  rf  */
+	TRUE,	/*  rc  */
+	FALSE,	/*  vpa  */
+	TRUE,	/*  sc  */
+	TRUE,	/*  ind  */
+	TRUE,	/*  ri  */
+	TRUE,	/*  sgr  */
+	TRUE,	/*  hts  */
+	FALSE,	/*  wind  */
+	TRUE,	/*  ht  */
+	TRUE,	/*  tsl  */
+	TRUE,	/*  uc  */
+	TRUE,	/*  hu  */
+	FALSE,	/*  iprog  */
+	TRUE,	/*  ka1  */
+	TRUE,	/*  ka3  */
+	TRUE,	/*  kb2  */
+	TRUE,	/*  kc1  */
+	TRUE,	/*  kc3  */
+	FALSE,	/*  mc5p  */
+	FALSE,	/*  rmp  */
+	FALSE,	/*  acsc  */
+	FALSE,	/*  pln  */
+	FALSE,	/*  kcbt  */
+	FALSE,	/*  smxon  */
+	FALSE,	/*  rmxon  */
+	FALSE,	/*  smam  */
+	FALSE,	/*  rmam  */
+	FALSE,	/*  xonc  */
+	FALSE,	/*  xoffc  */
+	FALSE,	/*  enacs  */
+	FALSE,	/*  smln  */
+	FALSE,	/*  rmln  */
+	FALSE,	/*  kbeg  */
+	FALSE,	/*  kcan  */
+	FALSE,	/*  kclo  */
+	FALSE,	/*  kcmd  */
+	FALSE,	/*  kcpy  */
+	FALSE,	/*  kcrt  */
+	FALSE,	/*  kend  */
+	FALSE,	/*  kent  */
+	FALSE,	/*  kext  */
+	FALSE,	/*  kfnd  */
+	FALSE,	/*  khlp  */
+	FALSE,	/*  kmrk  */
+	FALSE,	/*  kmsg  */
+	FALSE,	/*  kmov  */
+	FALSE,	/*  knxt  */
+	FALSE,	/*  kopn  */
+	FALSE,	/*  kopt  */
+	FALSE,	/*  kprv  */
+	FALSE,	/*  kprt  */
+	FALSE,	/*  krdo  */
+	FALSE,	/*  kref  */
+	FALSE,	/*  krfr  */
+	FALSE,	/*  krpl  */
+	FALSE,	/*  krst  */
+	FALSE,	/*  kres  */
+	FALSE,	/*  ksav  */
+	FALSE,	/*  kspd  */
+	FALSE,	/*  kund  */
+	FALSE,	/*  kBEG  */
+	FALSE,	/*  kCAN  */
+	FALSE,	/*  kCMD  */
+	FALSE,	/*  kCPY  */
+	FALSE,	/*  kCRT  */
+	FALSE,	/*  kDC  */
+	FALSE,	/*  kDL  */
+	FALSE,	/*  kslt  */
+	FALSE,	/*  kEND  */
+	FALSE,	/*  kEOL  */
+	FALSE,	/*  kEXT  */
+	FALSE,	/*  kFND  */
+	FALSE,	/*  kHLP  */
+	FALSE,	/*  kHOM  */
+	FALSE,	/*  kIC  */
+	FALSE,	/*  kLFT  */
+	FALSE,	/*  kMSG  */
+	FALSE,	/*  kMOV  */
+	FALSE,	/*  kNXT  */
+	FALSE,	/*  kOPT  */
+	FALSE,	/*  kPRV  */
+	FALSE,	/*  kPRT  */
+	FALSE,	/*  kRDO  */
+	FALSE,	/*  kRPL  */
+	FALSE,	/*  kRIT  */
+	FALSE,	/*  kRES  */
+	FALSE,	/*  kSAV  */
+	FALSE,	/*  kSPD  */
+	FALSE,	/*  kUND  */
+	FALSE,	/*  rfi  */
+	FALSE,	/*  kf11  */
+	FALSE,	/*  kf12  */
+	FALSE,	/*  kf13  */
+	FALSE,	/*  kf14  */
+	FALSE,	/*  kf15  */
+	FALSE,	/*  kf16  */
+	FALSE,	/*  kf17  */
+	FALSE,	/*  kf18  */
+	FALSE,	/*  kf19  */
+	FALSE,	/*  kf20  */
+	FALSE,	/*  kf21  */
+	FALSE,	/*  kf22  */
+	FALSE,	/*  kf23  */
+	FALSE,	/*  kf24  */
+	FALSE,	/*  kf25  */
+	FALSE,	/*  kf26  */
+	FALSE,	/*  kf27  */
+	FALSE,	/*  kf28  */
+	FALSE,	/*  kf29  */
+	FALSE,	/*  kf30  */
+	FALSE,	/*  kf31  */
+	FALSE,	/*  kf32  */
+	FALSE,	/*  kf33  */
+	FALSE,	/*  kf34  */
+	FALSE,	/*  kf35  */
+	FALSE,	/*  kf36  */
+	FALSE,	/*  kf37  */
+	FALSE,	/*  kf38  */
+	FALSE,	/*  kf39  */
+	FALSE,	/*  kf40  */
+	FALSE,	/*  kf41  */
+	FALSE,	/*  kf42  */
+	FALSE,	/*  kf43  */
+	FALSE,	/*  kf44  */
+	FALSE,	/*  kf45  */
+	FALSE,	/*  kf46  */
+	FALSE,	/*  kf47  */
+	FALSE,	/*  kf48  */
+	FALSE,	/*  kf49  */
+	FALSE,	/*  kf50  */
+	FALSE,	/*  kf51  */
+	FALSE,	/*  kf52  */
+	FALSE,	/*  kf53  */
+	FALSE,	/*  kf54  */
+	FALSE,	/*  kf55  */
+	FALSE,	/*  kf56  */
+	FALSE,	/*  kf57  */
+	FALSE,	/*  kf58  */
+	FALSE,	/*  kf59  */
+	FALSE,	/*  kf60  */
+	FALSE,	/*  kf61  */
+	FALSE,	/*  kf62  */
+	FALSE,	/*  kf63  */
+	FALSE,	/*  el1  */
+	FALSE,	/*  mgc  */
+	FALSE,	/*  smgl  */
+	FALSE,	/*  smgr  */
+	FALSE,	/*  fln  */
+	FALSE,	/*  sclk  */
+	FALSE,	/*  dclk  */
+	FALSE,	/*  rmclk  */
+	FALSE,	/*  cwin  */
+	FALSE,	/*  wingo  */
+	FALSE,	/*  hup  */
+	FALSE,	/*  dial  */
+	FALSE,	/*  qdial  */
+	FALSE,	/*  tone  */
+	FALSE,	/*  pulse  */
+	FALSE,	/*  hook  */
+	FALSE,	/*  pause  */
+	FALSE,	/*  wait  */
+	FALSE,	/*  u0  */
+	FALSE,	/*  u1  */
+	FALSE,	/*  u2  */
+	FALSE,	/*  u3  */
+	FALSE,	/*  u4  */
+	FALSE,	/*  u5  */
+	FALSE,	/*  u6  */
+	FALSE,	/*  u7  */
+	FALSE,	/*  u8  */
+	FALSE,	/*  u9  */
+	FALSE,	/*  op  */
+	FALSE,	/*  oc  */
+	FALSE,	/*  initc  */
+	FALSE,	/*  initp  */
+	FALSE,	/*  scp  */
+	FALSE,	/*  setf  */
+	FALSE,	/*  setb  */
+	FALSE,	/*  cpi  */
+	FALSE,	/*  lpi  */
+	FALSE,	/*  chr  */
+	FALSE,	/*  cvr  */
+	FALSE,	/*  defc  */
+	FALSE,	/*  swidm  */
+	FALSE,	/*  sdrfq  */
+	FALSE,	/*  sitm  */
+	FALSE,	/*  slm  */
+	FALSE,	/*  smicm  */
+	FALSE,	/*  snlq  */
+	FALSE,	/*  snrmq  */
+	FALSE,	/*  sshm  */
+	FALSE,	/*  ssubm  */
+	FALSE,	/*  ssupm  */
+	FALSE,	/*  sum  */
+	FALSE,	/*  rwidm  */
+	FALSE,	/*  ritm  */
+	FALSE,	/*  rlm  */
+	FALSE,	/*  rmicm  */
+	FALSE,	/*  rshm  */
+	FALSE,	/*  rsubm  */
+	FALSE,	/*  rsupm  */
+	FALSE,	/*  rum  */
+	FALSE,	/*  mhpa  */
+	FALSE,	/*  mcud1  */
+	FALSE,	/*  mcub1  */
+	FALSE,	/*  mcuf1  */
+	FALSE,	/*  mvpa  */
+	FALSE,	/*  mcuu1  */
+	FALSE,	/*  porder  */
+	FALSE,	/*  mcud  */
+	FALSE,	/*  mcub  */
+	FALSE,	/*  mcuf  */
+	FALSE,	/*  mcuu  */
+	FALSE,	/*  scs  */
+	FALSE,	/*  smgb  */
+	FALSE,	/*  smgbp  */
+	FALSE,	/*  smglp  */
+	FALSE,	/*  smgrp  */
+	FALSE,	/*  smgt  */
+	FALSE,	/*  smgtp  */
+	FALSE,	/*  sbim  */
+	FALSE,	/*  scsd  */
+	FALSE,	/*  rbim  */
+	FALSE,	/*  rcsd  */
+	FALSE,	/*  subcs  */
+	FALSE,	/*  supcs  */
+	FALSE,	/*  docr  */
+	FALSE,	/*  zerom  */
+	FALSE,	/*  csnm  */
+	FALSE,	/*  kmous  */
+	FALSE,	/*  minfo  */
+	FALSE,	/*  reqmp  */
+	FALSE,	/*  getm  */
+	FALSE,	/*  setaf  */
+	FALSE,	/*  setab  */
+	FALSE,	/*  pfxl  */
+	FALSE,	/*  devt  */
+	FALSE,	/*  csin  */
+	FALSE,	/*  s0ds  */
+	FALSE,	/*  s1ds  */
+	FALSE,	/*  s2ds  */
+	FALSE,	/*  s3ds  */
+	FALSE,	/*  smglr  */
+	FALSE,	/*  smgtb  */
+	FALSE,	/*  birep  */
+	FALSE,	/*  binel  */
+	FALSE,	/*  bicr  */
+	FALSE,	/*  colornm  */
+	FALSE,	/*  defbi  */
+	FALSE,	/*  endbi  */
+	FALSE,	/*  setcolor  */
+	FALSE,	/*  slines  */
+	FALSE,	/*  dispc  */
+	FALSE,	/*  smpch  */
+	FALSE,	/*  rmpch  */
+	FALSE,	/*  smsc  */
+	FALSE,	/*  rmsc  */
+	FALSE,	/*  pctrm  */
+	FALSE,	/*  scesc  */
+	FALSE,	/*  scesa  */
+	FALSE,	/*  ehhlm  */
+	FALSE,	/*  elhlm  */
+	FALSE,	/*  elohlm  */
+	FALSE,	/*  erhlm  */
+	FALSE,	/*  ethlm  */
+	FALSE,	/*  evhlm  */
+	FALSE,	/*  sgr1  */
+	FALSE,	/*  slength  */
+	TRUE,	/*  OTi2  */
+	TRUE,	/*  OTrs  */
+	TRUE,	/*  OTnl  */
+	TRUE,	/*  OTbc  */
+	FALSE,	/*  OTko  */
+	TRUE,	/*  OTma  */
+	FALSE,	/*  OTG2  */
+	FALSE,	/*  OTG3  */
+	FALSE,	/*  OTG1  */
+	FALSE,	/*  OTG4  */
+	FALSE,	/*  OTGR  */
+	FALSE,	/*  OTGL  */
+	FALSE,	/*  OTGU  */
+	FALSE,	/*  OTGD  */
+	FALSE,	/*  OTGH  */
+	FALSE,	/*  OTGV  */
+	FALSE,	/*  OTGC  */
+	FALSE,	/*  meml  */
+	FALSE,	/*  memu  */
+	FALSE,	/*  pln  */
+	FALSE,	/*  smln  */
+	FALSE,	/*  rmln  */
+	FALSE,	/*  kf11  */
+	FALSE,	/*  kf12  */
+	FALSE,	/*  kf13  */
+	FALSE,	/*  kf14  */
+	FALSE,	/*  kf15  */
+	FALSE,	/*  kf16  */
+	FALSE,	/*  kf17  */
+	FALSE,	/*  kf18  */
+	FALSE,	/*  kf19  */
+	FALSE,	/*  kf20  */
+	FALSE,	/*  kf21  */
+	FALSE,	/*  kf22  */
+	FALSE,	/*  kf23  */
+	FALSE,	/*  kf24  */
+	FALSE,	/*  kf25  */
+	FALSE,	/*  kf26  */
+	FALSE,	/*  kf27  */
+	FALSE,	/*  kf28  */
+	FALSE,	/*  kf29  */
+	FALSE,	/*  kf30  */
+	FALSE,	/*  kf31  */
+	FALSE,	/*  kf32  */
+	FALSE,	/*  kf33  */
+	FALSE,	/*  kf34  */
+	FALSE,	/*  kf35  */
+	FALSE,	/*  kf36  */
+	FALSE,	/*  kf37  */
+	FALSE,	/*  kf38  */
+	FALSE,	/*  kf39  */
+	FALSE,	/*  kf40  */
+	FALSE,	/*  kf41  */
+	FALSE,	/*  kf42  */
+	FALSE,	/*  kf43  */
+	FALSE,	/*  kf44  */
+	FALSE,	/*  kf45  */
+	FALSE,	/*  kf46  */
+	FALSE,	/*  kf47  */
+	FALSE,	/*  kf48  */
+	FALSE,	/*  kf49  */
+	FALSE,	/*  kf50  */
+	FALSE,	/*  kf51  */
+	FALSE,	/*  kf52  */
+	FALSE,	/*  kf53  */
+	FALSE,	/*  kf54  */
+	FALSE,	/*  kf55  */
+	FALSE,	/*  kf56  */
+	FALSE,	/*  kf57  */
+	FALSE,	/*  kf58  */
+	FALSE,	/*  kf59  */
+	FALSE,	/*  kf60  */
+	FALSE,	/*  kf61  */
+	FALSE,	/*  kf62  */
+	FALSE,	/*  kf63  */
+	FALSE,	/*  box1  */
+	FALSE,	/*  box2  */
+	FALSE,	/*  batt1  */
+	FALSE,	/*  batt2  */
+	FALSE,	/*  colb0  */
+	FALSE,	/*  colb1  */
+	FALSE,	/*  colb2  */
+	FALSE,	/*  colb3  */
+	FALSE,	/*  colb4  */
+	FALSE,	/*  colb5  */
+	FALSE,	/*  colb6  */
+	FALSE,	/*  colb7  */
+	FALSE,	/*  colf0  */
+	FALSE,	/*  colf1  */
+	FALSE,	/*  colf2  */
+	FALSE,	/*  colf3  */
+	FALSE,	/*  colf4  */
+	FALSE,	/*  colf5  */
+	FALSE,	/*  colf6  */
+	FALSE,	/*  colf7  */
+	FALSE,	/*  font0  */
+	FALSE,	/*  font1  */
+	FALSE,	/*  font2  */
+	FALSE,	/*  font3  */
+	FALSE,	/*  font4  */
+	FALSE,	/*  font5  */
+	FALSE,	/*  font6  */
+	FALSE,	/*  font7  */
+	FALSE,	/*  kbtab  */
+	FALSE,	/*  kdo  */
+	FALSE,	/*  kcmd  */
+	FALSE,	/*  kcpn  */
+	FALSE,	/*  kend  */
+	FALSE,	/*  khlp  */
+	FALSE,	/*  knl  */
+	FALSE,	/*  knpn  */
+	FALSE,	/*  kppn  */
+	FALSE,	/*  kppn  */
+	FALSE,	/*  kquit  */
+	FALSE,	/*  ksel  */
+	FALSE,	/*  kscl  */
+	FALSE,	/*  kscr  */
+	FALSE,	/*  ktab  */
+	FALSE,	/*  kmpf1  */
+	FALSE,	/*  kmpt1  */
+	FALSE,	/*  kmpf2  */
+	FALSE,	/*  kmpt2  */
+	FALSE,	/*  kmpf3  */
+	FALSE,	/*  kmpt3  */
+	FALSE,	/*  kmpf4  */
+	FALSE,	/*  kmpt4  */
+	FALSE,	/*  kmpf5  */
+	FALSE,	/*  kmpt5  */
+	FALSE,	/*  apstr  */
+	FALSE,	/*  kmpf6  */
+	FALSE,	/*  kmpt6  */
+	FALSE,	/*  kmpf7  */
+	FALSE,	/*  kmpt7  */
+	FALSE,	/*  kmpf8  */
+	FALSE,	/*  kmpt8  */
+	FALSE,	/*  kmpf9  */
+	FALSE,	/*  kmpt9  */
+	FALSE,	/*  ksf1  */
+	FALSE,	/*  ksf2  */
+	FALSE,	/*  ksf3  */
+	FALSE,	/*  ksf4  */
+	FALSE,	/*  ksf5  */
+	FALSE,	/*  ksf6  */
+	FALSE,	/*  ksf7  */
+	FALSE,	/*  ksf8  */
+	FALSE,	/*  ksf9  */
+	FALSE,	/*  ksf10  */
+	FALSE,	/*  kf11  */
+	FALSE,	/*  kf12  */
+	FALSE,	/*  kact  */
+	FALSE,	/*  topl  */
+	FALSE,	/*  btml  */
+	FALSE,	/*  rvert  */
+	FALSE,	/*  lvert  */
+};
+
diff --git a/progs/tic b/progs/tic
new file mode 100755
index 0000000..7feefd2
--- /dev/null
+++ b/progs/tic
Binary files differ
diff --git a/progs/toe b/progs/toe
new file mode 100755
index 0000000..a0049a6
--- /dev/null
+++ b/progs/toe
Binary files differ
diff --git a/progs/tput b/progs/tput
new file mode 100755
index 0000000..3328bcd
--- /dev/null
+++ b/progs/tput
Binary files differ
diff --git a/progs/transform.h b/progs/transform.h
new file mode 100644
index 0000000..a2e7e43
--- /dev/null
+++ b/progs/transform.h
@@ -0,0 +1,4 @@
+#define PROG_CAPTOINFO "captoinfo"
+#define PROG_INFOTOCAP "infotocap"
+#define PROG_RESET     "reset"
+#define PROG_INIT      "init"
diff --git a/progs/tset b/progs/tset
new file mode 100755
index 0000000..0ab0b97
--- /dev/null
+++ b/progs/tset
Binary files differ
diff --git a/test/background b/test/background
new file mode 100755
index 0000000..32a32a1
--- /dev/null
+++ b/test/background
Binary files differ
diff --git a/test/blue b/test/blue
new file mode 100755
index 0000000..121ef3a
--- /dev/null
+++ b/test/blue
Binary files differ
diff --git a/test/bs b/test/bs
new file mode 100755
index 0000000..2f47b51
--- /dev/null
+++ b/test/bs
Binary files differ
diff --git a/test/cardfile b/test/cardfile
new file mode 100755
index 0000000..fed15b9
--- /dev/null
+++ b/test/cardfile
Binary files differ
diff --git a/test/chgat b/test/chgat
new file mode 100755
index 0000000..766fb67
--- /dev/null
+++ b/test/chgat
Binary files differ
diff --git a/test/color_set b/test/color_set
new file mode 100755
index 0000000..10c1be6
--- /dev/null
+++ b/test/color_set
Binary files differ
diff --git a/test/demo_altkeys b/test/demo_altkeys
new file mode 100755
index 0000000..98f3729
--- /dev/null
+++ b/test/demo_altkeys
Binary files differ
diff --git a/test/demo_defkey b/test/demo_defkey
new file mode 100755
index 0000000..a99415b
--- /dev/null
+++ b/test/demo_defkey
Binary files differ
diff --git a/test/demo_forms b/test/demo_forms
new file mode 100755
index 0000000..9c1bc59
--- /dev/null
+++ b/test/demo_forms
Binary files differ
diff --git a/test/demo_keyok b/test/demo_keyok
new file mode 100755
index 0000000..9e94c42
--- /dev/null
+++ b/test/demo_keyok
Binary files differ
diff --git a/test/demo_menus b/test/demo_menus
new file mode 100755
index 0000000..732bbdd
--- /dev/null
+++ b/test/demo_menus
Binary files differ
diff --git a/test/demo_panels b/test/demo_panels
new file mode 100755
index 0000000..831d5e5
--- /dev/null
+++ b/test/demo_panels
Binary files differ
diff --git a/test/demo_termcap b/test/demo_termcap
new file mode 100755
index 0000000..2f090d0
--- /dev/null
+++ b/test/demo_termcap
Binary files differ
diff --git a/test/ditto b/test/ditto
new file mode 100755
index 0000000..974f2a1
--- /dev/null
+++ b/test/ditto
Binary files differ
diff --git a/test/dots b/test/dots
new file mode 100755
index 0000000..9ff5bca
--- /dev/null
+++ b/test/dots
Binary files differ
diff --git a/test/dots_mvcur b/test/dots_mvcur
new file mode 100755
index 0000000..ec3ba92
--- /dev/null
+++ b/test/dots_mvcur
Binary files differ
diff --git a/test/echochar b/test/echochar
new file mode 100755
index 0000000..e12e4da
--- /dev/null
+++ b/test/echochar
Binary files differ
diff --git a/test/filter b/test/filter
new file mode 100755
index 0000000..34925c6
--- /dev/null
+++ b/test/filter
Binary files differ
diff --git a/test/firework b/test/firework
new file mode 100755
index 0000000..120d602
--- /dev/null
+++ b/test/firework
Binary files differ
diff --git a/test/firstlast b/test/firstlast
new file mode 100755
index 0000000..ff9ae51
--- /dev/null
+++ b/test/firstlast
Binary files differ
diff --git a/test/foldkeys b/test/foldkeys
new file mode 100755
index 0000000..86780d6
--- /dev/null
+++ b/test/foldkeys
Binary files differ
diff --git a/test/gdc b/test/gdc
new file mode 100755
index 0000000..c36f461
--- /dev/null
+++ b/test/gdc
Binary files differ
diff --git a/test/hanoi b/test/hanoi
new file mode 100755
index 0000000..fc7c20e
--- /dev/null
+++ b/test/hanoi
Binary files differ
diff --git a/test/hashtest b/test/hashtest
new file mode 100755
index 0000000..346cbe5
--- /dev/null
+++ b/test/hashtest
Binary files differ
diff --git a/test/inch_wide b/test/inch_wide
new file mode 100755
index 0000000..f9aa515
--- /dev/null
+++ b/test/inch_wide
Binary files differ
diff --git a/test/inchs b/test/inchs
new file mode 100755
index 0000000..d62dbec
--- /dev/null
+++ b/test/inchs
Binary files differ
diff --git a/test/ins_wide b/test/ins_wide
new file mode 100755
index 0000000..d9268e0
--- /dev/null
+++ b/test/ins_wide
Binary files differ
diff --git a/test/inserts b/test/inserts
new file mode 100755
index 0000000..f83d536
--- /dev/null
+++ b/test/inserts
Binary files differ
diff --git a/test/key_names b/test/key_names
new file mode 100755
index 0000000..0c77b96
--- /dev/null
+++ b/test/key_names
Binary files differ
diff --git a/test/keynames b/test/keynames
new file mode 100755
index 0000000..0888d5d
--- /dev/null
+++ b/test/keynames
Binary files differ
diff --git a/test/knight b/test/knight
new file mode 100755
index 0000000..4759dcf
--- /dev/null
+++ b/test/knight
Binary files differ
diff --git a/test/lrtest b/test/lrtest
new file mode 100755
index 0000000..4ed11bc
--- /dev/null
+++ b/test/lrtest
Binary files differ
diff --git a/test/movewindow b/test/movewindow
new file mode 100755
index 0000000..526aefe
--- /dev/null
+++ b/test/movewindow
Binary files differ
diff --git a/test/ncurses b/test/ncurses
new file mode 100755
index 0000000..2b9a31f
--- /dev/null
+++ b/test/ncurses
Binary files differ
diff --git a/test/newdemo b/test/newdemo
new file mode 100755
index 0000000..0d5d49c
--- /dev/null
+++ b/test/newdemo
Binary files differ
diff --git a/test/railroad b/test/railroad
new file mode 100755
index 0000000..ca68e7a
--- /dev/null
+++ b/test/railroad
Binary files differ
diff --git a/test/rain b/test/rain
new file mode 100755
index 0000000..fc9712d
--- /dev/null
+++ b/test/rain
Binary files differ
diff --git a/test/redraw b/test/redraw
new file mode 100755
index 0000000..49f7eba
--- /dev/null
+++ b/test/redraw
Binary files differ
diff --git a/test/savescreen b/test/savescreen
new file mode 100755
index 0000000..3d82d45
--- /dev/null
+++ b/test/savescreen
Binary files differ
diff --git a/test/tclock b/test/tclock
new file mode 100755
index 0000000..babea7d
--- /dev/null
+++ b/test/tclock
Binary files differ
diff --git a/test/test_arrays b/test/test_arrays
new file mode 100755
index 0000000..e027e39
--- /dev/null
+++ b/test/test_arrays
Binary files differ
diff --git a/test/test_get_wstr b/test/test_get_wstr
new file mode 100755
index 0000000..9825d47
--- /dev/null
+++ b/test/test_get_wstr
Binary files differ
diff --git a/test/test_getstr b/test/test_getstr
new file mode 100755
index 0000000..ed34cf5
--- /dev/null
+++ b/test/test_getstr
Binary files differ
diff --git a/test/test_instr b/test/test_instr
new file mode 100755
index 0000000..0d876e4
--- /dev/null
+++ b/test/test_instr
Binary files differ
diff --git a/test/test_inwstr b/test/test_inwstr
new file mode 100755
index 0000000..7d5626a
--- /dev/null
+++ b/test/test_inwstr
Binary files differ
diff --git a/test/test_opaque b/test/test_opaque
new file mode 100755
index 0000000..95a9d32
--- /dev/null
+++ b/test/test_opaque
Binary files differ
diff --git a/test/testaddch b/test/testaddch
new file mode 100755
index 0000000..6422b10
--- /dev/null
+++ b/test/testaddch
Binary files differ
diff --git a/test/testcurs b/test/testcurs
new file mode 100755
index 0000000..62bbf5d
--- /dev/null
+++ b/test/testcurs
Binary files differ
diff --git a/test/testscanw b/test/testscanw
new file mode 100755
index 0000000..0930240
--- /dev/null
+++ b/test/testscanw
Binary files differ
diff --git a/test/view b/test/view
new file mode 100755
index 0000000..2e35bb1
--- /dev/null
+++ b/test/view
Binary files differ
diff --git a/test/worm b/test/worm
new file mode 100755
index 0000000..0e3ee90
--- /dev/null
+++ b/test/worm
Binary files differ
diff --git a/test/xmas b/test/xmas
new file mode 100755
index 0000000..d60b74a
--- /dev/null
+++ b/test/xmas
Binary files differ
