French & German Input Method with Tab

This page contains Unicode characters.


;; -*- coding: mule-utf-8; -*-

(setq fg-map (make-sparse-keymap))

(define-key fg-map "1" '(lambda (arg) (interactive "p") (insert-char ?à arg)))
(define-key fg-map "2" '(lambda (arg) (interactive "p") (insert-char ?é arg)))
(define-key fg-map "3" '(lambda (arg) (interactive "p") (insert-char ?è arg)))
(define-key fg-map "4" '(lambda (arg) (interactive "p") (insert-char ?ù arg)))
(define-key fg-map "5" '(lambda (arg) (interactive "p") (insert-char ?ç arg)))

(define-key fg-map "!" '(lambda (arg) (interactive "p") (insert-char ?À arg)))
(define-key fg-map "@" '(lambda (arg) (interactive "p") (insert-char ?É arg)))
(define-key fg-map "#" '(lambda (arg) (interactive "p") (insert-char ?È arg)))
(define-key fg-map "$" '(lambda (arg) (interactive "p") (insert-char ?Ù arg)))
(define-key fg-map "%" '(lambda (arg) (interactive "p") (insert-char ?Ç arg)))

(define-key fg-map "'" '(lambda (arg) (interactive "p") (insert-char ?’ arg)))
(define-key fg-map "," '(lambda (arg) (interactive "p") (insert-char ?„ arg)))
(define-key fg-map "." '(lambda (arg) (interactive "p") (insert-char ?· arg)))
(define-key fg-map "p" '(lambda (arg) (interactive "p") (insert-char ?ß arg)))
(define-key fg-map "y" '(lambda (arg) (interactive "p") (insert-char ?œ arg)))

(define-key fg-map "\"" '(lambda (arg) (interactive "p") (insert-char ?” arg)))
(define-key fg-map "<" '(lambda (arg) (interactive "p") (insert-char ?« arg)))
(define-key fg-map ">" '(lambda (arg) (interactive "p") (insert-char ?» arg)))
(define-key fg-map "P" '(lambda (arg) (interactive "p") (insert-char ?ÿ arg)))
(define-key fg-map "Y" '(lambda (arg) (interactive "p") (insert-char ?Œ arg)))

(define-key fg-map "a" '(lambda (arg) (interactive "p") (insert-char ?ä arg)))
(define-key fg-map "o" '(lambda (arg) (interactive "p") (insert-char ?ö arg)))
(define-key fg-map "e" '(lambda (arg) (interactive "p") (insert-char ?ë arg)))
(define-key fg-map "u" '(lambda (arg) (interactive "p") (insert-char ?ü arg)))
(define-key fg-map "i" '(lambda (arg) (interactive "p") (insert-char ?ï arg)))

(define-key fg-map "A" '(lambda (arg) (interactive "p") (insert-char ?Ä arg)))
(define-key fg-map "O" '(lambda (arg) (interactive "p") (insert-char ?Ö arg)))
(define-key fg-map "E" '(lambda (arg) (interactive "p") (insert-char ?Ë arg)))
(define-key fg-map "U" '(lambda (arg) (interactive "p") (insert-char ?Ü arg)))
(define-key fg-map "I" '(lambda (arg) (interactive "p") (insert-char ?Ï arg)))

(define-key fg-map ";" '(lambda (arg) (interactive "p") (insert-char ?â arg)))
(define-key fg-map "q" '(lambda (arg) (interactive "p") (insert-char ?ô arg)))
(define-key fg-map "j" '(lambda (arg) (interactive "p") (insert-char ?ê arg)))
(define-key fg-map "k" '(lambda (arg) (interactive "p") (insert-char ?û arg)))
(define-key fg-map "x" '(lambda (arg) (interactive "p") (insert-char ?î arg)))

(define-key fg-map ":" '(lambda (arg) (interactive "p") (insert-char ? arg)))
(define-key fg-map "Q" '(lambda (arg) (interactive "p") (insert-char ?Ô arg)))
(define-key fg-map "J" '(lambda (arg) (interactive "p") (insert-char ?Ê arg)))
(define-key fg-map "K" '(lambda (arg) (interactive "p") (insert-char ?Û arg)))
(define-key fg-map "X" '(lambda (arg) (interactive "p") (insert-char ?Î arg)))

(define-key fg-map "`" '(lambda (arg) (interactive "p") (insert-char ?‘ arg)))
(define-key fg-map "~" '(lambda (arg) (interactive "p") (insert-char ?“ arg)))

(global-set-key [tab] fg-map)

;;;

(define-key isearch-mode-map [tab]
  (lambda ()
    (interactive)
    (let (ch)
      (when (setq ch (fg-map-char (read-event)))
	(isearch-process-search-char ch)))))

(defun fg-map-char (ch)
  (cond
   ((= ch ?1) ?à)
   ((= ch ?2) ?é)
   ((= ch ?3) ?è)
   ((= ch ?4) ?ù)
   ((= ch ?5) ?ç)

   ((= ch ?!) ?À)
   ((= ch ?@) ?É)
   ((= ch ?#) ?È)
   ((= ch ?$) ?Ù)
   ((= ch ?%) ?Ç)

   ((= ch ?') ?’)
   ((= ch ?,) ?„)
   ((= ch ?.) ?·)
   ((= ch ?p) ?ß)
   ((= ch ?y) ?œ)

   ((= ch ?\") ?”)
   ((= ch ?<) ?«)
   ((= ch ?>) ?»)
   ((= ch ?P) ?ÿ)
   ((= ch ?Y) ?Œ)

   ((= ch ?a) ?ä)
   ((= ch ?o) ?ö)
   ((= ch ?e) ?ë)
   ((= ch ?u) ?ü)
   ((= ch ?i) ?ï)

   ((= ch ?A) ?Ä)
   ((= ch ?O) ?Ö)
   ((= ch ?E) ?Ë)
   ((= ch ?U) ?Ü)
   ((= ch ?I) ?Ï)

   ((= ch ?\;) ?â)
   ((= ch ?q) ?ô)
   ((= ch ?j) ?ê)
   ((= ch ?k) ?û)
   ((= ch ?x) ?î)

   ((= ch ?:) ?Â)
   ((= ch ?Q) ?Ô)
   ((= ch ?J) ?Ê)
   ((= ch ?K) ?Û)
   ((= ch ?X) ?Î)

   ((= ch ?`) ?‘)
   ((= ch ?~) ?“)
   ))

Last modified : 14 August 2006