# HG changeset patch # User Stefan Monnier # Date 1193066415 0 # Node ID aa63a97d09ff8bdcf4c42815e9f2d090118f344c # Parent d3c6c7427cefbad83eddc7ed0035e16113136f6e (wyse50-terminal-map): New var. (terminal-init-wyse50): Use it and input-decode-map. (enable-arrow-keys): Emasculate. diff -r d3c6c7427cef -r aa63a97d09ff lisp/term/wyse50.el --- a/lisp/term/wyse50.el Mon Oct 22 15:17:36 2007 +0000 +++ b/lisp/term/wyse50.el Mon Oct 22 15:20:15 2007 +0000 @@ -38,76 +38,84 @@ ;;; Code: +(defvar wyse50-terminal-map + (let ((map (make-sparse-keymap))) + (dolist (key-definition + '( ;; These might be set up by termcap and terminfo + ("\C-k" [up]) + ("\C-j" [down]) + ("\C-l" [right]) + ("\C-h" [left]) + ("\^a@\^m" [f1]) + ("\^aA\^m" [f2]) + ("\^aB\^m" [f3]) + ("\^aC\^m" [f4]) + ("\^aD\^m" [f5]) + ("\^aE\^m" [f6]) + ("\^aF\^m" [f7]) + ("\^aG\^m" [f8]) + ("\^aH\^m" [f9]) + + ;; These might be set up by terminfo + ("\eK" [next]) + ("\eT" [clearline]) + ("\^^" [home]) + ("\e\^^" [end]) + ("\eQ" [insert]) + ("\eE" [insertline]) + ("\eR" [deleteline]) + ("\eP" [print]) + ("\er" [replace]) + ("\^aI\^m" [f10]) + ("\^aJ\^m" [f11]) + ("\^aK\^m" [f12]) + ("\^aL\^m" [f13]) + ("\^aM\^m" [f14]) + ("\^aN\^m" [f15]) + ("\^aO\^m" [f16]) + ("\^a`\^m" [f17]) + ("\^aa\^m" [f18]) + ("\^ab\^m" [f19]) + ("\^ac\^m" [f20]) + ("\^ad\^m" [f21]) + ("\^ae\^m" [f22]) + ("\^af\^m" [f23]) + ("\^ag\^m" [f24]) + ("\^ah\^m" [f25]) + ("\^ai\^m" [f26]) + ("\^aj\^m" [f27]) + ("\^ak\^m" [f28]) + ("\^al\^m" [f29]) + ("\^am\^m" [f30]) + ("\^an\^m" [f31]) + ("\^ao\^m" [f32]) + + ;; Terminfo may know about these, but X won't + ("\eI" [key-stab]) ;; Not an X keysym + ("\eJ" [key-snext]) ;; Not an X keysym + ("\eY" [key-clear]) ;; Not an X keysym + + ;; These are totally strange :-) + ("\eW" [?\C-?]) ;; Not an X keysym + ("\^a\^k\^m" [funct-up]) ;; Not an X keysym + ("\^a\^j\^m" [funct-down]) ;; Not an X keysym + ("\^a\^l\^m" [funct-right]) ;; Not an X keysym + ("\^a\^h\^m" [funct-left]) ;; Not an X keysym + ("\^a\^m\^m" [funct-return]) ;; Not an X keysym + ("\^a\^i\^m" [funct-tab]) ;; Not an X keysym + )) + (define-key map + (car key-definition) (nth 1 key-definition))) + map)) + (defun terminal-init-wyse50 () "Terminal initialization function for wyse50." - (define-key local-function-key-map "\C-a" (make-keymap)) - (mapcar (function (lambda (key-definition) - (define-key local-function-key-map - (car key-definition) (nth 1 key-definition)))) - '( - ;; These might be set up by termcap and terminfo - ("\C-k" [up]) - ("\C-j" [down]) - ("\C-l" [right]) - ("\C-h" [left]) - ("\^a@\^m" [f1]) - ("\^aA\^m" [f2]) - ("\^aB\^m" [f3]) - ("\^aC\^m" [f4]) - ("\^aD\^m" [f5]) - ("\^aE\^m" [f6]) - ("\^aF\^m" [f7]) - ("\^aG\^m" [f8]) - ("\^aH\^m" [f9]) - - ;; These might be set up by terminfo - ("\eK" [next]) - ("\eT" [clearline]) - ("\^^" [home]) - ("\e\^^" [end]) - ("\eQ" [insert]) - ("\eE" [insertline]) - ("\eR" [deleteline]) - ("\eP" [print]) - ("\er" [replace]) - ("\^aI\^m" [f10]) - ("\^aJ\^m" [f11]) - ("\^aK\^m" [f12]) - ("\^aL\^m" [f13]) - ("\^aM\^m" [f14]) - ("\^aN\^m" [f15]) - ("\^aO\^m" [f16]) - ("\^a`\^m" [f17]) - ("\^aa\^m" [f18]) - ("\^ab\^m" [f19]) - ("\^ac\^m" [f20]) - ("\^ad\^m" [f21]) - ("\^ae\^m" [f22]) - ("\^af\^m" [f23]) - ("\^ag\^m" [f24]) - ("\^ah\^m" [f25]) - ("\^ai\^m" [f26]) - ("\^aj\^m" [f27]) - ("\^ak\^m" [f28]) - ("\^al\^m" [f29]) - ("\^am\^m" [f30]) - ("\^an\^m" [f31]) - ("\^ao\^m" [f32]) - - ;; Terminfo may know about these, but X won't - ("\eI" [key-stab]) ;; Not an X keysym - ("\eJ" [key-snext]) ;; Not an X keysym - ("\eY" [key-clear]) ;; Not an X keysym - - ;; These are totally strange :-) - ("\eW" [?\C-?]) ;; Not an X keysym - ("\^a\^k\^m" [funct-up]) ;; Not an X keysym - ("\^a\^j\^m" [funct-down]) ;; Not an X keysym - ("\^a\^l\^m" [funct-right]) ;; Not an X keysym - ("\^a\^h\^m" [funct-left]) ;; Not an X keysym - ("\^a\^m\^m" [funct-return]) ;; Not an X keysym - ("\^a\^i\^m" [funct-tab]) ;; Not an X keysym - )) + ;; Use inheritance to let the main keymap override these defaults. + ;; This way we don't override terminfo-derived settings or settings + ;; made in the .emacs file. + (let ((m (copy-keymap wyse50-terminal-map))) + (set-keymap-parent m (keymap-parent input-decode-map)) + (set-keymap-parent input-decode-map m)) ;; Miscellaneous hacks @@ -126,29 +134,29 @@ (concat "\ea23R" (1+ (frame-width)) "C\eG0")))))) (defun enable-arrow-keys () - "To be called by term-setup-hook. Overrides 6 Emacs standard keys + "To be called by `term-setup-hook'. Overrides 6 Emacs standard keys whose functions are then typed as follows: C-a Funct Left-arrow C-h M-? LFD Funct Return, some modes override down-arrow via LFD C-k CLR Line C-l Scrn CLR -M-r M-x move-to-window-line, Funct up-arrow or down-arrow are similar -" +M-r M-x move-to-window-line, Funct up-arrow or down-arrow are similar" (interactive) - (mapcar (function (lambda (key-definition) - (global-set-key (car key-definition) - (nth 1 key-definition)))) - ;; By unsetting C-a and then binding it to a prefix, we - ;; allow the rest of the function keys which start with C-a - ;; to be recognized. - '(("\C-a" nil) - ("\C-k" nil) - ("\C-j" nil) - ("\C-l" nil) - ("\C-h" nil) - ("\er" nil))) + ;; Not needed any more now that we use input-decode-map. + ;; (dolist (key-definition + ;; ;; By unsetting C-a and then binding it to a prefix, we + ;; ;; allow the rest of the function keys which start with C-a + ;; ;; to be recognized. + ;; '(("\C-a" nil) + ;; ("\C-k" nil) + ;; ("\C-j" nil) + ;; ("\C-l" nil) + ;; ("\C-h" nil) + ;; ("\er" nil))) + ;; (global-set-key (car key-definition) + ;; (nth 1 key-definition))) (fset 'enable-arrow-keys nil)) -;;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c +;; arch-tag: b6a05d37-eead-4cf6-b997-0f956c68881c ;;; wyse50.el ends here