diff lisp/x-compose.el @ 2828:a25c824ed558

[xemacs-hg @ 2005-06-26 18:04:49 by aidan] Rename the ascii-character property, support more keysyms.
author aidan
date Sun, 26 Jun 2005 18:05:05 +0000
parents 3ecd8885ac67
children 8f07ad760f0f
line wrap: on
line diff
--- a/lisp/x-compose.el	Sat Jun 25 21:51:12 2005 +0000
+++ b/lisp/x-compose.el	Sun Jun 26 18:05:05 2005 +0000
@@ -1,6 +1,6 @@
 ;;; x-compose.el --- Compose-key processing in XEmacs
 
-;; Copyright (C) 1992, 1993, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1993, 1997, 2005 Free Software Foundation, Inc.
 
 ;; Author: Jamie Zawinski <jwz@jwz.org>
 ;; Maintainer: XEmacs Development Team
@@ -100,9 +100,11 @@
 ;; not have: at any point you can type C-h to get a list of the possible
 ;; completions of what you have typed so far.
 
-;;; Code:
+;; Giacomo Boffi's problem of
+;; 20050324103919.8D22E4901@boffi95.stru.polimi.it is caused by Xlib doing
+;; the compose processing. To turn that off, I'm not certain what's 
 
-(require 'x-iso8859-1)
+;;; Code:
 
 (macrolet
     ((define-compose-map (keymap-symbol)
@@ -157,85 +159,113 @@
 ;;; The contents of the "dead key" maps.  These are shared by the
 ;;; compose-map.
 
+;;; These used to all have nice readable X11-oriented keysym names as the
+;;; macro definition in the third argument, but I moved the interpretation
+;;; of those mappings (that is, Aacute to \301, &c.) to runtime in the X11
+;;; code on first sight of the symbols--which is the more general solution,
+;;; what with Unicode keysyms, publishing, technical and so on, there's no
+;;; need to have them hanging around as symbols all the time--so they're no
+;;; longer available to Lisp before X11 sees them, something this relied on.
+
+;;; The transformation was done like so;
+
+;;;   (while (re-search-forward "\\[\\([a-zA-Z]+\\)\\])$" nil t)
+;;;     (replace-match (format "(?\\%o)" 
+;;;		   (get (intern (match-string 1)) 'character-of-keysym))
+;;;		 t t nil 1))
+ 
+;;; with a lot of repeated calling of setxkbmap to esoteric keymaps--so
+;;; x_reset_key_mapping gets called for all the keys on the keyboard--yacute
+;;; getting picked up from the Czech keymap, idiaeresis from the Dutch one,
+;;; and many more (al, ca, cz, de, dvorak, ee, es, fi, fr, hu,
+;;; ie(UnicodeExpert), it, nl, pt, ro, tr, us, vn, if it interests you.)
+
+;;; The parentheses inside the vector are because otherwise the macro gets
+;;; interpreted as a meta character, the Latin-1 codes being in exactly that
+;;; range. Perhaps that bears documenting somewhere. Also, why is help
+;;; turned off for these (x-compose) sequences by default?
+
+;;; (Aidan Kehoe, 2005-05-18)
+
 (define-key compose-acute-map [space]	"'")
-(define-key compose-acute-map [?']	[acute])
-(define-key compose-acute-map [?A]	[Aacute])
-(define-key compose-acute-map [E]	[Eacute])
-(define-key compose-acute-map [I]	[Iacute])
-(define-key compose-acute-map [O]	[Oacute])
-(define-key compose-acute-map [U]	[Uacute])
-(define-key compose-acute-map [Y]	[Yacute])
-(define-key compose-acute-map [a]	[aacute])
-(define-key compose-acute-map [e]	[eacute])
-(define-key compose-acute-map [i]	[iacute])
-(define-key compose-acute-map [o]	[oacute])
-(define-key compose-acute-map [u]	[uacute])
-(define-key compose-acute-map [y]	[yacute])
+(define-key compose-acute-map [?']	[(?\264)])
+(define-key compose-acute-map [?A]	[(?\301)])
+(define-key compose-acute-map [E]	[(?\311)])
+(define-key compose-acute-map [I]	[(?\315)])
+(define-key compose-acute-map [O]	[(?\323)])
+(define-key compose-acute-map [U]	[(?\332)])
+(define-key compose-acute-map [Y]	[(?\335)])
+(define-key compose-acute-map [a]	[(?\341)])
+(define-key compose-acute-map [e]	[(?\351)])
+(define-key compose-acute-map [i]	[(?\355)])
+(define-key compose-acute-map [o]	[(?\363)])
+(define-key compose-acute-map [u]	[(?\372)])
+(define-key compose-acute-map [y]	[(?\375)])
 
 (define-key compose-grave-map [space]	"`")
-(define-key compose-grave-map [?`]	[grave])
-(define-key compose-grave-map [A]	[Agrave])
-(define-key compose-grave-map [E]	[Egrave])
-(define-key compose-grave-map [I]	[Igrave])
-(define-key compose-grave-map [O]	[Ograve])
-(define-key compose-grave-map [U]	[Ugrave])
-(define-key compose-grave-map [a]	[agrave])
-(define-key compose-grave-map [e]	[egrave])
-(define-key compose-grave-map [i]	[igrave])
-(define-key compose-grave-map [o]	[ograve])
-(define-key compose-grave-map [u]	[ugrave])
+(define-key compose-grave-map [?`]	[(?\140)])
+(define-key compose-grave-map [A]	[(?\300)])
+(define-key compose-grave-map [E]	[(?\310)])
+(define-key compose-grave-map [I]	[(?\314)])
+(define-key compose-grave-map [O]	[(?\322)])
+(define-key compose-grave-map [U]	[(?\331)])
+(define-key compose-grave-map [a]	[(?\340)])
+(define-key compose-grave-map [e]	[(?\350)])
+(define-key compose-grave-map [i]	[(?\354)])
+(define-key compose-grave-map [o]	[(?\362)])
+(define-key compose-grave-map [u]	[(?\371)])
 
 (define-key compose-cedilla-map [space]	",")
-(define-key compose-cedilla-map [?,]	[cedilla])
-(define-key compose-cedilla-map [C]	[Ccedilla])
-(define-key compose-cedilla-map [c]	[ccedilla])
+(define-key compose-cedilla-map [?,]	[(?\270)])
+(define-key compose-cedilla-map [C]	[(?\307)])
+(define-key compose-cedilla-map [c]	[(?\347)])
 
-(define-key compose-diaeresis-map [space] [diaeresis])
-(define-key compose-diaeresis-map [?\"]	[diaeresis])
-(define-key compose-diaeresis-map [A]	[Adiaeresis])
-(define-key compose-diaeresis-map [E]	[Ediaeresis])
-(define-key compose-diaeresis-map [I]	[Idiaeresis])
-(define-key compose-diaeresis-map [O]	[Odiaeresis])
-(define-key compose-diaeresis-map [U]	[Udiaeresis])
-(define-key compose-diaeresis-map [a]	[adiaeresis])
-(define-key compose-diaeresis-map [e]	[ediaeresis])
-(define-key compose-diaeresis-map [i]	[idiaeresis])
-(define-key compose-diaeresis-map [o]	[odiaeresis])
-(define-key compose-diaeresis-map [u]	[udiaeresis])
-(define-key compose-diaeresis-map [y]	[ydiaeresis])
+(define-key compose-diaeresis-map [space] [(?\250)])
+(define-key compose-diaeresis-map [?\"]	[(?\250)])
+(define-key compose-diaeresis-map [A]	[(?\304)])
+(define-key compose-diaeresis-map [E]	[(?\313)])
+(define-key compose-diaeresis-map [I]	[(?\317)])
+(define-key compose-diaeresis-map [O]	[(?\326)])
+(define-key compose-diaeresis-map [U]	[(?\334)])
+(define-key compose-diaeresis-map [a]	[(?\344)])
+(define-key compose-diaeresis-map [e]	[(?\353)])
+(define-key compose-diaeresis-map [i]	[(?\357)])
+(define-key compose-diaeresis-map [o]	[(?\366)])
+(define-key compose-diaeresis-map [u]	[(?\374)])
+(define-key compose-diaeresis-map [y]	[(?\377)])
 
 (define-key compose-circumflex-map [space] "^")
 (define-key compose-circumflex-map [?/]	"|")
-(define-key compose-circumflex-map [?!]	[brokenbar])
-(define-key compose-circumflex-map [?-]	[macron])
-(define-key compose-circumflex-map [?_]	[macron])
-(define-key compose-circumflex-map [?0]	[degree])
-(define-key compose-circumflex-map [?1]	[onesuperior])
-(define-key compose-circumflex-map [?2]	[twosuperior])
-(define-key compose-circumflex-map [?3]	[threesuperior])
-(define-key compose-circumflex-map [?.]	[periodcentered])
-(define-key compose-circumflex-map [A]	[Acircumflex])
-(define-key compose-circumflex-map [E]	[Ecircumflex])
-(define-key compose-circumflex-map [I]	[Icircumflex])
-(define-key compose-circumflex-map [O]	[Ocircumflex])
-(define-key compose-circumflex-map [U]	[Ucircumflex])
-(define-key compose-circumflex-map [a]	[acircumflex])
-(define-key compose-circumflex-map [e]	[ecircumflex])
-(define-key compose-circumflex-map [i]	[icircumflex])
-(define-key compose-circumflex-map [o]	[ocircumflex])
-(define-key compose-circumflex-map [u]	[ucircumflex])
+(define-key compose-circumflex-map [?!]	[(?\246)])
+(define-key compose-circumflex-map [?-]	[(?\257)])
+(define-key compose-circumflex-map [?_]	[(?\257)])
+(define-key compose-circumflex-map [?0]	[(?\260)])
+(define-key compose-circumflex-map [?1]	[(?\271)])
+(define-key compose-circumflex-map [?2]	[(?\262)])
+(define-key compose-circumflex-map [?3]	[(?\263)])
+(define-key compose-circumflex-map [?.]	[(?\267)])
+(define-key compose-circumflex-map [A]	[(?\302)])
+(define-key compose-circumflex-map [E]	[(?\312)])
+(define-key compose-circumflex-map [I]	[(?\316)])
+(define-key compose-circumflex-map [O]	[(?\324)])
+(define-key compose-circumflex-map [U]	[(?\333)])
+(define-key compose-circumflex-map [a]	[(?\342)])
+(define-key compose-circumflex-map [e]	[(?\352)])
+(define-key compose-circumflex-map [i]	[(?\356)])
+(define-key compose-circumflex-map [o]	[(?\364)])
+(define-key compose-circumflex-map [u]	[(?\373)])
 
 (define-key compose-tilde-map [space]	"~")
-(define-key compose-tilde-map [A]	[Atilde])
-(define-key compose-tilde-map [N]	[Ntilde])
-(define-key compose-tilde-map [O]	[Otilde])
-(define-key compose-tilde-map [a]	[atilde])
-(define-key compose-tilde-map [n]	[ntilde])
-(define-key compose-tilde-map [o]	[otilde])
+(define-key compose-tilde-map [A]	[(?\303)])
+(define-key compose-tilde-map [N]	[(?\321)])
+(define-key compose-tilde-map [O]	[(?\325)])
+(define-key compose-tilde-map [a]	[(?\343)])
+(define-key compose-tilde-map [n]	[(?\361)])
+(define-key compose-tilde-map [o]	[(?\365)])
 
-(define-key compose-ring-map [space]	[degree])
-(define-key compose-ring-map [A]	[Aring])
-(define-key compose-ring-map [a]	[aring])
+(define-key compose-ring-map [space]	[(?\260)])
+(define-key compose-ring-map [A]	[(?\305)])
+(define-key compose-ring-map [a]	[(?\345)])
 
 
 ;;; The rest of the compose-map.  These are the composed characters
@@ -245,17 +275,17 @@
 (define-key compose-map " ^"	"^")
 (define-key compose-map " `"	"`")
 (define-key compose-map " ~"	"~")
-(define-key compose-map "  "	[nobreakspace])
-(define-key compose-map " \""	[diaeresis])
-(define-key compose-map " :"	[diaeresis])
-(define-key compose-map " *"	[degree])
+(define-key compose-map "  "	[(?\240)])
+(define-key compose-map " \""	[(?\250)])
+(define-key compose-map " :"	[(?\250)])
+(define-key compose-map " *"	[(?\260)])
 
-(define-key compose-map "!!"	[exclamdown])
-(define-key compose-map "!^"	[brokenbar])
-(define-key compose-map "!S"	[section])
-(define-key compose-map "!s"	[section])
-(define-key compose-map "!P"	[paragraph])
-(define-key compose-map "!p"	[paragraph])
+(define-key compose-map "!!"	[(?\241)])
+(define-key compose-map "!^"	[(?\246)])
+(define-key compose-map "!S"	[(?\247)])
+(define-key compose-map "!s"	[(?\247)])
+(define-key compose-map "!P"	[(?\266)])
+(define-key compose-map "!p"	[(?\266)])
 
 (define-key compose-map "(("	"[")
 (define-key compose-map "(-"	"{")
@@ -264,242 +294,242 @@
 (define-key compose-map ")-"	"}")
 
 (define-key compose-map "++"	"#")
-(define-key compose-map "+-"	[plusminus])
+(define-key compose-map "+-"	[(?\261)])
 
 (define-key compose-map "-("	"{")
 (define-key compose-map "-)"	"}")
 (define-key compose-map "--"	"-")
-(define-key compose-map "-L"	[sterling])
-(define-key compose-map "-l"	[sterling])
-(define-key compose-map "-Y"	[yen])
-(define-key compose-map "-y"	[yen])
-(define-key compose-map "-,"	[notsign])
-(define-key compose-map "-|"	[notsign])
-(define-key compose-map "-^"	[macron])
-(define-key compose-map "-+"	[plusminus])
-(define-key compose-map "-:"	[division])
-(define-key compose-map "-D"	[ETH])
-(define-key compose-map "-d"	[eth])
-(define-key compose-map "-a"    [ordfeminine])
+(define-key compose-map "-L"	[(?\243)])
+(define-key compose-map "-l"	[(?\243)])
+(define-key compose-map "-Y"	[(?\245)])
+(define-key compose-map "-y"	[(?\245)])
+(define-key compose-map "-,"	[(?\254)])
+(define-key compose-map "-|"	[(?\254)])
+(define-key compose-map "-^"	[(?\257)])
+(define-key compose-map "-+"	[(?\261)])
+(define-key compose-map "-:"	[(?\367)])
+(define-key compose-map "-D"	[(?\320)])
+(define-key compose-map "-d"	[(?\360)])
+(define-key compose-map "-a"    [(?\252)])
 
-(define-key compose-map ".^"	[periodcentered])
+(define-key compose-map ".^"	[(?\267)])
 
 (define-key compose-map "//"	"\\")
 (define-key compose-map "/<"	"\\")
 (define-key compose-map "/^"	"|")
-(define-key compose-map "/C"	[cent])
-(define-key compose-map "/c"	[cent])
-(define-key compose-map "/U"	[mu])
-(define-key compose-map "/u"	[mu])
-(define-key compose-map "/O"	[Ooblique])
-(define-key compose-map "/o"	[oslash])
+(define-key compose-map "/C"	[(?\242)])
+(define-key compose-map "/c"	[(?\242)])
+(define-key compose-map "/U"	[(?\265)])
+(define-key compose-map "/u"	[(?\265)])
+(define-key compose-map "/O"	[(?\330)])
+(define-key compose-map "/o"	[(?\370)])
 
-(define-key compose-map "0X"	[currency])
-(define-key compose-map "0x"	[currency])
-(define-key compose-map "0S"	[section])
-(define-key compose-map "0s"	[section])
-(define-key compose-map "0C"	[copyright])
-(define-key compose-map "0c"	[copyright])
-(define-key compose-map "0R"	[registered])
-(define-key compose-map "0r"	[registered])
-(define-key compose-map "0^"	[degree])
+(define-key compose-map "0X"	[(?\244)])
+(define-key compose-map "0x"	[(?\244)])
+(define-key compose-map "0S"	[(?\247)])
+(define-key compose-map "0s"	[(?\247)])
+(define-key compose-map "0C"	[(?\251)])
+(define-key compose-map "0c"	[(?\251)])
+(define-key compose-map "0R"	[(?\256)])
+(define-key compose-map "0r"	[(?\256)])
+(define-key compose-map "0^"	[(?\260)])
 
-(define-key compose-map "1^"	[onesuperior])
-(define-key compose-map "14"	[onequarter])
-(define-key compose-map "12"	[onehalf])
+(define-key compose-map "1^"	[(?\271)])
+(define-key compose-map "14"	[(?\274)])
+(define-key compose-map "12"	[(?\275)])
 
-(define-key compose-map "2^"	[twosuperior])
+(define-key compose-map "2^"	[(?\262)])
 
-(define-key compose-map "3^"	[threesuperior])
-(define-key compose-map "34"	[threequarters])
+(define-key compose-map "3^"	[(?\263)])
+(define-key compose-map "34"	[(?\276)])
 
-(define-key compose-map ":-"	[division])
+(define-key compose-map ":-"	[(?\367)])
 
 (define-key compose-map "</"	"\\")
-(define-key compose-map "<<"	[guillemotleft])
+(define-key compose-map "<<"	[(?\253)])
 
-(define-key compose-map "=L"	[sterling])
-(define-key compose-map "=l"	[sterling])
-(define-key compose-map "=Y"	[yen])
-(define-key compose-map "=y"	[yen])
+(define-key compose-map "=L"	[(?\243)])
+(define-key compose-map "=l"	[(?\243)])
+(define-key compose-map "=Y"	[(?\245)])
+(define-key compose-map "=y"	[(?\245)])
 
-(define-key compose-map ">>"	[guillemotright])
+(define-key compose-map ">>"	[(?\273)])
 
-(define-key compose-map "??"	[questiondown])
+(define-key compose-map "??"	[(?\277)])
 
 (define-key compose-map "AA"	"@")
 (define-key compose-map "Aa"	"@")
-(define-key compose-map "A_"	[ordfeminine])
-(define-key compose-map "A`"	[Agrave])
-(define-key compose-map "A'"	[Aacute])
-(define-key compose-map "A^"	[Acircumflex])
-(define-key compose-map "A~"	[Atilde])
-(define-key compose-map "A\""	[Adiaeresis])
-(define-key compose-map "A*"	[Aring])
-(define-key compose-map "AE"	[AE])
+(define-key compose-map "A_"	[(?\252)])
+(define-key compose-map "A`"	[(?\300)])
+(define-key compose-map "A'"	[(?\301)])
+(define-key compose-map "A^"	[(?\302)])
+(define-key compose-map "A~"	[(?\303)])
+(define-key compose-map "A\""	[(?\304)])
+(define-key compose-map "A*"	[(?\305)])
+(define-key compose-map "AE"	[(?\306)])
 
-(define-key compose-map "C/"	[cent])
-(define-key compose-map "C|"	[cent])
-(define-key compose-map "C0"	[copyright])
-(define-key compose-map "CO"	[copyright])
-(define-key compose-map "Co"	[copyright])
-(define-key compose-map "C,"	[Ccedilla])
+(define-key compose-map "C/"	[(?\242)])
+(define-key compose-map "C|"	[(?\242)])
+(define-key compose-map "C0"	[(?\251)])
+(define-key compose-map "CO"	[(?\251)])
+(define-key compose-map "Co"	[(?\251)])
+(define-key compose-map "C,"	[(?\307)])
 
-(define-key compose-map "D-"	[ETH])
+(define-key compose-map "D-"	[(?\320)])
 
-(define-key compose-map "E`"	[Egrave])
-(define-key compose-map "E'"	[Eacute])
-(define-key compose-map "E^"	[Ecircumflex])
-(define-key compose-map "E\""	[Ediaeresis])
+(define-key compose-map "E`"	[(?\310)])
+(define-key compose-map "E'"	[(?\311)])
+(define-key compose-map "E^"	[(?\312)])
+(define-key compose-map "E\""	[(?\313)])
 
-(define-key compose-map "I`"	[Igrave])
-(define-key compose-map "I'"	[Iacute])
-(define-key compose-map "I^"	[Icircumflex])
-(define-key compose-map "I\""	[Idiaeresis])
+(define-key compose-map "I`"	[(?\314)])
+(define-key compose-map "I'"	[(?\315)])
+(define-key compose-map "I^"	[(?\316)])
+(define-key compose-map "I\""	[(?\317)])
 
-(define-key compose-map "L-"	[sterling])
-(define-key compose-map "L="	[sterling])
+(define-key compose-map "L-"	[(?\243)])
+(define-key compose-map "L="	[(?\243)])
 
-(define-key compose-map "N~"	[Ntilde])
+(define-key compose-map "N~"	[(?\321)])
 
-(define-key compose-map "OX"	[currency])
-(define-key compose-map "Ox"	[currency])
-(define-key compose-map "OS"	[section])
-(define-key compose-map "Os"	[section])
-(define-key compose-map "OC"	[copyright])
-(define-key compose-map "Oc"	[copyright])
-(define-key compose-map "OR"	[registered])
-(define-key compose-map "Or"	[registered])
-(define-key compose-map "O_"	[masculine])
-(define-key compose-map "O`"	[Ograve])
-(define-key compose-map "O'"	[Oacute])
-(define-key compose-map "O^"	[Ocircumflex])
-(define-key compose-map "O~"	[Otilde])
-(define-key compose-map "O\""	[Odiaeresis])
-(define-key compose-map "O/"	[Ooblique])
+(define-key compose-map "OX"	[(?\244)])
+(define-key compose-map "Ox"	[(?\244)])
+(define-key compose-map "OS"	[(?\247)])
+(define-key compose-map "Os"	[(?\247)])
+(define-key compose-map "OC"	[(?\251)])
+(define-key compose-map "Oc"	[(?\251)])
+(define-key compose-map "OR"	[(?\256)])
+(define-key compose-map "Or"	[(?\256)])
+(define-key compose-map "O_"	[(?\272)])
+(define-key compose-map "O`"	[(?\322)])
+(define-key compose-map "O'"	[(?\323)])
+(define-key compose-map "O^"	[(?\324)])
+(define-key compose-map "O~"	[(?\325)])
+(define-key compose-map "O\""	[(?\326)])
+(define-key compose-map "O/"	[(?\330)])
 
-(define-key compose-map "P!"	[paragraph])
+(define-key compose-map "P!"	[(?\266)])
 
-(define-key compose-map "R0"	[registered])
-(define-key compose-map "RO"	[registered])
-(define-key compose-map "Ro"	[registered])
+(define-key compose-map "R0"	[(?\256)])
+(define-key compose-map "RO"	[(?\256)])
+(define-key compose-map "Ro"	[(?\256)])
 
-(define-key compose-map "S!"	[section])
-(define-key compose-map "S0"	[section])
-(define-key compose-map "SO"	[section])
-(define-key compose-map "So"	[section])
-(define-key compose-map "SS"	[ssharp])
+(define-key compose-map "S!"	[(?\247)])
+(define-key compose-map "S0"	[(?\247)])
+(define-key compose-map "SO"	[(?\247)])
+(define-key compose-map "So"	[(?\247)])
+(define-key compose-map "SS"	[(?\337)])
 
-(define-key compose-map "TH"	[THORN])
+(define-key compose-map "TH"	[(?\336)])
 
-(define-key compose-map "U`"	[Ugrave])
-(define-key compose-map "U'"	[Uacute])
-(define-key compose-map "U^"	[Ucircumflex])
-(define-key compose-map "U\""	[Udiaeresis])
+(define-key compose-map "U`"	[(?\331)])
+(define-key compose-map "U'"	[(?\332)])
+(define-key compose-map "U^"	[(?\333)])
+(define-key compose-map "U\""	[(?\334)])
 
-(define-key compose-map "X0"	[currency])
-(define-key compose-map "XO"	[currency])
-(define-key compose-map "Xo"	[currency])
+(define-key compose-map "X0"	[(?\244)])
+(define-key compose-map "XO"	[(?\244)])
+(define-key compose-map "Xo"	[(?\244)])
 
-(define-key compose-map "Y-"	[yen])
-(define-key compose-map "Y="	[yen])
-(define-key compose-map "Y'"	[Yacute])
+(define-key compose-map "Y-"	[(?\245)])
+(define-key compose-map "Y="	[(?\245)])
+(define-key compose-map "Y'"	[(?\335)])
 
-(define-key compose-map "_A"	[ordfeminine])
-(define-key compose-map "_a"	[ordfeminine])
-(define-key compose-map "_^"	[macron])
-(define-key compose-map "_O"	[masculine])
-(define-key compose-map "_o"	[masculine])
+(define-key compose-map "_A"	[(?\252)])
+(define-key compose-map "_a"	[(?\252)])
+(define-key compose-map "_^"	[(?\257)])
+(define-key compose-map "_O"	[(?\272)])
+(define-key compose-map "_o"	[(?\272)])
 
 (define-key compose-map "aA"	"@")
 (define-key compose-map "aa"	"@")
-(define-key compose-map "a_"	[ordfeminine])
-(define-key compose-map "a-"    [ordfeminine])
-(define-key compose-map "a`"	[agrave])
-(define-key compose-map "a'"	[aacute])
-(define-key compose-map "a^"	[acircumflex])
-(define-key compose-map "a~"	[atilde])
-(define-key compose-map "a\""	[adiaeresis])
-(define-key compose-map "a*"	[aring])
-(define-key compose-map "ae"	[ae])
+(define-key compose-map "a_"	[(?\252)])
+(define-key compose-map "a-"    [(?\252)])
+(define-key compose-map "a`"	[(?\340)])
+(define-key compose-map "a'"	[(?\341)])
+(define-key compose-map "a^"	[(?\342)])
+(define-key compose-map "a~"	[(?\343)])
+(define-key compose-map "a\""	[(?\344)])
+(define-key compose-map "a*"	[(?\345)])
+(define-key compose-map "ae"	[(?\346)])
 
-(define-key compose-map "c/"	[cent])
-(define-key compose-map "c|"	[cent])
-(define-key compose-map "c0"	[copyright])
-(define-key compose-map "cO"	[copyright])
-(define-key compose-map "co"	[copyright])
-(define-key compose-map "c,"	[ccedilla])
+(define-key compose-map "c/"	[(?\242)])
+(define-key compose-map "c|"	[(?\242)])
+(define-key compose-map "c0"	[(?\251)])
+(define-key compose-map "cO"	[(?\251)])
+(define-key compose-map "co"	[(?\251)])
+(define-key compose-map "c,"	[(?\347)])
 
-(define-key compose-map "d-"	[eth])
+(define-key compose-map "d-"	[(?\360)])
 
-(define-key compose-map "e`"	[egrave])
-(define-key compose-map "e'"	[eacute])
-(define-key compose-map "e^"	[ecircumflex])
-(define-key compose-map "e\""	[ediaeresis])
+(define-key compose-map "e`"	[(?\350)])
+(define-key compose-map "e'"	[(?\351)])
+(define-key compose-map "e^"	[(?\352)])
+(define-key compose-map "e\""	[(?\353)])
 
-(define-key compose-map "i`"	[igrave])
-(define-key compose-map "i'"	[iacute])
-(define-key compose-map "i^"	[icircumflex])
-(define-key compose-map "i\""	[idiaeresis])
-(define-key compose-map "i:"	[idiaeresis])
+(define-key compose-map "i`"	[(?\354)])
+(define-key compose-map "i'"	[(?\355)])
+(define-key compose-map "i^"	[(?\356)])
+(define-key compose-map "i\""	[(?\357)])
+(define-key compose-map "i:"	[(?\357)])
 
-(define-key compose-map "l-"	[sterling])
-(define-key compose-map "l="	[sterling])
+(define-key compose-map "l-"	[(?\243)])
+(define-key compose-map "l="	[(?\243)])
 
-(define-key compose-map "n~"	[ntilde])
+(define-key compose-map "n~"	[(?\361)])
 
-(define-key compose-map "oX"	[currency])
-(define-key compose-map "ox"	[currency])
-(define-key compose-map "oC"	[copyright])
-(define-key compose-map "oc"	[copyright])
-(define-key compose-map "oR"	[registered])
-(define-key compose-map "or"	[registered])
-(define-key compose-map "oS"	[section])
-(define-key compose-map "os"	[section])
-(define-key compose-map "o_"	[masculine])
-(define-key compose-map "o`"	[ograve])
-(define-key compose-map "o'"	[oacute])
-(define-key compose-map "o^"	[ocircumflex])
-(define-key compose-map "o~"	[otilde])
-(define-key compose-map "o\""	[odiaeresis])
-(define-key compose-map "o/"	[oslash])
+(define-key compose-map "oX"	[(?\244)])
+(define-key compose-map "ox"	[(?\244)])
+(define-key compose-map "oC"	[(?\251)])
+(define-key compose-map "oc"	[(?\251)])
+(define-key compose-map "oR"	[(?\256)])
+(define-key compose-map "or"	[(?\256)])
+(define-key compose-map "oS"	[(?\247)])
+(define-key compose-map "os"	[(?\247)])
+(define-key compose-map "o_"	[(?\272)])
+(define-key compose-map "o`"	[(?\362)])
+(define-key compose-map "o'"	[(?\363)])
+(define-key compose-map "o^"	[(?\364)])
+(define-key compose-map "o~"	[(?\365)])
+(define-key compose-map "o\""	[(?\366)])
+(define-key compose-map "o/"	[(?\370)])
 
-(define-key compose-map "p!"	[paragraph])
+(define-key compose-map "p!"	[(?\266)])
 
-(define-key compose-map "r0"	[registered])
-(define-key compose-map "rO"	[registered])
-(define-key compose-map "ro"	[registered])
+(define-key compose-map "r0"	[(?\256)])
+(define-key compose-map "rO"	[(?\256)])
+(define-key compose-map "ro"	[(?\256)])
 
-(define-key compose-map "s!"	[section])
-(define-key compose-map "s0"	[section])
-(define-key compose-map "sO"	[section])
-(define-key compose-map "so"	[section])
-(define-key compose-map "ss"	[ssharp])
+(define-key compose-map "s!"	[(?\247)])
+(define-key compose-map "s0"	[(?\247)])
+(define-key compose-map "sO"	[(?\247)])
+(define-key compose-map "so"	[(?\247)])
+(define-key compose-map "ss"	[(?\337)])
 
-(define-key compose-map "th"	[thorn])
+(define-key compose-map "th"	[(?\376)])
 
-(define-key compose-map "u`"	[ugrave])
-(define-key compose-map "u'"	[uacute])
-(define-key compose-map "u^"	[ucircumflex])
-(define-key compose-map "u\""	[udiaeresis])
-(define-key compose-map "u/"	[mu])
+(define-key compose-map "u`"	[(?\371)])
+(define-key compose-map "u'"	[(?\372)])
+(define-key compose-map "u^"	[(?\373)])
+(define-key compose-map "u\""	[(?\374)])
+(define-key compose-map "u/"	[(?\265)])
 
-(define-key compose-map "x0"	[currency])
-(define-key compose-map "xO"	[currency])
-(define-key compose-map "xo"	[currency])
-(define-key compose-map "xx"	[multiply])
+(define-key compose-map "x0"	[(?\244)])
+(define-key compose-map "xO"	[(?\244)])
+(define-key compose-map "xo"	[(?\244)])
+(define-key compose-map "xx"	[(?\327)])
 
-(define-key compose-map "y-"	[yen])
-(define-key compose-map "y="	[yen])
-(define-key compose-map "y'"	[yacute])
-(define-key compose-map "y\""	[ydiaeresis])
+(define-key compose-map "y-"	[(?\245)])
+(define-key compose-map "y="	[(?\245)])
+(define-key compose-map "y'"	[(?\375)])
+(define-key compose-map "y\""	[(?\377)])
 
-(define-key compose-map "|C"	[cent])
-(define-key compose-map "|c"	[cent])
-(define-key compose-map "||"	[brokenbar])
+(define-key compose-map "|C"	[(?\242)])
+(define-key compose-map "|c"	[(?\242)])
+(define-key compose-map "||"	[(?\246)])
 
 
-;; Suppose we type these three physical keys: [Multi_key " a]
+;; [[ Suppose we type these three physical keys: [Multi_key " a]
 ;; Xlib can deliver these keys as the following sequences of keysyms:
 ;;
 ;; - [Multi_key " a] (no surprise here)
@@ -510,20 +540,29 @@
 ;; decide whether it's really doing compose processing or not (or
 ;; actually, different parts of Xlib disagree).
 ;;
-;; So we'll just convert [Multi_key " adiaeresis] to [adiaeresis]
-(defun xlib-input-method-bug-workaround (keymap)
-  (map-keymap
-   (lambda (key value)
-     (cond
-      ((keymapp value)
-       (xlib-input-method-bug-workaround value))
-      ((and (sequencep value)
-	    (eq 1 (length value))
-	    (null (lookup-key keymap value)))
-       (define-key keymap value value))))
-   keymap))
-(xlib-input-method-bug-workaround compose-map)
-(unintern 'xlib-input-method-bug-workaround)
+;; So we'll just convert [Multi_key " adiaeresis] to [adiaeresis] ]] 
+
+(eval-when-compile 
+  (when nil ;; Commenting out.
+
+    ;; This _used_ to work with our X11-oriented keysyms above. With them
+    ;; gone, it won't. The X11 bug it works around should be long dead. (Ha! 
+    ;; Wasn't it cockroaches that would have ruled the planet after World
+    ;; War III?)
+
+    (defun xlib-input-method-bug-workaround (keymap)
+      (map-keymap
+       (lambda (key value)
+	 (cond
+	  ((keymapp value)
+	   (xlib-input-method-bug-workaround value))
+	  ((and (sequencep value)
+		(eq 1 (length value))
+		(null (lookup-key keymap value)))
+	   (define-key keymap value value))))
+       keymap))
+    (xlib-input-method-bug-workaround compose-map)
+    (unintern 'xlib-input-method-bug-workaround)))
 
 ;; While we're at it, a similar mechanism will make colon equivalent
 ;; to doublequote for diaeresis processing.  Some Xlibs do this.
@@ -582,7 +621,7 @@
       (if (and (vectorp mod-char) (= (length mod-char) 1))
 	  (setq mod-char (aref mod-char 0)))
       (if (and mod-char (symbolp mod-char))
-	  (setq mod-char (or (get mod-char character-set-property) mod-char)))
+	  (setq mod-char (or (get mod-char 'character-of-keysym) mod-char)))
       (if (and mod-char (> count 0))
 	  (delete-char -1)
 	(setq mod-char c))
@@ -655,8 +694,8 @@
 
 (defun compose-help-mapper (key binding)
   (if (and (symbolp key)
-	   (get key character-set-property))
-      (setq key (get key character-set-property)))
+	   (get key 'character-of-keysym))
+      (setq key (get key 'character-of-keysym)))
   (if (eq binding 'compose-help) ; suppress that...
       nil
     (if (keymapp binding)
@@ -675,7 +714,7 @@
       (indent-to 16)
       (let ((code (and (vectorp binding)
 		       (= 1 (length binding))
-		       (get (aref binding 0) character-set-property))))
+		       (get (aref binding 0) 'character-of-keysym))))
 	(if code
 	    (insert (make-string 1 code))
 	  (if (stringp binding)