[comp.emacs] Emacs 18.55 keyboard config for Xenix/386 2.3.3

robl@qaeval. (Rob LaMoreaux) (12/28/90)

I have the meta key and all that working on Xenix/386 2.3.1, I haven't
tried it yet on SCO Unix since I've had other things to do and my CMC
ethernet cards won't work under Unix (lack of drivers). I have the
function keys mapped the way I like them. I use F1 for help since I
have CTRL-H mapped to backspace, and Delete used for Delete. Hope this helps.

Here's what I've been using for ansi.el, keys, and keypad.el:
****ansi.el****
(setq meta-flag t)
;; ansi console terminal stuff.
;; April 1985, Joe Kelsey

(require 'keypad)

(defvar CSI-map nil
  "The CSI-map maps the CSI function keys on the ANSI keyboard.
The CSI keys are the dark function keys, and are only active in
ANSI-mode, except for the arrow keys.")

(defun enable-arrow-keys ()
  "Enable the use of the ANSI arrow keys and dark function keys.
Because of the nature of the ANSI, this unavoidably breaks
the standard Emacs command ESC [; therefore, it is not done by default,
but only if you give this command."
  (interactive)
  (global-set-key "\e[" CSI-map))

;; I suggest that someone establish standard mappings for all of
;; the ANSI CSI function keys into the function-keymap.
(if CSI-map
    nil
  (setq CSI-map (make-keymap))		; <ESC>[ commands
  (setup-terminal-keymap CSI-map
	    '(("A" . ?u)	   ; up arrow
	      ("B" . ?d)	   ; down-arrow
	      ("C" . ?r)	   ; right-arrow
	      ("D" . ?l)	   ; left-arrow
	      ("E" . ?C)           ; 5-on keypad 
	      ("F" . ?\C-b)           ; Select
	      ("G" . ?N)	   ; Next Screen
	      ("H" . ?\C-a)	   ; Home
	      ("I" . ?P)	   ; Prev Screen
	      ("L" . ?0)	   ; Insert Here
	      ("M" . ??)	   ; (F1) Help
	      ("N" . ?h) 	   ; F2
	      ("O" . ?s)	   ; F3
	      ("P" . ?\C-h)	   ; F4
	      ("Q" . ?\C-o)	   ; F5
	      ("R" . ?s)	   ; F6
	      ("S" . ?1)           ; F7 
	      ("T" . ?3)	   ; F8
	      ("U" . ?7)           ; F9 
	      ("V" . ?9)	   ; F10
	      ("W" . ESC-prefix)	   ; F11
	      ("X" . ?k)	   ; Re-move
	      ("Y" . ?\C-r)	   ; shift F1
	      ("Z" . ?\C-s)	   ; shift F2
	      ("a" . ?\C-t)	   ; shift F3
	      ("b" . ?\C-t)	   ; shift F3
	      ("c" . ?\C-t)	   ; shift F3
	      ("d" . ?\C-t)	   ; shift F3
	      ("e" . ?\C-t)	   ; shift F3
	      ("f" . ?\C-t)	   ; shift F3
	      ("g" . ?\C-t)	   ; shift F3
	      ("h" . ?\C-t)	   ; shift F3
	      ("i" . ?\C-t)	   ; shift F3
	      ("j" . ?\C-t)	   ; shift F3
	      ("k" . ?x)           ; Do
	      (""))))	   

**** keymap ****
#                                                        alt
# scan                      cntrl          alt    alt   cntrl  lock
# code  base  shift  cntrl  shift   alt   shift  cntrl  shift  state
     0  nop    nop    nop    nop    nop    nop    nop    nop     O
     1  esc    esc    nop    nop    0x9b   0x9b   nop    nop     O
     2  '1'    '!'    nop    nop    0xb1   0xa1   nop    nop     O
     3  '2'    '@'    nul    nul    0xb2   0xc0   0x80   0x80    O
     4  '3'    '#'    nop    nop    0xb3   0xa3   nop    nop     O
     5  '4'    '$'    nop    nop    0xb4   0xa4   nop    nop     O
     6  '5'    '%'    nop    nop    0xb5   0xa5   nop    nop     O
     7  '6'    '^'    rs     rs     0xb6   0xde   0xb3   0xa3    O
     8  '7'    '&'    nop    nop    0xb7   0xa6   nop    nop     O
     9  '8'    '*'    nop    nop    0xb8   0xaa   nop    nop     O
    10  '9'    '('    nop    nop    0xb9   0xa8   nop    nop     O
    11  '0'    ')'    nop    nop    0xb0   0xa9   nop    nop     O
    12  '-'    '_'    ns     ns     0xad   0xdf   0x9f   0x9f    O
    13  '='    '+'    nop    nop    0xbd   0xab   nop    nop     O
    14  bs     bs     del    del    0x88   0x88   0xff   0xff    O
    15  ht     btab   nop    nop    0x89   btab   nop    nop     O
    16  'q'    'Q'    dc1    dc1    0xf1   0xd1   0x91   0x91    C
    17  'w'    'W'    etb    etb    0xf7   0xd7   0x97   0x97    C
    18  'e'    'E'    enq    enq    0xe5   0xc5   0x85   0x85    C
    19  'r'    'R'    dc2    dc2    0xf2   0xd2   0x92   0x92    C
    20  't'    'T'    dc4    dc4    0xf4   0xd4   0x94   0x94    C
    21  'y'    'Y'    em     em     0xf9   0xd9   0x99   0x99    C
    22  'u'    'U'    nak    nak    0xf5   0xd5   0x95   0x95    C
    23  'i'    'I'    ht     ht     0xe9   0xc9   0x89   0x89    C
    24  'o'    'O'    si     si     0xef   0xcf   0x8f   0x8f    C
    25  'p'    'P'    dle    dle    0xf0   0xd0   0x90   0x90    C
    26  '['    '{'    esc    esc    0xdb   0xfb   0x9b   0x9b    O
    27  ']'    '}'    gs     gs     0xdd   0xfd   0x9d   0x9d    O
    28  cr     cr     nl     nl     0x8d   0x8d   0x8a   0x8a    O
    29  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl  lctrl   O
    30  'a'    'A'    soh    soh    0xe1   0xc1   0x81   0x81    C
    31  's'    'S'    dc3    dc3    0xf3   0xd3   0x93   0x93    C
    32  'd'    'D'    eot    eot    0xe4   0xc4   0x84   0x84    C
    33  'f'    'F'    ack    ack    0xe6   0xc6   0x86   0x86    C
    34  'g'    'G'    bel    bel    0xe7   0xc7   0x87   0x87    C
    35  'h'    'H'    bs     bs     0xe8   0xc8   0x88   0x88    C
    36  'j'    'J'    nl     nl     0xea   0xca   0x8a   0x8a    C
    37  'k'    'K'    vt     vt     0xeb   0xcb   0x8b   0x8b    C
    38  'l'    'L'    np     np     0xec   0xcc   0x8c   0x8c    C
    39  ';'    ':'    nop    nop    0xbb   0xba   nop    nop     O
    40  '\''   '"'    nop    nop    0xa7   0xa2   nop    nop     O
    41  '`'    '~'    nop    nop    0xe0   0xfe   nop    nop     O
    42  lshift lshift lshift lshift lshift lshift lshift lshift  O
    43  '\\'   '|'    fs     fs     0xdc   0xfc   0x9c   0x9c    O
    44  'z'    'Z'    sub    sub    0xfa   0xda   0x9a   0x9a    C
    45  'x'    'X'    can    can    0xf8   0xd8   0x98   0x98    C
    46  'c'    'C'    etx    etx    0xe3   0xc3   0x83   0x83    C
    47  'v'    'V'    syn    syn    0xf6   0xd6   0x96   0x96    C
    48  'b'    'B'    stx    stx    0xe2   0xc2   0x82   0x82    C
    49  'n'    'N'    so     so     0xee   0xce   0x8e   0x8e    C
    50  'm'    'M'    cr     cr     0xed   0xcd   0x8d   0x8d    C
    51  ','    '<'    nop    nop    0xac   0xbc   nop    nop     O
    52  '.'    '>'    nop    nop    0xae   0xbe   nop    nop     O
    53  '/'    '?'    nop    nop    0xaf   0xbf   nop    nop     O
    54  rshift rshift rshift rshift rshift rshift rshift rshift  O
    55  '*'    '*'    nscr   nscr   0xaa   0xaa   nscr   nscr    O
    56  lalt   lalt   lalt   lalt   lalt   lalt   lalt   lalt    O
    57  ' '    ' '    ' '    ' '    0xa0   0xa0   0xa0   0xa0    O
    58  clock  clock  clock  clock  clock  clock  clock  clock   O
    59  fkey1  fkey13 fkey25 fkey37 scr1   scr11  scr1   scr11   O
    60  fkey2  fkey14 fkey26 fkey38 scr2   scr12  scr2   scr12   O
    61  fkey3  fkey15 fkey27 fkey39 scr3   scr13  scr3   scr13   O
    62  fkey4  fkey16 fkey28 fkey40 scr4   scr14  scr4   scr14   O
    63  fkey5  fkey17 fkey29 fkey41 scr5   scr15  scr5   scr15   O
    64  fkey6  fkey18 fkey30 fkey42 scr6   scr16  scr6   scr16   O
    65  fkey7  fkey19 fkey31 fkey43 scr7   scr7   scr7   scr7    O
    66  fkey8  fkey20 fkey32 fkey44 scr8   scr8   scr8   scr8    O
    67  fkey9  fkey21 fkey33 fkey45 scr9   scr9   scr9   scr9    O
    68  fkey10 fkey22 fkey34 fkey46 scr10  scr10  scr10  scr10   O
    69  nlock  nlock  dc3    dc3    nlock  nlock  0x93   0x93    O
    70  slock  slock  del    del    slock  slock  0xff   0xff    O
    71  fkey49 '7'    '7'    '7'    0xb7   0xb7   0xb7   0xb7    N
    72  fkey50 '8'    '8'    '8'    0xb8   0xb8   0xb8   0xb8    N
    73  fkey51 '9'    '9'    '9'    0xb9   0xb9   0xb9   0xb9    N
    74  fkey52 '-'    '-'    '-'    0xad   0xad   0xad   0xad    N
    75  fkey53 '4'    '4'    '4'    0xb4   0xb4   0xb4   0xb4    N
    76  fkey54 '5'    '5'    '5'    0xb5   0xb5   0xb5   0xb5    N
    77  fkey55 '6'    '6'    '6'    0xb6   0xb6   0xb6   0xb6    N
    78  fkey56 '+'    '+'    '+'    0xab   0xab   0xab   0xab    N
    79  fkey57 '1'    '1'    '1'    0xb1   0xb1   0xb1   0xb1    N
    80  fkey58 '2'    '2'    '2'    0xb2   0xb2   0xb2   0xb2    N
    81  fkey59 '3'    '3'    '3'    0xb3   0xb3   0xb3   0xb3    N
    82  fkey60 '0'    '0'    '0'    0xb0   0xb0   0xb0   0xb0    N
    83  del    '.'    del    del    0xff   0xff   0xff   0xff    N
    84  nop    nop    nop    nop    nop    nop    nop    nop     O
    85  nop    nop    nop    nop    nop    nop    nop    nop     O
    86  nop    nop    nop    nop    nop    nop    nop    nop     O
    87  fkey11 fkey23 fkey35 fkey47 scr11  scr11  scr11  scr11   O
    88  fkey12 fkey24 fkey36 fkey48 scr12  scr12  scr12  scr12   O
    89  nop    nop    nop    nop    nop    nop    nop    nop     O
    90  nop    nop    nop    nop    nop    nop    nop    nop     O
    91  nop    nop    nop    nop    nop    nop    nop    nop     O
    92  nop    nop    nop    nop    nop    nop    nop    nop     O
    93  nop    nop    nop    nop    nop    nop    nop    nop     O
    94  nop    nop    nop    nop    nop    nop    nop    nop     O
    95  nop    nop    nop    nop    nop    nop    nop    nop     O
    96  fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50  O
    97  fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53  O
    98  fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58  O
    99  fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55  O
   100  fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49  O
   101  fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51  O
   102  fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57  O
   103  fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59  O
   104  fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60  O
   105  del    del    del    del    del    del    del    del     O
   106  fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54 fkey54  O
   107  nop    nop    nop    nop    nop    nop    nop    nop     O
   108  nop    nop    nop    nop    nop    nop    nop    nop     O
   109  nop    nop    nop    nop    nop    nop    nop    nop     O
   110  nop    nop    nop    nop    nop    nop    nop    nop     O
   111  nop    nop    nop    nop    nop    nop    nop    nop     O
   112  nop    nop    nop    nop    nop    nop    nop    nop     O
   113  nop    nop    nop    nop    nop    nop    nop    nop     O
   114  nop    nop    nop    nop    nop    nop    nop    nop     O
   115  nop    nop    nop    nop    nop    nop    nop    nop     O
   116  nop    nop    nop    nop    nop    nop    nop    nop     O
   117  nop    nop    nop    nop    nop    nop    nop    nop     O
   118  nop    nop    nop    nop    nop    nop    nop    nop     O
   119  nop    nop    nop    nop    nop    nop    nop    nop     O
   120  nop    nop    nop    nop    nop    nop    nop    nop     O
   121  nop    nop    nop    nop    nop    nop    nop    nop     O
   122  nop    nop    nop    nop    nop    nop    nop    nop     O
   123  nop    nop    nop    nop    nop    nop    nop    nop     O
   124  nop    nop    nop    nop    nop    nop    nop    nop     O
   125  nop    nop    nop    nop    nop    nop    nop    nop     O
   126  nop    nop    nop    nop    nop    nop    nop    nop     O
   127  nop    nop    nop    nop    nop    nop    nop    nop     O
   128  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl  rctrl   O
   129  ralt   ralt   ralt   ralt   ralt   ralt   ralt   ralt    O
   130  fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60  N
   131  del    del    del    del    del    del    del    del     N
   132  fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49  N
   133  fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57  N
   134  fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51  N
   135  fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59  N
   136  fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55  N
   137  fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53  N
   138  fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50  N
   139  fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58  N
   140  '/'    nop    nop    nop    '/'    nop    nop    nop     N

**** keypad.el ****
;; Terminal-independent keypad and function key bindings.
;; Copyright (C) 1986 Free Software Foundation, Inc.

;; This file is part of GNU Emacs.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY.  No author or distributor
;; accepts responsibility to anyone for the consequences of using it
;; or for whether it serves any particular purpose or works at all,
;; unless he says so in writing.  Refer to the GNU Emacs General Public
;; License for full details.

;; Everyone is granted permission to copy, modify and redistribute
;; GNU Emacs, but only under the conditions described in the
;; GNU Emacs General Public License.   A copy of this license is
;; supposed to have been given to you along with GNU Emacs so you
;; can know your rights and responsibilities.  It should be in a
;; file named COPYING.  Among other things, the copyright notice
;; and this notice must be preserved on all copies.


;; These keys are handled by a two-level process.
;; The first level, terminal-dependent, maps input sequences
;; into the function keys that they represent.
;; The second level, terminal-independent but customized by users,
;; map function keys into meanings.

;; This file takes care of the second level of mapping.
;; The first, terminal-dependent, level is handled by the
;; terminal-specific files term/*.el.

;; The second-level mapping is done by a keymap, function-keymap.
;; Here we document the meanings of the "characters" defined by
;; function-keymap.

;; What do these letters mean?
;; When we say that ``a stands for the clear-all-tabs key'',
;; we mean that you should attach to the letter `a' in function-keymap
;; whatever command you want to be executed when you type the
;; clear-all-tabs key on any terminal.  The terminal-dependent
;; files will attempt to make this work.  If a terminal has no
;; clear-all-tabs key that can be recognized, it makes no difference
;; what binding you give to `a' in function-keymap.

;; a -- clear all tabs key
;; c -- erase key
;; d -- down-arrow
;; e -- enter key
;; f -- find key or search key
;; h -- home-position key
;; k -- delete key or remove key.
;; l -- left-arrow
;; p -- portrait mode
;; q -- landscape mode
;; r -- right-arrow
;; s -- select key
;; t -- clear tab this column key
;; u -- up-arrow
;; x -- do key
;; ? -- help

;; - -- keypad key labelled `-'.
;; . -- keypad key labelled `.'.
;; , -- keypad key labelled `,'.
;; 0 ... 9 -- keypad key labelled with that digit,
;;   but only if that key is not also an arrow key.

;; C-@, C-a, ... C-x -- numbered function keys 0 through 24.
;; These are used for function keys with no labels but numbers,
;; and may also be used for function keys with labels
;; that we have not defined letters for.

;; A -- insert line key
;; C -- clear screen key
;; D -- delete character key.
;; E -- clear to end of line key
;; F -- scroll forward key
;; H -- home-down
;; I -- insert character key
;;       If there is just an "insert" key, it should be this.
;; L -- delete line key
;; M -- exit insert mode key
;; N -- next page key
;; P -- previous page key
;; R -- scroll reverse key
;; S -- clear to end of screen key
;; T -- set tab this column key

(defun keypad-default (char definition)
  (or (lookup-key function-keymap char)
      (define-key function-keymap char definition)))

;; Here are the standard command meanings we give to the various
;; function key names.  Because this file is loaded after the user's
;; init file, we are careful to avoid overriding any definitions
;; already stored in function-keymap by the init file or (less often)
;; by the terminal-specific term/*.el file.

(keypad-default "l" 'backward-char)
(keypad-default "r" 'forward-char)
(keypad-default "D" 'delete-char)
(keypad-default "u" 'previous-line)
(keypad-default "d" 'next-line)
(keypad-default "N" 'scroll-up)
(keypad-default "P" 'scroll-down)
(keypad-default "C" 'recenter)
(keypad-default "?" 'help-for-help)
(keypad-default "s" 'set-mark-command)
(keypad-default "k" 'kill-region)
(keypad-default "f" 're-search-forward)

(keypad-default "\C-a" 'beginning-of-line)
(keypad-default "\C-b" 'end-of-line)
(keypad-default "\C-c" 'isearch-forward)
(keypad-default "\C-d" 'kill-line)

(keypad-default "." 'delete-char)
(keypad-default "0" 'yank)
(keypad-default "e" 'open-line)
(keypad-default "1" 'backward-word)
(keypad-default "3" 'forward-word)
(keypad-default "7" 'backward-paragraph)
(keypad-default "9" 'forward-paragraph)
(keypad-default "h" 'move-to-window-line)

(defun setup-terminal-keymap (map translations)
  "Set up keymap MAP to forward to function-keymap according to TRANSLATIONS.
TRANSLATIONS is an alist; each element of it looks like (FROMSTRING . TOCHAR).
For each such pair, we define the key sequence FROMSTRING in MAP
to forward to the definition of character TOCHAR in function-keymap.
\"Forwarding\" means that subsequent redefinition of TOCHAR in
function-keymap will be seen automatically in MAP as well.

This function is used by files term/*.el to set up the mapping from the
escape sequences sent by function keys on particular terminals (FROMSTRINGs)
into Emacs standard function key slots (TOCHARs).
An actual definition (such as a symbol) may be given in place of TOCHAR.
Generally, MAP is a prefix keymap which will be attached to a key
that is the common prefix sent by all function keys (often ESC O or ESC [)."
  (while translations
    (define-key map (car (car translations))
      (if (numberp (cdr (car translations)))
	  (cons function-keymap (cdr (car translations)))
	(cdr (car translations))))
    (setq translations (cdr translations))))

(defun function-key-sequence (char)
  "Return key sequence for function key that on this terminal
translates into slot CHAR in function-keymap.
Or return nil if there is none."
  (car (where-is-internal (cons function-keymap char) (current-local-map))))

(provide 'keypad)

******************************
Rob LaMoreaux
Heath/Zenith Data Systems
Q.A. Evaluation
(616)-982-3187
..uunet!zds-ux!qaeval!robl
#include <std_disclaimer>