Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!randvax!segue!jim From: jim@segue.segue.com (Jim Balter) Newsgroups: comp.unix.sysv386 Subject: Re: Keypad defs' for EMACS under AT386 terminal type..???? Message-ID: <7356@segue.segue.com> Date: 2 May 91 01:59:10 GMT References: <1991Apr27.191020.500@vax1.mankato.msus.edu> <1991Apr29.204040.14429@jato.jpl.nasa.gov> Reply-To: jim@segue.segue.com (Jim Balter) Organization: Segue Software, Inc. - Santa Monica, CA. +1-213-453-2161 Lines: 75 In article <1991Apr29.204040.14429@jato.jpl.nasa.gov> dave@elxr.jpl.nasa.gov writes: >The problem is, let's say you do a search...and then failing to find >anything you want to use the cursor keys. The darn thing eats the ESC >character (I think it wants to use that character to signify end of >searching) and then the rest of the keycode shows gleefully up in >your edited file. Given the way that GNU emacs handles keys and key maps, I don't think there's anything you can do about this. Incremental search interprets keys at a level lower than the key map, so it will see your arrow or function keys as a series of keystrokes. Here's the at386.el that we use here: ;; Map AT386 function key escape sequences ;; into the standard slots in function-keymap where we can; ;; set up terminal-specific bindings where we must ;; ;; by: JQB, adapted from s4.el (require 'keypad) ;; First, map as many keys as possible to terminal-independent keycaps (defvar META-RB-map nil "The META-RB-map maps the ESC-[ function keys on the AT386 keyboard.") (if (not META-RB-map) (progn (setq META-RB-map (lookup-key global-map "\e[")) (if (not (keymapp META-RB-map)) (setq META-RB-map (make-sparse-keymap))) ;; [ commands (setup-terminal-keymap META-RB-map '( ("A" . ?u) ; up arrow ("B" . ?d) ; down-arrow ("C" . ?r) ; right-arrow ("D" . ?l) ; left-arrow ("U" . ?N) ; 'Page' -> next page ("V" . ?P) ; 'Shift-Page' -> prev page ("H" . ?h) ; 'Home' -> home-key ("@" . ?I) ; 'Ins' -> insert character key ("G" . ?5) ; keypad 5 ("S" . ?-) ; keypad - ("T" . ?+) ; keypad + ("Y" . ?n) ; 'End' (no standard, use n) )) (global-set-key "\e[" META-RB-map))) (defvar META-O-map nil "META-O-map maps the META-O function keys on the AT386 keyboard.") (if (not META-O-map) (progn (setq META-O-map (lookup-key global-map "\eO")) (if (not (keymapp META-O-map)) (setq META-O-map (make-sparse-keymap))) ;; O commands (setup-terminal-keymap META-O-map '( ("P" . ?\C-a) ; 'F1' -> function key 1 ("Q" . ?\C-b) ; 'F2' -> function key 2 ("R" . ?\C-c) ; 'F3' -> function key 3 ("S" . ?\C-d) ; 'F4' -> function key 4 ("T" . ?\C-e) ; 'F5' -> function key 5 ("U" . ?\C-f) ; 'F6' -> function key 6 ("V" . ?\C-g) ; 'F7' -> function key 7 ("W" . ?\C-h) ; 'F8' -> function key 8 ("X" . ?\C-i) ; 'F9' -> function key 9 ("Y" . ?\C-j) ; 'F10' -> function key 10 ("Z" . ?\C-k) ; 'F11' -> function key 11 ("A" . ?\C-l) ; 'F12' -> function key 12 )) (define-key global-map "\eO" META-O-map)))