APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1309006848 -3600
# Node ID 3d1f8f0e690f27b4b12aa8c8c025fe3da95dbf92
# Parent dc88f282ddc346bc5298a95734012370bea4a430
Add `function-key-map-parent', for non-console-specific `function-key-map'
bindings
src/ChangeLog addition:
2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
* console.c:
* console.c (allocate_console):
* console.c (vars_of_console):
* console.c (complex_vars_of_console):
* lisp.h:
Add a new keymap variable, function-key-map-parent; use it as the
parent of each console-specific function-key-map. This is
appropriate for things like x-compose processing.
lisp/ChangeLog addition:
2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
* gtk-init.el:
* gtk-init.el (make-device-late-gtk-entry-point):
* gtk-init.el (gtk-initialize-compose): Removed.
* keymap.el:
* keymap.el (function-key-map-parent):
* x-init.el (x-initialize-compose): Removed.
* x-init.el (make-device-late-x-entry-point):
Make the bindings for dead-acute and friends in
function-key-map-parent, rather than function-key-map; do this in
keymap.el rather than in window-system-specific code, since the
compose processing is generally useful and not X11-specific.
It's probably reasonable to rename x-compose.el to compose.el at
this point, but I haven't done that.
man/ChangeLog addition:
2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/os.texi (Translating Input):
Document the just-added function-key-map-parent.
diff -r dc88f282ddc3 -r 3d1f8f0e690f lisp/ChangeLog
--- a/lisp/ChangeLog Fri Jun 24 19:59:35 2011 +0100
+++ b/lisp/ChangeLog Sat Jun 25 14:00:48 2011 +0100
@@ -1,3 +1,19 @@
+2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * gtk-init.el:
+ * gtk-init.el (make-device-late-gtk-entry-point):
+ * gtk-init.el (gtk-initialize-compose): Removed.
+ * keymap.el:
+ * keymap.el (function-key-map-parent):
+ * x-init.el (x-initialize-compose): Removed.
+ * x-init.el (make-device-late-x-entry-point):
+ Make the bindings for dead-acute and friends in
+ function-key-map-parent, rather than function-key-map; do this in
+ keymap.el rather than in window-system-specific code, since the
+ compose processing is generally useful and not X11-specific.
+ It's probably reasonable to rename x-compose.el to compose.el at
+ this point, but I haven't done that.
+
2011-06-23 Didier Verna <didier(a)xemacs.org>
From smitchel <smitchel(a)bnin.net>
diff -r dc88f282ddc3 -r 3d1f8f0e690f lisp/gtk-init.el
--- a/lisp/gtk-init.el Fri Jun 24 19:59:35 2011 +0100
+++ b/lisp/gtk-init.el Sat Jun 25 14:00:48 2011 +0100
@@ -109,7 +109,6 @@
(defun make-device-late-gtk-entry-point (device)
"Entry-Point to do any Lisp-level GTK device-specific initialization."
- (gtk-initialize-compose device)
(unless make-device-late-gtk-entry-point-called-p
(setq make-device-late-gtk-entry-point-called-p t)))
@@ -149,120 +148,3 @@
(push '("-geometry" . gtk-init-handle-geometry) command-switch-alist)
-;;; Stuff to get compose keys working on GTK
-(eval-when-compile
- (defmacro gtk-define-dead-key (key map device)
- `(when (gtk-keysym-on-keyboard-p ',key device)
- (define-key function-key-map [,key] ',map))))
-
-(defun gtk-initialize-compose (device)
- "Enable compose processing"
- (autoload 'compose-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-acute-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-grave-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-cedilla-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-diaeresis-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-circumflex-map "gtk-compose" nil t 'keymap)
- (autoload 'compose-tilde-map "gtk-compose" nil t 'keymap)
-
- (when (gtk-keysym-on-keyboard-p 'multi-key device)
- (define-key function-key-map [multi-key] 'compose-map))
-
- ;; The dead keys might really be called just about anything, depending
- ;; on the vendor. MIT thinks that the prefixes are "SunFA_", "D",
and
- ;; "hpmute_" for Sun, DEC, and HP respectively. However, OpenWindows 3
- ;; thinks that the prefixes are "SunXK_FA_", "DXK_", and
"hpXK_mute_".
- ;; And HP (who don't mention Sun and DEC at all) use "XK_mute_".
- ;; Go figure.
-
- ;; Presumably if someone is running OpenWindows, they won't be using
- ;; the DEC or HP keysyms, but if they are defined then that is possible,
- ;; so in that case we accept them all.
-
- ;; If things seem not to be working, you might want to check your
- ;; /usr/lib/X11/XKeysymDB file to see if your vendor has an equally
- ;; mixed up view of what these keys should be called.
-
- ;; Canonical names:
- (gtk-define-dead-key acute compose-acute-map device)
- (gtk-define-dead-key grave compose-grave-map device)
- (gtk-define-dead-key cedilla compose-cedilla-map device)
- (gtk-define-dead-key diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key circumflex compose-circumflex-map device)
- (gtk-define-dead-key tilde compose-tilde-map device)
- (gtk-define-dead-key degree compose-ring-map device)
-
- ;; Sun according to MIT:
- (gtk-define-dead-key SunFA_Acute compose-acute-map device)
- (gtk-define-dead-key SunFA_Grave compose-grave-map device)
- (gtk-define-dead-key SunFA_Cedilla compose-cedilla-map device)
- (gtk-define-dead-key SunFA_Diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key SunFA_Circum compose-circumflex-map device)
- (gtk-define-dead-key SunFA_Tilde compose-tilde-map device)
-
- ;; Sun according to OpenWindows 2:
- (gtk-define-dead-key Dead_Grave compose-grave-map device)
- (gtk-define-dead-key Dead_Circum compose-circumflex-map device)
- (gtk-define-dead-key Dead_Tilde compose-tilde-map device)
-
- ;; Sun according to OpenWindows 3:
- (gtk-define-dead-key SunXK_FA_Acute compose-acute-map device)
- (gtk-define-dead-key SunXK_FA_Grave compose-grave-map device)
- (gtk-define-dead-key SunXK_FA_Cedilla compose-cedilla-map device)
- (gtk-define-dead-key SunXK_FA_Diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key SunXK_FA_Circum compose-circumflex-map device)
- (gtk-define-dead-key SunXK_FA_Tilde compose-tilde-map device)
-
- ;; DEC according to MIT:
- (gtk-define-dead-key Dacute_accent compose-acute-map device)
- (gtk-define-dead-key Dgrave_accent compose-grave-map device)
- (gtk-define-dead-key Dcedilla_accent compose-cedilla-map device)
- (gtk-define-dead-key Dcircumflex_accent compose-circumflex-map device)
- (gtk-define-dead-key Dtilde compose-tilde-map device)
- (gtk-define-dead-key Dring_accent compose-ring-map device)
-
- ;; DEC according to OpenWindows 3:
- (gtk-define-dead-key DXK_acute_accent compose-acute-map device)
- (gtk-define-dead-key DXK_grave_accent compose-grave-map device)
- (gtk-define-dead-key DXK_cedilla_accent compose-cedilla-map device)
- (gtk-define-dead-key DXK_circumflex_accent compose-circumflex-map device)
- (gtk-define-dead-key DXK_tilde compose-tilde-map device)
- (gtk-define-dead-key DXK_ring_accent compose-ring-map device)
-
- ;; HP according to MIT:
- (gtk-define-dead-key hpmute_acute compose-acute-map device)
- (gtk-define-dead-key hpmute_grave compose-grave-map device)
- (gtk-define-dead-key hpmute_diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key hpmute_asciicircum compose-circumflex-map device)
- (gtk-define-dead-key hpmute_asciitilde compose-tilde-map device)
-
- ;; Empirically discovered on Linux XFree86 MetroX:
- (gtk-define-dead-key usldead_acute compose-acute-map device)
- (gtk-define-dead-key usldead_grave compose-grave-map device)
- (gtk-define-dead-key usldead_diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key usldead_asciicircum compose-circumflex-map device)
- (gtk-define-dead-key usldead_asciitilde compose-tilde-map device)
-
- ;; HP according to OpenWindows 3:
- (gtk-define-dead-key hpXK_mute_acute compose-acute-map device)
- (gtk-define-dead-key hpXK_mute_grave compose-grave-map device)
- (gtk-define-dead-key hpXK_mute_diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key hpXK_mute_asciicircum compose-circumflex-map device)
- (gtk-define-dead-key hpXK_mute_asciitilde compose-tilde-map device)
-
- ;; HP according to HP-UX 8.0:
- (gtk-define-dead-key XK_mute_acute compose-acute-map device)
- (gtk-define-dead-key XK_mute_grave compose-grave-map device)
- (gtk-define-dead-key XK_mute_diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key XK_mute_asciicircum compose-circumflex-map device)
- (gtk-define-dead-key XK_mute_asciitilde compose-tilde-map device)
-
- ;; Xfree86 seems to use lower case and a hyphen
- (gtk-define-dead-key dead-acute compose-acute-map device)
- (gtk-define-dead-key dead-grave compose-grave-map device)
- (gtk-define-dead-key dead-cedilla compose-cedilla-map device)
- (gtk-define-dead-key dead-diaeresis compose-diaeresis-map device)
- (gtk-define-dead-key dead-circum compose-circumflex-map device)
- (gtk-define-dead-key dead-circumflex compose-circumflex-map device)
- (gtk-define-dead-key dead-tilde compose-tilde-map device))
-
diff -r dc88f282ddc3 -r 3d1f8f0e690f lisp/keymap.el
--- a/lisp/keymap.el Fri Jun 24 19:59:35 2011 +0100
+++ b/lisp/keymap.el Sat Jun 25 14:00:48 2011 +0100
@@ -510,18 +510,141 @@
(error "Event has no character equivalent: %s" event))))
(vector (intern (concat "" (nreverse list))))))
-;; This looks dirty. The following code should maybe go to another
-;; file, and `create-console-hook' should maybe default to nil.
-(add-hook
- 'create-console-hook
- #'(lambda (console)
- (letf (((selected-console) console))
- (define-key function-key-map [?\C-x ?@ ?h] 'event-apply-hyper-modifier)
- (define-key function-key-map [?\C-x ?@ ?s] 'event-apply-super-modifier)
- (define-key function-key-map [?\C-x ?@ ?m] 'event-apply-meta-modifier)
- (define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier)
- (define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier)
- (define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier)
- (define-key function-key-map [?\C-x ?@ ?k] 'synthesize-keysym))))
+(define-key function-key-map-parent [?\C-x ?@ ?h] 'event-apply-hyper-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?s] 'event-apply-super-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?m] 'event-apply-meta-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?S] 'event-apply-shift-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?c] 'event-apply-control-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?a] 'event-apply-alt-modifier)
+(define-key function-key-map-parent [?\C-x ?@ ?k] 'synthesize-keysym)
+
+;; The autoloads for the compose map, and their bindings in
+;; function-key-map-parent are used by GTK as well as X11. And Julian
+;; Bradfield, at least, uses x-compose on the TTY, it's reasonable to make
+;; them generally available.
+
+(loop for map in '(compose-acute-map compose-breve-map compose-caron-map
+ compose-cedilla-map compose-circumflex-map
+ compose-diaeresis-map compose-dot-map
+ compose-doubleacute-map compose-grave-map
+ compose-hook-map compose-horn-map compose-macron-map
+ compose-map compose-ogonek-map compose-ring-map
+ compose-stroke-map compose-tilde-map)
+ do (autoload map "x-compose" nil t 'keymap))
+
+(loop
+ for (key map)
+ ;; The dead keys might really be called just about anything, depending
+ ;; on the vendor. MIT thinks that the prefixes are "SunFA_", "D",
and
+ ;; "hpmute_" for Sun, DEC, and HP respectively. However, OpenWindows 3
+ ;; thinks that the prefixes are "SunXK_FA_", "DXK_", and
"hpXK_mute_".
+ ;; And HP (who don't mention Sun and DEC at all) use "XK_mute_". Go
+ ;; figure.
+
+ ;; Presumably if someone is running OpenWindows, they won't be using the
+ ;; DEC or HP keysyms, but if they are defined then that is possible, so
+ ;; in that case we accept them all.
+
+ ;; If things seem not to be working, you might want to check your
+ ;; /usr/lib/X11/XKeysymDB file to see if your vendor has an equally
+ ;; mixed up view of what these keys should be called.
+
+ ;; Canonical names:
+ in '((acute compose-acute-map)
+ (grave compose-grave-map)
+ (cedilla compose-cedilla-map)
+ (diaeresis compose-diaeresis-map)
+ (circumflex compose-circumflex-map)
+ (tilde compose-tilde-map)
+ (degree compose-ring-map)
+ (multi-key compose-map)
+
+ ;; Sun according to MIT:
+ (SunFA_Acute compose-acute-map)
+ (SunFA_Grave compose-grave-map)
+ (SunFA_Cedilla compose-cedilla-map)
+ (SunFA_Diaeresis compose-diaeresis-map)
+ (SunFA_Circum compose-circumflex-map)
+ (SunFA_Tilde compose-tilde-map)
+
+ ;; Sun according to OpenWindows 2:
+ (Dead_Grave compose-grave-map)
+ (Dead_Circum compose-circumflex-map)
+ (Dead_Tilde compose-tilde-map)
+
+ ;; Sun according to OpenWindows 3:
+ (SunXK_FA_Acute compose-acute-map)
+ (SunXK_FA_Grave compose-grave-map)
+ (SunXK_FA_Cedilla compose-cedilla-map)
+ (SunXK_FA_Diaeresis compose-diaeresis-map)
+ (SunXK_FA_Circum compose-circumflex-map)
+ (SunXK_FA_Tilde compose-tilde-map)
+
+ ;; DEC according to MIT:
+ (Dacute_accent compose-acute-map)
+ (Dgrave_accent compose-grave-map)
+ (Dcedilla_accent compose-cedilla-map)
+ (Dcircumflex_accent compose-circumflex-map)
+ (Dtilde compose-tilde-map)
+ (Dring_accent compose-ring-map)
+
+ ;; DEC according to OpenWindows 3:
+ (DXK_acute_accent compose-acute-map)
+ (DXK_grave_accent compose-grave-map)
+ (DXK_cedilla_accent compose-cedilla-map)
+ (DXK_circumflex_accent compose-circumflex-map)
+ (DXK_tilde compose-tilde-map)
+ (DXK_ring_accent compose-ring-map)
+
+ ;; HP according to MIT:
+ (hpmute_acute compose-acute-map)
+ (hpmute_grave compose-grave-map)
+ (hpmute_diaeresis compose-diaeresis-map)
+ (hpmute_asciicircum compose-circumflex-map)
+ (hpmute_asciitilde compose-tilde-map)
+
+ ;; Empirically discovered on Linux XFree86 MetroX:
+ (usldead_acute compose-acute-map)
+ (usldead_grave compose-grave-map)
+ (usldead_diaeresis compose-diaeresis-map)
+ (usldead_asciicircum compose-circumflex-map)
+ (usldead_asciitilde compose-tilde-map)
+
+ ;; HP according to OpenWindows 3:
+ (hpXK_mute_acute compose-acute-map)
+ (hpXK_mute_grave compose-grave-map)
+ (hpXK_mute_diaeresis compose-diaeresis-map)
+ (hpXK_mute_asciicircum compose-circumflex-map)
+ (hpXK_mute_asciitilde compose-tilde-map)
+
+ ;; HP according to HP-UX 8.0:
+ (XK_mute_acute compose-acute-map)
+ (XK_mute_grave compose-grave-map)
+ (XK_mute_diaeresis compose-diaeresis-map)
+ (XK_mute_asciicircum compose-circumflex-map)
+ (XK_mute_asciitilde compose-tilde-map)
+
+ ;; XFree86 uses lower case and an underscore. XEmacs converts the
+ ;; underscore to a hyphen in x_keysym_to_emacs_keysym because the
+ ;; keysym is in the "Keyboard" character set, which seems a very
+ ;; arbitrary approach.
+ (dead-acute compose-acute-map)
+ (dead-grave compose-grave-map)
+ (dead-cedilla compose-cedilla-map)
+ (dead-diaeresis compose-diaeresis-map)
+ (dead-circum compose-circumflex-map)
+ (dead-circumflex compose-circumflex-map)
+ (dead-tilde compose-tilde-map)
+ (dead-abovering compose-ring-map)
+ (dead-caron compose-caron-map)
+ (dead-macron compose-macron-map)
+ (dead-breve compose-breve-map)
+ (dead-abovedot compose-dot-map)
+ (dead-doubleacute compose-doubleacute-map)
+ (dead-ogonek compose-ogonek-map)
+ (dead-hook compose-hook-map)
+ (dead-horn compose-horn-map)
+ (dead-stroke compose-stroke-map))
+ do (define-key function-key-map-parent (vector key) map))
;;; keymap.el ends here
diff -r dc88f282ddc3 -r 3d1f8f0e690f lisp/x-init.el
--- a/lisp/x-init.el Fri Jun 24 19:59:35 2011 +0100
+++ b/lisp/x-init.el Sat Jun 25 14:00:48 2011 +0100
@@ -79,143 +79,6 @@
(interactive)
(ow-find t))
-;; Load X-server specific code.
-;; Specifically, load some code to repair the grievous damage that MIT and
-;; Sun have done to the default keymap for the Sun keyboards.
-(defun x-initialize-compose (device)
- "Enable compose key and dead key processing on DEVICE."
- (loop for map in '(compose-map compose-acute-map compose-grave-map
- compose-cedilla-map compose-diaeresis-map
- compose-circumflex-map compose-tilde-map
- compose-ring-map compose-caron-map compose-macron-map
- compose-breve-map compose-dot-map
- compose-doubleacute-map compose-ogonek-map
- compose-hook-map compose-horn-map compose-stroke-map)
- do (autoload map "x-compose" nil t 'keymap))
-
- (loop
- for (key map)
- ;; The dead keys might really be called just about anything, depending
- ;; on the vendor. MIT thinks that the prefixes are "SunFA_",
"D", and
- ;; "hpmute_" for Sun, DEC, and HP respectively. However, OpenWindows 3
- ;; thinks that the prefixes are "SunXK_FA_", "DXK_", and
"hpXK_mute_".
- ;; And HP (who don't mention Sun and DEC at all) use "XK_mute_". Go
- ;; figure.
-
- ;; Presumably if someone is running OpenWindows, they won't be using the
- ;; DEC or HP keysyms, but if they are defined then that is possible, so
- ;; in that case we accept them all.
-
- ;; If things seem not to be working, you might want to check your
- ;; /usr/lib/X11/XKeysymDB file to see if your vendor has an equally
- ;; mixed up view of what these keys should be called.
-
- ;; Canonical names:
- in '((acute compose-acute-map)
- (grave compose-grave-map)
- (cedilla compose-cedilla-map)
- (diaeresis compose-diaeresis-map)
- (circumflex compose-circumflex-map)
- (tilde compose-tilde-map)
- (degree compose-ring-map)
- (multi-key compose-map)
-
- ;; Sun according to MIT:
- (SunFA_Acute compose-acute-map)
- (SunFA_Grave compose-grave-map)
- (SunFA_Cedilla compose-cedilla-map)
- (SunFA_Diaeresis compose-diaeresis-map)
- (SunFA_Circum compose-circumflex-map)
- (SunFA_Tilde compose-tilde-map)
-
- ;; Sun according to OpenWindows 2:
- (Dead_Grave compose-grave-map)
- (Dead_Circum compose-circumflex-map)
- (Dead_Tilde compose-tilde-map)
-
- ;; Sun according to OpenWindows 3:
- (SunXK_FA_Acute compose-acute-map)
- (SunXK_FA_Grave compose-grave-map)
- (SunXK_FA_Cedilla compose-cedilla-map)
- (SunXK_FA_Diaeresis compose-diaeresis-map)
- (SunXK_FA_Circum compose-circumflex-map)
- (SunXK_FA_Tilde compose-tilde-map)
-
- ;; DEC according to MIT:
- (Dacute_accent compose-acute-map)
- (Dgrave_accent compose-grave-map)
- (Dcedilla_accent compose-cedilla-map)
- (Dcircumflex_accent compose-circumflex-map)
- (Dtilde compose-tilde-map)
- (Dring_accent compose-ring-map)
-
- ;; DEC according to OpenWindows 3:
- (DXK_acute_accent compose-acute-map)
- (DXK_grave_accent compose-grave-map)
- (DXK_cedilla_accent compose-cedilla-map)
- (DXK_circumflex_accent compose-circumflex-map)
- (DXK_tilde compose-tilde-map)
- (DXK_ring_accent compose-ring-map)
-
- ;; HP according to MIT:
- (hpmute_acute compose-acute-map)
- (hpmute_grave compose-grave-map)
- (hpmute_diaeresis compose-diaeresis-map)
- (hpmute_asciicircum compose-circumflex-map)
- (hpmute_asciitilde compose-tilde-map)
-
- ;; Empirically discovered on Linux XFree86 MetroX:
- (usldead_acute compose-acute-map)
- (usldead_grave compose-grave-map)
- (usldead_diaeresis compose-diaeresis-map)
- (usldead_asciicircum compose-circumflex-map)
- (usldead_asciitilde compose-tilde-map)
-
- ;; HP according to OpenWindows 3:
- (hpXK_mute_acute compose-acute-map)
- (hpXK_mute_grave compose-grave-map)
- (hpXK_mute_diaeresis compose-diaeresis-map)
- (hpXK_mute_asciicircum compose-circumflex-map)
- (hpXK_mute_asciitilde compose-tilde-map)
-
- ;; HP according to HP-UX 8.0:
- (XK_mute_acute compose-acute-map)
- (XK_mute_grave compose-grave-map)
- (XK_mute_diaeresis compose-diaeresis-map)
- (XK_mute_asciicircum compose-circumflex-map)
- (XK_mute_asciitilde compose-tilde-map)
-
- ;; [[ XFree86 seems to use lower case and a hyphen ]] Not true;
- ;; they use lower case and an underscore. XEmacs converts the
- ;; underscore to a hyphen in x_keysym_to_emacs_keysym because the
- ;; keysym is in the "Keyboard" character set, which is just totally
- ;; fucking random, considering it doesn't happen for any other
- ;; character sets.
- (dead-acute compose-acute-map)
- (dead-grave compose-grave-map)
- (dead-cedilla compose-cedilla-map)
- (dead-diaeresis compose-diaeresis-map)
- (dead-circum compose-circumflex-map)
- (dead-circumflex compose-circumflex-map)
- (dead-tilde compose-tilde-map)
- (dead-abovering compose-ring-map)
- (dead-caron compose-caron-map)
- (dead-macron compose-macron-map)
- (dead-breve compose-breve-map)
- (dead-abovedot compose-dot-map)
- (dead-doubleacute compose-doubleacute-map)
- (dead-ogonek compose-ogonek-map)
- (dead-hook compose-hook-map)
- (dead-horn compose-horn-map)
- (dead-stroke compose-stroke-map))
-
- ;; Get the correct value for function-key-map
- with function-key-map = (symbol-value-in-console 'function-key-map
- (device-console device)
- function-key-map)
- do (when (x-keysym-on-keyboard-p key device)
- (define-key function-key-map (vector key) map))))
-
(eval-when-compile
(load "x-win-sun" nil t)
(load "x-win-xfree86" nil t))
@@ -291,7 +154,6 @@
"Entry point to do any Lisp-level X device-specific initialization."
;; General code, called on every X device created:
(x-initialize-keyboard device)
- (x-initialize-compose device)
;; And the following code is to be called once, the first time an X11
;; device is created:
(unless make-device-late-x-entry-point-called-p
diff -r dc88f282ddc3 -r 3d1f8f0e690f man/ChangeLog
--- a/man/ChangeLog Fri Jun 24 19:59:35 2011 +0100
+++ b/man/ChangeLog Sat Jun 25 14:00:48 2011 +0100
@@ -1,3 +1,8 @@
+2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/os.texi (Translating Input):
+ Document the just-added function-key-map-parent.
+
2011-05-20 Jerry James <james(a)xemacs.org>
* Makefile (DESTDIR): New variable for all Makefiles, unused in this
diff -r dc88f282ddc3 -r 3d1f8f0e690f man/lispref/os.texi
--- a/man/lispref/os.texi Fri Jun 24 19:59:35 2011 +0100
+++ b/man/lispref/os.texi Sat Jun 25 14:00:48 2011 +0100
@@ -1301,10 +1301,10 @@
@end ignore
@defvar function-key-map
-This variable holds a keymap that describes the character sequences
-sent by function keys on an ordinary character terminal. This keymap
-uses the same data structure as other keymaps, but is used differently: it
-specifies translations to make while reading events.
+This console-local variable holds a keymap that describes the character
+sequences sent by function keys on an ordinary character terminal. This
+keymap uses the same data structure as other keymaps, but is used
+differently: it specifies translations to make while reading events.
If @code{function-key-map} ``binds'' a key sequence @var{k} to a vector
@var{v}, then when @var{k} appears as a subsequence @emph{anywhere} in a
@@ -1337,6 +1337,14 @@
the character sequences that represent function keys.
@end defvar
+@defvar function-key-map-parent
+The parent keymap of @code{function-key-map} is a non-console-local keymap,
+@code{function-key-map-parent}, and any additions to
+@code{function-key-map} that are not specific to a given console should
+normally go into @code{function-key-map-parent} rather than
+@code{function-key-map}.
+@end defvar
+
@defvar key-translation-map
This variable is another keymap used just like @code{function-key-map}
to translate input events into other events. It differs from
diff -r dc88f282ddc3 -r 3d1f8f0e690f src/ChangeLog
--- a/src/ChangeLog Fri Jun 24 19:59:35 2011 +0100
+++ b/src/ChangeLog Sat Jun 25 14:00:48 2011 +0100
@@ -1,3 +1,14 @@
+2011-06-25 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * console.c:
+ * console.c (allocate_console):
+ * console.c (vars_of_console):
+ * console.c (complex_vars_of_console):
+ * lisp.h:
+ Add a new keymap variable, function-key-map-parent; use it as the
+ parent of each console-specific function-key-map. This is
+ appropriate for things like x-compose processing.
+
2011-06-19 Aidan Kehoe <kehoea(a)parhasard.net>
* fns.c:
diff -r dc88f282ddc3 -r 3d1f8f0e690f src/console.c
--- a/src/console.c Fri Jun 24 19:59:35 2011 +0100
+++ b/src/console.c Sat Jun 25 14:00:48 2011 +0100
@@ -45,6 +45,8 @@
Lisp_Object Vcreate_console_hook, Vdelete_console_hook;
+Lisp_Object Vfunction_key_map_parent;
+
Lisp_Object Qconsolep, Qconsole_live_p;
Lisp_Object Qcreate_console_hook;
Lisp_Object Qdelete_console_hook;
@@ -203,6 +205,7 @@
con->contype = get_console_variant (type);
con->command_builder = allocate_command_builder (console, 1);
con->function_key_map = Fmake_sparse_keymap (Qnil);
+ Fset_keymap_parents (con->function_key_map, Vfunction_key_map_parent);
set_quit_events (con, make_char (7)); /* C-g */
UNGCPRO;
@@ -1306,6 +1309,15 @@
*/ );
Vdelete_console_hook = Qnil;
+ DEFVAR_LISP ("function-key-map-parent", &Vfunction_key_map_parent /*
+Parent keymap for `function-key-map'.
+
+This keymap is appropriate for bindings that are not console-specific, but
+yet should take advantage of the substitution made by `read-key-sequence'
+for bindings in `function-key-map'.
+*/ );
+ Vfunction_key_map_parent = Fmake_sparse_keymap (Qnil);
+
#ifdef HAVE_WINDOW_SYSTEM
Fprovide (intern ("window-system"));
#endif
@@ -1530,6 +1542,11 @@
\[#<keypress-event control-X> #<keypress-event f1>]. If [f1]
were a prefix key, typing `ESC O P x' would return
\[#<keypress-event f1> #<keypress-event x>].
+
+The parent keymap of `function-key-map' when created is
+`function-key-map-parent', which is not a console-local variable. Bindings
+appropriate for `function-key-map' but which are likely to be relevant to
+every created console should be created in `function-key-map-parent'.
*/ );
#ifdef HAVE_TTY
diff -r dc88f282ddc3 -r 3d1f8f0e690f src/lisp.h
--- a/src/lisp.h Fri Jun 24 19:59:35 2011 +0100
+++ b/src/lisp.h Sat Jun 25 14:00:48 2011 +0100
@@ -5418,6 +5418,7 @@
EXFUN (Fkey_description, 1);
EXFUN (Flookup_key, 3);
EXFUN (Fmake_sparse_keymap, 1);
+EXFUN (Fset_keymap_parents, 2);
void where_is_to_char (Lisp_Object, Eistring *);
--
‘Iodine deficiency was endemic in parts of the UK until, through what has been
described as “an unplanned and accidental public health triumph”, iodine was
added to cattle feed to improve milk production in the 1930s.’
(EN Pearce, Lancet, June 2011)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches