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>