changeset: 5529:3d1f8f0e690f
tag: tip
user: Aidan Kehoe <kehoea(a)parhasard.net>
date: Sat Jun 25 14:00:48 2011 +0100
files: lisp/ChangeLog lisp/gtk-init.el lisp/keymap.el lisp/x-init.el man/ChangeLog
man/lispref/os.texi src/ChangeLog src/console.c src/lisp.h
description:
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 *);
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches