home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-19.28-src.tgz / tar.out / fsf / emacs / lisp / iso-transl.el < prev    next >
Lisp/Scheme  |  1996-09-28  |  5KB  |  186 lines

  1. ;;; iso-transl.el --- keyboard input definitions for ISO 8859/1.
  2.  
  3. ;; Copyright (C) 1987, 1993, 1994 Free Software Foundation, Inc.
  4.  
  5. ;; Author: Howard Gayle
  6. ;; Maintainer: FSF
  7. ;; Keywords: i18n
  8.  
  9. ;; This file is part of GNU Emacs.
  10.  
  11. ;; GNU Emacs is free software; you can redistribute it and/or modify
  12. ;; it under the terms of the GNU General Public License as published by
  13. ;; the Free Software Foundation; either version 2, or (at your option)
  14. ;; any later version.
  15.  
  16. ;; GNU Emacs is distributed in the hope that it will be useful,
  17. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. ;; GNU General Public License for more details.
  20.  
  21. ;; You should have received a copy of the GNU General Public License
  22. ;; along with GNU Emacs; see the file COPYING.  If not, write to
  23. ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25. ;;; Commentary:
  26.  
  27. ;; Loading this package defines two ways of entering the ISO Latin 1 characters
  28. ;; with codes above 127.
  29.  
  30. ;; One way is to type C-x 8 followed by a special chaacter sequence.
  31. ;; For example, C-x 8 " A enters an upper-case A-umlaut.
  32.  
  33. ;; The other way is to type the same special sequence
  34. ;; but hold down Alt for the first character in it.
  35.  
  36. ;;; Code:
  37.  
  38. (defvar iso-transl-char-map
  39.   '((" "    . [160])
  40.     ("!"    . [161])
  41.     ("\"\"" . [168])
  42.     ("\"A"  . [196])
  43.     ("\"E"  . [203])
  44.     ("\"I"  . [207])
  45.     ("\"O"  . [214])
  46.     ("\"U"  . [220])
  47.     ("\"a"  . [228])
  48.     ("\"e"  . [235])
  49.     ("\"i"  . [239])
  50.     ("\"o"  . [246])
  51.     ("\"u"  . [252])
  52.     ("\"y"  . [255])
  53.     ("''"   . [180])
  54.     ("'A"   . [193])
  55.     ("'E"   . [201])
  56.     ("'I"   . [205])
  57.     ("'O"   . [211])
  58.     ("'U"   . [218])
  59.     ("'Y"   . [221])
  60.     ("'a"   . [225])
  61.     ("'e"   . [233])
  62.     ("'i"   . [237])
  63.     ("'o"   . [243])
  64.     ("'u"   . [250])
  65.     ("'y"   . [253])
  66.     ("$"    . [164])
  67.     ("+"    . [177])
  68.     (",,"   . [184])
  69.     (",C"   . [199])
  70.     (",c"   . [231])
  71.     ("-"    . [173])
  72.     ("."    . [183])
  73.     ("//"   . [247])
  74.     ("/O"   . [216])
  75.     ("/o"   . [248])
  76.     ("1/2"  . [189])
  77.     ("1/4"  . [188])
  78.     ("3/4"  . [190])
  79.     ("<"    . [171])
  80.     ("="    . [175])
  81.     (">"    . [187])
  82.     ("?"    . [191])
  83.     ("A"    . [197])
  84.     ("E"    . [198])
  85.     ("C"    . [169])
  86.     ("D"    . [208])
  87.     ("L"    . [163])
  88.     ("P"    . [182])
  89.     ("R"    . [174])
  90.     ("S"    . [167])
  91.     ("T"    . [222])
  92.     ("Y"    . [165])
  93.     ("^1"   . [185])
  94.     ("^2"   . [178])
  95.     ("^3"   . [179])
  96.     ("^A"   . [194])
  97.     ("^E"   . [202])
  98.     ("^I"   . [206])
  99.     ("^O"   . [212])
  100.     ("^U"   . [219])
  101.     ("^a"   . [226])
  102.     ("^e"   . [234])
  103.     ("^i"   . [238])
  104.     ("^o"   . [244])
  105.     ("^u"   . [251])
  106.     ("_a"   . [170])
  107.     ("_o"   . [186])
  108.     ("`A"   . [192])
  109.     ("`E"   . [200])
  110.     ("`I"   . [204])
  111.     ("`O"   . [210])
  112.     ("`U"   . [217])
  113.     ("`a"   . [224])
  114.     ("`e"   . [232])
  115.     ("`i"   . [236])
  116.     ("`o"   . [242])
  117.     ("`u"   . [249])
  118.     ("a"    . [229])
  119.     ("e"    . [230])
  120.     ("c"    . [162])
  121.     ("d"    . [240])
  122.     ("o"    . [176])
  123.     ("s"    . [223])
  124.     ("t"    . [254])
  125.     ("u"    . [181])
  126.     ("x"    . [215])
  127.     ("|"    . [166])
  128.     ("~A"   . [195])
  129.     ("~N"   . [209])
  130.     ("~O"   . [213])
  131.     ("~a"   . [227])
  132.     ("~n"   . [241])
  133.     ("~o"   . [245])
  134.     ("~~"   . [172]))
  135.   "Alist of character translations for entering ISO characters.
  136. Each element has the form (STRING . VECTOR).
  137. The sequence STRING of ASCII chars translates into the
  138. sequence VECTOR.  (VECTOR is normally one character long.)")
  139.  
  140.  
  141. (let ((map (make-sparse-keymap))
  142.       table)
  143.   (setq table iso-transl-char-map)
  144. ;;;  ;; Create all the prefixes we need.
  145. ;;;  (define-key map "\""   (make-sparse-keymap))
  146. ;;;  (define-key map "'"    (make-sparse-keymap))
  147. ;;;  (define-key map ","    (make-sparse-keymap))
  148. ;;;  (define-key map "/"    (make-sparse-keymap))
  149. ;;;  (define-key map "1"    (make-sparse-keymap))
  150. ;;;  (define-key map "1/"   (make-sparse-keymap))
  151. ;;;  (define-key map "3"    (make-sparse-keymap))
  152. ;;;  (define-key map "3/"   (make-sparse-keymap))
  153. ;;;  (define-key map "A"    (make-sparse-keymap))
  154. ;;;  (define-key map "^"    (make-sparse-keymap))
  155. ;;;  (define-key map "_"    (make-sparse-keymap))
  156. ;;;  (define-key map "`"    (make-sparse-keymap))
  157. ;;;  (define-key map "a"    (make-sparse-keymap))
  158. ;;;  (define-key map "~"    (make-sparse-keymap))
  159.  
  160.   ;; Enter the individual sequences.
  161.   (setq table iso-transl-char-map)
  162.   (while table
  163.     (define-key map (car (car table)) (cdr (car table)))
  164.     (setq table (cdr table)))
  165.  
  166.   (or key-translation-map
  167.       (setq key-translation-map (make-sparse-keymap)))
  168.   (define-key key-translation-map "\C-x8" map)
  169.  
  170.   ;; Enter the individual sequences, this time with Alt as a modifier
  171.   ;; on the first character, instead of with C-x 8 as a prefix.
  172.   (setq table iso-transl-char-map)
  173.   (while table
  174.     (let ((string (vconcat (car (car table)))))
  175.       (aset string 0 (+ (aref string 0) 262144))
  176.       (define-key key-translation-map string (cdr (car table))))
  177.     (setq table (cdr table)))
  178.  
  179.   (define-key isearch-mode-map "\C-x" nil)
  180.   (define-key isearch-mode-map [?\C-x t] 'isearch-other-control-char)
  181.   (define-key isearch-mode-map "\C-x8" nil))
  182.  
  183. (provide 'iso-transl)
  184.  
  185. ;;; iso-transl.el ends here
  186.