1;;; iso-insert.el --- insert functions for ISO 8859/1  -*- coding: iso-8859-1;-*-
2
3;; Copyright (C) 1987, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007
4;;   Free Software Foundation, Inc.
5
6;; Author: Howard Gayle
7;; Maintainer: FSF
8;; Keywords: i18n
9
10;; This file is part of GNU Emacs.
11
12;; GNU Emacs is free software; you can redistribute it and/or modify
13;; it under the terms of the GNU General Public License as published by
14;; the Free Software Foundation; either version 2, or (at your option)
15;; any later version.
16
17;; GNU Emacs is distributed in the hope that it will be useful,
18;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20;; GNU General Public License for more details.
21
22;; You should have received a copy of the GNU General Public License
23;; along with GNU Emacs; see the file COPYING.  If not, write to the
24;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
25;; Boston, MA 02110-1301, USA.
26
27;;; Commentary:
28
29;; Provides keys for inserting ISO Latin-1 characters.  They use the
30;; prefix key C-x 8.  Type C-x 8 C-h for a list.
31
32;;; Code:
33
34(defun insert-no-break-space ()
35   (interactive "*")
36   (insert ?\�)
37)
38
39(defun insert-inverted-exclamation-mark ()
40   (interactive "*")
41   (insert ?\�)
42)
43
44(defun insert-cent-sign ()
45   (interactive "*")
46   (insert ?\�)
47)
48
49(defun insert-pound-sign ()
50   (interactive "*")
51   (insert ?\�)
52)
53
54(defun insert-general-currency-sign ()
55   (interactive "*")
56   (insert ?\�)
57)
58
59(defun insert-yen-sign ()
60   (interactive "*")
61   (insert ?\�)
62)
63
64(defun insert-broken-vertical-line ()
65   (interactive "*")
66   (insert ?\�)
67)
68
69(defun insert-section-sign ()
70   (interactive "*")
71   (insert ?\�)
72)
73
74(defun insert-diaeresis ()
75   (interactive "*")
76   (insert ?\�)
77)
78
79(defun insert-copyright-sign ()
80   (interactive "*")
81   (insert ?\�)
82)
83
84(defun insert-ordinal-indicator-feminine ()
85   (interactive "*")
86   (insert ?\�)
87)
88
89(defun insert-angle-quotation-mark-left ()
90   (interactive "*")
91   (insert ?\�)
92)
93
94(defun insert-not-sign ()
95   (interactive "*")
96   (insert ?\�)
97)
98
99(defun insert-soft-hyphen ()
100   (interactive "*")
101   (insert ?\�)
102)
103
104(defun insert-registered-sign ()
105   (interactive "*")
106   (insert ?\�)
107)
108
109(defun insert-macron ()
110   (interactive "*")
111   (insert ?\�)
112)
113
114(defun insert-degree-sign ()
115   (interactive "*")
116   (insert ?\�)
117)
118
119(defun insert-plus-or-minus-sign ()
120   (interactive "*")
121   (insert ?\�)
122)
123
124(defun insert-superscript-two ()
125   (interactive "*")
126   (insert ?\�)
127)
128
129(defun insert-superscript-three ()
130   (interactive "*")
131   (insert ?\�)
132)
133
134(defun insert-acute-accent ()
135   (interactive "*")
136   (insert ?\�)
137)
138
139(defun insert-micro-sign ()
140   (interactive "*")
141   (insert ?\�)
142)
143
144(defun insert-pilcrow ()
145   (interactive "*")
146   (insert ?\�)
147)
148
149(defun insert-middle-dot ()
150   (interactive "*")
151   (insert ?\�)
152)
153
154(defun insert-cedilla ()
155   (interactive "*")
156   (insert ?\�)
157)
158
159(defun insert-superscript-one ()
160   (interactive "*")
161   (insert ?\�)
162)
163
164(defun insert-ordinal-indicator-masculine ()
165   (interactive "*")
166   (insert ?\�)
167)
168
169(defun insert-angle-quotation-mark-right ()
170   (interactive "*")
171   (insert ?\�)
172)
173
174(defun insert-fraction-one-quarter ()
175   (interactive "*")
176   (insert ?\�)
177)
178
179(defun insert-fraction-one-half ()
180   (interactive "*")
181   (insert ?\�)
182)
183
184(defun insert-fraction-three-quarters ()
185   (interactive "*")
186   (insert ?\�)
187)
188
189(defun insert-inverted-question-mark ()
190   (interactive "*")
191   (insert ?\�)
192)
193
194(defun insert-A-grave ()
195   (interactive "*")
196   (insert ?\�)
197)
198
199(defun insert-A-acute ()
200   (interactive "*")
201   (insert ?\�)
202)
203
204(defun insert-A-circumflex ()
205   (interactive "*")
206   (insert ?\�)
207)
208
209(defun insert-A-tilde ()
210   (interactive "*")
211   (insert ?\�)
212)
213
214(defun insert-A-umlaut ()
215   (interactive "*")
216   (insert ?\�)
217)
218
219(defun insert-A-ring ()
220   (interactive "*")
221   (insert ?\�)
222)
223
224(defun insert-AE ()
225   (interactive "*")
226   (insert ?\�)
227)
228
229(defun insert-C-cedilla ()
230   (interactive "*")
231   (insert ?\�)
232)
233
234(defun insert-E-grave ()
235   (interactive "*")
236   (insert ?\�)
237)
238
239(defun insert-E-acute ()
240   (interactive "*")
241   (insert ?\�)
242)
243
244(defun insert-E-circumflex ()
245   (interactive "*")
246   (insert ?\�)
247)
248
249(defun insert-E-umlaut ()
250   (interactive "*")
251   (insert ?\�)
252)
253
254(defun insert-I-grave ()
255   (interactive "*")
256   (insert ?\�)
257)
258
259(defun insert-I-acute ()
260   (interactive "*")
261   (insert ?\�)
262)
263
264(defun insert-I-circumflex ()
265   (interactive "*")
266   (insert ?\�)
267)
268
269(defun insert-I-umlaut ()
270   (interactive "*")
271   (insert ?\�)
272)
273
274(defun insert-D-stroke ()
275   (interactive "*")
276   (insert ?\�)
277)
278
279(defun insert-N-tilde ()
280   (interactive "*")
281   (insert ?\�)
282)
283
284(defun insert-O-grave ()
285   (interactive "*")
286   (insert ?\�)
287)
288
289(defun insert-O-acute ()
290   (interactive "*")
291   (insert ?\�)
292)
293
294(defun insert-O-circumflex ()
295   (interactive "*")
296   (insert ?\�)
297)
298
299(defun insert-O-tilde ()
300   (interactive "*")
301   (insert ?\�)
302)
303
304(defun insert-O-umlaut ()
305   (interactive "*")
306   (insert ?\�)
307)
308
309(defun insert-multiplication-sign ()
310   (interactive "*")
311   (insert ?\�)
312)
313
314(defun insert-O-slash ()
315   (interactive "*")
316   (insert ?\�)
317)
318
319(defun insert-U-grave ()
320   (interactive "*")
321   (insert ?\�)
322)
323
324(defun insert-U-acute ()
325   (interactive "*")
326   (insert ?\�)
327)
328
329(defun insert-U-circumflex ()
330   (interactive "*")
331   (insert ?\�)
332)
333
334(defun insert-U-umlaut ()
335   (interactive "*")
336   (insert ?\�)
337)
338
339(defun insert-Y-acute ()
340   (interactive "*")
341   (insert ?\�)
342)
343
344(defun insert-THORN ()
345   (interactive "*")
346   (insert ?\�)
347)
348
349(defun insert-ss ()
350   (interactive "*")
351   (insert ?\�)
352)
353
354(defun insert-a-grave ()
355   (interactive "*")
356   (insert ?\�)
357)
358
359(defun insert-a-acute ()
360   (interactive "*")
361   (insert ?\�)
362)
363
364(defun insert-a-circumflex ()
365   (interactive "*")
366   (insert ?\�)
367)
368
369(defun insert-a-tilde ()
370   (interactive "*")
371   (insert ?\�)
372)
373
374(defun insert-a-umlaut ()
375   (interactive "*")
376   (insert ?\�)
377)
378
379(defun insert-a-ring ()
380   (interactive "*")
381   (insert ?\�)
382)
383
384(defun insert-ae ()
385   (interactive "*")
386   (insert ?\�)
387)
388
389(defun insert-c-cedilla ()
390   (interactive "*")
391   (insert ?\�)
392)
393
394(defun insert-e-grave ()
395   (interactive "*")
396   (insert ?\�)
397)
398
399(defun insert-e-acute ()
400   (interactive "*")
401   (insert ?\�)
402)
403
404(defun insert-e-circumflex ()
405   (interactive "*")
406   (insert ?\�)
407)
408
409(defun insert-e-umlaut ()
410   (interactive "*")
411   (insert ?\�)
412)
413
414(defun insert-i-grave ()
415   (interactive "*")
416   (insert ?\�)
417)
418
419(defun insert-i-acute ()
420   (interactive "*")
421   (insert ?\�)
422)
423
424(defun insert-i-circumflex ()
425   (interactive "*")
426   (insert ?\�)
427)
428
429(defun insert-i-umlaut ()
430   (interactive "*")
431   (insert ?\�)
432)
433
434(defun insert-d-stroke ()
435   (interactive "*")
436   (insert ?\�)
437)
438
439(defun insert-n-tilde ()
440   (interactive "*")
441   (insert ?\�)
442)
443
444(defun insert-o-grave ()
445   (interactive "*")
446   (insert ?\�)
447)
448
449(defun insert-o-acute ()
450   (interactive "*")
451   (insert ?\�)
452)
453
454(defun insert-o-circumflex ()
455   (interactive "*")
456   (insert ?\�)
457)
458
459(defun insert-o-tilde ()
460   (interactive "*")
461   (insert ?\�)
462)
463
464(defun insert-o-umlaut ()
465   (interactive "*")
466   (insert ?\�)
467)
468
469(defun insert-division-sign ()
470   (interactive "*")
471   (insert ?\�)
472)
473
474(defun insert-o-slash ()
475   (interactive "*")
476   (insert ?\�)
477)
478
479(defun insert-u-grave ()
480   (interactive "*")
481   (insert ?\�)
482)
483
484(defun insert-u-acute ()
485   (interactive "*")
486   (insert ?\�)
487)
488
489(defun insert-u-circumflex ()
490   (interactive "*")
491   (insert ?\�)
492)
493
494(defun insert-u-umlaut ()
495   (interactive "*")
496   (insert ?\�)
497)
498
499(defun insert-y-acute ()
500   (interactive "*")
501   (insert ?\�)
502)
503
504(defun insert-thorn ()
505   (interactive "*")
506   (insert ?\�)
507)
508
509(defun insert-y-umlaut ()
510   (interactive "*")
511   (insert ?\�)
512)
513
514(defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.")
515(if 8859-1-map nil
516   (setq 8859-1-map (make-keymap))
517   (define-key 8859-1-map " "    'insert-no-break-space)
518   (define-key 8859-1-map "!"    'insert-inverted-exclamation-mark)
519   (define-key 8859-1-map "\""   (make-sparse-keymap))
520   (define-key 8859-1-map "\"\"" 'insert-diaeresis)
521   (define-key 8859-1-map "\"A"  'insert-A-umlaut)
522   (define-key 8859-1-map "\"E"  'insert-E-umlaut)
523   (define-key 8859-1-map "\"I"  'insert-I-umlaut)
524   (define-key 8859-1-map "\"O"  'insert-O-umlaut)
525   (define-key 8859-1-map "\"U"  'insert-U-umlaut)
526   (define-key 8859-1-map "\"a"  'insert-a-umlaut)
527   (define-key 8859-1-map "\"e"  'insert-e-umlaut)
528   (define-key 8859-1-map "\"i"  'insert-i-umlaut)
529   (define-key 8859-1-map "\"o"  'insert-o-umlaut)
530   (define-key 8859-1-map "\"u"  'insert-u-umlaut)
531   (define-key 8859-1-map "\"y"  'insert-y-umlaut)
532   (define-key 8859-1-map "'"    (make-sparse-keymap))
533   (define-key 8859-1-map "''"   'insert-acute-accent)
534   (define-key 8859-1-map "'A"   'insert-A-acute)
535   (define-key 8859-1-map "'E"   'insert-E-acute)
536   (define-key 8859-1-map "'I"   'insert-I-acute)
537   (define-key 8859-1-map "'O"   'insert-O-acute)
538   (define-key 8859-1-map "'U"   'insert-U-acute)
539   (define-key 8859-1-map "'Y"   'insert-Y-acute)
540   (define-key 8859-1-map "'a"   'insert-a-acute)
541   (define-key 8859-1-map "'e"   'insert-e-acute)
542   (define-key 8859-1-map "'i"   'insert-i-acute)
543   (define-key 8859-1-map "'o"   'insert-o-acute)
544   (define-key 8859-1-map "'u"   'insert-u-acute)
545   (define-key 8859-1-map "'y"   'insert-y-acute)
546   (define-key 8859-1-map "$"    'insert-general-currency-sign)
547   (define-key 8859-1-map "+"    'insert-plus-or-minus-sign)
548   (define-key 8859-1-map ","    (make-sparse-keymap))
549   (define-key 8859-1-map ",,"   'insert-cedilla)
550   (define-key 8859-1-map ",C"   'insert-C-cedilla)
551   (define-key 8859-1-map ",c"   'insert-c-cedilla)
552   (define-key 8859-1-map "-"    'insert-soft-hyphen)
553   (define-key 8859-1-map "."    'insert-middle-dot)
554   (define-key 8859-1-map "/"    (make-sparse-keymap))
555   (define-key 8859-1-map "//"   'insert-division-sign)
556   (define-key 8859-1-map "/O"   'insert-O-slash)
557   (define-key 8859-1-map "/o"   'insert-o-slash)
558   (define-key 8859-1-map "1"    (make-sparse-keymap))
559   (define-key 8859-1-map "1/"   (make-sparse-keymap))
560   (define-key 8859-1-map "1/2"  'insert-fraction-one-half)
561   (define-key 8859-1-map "1/4"  'insert-fraction-one-quarter)
562   (define-key 8859-1-map "3"    (make-sparse-keymap))
563   (define-key 8859-1-map "3/"   (make-sparse-keymap))
564   (define-key 8859-1-map "3/4"  'insert-fraction-three-quarters)
565   (define-key 8859-1-map "<"    'insert-angle-quotation-mark-left)
566   (define-key 8859-1-map "="    'insert-macron)
567   (define-key 8859-1-map ">"    'insert-angle-quotation-mark-right)
568   (define-key 8859-1-map "?"    'insert-inverted-question-mark)
569   (define-key 8859-1-map "A"    'insert-A-ring)
570   (define-key 8859-1-map "E"    'insert-AE)
571   (define-key 8859-1-map "C"    'insert-copyright-sign)
572   (define-key 8859-1-map "D"    'insert-D-stroke)
573   (define-key 8859-1-map "L"    'insert-pound-sign)
574   (define-key 8859-1-map "P"    'insert-pilcrow)
575   (define-key 8859-1-map "R"    'insert-registered-sign)
576   (define-key 8859-1-map "S"    'insert-section-sign)
577   (define-key 8859-1-map "T"    'insert-THORN)
578   (define-key 8859-1-map "Y"    'insert-yen-sign)
579   (define-key 8859-1-map "^"    (make-sparse-keymap))
580   (define-key 8859-1-map "^1"   'insert-superscript-one)
581   (define-key 8859-1-map "^2"   'insert-superscript-two)
582   (define-key 8859-1-map "^3"   'insert-superscript-three)
583   (define-key 8859-1-map "^A"   'insert-A-circumflex)
584   (define-key 8859-1-map "^E"   'insert-E-circumflex)
585   (define-key 8859-1-map "^I"   'insert-I-circumflex)
586   (define-key 8859-1-map "^O"   'insert-O-circumflex)
587   (define-key 8859-1-map "^U"   'insert-U-circumflex)
588   (define-key 8859-1-map "^a"   'insert-a-circumflex)
589   (define-key 8859-1-map "^e"   'insert-e-circumflex)
590   (define-key 8859-1-map "^i"   'insert-i-circumflex)
591   (define-key 8859-1-map "^o"   'insert-o-circumflex)
592   (define-key 8859-1-map "^u"   'insert-u-circumflex)
593   (define-key 8859-1-map "_"    (make-sparse-keymap))
594   (define-key 8859-1-map "_a"   'insert-ordinal-indicator-feminine)
595   (define-key 8859-1-map "_o"   'insert-ordinal-indicator-masculine)
596   (define-key 8859-1-map "`"    (make-sparse-keymap))
597   (define-key 8859-1-map "`A"   'insert-A-grave)
598   (define-key 8859-1-map "`E"   'insert-E-grave)
599   (define-key 8859-1-map "`I"   'insert-I-grave)
600   (define-key 8859-1-map "`O"   'insert-O-grave)
601   (define-key 8859-1-map "`U"   'insert-U-grave)
602   (define-key 8859-1-map "`a"   'insert-a-grave)
603   (define-key 8859-1-map "`e"   'insert-e-grave)
604   (define-key 8859-1-map "`i"   'insert-i-grave)
605   (define-key 8859-1-map "`o"   'insert-o-grave)
606   (define-key 8859-1-map "`u"   'insert-u-grave)
607   (define-key 8859-1-map "a"    'insert-a-ring)
608   (define-key 8859-1-map "e"    'insert-ae)
609   (define-key 8859-1-map "c"    'insert-cent-sign)
610   (define-key 8859-1-map "d"    'insert-d-stroke)
611   (define-key 8859-1-map "o"    'insert-degree-sign)
612   (define-key 8859-1-map "s"    'insert-ss)
613   (define-key 8859-1-map "t"    'insert-thorn)
614   (define-key 8859-1-map "u"    'insert-micro-sign)
615   (define-key 8859-1-map "x"    'insert-multiplication-sign)
616   (define-key 8859-1-map "|"    'insert-broken-vertical-line)
617   (define-key 8859-1-map "~"    (make-sparse-keymap))
618   (define-key 8859-1-map "~A"   'insert-A-tilde)
619   (define-key 8859-1-map "~N"   'insert-N-tilde)
620   (define-key 8859-1-map "~O"   'insert-O-tilde)
621   (define-key 8859-1-map "~a"   'insert-a-tilde)
622   (define-key 8859-1-map "~n"   'insert-n-tilde)
623   (define-key 8859-1-map "~o"   'insert-o-tilde)
624   (define-key 8859-1-map "~~"   'insert-not-sign)
625   (if (not (lookup-key global-map "\C-x8"))
626      (define-key global-map "\C-x8" 8859-1-map))
627)
628(defalias '8859-1-map 8859-1-map)
629
630(provide 'iso-insert)
631
632;;; arch-tag: eb5f97bd-a034-4851-92ff-ab1f1bf92814
633;;; iso-insert.el ends here
634