comparison lisp/x11/x-compose.el @ 48:56c54cf7c5b6 r19-16b90

Import from CVS: tag r19-16b90
author cvs
date Mon, 13 Aug 2007 08:56:04 +0200
parents 9ee227acff29
children ee648375d8d6
comparison
equal deleted inserted replaced
47:11c6df210d7f 48:56c54cf7c5b6
1 ;; Compose-key processing in emacs. 1 ;; Compose-key processing in emacs.
2 ;; Copyright (C) 1992, 1993 Free Software Foundation, Inc. 2 ;; Copyright (C) 1992, 1993, 1997 Free Software Foundation, Inc.
3 3
4 ;; This file is part of XEmacs. 4 ;; This file is part of XEmacs.
5 5
6 ;; XEmacs is free software; you can redistribute it and/or modify it 6 ;; XEmacs is free software; you can redistribute it and/or modify it
7 ;; under the terms of the GNU General Public License as published by 7 ;; under the terms of the GNU General Public License as published by
16 ;; You should have received a copy of the GNU General Public License 16 ;; You should have received a copy of the GNU General Public License
17 ;; along with XEmacs; see the file COPYING. If not, write to the Free 17 ;; along with XEmacs; see the file COPYING. If not, write to the Free
18 ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 18 ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 19
20 ;;; created by jwz, 14-jun-92. 20 ;;; created by jwz, 14-jun-92.
21 ;;; changed by Heiko Muenkel, 11-jun-97: Fixed the degree bug.
22 ;;; changed by Jan Vroonhof, July 1997: Use function-key-map instead
23 ;;; of global map.
24 ;;; Preliminary support for
25 ;;; XFree86 deadkeys
26 ;;; , August 1997 allow : for diaresis like xlib
21 27
22 ;;; This file implements DEC-, OpenWindows-, and HP-compatible "Compose" 28 ;;; This file implements DEC-, OpenWindows-, and HP-compatible "Compose"
23 ;;; processing for XEmacs. 29 ;;; processing for XEmacs.
24 ;;; 30 ;;;
25 ;;; If you are running a version of X which already does compose processing, 31 ;;; If you are running a version of X which already does compose processing,
92 (defvar compose-tilde-map (make-sparse-keymap)) 98 (defvar compose-tilde-map (make-sparse-keymap))
93 (defvar compose-ring-map (make-sparse-keymap)) 99 (defvar compose-ring-map (make-sparse-keymap))
94 100
95 ;;; The command `compose-key' exists so that this file may be autoloaded. 101 ;;; The command `compose-key' exists so that this file may be autoloaded.
96 ;;;this doesn't work yet###autoload 102 ;;;this doesn't work yet###autoload
97 (define-function 'compose-key compose-map) 103 ;; (define-function 'compose-key compose-map)
98 104
99 ;; The "Compose" key: 105 ;; The "Compose" key:
100 ;; (keysym is lower case because we downcase everything in the Symbol font...) 106 ;; (keysym is lower case because we downcase everything in the Symbol font...)
101 ;; 107 ;;
102 ;;;this doesn't work yet###autoload 108 ;;;this doesn't work yet###autoload
103 (define-key global-map [multi-key] 'compose-key) 109 ;; Ditched JV, (define-key function-key-map [multi-key] 'compose-key)
110 (define-key function-key-map [multi-key] compose-map)
111
112 ;; The following is necessary, because one can't rebind [degree]
113 ;; and use it to insert the degree sign!
114 (defun compose-insert-degree ()
115 "Inserts a degree sign."
116 (interactive)
117 (insert ?\260))
104 118
105 ;; The "Dead" keys: 119 ;; The "Dead" keys:
106 ;; 120 ;;
107 (define-key global-map [acute] compose-acute-map) 121 (define-key function-key-map [acute] compose-acute-map)
108 (define-key global-map [cedilla] compose-cedilla-map) 122 (define-key function-key-map [cedilla] compose-cedilla-map)
109 (define-key global-map [diaeresis] compose-diaeresis-map) 123 (define-key function-key-map [diaeresis] compose-diaeresis-map)
110 (define-key global-map [degree] compose-ring-map) 124 (define-key function-key-map [degree] compose-ring-map)
111 125
112 ;; The dead keys as seen by the "Compose" map: 126 ;; The dead keys as seen by the "Compose" map:
113 ;; 127 ;;
114 (define-key compose-map [acute] compose-acute-map) 128 (define-key compose-map [acute] compose-acute-map)
115 (define-key compose-map [cedilla] compose-cedilla-map) 129 (define-key compose-map [cedilla] compose-cedilla-map)
118 132
119 (define-key compose-map "'" compose-acute-map) 133 (define-key compose-map "'" compose-acute-map)
120 (define-key compose-map "`" compose-grave-map) 134 (define-key compose-map "`" compose-grave-map)
121 (define-key compose-map "," compose-cedilla-map) 135 (define-key compose-map "," compose-cedilla-map)
122 (define-key compose-map "\"" compose-diaeresis-map) 136 (define-key compose-map "\"" compose-diaeresis-map)
137 (define-key compose-map ":" compose-diaeresis-map)
123 (define-key compose-map "^" compose-circumflex-map) 138 (define-key compose-map "^" compose-circumflex-map)
124 (define-key compose-map "~" compose-tilde-map) 139 (define-key compose-map "~" compose-tilde-map)
125 (define-key compose-map "*" compose-ring-map) 140 (define-key compose-map "*" compose-ring-map)
126 141
127 142
141 ;;; mixed up view of what these keys should be called. 156 ;;; mixed up view of what these keys should be called.
142 157
143 ;; Sun according to MIT: 158 ;; Sun according to MIT:
144 ;; 159 ;;
145 (cond ((x-valid-keysym-name-p "SunFA_Acute") 160 (cond ((x-valid-keysym-name-p "SunFA_Acute")
146 (define-key global-map [SunFA_Acute] compose-acute-map) 161 (define-key function-key-map [SunFA_Acute]
162 compose-acute-map)
147 (define-key compose-map [SunFA_Acute] compose-acute-map) 163 (define-key compose-map [SunFA_Acute] compose-acute-map)
148 (define-key global-map [SunFA_Grave] compose-grave-map) 164 (define-key function-key-map [SunFA_Grave]
165 compose-grave-map)
149 (define-key compose-map [SunFA_Grave] compose-grave-map) 166 (define-key compose-map [SunFA_Grave] compose-grave-map)
150 (define-key global-map [SunFA_Cedilla] compose-cedilla-map) 167 (define-key function-key-map [SunFA_Cedilla]
168 compose-cedilla-map)
151 (define-key compose-map [SunFA_Cedilla] compose-cedilla-map) 169 (define-key compose-map [SunFA_Cedilla] compose-cedilla-map)
152 (define-key global-map [SunFA_Diaeresis] compose-diaeresis-map) 170 (define-key function-key-map [SunFA_Diaeresis] compose-diaeresis-map)
153 (define-key compose-map [SunFA_Diaeresis] compose-diaeresis-map) 171 (define-key compose-map [SunFA_Diaeresis] compose-diaeresis-map)
154 (define-key global-map [SunFA_Circum] compose-circumflex-map) 172 (define-key function-key-map [SunFA_Circum]
173 compose-circumflex-map)
155 (define-key compose-map [SunFA_Circum] compose-circumflex-map) 174 (define-key compose-map [SunFA_Circum] compose-circumflex-map)
156 (define-key global-map [SunFA_Tilde] compose-tilde-map) 175 (define-key function-key-map [SunFA_Tilde]
176 compose-tilde-map)
157 (define-key compose-map [SunFA_Tilde] compose-tilde-map) 177 (define-key compose-map [SunFA_Tilde] compose-tilde-map)
158 )) 178 ))
159 179
160 ;; Sun according to OpenWindows 2: 180 ;; Sun according to OpenWindows 2:
161 ;; 181 ;;
162 (cond ((x-valid-keysym-name-p "Dead_Grave") 182 (cond ((x-valid-keysym-name-p "Dead_Grave")
163 (define-key global-map [Dead_Grave] compose-grave-map) 183 (define-key function-key-map [Dead_Grave]
184 compose-grave-map)
164 (define-key compose-map [Dead_Grave] compose-grave-map) 185 (define-key compose-map [Dead_Grave] compose-grave-map)
165 (define-key global-map [Dead_Circum] compose-circumflex-map) 186 (define-key function-key-map [Dead_Circum]
187 compose-circumflex-map)
166 (define-key compose-map [Dead_Circum] compose-circumflex-map) 188 (define-key compose-map [Dead_Circum] compose-circumflex-map)
167 (define-key global-map [Dead_Tilde] compose-tilde-map) 189 (define-key function-key-map [Dead_Tilde]
190 compose-tilde-map)
168 (define-key compose-map [Dead_Tilde] compose-tilde-map) 191 (define-key compose-map [Dead_Tilde] compose-tilde-map)
169 )) 192 ))
170 193
171 ;; Sun according to OpenWindows 3: 194 ;; Sun according to OpenWindows 3:
172 ;; 195 ;;
173 (cond ((x-valid-keysym-name-p "SunXK_FA_Acute") 196 (cond ((x-valid-keysym-name-p "SunXK_FA_Acute")
174 (define-key global-map [SunXK_FA_Acute] compose-acute-map) 197 (define-key function-key-map [SunXK_FA_Acute]
198 compose-acute-map)
175 (define-key compose-map [SunXK_FA_Acute] compose-acute-map) 199 (define-key compose-map [SunXK_FA_Acute] compose-acute-map)
176 (define-key global-map [SunXK_FA_Grave] compose-grave-map) 200 (define-key function-key-map [SunXK_FA_Grave]
201 compose-grave-map)
177 (define-key compose-map [SunXK_FA_Grave] compose-grave-map) 202 (define-key compose-map [SunXK_FA_Grave] compose-grave-map)
178 (define-key global-map [SunXK_FA_Cedilla] compose-cedilla-map) 203 (define-key function-key-map [SunXK_FA_Cedilla] compose-cedilla-map)
179 (define-key compose-map [SunXK_FA_Cedilla] compose-cedilla-map) 204 (define-key compose-map [SunXK_FA_Cedilla] compose-cedilla-map)
180 (define-key global-map [SunXK_FA_Diaeresis] compose-diaeresis-map) 205 (define-key function-key-map [SunXK_FA_Diaeresis]
206 compose-diaeresis-map)
181 (define-key compose-map [SunXK_FA_Diaeresis] compose-diaeresis-map) 207 (define-key compose-map [SunXK_FA_Diaeresis] compose-diaeresis-map)
182 (define-key global-map [SunXK_FA_Circum] compose-circumflex-map) 208 (define-key function-key-map [SunXK_FA_Circum] compose-circumflex-map)
183 (define-key compose-map [SunXK_FA_Circum] compose-circumflex-map) 209 (define-key compose-map [SunXK_FA_Circum] compose-circumflex-map)
184 (define-key global-map [SunXK_FA_Tilde] compose-tilde-map) 210 (define-key function-key-map [SunXK_FA_Tilde]
211 compose-tilde-map)
185 (define-key compose-map [SunXK_FA_Tilde] compose-tilde-map) 212 (define-key compose-map [SunXK_FA_Tilde] compose-tilde-map)
186 )) 213 ))
187 214
188 ;; DEC according to MIT: 215 ;; DEC according to MIT:
189 ;; 216 ;;
190 (cond ((x-valid-keysym-name-p "Dacute_accent") 217 (cond ((x-valid-keysym-name-p "Dacute_accent")
191 (define-key global-map [Dacute_accent] compose-acute-map) 218 (define-key function-key-map [Dacute_accent]
219 compose-acute-map)
192 (define-key compose-map [Dacute_accent] compose-acute-map) 220 (define-key compose-map [Dacute_accent] compose-acute-map)
193 (define-key global-map [Dgrave_accent] compose-grave-map) 221 (define-key function-key-map [Dgrave_accent]
222 compose-grave-map)
194 (define-key compose-map [Dgrave_accent] compose-grave-map) 223 (define-key compose-map [Dgrave_accent] compose-grave-map)
195 (define-key global-map [Dcedilla_accent] compose-cedilla-map) 224 (define-key function-key-map [Dcedilla_accent] compose-cedilla-map)
196 (define-key compose-map [Dcedilla_accent] compose-cedilla-map) 225 (define-key compose-map [Dcedilla_accent] compose-cedilla-map)
197 (define-key global-map [Dcircumflex_accent] compose-circumflex-map) 226 (define-key function-key-map [Dcircumflex_accent]
227 compose-circumflex-map)
198 (define-key compose-map [Dcircumflex_accent] compose-circumflex-map) 228 (define-key compose-map [Dcircumflex_accent] compose-circumflex-map)
199 (define-key global-map [Dtilde] compose-tilde-map) 229 (define-key function-key-map [Dtilde]
230 compose-tilde-map)
200 (define-key compose-map [Dtilde] compose-tilde-map) 231 (define-key compose-map [Dtilde] compose-tilde-map)
201 (define-key global-map [Dring_accent] compose-ring-map) 232 (define-key function-key-map [Dring_accent]
233 compose-ring-map)
202 (define-key compose-map [Dring_accent] compose-ring-map) 234 (define-key compose-map [Dring_accent] compose-ring-map)
203 )) 235 ))
204 236
205 ;; DEC according to OpenWindows 3: 237 ;; DEC according to OpenWindows 3:
206 ;; 238 ;;
207 (cond ((x-valid-keysym-name-p "DXK_acute_accent") 239 (cond ((x-valid-keysym-name-p "DXK_acute_accent")
208 (define-key global-map [DXK_acute_accent] compose-acute-map) 240 (define-key function-key-map [DXK_acute_accent] compose-acute-map)
209 (define-key compose-map [DXK_acute_accent] compose-acute-map) 241 (define-key compose-map [DXK_acute_accent] compose-acute-map)
210 (define-key global-map [DXK_grave_accent] compose-grave-map) 242 (define-key function-key-map [DXK_grave_accent] compose-grave-map)
211 (define-key compose-map [DXK_grave_accent] compose-grave-map) 243 (define-key compose-map [DXK_grave_accent] compose-grave-map)
212 (define-key global-map [DXK_cedilla_accent] compose-cedilla-map) 244 (define-key function-key-map [DXK_cedilla_accent]
245 compose-cedilla-map)
213 (define-key compose-map [DXK_cedilla_accent] compose-cedilla-map) 246 (define-key compose-map [DXK_cedilla_accent] compose-cedilla-map)
214 (define-key global-map [DXK_circumflex_accent] compose-circumflex-map) 247 (define-key function-key-map [DXK_circumflex_accent]
248 compose-circumflex-map)
215 (define-key compose-map [DXK_circumflex_accent] compose-circumflex-map) 249 (define-key compose-map [DXK_circumflex_accent] compose-circumflex-map)
216 (define-key global-map [DXK_tilde] compose-tilde-map) 250 (define-key function-key-map [DXK_tilde]
251 compose-tilde-map)
217 (define-key compose-map [DXK_tilde] compose-tilde-map) 252 (define-key compose-map [DXK_tilde] compose-tilde-map)
218 (define-key global-map [DXK_ring_accent] compose-ring-map) 253 (define-key function-key-map [DXK_ring_accent] compose-ring-map)
219 (define-key compose-map [DXK_ring_accent] compose-ring-map) 254 (define-key compose-map [DXK_ring_accent] compose-ring-map)
220 )) 255 ))
221 256
222 ;; HP according to MIT: 257 ;; HP according to MIT:
223 ;; 258 ;;
224 (cond ((x-valid-keysym-name-p "hpmute_acute") 259 (cond ((x-valid-keysym-name-p "hpmute_acute")
225 (define-key global-map [hpmute_acute] compose-acute-map) 260 (define-key function-key-map [hpmute_acute]
261 compose-acute-map)
226 (define-key compose-map [hpmute_acute] compose-acute-map) 262 (define-key compose-map [hpmute_acute] compose-acute-map)
227 (define-key global-map [hpmute_grave] compose-grave-map) 263 (define-key function-key-map [hpmute_grave]
264 compose-grave-map)
228 (define-key compose-map [hpmute_grave] compose-grave-map) 265 (define-key compose-map [hpmute_grave] compose-grave-map)
229 (define-key global-map [hpmute_diaeresis] compose-diaeresis-map) 266 (define-key function-key-map [hpmute_diaeresis] compose-diaeresis-map)
230 (define-key compose-map [hpmute_diaeresis] compose-diaeresis-map) 267 (define-key compose-map [hpmute_diaeresis] compose-diaeresis-map)
231 (define-key global-map [hpmute_asciicircum] compose-circumflex-map) 268 (define-key function-key-map [hpmute_asciicircum]
269 compose-circumflex-map)
232 (define-key compose-map [hpmute_asciicircum] compose-circumflex-map) 270 (define-key compose-map [hpmute_asciicircum] compose-circumflex-map)
233 (define-key global-map [hpmute_asciitilde] compose-tilde-map) 271 (define-key function-key-map [hpmute_asciitilde]
272 compose-tilde-map)
234 (define-key compose-map [hpmute_asciitilde] compose-tilde-map) 273 (define-key compose-map [hpmute_asciitilde] compose-tilde-map)
235 )) 274 ))
236 275
237 ;; HP according to OpenWindows 3: 276 ;; HP according to OpenWindows 3:
238 ;; 277 ;;
239 (cond ((x-valid-keysym-name-p "hpXK_mute_acute") 278 (cond ((x-valid-keysym-name-p "hpXK_mute_acute")
240 (define-key global-map [hpXK_mute_acute] compose-acute-map) 279 (define-key function-key-map [hpXK_mute_acute] compose-acute-map)
241 (define-key compose-map [hpXK_mute_acute] compose-acute-map) 280 (define-key compose-map [hpXK_mute_acute] compose-acute-map)
242 (define-key global-map [hpXK_mute_grave] compose-grave-map) 281 (define-key function-key-map [hpXK_mute_grave] compose-grave-map)
243 (define-key compose-map [hpXK_mute_grave] compose-grave-map) 282 (define-key compose-map [hpXK_mute_grave] compose-grave-map)
244 (define-key global-map [hpXK_mute_diaeresis] compose-diaeresis-map) 283 (define-key function-key-map [hpXK_mute_diaeresis]
284 compose-diaeresis-map)
245 (define-key compose-map [hpXK_mute_diaeresis] compose-diaeresis-map) 285 (define-key compose-map [hpXK_mute_diaeresis] compose-diaeresis-map)
246 (define-key global-map [hpXK_mute_asciicircum] compose-circumflex-map) 286 (define-key function-key-map [hpXK_mute_asciicircum]
287 compose-circumflex-map)
247 (define-key compose-map [hpXK_mute_asciicircum] compose-circumflex-map) 288 (define-key compose-map [hpXK_mute_asciicircum] compose-circumflex-map)
248 (define-key global-map [hpXK_mute_asciitilde] compose-tilde-map) 289 (define-key function-key-map [hpXK_mute_asciitilde]
290 compose-tilde-map)
249 (define-key compose-map [hpXK_mute_asciitilde] compose-tilde-map) 291 (define-key compose-map [hpXK_mute_asciitilde] compose-tilde-map)
250 )) 292 ))
251 293
252 ;; HP according to HP-UX 8.0: 294 ;; HP according to HP-UX 8.0:
253 ;; 295 ;;
254 (cond ((x-valid-keysym-name-p "XK_mute_acute") 296 (cond ((x-valid-keysym-name-p "XK_mute_acute")
255 (define-key global-map [XK_mute_acute] compose-acute-map) 297 (define-key function-key-map [XK_mute_acute]
298 compose-acute-map)
256 (define-key compose-map [XK_mute_acute] compose-acute-map) 299 (define-key compose-map [XK_mute_acute] compose-acute-map)
257 (define-key global-map [XK_mute_grave] compose-grave-map) 300 (define-key function-key-map [XK_mute_grave]
301 compose-grave-map)
258 (define-key compose-map [XK_mute_grave] compose-grave-map) 302 (define-key compose-map [XK_mute_grave] compose-grave-map)
259 (define-key global-map [XK_mute_diaeresis] compose-diaeresis-map) 303 (define-key function-key-map [XK_mute_diaeresis]
304 compose-diaeresis-map)
260 (define-key compose-map [XK_mute_diaeresis] compose-diaeresis-map) 305 (define-key compose-map [XK_mute_diaeresis] compose-diaeresis-map)
261 (define-key global-map [XK_mute_asciicircum] compose-circumflex-map) 306 (define-key function-key-map [XK_mute_asciicircum]
307 compose-circumflex-map)
262 (define-key compose-map [XK_mute_asciicircum] compose-circumflex-map) 308 (define-key compose-map [XK_mute_asciicircum] compose-circumflex-map)
263 (define-key global-map [XK_mute_asciitilde] compose-tilde-map) 309 (define-key function-key-map
310 [XK_mute_asciitilde] compose-tilde-map)
264 (define-key compose-map [XK_mute_asciitilde] compose-tilde-map) 311 (define-key compose-map [XK_mute_asciitilde] compose-tilde-map)
265 )) 312 ))
313 ;; Xfree seems to use lower case and a hyphen
314 (cond ((x-valid-keysym-name-p "dead-tilde")
315 (define-key function-key-map [dead-acute]
316 compose-acute-map)
317 (define-key compose-map [dead-acute] compose-acute-map)
318 (define-key function-key-map [dead-grave]
319 compose-grave-map)
320 (define-key compose-map [dead-grave] compose-grave-map)
321 (define-key function-key-map [dead-cedilla] compose-cedilla-map)
322 (define-key compose-map [dead-cedilla] compose-cedilla-map)
323 (define-key function-key-map [dead_diaeresis] compose-diaeresis-map)
324 (define-key compose-map [dead-diaeresis] compose-diaeresis-map)
325 (define-key function-key-map [dead-circum] compose-circumflex-map)
326 (define-key compose-map [dead-circum] compose-circumflex-map)
327 (define-key function-key-map [dead-circumflex] compose-circumflex-map)
328 (define-key compose-map [dead-circumflex] compose-circumflex-map)
329 (define-key function-key-map [dead-tilde]
330 compose-tilde-map)
331 (define-key compose-map [dead-tilde] compose-tilde-map)
332 ))
333 ;; and AIX uses underscore, sigh....
334 (cond ((x-valid-keysym-name-p "dead_tilde")
335 (define-key function-key-map [dead_acute]
336 compose-acute-map)
337 (define-key compose-map [dead_acute] compose-acute-map)
338 (define-key function-key-map [dead_grave]
339 compose-grave-map)
340 (define-key compose-map [dead_grave] compose-grave-map)
341 (define-key function-key-map [dead_cedilla] compose-cedilla-map)
342 (define-key compose-map [dead_cedilla] compose-cedilla-map)
343 (define-key function-key-map [dead_diaeresis] compose-diaeresis-map)
344 (define-key compose-map [dead_diaeresis] compose-diaeresis-map)
345 ; There seems to be several spellings for circumflex....
346 (define-key function-key-map [dead_circum] compose-circumflex-map)
347 (define-key compose-map [dead_circum] compose-circumflex-map)
348 (define-key function-key-map [dead_circumflex] compose-circumflex-map)
349 (define-key compose-map [dead_circumflex] compose-circumflex-map)
350 (define-key function-key-map [dead_tilde]
351 compose-tilde-map)
352 (define-key compose-map [dead_tilde] compose-tilde-map)
353 ))
354
355
266 356
267 ;;; The contents of the "dead key" maps. These are shared by the 357 ;;; The contents of the "dead key" maps. These are shared by the
268 ;;; compose-map. 358 ;;; compose-map.
269 359
270 (set-keymap-name compose-acute-map 'compose-acute-map) 360 (set-keymap-name compose-acute-map 'compose-acute-map)
282 (define-key compose-acute-map "o" [oacute]) 372 (define-key compose-acute-map "o" [oacute])
283 (define-key compose-acute-map "u" [uacute]) 373 (define-key compose-acute-map "u" [uacute])
284 (define-key compose-acute-map "y" [yacute]) 374 (define-key compose-acute-map "y" [yacute])
285 375
286 (set-keymap-name compose-grave-map 'compose-grave-map) 376 (set-keymap-name compose-grave-map 'compose-grave-map)
287 (define-key compose-grave-map " " [grave]) 377 (define-key compose-grave-map " " "`")
378 (define-key compose-grave-map "`" [grave])
288 (define-key compose-grave-map "A" [Agrave]) 379 (define-key compose-grave-map "A" [Agrave])
289 (define-key compose-grave-map "E" [Egrave]) 380 (define-key compose-grave-map "E" [Egrave])
290 (define-key compose-grave-map "I" [Igrave]) 381 (define-key compose-grave-map "I" [Igrave])
291 (define-key compose-grave-map "O" [Ograve]) 382 (define-key compose-grave-map "O" [Ograve])
292 (define-key compose-grave-map "U" [Ugrave]) 383 (define-key compose-grave-map "U" [Ugrave])
295 (define-key compose-grave-map "i" [igrave]) 386 (define-key compose-grave-map "i" [igrave])
296 (define-key compose-grave-map "o" [ograve]) 387 (define-key compose-grave-map "o" [ograve])
297 (define-key compose-grave-map "u" [ugrave]) 388 (define-key compose-grave-map "u" [ugrave])
298 389
299 (set-keymap-name compose-cedilla-map 'compose-cedilla-map) 390 (set-keymap-name compose-cedilla-map 'compose-cedilla-map)
391 (define-key compose-cedilla-map " " ",")
300 (define-key compose-cedilla-map "," [cedilla]) 392 (define-key compose-cedilla-map "," [cedilla])
301 (define-key compose-cedilla-map "C" [Ccedilla]) 393 (define-key compose-cedilla-map "C" [Ccedilla])
302 (define-key compose-cedilla-map "c" [ccedilla]) 394 (define-key compose-cedilla-map "c" [ccedilla])
303 395
304 (set-keymap-name compose-diaeresis-map 'compose-diaeresis-map) 396 (set-keymap-name compose-diaeresis-map 'compose-diaeresis-map)
305 (define-key compose-diaeresis-map " " [diaeresis]) 397 (define-key compose-diaeresis-map " " [diaeresis])
306 (define-key compose-diaeresis-map "\"" [diaeresis]) 398 (define-key compose-diaeresis-map "\"" [diaeresis])
399 (define-key compose-diaeresis-map ":" [diaeresis])
307 (define-key compose-diaeresis-map "A" [Adiaeresis]) 400 (define-key compose-diaeresis-map "A" [Adiaeresis])
308 (define-key compose-diaeresis-map "E" [Ediaeresis]) 401 (define-key compose-diaeresis-map "E" [Ediaeresis])
309 (define-key compose-diaeresis-map "I" [Idiaeresis]) 402 (define-key compose-diaeresis-map "I" [Idiaeresis])
310 (define-key compose-diaeresis-map "O" [Odiaeresis]) 403 (define-key compose-diaeresis-map "O" [Odiaeresis])
311 (define-key compose-diaeresis-map "U" [Udiaeresis]) 404 (define-key compose-diaeresis-map "U" [Udiaeresis])
320 (define-key compose-circumflex-map " " "^") 413 (define-key compose-circumflex-map " " "^")
321 (define-key compose-circumflex-map "/" "|") 414 (define-key compose-circumflex-map "/" "|")
322 (define-key compose-circumflex-map "!" [brokenbar]) 415 (define-key compose-circumflex-map "!" [brokenbar])
323 (define-key compose-circumflex-map "-" [macron]) 416 (define-key compose-circumflex-map "-" [macron])
324 (define-key compose-circumflex-map "_" [macron]) 417 (define-key compose-circumflex-map "_" [macron])
325 (define-key compose-circumflex-map "0" [degree]) 418 (define-key compose-circumflex-map "0" 'compose-insert-degree)
326 (define-key compose-circumflex-map "1" [onesuperior]) 419 (define-key compose-circumflex-map "1" [onesuperior])
327 (define-key compose-circumflex-map "2" [twosuperior]) 420 (define-key compose-circumflex-map "2" [twosuperior])
328 (define-key compose-circumflex-map "3" [threesuperior]) 421 (define-key compose-circumflex-map "3" [threesuperior])
329 (define-key compose-circumflex-map "." [periodcentered]) 422 (define-key compose-circumflex-map "." [periodcentered])
330 (define-key compose-circumflex-map "A" [Acircumflex]) 423 (define-key compose-circumflex-map "A" [Acircumflex])
346 (define-key compose-tilde-map "a" [atilde]) 439 (define-key compose-tilde-map "a" [atilde])
347 (define-key compose-tilde-map "n" [ntilde]) 440 (define-key compose-tilde-map "n" [ntilde])
348 (define-key compose-tilde-map "o" [otilde]) 441 (define-key compose-tilde-map "o" [otilde])
349 442
350 (set-keymap-name compose-ring-map 'compose-ring-map) 443 (set-keymap-name compose-ring-map 'compose-ring-map)
351 (define-key compose-ring-map " " [degree]) 444 (define-key compose-ring-map " " 'compose-insert-degree)
352 (define-key compose-ring-map "A" [Aring]) 445 (define-key compose-ring-map "A" [Aring])
353 (define-key compose-ring-map "a" [aring]) 446 (define-key compose-ring-map "a" [aring])
354 447
355 448
356 ;;; The rest of the compose-map. These are the composed characters 449 ;;; The rest of the compose-map. These are the composed characters
361 (define-key compose-map " ^" "^") 454 (define-key compose-map " ^" "^")
362 (define-key compose-map " `" "`") 455 (define-key compose-map " `" "`")
363 (define-key compose-map " ~" "~") 456 (define-key compose-map " ~" "~")
364 (define-key compose-map " " [nobreakspace]) 457 (define-key compose-map " " [nobreakspace])
365 (define-key compose-map " \"" [diaeresis]) 458 (define-key compose-map " \"" [diaeresis])
366 (define-key compose-map " *" [degree]) 459 (define-key compose-map " :" [diaeresis])
460 (define-key compose-map " *" 'compose-insert-degree)
367 461
368 (define-key compose-map "!!" [exclamdown]) 462 (define-key compose-map "!!" [exclamdown])
369 (define-key compose-map "!^" [brokenbar]) 463 (define-key compose-map "!^" [brokenbar])
370 (define-key compose-map "!S" [section]) 464 (define-key compose-map "!S" [section])
371 (define-key compose-map "!s" [section]) 465 (define-key compose-map "!s" [section])
415 (define-key compose-map "0s" [section]) 509 (define-key compose-map "0s" [section])
416 (define-key compose-map "0C" [copyright]) 510 (define-key compose-map "0C" [copyright])
417 (define-key compose-map "0c" [copyright]) 511 (define-key compose-map "0c" [copyright])
418 (define-key compose-map "0R" [registered]) 512 (define-key compose-map "0R" [registered])
419 (define-key compose-map "0r" [registered]) 513 (define-key compose-map "0r" [registered])
420 (define-key compose-map "0^" [degree]) 514 (define-key compose-map "0^" 'compose-insert-degree)
421 515
422 (define-key compose-map "1^" [onesuperior]) 516 (define-key compose-map "1^" [onesuperior])
423 (define-key compose-map "14" [onequarter]) 517 (define-key compose-map "14" [onequarter])
424 (define-key compose-map "12" [onehalf]) 518 (define-key compose-map "12" [onehalf])
425 519
448 (define-key compose-map "A`" [Agrave]) 542 (define-key compose-map "A`" [Agrave])
449 (define-key compose-map "A'" [Aacute]) 543 (define-key compose-map "A'" [Aacute])
450 (define-key compose-map "A^" [Acircumflex]) 544 (define-key compose-map "A^" [Acircumflex])
451 (define-key compose-map "A~" [Atilde]) 545 (define-key compose-map "A~" [Atilde])
452 (define-key compose-map "A\"" [Adiaeresis]) 546 (define-key compose-map "A\"" [Adiaeresis])
547 (define-key compose-map "A:" [Adiaeresis])
453 (define-key compose-map "A*" [Aring]) 548 (define-key compose-map "A*" [Aring])
454 (define-key compose-map "AE" [AE]) 549 (define-key compose-map "AE" [AE])
455 550
456 (define-key compose-map "C/" [cent]) 551 (define-key compose-map "C/" [cent])
457 (define-key compose-map "C|" [cent]) 552 (define-key compose-map "C|" [cent])
464 559
465 (define-key compose-map "E`" [Egrave]) 560 (define-key compose-map "E`" [Egrave])
466 (define-key compose-map "E'" [Eacute]) 561 (define-key compose-map "E'" [Eacute])
467 (define-key compose-map "E^" [Ecircumflex]) 562 (define-key compose-map "E^" [Ecircumflex])
468 (define-key compose-map "E\"" [Ediaeresis]) 563 (define-key compose-map "E\"" [Ediaeresis])
564 (define-key compose-map "E:" [Ediaeresis])
469 565
470 (define-key compose-map "I`" [Igrave]) 566 (define-key compose-map "I`" [Igrave])
471 (define-key compose-map "I'" [Iacute]) 567 (define-key compose-map "I'" [Iacute])
472 (define-key compose-map "I^" [Icircumflex]) 568 (define-key compose-map "I^" [Icircumflex])
473 (define-key compose-map "I\"" [Idiaeresis]) 569 (define-key compose-map "I\"" [Idiaeresis])
570 (define-key compose-map "I:" [Idiaeresis])
474 571
475 (define-key compose-map "L-" [sterling]) 572 (define-key compose-map "L-" [sterling])
476 (define-key compose-map "L=" [sterling]) 573 (define-key compose-map "L=" [sterling])
477 574
478 (define-key compose-map "N~" [Ntilde]) 575 (define-key compose-map "N~" [Ntilde])
489 (define-key compose-map "O`" [Ograve]) 586 (define-key compose-map "O`" [Ograve])
490 (define-key compose-map "O'" [Oacute]) 587 (define-key compose-map "O'" [Oacute])
491 (define-key compose-map "O^" [Ocircumflex]) 588 (define-key compose-map "O^" [Ocircumflex])
492 (define-key compose-map "O~" [Otilde]) 589 (define-key compose-map "O~" [Otilde])
493 (define-key compose-map "O\"" [Odiaeresis]) 590 (define-key compose-map "O\"" [Odiaeresis])
591 (define-key compose-map "O:" [Odiaeresis])
494 (define-key compose-map "O/" [Ooblique]) 592 (define-key compose-map "O/" [Ooblique])
495 593
496 (define-key compose-map "P!" [paragraph]) 594 (define-key compose-map "P!" [paragraph])
497 595
498 (define-key compose-map "R0" [registered]) 596 (define-key compose-map "R0" [registered])
509 607
510 (define-key compose-map "U`" [Ugrave]) 608 (define-key compose-map "U`" [Ugrave])
511 (define-key compose-map "U'" [Uacute]) 609 (define-key compose-map "U'" [Uacute])
512 (define-key compose-map "U^" [Ucircumflex]) 610 (define-key compose-map "U^" [Ucircumflex])
513 (define-key compose-map "U\"" [Udiaeresis]) 611 (define-key compose-map "U\"" [Udiaeresis])
612 (define-key compose-map "U:" [Udiaeresis])
514 613
515 (define-key compose-map "X0" [currency]) 614 (define-key compose-map "X0" [currency])
516 (define-key compose-map "XO" [currency]) 615 (define-key compose-map "XO" [currency])
517 (define-key compose-map "Xo" [currency]) 616 (define-key compose-map "Xo" [currency])
518 617
533 (define-key compose-map "a`" [agrave]) 632 (define-key compose-map "a`" [agrave])
534 (define-key compose-map "a'" [aacute]) 633 (define-key compose-map "a'" [aacute])
535 (define-key compose-map "a^" [acircumflex]) 634 (define-key compose-map "a^" [acircumflex])
536 (define-key compose-map "a~" [atilde]) 635 (define-key compose-map "a~" [atilde])
537 (define-key compose-map "a\"" [adiaeresis]) 636 (define-key compose-map "a\"" [adiaeresis])
637 (define-key compose-map "a:" [adiaeresis])
538 (define-key compose-map "a*" [aring]) 638 (define-key compose-map "a*" [aring])
539 (define-key compose-map "ae" [ae]) 639 (define-key compose-map "ae" [ae])
540 640
541 (define-key compose-map "c/" [cent]) 641 (define-key compose-map "c/" [cent])
542 (define-key compose-map "c|" [cent]) 642 (define-key compose-map "c|" [cent])
549 649
550 (define-key compose-map "e`" [egrave]) 650 (define-key compose-map "e`" [egrave])
551 (define-key compose-map "e'" [eacute]) 651 (define-key compose-map "e'" [eacute])
552 (define-key compose-map "e^" [ecircumflex]) 652 (define-key compose-map "e^" [ecircumflex])
553 (define-key compose-map "e\"" [ediaeresis]) 653 (define-key compose-map "e\"" [ediaeresis])
654 (define-key compose-map "e:" [ediaeresis])
554 655
555 (define-key compose-map "i`" [igrave]) 656 (define-key compose-map "i`" [igrave])
556 (define-key compose-map "i'" [iacute]) 657 (define-key compose-map "i'" [iacute])
557 (define-key compose-map "i^" [icircumflex]) 658 (define-key compose-map "i^" [icircumflex])
558 (define-key compose-map "i\"" [idiaeresis]) 659 (define-key compose-map "i\"" [idiaeresis])
660 (define-key compose-map "i:" [idiaeresis])
559 661
560 (define-key compose-map "l-" [sterling]) 662 (define-key compose-map "l-" [sterling])
561 (define-key compose-map "l=" [sterling]) 663 (define-key compose-map "l=" [sterling])
562 664
563 (define-key compose-map "n~" [ntilde]) 665 (define-key compose-map "n~" [ntilde])
574 (define-key compose-map "o`" [ograve]) 676 (define-key compose-map "o`" [ograve])
575 (define-key compose-map "o'" [oacute]) 677 (define-key compose-map "o'" [oacute])
576 (define-key compose-map "o^" [ocircumflex]) 678 (define-key compose-map "o^" [ocircumflex])
577 (define-key compose-map "o~" [otilde]) 679 (define-key compose-map "o~" [otilde])
578 (define-key compose-map "o\"" [odiaeresis]) 680 (define-key compose-map "o\"" [odiaeresis])
681 (define-key compose-map "o:" [odiaeresis])
579 (define-key compose-map "o/" [oslash]) 682 (define-key compose-map "o/" [oslash])
580 683
581 (define-key compose-map "p!" [paragraph]) 684 (define-key compose-map "p!" [paragraph])
582 685
583 (define-key compose-map "r0" [registered]) 686 (define-key compose-map "r0" [registered])
594 697
595 (define-key compose-map "u`" [ugrave]) 698 (define-key compose-map "u`" [ugrave])
596 (define-key compose-map "u'" [uacute]) 699 (define-key compose-map "u'" [uacute])
597 (define-key compose-map "u^" [ucircumflex]) 700 (define-key compose-map "u^" [ucircumflex])
598 (define-key compose-map "u\"" [udiaeresis]) 701 (define-key compose-map "u\"" [udiaeresis])
702 (define-key compose-map "u:" [udiaeresis])
599 (define-key compose-map "u/" [mu]) 703 (define-key compose-map "u/" [mu])
600 704
601 (define-key compose-map "x0" [currency]) 705 (define-key compose-map "x0" [currency])
602 (define-key compose-map "xO" [currency]) 706 (define-key compose-map "xO" [currency])
603 (define-key compose-map "xo" [currency]) 707 (define-key compose-map "xo" [currency])
605 709
606 (define-key compose-map "y-" [yen]) 710 (define-key compose-map "y-" [yen])
607 (define-key compose-map "y=" [yen]) 711 (define-key compose-map "y=" [yen])
608 (define-key compose-map "y'" [yacute]) 712 (define-key compose-map "y'" [yacute])
609 (define-key compose-map "y\"" [ydiaeresis]) 713 (define-key compose-map "y\"" [ydiaeresis])
714 (define-key compose-map "y:" [ydiaeresis])
610 715
611 (define-key compose-map "|C" [cent]) 716 (define-key compose-map "|C" [cent])
612 (define-key compose-map "|c" [cent]) 717 (define-key compose-map "|c" [cent])
613 (define-key compose-map "||" [brokenbar]) 718 (define-key compose-map "||" [brokenbar])
614 719
643 (let* ((c last-command-char) 748 (let* ((c last-command-char)
644 (map (cond ((eq c ?') compose-acute-map) 749 (map (cond ((eq c ?') compose-acute-map)
645 ((eq c ?`) compose-grave-map) 750 ((eq c ?`) compose-grave-map)
646 ((eq c ?,) compose-cedilla-map) 751 ((eq c ?,) compose-cedilla-map)
647 ((eq c ?:) compose-diaeresis-map) 752 ((eq c ?:) compose-diaeresis-map)
753 ((eq c ?\") compose-diaeresis-map)
648 ((eq c ?^) compose-circumflex-map) 754 ((eq c ?^) compose-circumflex-map)
649 ((eq c ?~) compose-tilde-map) 755 ((eq c ?~) compose-tilde-map)
650 ((eq c ?.) compose-ring-map) 756 ((eq c ?.) compose-ring-map)
651 (t (error "unknown diacritic: %s (%c)" c c)))) 757 (t (error "unknown diacritic: %s (%c)" c c))))
652 (base-char (preceding-char)) 758 (base-char (preceding-char))