🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.emacs.help
Article #2045

ISO input (Was: Re: 8-Bit Clean Mode for Gnu Emacs)

#2045
From: Johan Vromans
Date: Sun, 15 Sep 1991 09:39
640 lines
30388 bytes
In article <MATTHIEU.91Sep14183642@corto.laas.fr> matthieu@laas.fr (Matthieu Herrb) writes:

> You also need a way to input 8 bits char. I have written a minor mode,
> called iso-latin-1 that use the following convention for inputting
> accented letters: type the letter, followed by its  accent. This mode
> is also available from laas.laas.fr in pub/emacs/is-latin-1.el.

I can offer another ISO-latin1 minor mode with the following
characteristics:

  - Characters insert themselves (as usual).
  - A compose sequence is introduced with M-Space, and can be followed
    by any combination of characters that logically lead to a composed
    character. E.g. M-Space e' leads to the same result as M-Space 'e .
    M-Space =Y produces a 'Yen' symbol, M-Space << a 'Guillemotleft' etc.
    The characters are composed according to the DEC VT320 guide.
  - A variable 'electric-accents' makes it possible to produce
    accented characters using typewriter 'dead' keys, e.g. 'e produces
    an accented-e.
  - ISO minor mode assumes you have the patch installed that was
    mentioned in the original article: it sets ctl-arrow to obtain
    display of ISO extended characters. However, a variable
    ISO-capable controls whether the terminal if physically able to
    display the glyphs. This variable can be set by the term/$TERM.el
    files. 

---- Cut Here and feed the following to sh ----
#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 09/15/1991 09:36 UTC by jv@pronto
# Source directory /u1/users/jv
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#  21959 -r--r--r-- iso.el
#   3580 -rw-r--r-- el-accents.el
#
# ============= iso.el ==============
if test -f 'iso.el' -a X"$1" != X"-c"; then
	echo 'x - skipping iso.el (File already exists)'
