1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License, Version 1.0 only
   6 # (the "License").  You may not use this file except in compliance
   7 # with the License.
   8 #
   9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10 # or http://www.opensolaris.org/os/licensing.
  11 # See the License for the specific language governing permissions
  12 # and limitations under the License.
  13 #
  14 # When distributing Covered Code, include this CDDL HEADER in each
  15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16 # If applicable, add the following below this CDDL HEADER, with the
  17 # fields enclosed by brackets "[]" replaced with your own identifying
  18 # information: Portions Copyright [yyyy] [name of copyright owner]
  19 #
  20 # CDDL HEADER END
  21 #
  22 # 
  23 # Copyright 1997 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 # 
  26 
  27 # 
  28 #       Copyright (c) 1988 AT&T
  29 #         All Rights Reserved
  30 #
  31  
  32 # 
  33 # University Copyright- Copyright (c) 1982, 1986, 1988
  34 # The Regents of the University of California
  35 # All Rights Reserved
  36 # 
  37 # University Acknowledgment- Portions of this document are derived from
  38 # software developed by the University of California, Berkeley, and its
  39 # contributors.
  40 #
  41  
  42 #ident  "%Z%%M% %I%     %E% SMI"
  43 
  44 rm -f keyname.c
  45 /usr/bin/echo "#include \"curses_inc.h\"\n" > keyname.c
  46 /usr/bin/echo "static   char    *keystrings[] =\n\t\t{" >> keyname.c
  47 {
  48     grep -v 'KEY_F(' keycaps | awk '{ print $5, $4 }' | sed -e 's/,//g' -e 's/KEY_//'
  49     # These three aren't in keycaps
  50     echo '0401 BREAK\n0530 SRESET\n0531 RESET'
  51 } |  sort -n | awk '
  52     {
  53         print "\t\t    \"" $2 "\",      /* " $1 " */"
  54     }
  55 ' >> keyname.c
  56 
  57 LAST=`tail -1 keyname.c | awk -F'"' '{print $2}'`
  58 cat << ! >> keyname.c
  59                 };
  60 
  61 char    *
  62 keyname(int key)
  63 {
  64         static  char    buf[16];
  65 
  66         if (key >= 0400) {
  67                 int     i;
  68 
  69                 if ((key == 0400) || (key > KEY_${LAST}))
  70                         return ("UNKNOWN KEY");
  71                 if (key > 0507)
  72                         i = key - (0401 + ((0507 - 0410) + 1));
  73                 else
  74                         if (key >= 0410) {
  75                                 (void) sprintf(buf, "KEY_F(%d)", key - 0410);
  76                                 goto ret_buf;
  77                         } else
  78                                 i = key - 0401;
  79                 (void) sprintf(buf, "KEY_%s", keystrings[i]);
  80                 goto ret_buf;
  81         }
  82 
  83         if (key >= 0200) {
  84 #ifdef SYSV
  85                 if (SHELLTTYS.c_cflag & CS8)
  86 #else   /* SYSV */
  87                 if (SHELLTTY.c_cflag & CS8)
  88 #endif  /* SYSV */
  89                         (void) sprintf(buf, "%c", key);
  90                 else
  91                         (void) sprintf(buf, "M-%s", unctrl(key & 0177));
  92                 goto ret_buf;
  93         }
  94 
  95         if (key < 0) {
  96                 (void) sprintf(buf, "%d", key);
  97 ret_buf:
  98                 return (buf);
  99         }
 100 
 101         return (unctrl(key));
 102 }
 103 !
 104 exit 0