]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing NetBSD banner
authorDavid Höppner <0xffea@gmail.com>
Mon, 24 Dec 2012 19:00:31 +0000 (19:00 +0000)
committerLionel Sambuc <lionel@minix3.org>
Fri, 22 Mar 2013 09:15:11 +0000 (10:15 +0100)
12 files changed:
commands/Makefile
commands/banner/Makefile [deleted file]
commands/banner/banner.c [deleted file]
man/man1/Makefile
man/man1/banner.1 [deleted file]
releasetools/nbsd_ports
usr.bin/Makefile
usr.bin/banner/Makefile [new file with mode: 0644]
usr.bin/banner/banner.1 [new file with mode: 0644]
usr.bin/banner/banner.c [new file with mode: 0644]
usr.bin/banner/banner.h [new file with mode: 0644]
usr.bin/banner/chset.c [new file with mode: 0644]

index 33bd80cb0da04be5735a50ab62c196552d61ea63..f4e423429452959c3fef97be92009f69a92cf9c9 100644 (file)
@@ -2,7 +2,7 @@
 
 .include <bsd.own.mk>
 
-SUBDIR=        add_route arp ash at backup banner basename btrace \
+SUBDIR=        add_route arp ash at backup basename btrace \
        cawf cd cdprobe cpp \
        chmod chown ci cleantmp cmp co \
        comm compress cp crc cron crontab cut \
diff --git a/commands/banner/Makefile b/commands/banner/Makefile
deleted file mode 100644 (file)
index 64acb6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-PROG=  banner
-MAN=
-
-.include <bsd.prog.mk>
diff --git a/commands/banner/banner.c b/commands/banner/banner.c
deleted file mode 100644 (file)
index 99719e6..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/* banner - print a banner             Author: Brian Wallis */
-
-/*****************************************************************
- *
- * SYSVbanner.c
- *
- * This is a PD version of the SYS V banner program (at least I think
- * it is compatible to SYS V) which I wrote to use with the clock
- * program written by:
- **     DCF, Inc.
- **     14623 North 49th Place
- **     Scottsdale, AZ 85254
- * and published in the net comp.sources.misc newsgroup in early July
- * since the BSD banner program works quite differently.
- *
- * There is no copyright or responsibility accepted for the use
- * of this software.
- *
- * Brian Wallis, brw@jim.odr.oz, 4 July 1988
- *
- *****************************************************************/
-
-#include <string.h>
-#include <stdio.h>
-
-int main(int argc, char **argv);
-
-char *glyphs[] = {
-         "         @@@  @@   @@  @ @   @@@@@          @@     @@@  ",
-         "         @@@  @@   @@  @ @  @  @  @@@   @  @  @    @@@  ",
-         "         @@@   @   @ @@@@@@@@  @   @@  @    @@      @   ",
-         "          @            @ @   @@@@@    @    @@@     @    ",
-         "                     @@@@@@@   @  @  @    @   @ @       ",
-         "         @@@           @ @  @  @  @ @  @@ @    @        ",
-         "         @@@           @ @   @@@@@ @   @@  @@@@ @       ",
-
-         "   @@    @@                                            @",
-         "  @        @   @   @    @                             @ ",
-         " @          @   @ @     @                            @  ",
-         " @          @ @@@@@@@ @@@@@   @@@   @@@@@           @   ",
-         " @          @   @ @     @     @@@                  @    ",
-         "  @        @   @   @    @      @            @@@   @     ",
-         "   @@    @@                   @             @@@  @      ",
-
-         "  @@@     @    @@@@@  @@@@@ @      @@@@@@@ @@@@@ @@@@@@@",
-         " @   @   @@   @     @@     @@    @ @      @     @@    @ ",
-         "@   @ @ @ @         @      @@    @ @      @          @  ",
-         "@  @  @   @    @@@@@  @@@@@ @@@@@@@ @@@@@ @@@@@@    @   ",
-         "@ @   @   @   @            @     @       @@     @  @    ",
-         " @   @    @   @      @     @     @ @     @@     @  @    ",
-         "  @@@   @@@@@ @@@@@@@ @@@@@      @  @@@@@  @@@@@   @    ",
-
-         " @@@@@  @@@@@          @@@      @           @     @@@@@ ",
-         "@     @@     @  @@@    @@@     @             @   @     @",
-         "@     @@     @  @@@           @     @@@@@     @        @",
-         " @@@@@  @@@@@@         @@@   @                 @     @@ ",
-         "@     @      @         @@@    @     @@@@@     @     @   ",
-         "@     @@     @  @@@     @      @             @          ",
-         " @@@@@  @@@@@   @@@    @        @           @       @   ",
-
-         " @@@@@    @   @@@@@@  @@@@@ @@@@@@ @@@@@@@@@@@@@@ @@@@@ ",
-         "@     @  @ @  @     @@     @@     @@      @      @     @",
-         "@ @@@ @ @   @ @     @@      @     @@      @      @      ",
-         "@ @ @ @@     @@@@@@@ @      @     @@@@@@  @@@@@  @  @@@@",
-         "@ @@@@ @@@@@@@@     @@      @     @@      @      @     @",
-         "@     @@     @@     @@     @@     @@      @      @     @",
-         " @@@@@ @     @@@@@@@  @@@@@ @@@@@@ @@@@@@@@       @@@@@ ",
-
-         "@     @  @*@        @@    @ @      @     @@     @@@@@@@@",
-         "@     @   @         @@   @  @      @@   @@@@    @@     @",
-         "@     @   @         @@  @   @      @ @ @ @@ @   @@     @",
-         "@@@@@@@   @         @@@@    @      @  @  @@  @  @@     @",
-         "@     @   @   @     @@  @   @      @     @@   @ @@     @",
-         "@     @   @   @     @@   @  @      @     @@    @@@     @",
-         "@     @  @@@   @@@@@ @    @ @@@@@@@@     @@     @@@@@@@@",
-
-         "@@@@@@  @@@@@ @@@@@@  @@@@@ @@@@@@@@     @@     @@     @",
-         "@     @@     @@     @@     @   @   @     @@     @@  @  @",
-         "@     @@     @@     @@         @   @     @@     @@  @  @",
-         "@@@@@@ @     @@@@@@@  @@@@@    @   @     @@     @@  @  @",
-         "@      @   @ @@   @        @   @   @     @ @   @ @  @  @",
-         "@      @    @ @    @ @     @   @   @     @  @ @  @  @  @",
-         "@       @@@@ @@     @ @@@@@    @    @@@@@    @    @@ @@ ",
-
-         "@     @@     @@@@@@@@ @@@@@ @       @@@@@    @          ",
-         " @   @  @   @      @  @      @          @   @ @         ",
-         "  @ @    @ @      @   @       @         @  @   @        ",
-         "   @      @      @    @        @        @               ",
-         "  @ @     @     @     @         @       @               ",
-         " @   @    @    @      @          @      @               ",
-         "@     @   @   @@@@@@@ @@@@@       @ @@@@@        @@@@@@@",
-
-         "  @@@                                                   ",
-         "  @@@     @@   @@@@@   @@@@  @@@@@  @@@@@@ @@@@@@  @@@@ ",
-         "   @     @  @  @    @ @    @ @    @ @      @      @    @",
-         "    @   @    @ @@@@@  @      @    @ @@@@@  @@@@@  @     ",
-         "        @@@@@@ @    @ @      @    @ @      @      @  @@@",
-         "        @    @ @    @ @    @ @    @ @      @      @    @",
-         "        @    @ @@@@@   @@@@  @@@@@  @@@@@@ @       @@@@ ",
-
-         "                                                        ",
-         " @    @    @        @ @    @ @      @    @ @    @  @@@@ ",
-         " @    @    @        @ @   @  @      @@  @@ @@   @ @    @",
-         " @@@@@@    @        @ @@@@   @      @ @@ @ @ @  @ @    @",
-         " @    @    @        @ @  @   @      @    @ @  @ @ @    @",
-         " @    @    @   @    @ @   @  @      @    @ @   @@ @    @",
-         " @    @    @    @@@@  @    @ @@@@@@ @    @ @    @  @@@@ ",
-
-         "                                                        ",
-         " @@@@@   @@@@  @@@@@   @@@@   @@@@@ @    @ @    @ @    @",
-         " @    @ @    @ @    @ @         @   @    @ @    @ @    @",
-         " @    @ @    @ @    @  @@@@     @   @    @ @    @ @    @",
-         " @@@@@  @  @ @ @@@@@       @    @   @    @ @    @ @ @@ @",
-         " @      @   @  @   @  @    @    @   @    @  @  @  @@  @@",
-         " @       @@@ @ @    @  @@@@     @    @@@@    @@   @    @",
-
-         "                       @@@     @     @@@   @@    @ @ @ @",
-         " @    @  @   @ @@@@@@ @        @        @ @  @  @ @ @ @ ",
-         "  @  @    @ @      @  @        @        @     @@ @ @ @ @",
-         "   @@      @      @  @@                 @@        @ @ @ ",
-         "   @@      @     @    @        @        @        @ @ @ @",
-         "  @  @     @    @     @        @        @         @ @ @ ",
-         " @    @    @   @@@@@@  @@@     @     @@@         @ @ @ @"
-};
-
-int main(argc, argv)
-int argc;
-char *argv[];
-{
-  int a, b, c, len, ind;
-  char line[80];
-
-  for (argv++; --argc; argv++) {
-       len = strlen(*argv);
-       if (len > 10) len = 10;
-       for (a = 0; a < 7; a++) {
-               for (b = 0; b < len; b++) {
-                       if ((ind = (*argv)[b] - ' ') < 0) ind = 0;
-                       for (c = 0; c < 7; c++) {
-                               line[b * 8 + c] = glyphs[(ind / 8 * 7) + a][(ind % 8 * 7) + c] == '@' ? ind + ' ' : ' ';
-                       }
-                       line[b * 8 + 7] = ' ';
-               }
-               for (b = len * 8 - 1; b >= 0; b--) {
-                       if (line[b] != ' ') break;
-                       line[b] = '\0';
-               }
-               printf("%s\n", line);
-       }
-       printf("\n");
-  }
-  return(0);
-}
index 4129edc45ea4e1af016f7a43dc3b078511e54500..979d00125a572e11c1bb08d204c582393cd9dc08 100644 (file)
@@ -1,4 +1,4 @@
-MAN=   ash.1 at.1 banner.1 basename.1 \
+MAN=   ash.1 at.1 basename.1 \
        bsfilt.1 cawf.1 chgrp.1 \
        chmod.1 cmp.1 comm.1 compress.1 \
        cp.1 crc.1 crontab.1 dd.1 \
