Mercurial > hg > xemacs-beta
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)