(iso-transl-dead-key-alist): Add dead-...

and S-dead-... key names to this list.
(key-translation-map): Don't define dead-... and S-dead... here.
(iso-transl-define-keys): Handle multiple matches
in iso-transl-dead-key-alist for one accent character.
This commit is contained in:
Richard M. Stallman 1996-09-09 22:19:42 +00:00
parent 4ad679f96d
commit 9796652389

View file

@ -37,25 +37,27 @@
'((?\' . mute-acute) '((?\' . mute-acute)
(?\` . mute-grave) (?\` . mute-grave)
(?\" . mute-diaeresis) (?\" . mute-diaeresis)
(?^ . mute-asciicircum) ;; Don't use \, since \^ is special. (?^ . mute-asciicircum)
(?\~ . mute-asciitilde)) (?\~ . mute-asciitilde)
"Mapping of ASCII characters to their corresponding dead-key symbols.") (?\' . dead-acute)
(?\` . dead-grave)
;; Some X servers use these alternate names. (?\" . dead-diaeresis)
(or key-translation-map (?^ . dead-asciicircum)
(setq key-translation-map (make-sparse-keymap))) (?\~ . dead-asciitilde)
(define-key key-translation-map [dead-acute] [mute-acute]) (?^ . dead-circum)
(define-key key-translation-map [dead-grave] [mute-grave]) (?^ . dead-circumflex)
(define-key key-translation-map [dead-diaeresis] [mute-diaeresis]) (?\~ . dead-tilde)
(define-key key-translation-map [dead-asciicircum] [mute-asciicircum])
(define-key key-translation-map [dead-asciitilde] [mute-asciitilde])
;; Someone reports that these keys don't work if shifted. ;; Someone reports that these keys don't work if shifted.
;; This might fix it--no word yet. ;; This might fix it--no word yet.
(define-key key-translation-map [S-dead-acute] [mute-acute]) (?\' . S-dead-acute)
(define-key key-translation-map [S-dead-grave] [mute-grave]) (?\` . S-dead-grave)
(define-key key-translation-map [S-dead-diaeresis] [mute-diaeresis]) (?\" . S-dead-diaeresis)
(define-key key-translation-map [S-dead-asciicircum] [mute-asciicircum]) (?^ . S-dead-asciicircum)
(define-key key-translation-map [S-dead-asciitilde] [mute-asciitilde]) (?\~ . S-dead-asciitilde)
(?^ . S-dead-circum)
(?^ . S-dead-circumflex)
(?\~ . S-dead-tilde))
"Mapping of ASCII characters to their corresponding dead-key symbols.")
;; The two-character mnemonics are intended to be available in all languages. ;; The two-character mnemonics are intended to be available in all languages.
;; The ones beginning with `*' have one-character synonyms, but a ;; The ones beginning with `*' have one-character synonyms, but a
@ -215,18 +217,21 @@ sequence VECTOR. (VECTOR is normally one character long.)")
(defun iso-transl-define-keys (alist) (defun iso-transl-define-keys (alist)
(while alist (while alist
(define-key iso-transl-ctl-x-8-map (car (car alist)) (cdr (car alist))) (define-key iso-transl-ctl-x-8-map (car (car alist)) (cdr (car alist)))
(let ((vec (vconcat (car (car alist)))) (let ((inchar (aref (car (car alist)) 0))
(deadpair (assq (aref (car (car alist)) 0) (vec (vconcat (car (car alist))))
iso-transl-dead-key-alist))) (tail iso-transl-dead-key-alist))
(aset vec 0 (logior (aref vec 0) ?\A-\^@)) (aset vec 0 (logior (aref vec 0) ?\A-\^@))
(define-key key-translation-map vec (cdr (car alist))) (define-key key-translation-map vec (cdr (car alist)))
(define-key isearch-mode-map (vector (aref vec 0)) nil) (define-key isearch-mode-map (vector (aref vec 0)) nil)
(if deadpair (while tail
(let ((deadvec (copy-sequence vec))) (if (eq (car (car tail)) inchar)
(aset deadvec 0 (cdr deadpair)) (let ((deadvec (copy-sequence vec))
(define-key isearch-mode-map (vector (aref deadvec 0)) nil) (deadkey (cdr (car tail))))
(define-key key-translation-map deadvec (cdr (car alist)))))) (aset deadvec 0 deadkey)
(setq alist (cdr alist)))) (define-key isearch-mode-map (vector deadkey) nil)
(define-key key-translation-map deadvec (cdr (car alist)))))
(setq tail (cdr tail)))))
(setq alist (cdr alist)))
(defun iso-transl-set-language (lang) (defun iso-transl-set-language (lang)
(interactive (list (let ((completion-ignore-case t)) (interactive (list (let ((completion-ignore-case t))