diff --git a/man/man1/banner.1 b/man/man1/banner.1
deleted file mode 100644 (file)
index a010d81..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-.TH BANNER 1
-.SH NAME
-banner \- print a banner
-.SH SYNOPSIS
-\fBbanner \fIarg ...\fR
-.br
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH EXAMPLES
-.TP 20
-.B banner happy birthday
-# Print a banner saying happy birthday
-.SH DESCRIPTION
-.PP
-\fIBanner\fR prints its arguments on \fIstdout\fR using a matrix 
-of 6 x 6 pixels per character.
index cacb6b51d4a733f686bd18f693c1c080dfbd1b59..28536347f5036d29b659183ee86fa0a60eb9ddd6 100644 (file)
 2012/10/17 12:00:00,tools/tic
 2012/10/17 12:00:00,tools/tsort
 2009/05/08 12:48:43,usr.bin/apropos
+2012/10/17 12:00:00,usr.bin/banner
 2012/10/17 12:00:00,usr.bin/bzip2
 2012/10/17 12:00:00,usr.bin/bzip2recover
 2013/03/15 12:00:00,usr.bin/cal
index 09ee24dd99d67c8df20d91c41993dacf4730401d..96485f7e64e7cd8bd3caf42e6f26923ee37c1dc2 100644 (file)
@@ -4,7 +4,7 @@
 .include <bsd.own.mk>
 
 SUBDIR= \
-       \
+       banner \
        bzip2 bzip2recover \
        cal chpass cksum \
        col ctags \
