changeset 112049:4a7382958ef1

* emulation/edt-mapper.el: Override mapping of function keys so that the later call to read-key-sequence works.
author Chong Yidong <cyd@stupidchicken.com>
date Wed, 15 Dec 2010 09:26:56 +0800
parents 916ee043dbcf
children 44c22a3327ec
files lisp/ChangeLog lisp/emulation/edt-mapper.el
diffstat 2 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Dec 13 20:22:49 2010 -0800
+++ b/lisp/ChangeLog	Wed Dec 15 09:26:56 2010 +0800
@@ -1,3 +1,8 @@
+2010-12-15  Kevin Gallagher  <Kevin.Gallagher@boeing.com>
+
+	* emulation/edt-mapper.el: Override mapping of function keys so
+	that the later call to read-key-sequence works.
+
 2010-12-13  Eli Zaretskii  <eliz@gnu.org>
 
 	* mail/smtpmail.el (smtpmail-send-it): Write queued mail body with
--- a/lisp/emulation/edt-mapper.el	Mon Dec 13 20:22:49 2010 -0800
+++ b/lisp/emulation/edt-mapper.el	Wed Dec 15 09:26:56 2010 +0800
@@ -141,6 +141,47 @@
   (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 pressd 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-
+   [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.
 ;;;