X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f49d1f52b2e368ef67dcfececd426de958548f4e..7e09ef09a479731d01b1ca46e94ddadd73ac98e3:/lisp/emulation/edt-mapper.el diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el index 6bf50db544..9e3667e7a8 100644 --- a/lisp/emulation/edt-mapper.el +++ b/lisp/emulation/edt-mapper.el @@ -1,7 +1,6 @@ ;;; edt-mapper.el --- create an EDT LK-201 map file for X-Windows Emacs -;; Copyright (C) 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 2000-2015 Free Software Foundation, Inc. ;; Author: Kevin Gallagher ;; Maintainer: Kevin Gallagher @@ -62,7 +61,7 @@ ;; emacs -q -l edt-mapper.el -;; The "-q" option prevents loading of your .emacs file (commands +;; The "-q" option prevents loading of your init file (commands ;; therein might confuse this program). ;; An instruction screen showing the typical LK-201 terminal @@ -75,7 +74,7 @@ ;; and loaded automatically when the EDT emulation is started. If ;; you specify a different file name, you will need to set the ;; variable "edt-keys-file" before starting the EDT emulation. -;; Here's how you might go about doing that in your .emacs file. +;; Here's how you might go about doing that in your init file: ;; (setq edt-keys-file (expand-file-name "~/.my-emacs-keys")) @@ -97,6 +96,10 @@ ;;; Code: +;; Otherwise it just hangs. This seems preferable. +(if noninteractive + (error "edt-mapper cannot be loaded in batch mode")) + ;;; ;;; Decide Emacs Variant, GNU Emacs or XEmacs (aka Lucid Emacs). ;;; Determine Window System, and X Server Vendor (if appropriate). @@ -141,6 +144,48 @@ (setq edt-term nil) (setq edt-term (getenv "TERM"))) +;;; +;;; Implements a workaround for a feature that was added to simple.el. +;;; +;;; Many function keys have no Emacs functions assigned to them by +;;; default. A subset of these are typically assigned functions in the +;;; EDT emulation. This includes all the keypad keys and a some others +;;; like Delete. +;;; +;;; Logic in simple.el maps some of these unassigned function keys to +;;; ordinary typing keys. Where this is the case, a call to +;;; read-key-sequence, below, does not return the name of the function +;;; key pressed by the user but, instead, it returns the name of the +;;; key to which it has been mapped. It needs to know the name of the +;;; key pressed by the user. As a workaround, we assign a function to +;;; each of the unassigned function keys of interest, here. These +;;; assignments override the mapping to other keys and are only +;;; temporary since, when edt-mapper is finished executing, it causes +;;; Emacs to exit. +;;; + +(mapc + (lambda (function-key) + (if (not (lookup-key (current-global-map) function-key)) + (define-key (current-global-map) function-key 'forward-char))) + '([kp-0] [kp-1] [kp-2] [kp-3] [kp-4] + [kp-5] [kp-6] [kp-7] [kp-8] [kp-9] + [kp-space] + [kp-tab] + [kp-enter] + [kp-multiply] + [kp-add] + [kp-separator] + [kp-subtract] + [kp-decimal] + [kp-divide] + [kp-equal] + [backspace] + [delete] + [tab] + [linefeed] + [clear])) + ;;; ;;; Make sure the window is big enough to display the instructions, ;;; except where window cannot be re-sized. @@ -252,26 +297,26 @@ Here's a picture of the standard LK-201 keypad for reference: - _______________________ _______________________________ - | HELP | DO | | F17 | F18 | F19 | F20 | - | | | | | | | | - |_______|_______________| |_______|_______|_______|_______| - _______________________ _______________________________ - | FIND |INSERT |REMOVE | | PF1 | PF2 | PF3 | PF4 | - | | | | | | | | | - |_______|_______|_______| |_______|_______|_______|_______| - |SELECT |PREVIOU| NEXT | | KP7 | KP8 | KP9 | KP- | - | | | | | | | | | - |_______|_______|_______| |_______|_______|_______|_______| - | UP | | KP4 | KP5 | KP6 | KP, | - | | | | | | | - _______|_______|_______ |_______|_______|_______|_______| - | LEFT | DOWN | RIGHT | | KP1 | KP2 | KP3 | | - | | | | | | | | | - |_______|_______|_______| |_______|_______|_______| KPE | - | KP0 | KPP | | - | | | | - |_______________|_______|_______| + ________________________ _______________________________ + | HELP | DO | | F17 | F18 | F19 | F20 | + | | | | | | | | + |_______|________________| |_______|_______|_______|_______| + ________________________ _______________________________ + | FIND |INSERT |REMOVE | | PF1 | PF2 | PF3 | PF4 | + | | | | | | | | | + |_______|________|_______| |_______|_______|_______|_______| + |SELECT |PREVIOUS|NEXT | | KP7 | KP8 | KP9 | KP- | + | | | | | | | | | + |_______|________|_______| |_______|_______|_______|_______| + | UP | | KP4 | KP5 | KP6 | KP, | + | | | | | | | + _______|________|_______ |_______|_______|_______|_______| + | LEFT | DOWN | RIGHT | | KP1 | KP2 | KP3 | | + | | | | | | | | | + |_______|________|_______| |_______|_______|_______| KPE | + | KP0 | KPP | | + | | | | + |_______________|_______|_______| REMEMBER: JUST PRESS RETURN TO SKIP MAPPING A KEY. @@ -284,20 +329,20 @@ PRESS THE KEY SPECIFIED IN THE MINIBUFFER BELOW. - _______________________ _______________________________ - | HELP | DO | | F17 | F18 | F19 | F20 | - |_______|_______________| |_______|_______|_______|_______| - _______________________ _______________________________ - | FIND |INSERT |REMOVE | | PF1 | PF2 | PF3 | PF4 | - |_______|_______|_______| |_______|_______|_______|_______| - |SELECT |PREVIOU| NEXT | | KP7 | KP8 | KP9 | KP- | - |_______|_______|_______| |_______|_______|_______|_______| - | UP | | KP4 | KP5 | KP6 | KP, | - _______|_______|_______ |_______|_______|_______|_______| - | LEFT | DOWN | RIGHT | | KP1 | KP2 | KP3 | | - |_______|_______|_______| |_______|_______|_______| KPE | - | KP0 | KPP | | - |_______________|_______|_______| + ________________________ _______________________________ + | HELP | DO | | F17 | F18 | F19 | F20 | + |_______|________________| |_______|_______|_______|_______| + ________________________ _______________________________ + | FIND |INSERT |REMOVE | | PF1 | PF2 | PF3 | PF4 | + |_______|________|_______| |_______|_______|_______|_______| + |SELECT |PREVIOUS| NEXT | | KP7 | KP8 | KP9 | KP- | + |_______|________|_______| |_______|_______|_______|_______| + | UP | | KP4 | KP5 | KP6 | KP, | + _______|________|_______ |_______|_______|_______|_______| + | LEFT | DOWN | RIGHT | | KP1 | KP2 | KP3 | | + |_______|________|_______| |_______|_______|_______| KPE | + | KP0 | KPP | | + |_______________|_______|_______| REMEMBER: JUST PRESS RETURN TO SKIP MAPPING A KEY."))) @@ -308,7 +353,7 @@ (defun edt-map-key (ident descrip) (interactive) (if (featurep 'xemacs) - (progn + (progn (setq edt-key-seq (read-key-sequence (format "Press %s%s: " ident descrip))) (setq edt-key (concat "[" (format "%s" (event-key (aref edt-key-seq 0))) "]")) (cond ((not (equal edt-key edt-return)) @@ -505,5 +550,4 @@ (sit-for 600) (kill-emacs t) -;; arch-tag: 9eea59c8-b8b7-4d66-b858-c8920624c518 ;;; edt-mapper.el ends here