else
echo 'x - extracting iso.el (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'iso.el' &&
X;; iso.el -- implement ISO extension chracters
X;; SCCS Status     : @(#)@ iso.el	1.5
X;; Author          : Johan Vromans
X;; Created On      : Mon Nov 26 15:52:42 1990
X;; Last Modified By: Johan Vromans
X;; Last Modified On: Wed Sep 11 15:31:34 1991
X;; Update Count    : 25
X;; Status          : OK
X
X;; This module defines the following functions
X;;
X;;   (ISO-build-ext-map)	creates and fills ISO-key-map
X;;   (ISO-text-mode off)	to switch ISO text mode
X;;
X;; Calling ISO-text-mode usially suffices, since this creates the keymap (once)
X;; and sets the mode accordingly.
X;;
X;; >>> The keymap is now created upon loading. This is faster <<<
X
X(require 'backquote)
X(load "el-accents" t t nil)
X
X(defvar ISO-text-mode nil)
X(defvar ISO-capable nil 
X  "*T means this terminal can display ISO characters.")	; will be set by scame-keydefs
X
X(defun ISO-text-mode (&optional off)
X  "Enables (with ARG: disables) ISO text mode for the current buffer."
X  (interactive "P")
X  (make-local-variable 'ISO-text-mode)
X  (if off
X      (progn
X	(setq ISO-text-mode nil)
X	(setq ctl-arrow nil)
X	(local-set-key "\e " nil))
X    (if ISO-capable
X	(progn
X	  (setq ctl-arrow 1)
X	  (setq ISO-text-mode t)))
X    (or (boundp 'ISO-ext-map)
X	(ISO--build-ext-map))
X    (local-set-key "\e " ISO-ext-map)
X))
X
X;(defun ISO--build-ext-map ()
X;  "Builds the ISO extension keymap."
X;  (message "Building ISO-extension keymap... ")
X;  (setq ISO-ext-map (make-keymap))
X;  (mapcar
X;   '(lambda (x) 
X;      (define-key ISO-ext-map (car x) 
X;	(`(lambda (n) (interactive "p") (insert-char (,(cdr x)) n)))))
X;   '(
X;     ;; The following info is dereived from the DEC VT320 User Guide
X;     ("  " . ? )
X;     ("!!" . ?\241)
X;     ("!P" . ?\266)
X;     ("''" . ?\264)
X;     ("'A" . ?\301)
X;     ("'E" . ?\311)
X;     ("'I" . ?\315)
X;     ("'O" . ?\323)
X;     ("'U" . ?\332)
X;     ("'a" . ?\341)
X;     ("'e" . ?\351)
X;     ("'i" . ?\355)
X;     ("'o" . ?\363)
X;     ("'u" . ?\372)
X;     ("'y" . ?\375)
X;     ("((" . ?[)
X;     ("(-" . ?{)
X;     ("))" . ?])
X;     ("*A" . ?\305)
X;     ("*a" . ?\345)
X;     ("++" . ?#)
X;     ("+-" . ?\261)
X;     (",C" . ?\307)
X;     (",c" . ?\347)
X;     ("-(" . ?{)
X;     ("-+" . ?\261)
X;     ("-," . ?\254)
X;     ("--" . ?\255)
X;     ("-:" . ?\367)
X;     ("-L" . ?\243)
X;     ("-Y" . ?\245)
X;     (".^" . ?\267)
X;     ("//" . ?\\)
X;     ("/<" . ?\\)
X;     ("/C" . ?\242)
X;     ("/O" . ?\330)
X;     ("/U" . ?\265)
X;     ("/^" . ?|)
X;     ("/o" . ?\370)
X;     ("0A" . ?\305)
X;     ("0X" . ?\244)
X;     ("0X" . ?\244)
X;     ("0^" . ?\260)
X;     ("0a" . ?\345)
X;     ("12" . ?\275)
X;     ("14" . ?\274)
X;     ("1^" . ?\271)
X;     ("2^" . ?\262)
X;     ("34" . ?\276)
X;     ("3^" . ?\263)
X;     (":-" . ?\367)
X;     ("<<" . ?\253)
X;     ("=L" . ?\243)
X;     ("=Y" . ?\245)
X;     (">>" . ?\273)
X;     ("??" . ?\277)
X;     ("A'" . ?\301)
X;     ("A*" . ?\305)
X;     ("A0" . ?\305)
X;     ("AA" . ?@)
X;     ("AE" . ?\306)
X;     ("A\"" . ?\304)
X;     ("A^" . ?\302)
X;     ("A_" . ?\252)
X;     ("A`" . ?\300)
X;     ("A~" . ?\303)
X;     ("C," . ?\307)
X;     ("C/" . ?\242)
X;     ("CO" . ?\251)
X;     ("C|" . ?\242)
X;     ("E'" . ?\311)
X;     ("E\"" . ?\313)
X;     ("E^" . ?\312)
X;     ("E`" . ?\310)
X;     ("I'" . ?\315)
X;     ("I\"" . ?\317)
X;     ("I^" . ?\316)
X;     ("I`" . ?\314)
X;     ("L-" . ?\243)
X;     ("L=" . ?\243)
X;     ("N~" . ?\321)
X;     ("O'" . ?\323)
X;     ("O/" . ?\330)
X;     ("OC" . ?\251)
X;     ("OR" . ?\256)
X;     ("O\"" . ?\326)
X;     ("O^" . ?\324)
X;     ("O_" . ?\272)
X;     ("O`" . ?\322)
X;     ("O~" . ?\325)
X;     ("P!" . ?\266)
X;     ("RO" . ?\256)
X;     ("S!" . ?\247)
X;     ("S0" . ?\247)
X;     ("SO" . ?\247)
X;     ("U'" . ?\332)
X;     ("U/" . ?\265)
X;     ("U\"" . ?\334)
X;     ("U^" . ?\333)
X;     ("U`" . ?\331)
X;     ("X0" . ?\244)
X;     ("XO" . ?\244)
X;     ("Y-" . ?\245)
X;     ("Y=" . ?\245)
X;     ("\"A" . ?\304)
X;     ("\"E" . ?\313)
X;     ("\"I" . ?\317)
X;     ("\"O" . ?\326)
X;     ("\"U" . ?\334)
X;     ("\"\"" . ?\250)
X;     ("\"a" . ?\344)
X;     ("\"e" . ?\353)
X;     ("\"i" . ?\357)
X;     ("\"o" . ?\366)
X;     ("\"u" . ?\374)
X;     ("\"y" . ?\377)
X;     ("^." . ?\267)
X;     ("^/" . ?|)
X;     ("^0" . ?\260)
X;     ("^1" . ?\271)
X;     ("^2" . ?\262)
X;     ("^3" . ?\263)
X;     ("^A" . ?\302)
X;     ("^E" . ?\312)
X;     ("^I" . ?\316)
X;     ("^O" . ?\324)
X;     ("^U" . ?\333)
X;     ("^_" . ?\257)
X;     ("^a" . ?\342)
X;     ("^e" . ?\352)
X;     ("^i" . ?\356)
X;     ("^o" . ?\364)
X;     ("^u" . ?\373)
X;     ("_A" . ?\252)
X;     ("_O" . ?\272)
X;     ("_^" . ?\257)
X;     ("`A" . ?\300)
X;     ("`E" . ?\310)
X;     ("`I" . ?\314)
X;     ("`O" . ?\322)
X;     ("`U" . ?\331)
X;     ("`a" . ?\340)
X;     ("`e" . ?\350)
X;     ("`i" . ?\354)
X;     ("`o" . ?\362)
X;     ("`u" . ?\371)
X;     ("`y" . ?\335)
X;     ("a'" . ?\341)
X;     ("a*" . ?\345)
X;     ("a0" . ?\345)
X;     ("a\"" . ?\344)
X;     ("a^" . ?\342)
X;     ("a`" . ?\340)
X;     ("ae" . ?\346)
X;     ("a~" . ?\343)
X;     ("c," . ?\347)
X;     ("e'" . ?\351)
X;     ("e\"" . ?\353)
X;     ("e^" . ?\352)
X;     ("e`" . ?\350)
X;     ("i'" . ?\355)
X;     ("i\"" . ?\357)
X;     ("i^" . ?\356)
X;     ("i`" . ?\354)
X;     ("n~" . ?\361)
X;     ("o'" . ?\363)
X;     ("o/" . ?\330)
X;     ("o/" . ?\370)
X;     ("o\"" . ?\366)
X;     ("o^" . ?\364)
X;     ("o`" . ?\362)
X;     ("ox" . ?\244)
X;     ("o~" . ?\365)
X;     ("ss" . ?\337)
X;     ("u'" . ?\372)
X;     ("u\"" . ?\374)
X;     ("u^" . ?\373)
X;     ("u`" . ?\371)
X;     ("xo" . ?\244)
X;     ("y'" . ?\375)
X;     ("y\"" . ?\377)
X;     ("y`" . ?\335)
X;     ("|C" . ?\242)
X;     ("|c" . ?\242)
X;     ("||" . ?\246)
X;     ("~A" . ?\303)
X;     ("~N" . ?\321)
X;     ("~O" . ?\325)
X;     ("~a" . ?\343)
X;     ("~n" . ?\361)
X;     ("~o" . ?\365)
X;;     ("^ " . ?\...)
X;;     ("` " . ?\...)
X;    ))
X;  (setq minor-mode-alist (append minor-mode-alist '((ISO-text-mode " ISO" ))))
X;  (message "Building ISO-extension keymap... done.")
X;)
X
X;; The following is the result from executing the above mapcar...
X(setq ISO-ext-map (make-keymap))
X(setq minor-mode-alist (append minor-mode-alist '((ISO-text-mode " ISO" ))))
X(define-key ISO-ext-map "  " '(lambda (n) (interactive "p") (insert-char  32 n))) 
X(define-key ISO-ext-map "!!" '(lambda (n) (interactive "p") (insert-char 161 n))) 
X(define-key ISO-ext-map "!P" '(lambda (n) (interactive "p") (insert-char 182 n))) 
X(define-key ISO-ext-map "''" '(lambda (n) (interactive "p") (insert-char 180 n))) 
X(define-key ISO-ext-map "'A" '(lambda (n) (interactive "p") (insert-char 193 n))) 
X(define-key ISO-ext-map "'E" '(lambda (n) (interactive "p") (insert-char 201 n))) 
X(define-key ISO-ext-map "'I" '(lambda (n) (interactive "p") (insert-char 205 n))) 
X(define-key ISO-ext-map "'O" '(lambda (n) (interactive "p") (insert-char 211 n))) 
X(define-key ISO-ext-map "'U" '(lambda (n) (interactive "p") (insert-char 218 n))) 
X(define-key ISO-ext-map "'a" '(lambda (n) (interactive "p") (insert-char 225 n))) 
X(define-key ISO-ext-map "'e" '(lambda (n) (interactive "p") (insert-char 233 n))) 
X(define-key ISO-ext-map "'i" '(lambda (n) (interactive "p") (insert-char 237 n))) 
X(define-key ISO-ext-map "'o" '(lambda (n) (interactive "p") (insert-char 243 n))) 
X(define-key ISO-ext-map "'u" '(lambda (n) (interactive "p") (insert-char 250 n))) 
X(define-key ISO-ext-map "'y" '(lambda (n) (interactive "p") (insert-char 253 n))) 
X(define-key ISO-ext-map "((" '(lambda (n) (interactive "p") (insert-char  91 n))) 
X(define-key ISO-ext-map "(-" '(lambda (n) (interactive "p") (insert-char 123 n))) 
X(define-key ISO-ext-map "))" '(lambda (n) (interactive "p") (insert-char  93 n))) 
X(define-key ISO-ext-map "*A" '(lambda (n) (interactive "p") (insert-char 197 n))) 
X(define-key ISO-ext-map "*a" '(lambda (n) (interactive "p") (insert-char 229 n))) 
X(define-key ISO-ext-map "++" '(lambda (n) (interactive "p") (insert-char  35 n))) 
X(define-key ISO-ext-map "+-" '(lambda (n) (interactive "p") (insert-char 177 n))) 
X(define-key ISO-ext-map ",C" '(lambda (n) (interactive "p") (insert-char 199 n))) 
X(define-key ISO-ext-map ",c" '(lambda (n) (interactive "p") (insert-char 231 n))) 
X(define-key ISO-ext-map "-(" '(lambda (n) (interactive "p") (insert-char 123 n))) 
X(define-key ISO-ext-map "-+" '(lambda (n) (interactive "p") (insert-char 177 n))) 
X(define-key ISO-ext-map "-," '(lambda (n) (interactive "p") (insert-char 172 n))) 
X(define-key ISO-ext-map "--" '(lambda (n) (interactive "p") (insert-char 173 n))) 
X(define-key ISO-ext-map "-:" '(lambda (n) (interactive "p") (insert-char 247 n))) 
X(define-key ISO-ext-map "-L" '(lambda (n) (interactive "p") (insert-char 163 n))) 
X(define-key ISO-ext-map "-Y" '(lambda (n) (interactive "p") (insert-char 165 n))) 
X(define-key ISO-ext-map ".^" '(lambda (n) (interactive "p") (insert-char 183 n))) 
X(define-key ISO-ext-map "//" '(lambda (n) (interactive "p") (insert-char  92 n))) 
X(define-key ISO-ext-map "/<" '(lambda (n) (interactive "p") (insert-char  92 n))) 
X(define-key ISO-ext-map "/C" '(lambda (n) (interactive "p") (insert-char 162 n))) 
X(define-key ISO-ext-map "/O" '(lambda (n) (interactive "p") (insert-char 216 n))) 
X(define-key ISO-ext-map "/U" '(lambda (n) (interactive "p") (insert-char 181 n))) 
X(define-key ISO-ext-map "/^" '(lambda (n) (interactive "p") (insert-char 124 n))) 
X(define-key ISO-ext-map "/o" '(lambda (n) (interactive "p") (insert-char 248 n))) 
X(define-key ISO-ext-map "0A" '(lambda (n) (interactive "p") (insert-char 197 n))) 
X(define-key ISO-ext-map "0X" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "0X" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "0^" '(lambda (n) (interactive "p") (insert-char 176 n))) 
X(define-key ISO-ext-map "0a" '(lambda (n) (interactive "p") (insert-char 229 n))) 
X(define-key ISO-ext-map "12" '(lambda (n) (interactive "p") (insert-char 189 n))) 
X(define-key ISO-ext-map "14" '(lambda (n) (interactive "p") (insert-char 188 n))) 
X(define-key ISO-ext-map "1^" '(lambda (n) (interactive "p") (insert-char 185 n))) 
X(define-key ISO-ext-map "2^" '(lambda (n) (interactive "p") (insert-char 178 n))) 
X(define-key ISO-ext-map "34" '(lambda (n) (interactive "p") (insert-char 190 n))) 
X(define-key ISO-ext-map "3^" '(lambda (n) (interactive "p") (insert-char 179 n))) 
X(define-key ISO-ext-map ":-" '(lambda (n) (interactive "p") (insert-char 247 n))) 
X(define-key ISO-ext-map "<<" '(lambda (n) (interactive "p") (insert-char 171 n))) 
X(define-key ISO-ext-map "=L" '(lambda (n) (interactive "p") (insert-char 163 n))) 
X(define-key ISO-ext-map "=Y" '(lambda (n) (interactive "p") (insert-char 165 n))) 
X(define-key ISO-ext-map ">>" '(lambda (n) (interactive "p") (insert-char 187 n))) 
X(define-key ISO-ext-map "??" '(lambda (n) (interactive "p") (insert-char 191 n))) 
X(define-key ISO-ext-map "A'" '(lambda (n) (interactive "p") (insert-char 193 n))) 
X(define-key ISO-ext-map "A*" '(lambda (n) (interactive "p") (insert-char 197 n))) 
X(define-key ISO-ext-map "A0" '(lambda (n) (interactive "p") (insert-char 197 n))) 
X(define-key ISO-ext-map "AA" '(lambda (n) (interactive "p") (insert-char  64 n))) 
X(define-key ISO-ext-map "AE" '(lambda (n) (interactive "p") (insert-char 198 n))) 
X(define-key ISO-ext-map "A\"" '(lambda (n) (interactive "p") (insert-char 196 n))) 
X(define-key ISO-ext-map "A^" '(lambda (n) (interactive "p") (insert-char 194 n))) 
X(define-key ISO-ext-map "A_" '(lambda (n) (interactive "p") (insert-char 170 n))) 
X(define-key ISO-ext-map "A`" '(lambda (n) (interactive "p") (insert-char 192 n))) 
X(define-key ISO-ext-map "A~" '(lambda (n) (interactive "p") (insert-char 195 n))) 
X(define-key ISO-ext-map "C," '(lambda (n) (interactive "p") (insert-char 199 n))) 
X(define-key ISO-ext-map "C/" '(lambda (n) (interactive "p") (insert-char 162 n))) 
X(define-key ISO-ext-map "CO" '(lambda (n) (interactive "p") (insert-char 169 n))) 
X(define-key ISO-ext-map "C|" '(lambda (n) (interactive "p") (insert-char 162 n))) 
X(define-key ISO-ext-map "E'" '(lambda (n) (interactive "p") (insert-char 201 n))) 
X(define-key ISO-ext-map "E\"" '(lambda (n) (interactive "p") (insert-char 203 n))) 
X(define-key ISO-ext-map "E^" '(lambda (n) (interactive "p") (insert-char 202 n))) 
X(define-key ISO-ext-map "E`" '(lambda (n) (interactive "p") (insert-char 200 n))) 
X(define-key ISO-ext-map "I'" '(lambda (n) (interactive "p") (insert-char 205 n))) 
X(define-key ISO-ext-map "I\"" '(lambda (n) (interactive "p") (insert-char 207 n))) 
X(define-key ISO-ext-map "I^" '(lambda (n) (interactive "p") (insert-char 206 n))) 
X(define-key ISO-ext-map "I`" '(lambda (n) (interactive "p") (insert-char 204 n))) 
X(define-key ISO-ext-map "L-" '(lambda (n) (interactive "p") (insert-char 163 n))) 
X(define-key ISO-ext-map "L=" '(lambda (n) (interactive "p") (insert-char 163 n))) 
X(define-key ISO-ext-map "N~" '(lambda (n) (interactive "p") (insert-char 209 n))) 
X(define-key ISO-ext-map "O'" '(lambda (n) (interactive "p") (insert-char 211 n))) 
X(define-key ISO-ext-map "O/" '(lambda (n) (interactive "p") (insert-char 216 n))) 
X(define-key ISO-ext-map "OC" '(lambda (n) (interactive "p") (insert-char 169 n))) 
X(define-key ISO-ext-map "OR" '(lambda (n) (interactive "p") (insert-char 174 n))) 
X(define-key ISO-ext-map "O\"" '(lambda (n) (interactive "p") (insert-char 214 n))) 
X(define-key ISO-ext-map "O^" '(lambda (n) (interactive "p") (insert-char 212 n))) 
X(define-key ISO-ext-map "O_" '(lambda (n) (interactive "p") (insert-char 186 n))) 
X(define-key ISO-ext-map "O`" '(lambda (n) (interactive "p") (insert-char 210 n))) 
X(define-key ISO-ext-map "O~" '(lambda (n) (interactive "p") (insert-char 213 n))) 
X(define-key ISO-ext-map "P!" '(lambda (n) (interactive "p") (insert-char 182 n))) 
X(define-key ISO-ext-map "RO" '(lambda (n) (interactive "p") (insert-char 174 n))) 
X(define-key ISO-ext-map "S!" '(lambda (n) (interactive "p") (insert-char 167 n))) 
X(define-key ISO-ext-map "S0" '(lambda (n) (interactive "p") (insert-char 167 n))) 
X(define-key ISO-ext-map "SO" '(lambda (n) (interactive "p") (insert-char 167 n))) 
X(define-key ISO-ext-map "U'" '(lambda (n) (interactive "p") (insert-char 218 n))) 
X(define-key ISO-ext-map "U/" '(lambda (n) (interactive "p") (insert-char 181 n))) 
X(define-key ISO-ext-map "U\"" '(lambda (n) (interactive "p") (insert-char 220 n))) 
X(define-key ISO-ext-map "U^" '(lambda (n) (interactive "p") (insert-char 219 n))) 
X(define-key ISO-ext-map "U`" '(lambda (n) (interactive "p") (insert-char 217 n))) 
X(define-key ISO-ext-map "X0" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "XO" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "Y-" '(lambda (n) (interactive "p") (insert-char 165 n))) 
X(define-key ISO-ext-map "Y=" '(lambda (n) (interactive "p") (insert-char 165 n))) 
X(define-key ISO-ext-map "\"A" '(lambda (n) (interactive "p") (insert-char 196 n))) 
X(define-key ISO-ext-map "\"E" '(lambda (n) (interactive "p") (insert-char 203 n))) 
X(define-key ISO-ext-map "\"I" '(lambda (n) (interactive "p") (insert-char 207 n))) 
X(define-key ISO-ext-map "\"O" '(lambda (n) (interactive "p") (insert-char 214 n))) 
X(define-key ISO-ext-map "\"U" '(lambda (n) (interactive "p") (insert-char 220 n))) 
X(define-key ISO-ext-map "\"\"" '(lambda (n) (interactive "p") (insert-char 168 n))) 
X(define-key ISO-ext-map "\"a" '(lambda (n) (interactive "p") (insert-char 228 n))) 
X(define-key ISO-ext-map "\"e" '(lambda (n) (interactive "p") (insert-char 235 n))) 
X(define-key ISO-ext-map "\"i" '(lambda (n) (interactive "p") (insert-char 239 n))) 
X(define-key ISO-ext-map "\"o" '(lambda (n) (interactive "p") (insert-char 246 n))) 
X(define-key ISO-ext-map "\"u" '(lambda (n) (interactive "p") (insert-char 252 n))) 
X(define-key ISO-ext-map "\"y" '(lambda (n) (interactive "p") (insert-char 255 n))) 
X(define-key ISO-ext-map "^." '(lambda (n) (interactive "p") (insert-char 183 n))) 
X(define-key ISO-ext-map "^/" '(lambda (n) (interactive "p") (insert-char 124 n))) 
X(define-key ISO-ext-map "^0" '(lambda (n) (interactive "p") (insert-char 176 n))) 
X(define-key ISO-ext-map "^1" '(lambda (n) (interactive "p") (insert-char 185 n))) 
X(define-key ISO-ext-map "^2" '(lambda (n) (interactive "p") (insert-char 178 n))) 
X(define-key ISO-ext-map "^3" '(lambda (n) (interactive "p") (insert-char 179 n))) 
X(define-key ISO-ext-map "^A" '(lambda (n) (interactive "p") (insert-char 194 n))) 
X(define-key ISO-ext-map "^E" '(lambda (n) (interactive "p") (insert-char 202 n))) 
X(define-key ISO-ext-map "^I" '(lambda (n) (interactive "p") (insert-char 206 n))) 
X(define-key ISO-ext-map "^O" '(lambda (n) (interactive "p") (insert-char 212 n))) 
X(define-key ISO-ext-map "^U" '(lambda (n) (interactive "p") (insert-char 219 n))) 
X(define-key ISO-ext-map "^_" '(lambda (n) (interactive "p") (insert-char 175 n))) 
X(define-key ISO-ext-map "^a" '(lambda (n) (interactive "p") (insert-char 226 n))) 
X(define-key ISO-ext-map "^e" '(lambda (n) (interactive "p") (insert-char 234 n))) 
X(define-key ISO-ext-map "^i" '(lambda (n) (interactive "p") (insert-char 238 n))) 
X(define-key ISO-ext-map "^o" '(lambda (n) (interactive "p") (insert-char 244 n))) 
X(define-key ISO-ext-map "^u" '(lambda (n) (interactive "p") (insert-char 251 n))) 
X(define-key ISO-ext-map "_A" '(lambda (n) (interactive "p") (insert-char 170 n))) 
X(define-key ISO-ext-map "_O" '(lambda (n) (interactive "p") (insert-char 186 n))) 
X(define-key ISO-ext-map "_^" '(lambda (n) (interactive "p") (insert-char 175 n))) 
X(define-key ISO-ext-map "`A" '(lambda (n) (interactive "p") (insert-char 192 n))) 
X(define-key ISO-ext-map "`E" '(lambda (n) (interactive "p") (insert-char 200 n))) 
X(define-key ISO-ext-map "`I" '(lambda (n) (interactive "p") (insert-char 204 n))) 
X(define-key ISO-ext-map "`O" '(lambda (n) (interactive "p") (insert-char 210 n))) 
X(define-key ISO-ext-map "`U" '(lambda (n) (interactive "p") (insert-char 217 n))) 
X(define-key ISO-ext-map "`a" '(lambda (n) (interactive "p") (insert-char 224 n))) 
X(define-key ISO-ext-map "`e" '(lambda (n) (interactive "p") (insert-char 232 n))) 
X(define-key ISO-ext-map "`i" '(lambda (n) (interactive "p") (insert-char 236 n))) 
X(define-key ISO-ext-map "`o" '(lambda (n) (interactive "p") (insert-char 242 n))) 
X(define-key ISO-ext-map "`u" '(lambda (n) (interactive "p") (insert-char 249 n))) 
X(define-key ISO-ext-map "`y" '(lambda (n) (interactive "p") (insert-char 221 n))) 
X(define-key ISO-ext-map "a'" '(lambda (n) (interactive "p") (insert-char 225 n))) 
X(define-key ISO-ext-map "a*" '(lambda (n) (interactive "p") (insert-char 229 n))) 
X(define-key ISO-ext-map "a0" '(lambda (n) (interactive "p") (insert-char 229 n))) 
X(define-key ISO-ext-map "a\"" '(lambda (n) (interactive "p") (insert-char 228 n))) 
X(define-key ISO-ext-map "a^" '(lambda (n) (interactive "p") (insert-char 226 n))) 
X(define-key ISO-ext-map "a`" '(lambda (n) (interactive "p") (insert-char 224 n))) 
X(define-key ISO-ext-map "ae" '(lambda (n) (interactive "p") (insert-char 230 n))) 
X(define-key ISO-ext-map "a~" '(lambda (n) (interactive "p") (insert-char 227 n))) 
X(define-key ISO-ext-map "c," '(lambda (n) (interactive "p") (insert-char 231 n))) 
X(define-key ISO-ext-map "e'" '(lambda (n) (interactive "p") (insert-char 233 n))) 
X(define-key ISO-ext-map "e\"" '(lambda (n) (interactive "p") (insert-char 235 n))) 
X(define-key ISO-ext-map "e^" '(lambda (n) (interactive "p") (insert-char 234 n))) 
X(define-key ISO-ext-map "e`" '(lambda (n) (interactive "p") (insert-char 232 n))) 
X(define-key ISO-ext-map "i'" '(lambda (n) (interactive "p") (insert-char 237 n))) 
X(define-key ISO-ext-map "i\"" '(lambda (n) (interactive "p") (insert-char 239 n))) 
X(define-key ISO-ext-map "i^" '(lambda (n) (interactive "p") (insert-char 238 n))) 
X(define-key ISO-ext-map "i`" '(lambda (n) (interactive "p") (insert-char 236 n))) 
X(define-key ISO-ext-map "n~" '(lambda (n) (interactive "p") (insert-char 241 n))) 
X(define-key ISO-ext-map "o'" '(lambda (n) (interactive "p") (insert-char 243 n))) 
X(define-key ISO-ext-map "o/" '(lambda (n) (interactive "p") (insert-char 216 n))) 
X(define-key ISO-ext-map "o/" '(lambda (n) (interactive "p") (insert-char 248 n))) 
X(define-key ISO-ext-map "o\"" '(lambda (n) (interactive "p") (insert-char 246 n))) 
X(define-key ISO-ext-map "o^" '(lambda (n) (interactive "p") (insert-char 244 n))) 
X(define-key ISO-ext-map "o`" '(lambda (n) (interactive "p") (insert-char 242 n))) 
X(define-key ISO-ext-map "ox" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "o~" '(lambda (n) (interactive "p") (insert-char 245 n))) 
X(define-key ISO-ext-map "ss" '(lambda (n) (interactive "p") (insert-char 223 n))) 
X(define-key ISO-ext-map "u'" '(lambda (n) (interactive "p") (insert-char 250 n))) 
X(define-key ISO-ext-map "u\"" '(lambda (n) (interactive "p") (insert-char 252 n))) 
X(define-key ISO-ext-map "u^" '(lambda (n) (interactive "p") (insert-char 251 n))) 
X(define-key ISO-ext-map "u`" '(lambda (n) (interactive "p") (insert-char 249 n))) 
X(define-key ISO-ext-map "xo" '(lambda (n) (interactive "p") (insert-char 164 n))) 
X(define-key ISO-ext-map "y'" '(lambda (n) (interactive "p") (insert-char 253 n))) 
X(define-key ISO-ext-map "y\"" '(lambda (n) (interactive "p") (insert-char 255 n))) 
X(define-key ISO-ext-map "y`" '(lambda (n) (interactive "p") (insert-char 221 n))) 
X(define-key ISO-ext-map "|C" '(lambda (n) (interactive "p") (insert-char 162 n))) 
X(define-key ISO-ext-map "|c" '(lambda (n) (interactive "p") (insert-char 162 n))) 
X(define-key ISO-ext-map "||" '(lambda (n) (interactive "p") (insert-char 166 n))) 
X(define-key ISO-ext-map "~A" '(lambda (n) (interactive "p") (insert-char 195 n))) 
X(define-key ISO-ext-map "~N" '(lambda (n) (interactive "p") (insert-char 209 n))) 
X(define-key ISO-ext-map "~O" '(lambda (n) (interactive "p") (insert-char 213 n))) 
X(define-key ISO-ext-map "~a" '(lambda (n) (interactive "p") (insert-char 227 n))) 
X(define-key ISO-ext-map "~n" '(lambda (n) (interactive "p") (insert-char 241 n))) 
X(define-key ISO-ext-map "~o" '(lambda (n) (interactive "p") (insert-char 245 n)))
X(define-key ISO-ext-map "\e " '(lambda (n) (interactive "p") (insert-char 160 n)))
SHAR_EOF
chmod 0444 iso.el ||
echo 'restore of iso.el failed'
Wc_c="`wc -c < 'iso.el'`"
test 21959 -eq "$Wc_c" ||
	echo 'iso.el: original size 21959, current size' "$Wc_c"
fi
# ============= el-accents.el ==============
if test -f 'el-accents.el' -a X"$1" != X"-c"; then
	echo 'x - skipping el-accents.el (File already exists)'
else
echo 'x - extracting el-accents.el (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'el-accents.el' &&
X;; el-accents.el -- electric accent keys
X;;
X;; SCCS Status     : %Z%@ %M%	%I%
X;; Author          : Johan Vromans
X;; Created On      : Tue Feb  5 09:58:05 1991
X;; Last Modified By: Johan Vromans
X;; Last Modified On: Tue Feb  5 10:00:00 1991
X;; Update Count    : 3
X;; Status          : OK
X;;
X;; Use pseudo-accents to allow "dead keys" like a typewriter.
X;;
X;; Pseudo-accents are:
X;;
X;;   '  (minute)    -> grave accent
X;;   `  (backtick)  -> acute accent
X;;   "  (second)    -> diaeresis
X;;   ^  (caret)     -> circonflexe
X;;
X;; In general:
X;;
X;;   pseudo-accent + appropriate letter -> accented letter
X;;   pseudo-accent + space -> pseudo-accent
X;;   pseudo-accent + pseudo-accent -> accent (if available)
X;;   pseudo-accent + other -> pseudo-accent + other
X;;
X;; Function "electric-accents" can be used to enable the dead keys, or
X;; disable them if called with a non-null argument.
X;;
X;; The inserted codes are conformant to the ISO Latin-1 alphabeth.
X;;
X(defun electric-grave-accent ()
X  (interactive)
X  (let ((char (read-char)))
X    (cond
X     ((eq char ?A) (insert ?\301))
X     ((eq char ?E) (insert ?\311))
X     ((eq char ?I) (insert ?\315))
X     ((eq char ?O) (insert ?\323))
X     ((eq char ?U) (insert ?\332))
X     ((eq char ?a) (insert ?\341))
X     ((eq char ?e) (insert ?\351))
X     ((eq char ?i) (insert ?\355))
X     ((eq char ?o) (insert ?\363))
X     ((eq char ?u) (insert ?\372))
X     ((eq char ?') (insert ?\264))
X     ((eq char ? ) (insert ?'))
X     ((insert ?' char)))))
X
X(defun electric-acute-accent ()
X  (interactive)
X  (let ((char (read-char)))
X    (cond
X     ((eq char ?A) (insert ?\300))
X     ((eq char ?E) (insert ?\310))
X     ((eq char ?I) (insert ?\314))
X     ((eq char ?O) (insert ?\322))
X     ((eq char ?U) (insert ?\331))
X     ((eq char ?a) (insert ?\340))
X     ((eq char ?e) (insert ?\350))
X     ((eq char ?i) (insert ?\354))
X     ((eq char ?o) (insert ?\362))
X     ((eq char ?u) (insert ?\371))
X     ((eq char ? ) (insert ?`))
X     ((eq char ?`) (insert ?`))		; no special code?
X     ((insert ?` char)))))
X
X(defun electric-circonflexe ()
X  (interactive)
X  (let ((char (read-char)))
X    (cond
X     ((eq char ?A) (insert ?\302))
X     ((eq char ?E) (insert ?\312))
X     ((eq char ?I) (insert ?\316))
X     ((eq char ?O) (insert ?\324))
X     ((eq char ?U) (insert ?\333))
X     ((eq char ?a) (insert ?\342))
X     ((eq char ?e) (insert ?\352))
X     ((eq char ?i) (insert ?\356))
X     ((eq char ?o) (insert ?\364))
X     ((eq char ?u) (insert ?\373))
X     ((eq char ? ) (insert ?^))
X     ((eq char ?^) (insert ?^))		; no special code?
X     ((insert ?^ char)))))
X
X(defun electric-diaeresis ()
X  (interactive)
X  (let ((char (read-char)))
X    (cond
X     ((eq char ?A) (insert ?\304))
X     ((eq char ?E) (insert ?\313))
X     ((eq char ?I) (insert ?\317))
X     ((eq char ?O) (insert ?\326))
X     ((eq char ?U) (insert ?\334))
X     ((eq char ?a) (insert ?\344))
X     ((eq char ?e) (insert ?\353))
X     ((eq char ?i) (insert ?\357))
X     ((eq char ?o) (insert ?\366))
X     ((eq char ?u) (insert ?\374))
X     ((eq char ? ) (insert ?\"))
X     ((eq char ?\") (insert ?\250))
X     ((insert ?\" char)))))
X
X(defun electric-accents (&optional arg)
X  "Have the pseudo-accent keys behave like dead typewriter
Xkeys. With ARG, make them normal again."
X  (interactive "P")
X  (if arg
X      (progn
X	(local-unset-key "'")
X	(local-unset-key "`")
X	(local-unset-key "\"")
X	(local-unset-key "^"))
X    (local-set-key "'"  'electric-grave-accent)
X    (local-set-key "`"  'electric-acute-accent)
X    (local-set-key "^"  'electric-circonflexe)
X    (local-set-key "\"" 'electric-diaeresis)))
SHAR_EOF
chmod 0644 el-accents.el ||
echo 'restore of el-accents.el failed'
Wc_c="`wc -c < 'el-accents.el'`"
test 3580 -eq "$Wc_c" ||
	echo 'el-accents.el: original size 3580, current size' "$Wc_c"
fi
exit 0
-- 
Johan Vromans				       jv@mh.nl via internet backbones
Multihouse Automatisering bv		       uucp: ..!{uunet,hp4nl}!mh.nl!jv
Doesburgweg 7, 2803 PL Gouda, The Netherlands  phone/fax: +31 1820 62911/62500
------------------------ "Arms are made for hugging" -------------------------
Technical Details
Message-ID: <1991Sep15.093919.12766@pronto.mh.nl>
Path: arc1-ca.pugleaf.net!wupost!uunet!mcsun!hp4nl!mhres!squirrel!pronto!jv
References: <6881@ztivax.UUCP> <MATTHIEU.91Sep14183642@corto.laas.fr>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!wupost!uunet!mcsun!hp4nl!mhres!squirrel!pronto!jv
From: jv@mh.nl (Johan Vromans)
Newsgroups: gnu.emacs.help,comp.emacs,gnu.emacs.sources,alt.sources
Subject: ISO input (Was: Re: 8-Bit Clean Mode for Gnu Emacs)
Message-ID: <1991Sep15.093919.12766@pronto.mh.nl>
Date: 15 Sep 91 09:39:19 GMT
References: <6881@ztivax.UUCP> <MATTHIEU.91Sep14183642@corto.laas.fr>
Sender: jv@pronto.mh.nl (Johan Vromans)
Organization: Multihouse Automation, the Netherlands
Lines: 640
In-Reply-To: matthieu@laas.fr's message of 14 Sep 91 16:36:42 GMT
X-Md4-Signature: e29b8af141e50ac9e964cfe0a5e3dea7