diff --git a/usr.bin/banner/Makefile b/usr.bin/banner/Makefile
new file mode 100644 (file)
index 0000000..a5db1e3
--- /dev/null
@@ -0,0 +1,17 @@
+#      $NetBSD: Makefile,v 1.4 2009/04/14 22:15:17 lukem Exp $
+
+PROG=  banner
+
+SRCS=  $(PROG).c chset.c
+
+# if you want to make chars from the letter involved (like lpd), then
+# un-comment the following.
+#CPPFLAGS+= -DNOHASH_ONLY
+
+# if you want to use the same char set that lpd uses then un-comment
+# the following.  Lpd uses a much nicer character set but banner
+# output will not be the same as the real thing.
+#CPPFLAGS+= -DLPD_CHSET
+
+.include <bsd.prog.mk>
+
diff --git a/usr.bin/banner/banner.1 b/usr.bin/banner/banner.1
new file mode 100644 (file)
index 0000000..73e602a
--- /dev/null
@@ -0,0 +1,63 @@
+.\"    $NetBSD: banner.1,v 1.9 2012/02/29 08:54:55 wiz Exp $
+.\"
+.\"    @(#)Copyright (c) 1995, Simon J. Gerraty.
+.\"
+.\"    This is free software.  It comes with NO WARRANTY.
+.\"    Permission to use, modify and distribute this source code
+.\"    is granted subject to the following conditions.
+.\"    1/ that the above copyright notice and this notice
+.\"    are preserved in all copies and that due credit be given
+.\"    to the author.
+.\"    2/ that any changes to this code are clearly commented
+.\"    as such so that the author does not get blamed for bugs
+.\"    other than his own.
+.\"
+.\"    Please send copies of changes and bug-fixes to:
+.\"    sjg@zen.void.oz.au
+.\"
+.Dd February 26, 2012
+.Dt BANNER 1
+.Os
+.Sh NAME
+.Nm banner
+.Nd print strings in large letters
+.Sh SYNOPSIS
+.Nm
+.Op Fl l
+.Op Fl b Ar bg
+.Op Fl f Ar fg
+.Ar string ...
+.Sh DESCRIPTION
+.Nm
+prints up to 10 chars of each
+.Ar string
+in large letters on the standard output.
+.Pp
+The options are:
+.Bl -tag -width Ds
+.It Fl b Ar bg
+Use
+.Ar bg
+as the background color (character) rather than the default
+.Dq \  .
+.It Fl f Ar fg
+Use
+.Ar fg
+as the foreground color (character) rather than the default
+.Dq # .
+If
+.Ar fg
+is
+.Dq - ,
+then the actual letter being printed is used as the
+foreground color in the same way that LPD does it.
+The results are quite variable.
+.It Fl l
+Use the more attractive LPD font instead of the traditional
+.Nm
+font.
+.El
+.Sh EXIT STATUS
+.Ex -std
+.Sh SEE ALSO
+.Xr banner 6
diff --git a/usr.bin/banner/banner.c b/usr.bin/banner/banner.c
new file mode 100644 (file)
index 0000000..b13ed06
--- /dev/null
@@ -0,0 +1,211 @@
+/*     $NetBSD: banner.c,v 1.15 2012/02/29 08:55:25 wiz Exp $  */
+
+/*
+ *     Changes for banner(1)
+ *
+ *      @(#)Copyright (c) 1995, Simon J. Gerraty.
+ *      
+ *      This is free software.  It comes with NO WARRANTY.
+ *      Permission to use, modify and distribute this source code 
+ *      is granted subject to the following conditions.
+ *      1/ that the above copyright notice and this notice 
+ *      are preserved in all copies and that due credit be given 
+ *      to the author.  
+ *      2/ that any changes to this code are clearly commented 
+ *      as such so that the author does not get blamed for bugs 
+ *      other than his own.
+ *      
+ *      Please send copies of changes and bug-fixes to:
+ *      sjg@zen.void.oz.au
+ */
+
+/*
+ * Copyright (c) 1983, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1983, 1993\
+ The Regents of the University of California.  All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)printjob.c 8.2 (Berkeley) 4/16/94";
+#else
+__RCSID("$NetBSD: banner.c,v 1.15 2012/02/29 08:55:25 wiz Exp $");
+#endif
+#endif /* not lint */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "banner.h"
+
+static long PW = LINELEN;
+/*
+ * <sjg> lpd makes chars out of the letter in question.
+ * the results are somewhat mixed.  Sticking to '#' as
+ * banner(1) does is more consistent.
+ */
+static int ForeGnd = '#';
+static int BackGnd = ' ';
+static int Drop = 0;                           /* 3 for the LPD font */
+
+static int     dropit (int);
+static void    scan_out (int, char *, int);
+static char   *scnline (int, char *, int);
+__dead static  void    usage(void);
+
+/* the char gen code below is lifted from lpd */
+
+static char *
+scnline(int key, char *p, int c)
+{
+       int scnwidth;
+
+       if (ForeGnd)
+           c = ForeGnd;
+       
+       for (scnwidth = WIDTH; --scnwidth;) {
+               key <<= 1;
+               *p++ = key & 0200 ? c : BackGnd;
+       }
+       return (p);
+}
+
+#define TRC(q) (((q)-' ')&0177)
+
+
+static int
+dropit(int c)
+{
+       switch(c) {
+
+       case TRC('_'):
+       case TRC(';'):
+       case TRC(','):
+       case TRC('g'):
+       case TRC('j'):
+       case TRC('p'):
+       case TRC('q'):
+       case TRC('y'):
+               return (Drop);
+
+       default:
+               return (0);
+       }
+}
+
+static void
+scan_out(int scfd, char *scsp, int dlm)
+{
+       char *strp;
+       int nchrs, j;
+       char outbuf[LINELEN+1], *sp, c, cc;
+       int d, scnhgt;
+
+       for (scnhgt = 0; scnhgt++ < HEIGHT+Drop; ) {
+               strp = &outbuf[0];
+               if (BackGnd != ' ')
+                   *strp++ = BackGnd;
+               sp = scsp;
+               for (nchrs = 0; *sp != dlm && *sp != '\0'; ) {
+                       cc = *sp++;
+                       if(cc < ' ' || ((int)cc) >= 0x7f)
+                               cc = ' ';
+                       d = dropit(c = TRC(cc));
+                       if ((!d && scnhgt > HEIGHT) || (scnhgt <= Drop && d))
+                               for (j = WIDTH; --j;)
+                                       *strp++ = BackGnd;
+                       else if (Drop == 0)
+                               strp = scnline(
+                                   scnkey_def[(int)c][scnhgt-1-d], strp, cc);
+                       else
+                               strp = scnline(
+                                   scnkey_lpd[(int)c][scnhgt-1-d], strp, cc);
+                       if (nchrs++ >= PW/(WIDTH+1)-1)
+                               break;
+                       *strp++ = BackGnd;
+               }
+               if (BackGnd != ' ')
+                   *strp++ = BackGnd;
+               else {
+                   while (*--strp == ' ' && strp >= outbuf)
+                       ;
+                   strp++;
+               }
+               *strp++ = '\n'; 
+               (void) write(scfd, outbuf, strp-outbuf);
+       }
+}
+
+/*
+ * for each word, print up to 10 chars in big letters.
+ */
+int
+main(int argc, char **argv)
+{
+       char word[10+1];                /* strings limited to 10 chars */
+       int c;
+
+       while ((c = getopt(argc, argv, "b:f:l")) != -1) {
+           switch (c) {
+           case 'f':
+               if (*optarg == '-')
+                   ForeGnd = 0;
+               else
+                   ForeGnd = *optarg;
+               break;
+           case 'b':
+               BackGnd = *optarg;
+               break;
+           case 'l':
+               Drop = 3;                       /* for LPD font */
+               break;
+           default:
+               usage();
+           }
+       }
+
+       for (; optind < argc; ++optind) {
+               (void)strlcpy(word, argv[optind], sizeof (word));
+               scan_out(STDOUT_FILENO, word, '\0');
+       }
+       exit(0);
+}
+
+static void
+usage(void)
+{
+    fprintf(stderr, "usage: %s [-l] [-b bg] [-f fg] string ...\n",
+       getprogname());
+    exit(1);
+}
diff --git a/usr.bin/banner/banner.h b/usr.bin/banner/banner.h
new file mode 100644 (file)
index 0000000..9b4b373
--- /dev/null
@@ -0,0 +1,28 @@
+/*     $NetBSD: banner.h,v 1.4 2000/10/04 19:33:16 mjl Exp $   */
+
+/*
+ *     Various defines needed for code lifted from lpd.
+ *     
+ *     @(#)Copyright (c) 1995, Simon J. Gerraty.
+ *      
+ *      This is free software.  It comes with NO WARRANTY.
+ *      Permission to use, modify and distribute this source code 
+ *      is granted subject to the following conditions.
+ *      1/ that the above copyright notice and this notice 
+ *      are preserved in all copies and that due credit be given 
+ *      to the author.  
+ *      2/ that any changes to this code are clearly commented 
+ *      as such so that the author does not get blamed for bugs 
+ *      other than his own.
+ *      
+ *      Please send copies of changes and bug-fixes to:
+ *      sjg@zen.void.oz.au
+ */
+
+#define LINELEN                132
+#define BACKGND                ' '
+#define HEIGHT 9               /* height of characters */
+#define WIDTH  8               /* width of characters */
+
+extern const char scnkey_lpd[][HEIGHT];
+extern const char scnkey_def[][HEIGHT];
diff --git a/usr.bin/banner/chset.c b/usr.bin/banner/chset.c
new file mode 100644 (file)
index 0000000..6a6ba15
--- /dev/null
@@ -0,0 +1,2226 @@
+/*     $NetBSD: chset.c,v 1.6 2003/08/07 11:13:09 agc Exp $    */
+
+/*
+ *     Changes for banner(1)
+ *      @(#)Copyright (c) 1995, Simon J. Gerraty.
+ *      
+ *      This is free software.  It comes with NO WARRANTY.
+ *      Permission to use, modify and distribute this source code 
+ *      is granted subject to the following conditions.
+ *      1/ that the above copyright notice and this notice 
+ *      are preserved in all copies and that due credit be given 
+ *      to the author.  
+ *      2/ that any changes to this code are clearly commented 
+ *      as such so that the author does not get blamed for bugs 
+ *      other than his own.
+ *      
+ *      Please send copies of changes and bug-fixes to:
+ *      sjg@zen.void.oz.au
+ */
+
+/*
+ * Copyright (c) 1983, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)lpdchar.c  8.1 (Berkeley) 6/6/93";
+#else
+__RCSID("$NetBSD: chset.c,v 1.6 2003/08/07 11:13:09 agc Exp $");
+#endif
+#endif /* not lint */
+
+#include "banner.h"
+
+/*
+ * <sjg> the following were all re-generated by a perl script,
+ * to fill in the gaps needed by the banner(1) char set.
+ */
+#define c_______ 0
+#define c______1 1
+#define c_____1_ 2
+#define c_____11 3
+#define c____1__ 4
+#define c____1_1 5
+#define c____11_ 6
+#define c____111 7
+#define c___1___ 8
+#define c___1__1 9
+#define c___1_1_ 10
+#define c___1_11 11
+#define c___11__ 12
+#define c___11_1 13
+#define c___111_ 14
+#define c___1111 15
+#define c__1____ 16
+#define c__1___1 17
+#define c__1__1_ 18
+#define c__1__11 19
+#define c__1_1__ 20
+#define c__1_1_1 21
+#define c__1_11_ 22
+#define c__1_111 23
+#define c__11___ 24
+#define c__11__1 25
+#define c__11_1_ 26
+#define c__11_11 27
+#define c__111__ 28
+#define c__111_1 29
+#define c__1111_ 30
+#define c__11111 31
+#define c_1_____ 32
+#define c_1____1 33
+#define c_1___1_ 34
+#define c_1___11 35
+#define c_1__1__ 36
+#define c_1__1_1 37
+#define c_1__11_ 38
+#define c_1__111 39
+#define c_1_1___ 40
+#define c_1_1__1 41
+#define c_1_1_1_ 42
+#define c_1_1_11 43
+#define c_1_11__ 44
+#define c_1_11_1 45
+#define c_1_111_ 46
+#define c_1_1111 47
+#define c_11____ 48
+#define c_11___1 49
+#define c_11__1_ 50
+#define c_11__11 51
+#define c_11_1__ 52
+#define c_11_1_1 53
+#define c_11_11_ 54
+#define c_11_111 55
+#define c_111___ 56
+#define c_111__1 57
+#define c_111_1_ 58
+#define c_111_11 59
+#define c_1111__ 60
+#define c_1111_1 61
+#define c_11111_ 62
+#define c_111111 63
+#define c1______ 64
+#define c1_____1 65
+#define c1____1_ 66
+#define c1____11 67
+#define c1___1__ 68
+#define c1___1_1 69
+#define c1___11_ 70
+#define c1___111 71
+#define c1__1___ 72
+#define c1__1__1 73
+#define c1__1_1_ 74
+#define c1__1_11 75
+#define c1__11__ 76
+#define c1__11_1 77
+#define c1__111_ 78
+#define c1__1111 79
+#define c1_1____ 80
+#define c1_1___1 81
+#define c1_1__1_ 82
+#define c1_1__11 83
+#define c1_1_1__ 84
+#define c1_1_1_1 85
+#define c1_1_11_ 86
+#define c1_1_111 87
+#define c1_11___ 88
+#define c1_11__1 89
+#define c1_11_1_ 90
+#define c1_11_11 91
+#define c1_111__ 92
+#define c1_111_1 93
+#define c1_1111_ 94
+#define c1_11111 95
+#define c11_____ 96
+#define c11____1 97
+#define c11___1_ 98
+#define c11___11 99
+#define c11__1__ 100
+#define c11__1_1 101
+#define c11__11_ 102
+#define c11__111 103
+#define c11_1___ 104
+#define c11_1__1 105
+#define c11_1_1_ 106
+#define c11_1_11 107
+#define c11_11__ 108
+#define c11_11_1 109
+#define c11_111_ 110
+#define c11_1111 111
+#define c111____ 112
+#define c111___1 113
+#define c111__1_ 114
+#define c111__11 115
+#define c111_1__ 116
+#define c111_1_1 117
+#define c111_11_ 118
+#define c111_111 119
+#define c1111___ 120
+#define c1111__1 121
+#define c1111_1_ 122
+#define c1111_11 123
+#define c11111__ 124
+#define c11111_1 125
+#define c111111_ 126
+#define c1111111 127
+
+
+
+/*
+ * This is relatively easy to modify just look:
+ */
+const char scnkey_lpd[][HEIGHT] =
+{
+       { c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /*   */
+
+       { c__11___,
+         c__11___,
+         c__11___,
+         c__11___,
+         c__11___,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___ },                   /* ! */
+
+       { c_1__1__,
+         c_1__1__,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* " */
+
+       { c_______,
+         c__1_1__,
+         c__1_1__,
+         c1111111,
+         c__1_1__,
+         c1111111,
+         c__1_1__,
+         c__1_1__,
+         c_______ },                   /* # */
+
+       { c___1___,
+         c_11111_,
+         c1__1__1,
+         c1__1___,
+         c_11111_,
+         c___1__1,
+         c1__1__1,
+         c_11111_,
+         c___1___ },                   /* $ */
+
+       { c_1_____,
+         c1_1___1,
+         c_1___1_,
+         c____1__,
+         c___1___,
+         c__1____,
+         c_1___1_,
+         c1___1_1,
+         c_____1_ },                   /* % */
+       { c_11____,
+         c1__1___,
+         c1___1__,
+         c_1_1___,
+         c__1____,
+         c_1_1__1,
+         c1___11_,
+         c1___11_,
+         c_111__1 },                   /* & */
+       { c___11__,
+         c___11__,
+         c___1___,
+         c__1____,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* ' */
+       { c____1__,
+         c___1___,
+         c__1____,
+         c__1____,
+         c__1____,
+         c__1____,
+         c__1____,
+         c___1___,
+         c____1__ },                   /* ( */
+       { c__1____,
+         c___1___,
+         c____1__,
+         c____1__,
+         c____1__,
+         c____1__,
+         c____1__,
+         c___1___,
+         c__1____ },                   /* ) */
+       { c_______,
+         c___1___,
+         c1__1__1,
+         c_1_1_1_,
+         c__111__,
+         c_1_1_1_,
+         c1__1__1,
+         c___1___,
+         c_______ },                   /* * */
+       { c_______,
+         c___1___,
+         c___1___,
+         c___1___,
+         c1111111,
+         c___1___,
+         c___1___,
+         c___1___,
+         c_______ },                   /* + */
+       { c_______,
+         c_______,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___,
+         c__1____,
+         c_1_____,
+         c_______ },                   /* , */
+       { c_______,
+         c_______,
+         c_______,
+         c_______,
+         c1111111,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* - */
+       { c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___ },                   /* . */
+
+       { c_______,
+         c______1,
+         c_____1_,
+         c____1__,
+         c___1___,
+         c__1____,
+         c_1_____,
+         c1______,
+         c_______ },                   /* / */
+
+       { c_11111_,
+         c1_____1,
+         c1____11,
+         c1___1_1,
+         c1__1__1,
+         c1_1___1,
+         c11____1,
+         c1_____1,
+         c_11111_ },                   /* 0 */
+
+       { c___1___,
+         c__11___,
+         c_1_1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c_11111_ },                   /* 1 */
+
+       { c_11111_,
+         c1_____1,
+         c______1,
+         c_____1_,
+         c__111__,
+         c_1_____,
+         c1______,
+         c1______,
+         c1111111 },                   /* 2 */
+
+       { c_11111_,
+         c1_____1,
+         c______1,
+         c______1,
+         c__1111_,
+         c______1,
+         c______1,
+         c1_____1,
+         c_11111_ },                   /* 3 */
+
+       { c_____1_,
+         c____11_,
+         c___1_1_,
+         c__1__1_,
+         c_1___1_,
+         c1____1_,
+         c1111111,
+         c_____1_,
+         c_____1_ },                   /* 4 */
+
+       { c1111111,
+         c1______,
+         c1______,
+         c11111__,
+         c_____1_,
+         c______1,
+         c______1,
+         c1____1_,
+         c_1111__ },                   /* 5 */
+
+       { c__1111_,
+         c_1_____,
+         c1______,
+         c1______,
+         c1_1111_,
+         c11____1,
+         c1_____1,
+         c1_____1,
+         c_11111_ },                   /* 6 */
+
+       { c1111111,
+         c1_____1,
+         c_____1_,
+         c____1__,
+         c___1___,
+         c__1____,
+         c__1____,
+         c__1____,
+         c__1____ },                   /* 7 */
+
+       { c_11111_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_11111_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_11111_ },                   /* 8 */
+
+       { c_11111_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_111111,
+         c______1,
+         c______1,
+         c1_____1,
+         c_1111__ },                   /* 9 */
+
+       { c_______,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___ },                   /* : */
+
+
+       { c__11___,
+         c__11___,
+         c_______,
+         c_______,
+         c__11___,
+         c__11___,
+         c__1____,
+         c_1_____,
+         c_______ },                   /* ; */
+
+       { c____1__,
+         c___1___,
+         c__1____,
+         c_1_____,
+         c1______,
+         c_1_____,
+         c__1____,
+         c___1___,
+         c____1__ },                   /* < */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1111111,
+         c_______,
+         c1111111,
+         c_______,
+         c_______,
+         c_______ },                   /* = */
+
+       { c__1____,
+         c___1___,
+         c____1__,
+         c_____1_,
+         c______1,
+         c_____1_,
+         c____1__,
+         c___1___,
+         c__1____ },                   /* > */
+
+       { c__1111_,
+         c_1____1,
+         c_1____1,
+         c______1,
+         c____11_,
+         c___1___,
+         c___1___,
+         c_______,
+         c___1___ },                   /* ? */
+
+       { c__1111_,
+         c_1____1,
+         c1__11_1,
+         c1_1_1_1,
+         c1_1_1_1,
+         c1_1111_,
+         c1______,
+         c_1____1,
+         c__1111_ },                   /* @ */
+
+       { c__111__,
+         c_1___1_,
+         c1_____1,
+         c1_____1,
+         c1111111,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1 },                   /* A */
+
+       { c111111_,
+         c_1____1,
+         c_1____1,
+         c_1____1,
+         c_11111_,
+         c_1____1,
+         c_1____1,
+         c_1____1,
+         c111111_ },                   /* B */
+
+       { c__1111_,
+         c_1____1,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c_1____1,
+         c__1111_ },                   /* C */
+
+       { c11111__,
+         c_1___1_,
+         c_1____1,
+         c_1____1,
+         c_1____1,
+         c_1____1,
+         c_1____1,
+         c_1___1_,
+         c11111__ },                   /* D */
+
+       { c1111111,
+         c1______,
+         c1______,
+         c1______,
+         c111111_,
+         c1______,
+         c1______,
+         c1______,
+         c1111111 },                   /* E */
+
+       { c1111111,
+         c1______,
+         c1______,
+         c1______,
+         c111111_,
+         c1______,
+         c1______,
+         c1______,
+         c1______ },                   /* F */
+
+       { c__1111_,
+         c_1____1,
+         c1______,
+         c1______,
+         c1______,
+         c1__1111,
+         c1_____1,
+         c_1____1,
+         c__1111_ },                   /* G */
+
+       { c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1111111,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1 },                   /* H */
+
+       { c_11111_,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c_11111_ },                   /* I */
+
+       { c__11111,
+         c____1__,
+         c____1__,
+         c____1__,
+         c____1__,
+         c____1__,
+         c____1__,
+         c1___1__,
+         c_111___ },                   /* J */
+
+       { c1_____1,
+         c1____1_,
+         c1___1__,
+         c1__1___,
+         c1_1____,
+         c11_1___,
+         c1___1__,
+         c1____1_,
+         c1_____1 },                   /* K */
+
+       { c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1______,
+         c1111111 },                   /* L */
+
+       { c1_____1,
+         c11___11,
+         c1_1_1_1,
+         c1__1__1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1 },                   /* M */
+
+       { c1_____1,
+         c11____1,
+         c1_1___1,
+         c1__1__1,
+         c1___1_1,
+         c1____11,
+         c1_____1,
+         c1_____1,
+         c1_____1 },                   /* N */
+
+       { c__111__,
+         c_1___1_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_1___1_,
+         c__111__ },                   /* O */
+
+       { c111111_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c111111_,
+         c1______,
+         c1______,
+         c1______,
+         c1______ },                   /* P */
+
+       { c__111__,
+         c_1___1_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1__1__1,
+         c1___1_1,
+         c_1___1_,
+         c__111_1 },                   /* Q */
+
+       { c111111_,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c111111_,
+         c1__1___,
+         c1___1__,
+         c1____1_,
+         c1_____1 },                   /* R */
+
+       { c_11111_,
+         c1_____1,
+         c1______,
+         c1______,
+         c_11111_,
+         c______1,
+         c______1,
+         c1_____1,
+         c_11111_ },                   /* S */
+
+       { c1111111,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___ },                   /* T */
+
+       { c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_11111_ },                   /* U */
+
+       { c1_____1,
+         c1_____1,
+         c1_____1,
+         c_1___1_,
+         c_1___1_,
+         c__1_1__,
+         c__1_1__,
+         c___1___,
+         c___1___ },                   /* V */
+
+       { c1_____1,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c1__1__1,
+         c1__1__1,
+         c1_1_1_1,
+         c11___11,
+         c1_____1 },                   /* W */
+
+       { c1_____1,
+         c1_____1,
+         c_1___1_,
+         c__1_1__,
+         c___1___,
+         c__1_1__,
+         c_1___1_,
+         c1_____1,
+         c1_____1 },                   /* X */
+
+       { c1_____1,
+         c1_____1,
+         c_1___1_,
+         c__1_1__,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___ },                   /* Y */
+
+       { c1111111,
+         c______1,
+         c_____1_,
+         c____1__,
+         c___1___,
+         c__1____,
+         c_1_____,
+         c1______,
+         c1111111 },                   /* Z */
+
+       { c_1111__,
+         c_1_____,
+         c_1_____,
+         c_1_____,
+         c_1_____,
+         c_1_____,
+         c_1_____,
+         c_1_____,
+         c_1111__ },                   /* [ */
+
+       { c_______,
+         c1______,
+         c_1_____,
+         c__1____,
+         c___1___,
+         c____1__,
+         c_____1_,
+         c______1,
+         c_______ },                   /* \ */
+
+       { c__1111_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c__1111_ },                   /* ] */
+
+       { c___1___,
+         c__1_1__,
+         c_1___1_,
+         c1_____1,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* ^ */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c1111111,
+         c_______ },                   /* _ */
+
+       { c__11___,
+         c__11___,
+         c___1___,
+         c____1__,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* ` */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_1111__,
+         c_____1_,
+         c_11111_,
+         c1_____1,
+         c1____11,
+         c_1111_1 },                   /* a */
+
+       { c1______,
+         c1______,
+         c1______,
+         c1_111__,
+         c11___1_,
+         c1_____1,
+         c1_____1,
+         c11___1_,
+         c1_111__ },                   /* b */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_1111__,
+         c1____1_,
+         c1______,
+         c1______,
+         c1____1_,
+         c_1111__ },                   /* c */
+
+       { c_____1_,
+         c_____1_,
+         c_____1_,
+         c_111_1_,
+         c1___11_,
+         c1____1_,
+         c1____1_,
+         c1___11_,
+         c_111_1_ },                   /* d */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_1111__,
+         c1____1_,
+         c111111_,
+         c1______,
+         c1____1_,
+         c_1111__ },                   /* e */
+
+       { c___11__,
+         c__1__1_,
+         c__1____,
+         c__1____,
+         c11111__,
+         c__1____,
+         c__1____,
+         c__1____,
+         c__1____ },                   /* f */
+
+       { c_111_1_,
+         c1___11_,
+         c1____1_,
+         c1____1_,
+         c1___11_,
+         c_111_1_,
+         c_____1_,
+         c1____1_,
+         c_1111__ },                   /* g */
+
+       { c1______,
+         c1______,
+         c1______,
+         c1_111__,
+         c11___1_,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1____1_ },                   /* h */
+
+       { c_______,
+         c___1___,
+         c_______,
+         c__11___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c__111__ },                   /* i */
+
+       { c____11_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_____1_,
+         c_1___1_,
+         c__111__ },                   /* j */
+
+       { c1______,
+         c1______,
+         c1______,
+         c1___1__,
+         c1__1___,
+         c1_1____,
+         c11_1___,
+         c1___1__,
+         c1____1_ },                   /* k */
+
+       { c__11___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c__111__ },                   /* l */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1_1_11_,
+         c11_1__1,
+         c1__1__1,
+         c1__1__1,
+         c1__1__1,
+         c1__1__1 },                   /* m */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1_111__,
+         c11___1_,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1____1_ },                   /* n */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_1111__,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c_1111__ },                   /* o */
+
+       { c1_111__,
+         c11___1_,
+         c1____1_,
+         c1____1_,
+         c11___1_,
+         c1_111__,
+         c1______,
+         c1______,
+         c1______ },                   /* p */
+
+       { c_111_1_,
+         c1___11_,
+         c1____1_,
+         c1____1_,
+         c1___11_,
+         c_111_1_,
+         c_____1_,
+         c_____1_,
+         c_____1_ },                   /* q */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1_111__,
+         c11___1_,
+         c1______,
+         c1______,
+         c1______,
+         c1______ },                   /* r */
+
+       { c_______,
+         c_______,
+         c_______,
+         c_1111__,
+         c1____1_,
+         c_11____,
+         c___11__,
+         c1____1_,
+         c_1111__ },                   /* s */
+
+       { c_______,
+         c__1____,
+         c__1____,
+         c11111__,
+         c__1____,
+         c__1____,
+         c__1____,
+         c__1__1_,
+         c___11__ },                   /* t */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1___11_,
+         c_111_1_ },                   /* u */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1_____1,
+         c1_____1,
+         c1_____1,
+         c_1___1_,
+         c__1_1__,
+         c___1___ },                   /* v */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1_____1,
+         c1__1__1,
+         c1__1__1,
+         c1__1__1,
+         c1__1__1,
+         c_11_11_ },                   /* w */
+
+       { c_______,
+         c_______,
+         c_______,
+         c1____1_,
+         c_1__1__,
+         c__11___,
+         c__11___,
+         c_1__1__,
+         c1____1_ },                   /* x */
+
+       { c1____1_,
+         c1____1_,
+         c1____1_,
+         c1____1_,
+         c1___11_,
+         c_111_1_,
+         c_____1_,
+         c1____1_,
+         c_1111__ },                   /* y */
+
+       { c_______,
+         c_______,
+         c_______,
+         c111111_,
+         c____1__,
+         c___1___,
+         c__1____,
+         c_1_____,
+         c111111_ },                   /* z */
+
+       { c___11__,
+         c__1____,
+         c__1____,
+         c__1____,
+         c_1_____,
+         c__1____,
+         c__1____,
+         c__1____,
+         c___11__ },                   /* } */
+
+       { c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___,
+         c___1___ },                   /* | */
+
+       { c__11___,
+         c____1__,
+         c____1__,
+         c____1__,
+         c_____1_,
+         c____1__,
+         c____1__,
+         c____1__,
+         c__11___ },                   /* } */
+
+       { c_11____,
+         c1__1__1,
+         c____11_,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______,
+         c_______ },                   /* ~ */
+
+       { c_1__1__,
+         c1__1__1,
+         c__1__1_,
+         c_1__1__,
+         c1__1__1,
+         c__1__1_,
+         c_1__1__,
+         c1__1__1,
+         c__1__1_ }                    /* rub-out */
+};
+               
+/*
+ * This is the real banner char set
+ */
+const char scnkey_def[][HEIGHT] =
+{
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /*   */
+
+       {
+               c_______,
+               c__111__,
+               c__111__,
+               c__111__,
+               c___1___,
+               c_______,
+               c__111__,
+               c__111__,
+               c_______
+       },                      /* ! */
+       {
+               c_______,
+               c111_111,
+               c111_111,
+               c_1___1_,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* " */
+       {
+               c_______,
+               c__1_1__,
+               c__1_1__,
+               c1111111,
+               c__1_1__,
+               c1111111,
+               c__1_1__,
+               c__1_1__,
+               c_______
+       },                      /* # */
+       {
+               c_______,
+               c_11111_,
+               c1__1__1,
+               c1__1___,
+               c_11111_,
+               c___1__1,
+               c1__1__1,
+               c_11111_,
+               c_______
+       },                      /* $ */
+       {
+               c_______,
+               c111___1,
+               c1_1__1_,
+               c111_1__,
+               c___1___,
+               c__1_111,
+               c_1__1_1,
+               c1___111,
+               c_______
+       },                      /* % */
+       {
+               c_______,
+               c__11___,
+               c_1__1__,
+               c__11___,
+               c_111___,
+               c1___1_1,
+               c1____1_,
+               c_111__1,
+               c_______
+       },                      /* & */
+       {
+               c_______,
+               c__111__,
+               c__111__,
+               c___1___,
+               c__1____,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* ' */
+       {
+               c_______,
+               c___11__,
+               c__1____,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c__1____,
+               c___11__,
+               c_______
+       },                      /* ( */
+       {
+               c_______,
+               c__11___,
+               c____1__,
+               c_____1_,
+               c_____1_,
+               c_____1_,
+               c____1__,
+               c__11___,
+               c_______
+       },                      /* ) */
+       {
+               c_______,
+               c_______,
+               c_1___1_,
+               c__1_1__,
+               c1111111,
+               c__1_1__,
+               c_1___1_,
+               c_______,
+               c_______
+       },                      /* * */
+       {
+               c_______,
+               c_______,
+               c___1___,
+               c___1___,
+               c_11111_,
+               c___1___,
+               c___1___,
+               c_______,
+               c_______
+       },                      /* + */
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c__111__,
+               c__111__,
+               c___1___,
+               c__1____,
+               c_______
+       },                      /* , */
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_11111_,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* - */
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c__111__,
+               c__111__,
+               c__111__,
+               c_______
+       },                      /* . */
+       {
+               c_______,
+               c______1,
+               c_____1_,
+               c____1__,
+               c___1___,
+               c__1____,
+               c_1_____,
+               c1______,
+               c_______
+       },                      /* / */
+       {
+               c_______,
+               c__111__,
+               c_1___1_,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c_1___1_,
+               c__111__,
+               c_______
+       },                      /* 0 */
+       {
+               c_______,
+               c___1___,
+               c__11___,
+               c_1_1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c_11111_,
+               c_______
+       },                      /* 1 */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c______1,
+               c_11111_,
+               c1______,
+               c1______,
+               c1111111,
+               c_______
+       },                      /* 2 */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c______1,
+               c_11111_,
+               c______1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* 3 */
+       {
+               c_______,
+               c1______,
+               c1____1_,
+               c1____1_,
+               c1____1_,
+               c1111111,
+               c_____1_,
+               c_____1_,
+               c_______
+       },                      /* 4 */
+       {
+               c_______,
+               c1111111,
+               c1______,
+               c1______,
+               c111111_,
+               c______1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* 5 */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1______,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* 6 */
+       {
+               c_______,
+               c1111111,
+               c1____1_,
+               c____1__,
+               c___1___,
+               c__1____,
+               c__1____,
+               c__1____,
+               c_______
+       },                      /* 7 */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* 8 */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1_____1,
+               c_111111,
+               c______1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* 9 */
+       {
+               c_______,
+               c___1___,
+               c__111__,
+               c___1___,
+               c_______,
+               c___1___,
+               c__111__,
+               c___1___,
+               c_______
+       },                      /* : */
+       {
+               c_______,
+               c__111__,
+               c__111__,
+               c_______,
+               c__111__,
+               c__111__,
+               c___1___,
+               c__1____,
+               c_______
+       },                      /* ; */
+       {
+               c_______,
+               c____1__,
+               c___1___,
+               c__1____,
+               c_1_____,
+               c__1____,
+               c___1___,
+               c____1__,
+               c_______
+       },                      /* < */
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_11111_,
+               c_______,
+               c_11111_,
+               c_______,
+               c_______,
+               c_______
+       },                      /* = */
+       {
+               c_______,
+               c__1____,
+               c___1___,
+               c____1__,
+               c_____1_,
+               c____1__,
+               c___1___,
+               c__1____,
+               c_______
+       },                      /* > */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c______1,
+               c___111_,
+               c___1___,
+               c_______,
+               c___1___,
+               c_______
+       },                      /* ? */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1_111_1,
+               c1_111_1,
+               c1_1111_,
+               c1______,
+               c_11111_,
+               c_______
+       },                      /* @ */
+       {
+               c_______,
+               c___1___,
+               c__1_1__,
+               c_1___1_,
+               c1_____1,
+               c1111111,
+               c1_____1,
+               c1_____1,
+               c_______
+       },                      /* A */
+       {
+               c_______,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c111111_,
+               c_______
+       },                      /* B */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1______,
+               c1______,
+               c1______,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* C */
+       {
+               c_______,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c111111_,
+               c_______
+       },                      /* D */
+       {
+               c_______,
+               c1111111,
+               c1______,
+               c1______,
+               c11111__,
+               c1______,
+               c1______,
+               c1111111,
+               c_______
+       },                      /* E */
+       {
+               c_______,
+               c1111111,
+               c1______,
+               c1______,
+               c11111__,
+               c1______,
+               c1______,
+               c1______,
+               c_______
+       },                      /* F */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1______,
+               c1__1111,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* G */
+       {
+               c_______,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1111111,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c_______
+       },                      /* H */
+       {
+               c_______,
+               c__111__,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c__111__,
+               c_______
+       },                      /* I */
+       {
+               c_______,
+               c______1,
+               c______1,
+               c______1,
+               c______1,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* J */
+       {
+               c_______,
+               c1____1_,
+               c1___1__,
+               c1__1___,
+               c111____,
+               c1__1___,
+               c1___1__,
+               c1____1_,
+               c_______
+       },                      /* K */
+       {
+               c_______,
+               c1______,
+               c1______,
+               c1______,
+               c1______,
+               c1______,
+               c1______,
+               c1111111,
+               c_______
+       },                      /* L */
+       {
+               c_______,
+               c1_____1,
+               c11___11,
+               c1_1_1_1,
+               c1__1__1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c_______
+       },                      /* M */
+       {
+               c_______,
+               c1_____1,
+               c11____1,
+               c1_1___1,
+               c1__1__1,
+               c1___1_1,
+               c1____11,
+               c1_____1,
+               c_______
+       },                      /* N */
+       {
+               c_______,
+               c1111111,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1111111,
+               c_______
+       },                      /* O */
+       {
+               c_______,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c111111_,
+               c1______,
+               c1______,
+               c1______,
+               c_______
+       },                      /* P */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1___1_1,
+               c1____1_,
+               c_1111_1,
+               c_______
+       },                      /* Q */
+       {
+               c_______,
+               c111111_,
+               c1_____1,
+               c1_____1,
+               c111111_,
+               c1___1__,
+               c1____1_,
+               c1_____1,
+               c_______
+       },                      /* R */
+       {
+               c_______,
+               c_11111_,
+               c1_____1,
+               c1______,
+               c_11111_,
+               c______1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* S */
+       {
+               c_______,
+               c1111111,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c_______
+       },                      /* T */
+       {
+               c_______,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c_11111_,
+               c_______
+       },                      /* U */
+       {
+               c_______,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c1_____1,
+               c_1___1_,
+               c__1_1__,
+               c___1___,
+               c_______
+       },                      /* V */
+       {
+               c_______,
+               c1_____1,
+               c1__1__1,
+               c1__1__1,
+               c1__1__1,
+               c1__1__1,
+               c1__1__1,
+               c_11_11_,
+               c_______
+       },                      /* W */
+       {
+               c_______,
+               c1_____1,
+               c_1___1_,
+               c__1_1__,
+               c___1___,
+               c__1_1__,
+               c_1___1_,
+               c1_____1,
+               c_______
+       },                      /* X */
+       {
+               c_______,
+               c1_____1,
+               c_1___1_,
+               c__1_1__,
+               c___1___,
+               c___1___,
+               c___1___,
+               c___1___,
+               c_______
+       },                      /* Y */
+       {
+               c_______,
+               c1111111,
+               c_____1_,
+               c____1__,
+               c___1___,
+               c__1____,
+               c_1_____,
+               c1111111,
+               c_______
+       },                      /* Z */
+       {
+               c_______,
+               c_11111_,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_11111_,
+               c_______
+       },                      /* [ */
+       {
+               c_______,
+               c1______,
+               c_1_____,
+               c__1____,
+               c___1___,
+               c____1__,
+               c_____1_,
+               c______1,
+               c_______
+       },                      /* \ */
+       {
+               c_______,
+               c_11111_,
+               c_____1_,
+               c_____1_,
+               c_____1_,
+               c_____1_,
+               c_____1_,
+               c_11111_,
+               c_______
+       },                      /* ] */
+       {
+               c_______,
+               c___1___,
+               c__1_1__,
+               c_1___1_,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* ^ */
+       {
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c1111111,
+               c_______
+       },                      /* _ */
+       {
+               c_______,
+               c__111__,
+               c__111__,
+               c___1___,
+               c____1__,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* ` */
+       {
+               c_______,
+               c_______,
+               c___11__,
+               c__1__1_,
+               c_1____1,
+               c_111111,
+               c_1____1,
+               c_1____1,
+               c_______
+       },                      /* a */
+       {
+               c_______,
+               c_______,
+               c_11111_,
+               c_1____1,
+               c_11111_,
+               c_1____1,
+               c_1____1,
+               c_11111_,
+               c_______
+       },                      /* b */
+       {
+               c_______,
+               c_______,
+               c__1111_,
+               c_1____1,
+               c_1_____,
+               c_1_____,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* c */
+       {
+               c_______,
+               c_______,
+               c_11111_,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_11111_,
+               c_______
+       },                      /* d */
+       {
+               c_______,
+               c_______,
+               c_111111,
+               c_1_____,
+               c_11111_,
+               c_1_____,
+               c_1_____,
+               c_111111,
+               c_______
+       },                      /* e */
+       {
+               c_______,
+               c_______,
+               c_111111,
+               c_1_____,
+               c_11111_,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_______
+       },                      /* f */
+       {
+               c_______,
+               c_______,
+               c__1111_,
+               c_1____1,
+               c_1_____,
+               c_1__111,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* g */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_1____1,
+               c_111111,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_______
+       },                      /* h */
+       {
+               c_______,
+               c_______,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c_______
+       },                      /* i */
+       {
+               c_______,
+               c_______,
+               c______1,
+               c______1,
+               c______1,
+               c______1,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* j */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_1___1_,
+               c_1111__,
+               c_1__1__,
+               c_1___1_,
+               c_1____1,
+               c_______
+       },                      /* k */
+       {
+               c_______,
+               c_______,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_1_____,
+               c_111111,
+               c_______
+       },                      /* l */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_11__11,
+               c_1_11_1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_______
+       },                      /* m */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_11___1,
+               c_1_1__1,
+               c_1__1_1,
+               c_1___11,
+               c_1____1,
+               c_______
+       },                      /* n */
+       {
+               c_______,
+               c_______,
+               c__1111_,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* o */
+       {
+               c_______,
+               c_______,
+               c_11111_,
+               c_1____1,
+               c_1____1,
+               c_11111_,
+               c_1_____,
+               c_1_____,
+               c_______
+       },                      /* p */
+       {
+               c_______,
+               c_______,
+               c__1111_,
+               c_1____1,
+               c_1____1,
+               c_1__1_1,
+               c_1___1_,
+               c__111_1,
+               c_______
+       },                      /* q */
+       {
+               c_______,
+               c_______,
+               c_11111_,
+               c_1____1,
+               c_1____1,
+               c_11111_,
+               c_1___1_,
+               c_1____1,
+               c_______
+       },                      /* r */
+       {
+               c_______,
+               c_______,
+               c__1111_,
+               c_1_____,
+               c__1111_,
+               c______1,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* s */
+       {
+               c_______,
+               c_______,
+               c__11111,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c_______
+       },                      /* t */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c__1111_,
+               c_______
+       },                      /* u */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c__1__1_,
+               c___11__,
+               c_______
+       },                      /* v */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c_1____1,
+               c_1____1,
+               c_1_11_1,
+               c_11__11,
+               c_1____1,
+               c_______
+       },                      /* w */
+       {
+               c_______,
+               c_______,
+               c_1____1,
+               c__1__1_,
+               c___11__,
+               c___11__,
+               c__1__1_,
+               c_1____1,
+               c_______
+       },                      /* x */
+       {
+               c_______,
+               c_______,
+               c__1___1,
+               c___1_1_,
+               c____1__,
+               c____1__,
+               c____1__,
+               c____1__,
+               c_______
+       },                      /* y */
+       {
+               c_______,
+               c_______,
+               c_111111,
+               c_____1_,
+               c____1__,
+               c___1___,
+               c__1____,
+               c_111111,
+               c_______
+       },                      /* z */
+       {
+               c_______,
+               c__111__,
+               c_1_____,
+               c_1_____,
+               c11_____,
+               c_1_____,
+               c_1_____,
+               c__111__,
+               c_______
+       },                      /* { */
+       {
+               c_______,
+               c___1___,
+               c___1___,
+               c___1___,
+               c_______,
+               c___1___,
+               c___1___,
+               c___1___,
+               c_______
+       },                      /* | */
+       {
+               c_______,
+               c__111__,
+               c_____1_,
+               c_____1_,
+               c_____11,
+               c_____1_,
+               c_____1_,
+               c__111__,
+               c_______
+       },                      /* } */
+       {
+               c_______,
+               c_11____,
+               c1__1__1,
+               c____11_,
+               c_______,
+               c_______,
+               c_______,
+               c_______,
+               c_______
+       },                      /* ~ */
+
+       {
+               c_______,
+               c_1__1__,
+               c1__1__1,
+               c__1__1_,
+               c_1__1__,
+               c1__1__1,
+               c__1__1_,
+               c_1__1__,
+               c1__1__1
+       }                       /* rub-out */
+};
+