diff options
author | Glenn Morris <rgm@gnu.org> | 2013-11-26 22:15:06 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2013-11-26 22:15:06 -0800 |
commit | cb6c95a394d9a9d2f068bf8ee240f2d2297867d1 (patch) | |
tree | 6da24e3ad26db4ab42d800dd78feea2eee3d79d9 /lisp | |
parent | 4cbac8e94b68297189524f2db456c776bda4ed69 (diff) | |
download | emacs-cb6c95a394d9a9d2f068bf8ee240f2d2297867d1.tar.gz |
Move runtime leim lisp files to lisp/leim directory
This allows us to reuse much of the lisp build and installation machinery,
rather than duplicating it.
* Makefile.in (abs_builddir, leimdir): Remove.
(buildlisppath, SUBDIR, COPYDIR, COPYDESTS): No more leim directory.
(epaths-force-w32): No longer set BLD.
(leim): Remove.
(install-arch-indep): No longer run or install leim.
(mostlyclean, clean): No longer run leim rule.
(bootstrap-clean): Change leim target.
(maintainer-clean): Add leim.
(check-declare): Remove leim.
* README: Update for leim changes.
* configure.ac (leimdir): Remove.
(standardlisppath): No more leimdir.
* make-dist: Update for files from leim/ now being in lisp/leim/.
* doc/lispref/loading.texi (Library Search):
* doc/lispref/os.texi (Startup Summary): No more leim directory.
* leim/Makefile.in (leimdir): New variable.
(TIT_GB, TIT_BIG5, MISC, changed.tit, changed.misc)
(${leimdir}/leim-list.el, ${leimdir}/ja-dic/ja-dic.el):
Generate in $leimdir.
(all): Remove compilation, add ja-dic.
(leim-list.el): Now PHONY.
(setwins, compile-targets, compile-main, clean, mostlyclean)
(extraclean): Remove.
(bootstrap-clean): Delete all generated files.
* leim/README: Update for moved leim/ directory.
* leim/leim-ext.el (ucs-input-activate, hangul-input-method-activate):
Remove manual autoloads; now in loaddefs.el.
Disable byte-compile, version-control, autoloads in the output.
* lisp/Makefile.in (setwins_for_subdirs): Skip leim/ directory.
(compile-main): Depend on lisp/leim rule.
(leim): New rule.
* lisp/loadup.el: Move leim-list.el to leim/ subdirectory.
* lisp/startup.el (normal-top-level): No more leim directory.
* lisp/international/ja-dic-cnv.el (skkdic-convert):
Disable version-control and autoloads in output files.
* lisp/international/titdic-cnv.el (titdic-convert, miscdic-convert):
Disable version-control and autoloads in output files.
* lisp/leim/quail: Move here from ../leim.
* lisp/leim/quail/hangul.el (hangul-input-method-activate):
Add autoload cookie.
(generated-autoload-load-name): Set file-local value.
* lisp/leim/quail/uni-input.el (ucs-input-activate): Add autoload cookie.
(generated-autoload-load-name): Set file-local value.
* nt/README.W32:
* nt/addpm.c (env_vars):
* nt/epaths.nt (PATH_LOADSEARCH, PATH_DUMPLOADSEARCH):
* nt/paths.h (PATH_LOADSEARCH): No more leim directory.
* src/Makefile.in (leimdir): Now in lisp source directory.
($(leimdir)/leim-list.el): Just use ../leim .
* src/epaths.in (PATH_DUMPLOADSEARCH):
* src/lread.c (load_path_default):
* src/nsterm.m (ns_load_path): No more leim directory.
* .bzrignore: Update for relocated leim files.
Diffstat (limited to 'lisp')
45 files changed, 23142 insertions, 25 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 44048d841f8..25fc7476cfc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,21 @@ +2013-11-27 Glenn Morris <rgm@gnu.org> + + * Makefile.in (setwins_for_subdirs): Skip leim/ directory. + (compile-main): Depend on leim rule. + (leim): New rule. + * loadup.el: Move leim-list.el to leim/ subdirectory. + * startup.el (normal-top-level): No more leim directory. + * international/ja-dic-cnv.el (skkdic-convert): + Disable version-control and autoloads in output files. + * international/titdic-cnv.el (titdic-convert, miscdic-convert): + Disable version-control and autoloads in output files. + * leim/quail: Move here from ../leim. + * leim/quail/hangul.el (hangul-input-method-activate): + Add autoload cookie. + (generated-autoload-load-name): Set file-local value. + * leim/quail/uni-input.el (ucs-input-activate): Add autoload cookie. + (generated-autoload-load-name): Set file-local value. + 2013-11-26 Kenjiro NAKAYAMA <knakayam@redhat.com> (tiny change) * net/eww.el (eww-bookmark-browse): Use 'eww-browse-url'. diff --git a/lisp/Makefile.in b/lisp/Makefile.in index eb52b317e7b..391e50c8b7d 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -118,14 +118,15 @@ setwins=for file in `find . -type d -print`; do \ # Find all subdirectories except `obsolete' and `term'. setwins_almost=for file in `find ${srcdir} -type d -print`; do \ case $$file in ${srcdir}*/obsolete | ${srcdir}*/term ) ;; \ - *) wins="$$wins$${wins:+ }$$file" ;; \ + *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done # Find all subdirectories in which we might want to create subdirs.el. setwins_for_subdirs=for file in `find ${srcdir} -type d -print`; do \ - case $$file in ${srcdir}*/cedet* ) ;; \ - *) wins="$$wins$${wins:+ }$$file" ;; \ + case $$file in \ + ${srcdir}*/cedet* | ${srcdir}*/leim* ) ;; \ + *) wins="$$wins$${wins:+ }$$file" ;; \ esac; \ done @@ -172,6 +173,10 @@ finder-data: doit # The chmod +w is to handle env var CVSREAD=1. # Use expand-file-name rather than $abs_scrdir so that Emacs does not # get confused when it compares file-names for equality. +# +# Note that we set no-update-autoloads in _generated_ leim files. +# If you want to allow autoloads in such files, remove that, +# and make this depend on leim. autoloads: $(LOADDEFS) doit cd $(lisp) && chmod +w $(AUTOGEN_VCS) $(setwins_almost); \ @@ -291,7 +296,7 @@ compile-targets: $(TARGETS) # Compile all the Elisp files that need it. Beware: it approximates # `no-byte-compile', so watch out for false-positives! -compile-main: compile-clean +compile-main: leim compile-clean @(cd $(lisp) && $(setwins); \ els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \ for el in $$els; do \ @@ -315,6 +320,10 @@ compile-clean: fi \ done +.PHONY: leim +leim: + cd ../leim && $(MAKE) $(MFLAGS) all EMACS="$(EMACS)" + # Compile all Lisp files, but don't recompile those that are up to # date. Some .el files don't get compiled because they set the # local variable no-byte-compile. diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el index 41a31004194..8fa8b6d8056 100644 --- a/lisp/international/ja-dic-cnv.el +++ b/lisp/international/ja-dic-cnv.el @@ -1,5 +1,7 @@ ;;; ja-dic-cnv.el --- convert a Japanese dictionary (SKK-JISYO.L) to Emacs Lisp +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -342,15 +344,12 @@ The name of generated file is specified by the variable `ja-dic-filename'." (with-current-buffer buf (erase-buffer) (buffer-disable-undo) - (insert ";;; ja-dic.el --- dictionary for Japanese input method" - " -*-coding: utf-8; -*-\n" + (insert ";;; ja-dic.el --- dictionary for Japanese input method\n" ";;\tGenerated by the command `skkdic-convert'\n" ";;\tOriginal SKK dictionary file: " (file-relative-name (expand-file-name filename) dirname) "\n\n" ";; This file is part of GNU Emacs.\n\n" - ";;; Commentary:\n\n" - ";; Do byte-compile this file again after any modification.\n\n" ";;; Start of the header of the original SKK dictionary.\n\n") (set-buffer skkbuf) (goto-char 1) @@ -398,7 +397,13 @@ The name of generated file is specified by the variable `ja-dic-filename'." ;; Postfix (with-current-buffer buf (goto-char (point-max)) - (insert ";;\n(provide 'ja-dic)\n\n;;; ja-dic.el ends here\n"))) + (insert ";;\n(provide 'ja-dic)\n\n" + ";; Local Variables:\n" + ";; version-control: never\n" + ";; no-update-autoloads: t\n" + ";; coding: utf-8\n" + ";; End:\n\n" + ";;; ja-dic.el ends here\n"))) ;; Save the working buffer. (set-buffer buf) diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index bcad78d8ce0..a1ee69de12b 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el @@ -272,13 +272,11 @@ SPC, 6, 3, 4, or 7 specifying a tone (SPC:$(0?v(N(B, 6:$(0Dm(N(B, 3:$(0&9Vy (princ ";; Quail package `") (princ package) - (princ (format "' -*- coding:%s -*-\n" coding-system-for-write)) + (princ "\n") (princ ";; Generated by the command `titdic-convert'\n") (princ ";;\tOriginal TIT dictionary file: ") (princ (file-name-nondirectory filename)) - (princ "\n\n;;; Comment:\n\n") - (princ ";; Byte-compile this file again after any modification.\n\n") - (princ ";;; Start of the header of original TIT dictionary.\n\n") + (princ "\n\n") (while (not (eobp)) (let ((ch (following-char)) @@ -518,7 +516,13 @@ the generated Quail package is saved." (widen) ;; Process the body part - (tit-process-body)))))) + (tit-process-body) + + (princ ";; Local Variables:\n") + (princ ";; version-control: never\n") + (princ ";; no-update-autoloads: t\n") + (princ (format ";; coding: %s\n" coding-system-for-write)) + (princ ";; End:\n")))))) ;;;###autoload (defun batch-titdic-convert (&optional force) @@ -1148,8 +1152,7 @@ the generated Quail package is saved." (setq coding-system-for-write (coding-system-change-eol-conversion coding 'unix)) (with-temp-file (expand-file-name quailfile dirname) - (insert (format ";; Quail package `%s' -*- coding:%s -*-\n" - name coding)) + (insert (format ";; Quail package `%s'\n" name)) (insert ";; Generated by the command `miscdic-convert'\n") (insert ";; Source dictionary file: " dicfile "\n") (insert ";; Copyright notice of the source file\n") @@ -1168,7 +1171,13 @@ the generated Quail package is saved." (coding-system-change-eol-conversion coding 'unix)) (dicbuf (find-file-noselect filename))) (funcall converter dicbuf name title) - (kill-buffer dicbuf))) + (kill-buffer dicbuf)) + (insert ";; Local Variables:\n" + ";; version-control: never\n" + ";; no-update-autoloads: t\n" + (format ";; coding: %s\n" coding) + ";; End:\n\n" + ";;; " quailfile " ends here\n")) (message "Converting %s to %s...done" dicfile quailfile)) (setq tail (cdr tail))))) diff --git a/lisp/leim/quail/.gitignore b/lisp/leim/quail/.gitignore new file mode 100644 index 00000000000..c3f9e36f0db --- /dev/null +++ b/lisp/leim/quail/.gitignore @@ -0,0 +1,22 @@ +4Corner.el +ARRAY30.el +CCDOSPY.el +CTLau-b5.el +CTLau.el +ECDICT.el +ETZY.el +PY-b5.el +PY.el +Punct-b5.el +Punct.el +QJ-b5.el +QJ.el +SW.el +TONEPY.el +ZIRANMA.el +ZOZY.el +quick-b5.el +quick-cns.el +tsang-b5.el +tsang-cns.el + diff --git a/lisp/leim/quail/arabic.el b/lisp/leim/quail/arabic.el new file mode 100644 index 00000000000..6b6e5122690 --- /dev/null +++ b/lisp/leim/quail/arabic.el @@ -0,0 +1,115 @@ +;;; arabic.el --- Quail package for inputting Arabic -*- coding: utf-8;-*- + +;; Copyright (C) 2007-2013 Free Software Foundation, Inc. + +;; Author: James Cloos <cloos@jhcloos.com> +;; Keywords: mule, input method, Arabic + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "arabic" "Arabic" "ع" nil "Arabic input method. + +Based on Arabic table in X Keyboard Configuration DB. +" nil t t t t nil nil nil nil nil t) + +;; ذّ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9) 0( -_ =+ +;; ضَ صً ثُ قٌ فﻹ غإ ع` ه÷ خ× ح؛ ج< د> <> +;; شِ سٍ ي] ب[ لﻷ اأ تـ ن، م/ ك: ط" +;; ئ~ ءْ ؤ} ر{ ﻻﻵ ىآ ة' و, ز. ظ؟ +;; + +(quail-define-rules + ("`" ?ذ) + ("~" ?ّ) + + ("Q" ?َ) + ("W" ?ً) + ("E" ?ُ) + ("R" ?ٌ) + ("T" ["لإ"]) + ("Y" ?إ) + ("U" ?`) + ("I" ?÷) + ("O" ?×) + ("P" ?؛) + ("{" ?<) + ("}" ?>) + + ("A" ?ِ) + ("S" ?ٍ) + ("D" ?\]) + ("F" ?\[) + ("G" ["لأ"]) + ("H" ?أ) + ("J" ?ـ) + ("K" ?،) + ("L" ?/) + + ("Z" ?~) + ("X" ?ْ) + ("C" ?}) + ("V" ?{) + ("B" ["لآ"]) + ("N" ?آ) + ("M" ?') + ("<" ?,) + (">" ?.) + ("?" ?؟) + + ("q" ?ض) + ("w" ?ص) + ("e" ?ث) + ("r" ?ق) + ("t" ?ف) + ("y" ?غ) + ("u" ?ع) + ("i" ?ه) + ("o" ?خ) + ("p" ?ح) + ("[" ?ج) + ("]" ?د) + + ("a" ?ش) + ("s" ?س) + ("d" ?ي) + ("f" ?ب) + ("g" ?ل) + ("h" ?ا) + ("j" ?ت) + ("k" ?ن) + ("l" ?م) + (";" ?ك) + ("'" ?ط) + + ("z" ?ئ) + ("x" ?ء) + ("c" ?ؤ) + ("v" ?ر) + ("b" ["لا"]) + ("n" ?ى) + ("m" ?ة) + ("," ?و) + ("." ?ز) + ("/" ?ظ)) + +;;; arabic.el ends here diff --git a/lisp/leim/quail/croatian.el b/lisp/leim/quail/croatian.el new file mode 100644 index 00000000000..0ca998d284c --- /dev/null +++ b/lisp/leim/quail/croatian.el @@ -0,0 +1,199 @@ +;;; croatian.el -- Quail package for inputting Croatian -*-coding: utf-8;-*- + +;; Copyright (C) 2003-2013 Free Software Foundation, Inc. + +;; Author: Hrvoje Nikšić <hniksic@xemacs.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Modeled after czech.el by Milan Zamazal. + +;;; Code: + +(require 'quail) + +(quail-define-package + "croatian" "Croatian" "HR" nil + "\"Standard\" Croatian keyboard." + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("@" ?\") + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("-" ?\') + ("_" ??) + ("=" ?+) + ("+" ?*) + ("[" ?š) + ("{" ?Š) + ("]" ?đ) + ("}" ?Đ) + (";" ?č) + (":" ?Č) + ("'" ?ć) + ("\"" ?Ć) + ("\\" ?ž) + ("|" ?Ž) + ("<" ?\;) + (">" ?:) + ("/" ?-) + ("?" ?_) + ("y" ?z) + ("Y" ?Z) + ("z" ?y) + ("Z" ?Y)) + +(quail-define-package + "croatian-qwerty" "Croatian" "HR" nil + "Croatian keyboard without the y/z swap." + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("@" ?\") + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("-" ?\') + ("_" ??) + ("=" ?+) + ("+" ?*) + ("[" ?š) + ("{" ?Š) + ("]" ?đ) + ("}" ?Đ) + (";" ?č) + (":" ?Č) + ("'" ?ć) + ("\"" ?Ć) + ("\\" ?ž) + ("|" ?Ž) + ("<" ?\;) + (">" ?:) + ("/" ?-) + ("?" ?_)) + +(quail-define-package + "croatian-prefix" "Croatian" "HR" nil + "Croatian input method, prefix. + +\"c -> č +'c -> ć +\"s -> š +\"z -> ž +/d -> đ" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("\"c" ?č) + ("\"C" ?Č) + ("'c" ?ć) + ("'C" ?Ć) + ("\"s" ?š) + ("\"S" ?Š) + ("\"z" ?ž) + ("\"Z" ?Ž) + ("/d" ?đ) + ("/D" ?Đ)) + +(quail-define-package + "croatian-postfix" "Croatian" "HR" nil + "Croatian input method, postfix. + +c\" -> č +c' -> ć +s\" -> š +z\" -> ž +d/ -> đ" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("c\"" ?č) + ("C\"" ?Č) + ("c'" ?ć) + ("C'" ?Ć) + ("s\"" ?š) + ("S\"" ?Š) + ("z\"" ?ž) + ("Z\"" ?Ž) + ("d/" ?đ) + ("D/" ?Đ)) + +(quail-define-package + "croatian-xy" "Croatian" "HR" nil + "An alternative Croatian input method. + +cx -> č +cy -> ć +sx -> š +zx -> ž +dy -> đ" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("cx" ?č) + ("CX" ?Č) + ("Cx" ?Č) + ("cy" ?ć) + ("CY" ?Ć) + ("Cy" ?Ć) + ("sx" ?š) + ("SX" ?Š) + ("Sx" ?Š) + ("zx" ?ž) + ("ZX" ?Ž) + ("Zx" ?Ž) + ("dy" ?đ) + ("DY" ?Đ) + ("Dy" ?Đ)) + +(quail-define-package + "croatian-cc" "Croatian" "HR" nil + "Another alternative Croatian input method. + +cc -> č +ch -> ć +ss -> š +zz -> ž +dd -> đ" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("cc" ?č) + ("CC" ?Č) + ("Cc" ?Č) + ("ch" ?ć) + ("CH" ?Ć) + ("Ch" ?Ć) + ("ss" ?š) + ("SS" ?Š) + ("Ss" ?Š) + ("zz" ?ž) + ("ZZ" ?Ž) + ("Zz" ?Ž) + ("dd" ?đ) + ("DD" ?Đ) + ("Dd" ?Đ)) + +;;; croatian.el ends here diff --git a/lisp/leim/quail/cyril-jis.el b/lisp/leim/quail/cyril-jis.el new file mode 100644 index 00000000000..ab98f9f6dc6 --- /dev/null +++ b/lisp/leim/quail/cyril-jis.el @@ -0,0 +1,145 @@ +;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Cyrillic + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This Quail package is for inputting Cyrillic letters of Japanese +;; character set JISX0208, not for inputting Cyrillic letters of +;; ISO-8859-5. For the latter, use packages in quail/cyrillic.el. + +;;; Code: + +(quail-define-package + "cyrillic-jis-russian" "Cyrillic" "$B'('+(B" nil + "$B'+'8'5','&'/(B keyboard layout same as JCUKEN (JIS X0208.1983 encoding)" + nil t t t t nil nil nil nil nil t) + +;; 1! 2@ 3# 4" 5: 6, 7. 8* 9( 0) -_ =+ ,L!(B +;; ,L9(B ,LF(B ,LC(B ,L:(B ,L5(B ,L=(B ,L3(B ,LH(B ,LI(B ,L7(B ,LE(B ,Lj(B +;; ,LD(B ,LK(B ,L2(B ,L0(B ,L?(B ,L@(B ,L>(B ,L;(B ,L4(B ,L6(B ,LM(B +;; ,LO(B ,LG(B ,LA(B ,L<(B ,L8(B ,LB(B ,LL(B ,L1(B ,LN(B /? + +(quail-define-rules + ("1" ?$B#1(B) + ("2" ?$B#2(B) + ("3" ?$B#3(B) + ("4" ?$B#4(B) + ("5" ?$B#5(B) + ("6" ?$B#6(B) + ("7" ?$B#7(B) + ("8" ?$B#8(B) + ("9" ?$B#9(B) + ("0" ?$B#0(B) + ("-" ?$B!](B) + ("=" ?$B!a(B) + ("`" ?$B'W(B) + ("q" ?$B'[(B) + ("w" ?$B'h(B) + ("e" ?$B'e(B) + ("r" ?$B'\(B) + ("t" ?$B'V(B) + ("y" ?$B'_(B) + ("u" ?$B'T(B) + ("i" ?$B'j(B) + ("o" ?$B'k(B) + ("p" ?$B'Y(B) + ("[" ?$B'g(B) + ("]" ?$B'l(B) + ("a" ?$B'f(B) + ("s" ?$B'm(B) + ("d" ?$B'S(B) + ("f" ?$B'Q(B) + ("g" ?$B'a(B) + ("h" ?$B'b(B) + ("j" ?$B'`(B) + ("k" ?$B'](B) + ("l" ?$B'U(B) + (";" ?$B'X(B) + ("'" ?$B'o(B) + ("\\" ?$B!@(B) + ("z" ?$B'q(B) + ("x" ?$B'i(B) + ("c" ?$B'c(B) + ("v" ?$B'^(B) + ("b" ?$B'Z(B) + ("n" ?$B'd(B) + ("m" ?$B'n(B) + ("," ?$B'R(B) + ("." ?$B'p(B) + ("/" ?$B!?(B) + + ("!" ?$B!*(B) + ("@" ?$B!w(B) + ("#" ?$B!t(B) + ("$" ?$B!I(B) + ("%" ?$B!'(B) + ("^" ?$B!$(B) + ("&" ?$B!%(B) + ("*" ?$B!v(B) + ("(" ?$B!J(B) + (")" ?$B!K(B) + ("_" ?$B!2(B) + ("+" ?$B!\(B) + ("~" ?$B''(B) + ("Q" ?$B'+(B) + ("W" ?$B'8(B) + ("E" ?$B'5(B) + ("R" ?$B',(B) + ("T" ?$B'&(B) + ("Y" ?$B'/(B) + ("U" ?$B'$(B) + ("I" ?$B':(B) + ("O" ?$B';(B) + ("P" ?$B')(B) + ("{" ?$B'7(B) + ("}" ?$B'<(B) + ("A" ?$B'6(B) + ("S" ?$B'=(B) + ("D" ?$B'#(B) + ("F" ?$B'!(B) + ("G" ?$B'1(B) + ("H" ?$B'2(B) + ("J" ?$B'0(B) + ("K" ?$B'-(B) + ("L" ?$B'%(B) + (":" ?$B'((B) + ("\"" ?$B'?(B) + ("|" ?$B!C(B) + ("Z" ?$B'A(B) + ("X" ?$B'9(B) + ("C" ?$B'3(B) + ("V" ?$B'.(B) + ("B" ?$B'*(B) + ("N" ?$B'4(B) + ("M" ?$B'>(B) + ("<" ?$B'"(B) + (">" ?$B'@(B) + ("?" ?$B!)(B)) + +;; Local Variables: +;; coding: iso-2022-7bit +;; End: + +;;; cyril-jis.el ends here diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el new file mode 100644 index 00000000000..f98cd695b07 --- /dev/null +++ b/lisp/leim/quail/cyrillic.el @@ -0,0 +1,1480 @@ +;;; cyrillic.el --- Quail package for inputting Cyrillic characters + +;; Copyright (C) 1997-1998, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Author: TAKAHASHI Naoto <ntakahas@m17n.org> +;; Keywords: multilingual, input method, Cyrillic, i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; These methods use a mixture of 8859-5 and Unicode. Quail, used +;; with ucs-tables provides support for translating on the fly to +;; what's appropriate for aa buffer's file coding system, so the +;; encoding shouldn't matter too much provided it supports the +;; necessary characters. + +;;; Code: + +(require 'quail) + +;; This was `cyrillic-jcuken'. Alexander Mikhailian +;; <mikhailian@altern.org> says: "cyrillic-jcuken" is actually +;; russian. It is ok but a bit outdated. This layout has been used +;; in typewriters for ages but it has been superseded on desktops by +;; a variation of this layout, implemented in M$ Windows software. +;; The Windows layout is greatly preferred because of the comma and +;; period being placed more conveniently and, of course, because of +;; the popularity of Windows software. This layout is a common option +;; in X Windows and console layouts for GNU/Linux. [See +;; `russian-computer' below.] +(quail-define-package + "russian-typewriter" "Russian" "ЖЙ" nil + "ЙЦУКЕН Russian typewriter layout (ISO 8859-5 encoding)." + nil t t t t nil nil nil nil nil t) + +;; №1 -2 /3 "4 :5 ,6 .7 _8 ?9 %0 != ;\ |+ +;; Й Ц У К Е Н Г Ш Щ З Х Ъ )( +;; Ф Ы В А П Р О Л Д Ж Э +;; Я Ч С М И Т Ь Б Ю Ё + +(quail-define-rules + ("1" ?№) + ("2" ?-) + ("3" ?/) + ("4" ?\") + ("5" ?:) + ("6" ?,) + ("7" ?.) + ("8" ?_) + ("9" ??) + ("0" ?%) + ("-" ?!) + ("=" ?\;) + ("`" ?|) + ("q" ?й) + ("w" ?ц) + ("e" ?у) + ("r" ?к) + ("t" ?е) + ("y" ?н) + ("u" ?г) + ("i" ?ш) + ("o" ?щ) + ("p" ?з) + ("[" ?х) + ("]" ?ъ) + ("a" ?ф) + ("s" ?ы) + ("d" ?в) + ("f" ?а) + ("g" ?п) + ("h" ?р) + ("j" ?о) + ("k" ?л) + ("l" ?д) + (";" ?ж) + ("'" ?э) + ("\\" ?\)) + ("z" ?я) + ("x" ?ч) + ("c" ?с) + ("v" ?м) + ("b" ?и) + ("n" ?т) + ("m" ?ь) + ("," ?б) + ("." ?ю) + ("/" ?ё) + + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("_" ?=) + ("+" ?\\) + ("~" ?+) + ("Q" ?Й) + ("W" ?Ц) + ("E" ?У) + ("R" ?К) + ("T" ?Е) + ("Y" ?Н) + ("U" ?Г) + ("I" ?Ш) + ("O" ?Щ) + ("P" ?З) + ("{" ?Х) + ("}" ?Ъ) + ("A" ?Ф) + ("S" ?Ы) + ("D" ?В) + ("F" ?А) + ("G" ?П) + ("H" ?Р) + ("J" ?О) + ("K" ?Л) + ("L" ?Д) + (":" ?Ж) + ("\"" ?Э) + ("|" ?\() + ("Z" ?Я) + ("X" ?Ч) + ("C" ?С) + ("V" ?М) + ("B" ?И) + ("N" ?Т) + ("M" ?Ь) + ("<" ?Б) + (">" ?Ю) + ("?" ?Ё) + ) + +;; Maintain the obsolete name for now. +(push (cons "cyrillic-jcuken" + (cdr (assoc "russian-typewriter" quail-package-alist))) + quail-package-alist) + +;; This needs to be seen by quail-update-leim-list-file, but cannot be +;; commented out because quail-update-leim-list-file ignores +;; commented-out lines. +(if nil + (quail-define-package + "cyrillic-jcuken" "Russian" "ЖЙ" nil + "ЙЦУКЕН Russian typewriter layout (ISO 8859-5 encoding).")) + +;; See comment above. This is the variant `winkeys' from `ru' in XKB. +(quail-define-package + "russian-computer" "Russian" "RU" nil + "ЙЦУКЕН Russian computer layout" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3№ 4; 5% 6: 7? 8* 9( 0) -_ =+ \/ ёЁ +;; Й Ц У К Е Н Г Ш Щ З Х Ъ +;; Ф Ы В А П Р О Л Д Ж Э +;; Я Ч С М И Т Ь Б Ю ., + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?-) + ("=" ?=) + ("|" ?/) + ("`" ?ё) + ("q" ?й) + ("w" ?ц) + ("e" ?у) + ("r" ?к) + ("t" ?е) + ("y" ?н) + ("u" ?г) + ("i" ?ш) + ("o" ?щ) + ("p" ?з) + ("[" ?х) + ("]" ?ъ) + ("a" ?ф) + ("s" ?ы) + ("d" ?в) + ("f" ?а) + ("g" ?п) + ("h" ?р) + ("j" ?о) + ("k" ?л) + ("l" ?д) + (";" ?ж) + ("'" ?э) + ("\\" ?\\) + ("z" ?я) + ("x" ?ч) + ("c" ?с) + ("v" ?м) + ("b" ?и) + ("n" ?т) + ("m" ?ь) + ("," ?б) + ("." ?ю) + ("/" ?.) + ("!" ?!) + ("@" ?\") + ("#" ?№) + ("$" ?\;) + ("%" ?%) + ("^" ?:) + ("&" ??) + ("*" ?*) + ("(" ?() + (")" ?)) + ("_" ?_) + ("+" ?+) + ("~" ?Ё) + ("Q" ?Й) + ("W" ?Ц) + ("E" ?У) + ("R" ?К) + ("T" ?Е) + ("Y" ?Н) + ("U" ?Г) + ("I" ?Ш) + ("O" ?Щ) + ("P" ?З) + ("{" ?Х) + ("}" ?Ъ) + ("A" ?Ф) + ("S" ?Ы) + ("D" ?В) + ("F" ?А) + ("G" ?П) + ("H" ?Р) + ("J" ?О) + ("K" ?Л) + ("L" ?Д) + (":" ?Ж) + ("\"" ?Э) + ("|" ?|) + ("Z" ?Я) + ("X" ?Ч) + ("C" ?С) + ("V" ?М) + ("B" ?И) + ("N" ?Т) + ("M" ?Ь) + ("<" ?Б) + (">" ?Ю) + ("?" ?,)) + +;; Mikhailian couldn't check the next two. + +;; This seems to have the same layout for letters as mk in XKB, but at +;; least the top row is different. +(quail-define-package + "cyrillic-macedonian" "Cyrillic" "ЖM" nil + "ЉЊЕРТЗ-ЃЌ keyboard layout based on JUS.I.K1.004" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <> +;; Љ Њ Е Р Т З У И О П Ш Ѓ +;; А С Д Ф Г Х Ј К Л Ч Ќ Ж +;; Ѕ Џ Ц В Б Н М ,; .: -_ + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?/) + ("=" ?+) + ("`" ?<) + ("q" ?љ) + ("w" ?њ) + ("e" ?е) + ("r" ?р) + ("t" ?т) + ("y" ?з) + ("u" ?у) + ("i" ?и) + ("o" ?о) + ("p" ?п) + ("[" ?ш) + ("]" ?ѓ) + ("a" ?а) + ("s" ?с) + ("d" ?д) + ("f" ?ф) + ("g" ?г) + ("h" ?х) + ("j" ?ј) + ("k" ?к) + ("l" ?л) + (";" ?ч) + ("'" ?ќ) + ("\\" ?ж) + ("z" ?ѕ) + ("x" ?џ) + ("c" ?ц) + ("v" ?в) + ("b" ?б) + ("n" ?н) + ("m" ?м) + ("," ?,) + ("." ?.) + ("/" ?-) + + ("!" ?!) + ("@" ?\") + ("#" ?#) + ("$" ?$) + ("%" ?%) + ("^" ?&) + ("&" ?') + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?*) + ("~" ?>) + ("Q" ?Љ) + ("W" ?Њ) + ("E" ?Е) + ("R" ?Р) + ("T" ?Т) + ("Y" ?З) + ("U" ?У) + ("I" ?И) + ("O" ?О) + ("P" ?П) + ("{" ?Ш) + ("}" ?Ѓ) + ("A" ?А) + ("S" ?С) + ("D" ?Д) + ("F" ?Ф) + ("G" ?Г) + ("H" ?Х) + ("J" ?Ј) + ("K" ?К) + ("L" ?Л) + (":" ?Ч) + ("\"" ?Ќ) + ("|" ?Ж) + ("Z" ?Ѕ) + ("X" ?Џ) + ("C" ?Ц) + ("V" ?В) + ("B" ?Б) + ("N" ?Н) + ("M" ?М) + ("<" ?\;) + (">" ?:) + ("?" ?_)) + +;; + +(quail-define-package + "cyrillic-serbian" "Cyrillic" "ЖS" nil + "ЉЊЕРТЗ-ЂЋ keyboard layout based on JUS.I.K1.005" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <> +;; Љ Њ Е Р Т З У И О П Ш Ђ +;; А С Д Ф Г Х Ј К Л Ч Ћ Ж +;; Ѕ Џ Ц В Б Н М ,; .: -_ + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?/) + ("=" ?+) + ("`" ?<) + ("q" ?љ) + ("w" ?њ) + ("e" ?е) + ("r" ?р) + ("t" ?т) + ("y" ?з) + ("u" ?у) + ("i" ?и) + ("o" ?о) + ("p" ?п) + ("[" ?ш) + ("]" ?ђ) + ("a" ?а) + ("s" ?с) + ("d" ?д) + ("f" ?ф) + ("g" ?г) + ("h" ?х) + ("j" ?ј) + ("k" ?к) + ("l" ?л) + (";" ?ч) + ("'" ?ћ) + ("\\" ?ж) + ("z" ?ѕ) + ("x" ?џ) + ("c" ?ц) + ("v" ?в) + ("b" ?б) + ("n" ?н) + ("m" ?м) + ("," ?,) + ("." ?.) + ("/" ?-) + + ("!" ?!) + ("@" ?\") + ("#" ?#) + ("$" ?$) + ("%" ?%) + ("^" ?&) + ("&" ?') + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?*) + ("~" ?>) + ("Q" ?Љ) + ("W" ?Њ) + ("E" ?Е) + ("R" ?Р) + ("T" ?Т) + ("Y" ?З) + ("U" ?У) + ("I" ?И) + ("O" ?О) + ("P" ?П) + ("{" ?Ш) + ("}" ?Ђ) + ("A" ?А) + ("S" ?С) + ("D" ?Д) + ("F" ?Ф) + ("G" ?Г) + ("H" ?Х) + ("J" ?Ј) + ("K" ?К) + ("L" ?Л) + (":" ?Ч) + ("\"" ?Ћ) + ("|" ?Ж) + ("Z" ?Ѕ) + ("X" ?Џ) + ("C" ?Ц) + ("V" ?В) + ("B" ?Б) + ("N" ?Н) + ("M" ?М) + ("<" ?\;) + (">" ?:) + ("?" ?_)) + +;; + +;; Alexander Mikhailian comments: +;; Having worked for several years as a Belarusian linguist, I still +;; can not find the origin of this layout which BTW does include +;; several characters that are not present in Belarusian and does not +;; include a few ones that do exist in Belarusian. Besides, the typo +;; in the name of this layout speaks for itself since Belarusian has +;; an outdated version of spelling which is "Byelorussian" and not +;; "beylorussian". I suggest that you just remove this layout. + +;; [`derived from JUS.I.K1' according to an old Mule note -- fx] + +;; (quail-define-package +;; "cyrillic-beylorussian" "Belarussian" "ЖB" nil +;; "ЉЊЕРТЗ-ІЎ BEYLORUSSIAN (ISO 8859-5 encoding)" +;; nil t t t t nil nil nil nil nil t) + +;; ;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <> +;; ;; Љ Њ Е Р Т З У И О П Ш І +;; ;; А С Д Ф Г Х Ј К Л Ч Ў Ж +;; ;; Ѕ Џ Ц В Б Н М ,; .: -_ + +;; (quail-define-rules +;; ("-" ?/) +;; ("=" ?+) +;; ("`" ?<) +;; ("q" ?љ) +;; ("w" ?њ) +;; ("e" ?е) +;; ("r" ?р) +;; ("t" ?т) +;; ("y" ?з) +;; ("u" ?у) +;; ("i" ?и) +;; ("o" ?о) +;; ("p" ?п) +;; ("[" ?ш) +;; ("]" ?і) +;; ("a" ?а) +;; ("s" ?с) +;; ("d" ?д) +;; ("f" ?ф) +;; ("g" ?г) +;; ("h" ?х) +;; ("j" ?ј) +;; ("k" ?к) +;; ("l" ?л) +;; (";" ?ч) +;; ("'" ?ў) +;; ("\\" ?ж) +;; ("z" ?ѕ) +;; ("x" ?џ) +;; ("c" ?ц) +;; ("v" ?в) +;; ("b" ?б) +;; ("n" ?н) +;; ("m" ?м) +;; ("/" ?-) + +;; ("@" ?\") +;; ("^" ?&) +;; ("&" ?') +;; ("*" ?\() +;; ("(" ?\)) +;; (")" ?=) +;; ("_" ??) +;; ("+" ?*) +;; ("~" ?>) +;; ("Q" ?Љ) +;; ("W" ?Њ) +;; ("E" ?Е) +;; ("R" ?Р) +;; ("T" ?Т) +;; ("Y" ?З) +;; ("U" ?У) +;; ("I" ?И) +;; ("O" ?О) +;; ("P" ?П) +;; ("{" ?Ш) +;; ("}" ?І) +;; ("A" ?А) +;; ("S" ?С) +;; ("D" ?Д) +;; ("F" ?Ф) +;; ("G" ?Г) +;; ("H" ?Х) +;; ("J" ?Ј) +;; ("K" ?К) +;; ("L" ?Л) +;; (":" ?Ч) +;; ("\"" ?Ў) +;; ("|" ?Ж) +;; ("Z" ?Ѕ) +;; ("X" ?Џ) +;; ("C" ?Ц) +;; ("V" ?В) +;; ("B" ?Б) +;; ("N" ?Н) +;; ("M" ?М) +;; ("<" ?\;) +;; (">" ?:) +;; ("?" ?_)) + +;; + +;; Alexander Mikhailian reports the opinion of fellow Ukrainian +;; linguist Bogdan Babych <babych@altern.org>: +;; He had seen this layout on some oldish systems but that the vast +;; majority of the population uses a modified version of the M$ Windows +;; layout. In fact, Microsoft shipped for a while a layout that was lacking +;; two characters, precisely the "GHE_WITH_UPTURN" and the apostrophe. The +;; latest versions of Windows software do have the "GHE_WITH_UPTURN" in the +;; ukrainian keyboard layout but the apostrophe is still not there, whereas +;; there is one letter, "Cyrillic_YO", not used in ukrainian. Ukrainians +;; normally replace the "Cyrillic_YO" by the apostrophe sign and live +;; happily with this little change. [See "ukrainian-computer" below.] + +;; Fixme: add GHE_WITH_UPTURN. +(quail-define-package + "cyrillic-ukrainian" "Ukrainian" "ЖU" nil + "ЄЇЕРТЗ-ІЎ UKRAINIAN + +Sorry, but 'ghe with upturn' is not included in ISO 8859-5." + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <> +;; Є Ї Е Р Т З У И О П Ш І +;; А С Д Ф Г Х Ј К Л Ч Ў Ж +;; Ѕ Џ Ц В Б Н М ,; .: -_ + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?/) + ("=" ?+) + ("`" ?<) + ("q" ?є) + ("w" ?ї) + ("e" ?е) + ("r" ?р) + ("t" ?т) + ("y" ?з) + ("u" ?у) + ("i" ?и) + ("o" ?о) + ("p" ?п) + ("[" ?ш) + ("]" ?і) + ("a" ?а) + ("s" ?с) + ("d" ?д) + ("f" ?ф) + ("g" ?г) + ("h" ?х) + ("j" ?ј) + ("k" ?к) + ("l" ?л) + (";" ?ч) + ("'" ?ў) + ("\\" ?ж) + ("z" ?ѕ) + ("x" ?џ) + ("c" ?ц) + ("v" ?в) + ("b" ?б) + ("n" ?н) + ("m" ?м) + ("," ?,) + ("." ?.) + ("/" ?-) + + ("!" ?!) + ("@" ?\") + ("#" ?#) + ("$" ?$) + ("%" ?%) + ("^" ?&) + ("&" ?') + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?*) + ("~" ?>) + ("Q" ?Є) + ("W" ?Ї) + ("E" ?Е) + ("R" ?Р) + ("T" ?Т) + ("Y" ?З) + ("U" ?У) + ("I" ?И) + ("O" ?О) + ("P" ?П) + ("{" ?Ш) + ("}" ?І) + ("A" ?А) + ("S" ?С) + ("D" ?Д) + ("F" ?Ф) + ("G" ?Г) + ("H" ?Х) + ("J" ?Ј) + ("K" ?К) + ("L" ?Л) + (":" ?Ч) + ("\"" ?Ў) + ("|" ?Ж) + ("Z" ?Ѕ) + ("X" ?Џ) + ("C" ?Ц) + ("V" ?В) + ("B" ?Б) + ("N" ?Н) + ("M" ?М) + ("<" ?\;) + (">" ?:) + ("?" ?_)) + + +(quail-define-package + "ukrainian-computer" "Ukrainian" "UK" nil + "ЙЦУКЕН Ukrainian (Unicode-based for use with KOI8-U encoding)." + nil t t t t nil nil nil nil nil t) + +;; ' 1! 2" 3№ 4; 5% 6: 7? 8* 9( 0) -_ =+ +;; Й Ц У К Е Н Г Ш Щ З Х Ї +;; Ф І В А П Р О Л Д Ж Є Ґ +;; Я Ч С М И Т Ь Б Ю ., + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?-) + ("=" ?=) + ("`" ?') + ("q" ?й) + ("w" ?ц) + ("e" ?у) + ("r" ?к) + ("t" ?е) + ("y" ?н) + ("u" ?г) + ("i" ?ш) + ("o" ?щ) + ("p" ?з) + ("[" ?х) + ("]" ?ї) + ("a" ?ф) + ("s" ?і) + ("d" ?в) + ("f" ?а) + ("g" ?п) + ("h" ?р) + ("j" ?о) + ("k" ?л) + ("l" ?д) + (";" ?ж) + ("'" ?є) + ("z" ?я) + ("x" ?ч) + ("c" ?с) + ("v" ?м) + ("b" ?и) + ("n" ?т) + ("m" ?ь) + ("," ?б) + ("." ?ю) + ("/" ?.) + ("!" ?!) + ("@" ?\") + ("#" ?№) + ("$" ?\;) + ("%" ?%) + ("^" ?:) + ("&" ??) + ("*" ?*) + ("(" ?() + (")" ?)) + ("_" ?_) + ("+" ?+) + ("~" ?') + ("Q" ?Й) + ("W" ?Ц) + ("E" ?У) + ("R" ?К) + ("T" ?Е) + ("Y" ?Н) + ("U" ?Г) + ("I" ?Ш) + ("O" ?Щ) + ("P" ?З) + ("{" ?Х) + ("}" ?Ї) + ("A" ?Ф) + ("S" ?І) + ("D" ?В) + ("F" ?А) + ("G" ?П) + ("H" ?Р) + ("J" ?О) + ("K" ?Л) + ("L" ?Д) + (":" ?Ж) + ("\"" ?Є) + ("Z" ?Я) + ("X" ?Ч) + ("C" ?С) + ("V" ?М) + ("B" ?И) + ("N" ?Т) + ("M" ?Ь) + ("<" ?Б) + (">" ?Ю) + ("?" ?,) + ("\\" ?ґ) + ("|" ?Ґ)) +;; + +;; Alexander Mikhailian says this is of limited use. It has been +;; popular among emigrants or foreigners who have to type in Cyrillic +;; (mostly Russian) from time to time. +(quail-define-package + "cyrillic-yawerty" "Cyrillic" "ЖЯ" nil + "ЯВЕРТЫ Roman transcription + +This layout is based on Roman transcription by phonemic resemblance. +When preceded by a '/', the second and the third rows (number key row) change +as follows. + + keytop | Q W E R T Y U I O P A S D + --------+--------------------------------------- + input | Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ў Џ" + nil t t t t nil nil nil nil nil t) + +;; 1! 2ё 3ъ 4Ё 5% 6^ 7& 8* 9( 0) -_ Ч Ю +;; Я В Е Р Т Ы У И О П Ш Щ +;; А С Д Ф Г Х Й К Л ;: '" Э +;; З Ь Ц Ж Б Н М ,< .> /? + +;; 1! 2ё 3ъ 4Ё 5% 6^ 7& 8* 9( 0) -_ Ч Ю +;; Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ш Щ +;; Ќ Ў Џ Ф Г Х Й К Л ;: '" Э +;; З Ь Ц Ж Б Н М ,< .> /? + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?-) + ("=" ?ч) + ("`" ?ю) + ("q" ?я) + ("w" ?в) + ("e" ?е) + ("r" ?р) + ("t" ?т) + ("y" ?ы) + ("u" ?у) + ("i" ?и) + ("o" ?о) + ("p" ?п) + ("[" ?ш) + ("]" ?щ) + ("a" ?а) + ("s" ?с) + ("d" ?д) + ("f" ?ф) + ("g" ?г) + ("h" ?х) + ("j" ?й) + ("k" ?к) + ("l" ?л) + (";" ?\;) + ("'" ?') + ("\\" ?э) + ("z" ?з) + ("x" ?ь) + ("c" ?ц) + ("v" ?ж) + ("b" ?б) + ("n" ?н) + ("m" ?м) + ("," ?,) + ("." ?.) + ("/" ?/) + + ("!" ?!) + ("@" ?ё) + ("#" ?ъ) + ("$" ?Ё) + ("%" ?%) + ("^" ?^) + ("&" ?&) + ("*" ?*) + ("(" ?\() + (")" ?\)) + ("_" ?_) + ("+" ?Ч) + ("~" ?Ю) + ("Q" ?Я) + ("W" ?В) + ("E" ?Е) + ("R" ?Р) + ("T" ?Т) + ("Y" ?Ы) + ("U" ?У) + ("I" ?И) + ("O" ?О) + ("P" ?П) + ("{" ?Ш) + ("}" ?Щ) + ("A" ?А) + ("S" ?С) + ("D" ?Д) + ("F" ?Ф) + ("G" ?Г) + ("H" ?Х) + ("J" ?Й) + ("K" ?К) + ("L" ?Л) + (":" ?:) + ("\"" ?\") + ("|" ?Э) + ("Z" ?З) + ("X" ?Ь) + ("C" ?Ц) + ("V" ?Ж) + ("B" ?Б) + ("N" ?Н) + ("M" ?М) + ("<" ?<) + (">" ?>) + ("?" ??) + + ("/q" ?ђ) + ("/w" ?ѓ) + ("/e" ?є) + ("/r" ?ѕ) + ("/t" ?і) + ("/y" ?ї) + ("/u" ?ј) + ("/i" ?љ) + ("/o" ?њ) + ("/p" ?ћ) + ("/a" ?ќ) + ("/s" ?ў) + ("/d" ?џ) + + ("/Q" ?Ђ) + ("/W" ?Ѓ) + ("/E" ?Є) + ("/R" ?Ѕ) + ("/T" ?І) + ("/Y" ?Ї) + ("/U" ?Ј) + ("/I" ?Љ) + ("/O" ?Њ) + ("/P" ?Ћ) + ("/A" ?Ќ) + ("/S" ?Ў) + ("/D" ?Џ)) + +;; This was provided by Valery Alexeev <valery@domovoy.math.uga.edu>. + +;; Ognyan Kulev <ogi@fmi.uni-sofia.bg> wrote: + +;; I would suggest future `cyrillic-translit' to be with the +;; modification of `cyrillic-translit-bulgarian' applied and the +;; latter to disappear. It could be used by people who write +;; bulgarian e-mails with latin letters for kick start (phonetic input +;; method is not so obvious as translit input method but each letter +;; is one keypress and a *lot* of people know it). + +;; Anton Zinoviev <anton@lml.bas.bg> wrote: +;; I would say that the main idea for cyrillic-translit is to be +;; language-independent and universal. It should be able to generate all +;; Cyrillic symbols. +(quail-define-package + "cyrillic-translit" "Cyrillic" "Жt" t + "Intuitively transliterated keyboard layout. +Most convenient for entering Russian, but all Cyrillic characters +are included. Should handle most cases. However: + for ц (TSE) use \"c\", never \"ts\" + щ (SHCHA = Bulgarian SHT) = \"shch\", \"sj\", \"/sht\" or \"/t\", + э (REVERSE ROUNDED E) = \"e\\\" + х (KHA) when after с (S) = \"x\" or \"kh\" + ъ (HARD SIGN) = \"~\", Ъ (CAPITAL HARD SIGN) = \"~~\", + ь (SOFT SIGN) = \"'\", Ь (CAPITAL SOFT SIGN) = \"''\", + я (YA) = \"ya\", \"ja\" or \"q\". + +Russian alphabet: a b v=w g d e yo=jo zh z i j=j' k l m n o p r s t +u f h=kh=x c ch sh shch=sj=/s=/sht ~ y ' e\\ yu=ju ya=ja=q + +Also included are Ukrainian є (YE) = \"/e\", ї (YI) = \"yi\", +ґ (GHE WITH UPTURN) = \"g'\", +Belarusian ў (SHORT U) = \"u~\", +Serbo-Croatian ђ (DJE) = \"/d\", ћ (CHJE)= \"/ch\", +Macedonian ѓ (GJE) = \"/g\", ѕ (DZE) = \"/s\", ќ (KJE) = \"/k\", +cyrillic і (I DECIMAL) = \"/i\", ј (JE) = \"/j\", +љ (LJE) = \"/l\", њ (NJE) = \"/n\" and џ (DZE) =\"/z\"." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("a" ?а) ("b" ?б) ("v" ?в) ("w" ?в) ("g" ?г) ("d" ?д) + ("e" ?е) ("je" ?е) + ("yo" ?ё) ("jo" ?ё) + ("zh" ?ж) ("z" ?з) ("i" ?и) + ("j" ?й) ("j'" ?й) ("j`" ?й) ("k" ?к) ("l" ?л) + ("m" ?м) ("n" ?н) ("o" ?о) ("p" ?п) ("r" ?р) ("s" ?с) ("t" ?т) ("u" ?у) + ("f" ?ф) ("x" ?х) ("h" ?х) ("kh" ?х) + ("c" ?ц) ("ch" ?ч) + ("sh" ?ш) + ("shch" ?щ) ("sj" ?щ) + ("/sht" ?щ) ("/t" ?щ) + ("~" ?ъ) ("y" ?ы) ("'" ?ь) ("`" ?ь) + ("e\\" ?э) ("e'" ?э) ("e`" ?э) ("@" ?э) + ("yu" ?ю) ("ju" ?ю) + ("ya" ?я) ("ja" ?я) ("q" ?я) + + ("A" ?А) ("B" ?Б) ("V" ?В) ("W" ?В) ("G" ?Г) ("D" ?Д) + ("E" ?Е) ("Je" ?Е) ("JE" ?Е) + ("Yo" ?Ё) ("YO" ?Ё) ("Jo" ?Ё) ("JO" ?Ё) + ("Zh" ?Ж) ("ZH" ?Ж) ("Z" ?З) ("I" ?И) + ("J" ?Й) ("J'" ?Й) ("J`" ?Й) ("K" ?К) ("L" ?Л) + ("M" ?М) ("N" ?Н) ("O" ?О) ("P" ?П) ("R" ?Р) ("S" ?С) ("T" ?Т) ("U" ?У) + ("F" ?Ф) ("X" ?Х) ("H" ?Х) ("Kh" ?Х) ("KH" ?Х) + ("C" ?Ц) ("Ch" ?Ч) ("CH" ?Ч) + ("Sh" ?Ш) ("SH" ?Ш) + ("Shch" ?Щ) ("SHCH" ?Щ) ("Sj" ?Щ) ("SJ" ?Щ) + ("/Sht" ?Щ) ("/SHT" ?Щ) ("/T" ?Щ) + ("~~" ?Ъ) ("Y" ?Ы) ("''" ?Ь) + ("E\\" ?Э) ("E'" ?Э) ("E`" ?Э) ("@@" ?Э) + ("Yu" ?Ю) ("YU" ?Ю) ("Ju" ?Ю) ("JU" ?Ю) + ("Ya" ?Я) ("YA" ?Я) ("Ja" ?Я) ("JA" ?Я) ("Q" ?Я) + + ("/e" ?є) ("yi" ?ї) ("u'" ?ў) ("u~" ?ў) + ("g'" ?ґ) + ("/d" ?ђ) ("/ch" ?ћ) + ("/g" ?ѓ) ("/s" ?ѕ) ("/k" ?ќ) + ("/i" ?і) ("/j" ?ј) ("/l" ?љ) ("/n" ?њ) ("/z" ?џ) + ("/E" ?Є) ("YE" ?Є) ("Yi" ?Ї) ("YI" ?Ї) ("U'" ?Ў) ("U~" ?Ў) + ("G'" ?Ґ) + ("/D" ?Ђ) ("/Ch" ?Ћ) ("/CH" ?Ћ) + ("/G" ?Ѓ) ("/S" ?Ѕ) ("/K" ?Ќ) + ("/I" ?І) ("/J" ?Ј) ("/L" ?Љ) ("/N" ?Њ) ("/Z" ?Џ) + + ;; Combining accents as a separate character + ("//'" ?́) ("//`" ?̀) + + ;; In the following two rules the accent is not a separate character + ("i`" ?ѝ) ("I`" ?Ѝ) + + ("/-" ?–) ;; EN DASH + ("/--" ?—) ;; EM DASH + ("/*" ?•) ;; BULLET + ("/." ?․) ;; ONE DOT LEADER + ("/.." ?‥) ;; TWO DOT LEADER + ("/..." ?…) ;; HORIZONTAL ELLIPSIS + ("/,," ?„) ;; DOUBLE LOW-9 QUOTATION MARK + ("/," ?‚) ;; SINGLE LOW-9 QUOTATION MARK + ("/''" ?”) ;; RIGHT DOUBLE QUOTATION MARK + ("/'" ?’) ;; RIGHT SINGLE QUOTATION MARK + ("/``" ?“) ;; LEFT DOUBLE QUOTATION MARK + ("/`" ?‘) ;; LEFT SINGLE QUOTATION MARK + ("/<<" ?«) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + ("/>>" ?») ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + + ("/&" ?§) + ("/ab" ?§) ; _аб_зац + ("/pa" ?§) ; _pa_ragraph + ("/#" ?№) + ("/no" ?№) ; _но_мер + + ("/c" ?©) + ("/tm" ?™) + ("/reg" ?®) + ("/eu" ?€) + ("/ce" ?¢) + + ;; fractions + ("/78" ?⅞) + ("/58" ?⅝) + ("/38" ?⅜) + ("/18" ?⅛) + ("/56" ?⅚) + ("/16" ?⅙) + ("/45" ?⅘) + ("/35" ?⅗) + ("/25" ?⅖) + ("/15" ?⅕) + ("/23" ?⅔) + ("/13" ?⅓) + ("/34" ?¾) + ("/12" ?½) + ("/14" ?¼) + + ;; Roman numerals, commonly used for months and section/subsection numbers + ("/RI" ?Ⅰ) + ("/RII" ?Ⅱ) + ("/RIII" ?Ⅲ) + ("/RIV" ?Ⅳ) + ("/RV" ?Ⅴ) + ("/RVI" ?Ⅵ) + ("/RVII" ?Ⅶ) + ("/RVIII" ?Ⅷ) + ("/RIX" ?Ⅸ) + ("/RX" ?Ⅹ) + ("/RXI" ?Ⅺ) + ("/RXII" ?Ⅻ) + + ("/ri" ?ⅰ) + ("/rii" ?ⅱ) + ("/riii" ?ⅲ) + ("/riv" ?ⅳ) + ("/rv" ?ⅴ) + ("/rvi" ?ⅵ) + ("/rvii" ?ⅶ) + ("/rviii" ?ⅷ) + ("/rix" ?ⅸ) + ("/rx" ?ⅹ) + ("/rxi" ?ⅺ) + ("/rxii" ?ⅻ) +) + +;; Originally from Yudit's `Belarusian input table according to +;; STB955-94 belarusian standard' (not all) by Alexander Mikhailian +;; <mikhailian@altern.org>, subsequently amended by AM. +(quail-define-package + "belarusian" "Belarusian" "BE" nil + "ЙЦУКЕН keyboard layout registered as STB955-94 Belarusian standard. +Unicode based." + nil t t t t nil nil nil nil nil t) + +;; ёЁ 1! 2" 3N 4; 5% 6: 7? 8* 9( 0) -_ =+ +;; Й Ц У К Е Н Г Ш Ў З Х ' +;; Ф Ы В А П Р О Л Д Ж Э +;; Я Ч С М І Т Ь Б Ю ., + +(quail-define-rules + ("~" ?Ё) + ("@" ?\") + ("#" ?№) + ("$" ?\;) + ("%" ?%) + ("^" ?:) + ("&" ??) + ("Q" ?Й) + ("W" ?Ц) + ("E" ?У) + ("R" ?К) + ("T" ?Е) + ("Y" ?Н) + ("U" ?Г) + ("I" ?Ш) + ("O" ?Ў) + ("P" ?З) + ("{" ?Х) + ("}" ?') + ("A" ?Ф) + ("S" ?Ы) + ("D" ?В) + ("F" ?А) + ("G" ?П) + ("H" ?Р) + ("J" ?О) + ("K" ?Л) + ("L" ?Д) + (":" ?Ж) + ("\"" ?Э) + ("|" ?|) + ("Z" ?Я) + ("X" ?Ч) + ("C" ?С) + ("V" ?М) + ("B" ?І) + ("N" ?Т) + ("M" ?Ь) + ("<" ?Б) + (">" ?Ю) + ("?" ?,) + + ("`" ?ё) + ("q" ?й) + ("w" ?ц) + ("e" ?у) + ("r" ?к) + ("t" ?е) + ("y" ?н) + ("u" ?г) + ("i" ?ш) + ("o" ?ў) + ("p" ?з) + ("[" ?х) + ("]" ?') + ("a" ?ф) + ("s" ?ы) + ("d" ?в) + ("f" ?а) + ("g" ?п) + ("h" ?р) + ("j" ?о) + ("k" ?л) + ("l" ?д) + (";" ?ж) + ("'" ?э) + ("z" ?я) + ("x" ?ч) + ("c" ?с) + ("v" ?м) + ("b" ?і) + ("n" ?т) + ("m" ?ь) + ("," ?б) + ("." ?ю) + ("/" ?.)) + +(quail-define-package + "bulgarian-alt-phonetic" "Bulgarian" "БНФ" + nil + "Bulgarian alternative Phonetic keyboard layout, producing Unicode. + +This phonetic layout replaces all the Latin letters with Bulgarian +\(Cyrillic) letters based on similarities in their pronunciation or look. + +Note that, since the letters 'щ', 'ь', 'ю' and 'я' are attached to the +']', '\', '`' and '[' keys respectively, Caps Lock does not affect them." +nil t t t t nil nil nil nil nil t) + +;; Ю 1! 2@ 3№ 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ьѝ +;; Ч Ш Е Р Т Ъ У И О П Я Щ +;; А С Д Ф Г Х Й К Л :; '" +;; З Ж Ц В Б Н М ,„ .“ /? + +(quail-define-rules + ("#" ?№) + ("&" ?§) + ("/#" ?#) + ("/&" ?&) + ("/<" ?<) + ("/>" ?>) + ("/[" ?\[) + ("/\\" ?\\) + ("/]" ?\]) + ("/^" ?^) + ("/_" ?_) + ("/`" ?`) + ("/{" ?{) + ("/|" ?|) + ("/}" ?}) + ("/~" ?~) + ("<" ?„) + (">" ?“) + ("A" ?А) ("a" ?а) + ("B" ?Б) ("b" ?б) + ("C" ?Ц) ("c" ?ц) + ("D" ?Д) ("d" ?д) + ("E" ?Е) ("e" ?е) + ("F" ?Ф) ("f" ?ф) + ("G" ?Г) ("g" ?г) + ("H" ?Х) ("h" ?х) + ("I" ?И) ("i" ?и) + ("J" ?Й) ("j" ?й) + ("K" ?К) ("k" ?к) + ("L" ?Л) ("l" ?л) + ("M" ?М) ("m" ?м) + ("N" ?Н) ("n" ?н) + ("O" ?О) ("o" ?о) + ("P" ?П) ("p" ?п) + ("Q" ?Ч) ("q" ?ч) + ("R" ?Р) ("r" ?р) + ("S" ?С) ("s" ?с) + ("T" ?Т) ("t" ?т) + ("U" ?У) ("u" ?у) + ("V" ?В) ("v" ?в) + ("W" ?Ш) ("w" ?ш) + ("X" ?Ж) ("x" ?ж) + ("Y" ?Ъ) ("y" ?ъ) + ("Z" ?З) ("z" ?з) + ("[" ?я) + ("\\" ?ь) + ("]" ?щ) + ("^" ?€) + ("_" ?–) + ("`" ?ю) + ("{" ?Я) + ("|" ?ѝ) + ("}" ?Щ) + ("~" ?Ю)) + +;; From `Bulgarian-PHO.kmap for Yudit', Alexander Shopov +;; <al_shopov@web.bg>. + +;; Extra commentary and the indicator from an independent +;; (cyrillic-iso8859-5) implementation by Ognyan Kulev +;; <ogi@fmi.uni-sofia.bg> and name changes from Anton Zinoviev +;; <anton@lml.bas.bg>. +(quail-define-package + "bulgarian-phonetic" "Bulgarian" "ЖБФ" + nil + "Bulgarian Phonetic keyboard layout, producing Unicode. + +The layout is similar to `cyrillic-translit', but all Bulgarian +characters are typed with a single key. + +Use /& for § (Cyrillic paragraph) and /# for №. + +The letters Ч, Ш, Щ and Ю are not affected by Caps Lock." + nil t t t t nil nil nil nil nil t) + +;; Ч +;; Я В Е Р Т Ъ У И О П Ш Щ +;; А С Д Ф Г Х Й К Л Ю +;; З Ь Ц Ж Б Н М + +(quail-define-rules + ("/&" ?§) + ("/#" ?№) + ("A" ?А) + ("B" ?Б) + ("W" ?В) + ("G" ?Г) + ("D" ?Д) + ("E" ?Е) + ("V" ?Ж) + ("Z" ?З) + ("I" ?И) + ("J" ?Й) + ("K" ?К) + ("L" ?Л) + ("M" ?М) + ("N" ?Н) + ("O" ?О) + ("P" ?П) + ("R" ?Р) + ("S" ?С) + ("T" ?Т) + ("U" ?У) + ("F" ?Ф) + ("H" ?Х) + ("C" ?Ц) + ("~" ?Ч) + ("{" ?Ш) + ("}" ?Щ) + ("Y" ?Ъ) + ("X" ?Ь) + ("|" ?Ю) + ("Q" ?Я) + ("a" ?а) + ("b" ?б) + ("w" ?в) + ("g" ?г) + ("d" ?д) + ("e" ?е) + ("v" ?ж) + ("z" ?з) + ("i" ?и) + ("j" ?й) + ("k" ?к) + ("l" ?л) + ("m" ?м) + ("n" ?н) + ("o" ?о) + ("p" ?п) + ("r" ?р) + ("s" ?с) + ("t" ?т) + ("u" ?у) + ("f" ?ф) + ("h" ?х) + ("c" ?ц) + ("`" ?ч) + ("[" ?ш) + ("]" ?щ) + ("y" ?ъ) + ("x" ?ь) + ("\\" ?ю) + ("q" ?я)) + +;; Based on an implementation by Ognyan Kulev <ogi@fmi.uni-sofia.bg>. +;; This follows XKB bg. + +(quail-define-package + "bulgarian-bds" "Bulgarian" "БДС" nil + "Bulgarian standard keyboard layout (BDS) + +This keyboard layout is standard for Bulgarian typewriters. + +The letters Ц, М, Ч, Р, Л, Б and Ы are not affected by Caps Lock. + +In addition to original Bulgarian typewriter layout, keys \\ and | +are transformed into ' and Ы respectively. Some keyboards mark these +keys as being transformed into ( and ) respectively. For ( and ), use +` and ~ respectively. This input method follows XKB." + nil t t t t nil nil nil nil nil t) + +;; () 1! 2? 3+ 4" 5% 6= 7: 8/ 9_ 0№ -I .V +;; ,ы У Е И Ш Щ К С Д З Ц ;§ +;; Ь Я А О Ж Г Т Н В М Ч 'Ы +;; Ю Й Ъ Э Ф Х П Р Л Б + +(quail-define-rules + + ("1" ?1) ("!" ?!) + ("2" ?2) ("@" ??) + ("3" ?3) ("#" ?+) + ("4" ?4) ("$" ?\") + ("5" ?5) ("%" ?%) + ("6" ?6) ("^" ?=) + ("7" ?7) ("&" ?:) + ("8" ?8) ("*" ?/) + ("9" ?9) ("(" ?_) + ("0" ?0) (")" ?№) + ("-" ?-) ("_" ?I) + ("=" ?.) ("+" ?V) + + ("q" ?,) ("Q" ?ы) + ("w" ?у) ("W" ?У) + ("e" ?е) ("E" ?Е) + ("r" ?и) ("R" ?И) + ("t" ?ш) ("T" ?Ш) + ("y" ?щ) ("Y" ?Щ) + ("u" ?к) ("U" ?К) + ("i" ?с) ("I" ?С) + ("o" ?д) ("O" ?Д) + ("p" ?з) ("P" ?З) + ("[" ?ц) ("{" ?Ц) + ("]" ?\;) ("}" ?§) + + ("a" ?ь) ("A" ?Ь) + ("s" ?я) ("S" ?Я) + ("d" ?а) ("D" ?А) + ("f" ?о) ("F" ?О) + ("g" ?ж) ("G" ?Ж) + ("h" ?г) ("H" ?Г) + ("j" ?т) ("J" ?Т) + ("k" ?н) ("K" ?Н) + ("l" ?в) ("L" ?В) + (";" ?м) (":" ?М) + ("'" ?ч) ("\"" ?Ч) + ("`" ?\() ("~" ?\)) + + ("z" ?ю) ("Z" ?Ю) + ("x" ?й) ("X" ?Й) + ("c" ?ъ) ("C" ?Ъ) + ("v" ?э) ("V" ?Э) + ("b" ?ф) ("B" ?Ф) + ("n" ?х) ("N" ?Х) + ("m" ?п) ("M" ?П) + ("," ?р) ("<" ?Р) + ("." ?л) (">" ?Л) + ("/" ?б) ("?" ?Б) + ("\\" ?') ("|" ?Ы)) + +;; Local Variables: +;; coding: utf-8 +;; End: + +;;; cyrillic.el ends here diff --git a/lisp/leim/quail/czech.el b/lisp/leim/quail/czech.el new file mode 100644 index 00000000000..56778927083 --- /dev/null +++ b/lisp/leim/quail/czech.el @@ -0,0 +1,568 @@ +;;; czech.el --- Quail package for inputting Czech -*-coding: utf-8;-*- + +;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc. + +;; Author: Milan Zamazal <pdm@zamazal.org> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Keywords: i18n, multilingual, input method, Czech + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file defines the following Czech keyboards: +;; - "standard" Czech keyboard in the Windoze NT 105 keys version (both +;; "QWERTZ" and "QWERTY" versions) +;; - three non-standard Czech keyboards for programmers + +;;; Code: + +(require 'quail) + + +(quail-define-package + "czech" "Czech" "CZ" t + "\"Standard\" Czech keyboard in the Windows NT 105 keys version." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?+) + ("2" ?ě) + ("3" ?š) + ("4" ?č) + ("5" ?ř) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("-" ?=) + ("_" ?%) + ("[" ?ú) + ("{" ?/) + ("]" ?\)) + ("}" ?\() + ("|" ?`) + (";" ?ů) + (":" ?\") + ("'" ?§) + ("\"" ?!) + ("<" ??) + (">" ?:) + ("/" ?-) + ("?" ?_) + ("`" ?\;) + ("y" ?z) + ("z" ?y) + ("Y" ?Z) + ("Z" ?Y) + ("\\a" ?ä) + ("\\o" ?ö) + ("\\s" ?ß) + ("\\u" ?ü) + ("\\A" ?Ä) + ("\\O" ?Ö) + ("\\S" ?ß) + ("\\U" ?Ü) + ("~u" ?ů) + ("~U" ?Ů) + ("=a" ?á) + ("+c" ?č) + ("+d" ?ď) + ("=e" ?é) + ("+e" ?ě) + ("=i" ?í) + ("+n" ?ň) + ("=o" ?ó) + ("+r" ?ř) + ("+s" ?š) + ("+t" ?ť) + ("=u" ?ú) + ("=z" ?ý) + ("+y" ?ž) + ("=A" ?Á) + ("+C" ?Č) + ("+D" ?Ď) + ("=E" ?É) + ("+E" ?Ě) + ("=I" ?Í) + ("+N" ?Ň) + ("=O" ?Ó) + ("+R" ?Ř) + ("+S" ?Š) + ("+T" ?Ť) + ("=U" ?Ú) + ("=Z" ?Ý) + ("+Y" ?Ž) + ("=1" ?!) + ("=2" ?@) + ("=3" ?#) + ("=4" ?$) + ("=5" ?%) + ("=6" ?^) + ("=7" ?&) + ("=8" ?*) + ("=9" ?\() + ("=0" ?\)) + ("+1" ?!) + ("+2" ?@) + ("+3" ?#) + ("+4" ?$) + ("+5" ?%) + ("+6" ?^) + ("+7" ?&) + ("+8" ?*) + ("+9" ?\() + ("+0" ?\)) + ("=<" ?<) + ("=>" ?>) + ("=[" ?\[) + ("=]" ?\]) + ("={" ?{) + ("=}" ?}) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +(quail-define-package + "czech-qwerty" "Czech" "CZ" t + "\"Standard\" Czech keyboard in the Windows NT 105 keys version, QWERTY layout." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?+) + ("2" ?ě) + ("3" ?š) + ("4" ?č) + ("5" ?ř) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("-" ?=) + ("_" ?%) + ("[" ?ú) + ("{" ?/) + ("]" ?\)) + ("}" ?\() + ("|" ?`) + (";" ?ů) + (":" ?\") + ("'" ?§) + ("\"" ?!) + ("<" ??) + (">" ?:) + ("/" ?-) + ("?" ?_) + ("`" ?\;) + ("\\a" ?ä) + ("\\o" ?ö) + ("\\s" ?ß) + ("\\u" ?ü) + ("\\A" ?Ä) + ("\\O" ?Ö) + ("\\S" ?ß) + ("\\U" ?Ü) + ("~u" ?ů) + ("~U" ?Ů) + ("=a" ?á) + ("+c" ?č) + ("+d" ?ď) + ("=e" ?é) + ("+e" ?ě) + ("=i" ?í) + ("+n" ?ň) + ("=o" ?ó) + ("+r" ?ř) + ("+s" ?š) + ("+t" ?ť) + ("=u" ?ú) + ("=y" ?ý) + ("+z" ?ž) + ("=A" ?Á) + ("+C" ?Č) + ("+D" ?Ď) + ("=E" ?É) + ("+E" ?Ě) + ("=I" ?Í) + ("+N" ?Ň) + ("=O" ?Ó) + ("+R" ?Ř) + ("+S" ?Š) + ("+T" ?Ť) + ("=Y" ?Ý) + ("+Z" ?Ž) + ("=U" ?Ú) + ("=1" ?!) + ("=2" ?@) + ("=3" ?#) + ("=4" ?$) + ("=5" ?%) + ("=6" ?^) + ("=7" ?&) + ("=8" ?*) + ("=9" ?\() + ("=0" ?\)) + ("+1" ?!) + ("+2" ?@) + ("+3" ?#) + ("+4" ?$) + ("+5" ?%) + ("+6" ?^) + ("+7" ?&) + ("+8" ?*) + ("+9" ?\() + ("+0" ?\)) + ("=<" ?<) + ("=>" ?>) + ("=[" ?\[) + ("=]" ?\]) + ("={" ?{) + ("=}" ?}) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +(quail-define-package + "czech-prog-1" "Czech" "CZ" t + "Czech (non-standard) keyboard for programmers #1. + +All digits except of `1' are replaced by Czech characters as on the standard +Czech keyboard. +`1' is replaced by `+'. +`+' is a dead key. Multiple presses of the dead key generate various accents. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?+) + ("2" ?ě) + ("3" ?š) + ("4" ?č) + ("5" ?ř) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("+1" ?1) + ("+2" ?2) + ("+3" ?3) + ("+4" ?4) + ("+5" ?5) + ("+6" ?6) + ("+7" ?7) + ("+8" ?8) + ("+9" ?9) + ("+0" ?0) + ("+a" ?á) + ("++a" ?ä) + ("+c" ?č) + ("+d" ?ď) + ("+e" ?é) + ("++e" ?ě) + ("+i" ?í) + ("+l" ?ĺ) + ("++l" ?ľ) + ("+n" ?ň) + ("+o" ?ó) + ("++o" ?ö) + ("+++o" ?ô) + ("+r" ?ř) + ("++r" ?ŕ) + ("+s" ?š) + ("++s" ?ß) + ("+t" ?ť) + ("+u" ?ú) + ("++u" ?ů) + ("+++u" ?ü) + ("+y" ?ý) + ("+z" ?ž) + ("+A" ?Á) + ("++A" ?Ä) + ("+C" ?Č) + ("+D" ?Ď) + ("+E" ?É) + ("++E" ?Ě) + ("+I" ?Í) + ("+L" ?Ĺ) + ("++L" ?Ľ) + ("+N" ?Ň) + ("+O" ?Ó) + ("++O" ?Ö) + ("+++O" ?Ô) + ("+R" ?Ř) + ("++R" ?Ŕ) + ("+S" ?Š) + ("++S" ?ß) + ("+T" ?Ť) + ("+U" ?Ú) + ("++U" ?Ů) + ("+++U" ?Ü) + ("+Y" ?Ý) + ("+Z" ?Ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +(quail-define-package + "czech-prog-2" "Czech" "CZ" t + "Czech (non-standard) keyboard for programmers #2. + +All digits except of `1' are replaced by Czech characters as on the standard +Czech keyboard. +`1' is replaced by `ů'. +`+' is a dead key. Multiple presses of the dead key generate various accents. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?ů) + ("2" ?ě) + ("3" ?š) + ("4" ?č) + ("5" ?ř) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("+1" ?1) + ("+2" ?2) + ("+3" ?3) + ("+4" ?4) + ("+5" ?5) + ("+6" ?6) + ("+7" ?7) + ("+8" ?8) + ("+9" ?9) + ("+0" ?0) + ("+a" ?á) + ("++a" ?ä) + ("+c" ?č) + ("+d" ?ď) + ("+e" ?é) + ("++e" ?ě) + ("+i" ?í) + ("+l" ?ĺ) + ("++l" ?ľ) + ("+n" ?ň) + ("+o" ?ó) + ("++o" ?ö) + ("+++o" ?ô) + ("+r" ?ř) + ("++r" ?ŕ) + ("+s" ?š) + ("++s" ?ß) + ("+t" ?ť) + ("+u" ?ú) + ("++u" ?ů) + ("+++u" ?ü) + ("+y" ?ý) + ("+z" ?ž) + ("+A" ?Á) + ("++A" ?Ä) + ("+C" ?Č) + ("+D" ?Ď) + ("+E" ?É) + ("++E" ?Ě) + ("+I" ?Í) + ("+L" ?Ĺ) + ("++L" ?Ľ) + ("+N" ?Ň) + ("+O" ?Ó) + ("++O" ?Ö) + ("+++O" ?Ô) + ("+R" ?Ř) + ("++R" ?Ŕ) + ("+S" ?Š) + ("++S" ?ß) + ("+T" ?Ť) + ("+U" ?Ú) + ("++U" ?Ů) + ("+++U" ?Ü) + ("+Y" ?Ý) + ("+Z" ?Ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +(quail-define-package + "czech-prog-3" "Czech" "CZ" t + "Czech (non-standard) keyboard for programmers compatible with the default +keyboard from the obsolete `emacs-czech' package. + +All digits except of `1' are replaced by Czech characters as on the standard +Czech keyboard. +`[' and `]' are replaced with `ú' and `ů', respectively. +There are two dead keys on `=' and `+'. Characters with diaereses are +accessible through `+='. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("2" ?ě) + ("3" ?š) + ("4" ?č) + ("5" ?ř) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("[" ?ú) + ("]" ?ů) + ("==" ?=) + ("++" ?+) + ("=+" ?+) + ("=[" ?\[) + ("=]" ?\]) + ("+[" ?\[) + ("+]" ?\]) + ("=1" ?1) + ("=2" ?2) + ("=3" ?3) + ("=4" ?4) + ("=5" ?5) + ("=6" ?6) + ("=7" ?7) + ("=8" ?8) + ("=9" ?9) + ("=0" ?0) + ("+1" ?1) + ("+2" ?2) + ("+3" ?3) + ("+4" ?4) + ("+5" ?5) + ("+6" ?6) + ("+7" ?7) + ("+8" ?8) + ("+9" ?9) + ("+0" ?0) + ("=A" ?Á) + ("+A" ?Ä) + ("+=A" ?Ä) + ("+C" ?Č) + ("+D" ?Ď) + ("=E" ?É) + ("+E" ?Ě) + ("=I" ?Í) + ("=L" ?Ľ) + ("+L" ?Ĺ) + ("+N" ?Ň) + ("=O" ?Ó) + ("+O" ?Ô) + ("+=O" ?Ö) + ("=R" ?Ŕ) + ("+R" ?Ř) + ("+S" ?Š) + ("=S" ?ß) + ("+T" ?Ť) + ("=U" ?Ú) + ("+U" ?Ů) + ("+=U" ?Ü) + ("=Y" ?Ý) + ("+Z" ?Ž) + ("=a" ?á) + ("+a" ?ä) + ("+=a" ?ä) + ("+c" ?č) + ("+d" ?ď) + ("=e" ?é) + ("+e" ?ě) + ("=i" ?í) + ("=l" ?ľ) + ("+l" ?ĺ) + ("+n" ?ň) + ("=o" ?ó) + ("+o" ?ô) + ("+=o" ?ö) + ("=r" ?ŕ) + ("+r" ?ř) + ("+s" ?š) + ("=s" ?ß) + ("+t" ?ť) + ("=u" ?ú) + ("+u" ?ů) + ("+=u" ?ü) + ("=y" ?ý) + ("+z" ?ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +;;; czech.el ends here diff --git a/lisp/leim/quail/ethiopic.el b/lisp/leim/quail/ethiopic.el new file mode 100644 index 00000000000..d99f649e5e7 --- /dev/null +++ b/lisp/leim/quail/ethiopic.el @@ -0,0 +1,1149 @@ +;;; ethiopic.el --- Quail package for inputting Ethiopic characters -*-coding: utf-8-emacs;-*- + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, ethiopic + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Author: TAKAHASHI Naoto <ntakahas@etl.go.jp> + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'ethio-util) + +;; +;; The package "ethiopic" +;; + +(quail-define-package + "ethiopic" "Ethiopic" + '("ፊደል " + (ethio-prefer-ascii-space "_" "፡") + "።") + t " Quail package for Ethiopic (Tigrigna and Amharic) + +When you are in Ethiopic language environment, the following special +keys are available. + +C-F9 or `M-x ethio-toggle-space' + Toggles space characters for keyboard input. The current mode is + indicated in mode-line, whether by `_' (ASCII space) or `፡' + (Ethiopic colon-like word separator). Even in the `፡' mode, an + ASCII space is inserted if the point is preceded by `an Ethiopic + punctuation followed by zero or more ASCII spaces'. + +S-F5 or `M-x ethio-toggle-punctuation' + Toggles ASCII punctuation and Ethiopic punctuation for keyboard input. + The current mode is indicated by `.' (ASCII) or `።' (Ethiopic). + +S-SPC or `M-x ethio-insert-ethio-space' + Always insert an Ethiopic word separator `፡'. With a prefix number, + insert that many word separators. + +C-' or `M-x ethio-gemination' + Compose the character before the point with the Ethiopic gemination mark. + If the character is already composed, decompose it and remove the + gemination mark." + + ;; The following keys should work as defined in lisp/language/ethio-util, + ;; even during the translation. + '(([C-f9] . quail-execute-non-quail-command) + ([S-f5] . quail-execute-non-quail-command) + (" " . quail-execute-non-quail-command) + ([?\S- ] . quail-execute-non-quail-command) + ([?\C-'] . quail-execute-non-quail-command)) + t t) + +(quail-define-rules + ("he" ?ሀ) + ("hu" ?ሁ) + ("hi" ?ሂ) + ("ha" ?ሃ) + ("hE" ?ሄ) + ("hee" ?ሄ) + ("h" ?ህ) + ("ho" ?ሆ) + ("hW" ?ኋ) + ("hWa" ?ኋ) + ("hWe" ?ኈ) + ("hWu" ?ኍ) + ("hWi" ?ኊ) + ("hWE" ?ኌ) + ("hW'" ?ኍ) + + ("le" ?ለ) + ("lu" ?ሉ) + ("li" ?ሊ) + ("la" ?ላ) + ("lE" ?ሌ) + ("lee" ?ሌ) + ("l" ?ል) + ("lo" ?ሎ) + ("lW" ?ሏ) + ("lWa" ?ሏ) + ("lWe" ["ል"]) + ("lWu" ["ል"]) + ("lWi" ["ል"]) + ("lWE" ["ል"]) + ("lW'" ["ል"]) + + ("Le" ?ለ) + ("Lu" ?ሉ) + ("Li" ?ሊ) + ("La" ?ላ) + ("LE" ?ሌ) + ("Lee" ?ሌ) + ("L" ?ል) + ("Lo" ?ሎ) + ("LW" ?ሏ) + ("LWa" ?ሏ) + ("LWe" ["ል"]) + ("LWu" ["ል"]) + ("LWi" ["ል"]) + ("LWE" ["ል"]) + ("LW'" ["ል"]) + + ("He" ?ሐ) + ("Hu" ?ሑ) + ("Hi" ?ሒ) + ("Ha" ?ሓ) + ("HE" ?ሔ) + ("Hee" ?ሔ) + ("H" ?ሕ) + ("Ho" ?ሖ) + ("HW" ?ሗ) + ("HWa" ?ሗ) + ("HWe" ["ሕ"]) + ("HWu" ["ሕ"]) + ("HWi" ["ሕ"]) + ("HWE" ["ሕ"]) + ("HW'" ["ሕ"]) + + ("me" ?መ) + ("mu" ?ሙ) + ("mi" ?ሚ) + ("ma" ?ማ) + ("mE" ?ሜ) + ("mee" ?ሜ) + ("m" ?ም) + ("mo" ?ሞ) + ("mWe" ?) + ("mWu" ?) + ("mWi" ?) + ("mW" ?ሟ) + ("mWa" ?ሟ) + ("mWE" ?) + ("mWee" ?) + ("mW'" ?) + ("mY" ?ፘ) + ("mYa" ?ፘ) + + ("Me" ?መ) + ("Mu" ?ሙ) + ("Mi" ?ሚ) + ("Ma" ?ማ) + ("ME" ?ሜ) + ("Mee" ?ሜ) + ("M" ?ም) + ("Mo" ?ሞ) + ("MWe" ?) + ("MWu" ?) + ("MWi" ?) + ("MW" ?ሟ) + ("MWa" ?ሟ) + ("MWE" ?) + ("MWee" ?) + ("MW'" ?) + ("MY" ?ፘ) + ("MYa" ?ፘ) + + ("`se" ?ሠ) + ("`su" ?ሡ) + ("`si" ?ሢ) + ("`sa" ?ሣ) + ("`sE" ?ሤ) + ("`see" ?ሤ) + ("`s" ?ሥ) + ("`so" ?ሦ) + ("`sW" ?ሧ) + ("`sWa" ?ሧ) + ("`sWe" ["ሥ"]) + ("`sWu" ["ሥ"]) + ("`sWi" ["ሥ"]) + ("`sWE" ["ሥ"]) + ("`sWee" ["ሥ"]) + ("`sW'" ["ሥ"]) + + ("s2e" ?ሠ) + ("s2u" ?ሡ) + ("s2i" ?ሢ) + ("s2a" ?ሣ) + ("s2E" ?ሤ) + ("s2ee" ?ሤ) + ("s2" ?ሥ) + ("s2o" ?ሦ) + ("s2W" ?ሧ) + ("s2Wa" ?ሧ) + ("s2We" ["ሥ"]) + ("s2Wu" ["ሥ"]) + ("s2Wi" ["ሥ"]) + ("s2WE" ["ሥ"]) + ("s2Wee" ["ሥ"]) + ("s2W'" ["ሥ"]) + + ("sse" ?ሠ) + ("ssu" ?ሡ) + ("ssi" ?ሢ) + ("ssa" ?ሣ) + ("ssE" ?ሤ) + ("ssee" ?ሤ) + ("ss" ?ሥ) + ("sso" ?ሦ) + ("ssW" ?ሧ) + ("ssWa" ?ሧ) + ("ssWe" ["ሥ"]) + ("ssWu" ["ሥ"]) + ("ssWi" ["ሥ"]) + ("ssWE" ["ሥ"]) + ("ssWee" ["ሥ"]) + ("ssW'" ["ሥ"]) + + ("re" ?ረ) + ("ru" ?ሩ) + ("ri" ?ሪ) + ("ra" ?ራ) + ("rE" ?ሬ) + ("ree" ?ሬ) + ("r" ?ር) + ("ro" ?ሮ) + ("rW" ?ሯ) + ("rWa" ?ሯ) + ("rY" ?ፙ) + ("rYa" ?ፙ) + ("rWe" ["ር"]) + ("rWu" ["ር"]) + ("rWi" ["ር"]) + ("rWE" ["ር"]) + ("rWee" ["ር"]) + ("rW'" ["ር"]) + + ("Re" ?ረ) + ("Ru" ?ሩ) + ("Ri" ?ሪ) + ("Ra" ?ራ) + ("RE" ?ሬ) + ("Ree" ?ሬ) + ("R" ?ር) + ("Ro" ?ሮ) + ("RW" ?ሯ) + ("RWa" ?ሯ) + ("RYa" ?ፙ) + ("RWe" ["ር"]) + ("RWu" ["ር"]) + ("RWi" ["ር"]) + ("RWE" ["ር"]) + ("RWee" ["ር"]) + ("RW'" ["ር"]) + + ("se" ?ሰ) + ("su" ?ሱ) + ("si" ?ሲ) + ("sa" ?ሳ) + ("sE" ?ሴ) + ("see" ?ሴ) + ("s" ?ስ) + ("so" ?ሶ) + ("sW" ?ሷ) + ("sWa" ?ሷ) + ("sWe" ["ስ"]) + ("sWu" ["ስ"]) + ("sWi" ["ስ"]) + ("sWE" ["ስ"]) + ("sWee" ["ስ"]) + ("sW'" ["ስ"]) + + ("xe" ?ሸ) + ("xu" ?ሹ) + ("xi" ?ሺ) + ("xa" ?ሻ) + ("xE" ?ሼ) + ("xee" ?ሼ) + ("x" ?ሽ) + ("xo" ?ሾ) + ("xW" ?ሿ) + ("xWa" ?ሿ) + ("xWe" ["ሽ"]) + ("xWu" ["ሽ"]) + ("xWi" ["ሽ"]) + ("xWE" ["ሽ"]) + ("xWee" ["ሽ"]) + ("xW'" ["ሽ"]) + + ("qe" ?ቀ) + ("qu" ?ቁ) + ("qi" ?ቂ) + ("qa" ?ቃ) + ("qE" ?ቄ) + ("qee" ?ቄ) + ("q" ?ቅ) + ("qo" ?ቆ) + ("qWe" ?ቈ) + ("qWu" ?ቍ) + ("qWi" ?ቊ) + ("qW" ?ቋ) + ("qWa" ?ቋ) + ("qWE" ?ቌ) + ("qWee" ?ቌ) + ("qW'" ?ቍ) + + ("`qe" ?) + ("`qu" ?) + ("`qi" ?) + ("`qa" ?) + ("`qE" ?) + ("`qee" ?) + ("`q" ?) + ("`qo" ?) + + ("q2e" ?) + ("q2u" ?) + ("q2i" ?) + ("q2a" ?) + ("q2E" ?) + ("q2ee" ?) + ("q2" ?) + ("q2o" ?) + + ("qqe" ?) + ("qqu" ?) + ("qqi" ?) + ("qqa" ?) + ("qqE" ?) + ("qqee" ?) + ("qq" ?) + ("qqo" ?) + + ("Qe" ?ቐ) + ("Qu" ?ቑ) + ("Qi" ?ቒ) + ("Qa" ?ቓ) + ("QE" ?ቔ) + ("Qee" ?ቔ) + ("Q" ?ቕ) + ("Qo" ?ቖ) + ("QWe" ?ቘ) + ("QWu" ?ቝ) + ("QWi" ?ቚ) + ("QW" ?ቛ) + ("QWa" ?ቛ) + ("QWE" ?ቜ) + ("QWee" ?ቜ) + ("QW'" ?ቝ) + + ("be" ?በ) + ("bu" ?ቡ) + ("bi" ?ቢ) + ("ba" ?ባ) + ("bE" ?ቤ) + ("bee" ?ቤ) + ("b" ?ብ) + ("bo" ?ቦ) + ("bWe" ?) + ("bWu" ?) + ("bWi" ?) + ("bW" ?ቧ) + ("bWa" ?ቧ) + ("bWE" ?) + ("bWee" ?) + ("bW'" ?) + + ("Be" ?በ) + ("Bu" ?ቡ) + ("Bi" ?ቢ) + ("Ba" ?ባ) + ("BE" ?ቤ) + ("Bee" ?ቤ) + ("B" ?ብ) + ("Bo" ?ቦ) + ("BWe" ?) + ("BWu" ?) + ("BWi" ?) + ("BW" ?ቧ) + ("BWa" ?ቧ) + ("BWE" ?) + ("BWee" ?) + ("BW'" ?) + + ("ve" ?ቨ) + ("vu" ?ቩ) + ("vi" ?ቪ) + ("va" ?ቫ) + ("vE" ?ቬ) + ("vee" ?ቬ) + ("v" ?ቭ) + ("vo" ?ቮ) + ("vW" ?ቯ) + ("vWa" ?ቯ) + ("vWe" ["ቭ"]) + ("vWu" ["ቭ"]) + ("vWi" ["ቭ"]) + ("vWE" ["ቭ"]) + ("vWee" ["ቭ"]) + ("vW'" ["ቭ"]) + + ("Ve" ?ቨ) + ("Vu" ?ቩ) + ("Vi" ?ቪ) + ("Va" ?ቫ) + ("VE" ?ቬ) + ("Vee" ?ቬ) + ("V" ?ቭ) + ("Vo" ?ቮ) + ("VW" ?ቯ) + ("VWa" ?ቯ) + ("VWe" ["ቭ"]) + ("VWu" ["ቭ"]) + ("VWi" ["ቭ"]) + ("VWE" ["ቭ"]) + ("VWee" ["ቭ"]) + ("VW'" ["ቭ"]) + + ("te" ?ተ) + ("tu" ?ቱ) + ("ti" ?ቲ) + ("ta" ?ታ) + ("tE" ?ቴ) + ("tee" ?ቴ) + ("t" ?ት) + ("to" ?ቶ) + ("tW" ?ቷ) + ("tWa" ?ቷ) + ("tWe" ["ት"]) + ("tWu" ["ት"]) + ("tWi" ["ት"]) + ("tWE" ["ት"]) + ("tWee" ["ት"]) + ("tW'" ["ት"]) + + ("ce" ?ቸ) + ("cu" ?ቹ) + ("ci" ?ቺ) + ("ca" ?ቻ) + ("cE" ?ቼ) + ("cee" ?ቼ) + ("c" ?ች) + ("co" ?ቾ) + ("cW" ?ቿ) + ("cWa" ?ቿ) + ("cWe" ["ች"]) + ("cWu" ["ች"]) + ("cWi" ["ች"]) + ("cWE" ["ች"]) + ("cWee" ["ች"]) + ("cW'" ["ች"]) + + ("`he" ?ኀ) + ("`hu" ?ኁ) + ("`hi" ?ኂ) + ("`ha" ?ኃ) + ("`hE" ?ኄ) + ("`hee" ?ኄ) + ("`h" ?ኅ) + ("`ho" ?ኆ) + ("`hWe" ?ኈ) + ("`hWu" ?ኍ) + ("`hWi" ?ኊ) + ("`hW" ?ኋ) + ("`hWa" ?ኋ) + ("`hWE" ?ኌ) + ("`hWee" ?ኌ) + ("`hW'" ?ኍ) + + ("h2e" ?ኀ) + ("h2u" ?ኁ) + ("h2i" ?ኂ) + ("h2a" ?ኃ) + ("h2E" ?ኄ) + ("h2ee" ?ኄ) + ("h2" ?ኅ) + ("h2o" ?ኆ) + ("h2We" ?ኈ) + ("h2Wu" ?ኍ) + ("h2Wi" ?ኊ) + ("h2W" ?ኋ) + ("h2Wa" ?ኋ) + ("h2WE" ?ኌ) + ("h2Wee" ?ኌ) + ("h2W'" ?ኍ) + + ("hhe" ?ኀ) + ("hhu" ?ኁ) + ("hhi" ?ኂ) + ("hha" ?ኃ) + ("hhE" ?ኄ) + ("hhee" ?ኄ) + ("hh" ?ኅ) + ("hho" ?ኆ) + ("hhWe" ?ኈ) + ("hhWu" ?ኍ) + ("hhWi" ?ኊ) + ("hhW" ?ኋ) + ("hhWa" ?ኋ) + ("hhWE" ?ኌ) + ("hhWee" ?ኌ) + ("hhW'" ?ኍ) + + ("ne" ?ነ) + ("nu" ?ኑ) + ("ni" ?ኒ) + ("na" ?ና) + ("nE" ?ኔ) + ("nee" ?ኔ) + ("n" ?ን) + ("no" ?ኖ) + ("nW" ?ኗ) + ("nWa" ?ኗ) + ("nWe" ["ን"]) + ("nWu" ["ን"]) + ("nWi" ["ን"]) + ("nWE" ["ን"]) + ("nWee" ["ን"]) + ("nW'" ["ን"]) + + ("Ne" ?ኘ) + ("Nu" ?ኙ) + ("Ni" ?ኚ) + ("Na" ?ኛ) + ("NE" ?ኜ) + ("Nee" ?ኜ) + ("N" ?ኝ) + ("No" ?ኞ) + ("NW" ?ኟ) + ("NWa" ?ኟ) + ("NWe" ["ኝ"]) + ("NWu" ["ኝ"]) + ("NWi" ["ኝ"]) + ("NWE" ["ኝ"]) + ("NWee" ["ኝ"]) + ("NW'" ["ኝ"]) + + ; ("e" ?አ) ; old style + ("u" ?ኡ) + ("U" ?ኡ) + ("i" ?ኢ) + ("a" ?ኣ) + ("A" ?ኣ) + ("E" ?ኤ) + ; ("ee" ?ኤ) ; Alef-E is rare vs Aynu-I, so ee = Aynu-I + ("I" ?እ) + ("e" ?እ) ; This is the premise to "new style" for vowels + + ("o" ?ኦ) + ("O" ?ኦ) + ("ea" ?ኧ) + + ("ke" ?ከ) + ("ku" ?ኩ) + ("ki" ?ኪ) + ("ka" ?ካ) + ("kE" ?ኬ) + ("kee" ?ኬ) + ("k" ?ክ) + ("ko" ?ኮ) + ("kWe" ?ኰ) + ("kWu" ?ኵ) + ("kWi" ?ኲ) + ("kW" ?ኳ) + ("kWa" ?ኳ) + ("kWE" ?ኴ) + ("kWee" ?ኴ) + ("kW'" ?ኵ) + + ("`ke" ?) + ("`ku" ?) + ("`ki" ?) + ("`ka" ?) + ("`kE" ?) + ("`kee" ?) + ("`k" ?) + ("`ko" ?) + + ("k2e" ?) + ("k2u" ?) + ("k2i" ?) + ("k2a" ?) + ("k2E" ?) + ("k2ee" ?) + ("k2" ?) + ("k2o" ?) + + ("kke" ?) + ("kku" ?) + ("kki" ?) + ("kka" ?) + ("kkE" ?) + ("kkee" ?) + ("kk" ?) + ("kko" ?) + + ("Ke" ?ኸ) + ("Ku" ?ኹ) + ("Ki" ?ኺ) + ("Ka" ?ኻ) + ("KE" ?ኼ) + ("Kee" ?ኼ) + ("K" ?ኽ) + ("Ko" ?ኾ) + ("KWe" ?ዀ) + ("KWu" ?ዅ) + ("KWi" ?ዂ) + ("KW" ?ዃ) + ("KWa" ?ዃ) + ("KWE" ?ዄ) + ("KWee" ?ዄ) + ("KW'" ?ዅ) + + ("Xe" ?) + ("Xu" ?) + ("Xi" ?) + ("Xa" ?) + ("XE" ?) + ("Xee" ?) + ("X" ?) + ("Xo" ?) + + ("we" ?ወ) + ("wu" ?ዉ) + ("wi" ?ዊ) + ("wa" ?ዋ) + ("wE" ?ዌ) + ("wee" ?ዌ) + ("w" ?ው) + ("wo" ?ዎ) + + ("`e" ?ዐ) + ("`u" ?ዑ) + ("`U" ?ዑ) + ("`i" ?ዒ) + ("`a" ?ዓ) + ("`A" ?ዓ) + ("`E" ?ዔ) + ("`ee" ?ዔ) + ("`I" ?ዕ) + ("`o" ?ዖ) + ("`O" ?ዖ) + + ("e2" ?ዐ) + ("u2" ?ዑ) + ("U2" ?ዑ) + ("i2" ?ዒ) + ("a2" ?ዓ) + ("A2" ?ዓ) + ("E2" ?ዔ) + ("ee2" ?ዔ) + ("I2" ?ዕ) + ("o2" ?ዖ) + ("O2" ?ዖ) + + ; ("ee" ?ዐ) ; old style + ("ae" ?ዐ) ; new style + ("aaa" ?ዐ) ; new style + ("uu" ?ዑ) + ("UU" ?ዑ) + ("ii" ?ዒ) + ("aa" ?ዓ) + ("AA" ?ዓ) + ("EE" ?ዔ) + ("II" ?ዕ) + ("ee" ?ዕ) ; new style + ("oo" ?ዖ) + ("OO" ?ዖ) + + ("ze" ?ዘ) + ("zu" ?ዙ) + ("zi" ?ዚ) + ("za" ?ዛ) + ("zE" ?ዜ) + ("zee" ?ዜ) + ("z" ?ዝ) + ("zo" ?ዞ) + ("zW" ?ዟ) + ("zWa" ?ዟ) + ("zWe" ["ዝ"]) + ("zWu" ["ዝ"]) + ("zWi" ["ዝ"]) + ("zWE" ["ዝ"]) + ("zWee" ["ዝ"]) + ("zW'" ["ዝ"]) + + ("Ze" ?ዠ) + ("Zu" ?ዡ) + ("Zi" ?ዢ) + ("Za" ?ዣ) + ("ZE" ?ዤ) + ("Zee" ?ዤ) + ("Z" ?ዥ) + ("Zo" ?ዦ) + ("ZW" ?ዧ) + ("ZWa" ?ዧ) + ("ZWe" ["ዥ"]) + ("ZWu" ["ዥ"]) + ("ZWi" ["ዥ"]) + ("ZWE" ["ዥ"]) + ("ZWee" ["ዥ"]) + ("ZW'" ["ዥ"]) + + ("ye" ?የ) + ("yu" ?ዩ) + ("yi" ?ዪ) + ("ya" ?ያ) + ("yE" ?ዬ) + ("yee" ?ዬ) + ("y" ?ይ) + ("yo" ?ዮ) + ("yW" ?) + ("yWa" ?) + ("yWe" ["ይ"]) + ("yWu" ["ይ"]) + ("yWi" ["ይ"]) + ("yWE" ["ይ"]) + ("yWee" ["ይ"]) + ("yW'" ["ይ"]) + + ("Ye" ?የ) + ("Yu" ?ዩ) + ("Yi" ?ዪ) + ("Ya" ?ያ) + ("YE" ?ዬ) + ("Yee" ?ዬ) + ("Y" ?ይ) + ("Yo" ?ዮ) + ("YW" ?) + ("YWa" ?) + ("YWe" ["ይ"]) + ("YWu" ["ይ"]) + ("YWi" ["ይ"]) + ("YWE" ["ይ"]) + ("YWee" ["ይ"]) + ("YW'" ["ይ"]) + + ("de" ?ደ) + ("du" ?ዱ) + ("di" ?ዲ) + ("da" ?ዳ) + ("dE" ?ዴ) + ("dee" ?ዴ) + ("d" ?ድ) + ("do" ?ዶ) + ("dW" ?ዷ) + ("dWa" ?ዷ) + ("dWe" ["ድ"]) + ("dWu" ["ድ"]) + ("dWi" ["ድ"]) + ("dWE" ["ድ"]) + ("dWee" ["ድ"]) + ("dW'" ["ድ"]) + + ("De" ?ዸ) + ("Du" ?ዹ) + ("Di" ?ዺ) + ("Da" ?ዻ) + ("DE" ?ዼ) + ("Dee" ?ዼ) + ("D" ?ዽ) + ("Do" ?ዾ) + ("DW" ?ዿ) + ("DWa" ?ዿ) + ("DWe" ["ዽ"]) + ("DWu" ["ዽ"]) + ("DWi" ["ዽ"]) + ("DWE" ["ዽ"]) + ("DWee" ["ዽ"]) + ("DW'" ["ዽ"]) + + ("je" ?ጀ) + ("ju" ?ጁ) + ("ji" ?ጂ) + ("ja" ?ጃ) + ("jE" ?ጄ) + ("jee" ?ጄ) + ("j" ?ጅ) + ("jo" ?ጆ) + ("jW" ?ጇ) + ("jWa" ?ጇ) + ("jWe" ["ጅ"]) + ("jWu" ["ጅ"]) + ("jWi" ["ጅ"]) + ("jWE" ["ጅ"]) + ("jWee" ["ጅ"]) + ("jW'" ["ጅ"]) + + ("Je" ?ጀ) + ("Ju" ?ጁ) + ("Ji" ?ጂ) + ("Ja" ?ጃ) + ("JE" ?ጄ) + ("Jee" ?ጄ) + ("J" ?ጅ) + ("Jo" ?ጆ) + ("JW" ?ጇ) + ("JWa" ?ጇ) + ("JWe" ["ጅ"]) + ("JWu" ["ጅ"]) + ("JWi" ["ጅ"]) + ("JWE" ["ጅ"]) + ("JWee" ["ጅ"]) + ("JW'" ["ጅ"]) + + ("ge" ?ገ) + ("gu" ?ጉ) + ("gi" ?ጊ) + ("ga" ?ጋ) + ("gE" ?ጌ) + ("gee" ?ጌ) + ("g" ?ግ) + ("go" ?ጎ) + ("gWe" ?ጐ) + ("gWu" ?ጕ) + ("gWi" ?ጒ) + ("gW" ?ጓ) + ("gWa" ?ጓ) + ("gWE" ?ጔ) + ("gWee" ?ጔ) + ("gW'" ?ጕ) + + ("`ge" ?) + ("`gu" ?) + ("`gi" ?) + ("`ga" ?) + ("`gE" ?) + ("`gee" ?) + ("`g" ?) + ("`go" ?) + + ("g2e" ?) + ("g2u" ?) + ("g2i" ?) + ("g2a" ?) + ("g2E" ?) + ("g2ee" ?) + ("g2" ?) + ("g2o" ?) + + ("gge" ?) + ("ggu" ?) + ("ggi" ?) + ("gga" ?) + ("ggE" ?) + ("ggee" ?) + ("gg" ?) + ("ggo" ?) + + ("Ge" ?ጘ) + ("Gu" ?ጙ) + ("Gi" ?ጚ) + ("Ga" ?ጛ) + ("GE" ?ጜ) + ("Gee" ?ጜ) + ("G" ?ጝ) + ("Go" ?ጞ) + ("GWe" ?) + ("GWu" ?) + ("GWi" ?) + ("GW" ?) + ("GWa" ?) + ("GWE" ?) + ("GWee" ?) + ("GW'" ?) + + ("Te" ?ጠ) + ("Tu" ?ጡ) + ("Ti" ?ጢ) + ("Ta" ?ጣ) + ("TE" ?ጤ) + ("Tee" ?ጤ) + ("T" ?ጥ) + ("To" ?ጦ) + ("TW" ?ጧ) + ("TWa" ?ጧ) + ("TWe" ["ጥ"]) + ("TWu" ["ጥ"]) + ("TWi" ["ጥ"]) + ("TWE" ["ጥ"]) + ("TWee" ["ጥ"]) + ("TW'" ["ጥ"]) + + ("Ce" ?ጨ) + ("Cu" ?ጩ) + ("Ci" ?ጪ) + ("Ca" ?ጫ) + ("CE" ?ጬ) + ("Cee" ?ጬ) + ("C" ?ጭ) + ("Co" ?ጮ) + ("CW" ?ጯ) + ("CWa" ?ጯ) + ("CWe" ["ጭ"]) + ("CWu" ["ጭ"]) + ("CWi" ["ጭ"]) + ("CWE" ["ጭ"]) + ("CWee" ["ጭ"]) + ("CW'" ["ጭ"]) + + ("Pe" ?ጰ) + ("Pu" ?ጱ) + ("Pi" ?ጲ) + ("Pa" ?ጳ) + ("PE" ?ጴ) + ("Pee" ?ጴ) + ("P" ?ጵ) + ("Po" ?ጶ) + ("PW" ?ጷ) + ("PWa" ?ጷ) + ("PWe" ["ጵ"]) + ("PWu" ["ጵ"]) + ("PWi" ["ጵ"]) + ("PWE" ["ጵ"]) + ("PWee" ["ጵ"]) + ("PW'" ["ጵ"]) + + ("Se" ?ጸ) + ("Su" ?ጹ) + ("Si" ?ጺ) + ("Sa" ?ጻ) + ("SE" ?ጼ) + ("See" ?ጼ) + ("S" ?ጽ) + ("So" ?ጾ) + ("SW" ?ጿ) + ("SWa" ?ጿ) + ("SWe" ["ጽ"]) + ("SWu" ["ጽ"]) + ("SWi" ["ጽ"]) + ("SWE" ["ጽ"]) + ("SWee" ["ጽ"]) + ("SW'" ["ጽ"]) + + ("`Se" ?ፀ) + ("`Su" ?ፁ) + ("`Si" ?ፂ) + ("`Sa" ?ፃ) + ("`SE" ?ፄ) + ("`See" ?ፄ) + ("`S" ?ፅ) + ("`So" ?ፆ) + ("`SW" ?ጿ) + ("`SWa" ?ጿ) + ("`SWe" ["ፅ"]) + ("`SWu" ["ፅ"]) + ("`SWi" ["ፅ"]) + ("`SWE" ["ፅ"]) + ("`SWee" ["ፅ"]) + ("`SW'" ["ፅ"]) + + ("S2e" ?ፀ) + ("S2u" ?ፁ) + ("S2i" ?ፂ) + ("S2a" ?ፃ) + ("S2E" ?ፄ) + ("S2ee" ?ፄ) + ("S2" ?ፅ) + ("S2o" ?ፆ) + ("S2W" ?ጿ) + ("S2Wa" ?ጿ) + ("S2We" ["ፅ"]) + ("S2Wu" ["ፅ"]) + ("S2Wi" ["ፅ"]) + ("S2WE" ["ፅ"]) + ("S2Wee" ["ፅ"]) + ("S2W'" ["ፅ"]) + + ("SSe" ?ፀ) + ("SSu" ?ፁ) + ("SSi" ?ፂ) + ("SSa" ?ፃ) + ("SSE" ?ፄ) + ("SSee" ?ፄ) + ("SS" ?ፅ) + ("SSo" ?ፆ) + ("SSW" ?ጿ) + ("SSWa" ?ጿ) + ("SSWe" ["ፅ"]) + ("SSWu" ["ፅ"]) + ("SSWi" ["ፅ"]) + ("SSWE" ["ፅ"]) + ("SSWee" ["ፅ"]) + ("SW'" ["ፅ"]) + + ("fe" ?ፈ) + ("fu" ?ፉ) + ("fi" ?ፊ) + ("fa" ?ፋ) + ("fE" ?ፌ) + ("fee" ?ፌ) + ("f" ?ፍ) + ("fo" ?ፎ) + ("fWe" ?) + ("fWu" ?) + ("fWi" ?) + ("fW" ?ፏ) + ("fWa" ?ፏ) + ("fWE" ?) + ("fWee" ?) + ("fW'" ?) + ("fY" ?ፚ) + ("fYa" ?ፚ) + + ("Fe" ?ፈ) + ("Fu" ?ፉ) + ("Fi" ?ፊ) + ("Fa" ?ፋ) + ("FE" ?ፌ) + ("Fee" ?ፌ) + ("F" ?ፍ) + ("Fo" ?ፎ) + ("FWe" ?) + ("FWu" ?) + ("FWi" ?) + ("FW" ?ፏ) + ("FWa" ?ፏ) + ("FWE" ?) + ("FWee" ?) + ("FW'" ?) + ("FY" ?ፚ) + ("FYa" ?ፚ) + + ("pe" ?ፐ) + ("pu" ?ፑ) + ("pi" ?ፒ) + ("pa" ?ፓ) + ("pE" ?ፔ) + ("pee" ?ፔ) + ("p" ?ፕ) + ("po" ?ፖ) + ("pWe" ?) + ("pWu" ?) + ("pWi" ?) + ("pW" ?ፗ) + ("pWa" ?ፗ) + ("pWE" ?) + ("pWee" ?) + ("pW'" ?) + + ("'" [""]) + ("''" ?') + (":" ?፡) + ("::" ?።) + (":::" ?:) + ("." ?።) + (".." ?) + ("..." ?.) + ("," ?፣) + (",," ?,) + (";" ?፤) + (";;" ?\;) + ("-:" ?፥) + (":-" ?፦) + ("*" ?*) + ("**" ?፨) + (":|:" ?፨) + ("?" ?) + ("??" ?፧) + ("`?" ?፧) + ("???" ??) + ("<<" ?) + (">>" ?) + ("`!" ?) + ("wWe" ?) + ("wWu" ?) + ("wWi" ?) + ("wW" ?) + ("wWa" ?) + ("wWE" ?) + ("wWee" ?) + ("wW'" ?) + ("We" ?) + ("Wu" ?) + ("Wi" ?) + ("W" ?) + ("Wa" ?) + ("WE" ?) + ("Wee" ?) + ("W'" ?) + ("`1" ?፩) + ("`2" ?፪) + ("`3" ?፫) + ("`4" ?፬) + ("`5" ?፭) + ("`6" ?፮) + ("`7" ?፯) + ("`8" ?፰) + ("`9" ?፱) + ("`10" ?፲) + ("`20" ?፳) + ("`30" ?፴) + ("`40" ?፵) + ("`50" ?፶) + ("`60" ?፷) + ("`70" ?፸) + ("`80" ?፹) + ("`90" ?፺) + ("`100" ?፻) + ("`1000" ["፲፻"]) + ("`2000" ["፳፻"]) + ("`3000" ["፴፻"]) + ("`4000" ["፵፻"]) + ("`5000" ["፶፻"]) + ("`6000" ["፷፻"]) + ("`7000" ["፸፻"]) + ("`8000" ["፹፻"]) + ("`9000" ["፺፻"]) + ("`10000" ?፼) + ("`20000" ["፪፼"]) + ("`30000" ["፫፼"]) + ("`40000" ["፬፼"]) + ("`50000" ["፭፼"]) + ("`60000" ["፮፼"]) + ("`70000" ["፯፼"]) + ("`80000" ["፰፼"]) + ("`90000" ["፱፼"]) + ("`100000" ["፲፼"]) + ("`200000" ["፳፼"]) + ("`300000" ["፴፼"]) + ("`400000" ["፵፼"]) + ("`500000" ["፶፼"]) + ("`600000" ["፷፼"]) + ("`700000" ["፸፼"]) + ("`800000" ["፹፼"]) + ("`900000" ["፺፼"]) + ("`1000000" ["፻፼"]) +) + +(defun ethio-select-a-translation () + ;; The translation of `a' depends on the language + ;; (either Tigrigna or Amharic). + (quail-defrule "a" + (if (ethio-prefer-amharic-p) ?አ ?ኣ) + "ethiopic")) + +;;; ethiopic.el ends here diff --git a/lisp/leim/quail/georgian.el b/lisp/leim/quail/georgian.el new file mode 100644 index 00000000000..7aa00c54cd7 --- /dev/null +++ b/lisp/leim/quail/georgian.el @@ -0,0 +1,83 @@ +;;; georgian.el --- Quail package for inputting Georgian characters -*-coding: utf-8;-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Dave Love <fx@gnu.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Georgian input following the Yudit map from Mark Leisher +;; <mleisher@crl.nmsu.edu>. + +;;; Code: + +(require 'quail) + +(quail-define-package + "georgian" "Georgian" "გ" t + "A common Georgian transliteration (using Unicode)" + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("a" ?ა) + ("b" ?ბ) + ("g" ?გ) + ("d" ?დ) + ("e" ?ე) + ("v" ?ვ) + ("z" ?ზ) + ("t" ?თ) + ("i" ?ი) + (".k" ?კ) + ("l" ?ლ) + ("m" ?მ) + ("n" ?ნ) + ("o" ?ო) + (".p" ?პ) + ("+z" ?ჟ) + ("r" ?რ) + ("s" ?ს) + (".t" ?ტ) + ("u" ?უ) + ("p" ?ფ) + ("k" ?ქ) + (".g" ?ღ) + ("q" ?ყ) + ("+s" ?შ) + ("+c" ?ჩ) + ("c" ?ც) + ("j" ?ძ) + (".c" ?წ) + (".+c" ?ჭ) + ("x" ?ხ) + ("+j" ?ჯ) + ("h" ?ჰ) + ("q1" ?ჴ) + ("e0" ?ჱ) + ("o1" ?ჵ) + ("i1" ?ჲ) + ("w" ?ჳ) + ("f" ?ჶ) + ;; Presumably, these are GEORGIAN LETTER YN, GEORGIAN LETTER ELIFI, + ;; accepted for U+10F7, U+10F8 -- fx + ("y" ?) ;; Letter not in Unicode (private use code). + ("e1" ?) ;; Letter not in Unicode (private use code). + ) + +;;; georgian.el ends here diff --git a/lisp/leim/quail/greek.el b/lisp/leim/quail/greek.el new file mode 100644 index 00000000000..291592e4736 --- /dev/null +++ b/lisp/leim/quail/greek.el @@ -0,0 +1,1431 @@ +;;; greek.el --- Quail package for inputting Greek -*-coding: utf-8-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Greek + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "greek-jis" "Greek" "Ω" nil + "Ελληνικα: Greek keyboard layout (JIS X0208.1983) + +The layout is same as greek, but uses JIS characters. +Sorry, accents and terminal sigma are not supported in JIS." + nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?−) + ("=" ?=) + ("`" ?‘) + ("q" ?・) + ("w" ?σ) + ("e" ?ε) + ("r" ?ρ) + ("t" ?τ) + ("y" ?υ) + ("u" ?θ) + ("i" ?ι) + ("o" ?ο) + ("p" ?π) + ("[" ?\[) + ("]" ?\]) + ("a" ?α) + ("s" ?σ) + ("d" ?δ) + ("f" ?φ) + ("g" ?γ) + ("h" ?η) + ("j" ?ξ) + ("k" ?κ) + ("l" ?λ) + (";" ?’) + ("'" ?’) + ("\\" ?\) + ("z" ?ζ) + ("x" ?χ) + ("c" ?ψ) + ("v" ?ω) + ("b" ?β) + ("n" ?ν) + ("m" ?μ) + ("," ?, ) + ("." ?. ) + ("/" ?/) + + ("!" ?!) + ("@" ?@) + ("#" ?#) + ("$" ?#) + ("%" ?%) + ("^" ?^) + ("&" ?&) + ("*" ?*) + ("(" ?\() + (")" ?\)) + ("_" ?_) + ("+" ?+) + ("~" ? ̄) + ("Q" ?−) + ("W" ?Σ) + ("E" ?Ε) + ("R" ?Ρ) + ("T" ?Τ) + ("Y" ?Υ) + ("U" ?Θ) + ("I" ?Ι) + ("O" ?Ο) + ("P" ?Ρ) + ("{" ?\{) + ("}" ?\}) + ("A" ?Α) + ("S" ?Σ) + ("D" ?Δ) + ("F" ?Φ) + ("G" ?Γ) + ("H" ?Η) + ("J" ?Ξ) + ("K" ?Κ) + ("L" ?Λ) + (":" ?”) + ("\"" ?”) + ("|" ?|) + ("Z" ?Ζ) + ("X" ?Χ) + ("C" ?Ψ) + ("V" ?Ω) + ("B" ?Β) + ("N" ?Ν) + ("M" ?Μ) + ("<" ?;) + (">" ?:) + ("?" ??)) + +;; + +(quail-define-package "greek-mizuochi" "Greek" "CG" t +"The Mizuochi input method for Classical Greek using mule-unicode-0100-24ff. + +------------------------------------- +character capital small +------------------------------------- +alpha A a +beta B b +gamma G g +delta D d +epsilon E e +zeta Z z +eta H h +theta Q q +iota I i +kappa K k +lambda L l +mu M m +nu N n +xi X x +omicron O o +pi P p +rho R r +sigma S s +final sigma j +tau T t +upsilon U u +phi F f +chi C c +psi Y y +omega W w +------------------------------------- +sampi ! +digamma # +stigma $ +koppa & % +------------------------------------- + +------------------------ +mark key +------------------------ +ypogegrammeni J +psili ' or v +dasia ` or V +oxia / +varia ? +perispomeni \\ or ^ +dialytika \" +ano teleia : +erotimatiko ; +---------------------- +" +nil t t nil nil nil nil nil nil nil t) + +(quail-define-rules + + ("!" ?ϡ) ; sampi + ("#" ?Ϝ) ; DIGAMMA + ("$" ?ϛ) ; stigma + ("%" ?ϟ) ; koppa + ("&" ?Ϟ) ; KOPPA + ("'" ?᾿) ("v" ?᾿) ; psili + ("/" ?´) ; oxia + (":" ?·) ; ano teleia + (";" ?;) ; erotimatiko + ("\"" ?¨) ; dialytika + + ("A" ?Α) + ("B" ?Β) + ("C" ?Χ) + ("D" ?Δ) + ("E" ?Ε) + ("F" ?Φ) + ("G" ?Γ) + ("H" ?Η) + ("I" ?Ι) + ("wJ" ?ῳ) + ("K" ?Κ) + ("L" ?Λ) + ("M" ?Μ) + ("N" ?Ν) + ("O" ?Ο) + + ("P" ?Π) + ("Q" ?Θ) + ("R" ?Ρ) + ("S" ?Σ) + ("T" ?Τ) + ("U" ?Υ) + ("hJ" ?ῃ) + ("W" ?Ω) + ("X" ?Ξ) + ("Y" ?Ψ) + ("Z" ?Ζ) + ("?" ?`) ; varia + ("\\" ?῀) ("^" ?῀) ; perispomeni + + ("`" ?῾) ("V" ?῾) ; dasia + ("a" ?α) + ("b" ?β) + ("c" ?χ) + ("d" ?δ) + ("e" ?ε) + ("f" ?φ) + ("g" ?γ) + ("h" ?η) + ("i" ?ι) + ("j" ?ς) + ("k" ?κ) + ("l" ?λ) + ("m" ?μ) + ("n" ?ν) + ("o" ?ο) + + ("p" ?π) + ("q" ?θ) + ("r" ?ρ) + ("s" ?σ) + ("t" ?τ) + ("u" ?υ) + ("aJ" ?ᾳ) + ("w" ?ω) + ("x" ?ξ) + ("y" ?ψ) + ("z" ?ζ) + + ("i`" ?ἱ) ("iV" ?ἱ) + ("i'" ?ἰ) ("iv" ?ἰ) + ("i/" ?ί) + ("i`/" ?ἵ) ("iV/" ?ἵ) ("i/`" ?ἵ) ("i/V" ?ἵ) + ("i'/" ?ἴ) ("iv/" ?ἴ) ("i/'" ?ἴ) ("i/v" ?ἴ) + ("i?" ?ὶ) + ("i`?" ?ἳ) ("iV?" ?ἳ) ("i?`" ?ἳ) ("i?V" ?ἳ) + ("i'?" ?ἲ) ("iv?" ?ἲ) ("i?'" ?ἲ) ("i?v" ?ἲ) + ("i^" ?ῖ) ("i\\" ?ῖ) + ("i`^" ?ἷ) ("i`\\" ?ἷ) ("iV^" ?ἷ) ("iV\\" ?ἷ) + ("i^`" ?ἷ) ("i\\`" ?ἷ) ("i^V" ?ἷ) ("i\\V" ?ἷ) + ("i'^" ?ἶ) ("i'\\" ?ἶ) ("iv^" ?ἶ) ("iv\\" ?ἶ) + ("i^'" ?ἶ) ("i\\'" ?ἶ) ("i^v" ?ἶ) ("i\\v" ?ἶ) + ("i\"" ?ϊ) + ("i/\"" ?ΐ) ("i\"/" ?ΐ) + ("i?\"" ?ῒ) ("i\"?" ?ῒ) + + ("^`" ?῟) ("^V" ?῟) ("\\`" ?῟) ("\\V" ?῟) + ("`^" ?῟) ("V^" ?῟) ("`\\" ?῟) ("V\\" ?῟) + ("^'" ?῏) ("^v" ?῏) ("\\'" ?῏) ("\\v" ?῏) + ("'^" ?῏) ("v^" ?῏) ("'\\" ?῏) ("v\\" ?῏) + ("/`" ?῞) ("/V" ?῞) ("`/" ?῞) ("V/" ?῞) + ("/'" ?῎) ("/v" ?῎) ("'/" ?῎) ("v/" ?῎) + ("?`" ?῝) ("?V" ?῝) ("`?" ?῝) ("V?" ?῝) + ("?'" ?῍) ("?v" ?῍) ("'?" ?῍) ("v?" ?῍) + ("\"/" ?΅) ("/\"" ?΅) + ("\"?" ?῭) ("?\"" ?῭) + + ("e`" ?ἑ) ("eV" ?ἑ) + ("e'" ?ἐ) ("ev" ?ἐ) + ("e/" ?έ) + ("e/`" ?ἕ) ("e/V" ?ἕ) ("e`/" ?ἕ) ("eV/" ?ἕ) + ("e/'" ?ἔ) ("e/v" ?ἔ) ("e'/" ?ἔ) ("ev/" ?ἔ) + ("e?" ?ὲ) + ("e?`" ?ἓ) ("e?V" ?ἓ) ("e`?" ?ἓ) ("eV?" ?ἓ) + ("e?'" ?ἒ) ("e?v" ?ἒ) ("e'?" ?ἒ) ("ev?" ?ἒ) + + ("a`" ?ἁ) ("aV" ?ἁ) + ("a'" ?ἀ) ("av" ?ἀ) + ("a/" ?ά) + ("a/`" ?ἅ) ("a/V" ?ἅ) ("a`/" ?ἅ) ("aV/" ?ἅ) + ("a/'" ?ἄ) ("a/v" ?ἄ) ("a'/" ?ἄ) ("av/" ?ἄ) + ("a?" ?ὰ) + ("a?`" ?ἃ) ("a?V" ?ἃ) ("a`?" ?ἃ) ("aV?" ?ἃ) + ("a?'" ?ἂ) ("a?v" ?ἂ) ("a'?" ?ἂ) ("av?" ?ἂ) + ("a^" ?ᾶ) ("a\\" ?ᾶ) + ("a^`" ?ἇ) ("a^V" ?ἇ) ("a\\`" ?ἇ) ("a\\V" ?ἇ) + ("a`^" ?ἇ) ("aV^" ?ἇ) ("a`\\" ?ἇ) ("aV\\" ?ἇ) + ("a^'" ?ἆ) ("a^v" ?ἆ) ("a\\'" ?ἆ) ("a\\v" ?ἆ) + ("a'^" ?ἆ) ("av^" ?ἆ) ("a'\\" ?ἆ) ("av\\" ?ἆ) + + ("aJ`" ?ᾁ) ("aJV" ?ᾁ) + ("aJ'" ?ᾀ) ("aJv" ?ᾀ) + ("aJ/" ?ᾴ) + ("aJ/`" ?ᾅ) ("aJ/V" ?ᾅ) ("aJ`/" ?ᾅ) ("aJV/" ?ᾅ) + ("aJ/'" ?ᾄ) ("aJ/v" ?ᾄ) ("aJ'/" ?ᾄ) ("aJv/" ?ᾄ) + ("aJ?" ?ᾲ) + ("aJ?`" ?ᾃ) ("aJ?V" ?ᾃ) ("aJ`?" ?ᾃ) ("aJV?" ?ᾃ) + ("aJ?'" ?ᾂ) ("aJ?v" ?ᾂ) ("aJ'?" ?ᾂ) ("aJv?" ?ᾂ) + ("aJ^" ?ᾷ) ("aJ\\" ?ᾷ) + ("aJ^`" ?ᾇ) ("aJ^V" ?ᾇ) ("aJ\\`" ?ᾇ) ("aJ\\V" ?ᾇ) + ("aJ`^" ?ᾇ) ("aJV^" ?ᾇ) ("aJ`\\" ?ᾇ) ("aJV\\" ?ᾇ) + ("aJ^'" ?ᾆ) ("aJ^v" ?ᾆ) ("aJ\\'" ?ᾆ) ("aJ\\v" ?ᾆ) + ("aJ'^" ?ᾆ) ("aJv^" ?ᾆ) ("aJ'\\" ?ᾆ) ("aJv\\" ?ᾆ) + + ("r`" ?ῥ) ("rV" ?ῥ) + ("r'" ?ῤ) ("rv" ?ῤ) + + ("h`" ?ἡ) ("hV" ?ἡ) + ("h'" ?ἠ) ("hv" ?ἠ) + ("h/" ?ή) + ("h/`" ?ἥ) ("h/V" ?ἥ) ("h`/" ?ἥ) ("hV/" ?ἥ) + ("h/'" ?ἤ) ("h/v" ?ἤ) ("h'/" ?ἤ) ("hv/" ?ἤ) + ("h?" ?ὴ) + ("h?`" ?ἣ) ("h?V" ?ἣ) ("h`?" ?ἣ) ("hV?" ?ἣ) + ("h?'" ?ἢ) ("h?v" ?ἢ) ("h'?" ?ἢ) ("hv?" ?ἢ) + ("h^" ?ῆ) ("h\\" ?ῆ) + ("h^`" ?ἧ) ("h^V" ?ἧ) ("h\\`" ?ἧ) ("h\\V" ?ἧ) + ("h`^" ?ἧ) ("h`\\" ?ἧ) ("hV^" ?ἧ) ("hV\\" ?ἧ) + ("h^'" ?ἦ) ("h^v" ?ἦ) ("h\\'" ?ἦ) ("h\\v" ?ἦ) + ("h'^" ?ἦ) ("h'\\" ?ἦ) ("hv^" ?ἦ) ("hv\\" ?ἦ) + + ("J" ?ͺ) ; ypogegrammeni + + ("hJ`" ?ᾑ) ("hJV" ?ᾑ) + ("hJ'" ?ᾐ) ("hJv" ?ᾐ) + ("hJ/" ?ῄ) + ("hJ`/" ?ᾕ) ("hJV/" ?ᾕ) ("hJ/`" ?ᾕ) ("hJ/V" ?ᾕ) + ("hJ'/" ?ᾔ) ("hJv/" ?ᾔ) ("hJ/'" ?ᾔ) ("hJ/v" ?ᾔ) + ("hJ?" ?ῂ) + ("hJ`?" ?ᾓ) ("hJV?" ?ᾓ) ("hJ?`" ?ᾓ) ("hJ?V" ?ᾓ) + ("hJ'?" ?ᾒ) ("hJv?" ?ᾒ) ("hJ?'" ?ᾒ) ("hJ?v" ?ᾒ) + ("hJ^" ?ῇ) ("hJ\\" ?ῇ) + ("hJ`^" ?ᾗ) ("hJ`\\" ?ᾗ) ("hJV^" ?ᾗ) ("hJV\\" ?ᾗ) + ("hJ^`" ?ᾗ) ("hJ\\`" ?ᾗ) ("hJ^V" ?ᾗ) ("hJ\\V" ?ᾗ) + ("hJ'^" ?ᾖ) ("hJ'\\" ?ᾖ) ("hJv^" ?ᾖ) ("hJv\\" ?ᾖ) + ("hJ^'" ?ᾖ) ("hJ\\'" ?ᾖ) ("hJ^v" ?ᾖ) ("hJ\\v" ?ᾖ) + + ("o`" ?ὁ) ("oV" ?ὁ) + ("o'" ?ὀ) ("ov" ?ὀ) + ("o/" ?ό) + ("o/`" ?ὅ) ("o/V" ?ὅ) ("o`/" ?ὅ) ("oV/" ?ὅ) + ("o/'" ?ὄ) ("o/v" ?ὄ) ("o'/" ?ὄ) ("ov/" ?ὄ) + ("o?" ?ὸ) + ("o?`" ?ὃ) ("o?V" ?ὃ) ("o`?" ?ὃ) ("oV?" ?ὃ) + ("o?'" ?ὂ) ("o?v" ?ὂ) ("o'?" ?ὂ) ("ov?" ?ὂ) + + ("u`" ?ὑ) ("uV" ?ὑ) + ("u'" ?ὐ) ("uv" ?ὐ) + ("u/" ?ύ) + ("u/`" ?ὕ) ("u/V" ?ὕ) ("u`/" ?ὕ) ("uV/" ?ὕ) + ("u/'" ?ὔ) ("u/v" ?ὔ) ("u'/" ?ὔ) ("uv/" ?ὔ) + ("u?" ?ὺ) + ("u?`" ?ὓ) ("u?V" ?ὓ) ("u`?" ?ὓ) ("uV?" ?ὓ) + ("u?'" ?ὒ) ("u?v" ?ὒ) ("u'?" ?ὒ) ("uv?" ?ὒ) + ("u^" ?ῦ) ("u\\" ?ῦ) + ("u^`" ?ὗ) ("u^V" ?ὗ) ("u\\`" ?ὗ) ("u\\V" ?ὗ) + ("u`^" ?ὗ) ("uV^" ?ὗ) ("u`\\" ?ὗ) ("uV\\" ?ὗ) + ("u^'" ?ὖ) ("u^v" ?ὖ) ("u\\'" ?ὖ) ("u\\v" ?ὖ) + ("u'^" ?ὖ) ("uv^" ?ὖ) ("u'\\" ?ὖ) ("uv\\" ?ὖ) + ("u\"" ?ϋ) + ("u\"/" ?ΰ) ("u/\"" ?ΰ) + ("u\"?" ?ῢ) ("u?\"" ?ῢ) + + ("w`" ?ὡ) ("wV" ?ὡ) + ("w'" ?ὠ) ("wv" ?ὠ) + ("w/" ?ώ) + ("w/`" ?ὥ) ("w/V" ?ὥ) ("w`/" ?ὥ) ("wV/" ?ὥ) + ("w/'" ?ὤ) ("w/v" ?ὤ) ("w'/" ?ὤ) ("wv/" ?ὤ) + ("w?" ?ὼ) + ("w?`" ?ὣ) ("w?V" ?ὣ) ("w`?" ?ὣ) ("wV?" ?ὣ) + ("w?'" ?ὢ) ("w?v" ?ὢ) ("w'?" ?ὢ) ("wv?" ?ὢ) + ("w^" ?ῶ) ("w\\" ?ῶ) + ("w^`" ?ὧ) ("w^V" ?ὧ) ("w\\`" ?ὧ) ("w\\V" ?ὧ) + ("w`^" ?ὧ) ("wV^" ?ὧ) ("w`\\" ?ὧ) ("wV\\" ?ὧ) + ("w^'" ?ὦ) ("w^v" ?ὦ) ("w\\'" ?ὦ) ("w\\v" ?ὦ) + ("w'^" ?ὦ) ("wv^" ?ὦ) ("w'\\" ?ὦ) ("wv\\" ?ὦ) + + ("wJ`" ?ᾡ) ("wJV" ?ᾡ) + ("wJ'" ?ᾠ) ("wJv" ?ᾠ) + ("wJ/" ?ῴ) + ("wJ/`" ?ᾥ) ("wJ/V" ?ᾥ) ("wJ`/" ?ᾥ) ("wJV/" ?ᾥ) + ("wJ/'" ?ᾤ) ("wJ/v" ?ᾤ) ("wJ'/" ?ᾤ) ("wJv/" ?ᾤ) + ("wJ?" ?ῲ) + ("wJ?`" ?ᾣ) ("wJ?V" ?ᾣ) ("wJ`?" ?ᾣ) ("wJV?" ?ᾣ) + ("wJ?'" ?ᾢ) ("wJ?v" ?ᾢ) ("wJ'?" ?ᾢ) ("wJv?" ?ᾢ) + ("wJ^" ?ῷ) ("wJ\\" ?ῷ) + ("wJ^`" ?ᾧ) ("wJ^V" ?ᾧ) ("wJ\\`" ?ᾧ) ("wJ\\V" ?ᾧ) + ("wJ`^" ?ᾧ) ("wJV^" ?ᾧ) ("wJ`\\" ?ᾧ) ("wJV\\" ?ᾧ) + ("wJ^'" ?ᾦ) ("wJ^v" ?ᾦ) ("wJ\\'" ?ᾦ) ("wJ\\v" ?ᾦ) + ("wJ'^" ?ᾦ) ("wJv^" ?ᾦ) ("wJ'\\" ?ᾦ) ("wJv\\" ?ᾦ) + ) + +;; + +(quail-define-package "greek-babel" "Greek" "BG" t +"The TeX Babel input method for Classical Greek using mule-unicode-0100-24ff. + +------------------------------------- +character capital small +------------------------------------- +alpha A a +beta B b +gamma G g +delta D d +epsilon E e +zeta Z z +eta H h +theta J j +iota I i +kappa K k +lambda L l +mu M m +nu N n +xi X x +omicron O o +pi P p +rho R r +sigma S s +final sigma c +tau T t +upsilon U u +phi F f +chi Q q +psi Y y +omega W w +------------------------------------- +sampi ! +digamma # +stigma $ +koppa & % +------------------------------------- + +------------------------ +mark key +------------------------ +ypogegrammeni | +psili > +dasia < +oxia ' +koronis '' +varia ` +perispomeni ~ +dialytika \" +ano teleia ; +erotimatiko ? +---------------------- +" +nil t t nil nil nil nil nil nil nil t) + +(quail-define-rules + + ("!" ?ϡ) ; sampi + ("#" ?Ϝ) ; DIGAMMA + ("$" ?ϛ) ; stigma + ("%" ?ϟ) ; koppa + ("&" ?Ϟ) ; KOPPA + (">" ?᾿) ; psili + ("'" ?´) ; oxia + (";" ?·) ; ano teleia + ("?" ?;) ; erotimatiko + ("\"" ?¨) ; dialytika + ("|" ?ͺ) ; ypogegrammeni + ("''" ?᾽) ; koronis + ("((" ?«) ; #x00ab + ("))" ?») ; #x00bb + + ("A" ?Α) + ("A|" ?ᾼ) + ("B" ?Β) + ("D" ?Δ) + ("E" ?Ε) + ("F" ?Φ) + ("G" ?Γ) + ("H" ?Η) + ("H|" ?ῌ) + ("I" ?Ι) + ("J" ?Θ) + ("K" ?Κ) + ("L" ?Λ) + ("M" ?Μ) + ("N" ?Ν) + ("O" ?Ο) + ("P" ?Π) + ("Q" ?Χ) + ("R" ?Ρ) + ("S" ?Σ) + ("T" ?Τ) + ("U" ?Υ) + ("W" ?Ω) + ("W|" ?ῼ) + ("X" ?Ξ) + ("Y" ?Ψ) + ("Z" ?Ζ) + ("`" ?`) ; varia + ("~" ?῀) ; perispomeni + + ("<" ?῾) ; dasia + ("a" ?α) + ("a|" ?ᾳ) + ("b" ?β) + ("c" ?ς) + ("d" ?δ) + ("e" ?ε) + ("f" ?φ) + ("g" ?γ) + ("h" ?η) + ("h|" ?ῃ) + ("i" ?ι) + ("j" ?θ) + ("k" ?κ) + ("l" ?λ) + ("m" ?μ) + ("n" ?ν) + ("o" ?ο) + ("p" ?π) + ("q" ?χ) + ("r" ?ρ) + ("s" ?σ) + ("t" ?τ) + ("u" ?υ) + ("w" ?ω) + ("w|" ?ῳ) + ("x" ?ξ) + ("y" ?ψ) + ("z" ?ζ) + + ("<i" ?ἱ) + (">i" ?ἰ) + ("'i" ?ί) + ("<'i" ?ἵ) + (">'i" ?ἴ) + ("`i" ?ὶ) + ("<`i" ?ἳ) + (">`i" ?ἲ) + ("~i" ?ῖ) + ("<~i" ?ἷ) + (">~i" ?ἶ) + ("\"i" ?ϊ) + ("\"'i" ?ΐ) + ("\"`i" ?ῒ) + + ("<I" ?Ἱ) + (">I" ?Ἰ) + ("'I" ?Ί) + ("<'I" ?Ἵ) + (">'I" ?Ἴ) + ("`I" ?Ὶ) + ("<`I" ?Ἳ) + (">`I" ?Ἲ) + ("<~I" ?Ἷ) + (">~I" ?Ἶ) + ("\"I" ?Ϊ) + + ("<~" ?῟) + (">~" ?῏) + ("<'" ?῞) + (">'" ?῎) + ("<`" ?῝) + (">`" ?῍) + ("\"'" ?΅) + ("\"`" ?῭) + + ("<e" ?ἑ) + (">e" ?ἐ) + ("'e" ?έ) + ("<'e" ?ἕ) + (">'e" ?ἔ) + ("`e" ?ὲ) + ("<`e" ?ἓ) + (">`e" ?ἒ) + + ("<E" ?Ἑ) + (">E" ?Ἐ) + ("'E" ?Έ) + ("<'E" ?Ἕ) + (">'E" ?Ἔ) + ("`E" ?Ὲ) + ("<`E" ?Ἓ) + (">`E" ?Ἒ) + + ("<a" ?ἁ) + (">a" ?ἀ) + ("'a" ?ά) + ("<'a" ?ἅ) + (">'a" ?ἄ) + ("`a" ?ὰ) + ("<`a" ?ἃ) + (">`a" ?ἂ) + ("~a" ?ᾶ) + ("<~a" ?ἇ) + (">~a" ?ἆ) + + ("<A" ?Ἁ) + (">A" ?Ἀ) + ("'A" ?Ά) + ("<'A" ?Ἅ) + (">'A" ?Ἄ) + ("`A" ?Ὰ) + ("<`A" ?Ἃ) + (">`A" ?Ἂ) + ("<~A" ?Ἇ) + (">~A" ?Ἆ) + + ("<a|" ?ᾁ) + (">a|" ?ᾀ) + ("'a|" ?ᾴ) + ("<'a|" ?ᾅ) + (">'a|" ?ᾄ) + ("`a|" ?ᾲ) + ("<`a|" ?ᾃ) + (">`a|" ?ᾂ) + ("~a|" ?ᾷ) + ("<~a|" ?ᾇ) + (">~a|" ?ᾆ) + + ("<A|" ?ᾉ) + (">A|" ?ᾈ) + ("<'A|" ?ᾍ) + (">'A|" ?ᾌ) + ("<`A|" ?ᾋ) + (">`A|" ?ᾊ) + ("<~A|" ?ᾏ) + (">~A|" ?ᾎ) + + ("<r" ?ῥ) + (">r" ?ῤ) + + ("<R" ?Ῥ) + + ("<h" ?ἡ) + (">h" ?ἠ) + ("'h" ?ή) + ("<'h" ?ἥ) + (">'h" ?ἤ) + ("`h" ?ὴ) + ("<`h" ?ἣ) + (">`h" ?ἢ) + ("~h" ?ῆ) + ("<~h" ?ἧ) + (">~h" ?ἦ) + + ("<H" ?Ἡ) + (">H" ?Ἠ) + ("'H" ?Ή) + ("<'H" ?Ἥ) + (">'H" ?Ἤ) + ("`H" ?Ὴ) + ("<`H" ?Ἣ) + (">`H" ?Ἢ) + ("<~H" ?Ἧ) + (">~H" ?Ἦ) + + ("|" ?ͺ) ; ypogegrammeni + + ("<h|" ?ᾑ) + (">h|" ?ᾐ) + ("'h|" ?ῄ) + ("<'h|" ?ᾕ) + (">'h|" ?ᾔ) + ("`h|" ?ῂ) + ("<`h|" ?ᾓ) + (">`h|" ?ᾒ) + ("~h|" ?ῇ) + ("<~h|" ?ᾗ) + (">~h|" ?ᾖ) + + ("<H|" ?ᾙ) + (">H|" ?ᾘ) + ("<'H|" ?ᾝ) + (">'H|" ?ᾜ) + ("<`H|" ?ᾛ) + (">`H|" ?ᾚ) + ("<~H|" ?ᾟ) + (">~H|" ?ᾞ) + + ("<o" ?ὁ) + (">o" ?ὀ) + ("'o" ?ό) + ("<'o" ?ὅ) + (">'o" ?ὄ) + ("`o" ?ὸ) + ("<`o" ?ὃ) + (">`o" ?ὂ) + + ("<O" ?Ὁ) + (">O" ?Ὀ) + ("'O" ?Ό) + ("<'O" ?Ὅ) + (">'O" ?Ὄ) + ("`O" ?Ὸ) + ("<`O" ?Ὃ) + (">`O" ?Ὂ) + + ("<u" ?ὑ) + (">u" ?ὐ) + ("'u" ?ύ) + ("<'u" ?ὕ) + (">'u" ?ὔ) + ("`u" ?ὺ) + ("<`u" ?ὓ) + (">`u" ?ὒ) + ("~u" ?ῦ) + ("<~u" ?ὗ) + (">~u" ?ὖ) + ("\"u" ?ϋ) + ("\"'u" ?ΰ) + ("`\"u" ?ῢ) + + ("<U" ?Ὑ) + ("'U" ?Ύ) + ("<'U" ?Ὕ) + ("`U" ?Ὺ) + ("<`U" ?Ὓ) + ("<~U" ?Ὗ) + ("\"U" ?Ϋ) + + ("<w" ?ὡ) + (">w" ?ὠ) + ("'w" ?ώ) + ("<'w" ?ὥ) + (">'w" ?ὤ) + ("`w" ?ὼ) + ("<`w" ?ὣ) + (">`w" ?ὢ) + ("~w" ?ῶ) + ("<~w" ?ὧ) + (">~w" ?ὦ) + + ("<W" ?Ὡ) + (">W" ?Ὠ) + ("'W" ?Ώ) + ("<'W" ?Ὥ) + (">'W" ?Ὤ) + ("`W" ?Ὼ) + ("<`W" ?Ὣ) + (">`W" ?Ὢ) + ("<~W" ?Ὧ) + (">~W" ?Ὦ) + + ("<w|" ?ᾡ) + (">w|" ?ᾠ) + ("'w|" ?ῴ) + ("<'w|" ?ᾥ) + (">'w|" ?ᾤ) + ("`w|" ?ῲ) + ("<`w|" ?ᾣ) + (">`w|" ?ᾢ) + ("~w|" ?ῷ) + ("<~w|" ?ᾧ) + (">~w|" ?ᾦ) + + ("<W|" ?ᾩ) + (">W|" ?ᾨ) + ("'W|" ?ῴ) + ("<'W|" ?ᾭ) + (">'W|" ?ᾬ) + ("<`W|" ?ᾫ) + (">`W|" ?ᾪ) + ("<~W|" ?ᾯ) + (">~W|" ?ᾮ) + ) + +;; + +(quail-define-package "greek-ibycus4" "Greek" "IB" t +"The Ibycus4 input method for Classical Greek using mule-unicode-0100-24ff." +nil t t nil nil nil nil nil nil nil t) + +(quail-define-rules + + ("{((}" ?\() ("((" ?\() ; #x0028 + ("{))}" ?\)) ("))" ?\)) ; #x0029 + ("<<" ?«) ; #x00ab + (">>" ?») ; #x00bb + + ("-" ?‐) ; #x2010 + ("---" ?—) ; #x2014 + ("||" ?‖) ; #x2016 + ("{`}" ?‘) ("`" ?‘) ; #x2018 + ("{'}" ?’) ("'" ?’) ; #x2019 + ("{``}" ?“) ("``" ?“) ; #x201c + ("{''}" ?”) ("''" ?”) ; #x201d + ("{\\dag}" ?†) ("\\dag" ?†) ; #x2020 + ("{\\ddag}" ?‡) ("\\ddag" ?‡) ; #x2021 + ("<" ?‹) ; #x2039 + (">" ?›) ; #x203a + ("$\\leftarrow$" ?←) ; #x2190 + ("$\\rightarrow$" ?→) ; #x2192 + + ("?" ?;) ; #x037e ; erotimatiko + (";" ?·) ; #x0387 ; ano teleia + ("|" ?ͺ) ; #x037a ; ypogegrammeni + + ("A" ?Α) + ("B" ?Β) + ("G" ?Γ) + ("D" ?Δ) + ("E" ?Ε) + ("Z" ?Ζ) + ("H" ?Η) + ("Q" ?Θ) + ("I" ?Ι) + ("K" ?Κ) + ("L" ?Λ) + ("M" ?Μ) + ("N" ?Ν) + ("C" ?Ξ) + ("O" ?Ο) + ("P" ?Π) + ("R" ?Ρ) + ("S" ?Σ) + ("T" ?Τ) + ("U" ?Υ) + ("F" ?Φ) + ("X" ?Χ) + ("Y" ?Ψ) + ("W" ?Ω) + + ("a" ?α) + ("b" ?β) + ("g" ?γ) + ("d" ?δ) + ("e" ?ε) + ("z" ?ζ) + ("h" ?η) + ("q" ?θ) + ("i" ?ι) + ("k" ?κ) + ("l" ?λ) + ("m" ?μ) + ("n" ?ν) + ("c" ?ξ) + ("o" ?ο) + ("p" ?π) + ("r" ?ρ) + ("j" ?ς) ("s " ["ς "]) ("s," ["ς,"]) ("s." ["ς."]) ("s?" ["ς;"]) ("s;" ["ς·"]) + ("s|" ?σ) ("s" ?σ) + ("t" ?τ) + ("u" ?υ) + ("f" ?φ) + ("x" ?χ) + ("y" ?ψ) + ("w" ?ω) + + ("i+" ?ϊ) + ("u+" ?ϋ) + ("V" ?Ϝ) ; DIGAMMA + ("v" ?ϝ) ; digamma + ("K+" ?Ϟ) ; KOPPA + ("k+" ?ϟ) ; koppa + ("S+" ?Ϡ) ; SAMPI + ("s+" ?ϡ) ; sampi + ("c+" ?ϲ) ; lunate sigma + + ("a)" ?ἀ) + ("a(" ?ἁ) + ("a)`" ?ἂ) + ("a(`" ?ἃ) + ("a)'" ?ἄ) + ("a('" ?ἅ) + ("a)=" ?ἆ) + ("a(=" ?ἇ) + + (")A" ?Ἀ) + ("(A" ?Ἁ) + (")`A" ?Ἂ) + ("(`A" ?Ἃ) + (")'A" ?Ἄ) + ("('A" ?Ἅ) + (")=A" ?Ἆ) + ("(=A" ?Ἇ) + + ("e)" ?ἐ) + ("e(" ?ἑ) + ("e)`" ?ἒ) + ("e(`" ?ἓ) + ("e)'" ?ἔ) + ("e('" ?ἕ) + + (")E" ?Ἐ) + ("(E" ?Ἑ) + (")`E" ?Ἒ) + ("(`E" ?Ἓ) + (")'E" ?Ἔ) + ("('E" ?Ἕ) + + ("h)" ?ἠ) + ("h(" ?ἡ) + ("h)`" ?ἢ) + ("h(`" ?ἣ) + ("h)'" ?ἤ) + ("h('" ?ἥ) + ("h)=" ?ἦ) + ("h(=" ?ἧ) + + (")H" ?Ἠ) + ("(H" ?Ἡ) + (")`H" ?Ἢ) + ("(`H" ?Ἣ) + (")'H" ?Ἤ) + ("('H" ?Ἥ) + (")=H" ?Ἦ) + ("(=H" ?Ἧ) + + ("i)" ?ἰ) + ("i(" ?ἱ) + ("i)`" ?ἲ) + ("i(`" ?ἳ) + ("i)'" ?ἴ) + ("i('" ?ἵ) + ("i)=" ?ἶ) + ("i(=" ?ἷ) + + (")I" ?Ἰ) + ("(I" ?Ἱ) + (")`I" ?Ἲ) + ("(`I" ?Ἳ) + (")'I" ?Ἴ) + ("('I" ?Ἵ) + (")=I" ?Ἶ) + ("(=I" ?Ἷ) + + ("o)" ?ὀ) + ("o(" ?ὁ) + ("o)`" ?ὂ) + ("o(`" ?ὃ) + ("o)'" ?ὄ) + ("o('" ?ὅ) + + (")O" ?Ὀ) + ("(O" ?Ὁ) + (")`O" ?Ὂ) + ("(`O" ?Ὃ) + (")'O" ?Ὄ) + ("('O" ?Ὅ) + + ("u)" ?ὐ) + ("u(" ?ὑ) + ("u)`" ?ὒ) + ("u(`" ?ὓ) + ("u)'" ?ὔ) + ("u('" ?ὕ) + ("u)=" ?ὖ) + ("u(=" ?ὗ) + + ("(U" ?Ὑ) + ("(`U" ?Ὓ) + ("('U" ?Ὕ) + ("(=U" ?Ὗ) + + ("w)" ?ὠ) + ("w(" ?ὡ) + ("w)`" ?ὢ) + ("w(`" ?ὣ) + ("w)'" ?ὤ) + ("w('" ?ὥ) + ("w)=" ?ὦ) + ("w(=" ?ὧ) + + (")W" ?Ὠ) + ("(W" ?Ὡ) + (")`W" ?Ὢ) + ("(`W" ?Ὣ) + (")'W" ?Ὤ) + ("('W" ?Ὥ) + (")=W" ?Ὦ) + ("(=W" ?Ὧ) + + ("a`" ?ὰ) + ("a'" ?ά) + ("e`" ?ὲ) + ("e'" ?έ) + ("h`" ?ὴ) + ("h'" ?ή) + ("i`" ?ὶ) + ("i'" ?ί) + ("o`" ?ὸ) + ("o'" ?ό) + ("u`" ?ὺ) + ("u'" ?ύ) + ("w`" ?ὼ) + ("w'" ?ώ) + + ("a)|" ?ᾀ) + ("a(|" ?ᾁ) + ("a)`|" ?ᾂ) + ("a(`|" ?ᾃ) + ("a)'|" ?ᾄ) + ("a('|" ?ᾅ) + ("a)=|" ?ᾆ) + ("a(=|" ?ᾇ) + + (")A|" ?ᾈ) + ("(A|" ?ᾉ) + (")`A|" ?ᾊ) + ("(`A|" ?ᾋ) + (")'A|" ?ᾌ) + ("('A|" ?ᾍ) + (")=A|" ?ᾎ) + ("(=A|" ?ᾏ) + + ("h)|" ?ᾐ) + ("h(|" ?ᾑ) + ("h)`|" ?ᾒ) + ("h(`|" ?ᾓ) + ("h)'|" ?ᾔ) + ("h('|" ?ᾕ) + ("h)=|" ?ᾖ) + ("h(=|" ?ᾗ) + + (")H|" ?ᾘ) + ("(H|" ?ᾙ) + (")`H|" ?ᾚ) + ("(`H|" ?ᾛ) + (")'H|" ?ᾜ) + ("('H|" ?ᾝ) + (")=H|" ?ᾞ) + ("(=H|" ?ᾟ) + + ("w)|" ?ᾠ) + ("w(|" ?ᾡ) + ("w)`|" ?ᾢ) + ("w(`|" ?ᾣ) + ("w)'|" ?ᾤ) + ("w('|" ?ᾥ) + ("w)=|" ?ᾦ) + ("w(=|" ?ᾧ) + + (")W|" ?ᾨ) + ("(W|" ?ᾩ) + (")`W|" ?ᾪ) + ("(`W|" ?ᾫ) + (")'W|" ?ᾬ) + ("('W|" ?ᾭ) + (")=W|" ?ᾮ) + ("(=W|" ?ᾯ) + + ("a`|" ?ᾲ) + ("a|" ?ᾳ) + ("a'|" ?ᾴ) + ("a=" ?ᾶ) + ("a=|" ?ᾷ) + + ("`A" ?Ὰ) + ("'A" ?Ά) + ("A|" ?ᾼ) + + (")" ?᾿) ; #x1fbf ; psili + ("=" ?῀) ; #x1fc0 ; perispomeni + ("+=" ?῁) ; #x1fc1 + + ("h`|" ?ῂ) + ("h|" ?ῃ) + ("h'|" ?ῄ) + ("h=" ?ῆ) + ("h=|" ?ῇ) + + ("`E" ?Ὲ) + ("'E" ?Έ) + + ("`H" ?Ὴ) + ("'H" ?Ή) + ("H|" ?ῌ) + + (")`" ?῍) ; #x1fcd + (")'" ?῎) ; #x1fce + (")=" ?῏) ; #x1fcf + + ("i+`" ?ῒ) + ("i+'" ?ΐ) + ("i=" ?ῖ) + ("i+=" ?ῗ) + + ("`I" ?Ὶ) + ("'I" ?Ί) + + ("(`" ?῝) ; #x1fdd + ("('" ?῞) ; #x1fde + ("(=" ?῟) ; #x1fdf + + ("u+`" ?ῢ) + ("u+'" ?ΰ) + + ("r)" ?ῤ) + ("r(" ?ῥ) + + ("u=" ?ῦ) + ("u+=" ?ῧ) + + ("`U" ?Ὺ) + ("'U" ?Ύ) + + ("`R" ?Ῥ) + + ("+`" ?῭) ; #x1fed + ("+'" ?΅) ; #x1fee + ("`" ?`) ; #x1fef ; varia + + ("w`|" ?ῲ) + ("w|" ?ῳ) + ("w'|" ?ῴ) + ("w=" ?ῶ) + ("w=|" ?ῷ) + + ("`O" ?Ὸ) + ("'O" ?Ό) + + ("`W" ?Ὼ) + ("'W" ?Ώ) + ("W|" ?ῼ) + + ("'" ?´) ; #x1ffd ; oxia + ("(" ?῾) ; #x1ffe ; dasia +) + +;; + +(quail-define-package + "greek" "Greek" "Ω" nil + "Ελληνικά: Greek keyboard layout (ISO 8859-7) +-------------- + +In the right of λ key is a combination key, where + ΄ acute + ¨ diaeresis + +e.g. + ΄ + α -> ά + ¨ + ι -> ϊ + ¨ + ΄ + ι -> ΐ" + nil t t t t nil nil nil nil nil t) + +;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ `~ +;; ;: ςΣ εΕ ρΡ τΤ υΥ θΘ ιΙ οΟ πΠ [{ ]} +;; αΑ σΣ δΔ φΦ γΓ ηΗ ξΞ κΚ λΛ ΄¨ '" \| +;; ζΖ χΧ ψΨ ωΩ βΒ νΝ μΜ ,< .> /? + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?-) + ("=" ?=) + ("`" ?`) + ("q" ?\;) + ("w" ?ς) + ("e" ?ε) + ("r" ?ρ) + ("t" ?τ) + ("y" ?υ) + ("u" ?θ) + ("i" ?ι) + ("o" ?ο) + ("p" ?π) + ("[" ?\[) + ("]" ?\]) + ("a" ?α) + ("s" ?σ) + ("d" ?δ) + ("f" ?φ) + ("g" ?γ) + ("h" ?η) + ("j" ?ξ) + ("k" ?κ) + ("l" ?λ) + (";" ?΄) + ("'" ?') + ("\\" ?\\) + ("z" ?ζ) + ("x" ?χ) + ("c" ?ψ) + ("v" ?ω) + ("b" ?β) + ("n" ?ν) + ("m" ?μ) + ("," ?,) + ("." ?.) + ("/" ?/) + + ("!" ?!) + ("@" ?@) + ("#" ?#) + ("$" ?$) + ("%" ?%) + ("^" ?^) + ("&" ?&) + ("*" ?*) + ("(" ?\() + (")" ?\)) + ("_" ?_) + ("+" ?+) + ("~" ?~) + ("Q" ?:) + ("W" ?Σ) + ("E" ?Ε) + ("R" ?Ρ) + ("T" ?Τ) + ("Y" ?Υ) + ("U" ?Θ) + ("I" ?Ι) + ("O" ?Ο) + ("P" ?Π) + ("{" ?{) + ("}" ?}) + ("A" ?Α) + ("S" ?Σ) + ("D" ?Δ) + ("F" ?Φ) + ("G" ?Γ) + ("H" ?Η) + ("J" ?Ξ) + ("K" ?Κ) + ("L" ?Λ) + (":" ?¨) + ("\"" ?\") + ("|" ?|) + ("Z" ?Ζ) + ("X" ?Χ) + ("C" ?Ψ) + ("V" ?Ω) + ("B" ?Β) + ("N" ?Ν) + ("M" ?Μ) + ("<" ?<) + (">" ?>) + ("?" ??) + + (";a" ?ά) + (";e" ?έ) + (";h" ?ή) + (";i" ?ί) + (";o" ?ό) + (";y" ?ύ) + (";v" ?ώ) + (";A" ?Ά) + (";E" ?Έ) + (";H" ?Ή) + (";I" ?Ί) + (";O" ?Ό) + (";Y" ?Ύ) + (";V" ?Ώ) + (":i" ?ϊ) + (":y" ?ϋ) + (":I" ?Ϊ) + (":Y" ?Ϋ) + (";:i" ?ΐ) + (":;i" ?ΐ) + (";:y" ?ΰ) + (":;y" ?ΰ) + (";<" ?«) + (";>" ?»)) + +(quail-define-package + "greek-postfix" "GreekPost" "Ψ" nil + "Ελληνικά: Greek keyboard layout with postfix accents (ISO 8859-7) +-------------- + +In the right of λ key is a combination key, where + ΄ acute + ¨ diaeresis + +e.g. + α + ΄ -> ά + ι + ¨ -> ϊ + ι + ¨ + ΄ -> ΐ" + nil t t t t nil nil nil nil nil t) + +;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ `~ +;; ·― ςΣ εΕ ρΡ τΤ υΥ θΘ ιΙ οΟ πΠ [{ ]} +;; αΑ σΣ δΔ φΦ γΓ ηΗ ξΞ κΚ λΛ ΄¨ '" \| +;; ζΖ χΧ ψΨ ωΩ βΒ νΝ μΜ ,; .: /? + +(quail-define-rules + ("1" ?1) + ("2" ?2) + ("3" ?3) + ("4" ?4) + ("5" ?5) + ("6" ?6) + ("7" ?7) + ("8" ?8) + ("9" ?9) + ("0" ?0) + ("-" ?-) + ("=" ?=) + ("`" ?`) + ("q" ?\;) + ("w" ?ς) + ("e" ?ε) + ("r" ?ρ) + ("t" ?τ) + ("y" ?υ) + ("u" ?θ) + ("i" ?ι) + ("o" ?ο) + ("p" ?π) + ("[" ?\[) + ("]" ?\]) + ("a" ?α) + ("s" ?σ) + ("d" ?δ) + ("f" ?φ) + ("g" ?γ) + ("h" ?η) + ("j" ?ξ) + ("k" ?κ) + ("l" ?λ) + (";" ?΄) + ("'" ?') + ("\\" ?\\) + ("z" ?ζ) + ("x" ?χ) + ("c" ?ψ) + ("v" ?ω) + ("b" ?β) + ("n" ?ν) + ("m" ?μ) + ("," ?,) + ("." ?.) + ("/" ?/) + + ("!" ?!) + ("@" ?@) + ("#" ?#) + ("$" ?$) + ("%" ?%) + ("^" ?^) + ("&" ?&) + ("*" ?*) + ("(" ?\() + (")" ?\)) + ("_" ?_) + ("+" ?+) + ("~" ?~) + ("Q" ?:) + ("W" ?Σ) + ("E" ?Ε) + ("R" ?Ρ) + ("T" ?Τ) + ("Y" ?Υ) + ("U" ?Θ) + ("I" ?Ι) + ("O" ?Ο) + ("P" ?Π) + ("{" ?{) + ("}" ?}) + ("A" ?Α) + ("S" ?Σ) + ("D" ?Δ) + ("F" ?Φ) + ("G" ?Γ) + ("H" ?Η) + ("J" ?Ξ) + ("K" ?Κ) + ("L" ?Λ) + (":" ?¨) + ("\"" ?\") + ("|" ?|) + ("Z" ?Ζ) + ("X" ?Χ) + ("C" ?Ψ) + ("V" ?Ω) + ("B" ?Β) + ("N" ?Ν) + ("M" ?Μ) + ("<" ?<) + (">" ?>) + ("?" ??) + + ("a;" ?ά) + ("e;" ?έ) + ("h;" ?ή) + ("i;" ?ί) + ("o;" ?ό) + ("y;" ?ύ) + ("v;" ?ώ) + ("A;" ?Ά) + ("E;" ?Έ) + ("H;" ?Ή) + ("I;" ?Ί) + ("O;" ?Ό) + ("Y;" ?Ύ) + ("V;" ?Ώ) + ("i:" ?ϊ) + ("y:" ?ϋ) + ("I:" ?Ϊ) + ("Y:" ?Ϋ) + ("i:;" ?ΐ) + ("i;:" ?ΐ) + ("y:;" ?ΰ) + ("y;:" ?ΰ) + ;; These two are asymmetric with ";<" and ";>" in "greek" input + ;; method. But, as the other Latin postfix methods adopt "<<" and + ;; ">>", it may be better to follow them. + ("<<" ?«) + (">>" ?»)) + + +;;; greek.el ends here diff --git a/lisp/leim/quail/hangul.el b/lisp/leim/quail/hangul.el new file mode 100644 index 00000000000..ba20d42ed8b --- /dev/null +++ b/lisp/leim/quail/hangul.el @@ -0,0 +1,550 @@ +;;; hangul.el --- Korean Hangul input method + +;; Copyright (C) 2008-2013 Free Software Foundation, Inc. + +;; Author: Jihyun Cho <jihyun.jo@gmail.com> +;; Keywords: multilingual, input method, Korean, Hangul + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file is to implement the following hangul automata: +;; - Hangul 2-Bulsik input method +;; - Hangul 3-Bulsik final input method +;; - Hangul 3-Bulsik 390 input method + +;;; Code: + +(require 'quail) +(require 'hanja-util) + +;; Hangul double Jamo table. +;; The format is an alist of JAMO-TYPE vs. DOUBLE-JAMO-TABLE. +;; +;; JAMO-TYPE is a symbol `cho' for Choseong, `jung' for Jungseong, and +;; `jong' for Jongseong. +;; +;; DOUBLE-JAMO-TABLE is an alist of Jamo index vs. the vector of Jamo +;; indies that can be combined with the car part. +;; +;; Jamo index is a relative index in `hangul Compatibility Jamo' area +;; of the Unicode (i.e. 1 for U+3131). + +(defconst hangul-djamo-table + '((cho . ((1 . [1]) ; Choseong + (7 . [7]) + (18 . [18]) + (21 . [21]) + (24 . [24]))) + (jung . ((39 . [31 32 51]) ; Jungseong + (44 . [35 36 51]) + (49 . [51]))) + (jong . ((1 . [1 21]) ; Jongseong + (4 . [24 30]) + (9 . [1 17 18 21 28 29 30]) + (18 . [18 21]) + (21 . [21]))))) + +;; Hangul 2-Bulsik keymap. +;; It converts an ASCII code A-Z, a-z, to the corresponding hangul +;; Jamo index. + +(defconst hangul2-keymap + [17 48 26 23 7 9 30 39 33 35 31 51 49 44 32 36 18 1 4 21 37 29 24 28 43 27]) + +;; Hangul 3-Bulsik final keymap. 3-Bulsik use full keyboard layout. +;; Therefore, we must map all printable ASCII codes (`!' to `~') +;; to Hangul 3-Bulsik codes. +;; Other parts are the same as `hangul2-keymap'. +(defconst hangul3-keymap + [2 183 24 15 14 8220 120 39 126 8221 43 44 41 46 74 119 30 22 18 78 83 + 68 73 85 79 52 110 44 62 46 33 10 7 63 27 12 5 11 69 48 55 49 50 51 + 34 45 56 57 29 16 6 13 54 3 28 20 53 26 40 58 60 61 59 42 23 79 71 + 86 72 66 84 96 109 115 93 116 122 113 118 121 21 67 4 70 99 74 9 1 + 101 17 37 92 47 8251]) + +;; Hangul 3-Bulsik 390 keymap. +;; The role is the same as `hangul3-keymap'. +(defconst hangul390-keymap + [24 34 35 36 37 38 120 40 41 42 43 44 45 46 73 119 30 22 18 77 82 67 72 + 84 78 58 110 50 61 51 63 64 7 33 11 10 27 2 47 39 56 52 53 54 49 48 + 57 62 29 68 6 59 55 16 28 20 60 26 91 92 93 94 95 96 23 78 70 85 71 + 65 83 90 109 115 87 116 122 113 118 121 21 66 4 69 99 73 9 1 101 17 + 123 124 125 126]) + +(defvar hangul-im-keymap + (let ((map (make-sparse-keymap))) + (define-key map "\d" 'hangul-delete-backward-char) + (define-key map [f9] 'hangul-to-hanja-conversion) + (define-key map [Hangul_Hanja] 'hangul-to-hanja-conversion) + map) + "Keymap for Hangul method. It is used by all Hangul input methods.") + +;; Current input character buffer. Store separated hangul character. +;; The first and second are Choseong position. +;; The third and forth are Jungseong position. +;; The fifth and sixth are Jongseong position. +;; The second, forth and sixth are double Jamo position. +(defvar hangul-queue + (make-vector 6 0)) + +(defsubst notzerop (number) + (not (zerop number))) + +(defsubst alphabetp (char) + (or (and (>= char ?A) (<= char ?Z)) + (and (>= char ?a) (<= char ?z)))) + +(defun hangul-character (cho jung jong) + "Convert CHO, JUNG, JONG to the precomposed `Hangul Syllables' character. +CHO, JUNG, JONG are relative indices in `Hangul Compatibility Jamo' of Unicode. +Return a zero-length string if the conversion fails." + (or + (decode-char + 'ucs + (if (and (/= cho 0) (/= jung 0)) + (+ #xac00 + (* 588 + (- cho + (cond ((< cho 3) 1) + ((< cho 5) 2) + ((< cho 10) 4) + ((< cho 20) 11) + (t 12)))) + (* 28 (- jung 31)) + (- jong + (cond ((< jong 8) 0) + ((< jong 19) 1) + ((< jong 25) 2) + (t 3)))) + (+ #x3130 + (cond ((/= cho 0) cho) + ((/= jung 0) jung) + ((/= jong 0) jong))))) + "")) + +(defun hangul-insert-character (&rest queues) + "Insert characters generated from QUEUES. +Each queue has the same form as `hangul-queue'. +Setup `quail-overlay' to the last character." + (if (and mark-active transient-mark-mode) + (progn + (delete-region (region-beginning) (region-end)) + (deactivate-mark))) + (quail-delete-region) + (let ((first (car queues))) + (insert + (hangul-character + (+ (aref first 0) (hangul-djamo 'cho (aref first 0) (aref first 1))) + (+ (aref first 2) (hangul-djamo 'jung (aref first 2) (aref first 3))) + (+ (aref first 4) (hangul-djamo 'jong (aref first 4) (aref first 5)))))) + (move-overlay quail-overlay (overlay-start quail-overlay) (point)) + (dolist (queue (cdr queues)) + (insert + (hangul-character + (+ (aref queue 0) (hangul-djamo 'cho (aref queue 0) (aref queue 1))) + (+ (aref queue 2) (hangul-djamo 'jung (aref queue 2) (aref queue 3))) + (+ (aref queue 4) (hangul-djamo 'jong (aref queue 4) (aref queue 5))))) + (move-overlay quail-overlay (1+ (overlay-start quail-overlay)) (point)))) + +(defun hangul-djamo (jamo char1 char2) + "Return the double Jamo index calculated from the arguments. +JAMO is a type of Hangul Jamo; `cho', `jung', or `jong'. +CHAR1 and CHAR2 are Hangul Jamo indices. +Return nil if CHAR1 and CHAR2 can not be combined." + (let* ((jamo (cdr (assoc jamo hangul-djamo-table))) + (char1 (cdr (assoc char1 jamo)))) + (if char1 + (let ((i (length char1))) + (or (catch 'found + (while (> i 0) + (if (= char2 (aref char1 (1- i))) + (throw 'found i)) + (setf i (1- i)))) + 0)) + 0))) + +(defsubst hangul2-input-method-jaum (char) + "Store Hangul Jamo indice CHAR in `hangul-queue'. +It is a Hangul 2-Bulsik Jaum. +This function processes a Hangul 2-Bulsik Jaum. +The Hangul 2-Bulsik is composed of a Jaum and a Moum. +The Jaum can be located in a Choseong position and a Jongseong position. +Unless the function inserts CHAR to `hangul-queue', +commit current `hangul-queue' and then set a new `hangul-queue', +and insert CHAR to new `hangul-queue'." + (if (cond ((zerop (aref hangul-queue 0)) + (aset hangul-queue 0 char)) + ((and (zerop (aref hangul-queue 1)) + (zerop (aref hangul-queue 2)) + (notzerop (hangul-djamo 'cho (aref hangul-queue 0) char))) + (aset hangul-queue 1 char)) + ((and (zerop (aref hangul-queue 4)) + (notzerop (aref hangul-queue 2)) + (/= char 8) + (/= char 19) + (/= char 25) + (numberp + (hangul-character + (+ (aref hangul-queue 0) + (hangul-djamo + 'cho + (aref hangul-queue 0) + (aref hangul-queue 1))) + (+ (aref hangul-queue 2) + (hangul-djamo + 'jung + (aref hangul-queue 2) + (aref hangul-queue 3))) + char))) + (aset hangul-queue 4 char)) + ((and (zerop (aref hangul-queue 5)) + (notzerop (hangul-djamo 'jong (aref hangul-queue 4) char)) + (numberp + (hangul-character + (+ (aref hangul-queue 0) + (hangul-djamo + 'cho + (aref hangul-queue 0) + (aref hangul-queue 1))) + (+ (aref hangul-queue 2) + (hangul-djamo + 'jung + (aref hangul-queue 2) + (aref hangul-queue 3))) + (+ (aref hangul-queue 4) + (hangul-djamo + 'jong + (aref hangul-queue 4) + char))))) + (aset hangul-queue 5 char))) + (hangul-insert-character hangul-queue) + (hangul-insert-character hangul-queue + (setq hangul-queue (vector char 0 0 0 0 0))))) + +(defsubst hangul2-input-method-moum (char) + "Store Hangul Jamo indice CHAR in `hangul-queue'. +It is a Hangul 2-Bulsik Moum. +This function processes a Hangul 2-Bulsik Moum. +The Moum can be located in a Jungseong position. +Other parts are the same as a `hangul2-input-method-jaum'." + (if (cond ((zerop (aref hangul-queue 2)) + (aset hangul-queue 2 char)) + ((and (zerop (aref hangul-queue 3)) + (zerop (aref hangul-queue 4)) + (notzerop (hangul-djamo 'jung (aref hangul-queue 2) char))) + (aset hangul-queue 3 char))) + (hangul-insert-character hangul-queue) + (let ((next-char (vector 0 0 char 0 0 0))) + (cond ((notzerop (aref hangul-queue 5)) + (aset next-char 0 (aref hangul-queue 5)) + (aset hangul-queue 5 0)) + ((notzerop (aref hangul-queue 4)) + (aset next-char 0 (aref hangul-queue 4)) + (aset hangul-queue 4 0))) + (hangul-insert-character hangul-queue + (setq hangul-queue next-char))))) + +(defsubst hangul3-input-method-cho (char) + "Store Hangul Jamo indice CHAR in `hangul-queue'. +It is a Hangul 3-Bulsik Choseong. +This function processes a Hangul 3-Bulsik Choseong. +The Hangul 3-Bulsik is composed of a Choseong, a Jungseong and a Jongseong. +The Choseong can be located in a Choseong position. +Other parts are the same as a `hangul2-input-method-jaum'." + (if (cond ((and (zerop (aref hangul-queue 0)) + (zerop (aref hangul-queue 4))) + (aset hangul-queue 0 char)) + ((and (zerop (aref hangul-queue 1)) + (zerop (aref hangul-queue 2)) + (notzerop (hangul-djamo 'cho (aref hangul-queue 0) char))) + (aset hangul-queue 1 char))) + (hangul-insert-character hangul-queue) + (hangul-insert-character hangul-queue + (setq hangul-queue (vector char 0 0 0 0 0))))) + +(defsubst hangul3-input-method-jung (char) + "Store Hangul Jamo indice CHAR in `hangul-queue'. +It is a Hangul 3-Bulsik Jungseong. +This function processes a Hangul 3-Bulsik Jungseong. +The Jungseong can be located in a Jungseong position. +Other parts are the same as a `hangul3-input-method-cho'." + (if (cond ((and (zerop (aref hangul-queue 2)) + (zerop (aref hangul-queue 4))) + (aset hangul-queue 2 char)) + ((and (zerop (aref hangul-queue 3)) + (notzerop (hangul-djamo 'jung (aref hangul-queue 2) char))) + (aset hangul-queue 3 char))) + (hangul-insert-character hangul-queue) + (hangul-insert-character hangul-queue + (setq hangul-queue (vector 0 0 char 0 0 0))))) + +(defsubst hangul3-input-method-jong (char) + "Store Hangul Jamo indice CHAR in `hangul-queue'. +It is a Hangul 3-Bulsik Jongseong. +This function processes a Hangul 3-Bulsik Jongseong. +The Jongseong can be located in a Jongseong position. +Other parts are the same as a `hangul3-input-method-cho'." + (if (cond ((and (zerop (aref hangul-queue 4)) + (notzerop (aref hangul-queue 0)) + (notzerop (aref hangul-queue 2)) + (numberp + (hangul-character + (+ (aref hangul-queue 0) + (hangul-djamo + 'cho + (aref hangul-queue 0) + (aref hangul-queue 1))) + (+ (aref hangul-queue 2) + (hangul-djamo + 'jung + (aref hangul-queue 2) + (aref hangul-queue 3))) + char))) + (aset hangul-queue 4 char)) + ((and (zerop (aref hangul-queue 5)) + (notzerop (hangul-djamo 'jong (aref hangul-queue 4) char)) + (numberp + (hangul-character + (+ (aref hangul-queue 0) + (hangul-djamo + 'cho + (aref hangul-queue 0) + (aref hangul-queue 1))) + (+ (aref hangul-queue 2) + (hangul-djamo + 'jung + (aref hangul-queue 2) + (aref hangul-queue 3))) + (+ (aref hangul-queue 4) + (hangul-djamo + 'jong + (aref hangul-queue 4) + char))))) + (aset hangul-queue 5 char))) + (hangul-insert-character hangul-queue) + (if (zerop (apply '+ (append hangul-queue nil))) + (hangul-insert-character (setq hangul-queue (vector 0 0 0 0 char 0))) + (hangul-insert-character hangul-queue + (setq hangul-queue (vector 0 0 0 0 char 0)))))) + +(defun hangul-delete-backward-char () + "Delete the previous hangul character by Jaso units." + (interactive) + (let ((i 5)) + (while (and (> i 0) (zerop (aref hangul-queue i))) + (setq i (1- i))) + (aset hangul-queue i 0)) + (if (notzerop (apply '+ (append hangul-queue nil))) + (hangul-insert-character hangul-queue) + (delete-backward-char 1))) + +(defun hangul-to-hanja-conversion () + "Convert the previous hangul character to the corresponding hanja character. +When a Korean input method is off, convert the following hangul character." + (interactive) + (let ((echo-keystrokes 0) + delete-func + hanja-character) + (if (and (overlayp quail-overlay) (overlay-start quail-overlay)) + (progn + (setq hanja-character (hangul-to-hanja-char (preceding-char))) + (setq delete-func (lambda () (delete-backward-char 1)))) + (setq hanja-character (hangul-to-hanja-char (following-char))) + (setq delete-func (lambda () (delete-char 1)))) + (when hanja-character + (funcall delete-func) + (insert hanja-character) + (setq hangul-queue (make-vector 6 0)) + (if (and (overlayp quail-overlay) (overlay-start quail-overlay)) + (move-overlay quail-overlay (point) (point)))))) + +;; Support function for `hangul2-input-method'. Actually, this +;; function handles the Hangul 2-Bulsik. KEY is an entered key code +;; used for looking up `hangul2-keymap'." +(defun hangul2-input-method-internal (key) + (let ((char (+ (aref hangul2-keymap (1- (% key 32))) + (cond ((or (= key ?O) (= key ?P)) 2) + ((or (= key ?E) (= key ?Q) (= key ?R) + (= key ?T) (= key ?W)) 1) + (t 0))))) + (if (< char 31) + (hangul2-input-method-jaum char) + (hangul2-input-method-moum char)))) + +(defun hangul2-input-method (key) + "2-Bulsik input method." + (if (or buffer-read-only (not (alphabetp key))) + (list key) + (quail-setup-overlays nil) + (let ((input-method-function nil) + (echo-keystrokes 0) + (help-char nil)) + (setq hangul-queue (make-vector 6 0)) + (hangul2-input-method-internal key) + (unwind-protect + (catch 'exit-input-loop + (while t + (let* ((seq (read-key-sequence nil)) + (cmd (lookup-key hangul-im-keymap seq)) + key) + (cond ((and (stringp seq) + (= 1 (length seq)) + (setq key (aref seq 0)) + (alphabetp key)) + (hangul2-input-method-internal key)) + ((commandp cmd) + (call-interactively cmd)) + (t + (setq unread-command-events (listify-key-sequence seq)) + (throw 'exit-input-loop nil)))))) + (quail-delete-overlays))))) + +;; Support function for `hangul3-input-method'. Actually, this +;; function handles the Hangul 3-Bulsik final. KEY is an entered key +;; code used for looking up `hangul3-keymap'." +(defun hangul3-input-method-internal (key) + (let ((char (aref hangul3-keymap (- key 33)))) + (cond ((and (> char 92) (< char 123)) + (hangul3-input-method-cho (- char 92))) + ((and (> char 65) (< char 87)) + (hangul3-input-method-jung (- char 35))) + ((< char 31) + (hangul3-input-method-jong char)) + (t + (setq hangul-queue (make-vector 6 0)) + (insert (decode-char 'ucs char)) + (move-overlay quail-overlay (point) (point)))))) + +(defun hangul3-input-method (key) + "3-Bulsik final input method." + (if (or buffer-read-only (< key 33) (>= key 127)) + (list key) + (quail-setup-overlays nil) + (let ((input-method-function nil) + (echo-keystrokes 0) + (help-char nil)) + (setq hangul-queue (make-vector 6 0)) + (hangul3-input-method-internal key) + (unwind-protect + (catch 'exit-input-loop + (while t + (let* ((seq (read-key-sequence nil)) + (cmd (lookup-key hangul-im-keymap seq)) + key) + (cond ((and (stringp seq) + (= 1 (length seq)) + (setq key (aref seq 0)) + (and (>= key 33) (< key 127))) + (hangul3-input-method-internal key)) + ((commandp cmd) + (call-interactively cmd)) + (t + (setq unread-command-events (listify-key-sequence seq)) + (throw 'exit-input-loop nil)))))) + (quail-delete-overlays))))) + +;; Support function for `hangul390-input-method'. Actually, this +;; function handles the Hangul 3-Bulsik 390. KEY is an entered key +;; code used for looking up `hangul390-keymap'." +(defun hangul390-input-method-internal (key) + (let ((char (aref hangul390-keymap (- key 33)))) + (cond ((or (and (> char 86) (< char 91)) + (and (> char 96) (< char 123))) + (hangul3-input-method-cho (- char (if (< char 97) 86 92)))) + ((and (> char 64) (< char 86)) + (hangul3-input-method-jung (- char 34))) + ((< char 31) + (hangul3-input-method-jong char)) + (t + (setq hangul-queue (make-vector 6 0)) + (insert (decode-char 'ucs char)) + (move-overlay quail-overlay (point) (point)))))) + +(defun hangul390-input-method (key) + "3-Bulsik 390 input method." + (if (or buffer-read-only (< key 33) (>= key 127)) + (list key) + (quail-setup-overlays nil) + (let ((input-method-function nil) + (echo-keystrokes 0) + (help-char nil)) + (setq hangul-queue (make-vector 6 0)) + (hangul390-input-method-internal key) + (unwind-protect + (catch 'exit-input-loop + (while t + (let* ((seq (read-key-sequence nil)) + (cmd (lookup-key hangul-im-keymap seq)) + key) + (cond ((and (stringp seq) + (= 1 (length seq)) + (setq key (aref seq 0)) + (and (>= key 33) (< key 127))) + (hangul390-input-method-internal key)) + ((commandp cmd) + (call-interactively cmd)) + (t + (setq unread-command-events (listify-key-sequence seq)) + (throw 'exit-input-loop nil)))))) + (quail-delete-overlays))))) + +;; Text shown by describe-input-method. Set to a proper text by +;; hangul-input-method-activate. +(defvar hangul-input-method-help-text nil) +(make-variable-buffer-local 'hangul-input-method-help-text) + +;;;###autoload +(defun hangul-input-method-activate (input-method func help-text &rest args) + "Activate Hangul input method INPUT-METHOD. +FUNC is a function to handle input key. +HELP-TEXT is a text set in `hangul-input-method-help-text'." + (setq deactivate-current-input-method-function 'hangul-input-method-deactivate + describe-current-input-method-function 'hangul-input-method-help + hangul-input-method-help-text help-text) + (quail-delete-overlays) + (if (eq (selected-window) (minibuffer-window)) + (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer)) + (set (make-local-variable 'input-method-function) func)) + +(defun hangul-input-method-deactivate () + "Deactivate the current Hangul input method." + (interactive) + (unwind-protect + (progn + (quail-hide-guidance) + (quail-delete-overlays) + (setq describe-current-input-method-function nil)) + (kill-local-variable 'input-method-function))) + +(define-obsolete-function-alias + 'hangul-input-method-inactivate + 'hangul-input-method-deactivate "24.3") + +(defun hangul-input-method-help () + "Describe the current Hangul input method." + (interactive) + (with-output-to-temp-buffer "*Help*" + (princ hangul-input-method-help-text))) + +(provide 'hangul) + +;; Local Variables: +;; generated-autoload-load-name: "quail/hangul" +;; End: + +;;; hangul.el ends here diff --git a/lisp/leim/quail/hanja-jis.el b/lisp/leim/quail/hanja-jis.el new file mode 100644 index 00000000000..2c7eebb8345 --- /dev/null +++ b/lisp/leim/quail/hanja-jis.el @@ -0,0 +1,527 @@ +;;; hanja-jis.el --- Quail package for inputting Korean Hanja (JISX0208) -*-coding: iso-2022-7bit;-*- + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Korean, Hangul + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "korean-hanja-jis" "Korean" "$B4A(B2" t + "2$(C9z=D(BJIS$B4A;z(B: $B3:aD$(CGO4B(B $B4A;z$(C@G(B $B1$$(C@;(B $(CGQ1[(B2$(C9z$B<0$(C@87N(B $B8F=P$(CGO?)(B $BA*Z$(B" + nil nil nil nil nil nil t) + +(quail-define-rules + ("rk" "$B1]2>2@2A2B2C2D2E2G2H2K2M2N2Q2T2W2X2`2o3976P$PqQ+RjS'[H[I`]aPcwgWhSkEkhlKlhmF(B") + ("rkr" "$B3F3J3L3P3Q3S3U5Q5S9oH9RJS>T=WmXBZ([d]W`Bk4l;r((B") + ("rks" "$B064%4&4)4/43444B4G4H4J4N4V:&:):1?{U!XLYc[8[K[Y[e`CarcCecgek]s*su(B") + ("rkf" "$B2p3e3i3k3l7GP"[+brcqf;iypbpv(B") + ("rka" "$B4*4.46484:4;4E4F4U7g848::0QaT,T0VHY"Y~\m]>^@aQbWeHiTm^nGoHs|(B") + ("rkq" "$B2!389C9gL(R:b5fpo^(B") + ("rkd" "$B2,3`6/607D9/959>9G9K9P9V9]9_9dFzP6Q,S3U*V>XMY,[:[|aEbee,eZf5i(jvlora(B") + ("ro" "$B2B2U2p2r2~3'3)3+3,3.313435383;8DP"P$PCQsXAXhYb\4^taNb5k;(B") + ("ror" "$B5RS=(B") + ("rod" "$B9#99dkf=f>o3(B") + ("ri" "$B2X(B") + ("rir" "$BnS(B") + ("rj" "$B5n5o5p5q5r5t5w5x<V?x?~P`PbTRZ!Z)Z*]0_Yc@d(gplwn1nSnj(B") + ("rjs" "$B4%6R7o7r7z80X4Ykg'iJkim!qZ(B") + ("rjf" "$B3i7G7f8pC4KqPu[?[\]ccq(B") + ("rja" "$B4;7p7u8!84Q-QxQyQzQ{\}b[g@sX(B") + ("rjq" "$B5h619e=&Qg(B") + ("rp" "$B7F7GPuX\br(B") + ("rur" "$B2>3J3V3W7b7cPqYH\|g-h#k.ojqnr/rps&(B") + ("rus" "$B3_3o7x8#8$8(8*8+8/G{KzLzPWVtWz[G`Fa+d*f0l$s$(B") + ("ruf" "$B5K7@7h7i7k7mLRQSY1YIYMe~r!(B") + ("rua" "$B3y7s8,XDY:]>d/heni(B") + ("ruq" "$B3fKKXDnw(B") + ("rud" "$B5~6%6*6-6@6C797B7D7I7J7P7T7U7Y7Z7[7_9.999<9E9L:"P7Q?QDQHQmR&R'S+WMX]\{_i`{a9a[b~e%e4e;fVfzh3krmKmtpopts](B") + ("rP" "$B2|3#3&3,5(787<7@7K7L7N7O7Q7R7W7\:fFOU|W@X)[G^da8b#c4d"e;eki)kSl0r!s1(B") + ("rh" "$B6l8E8G8H8I8K8N8O8S8T8V8Z8[8\8]9F9M9Q9b9i9p;)<J?,C!ONPFQYQjRmZ?ZJZ^[W[][^\I\_]xa`b(bPb\cLd2f*f6fxiVjCk8kFkUlKmcn~pQrurzsi(B") + ("rhr" "$B6J9p9r9s9tC+H#S-ZO[g\`mXq~(B") + ("rhs" "$B:$:%:+:-:.TgVBW}[~^xhBjnrArJs.(B") + ("rhf" "$B3j9|\K]qs3(B") + ("rhd" "$B6!6&62636u8x8y9&9)95969WPeW0YJ[}\Jd3iOi^i_lop_(B") + ("rhk" "$B1;2I2J2L2[2]2a8S8X8YFiTFTnTrXyfxhTixjglvpy(B") + ("rhkr" "$B3G3TZ2Z<[v\Zayb_oWp9(B") + ("rhks" "$B4'4142474=4>4C4I4P4Q4S4X4[4\6z?{P%QN]Y^ub9eEeGf%k7oQopsA(B") + ("rhkf" "$B3g3hH&I0Qi[XfZ(B") + ("rhkd" "$B3H6)688w9-9[9\T]W"Z2[%[&[Z^+bhc~d!e&e-fykToJ(B") + ("rho" "$B3]757SS%XyYL[Jjh(B") + ("rhl" "$B2q2t2u2x2z2}3!P*PzTUW_XC\G`skK(B") + ("rhlr" "$Bg2qE(B") + ("rhld" "$B9(9I9O9l^3mDo)(B") + ("ry" "$B3I3P3S3z5j6#6+6,65666:6>8r8s9'9*9;9J9Y9Z;->7R{UHYxZJ\r_$`Db)c#c\fKg1i`m]n[q-qaqb(B") + ("rn" "$B11192$2%2*3C555V5W5X5_5a5d5e5f5l5q6e6f6g6h6i6j6k6m6n6o6p6q7)8{8}9$949=9B9XC!G#H7KUP}QJR"R?RkSRU=UBUdVOV}V~WaW|XvY+Yl[M[N]?]X]\a.aLbZc`d@gOgQgqhgiUjMjdk2kMkpmsn)n9nlplq'qDq\r-szs}(B") + ("rnr" "$B5E5F5G6I9m9qSxT"[xdxkqlr(B") + ("rns" "$B7/727374[ub0b1c[f:je(B") + ("rnf" "$B6~7!7"KYPcRPVA(B") + ("rnd" "$B5\5]5gcVm;(B") + ("rnjs" "$B4+4,5s7q7t7w7}7~8"R%R0RKT!X+[{\^bGe<ipq"(B") + ("rnjf" "$B7!OOP-RP`Um,om(B") + ("rnp" "$B4y5"50B|DYQ\R<[z]$]Eb'dOgLkLlnm,q9q?(B") + ("rnl" "$B5"5.5455S@[z]Eb's}(B") + ("rnlr" "$BDOVn(B") + ("rb" "$B0*1.5,5j6+6e7=7>:"DPTwYdYw\\b#bkcad}eYj_lbm|oaqDr-(B") + ("rbs" "$B556Q6]d0nbsKs}(B") + ("rbf" "$B5L(B") + ("rmr" "$B2D3W6K7`7a7d9nP4QnUqV![yh{n<(B") + ("rms" "$B6O6P6R6T6Z6\6`6a:,Xi\]`wbbhAk3ncq<(B") + ("rmf" "$B7@k?(B") + ("rma" "$B6S6W6X6Y6^6_6b8i:#SaZ"jPsX(B") + ("rmq" "$B075Z5^5b5h5i5kV)(B") + ("rmd" "$B919NOJOKQ>Wqbb(B") + ("rl" "$B0k4k4l4o4p4q4s4t4v4w4z4{4|4}4~5!5$5%5&5'5*5-5/5253585;5=5@5o778J8k8p:j:k:l<(B6H)IIL'P4PXQCQpSOSZT-TtV?W1YVZ\Zz[.[9[L[w\H]c]f]k^?aCc2cEe:f3f4fMk+k1kxl1leq@qVqgr?sJ(B") + ("rlr" "$B5J(B") + ("rls" "$B6[(B") + ("rlf" "$B5H5K5MPKYI(B") + ("rla" "$B6b(B") + ("Rlr" "$B5J(B") + ("sk" "$BF`FaFqQ5U1XoY.Y<Y=[kdy(B") + ("skr" "$BBz(B") + ("sks" "$BCHFqZ:_kl_(B") + ("skf" "$BFhYT^:(B") + ("ska" "$BCKFnFoSGU3n((B") + ("skq" "$BG<jU(B") + ("skd" "$BG9L<[((B") + ("so" "$BBQF`FbFwG5G6G=mr(B") + ("sid" "$B>nUP(B") + ("su" "$B=wY<Y=h'(B") + ("sus" "$BG/G2bzmY(B") + ("suf" "$BYT^:(B") + ("sua" "$BG0WwY@\,(B") + ("suq" "$B@]G1Ypm:oR(B") + ("sud" "$BG+Sf_?`Xfd(B") + ("sP" "$BG)Zc(B") + ("sh" "$BEXE[E\G>RsUWVfW8`obug*gBqN(B") + ("shd" "$BG;G?G@Q/(B") + ("shk" "$B<6(B") + ("shl" "$BG:G>X=g*q/(B") + ("sy" "$BE.G"U>Yz\vo?o_r)(B") + ("sn" "$BfU(B") + ("sns" "$BUD(B") + ("snf" "$BRefmkD(B") + ("sb" "$BI3WY`=nf(B") + ("sbr" "$BWYjHjI(B") + ("smd" "$BG=(B") + ("sl" "$BE%FtG)G*Wb_>_Pg7(B") + ("slr" "$BE.F?(B") + ("slf" "$BFtWbZc(B") + ("sla" "$BDBWl(B") + ("ek" "$BB?BgCcTl(B") + ("eks" "$B1_C"C0C1C4C6C;C<C=C@CACCCDCECGCICJFNFXP9SET%WAXIXUZR\g^Z`NaUeKh[iijXj{j|nBs((B") + ("ekf" "$BC#RtU'WeZ%_}`\m}orpZpg(B") + ("eka" "$BC4C8C9C?CLF^S7S8T`XkY?]__,_8abb>g<i!k)k}q5(B") + ("ekq" "$B7#EkEzF'Quh)(B") + ("ekd" "$BE^EbEdEvE|F2F5Q8Vq[c\+^oaDbUc'j0j;j}oFs^(B") + ("eo" "$B10BPBRBSBTBWB^B_BbBcBeBgFXT2UtVhZ,Z-`^gJi7o>p0(B") + ("ejr" "$BFAW\(B") + ("eh" "$B0p?^D)D7EHEIEKELEOEQERESETEUEYE]EaEgEhEiEmEnEpEqEsExE~F(F+F3F:F;R[T&V:Y[Y\YqZ.[7[m\*]%]9^9^mbQcKe6eBeCe{h8h9k/lum%mmokpkqC(B") + ("ehr" "$B<3FBFDFEFFFGFHFI`1`9`We{l&qqsb(B") + ("ehs" "$B=cFUFWFXFYFZF[F\Z}_wa&n,q+(B") + ("ehf" "$BFMF\Rt[S(B") + ("ehd" "$B4R6ME_E`ElEoF!F/F0F1F4F6F7F8F9F<Q*\u_.aVdig^gtr<s)sj(B") + ("en" "$B1%3u?`EMENEZEwF&F,FIP5Y5ceflh:iQjEjFl&nFr((B") + ("ens" "$BFVF[F\F_g=n,(B") + ("emr" "$BF@(B") + ("emd" "$BEPEtEuEyF#F%F*F-VS\t^naVc$d[d\eX(B") + ("fk" "$B;IMeMfMgSIXqapaziGn6oUozq`(B") + ("fkr" "$B3J3ZMlMmMnMoS>\[_``8`dqQ(B") + ("fks" "$BMpMqMsMvP,UO]3_Q_s`%k&oVolsB(B") + ("fkf" "$BQoSIT?T@dzme(B") + ("fka" "$BMrMtMuMwQ0U:Z0]4dWeqe|k"k5nN(B") + ("fkq" "$B@"O9YG[VgDgEoM(B") + ("fkd" "$BBlBmO-O/O1O2O5O:[-`f`gh>j'lplt(B") + ("fo" "$BPTWR(B") + ("fod" "$BNd(B") + ("fir" "$BN+N,Z6a@(B") + ("fid" "$BL:N+N<N>NBNCNHNINJNLPoQ@QZSJdmdnjllpltmQmRr4(B") + ("fu" "$B023BEWK{N7N8N9NeNoO$O?Q6R/S:W*[q]-`4`5avbjdze8eFg0gFh-i<iCiZjBoLocqfqk(B") + ("fur" "$BNONqNrV'[6]+],]._Ma|c*m`mapNr/(B") + ("fus" "$BNgNmNxNyNzN{N}N~O!O"O#SXXxYcZ;\Bf_gHmSo:rY(B") + ("fuf" "$BNsNtNuNvQXY`^0(B") + ("fua" "$B3yNwN|R=T~ZL_2_R(B") + ("fuq" "$BND`Zr'(B") + ("fud" "$BNNNaNbNfNgNhNjNkNmNnNpSz]2_:f9fYiYpMryst(B") + ("fP" "$BK-NcNiNlc9h-nTp1rg(B") + ("fh" "$B02:mH'IyN:O%O&O'O(O)O*O+O4O7R)S$Y}[E_#_3_I_N`$atb:gbgcgdiCmJmboNoOq!qfrisC(B") + ("fhr" "$B3Q9w</C+NPO<O=O?[rbqc3m\(B") + ("fhs" "$BO@^M(B") + ("fhd" "$BBlBmN5N6O.O6O8S/T;Tb[0\Y`|dFiDp/(B") + ("fhl" "$B@%MjMkN]O(Q4T^Z']*azb}d]f#fPi2iAkQlO(B") + ("fy" "$BN;N=N@NANENFNKUlW!Y|["_yegfXhznRoAs>(B") + ("fyd" "$BN5N6iD(B") + ("fn" "$B<HN^N_O,O0O3Q$\l`4`5aqdMe_e`j3jzo;o{qp(B") + ("fnl" "$BN^^%(B") + ("fb" "$BI5LxN-N.N/N0N1N2N\N]N_N`R-ShT^W!ZX\X^%_H`eaneYe`g{nvo9pEq:(B") + ("fbr" "$BN&O;R-Y$hz(B") + ("fbs" "$BNQNXO@PUVFVG\2^MeE(B") + ("fbf" "$B7*N'N(N*XKdE(B") + ("fbd" "$BN4VWcc(B") + ("fmr" "$BO>P>pU(B") + ("fma" "$BQ[W)XnhR(B") + ("fmd" "$B0=I)KSN?NGNMVE\AhQi3(B") + ("fl" "$B3=8qA8C,DsKiMxMyMzM{M|M}M~N!N"N#N$N%NRNoP]P^X&Xm_"`4`5crdaf@h.h=imjBkJl>nZqkr5rEsW(B") + ("fls" "$BNUNYNZN[RgX'iBm8m9nC(B") + ("fla" "$BNSNTNVNWaepC(B") + ("flq" "$B3^N)N3g~(B") + ("ak" "$BGMGOK`KaKbKcSWU@Vw`uadb{j1j2(B") + ("akr" "$BGyG|KFKkKlLNUki8(B") + ("aks" "$B17HTHUHZJZK|K}K~L!L"OQRDRXV]VoW>W?Xp^`_TbVe\h_jGktm*mNo8q=r#(B") + ("akf" "$BKuKvKwbFcBg}k$p\pi(B") + ("akd" "$BK4K:K;K>LQLVX1f&f(gjh+hOj<j=nzr3(B") + ("ao" "$BGMG^G_G`GaGcGdJrK?KdKeKfKgKhL%Ug`pgugvlNn2pJ(B") + ("aor" "$BG|G~I4L.`Sfwl=lBoyq^sN(B") + ("aod" "$B0:K(LALTLUQ3]ba0hNsf(B") + ("aur" "$BQLQQVm]qf2k,(B") + ("aus" "$BJYL2LHLILJLKLLLMP[QKU_^^b@bTeDsQ(B") + ("auf" "$BJNLG(B") + ("aud" "$B;.L=L>L?L@LCLDZy\U^rbTh,j&nIsf(B") + ("aP" "$BjV(B") + ("ah" "$B18243}G|InJgJhJiJkJlK9K?KAKEKFKHKlL0L6L7LNLOLSLWU(ZV`S`pa(b&bHcjdwfNfnhOkuqxr|(B") + ("ahr" "$BI$KRKTLZL\Q^[7]teYg|s/(B") + ("ahf" "$BKWL^]G]s(B") + ("ahd" "$BL4LXQOTm[$[/](_Bb^ga(B") + ("ay" "$B1,@&G-I@IAICIDIEJhL/ZbZe^]b?eMg{i8(B") + ("an" "$B@&I5IoIpIqIsJjJlK4K?KEKGL3L5L6L7L8L9LPU(V`W'XcXlYEZ[\>bHeYhOj]kX(B") + ("anr" "$BKAKOK|L[`Tfn(B") + ("ans" "$B2cJ-J8J9JZLHLdLfLgLhPnQfX$XpY_e$(B") + ("anf" "$BJ*L^(B") + ("al" "$B3aFfHxHyH}H~JFL#L$LBLoU;VKW9W=_>_Pdve[i/m?sHsSs`(B") + ("als" "$BIRL1LeV1X>XbZa^#eNf+o\sf(B") + ("alf" "$BL)L*\ikm(B") + ("qkr" "$B9}GmGnGoGqGsGtGuGvGwGzG}JmKPKQP8YsYv\w^p`a`yg.p;qPr0rX(B") + ("qks" "$BH<H>H?H@HBHCHIHJHKHLHRHSHWHXJ1JVJ[YBZ5\Q_/amcme+fvj6k'm*(B") + ("qkf" "$BH-H.H/H0H1H4KVUVX#Y6Y{^_b"b$cAlmq{r1(B") + ("qkd" "$BJoJ|J}K'K,K.K5K7K8K<K@KBKCKIR9RMUxVsWEWGZU[D\V^qb|cmg/gVhpiSkno%qwr7(B") + ("qo" "$BGPGRGSGUGVGXGZG[G\G]GeGfGrKLT/WQX`YA^\_d`jfujj(B") + ("qor" "$B3|GFGlGoGpGrGuI4PQVg[1`aa)cndjr0(B") + ("qjs" "$BH(H?HKHMHQHVHYK]ZYZZ\h_/_xc)effLg8j[o@s=(B") + ("qjf" "$BH2H3H5H6f/(B") + ("qja" "$BHAHEHFHHHOK^[p^"c{gw(B") + ("qjq" "$BK!`k(B") + ("qur" "$BI{I}JHJIJJJKQ|Z&]!`za2i0j~m2mdospH(B") + ("qus" "$BHPJQJTJUJXJ[MhQ~RFY(Y7ZN]repg&jokfmgn4n5qX(B") + ("quf" "$BHcJDJLJMP(Z~sh(B") + ("qud" "$BIBIMISJ:J;J<JAJBL_V"Vu[D\V_[c=cme3m~q6qX(B") + ("qh" "$BD=F>IVIaIcIhJ]JbJcJdJeJnJsJuTHUoUph^jppfse(B") + ("qhr" "$BIzI{I|I}I~J!J"J#J$KMKNKPR6Z=Z>\w]M_Ad9h*hyiui}j`m.mUmVqFrX(B") + ("qhs" "$BK\TqlL(B") + ("qhd" "$B0)HFIuJpJtJvJwJ{K%K)K*K/K1K@^"_bcsdK(B") + ("qn" "$B3x4L<C@lG]H]ITIUIVIWIXIYIZI\I^I_I`IbIcIdIeIfIgIiIjIkIlImIoItIzI{I|J#J$JmJsK6P=PZPmP|RuS_T4UUU[Y8YC[T[U[o\T]M^pf)g%gYgxijk>lRlgmUn>n]rjrksOsPse(B") + ("qnr" "$BKL(B") + ("qns" "$BBNHRH[J,J.J/J0J1J2J3J4J5J6J7K[K_RfW][C]d]p_9`6a'a=cic|gnlL(B") + ("qnf" "$BITJ&J'J(J)PGWJWgYD[,`Ac1q|sd(B") + ("qnd" "$BC*J+JxJ~K2TDW:boe^(B") + ("qmr" "$BR6(B") + ("ql" "$B7%H[H\H]H^H_HaHbHcHeHfHgHjHkHlHnHpHqHsHtHwHzH{H|I!J(JOP#PlR8SgU&U9U{X`[,\R`Aa]acbNbgc0c>dDdcdue#f1fGg#g$g>hKhoitjkl"l@lAlLl]nAp)pBp[pfqorL(B") + ("qls" "$BIFIKILINIOIPIQLFUMZ/]']R_@eoi@p~r&(B") + ("qld" "$BI9QRQVQ_U2Xaf[qHqU(B") + ("tk" "$B278%:3:6:;:=:>:?:@:p;E;G;H;J;K;L;M;N;U;W;[;`;b;d;e;l;r;t;v;w;{<%<-<K<L<M<N<O<P<R<S<U<X<Y?)?ZFcGAL&L,LcP/PXQPRSSNTzU0UmWP[O[h\L]y^/^V_C_S`:`[aBc+c,codAdBdCe/fSfhgRh5iImfnanmqJqKrBr^sM(B") + ("tkr" "$B:o:s:w?tSVZK\N`#oK(B") + ("tks" "$B;1;3;5;6;9;:;;;@IGQh[<]haMedlioYo[(B") + ("tkf" "$B;&;';5hq(B") + ("tka" "$B;0;2?9?yRTWD^zdsexf.glhujN(B") + ("tkq" "$B07=BA^Yg]=_'_(p@q%(B") + ("tkd" "$B7,8~=}=~>&>(>0>2>E>M>X>\>]>^>e>o>uAPASAVA[AjAzA|BlBmErF=FKH"MMRVUCURVyV{XS\k]O`.a3fFjak<ksrh(B") + ("to" "$B:I<%^/_Sg(lPp{rT(B") + ("tor" "$B:I:p:w?'T'XG\ecQi,(B") + ("tod" "$B1y>J@7@8`Ocy(B") + ("tid" "$Bq.(B") + ("tj" "$B5P:T=k=l=n=o=p=q=r=s=v=x=y=z={?p@3@4@>@@@BAMD)L;P0ScTPTfVYY3ZFZGd.e1fTf]fqsUsk(B") + ("tjr" "$B3c<.<M<a<b@J@K@N@O@P@YM<^Hb,hnirj.jinYnq(B") + ("tjs" "$B4T@f@g@h@k@p@q@v@z@{@~A"A#A%A*A-A/A1A5A6A7C1OKQ"SEUIUvX:^/`!a}c8e@fAgUiElqpG(B") + ("tjf" "$B1L6}7@@^@_@b@c@eC-FQSwYM\8]u^Xe(e2eJi-jxsv(B") + ("tja" "$BA!A.UQZ{]@]S]Tcxeyezj9k~lXnu(B") + ("tjq" "$B=&>D@"@]RYSqXRXwYpfcm:oRq#(B") + ("tjd" "$B>J>k@+@-@.@1@9@;@<@?@CX9Zp`Od-fag)(B") + ("tp" "$B:P:Y:{@$@*@G@b@vLcWB^/ih(B") + ("th" "$B037+:i<D=j>$>%>,>.>/><>?>B>C>F>K>P>R>S>dA:AAABAGAIAJALA]A_AcAgA{B}I%R#SbU?XG[`\f][]{^j_O_va4d,dTg[hvi+i?l!lsmvn:n[nyp<ppq[rCrM(B") + ("thr" "$B0@B+B.B/B0B3V$etkll^(B") + ("ths" "$B;AB9B;B=C'(B") + ("thf" "$BN(j+(B") + ("thd" "$B>>>YAWAwW~[@^DcpgNiOkVo1psr"(B") + ("thkf" "$B:~(B") + ("tho" "$B:?:U:~;&;/^/_S`tbl(B") + ("thl" "$B?h?jTj(B") + ("tn" "$B<i<j<l<m<s<u<w<x<y<z<{<|<}=$=%=(=+=/=2=7=C=I?\?b?c?e?g?k?o?p?q?tA\AiB5C(C/D\JfLyM"N(RWS4SUSVT1ThU?V-X{YSZ@ZK]U]z^,^l^{_|`Yc.cOdXdoe5e7elf7f{g!g;h%h5hki.j-l(l3n.nHnsnxo5p$p+qrr$(B") + ("tnr" "$B=G=H=I=J=L=M=N=OPhUY`GfihChr(B") + ("tns" "$B=V=X=Y=[=\=]=^=_=b=c=d=f=gFkWNWv^-d#d$f|h&hsh|kNkYo>s((B") + ("tnf" "$B=Q=RN(WuX|[2(B") + ("tnd" "$B?r?shE(B") + ("tnl" "$BPfPg^C(B") + ("tmf" "$BI(`niMi|(B") + ("tmq" "$B<>=&=,=1_<jyp.(B") + ("tmd" "$B>!>#>5>:>g>h>jANFlGhP+QtR4[Fejj$o~(B") + ("tl" "$B0;3A:|;&;H;O;S;T;\;k;m;n;x;{;~<(<,<E<F@'DsLpRQSASOS]UyU}W#W6WtYy`JfBg(gShahikkl5l9p{(B") + ("tlr" "$B6t<0<1>}>~?!?"?#?)?*B)Uf_omHq3(B") + ("tls" "$B:g?-?.?1?5?7?=?@?B?C?E?H?I?U?V?WC$GjH8RqS"UbXFY;Zo_~iglYpur`(B") + ("tlf" "$B<:<<<=<BUi\Cj)(B") + ("tla" "$B;2?3?4?<?D?R?SRTWZ\;]n_)_Dh~o=(B") + ("tlq" "$B=&=:===BDTRARB_'_(a#cgdb(B") + ("Tkd" "$BAPRV(B") + ("Tl" "$B;a(B") + ("dk" "$B0!0"0$2d2e2f2g2j2k2m2n368f;yP3Q;S(U.U4V6[s`Ha^h0jKk(kCn{o<rms!s"(B") + ("dkr" "$B0!0-0.0/3Y3Z3\DWOLP3RxTAVVVjX(X3\[hUhVh`k`n?s-sys{(B") + ("dks" "$B0B0D0F0H4_4c4f4g4i8APtZg]Vpzr=rnro(B") + ("dkf" "$B060D1ZX~Y!]"]1]Fk@mBn!odpK(B") + ("dka" "$B0C0E0G1^264`4b4dVIV^h?k^pws_sa(B") + ("dkq" "$B0(052!3{R}TZ`@(B") + ("dkd" "$B1{6D97Wi]J]vc?pYrs(B") + ("do" "$B0%0&0'3336373eS1SNS`T<V=[#]7b-bJbYbvc(ghi=oup'pKpOq>(B") + ("dor" "$B1U3[LkLqY/YUf~mCoup'(B") + ("dod" "$BSm]/f"rts@(B") + ("di" "$B<M<P<Y<c<fG8LiLjLkLlLmLnYh\?s,(B") + ("dir" "$B0s<c<eLsLtLvU>Ynd`h`hji;oPs4s~(B") + ("did" "$B>\>m>n>w>y>zMHMLMMMNMSM[M\PSTaUPWyZ7ZfZx\k_!_G_laZagaxc:cUjwl*nVqh(B") + ("dj" "$B1w5y5z5{8f8lS0S}S~^Kq,qGrNsw(B") + ("djr" "$B2/21225?M^\z(B") + ("djs" "$B1a8@8AGgI'PpUA_adN(B") + ("djf" "$B]"]1(B") + ("dja" "$B1b1f264`4d8387Q7RLSnV^Vx^;f,ofqd(B") + ("djq" "$B6H(B") + ("dp" "$BWk]P(B") + ("du" "$BFrG!M=M>M?M@MAMBP.]C^.aBe1gMgPh'i1ikl%q1(B") + ("dur" "$B0W0h1V1X5U<MKrLrLuXdehinl#o`ogp?qcrH(B") + ("dus" "$B0v1c1d1h1i1l1m1o1t8&8'<!A3FPFpG3J%RdSkU+U/WzYPYa\=])^'^2^7^=_]d'gCh/icj@l'(B") + ("duf" "$B0v1Y1\@bG.ReSYsv(B") + ("dua" "$B1^1j1k1p1v@wL-QG\ygfgroeqyr6rPsEsa(B") + ("duq" "$B1^MUSq[!pT(B") + ("dud" "$B1D1E1F1G1I1J1K1M1N1O1P1Q1S7J7^RiS[TJU$U%Zu\3\F^s_J`r`}`~ewj>lWn;pD(B") + ("dP" "$B0e1C1H1L1T4"7X7];y<IM@MBP)P.PdQ;Q<St[*]u`IbKbOcRfJghi"i#i:iRjcl%l?p?rIsL(B") + ("dh" "$B0-1(1*1w1x1|2(8^8`8a8b8c8d8g8h8mP~S*SKSSTITTT|U<UhWXX(XeZDZm_4_r_z`3`iiej(n+o2rbsg(B") + ("dhr" "$B0$206L9vM`(B") + ("dhs" "$B292:X2aicSi%i>jrr[r\(B") + ("dhf" "$BQ:\Eg,(B") + ("dhd" "$B2'MJTYW+a%a1a~c<hcp6s0(B") + ("dhk" "$B0#122i3?4$7&RwSyc]hbiwkBkw(B") + ("dhks" "$B08404K4P4X4a4e4hOPOROSU6^1_5iol2op(B") + ("dhkf" "$B[)(B") + ("dhkd" "$B1}2"2&9DUwWH[>]j(B") + ("dho" "$B0#3?OARwbdiw(B") + ("dhl" "$B0Z307(VLV[`Pbvi'r>(B") + ("dy" "$B1z3Z6F9x>qD8F+LsMEMIMKMRMTMWMXMZQ'TpU-UKULVRVvWTWUY9YjYz\[\v]H_$`"`vcXc_eeh}j4kon-n3qAs8t!t#t$(B") + ("dyr" "$B?+C+M]M_MaV;^ieUhljs(B") + ("dyd" "$B23B{M&M/M0MCMFMGMOMPMQMVMYP\XJXY\Wa5f`gNill}o0ps(B") + ("dn" "$B0r1&1'1)1*1+2$2%5m6h6r6s6v6w6x6y?uKtL`M$M%M'M+M4M9P2P}R^R_VJ\d]?]XaOb3c;c<d~foi9kpsIsz(B") + ("dnr" "$B000jR(TT_4_z(B") + ("dns" "$B0w1$1>1?1@Zt]N_pe"fQp(pq(B") + ("dnf" "$B080S1516]5_q(B") + ("dnd" "$B7'M:(B") + ("dnjs" "$B080w1!1`1e1g1n1q1r1s1u3@4j85868;I2QMT$T(U6UcXE^S`)gkiojOkdmWn|ovp((B") + ("dnjf" "$B1[7nXz[)denh(B") + ("dnl" "$B010L0N0O0Q0R0S0V0Y0^0_0`0b0c161R4m56OAQ&S@SxT#Vk^O`*a_eOh<ivjLm{pjr2(B") + ("db" "$B0T0]0d:y<t=@D\FSFjFyF}G(KnL{L|L}L~M!M"M#M(M)M*M-M.M1M2M3M5M6M7MDPRQASHS|U^ViXoYfYiZA\@^a^b`qahdre7g+gLhPi$iXj!j"j@k!k0kglzl|n'nXo+pds[sl(B") + ("dbr" "$B0i4!FyS|]Zdx(B") + ("dbs" "$B0t0}1<=aUzlVnJ(B") + ("dbf" "$Bffrr(B") + ("dbd" "$B=?M;e0(B") + ("dms" "$B1#286dRaT-T7X@X[]V`;p,su(B") + ("dmf" "$B255?(B") + ("dma" "$B0{0|0~1"2;5?6cR_U5V@];pF(B") + ("dmq" "$B5cM,M8X%(B") + ("dmd" "$B1~5?6EBkGhXfg?j$m@mA(B") + ("dml" "$B0M0U0X0a365#57595<5?5A5B5C5DODPaV=VTVXXt]:_q`Hbcc&ePg_nPq>(B") + ("dl" "$B0;0J0K0P0W0[0\1B;\<$<)<*<X?)BBBfCPFRFsFvP1U)UuVaW3W4W^^&`ba-aXfggokHlFlHlIm_mnp0(B") + ("dlr" "$B1WMbMcVXW5[;fDkjs2(B") + ("dls" "$B0u0v0x0y0z1l?M?N?O?YFRG&G'LbP@PAQ9QcTEUTW.]e^P_]h!h;iNpW(B") + ("dlf" "$B0l0m0n0oF|P!PETejRn_o-(B") + ("dla" "$B1A?QDBG$G%L-U,WljSjT(B") + ("dlq" "$B9~F{F~R]T)rl(B") + ("dld" "$B>jP;QtUT(B") + ("wk" "$B040q:4:8:::^:n;F;I;P;Q;R;Z;g;p;q;s;z;|<"<'<+<Q<T@F@QDSI&PwQ}RoR~UZWs^h_Ua*aSbDbEdggsh$hti4i5k9lGlZl`r8s:sn(B") + ("wkr" "$B:n:r<[<]<^<_<`?]?}SpU"UeZQ[P_Zd+e?ginLs'(B") + ("wks" "$B;7;DV#X}\"]L_%b7(B") + ("wka" "$B;=;C@xC9V*_*_+d>dQjDlQo4(B") + ("wkq" "$B;(AYA^C}SrYgd4p7p8(B") + ("wkd" "$B>">)>->1>8>@>O>Q>U>_>c>f>l>s>uATAqArAuB!B"D"D%D2D9F5P?TGTVTcTyT}U#UrVQW2\u\~^J^y`-`/`R`xaog6gGgIg`h7hIi,i6jfl[l\o6rc(B") + ("wo" "$B:F:H:K:M:R:X:[:\:_:`:b<F@FB8^hc7eRexl9lZsn(B") + ("wod" "$BA9AdAhAyVDVl`'bUd7d8kZo#(B") + ("wj" "$B093n5O<Q=m=s=t={=|A;A@CtCuCvCwCxCyDcDlDqE!EKGgH$LYPJRrW7Y3[A[R\:]|_L`2aTbicle*f8fTgsiWk:kIl7m0p3sr(B") + ("wjr" "$B2.<Z<d@Q@R@S@V@W@XB1C`CdD$D_E&E(E)E*E+E,E-LvR*W/_U`?a{c!d{gii4k6mlmqmx(B") + ("wjs" "$B<2=W@o@r@s@y@}A'A,A0A4B7C.DQE5E6E8E;E>E?EAEBECEDEEG{H*KjMdQ#QrR4RdSsT{UsV\W%X"X}Y%ZBZS]a^!_E`0a/aYaub!c"d%d5d?euf?fHg"lcm7mYm[nonto"oCp4pSp|q4qBs6s7t"(B") + ("wjf" "$B=`@Z@[@^@`@a@dCbLERERGRzY#ZqZr^6cffOlkmE(B") + ("wja" "$B0>@jA2E9E@FQG4V3dRpAsVsZ(B") + ("wjq" "$B@\D3XR\&\7\D]~^XfcrW(B") + ("wjd" "$B0f;*>=>Z>`>p>t>{@,@/@0@5@:@EBGCzD.D:DbDdDeDgDhDjDmDnDrDuDvDwDxDzD{E"E#E$FTKoLwMdP'RZVlY]ZW[l^F^[a6aKbMcWf^hGj:mwn&nDnKoFp=pP(B") + ("wp" "$B1-:O:Q:W:]:^=t=|@)@=@F@^BhBiBjDiDkDoDpDsDtD}P_Q1Q}Z+Zq_;bDbEbIgAi5lZm3pIpmpnsn(B") + ("wh" "$B3v7+:x;4<D=u><>H>[>rA;A<ADAEAFAHAKA`AaAbAeAfAgAlAtAxB$BdC{C|D$D&D+D,D/D4D7D8D;DUD^D_D`FXGBH%POPYS^SdWIXNXTXjY2Y4Zj[j[t\'\*_6`,bic/cGcZc^cud|e6f-fTfrg]iskGkPl!ldm/oXp:qt(B") + ("whr" "$BB-B2dHhwo7(B") + ("whs" "$BB:YO(B") + ("whf" "$B@[B4OHR@`L(B") + ("whd" "$B<o<p=!=*=>=D>a>bAnI"P:WOXQ\#\$\b^JdpeTj*l{m'm)oG(B") + ("whk" "$B:4:8:A:B:C(B") + ("whl" "$B:a(B") + ("wy" "$Bn[(B") + ("wn" "$B3t:n<g<k<n<r<v<~=#='=.=5=;=K?_AUAvB-B2ChCkClCmCpCqCrCsD4D]I*L+P&PMPvQ2QISUW$ZlaFaGcGdVdZe!eBfthwiakOlam4mTn$oIsG(B") + ("wnr" "$B4!C]dx(B") + ("wns" "$B1==S=T=W=Y=`=c=eFVH;KpQ.RETSWvX"X6^4_=b/jAm-mu(B") + ("wnd" "$B=0=ECfCg(B") + ("wmr" "$BB(B1(B") + ("wmf" "$B6{(B") + ("wma" "$BWc(B") + ("wmq" "$B=4=AIxM,\7eI(B") + ("wmd" "$B3(9y>I>Z>xA9A=A>A}A~B#D'YN\t__kz(B") + ("wl" "$B4t5@;V;X;Y;];^;_;c;f;h;i;j;o;}<1<A<G?%B~CNCOCRCSCXCYDRDlDqEVG7S!T.TMVcW7Yu[L]ma\c-fMfsgSk:lDlSlflym5mIn/owr?s9(B") + ("wlr" "$B?%?&D>SDcFcM(B") + ("wls" "$B?0?6?8?:?>???A?G?J?L?P?T?XC$DADCDDDEE6FxKyPVSQZi]I_~`_a+a;b8bCbSeVgKhmjWlcmGo/(B") + ("wlf" "$B<8<;<@<ACaCbE3IHLEPERzSDT9Ve[_fOg4g5lDlkmE(B") + ("wla" "$BD?ZPnErq(B") + ("wlq" "$B<9=4=8=AeI(B") + ("wld" "$B@!D'D(_-(B") + ("ck" "$B3n:!:5:7:9:<<V<W<ZOMPNSMV+VMY-Ym[3\Lbxd4gsm"n`(B") + ("ckr" "$B:q:u:x@NB*ByCeCxY'eSm0oXsqsx(B") + ("cks" "$B;8;<;>;?;A@qRUZ9`&cbdlesl-lUo4oSoTqB(B") + ("ckf" "$B;!;";$;%QkY)`\e'(B") + ("cka" "$B;2;4;BA2Q(Q)RTTOVPVZXNXOXPXrXs\ackk{k|l)l+q](B") + ("ckd" "$B>'>+>3>4>;>T?zAOARAdAkAsD*D1H+PiQlRRX0XHYoZHZd^E^k^}`KalcYgZm#r.(B") + ("co" "$B:9:D:L:N:S:V:W:Z<F@UMi\Me=hql8n`pV(B") + ("cor" "$B:p:t:u:v:}@UA<QFSTY>[Pbyd)dG(B") + ("cj" "$B:J=h@(A@Q]X.^Ge1hF(B") + ("cjr" "$B;I<\@I@L@M@TD=QqRhWFZ3^~akinljm$m(m6p"s5(B") + ("cjs" "$B0+6N6z6|;=@i@n@q@t@u@|A$A&A(A)A+C)E7PBPjQdSCV_Z#[a\9^I^Y_Ea$chh(lMlxoqotph(B") + ("cjf" "$BDVE/E0E1E2E4FLFmS5V%YZmPnno$oDoEq8(B") + ("cja" "$B84@mE:E<Q!W[Ww\a\y]~b]dSdUd^d_j9k-k[k~(B") + ("cjq" "$B>*>9>vC}D!D-D5E=aHaIaJbLjymLmM(B") + ("cjd" "$B;*;,@2@6@A@DD#D0W,W-fehGiq(B") + ("cp" "$B@ZBNBXBZBaDVDfDyD|D~FeFmSFSiSjYZ\<^8^|bIbfh\hxjim<m=n*pLqsqv(B") + ("ch" "$B7-=i>%>6>7>A>G>K>L>S>V>d?]A?ACApD6D8ICQvR#R+V%V9X!X7X^[B\%^W_VcDggkWl:mknLndqzs<ss(B") + ("chr" "$B<q>|?$?(?tB%B0SvV$ZKb`badHifk=m1o7qq(B") + ("chs" "$B1%@#B<WVn7(B") + ("chd" "$B=>=FAQAZAmAoC~DMF4G,N5N6P:PxR2WOWdX;eAeTfb(B") + ("chl" "$B:E:GVCYt\c^/(B") + ("cn" "$B0,1/3b<h<q="=%=)=-=6=9=P?[?d?m?n?u?v?wAFC\CjDFDGDHDIDJGkOISBU7U9VdX/YXYY\6\d^Wa,b2cTd6dHeWf\gmhZn@p%p2pcqWqerUsF(B") + ("cnr" "$B1/<3<4=3=K=LC[C\C^C_C`M.\egXm&(B") + ("cns" "$B=UDXrV(B") + ("cnf" "$B=P[2sY(B") + ("cnd" "$B2-=<=F>WCiCnCoMCQU`>g^j5(B") + ("cnp" "$BX,X-X8aahDlT(B") + ("cnl" "$B<h<q="=-?a?f?i?l@HOIS\U8X8Ye\r]^aafCf\g9hDk9nMqe(B") + ("cmr" "$BB&B'B,D=P<X<Z`(B") + ("cms" "$Bsp(B") + ("cma" "$Boo(B") + ("cmd" "$BA=A>AX(B") + ("cl" "$B:7:9;u<#<&>}?"?%CMCQCTCUCVCWCZD'D>FePLRHRNSPTiV5VbVpVz[i_ua7a?awbtcPcze#e>eLfWiPjul8lemOo!p5r5rKrvrwscso(B") + ("clr" "$BB'B,D<R,RNVzX<ZE(B") + ("cls" "$B?Fk%sp(B") + ("clf" "$B<7<?(B") + ("cla" "$B5N?/?2?;?KC9D@KmUjWZZP\;o*o,ooqT(B") + ("clq" "$Bj/(B") + ("cld" "$B>NGicJjYqU(B") + ("cho" "$B2wTo`V(B") + ("xk" "$B<XB>BBBCBDBEBFBGBHBIBJBKBLBMCSOMPIS#TXU`YYYe[4\s]}g!m>qLrx(B") + ("xkr" "$BBnBoBqBsBtBuBvBwBxByE'EYPkS6Y>[Q_7ner0(B") + ("xks" "$BBMC2C3C7C:C>CBCFF]FgW<X_Z:]QjX(B") + ("xkf" "$BC%C&(B") + ("xka" "$BC5C?b>lE(B") + ("xkq" "$BEcEkYr\PpaperW(B") + ("xkd" "$BEfErE|F"Vfb;j#(B") + ("xo" "$B@GB@BABUBVBYB[B]BaBfBgG=KXLaQ<\(cze)ihkHq&qM(B") + ("xor" "$BBpBrBtZ$_7(B") + ("xh" "$BEFEGEQEZEeF$Q=h9(B") + ("xhs" "$Bjt(B") + ("xhd" "$B23DKDLE{E}HuWxXV(B") + ("xhl" "$B?dBOB\B`DHDIDJFXjtpx(B") + ("xn" "$BEJEjF)F.L{Pye5o+qmr,(B") + ("xmr" "$BB_FCXW(B") + ("vk" "$B?|GCGDGEGGGHGIGJGKGLGNHmHvT3WfZ4[1`(``bncvfRg8hJh]jZllox(B") + ("vks" "$B:d:eH=HDHGHNR!]ra"ng(B") + ("vkf" "$B;+H,R\[5n\(B") + ("vo" "$B143-GIGTGWGXG\GbH4HmI#PPUVX#Y6ZT[1]o`cp>(B") + ("vod" "$BC*K#K5KDW:WEZU_0b|e^(B") + ("vir" "$BX?(B") + ("vus" "$BJ?JPJRJSJTJWJXJ\Y(fIgyi~jokfqY(B") + ("vua" "$BlJ(B") + ("vud" "$BDZI>IMJ?Wh^$bogyhLr9(B") + ("vP" "$B3AGQGYJ>J@JCJDJEKJUJVrW&ZIZMasi0qo(B") + ("vh" "$B1:3s3wGxGzI[I]IrJ^J_J`JaJqJyJzK"K$K&K+K0K=R1R5R7RvS.T5YF[T_F_\aWb.f}gTgzj\jqmynppRq0q}r:rDsR(B") + ("vhr" "$BGxGzI}K=_F(B") + ("vy" "$B<]I6I7I8I:I;I<I=I?QwUEXX]Ke]q(q)q*q_qjqurd(B") + ("vns" "$BJ,(B") + ("vna" "$BIJcHcI(B") + ("vnd" "$BIvIwK-afkel4q$qH(B") + ("vb" "$BI7(B") + ("vl" "$BH`HdHhHiHmHoHrllmdox(B") + ("vlf" "$B2^HfHgI$I%I+I,I-I.J'J)PGYDdJkvm+s+(B") + ("vlq" "$BI/I}K3^"(B") + ("gk" "$B2<2?2F2O2Y2\2b2l3E<6ROR`V|^Q`leKf!kEl.n"o(rQ(B") + ("gkr" "$B2)3X5TDaT[U\U]^A`Bajkbl;s?(B") + ("gks" "$B4(4@4A4M4W4Z8B:(UFUGW{Y*YRZ][e_K`Cb*f'n8qSqlsm(B") + ("gkf" "$B323d3e3mR$bRiys\(B") + ("gka" "$B4O4Y4^H!MtQbRyS2S?VH]#^>eHh1n8nro|pwq2rRsD(B") + ("gkq" "$B389^9gH:RnR}^eb4b5b6hdonr{(B") + ("gkd" "$B7e9+91939:9A9R9T9_9`FzP6PDRbWqe}fjobprr*(B") + ("go" "$B0g2r3#3$3*3/31323:3<:zPsT6TnTxUXW(Xh\4i&j7k;k_n0nOqO(B") + ("gor" "$B3/3Kbkk*mJ(B") + ("god" "$B0I8v9,9Te.jbr}(B") + ("gid" "$B5}6?6A6B8~9aSlq.(B") + ("gj" "$B135u5vTR[[]A^w(B") + ("gjs" "$B7{8%8.YW`[(B") + ("gjf" "$B]<iyj8(B") + ("gja" "$B8183VUp*qd(B") + ("gur" "$B3E3R3W7CTu^)r+(B") + ("gus" "$B0<7|8)8+8-82898<8=8>8?9`JGPWRl^-aRbAeQidjJnkp}(B") + ("guf" "$B7j7l>iJGLRUSk#pv(B") + ("gua" "$B7y(B") + ("guq" "$B0A3p6"6(6.64696<KKOFTsV7XDYQ^5`Ed)d:h2nwo}p!(B") + ("gud" "$B3>5|7:7;7?7A7U7V7e9UTk_W_X`rfzj%mj(B") + ("gP" "$B7E7RQBR>TxWBX*b=c4l~nQp^(B") + ("gh" "$B3O8C8F8L8M8P8Q8R8U8W8[8_8c8j8n8o9%9@9f9h9j9k:c;)<JD[QTTdW`Y&Z_Zn\5]]]l^v^w`7`ha!b(b+hYhfiHiKizn=o.q7(B") + ("ghr" "$B0?9s9tOGUeZO(B") + ("ghs" "$B:':*:+:.:2[~\!^U^g_c`m(B") + ("ghf" "$B3K9z9{]Gcts3(B") + ("ghq" "$B3f(B") + ("ghd" "$B909?9H9cR|]g]wkAobr*(B") + ("ghk" "$B2=2P2R2S2V2Z2_2h3q3r7$CtOBOCS;V<aAdqo&(B") + ("ghkr" "$B3H3M3N3OZ2Z<ayb_j?p9(B") + ("ghks" "$B4-45494<4?4D4T4]88OKT(TvUaUnXu]D^R^S_eb*bAbbl,l6oBqir%r](B") + ("ghkf" "$B1[3h3j;#`Qbwi]l/ohoi(B") + ("ghkd" "$B2+677;92989D9SKZQWQ`WSWrX5Zh^T^f_jd;dPfki{n#p&rS(B") + ("gho" "$B2h7S`VaA(B") + ("ghl" "$B2q2s2u2v2y2z2{3"3%=ZI0OEPrQER;TUWKXg[X\G^Neig:h"i'i\kKkRmorf(B") + ("ghlr" "$B2h3D3MaA(B") + ("ghld" "$B2#909U9li*mDo)sT(B") + ("gy" "$B6G8s8z9;9Z:hP{S,SeSoZCZ|[f^B_^`+qaqb(B") + ("gn" "$B0r5`8e8t8u8|9!9"PHRcSLSR^A_h`Md<kMmp(B") + ("gns" "$B7.7071FkR._m_nhXnU(B") + ("gnd" "$Bi*(B") + ("gnjs" "$B3~7vCHX:Zwh@kcl,(B") + ("gnp" "$BCnRCS<TL_{(B") + ("gnl" "$B4x5+51WCY&Zv]`ka(B") + ("gb" "$B5Y7H7MC\Z8_^iLl<(B") + ("gbr" "$BC\(B") + ("gbf" "$BWukys;(B") + ("gbd" "$B6$6'6;R3Wo^((B") + ("gmr" "$B9un^(B") + ("gms" "$B6U:/WLWWYWnW(B") + ("gmf" "$B5%5IKxV(k?(B") + ("gma" "$B6V7g(B") + ("gmq" "$B5[]@^*b%fE(B") + ("gmd" "$B6=Fz(B") + ("gml" "$B4n4r4u5)5:5>I1Q%RzS)S`XAXZY&Zk[']8_f_g_t`!`:c6f<nZrF(B") + ("glf" "$B5Merk#pvs\(B") + ("unknown" "$B4#<5DNFJFdFuJ=KsL]QeRIRpS&S9SuS{T*T+T8T:T>TBTCTKTNTQTWT\T_UNU~V&V,V-V.V/V0V2V4V8VNW;WjWnWpY0YKY^Z1Zs[=[b[n\)\-\.\/\0\1\O\S\j\n\o\p\q\x]&]6]B]i^<^L^c_&_1`<a:a<a>b<bBbXbmbpbsc%c5cNcdc}d&d1d=dIdLdYdddfdhdte9eaebemenevf$g3g\h4h6hHhMhWhhiFi[ibj,jQj^jmk\lCmZmhmimzn%n}o'oZo]p#p-pXp]p`q;qIqRr;r@rGrOrZr_rer~s#s%(B")) + +;;; hanja-jis.el ends here diff --git a/lisp/leim/quail/hanja.el b/lisp/leim/quail/hanja.el new file mode 100644 index 00000000000..7b98161ddb5 --- /dev/null +++ b/lisp/leim/quail/hanja.el @@ -0,0 +1,516 @@ +;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: utf-8;-*- + +;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Korean, Hanja + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file defines korean-hanja keyboards: +;; - hanja input method with hangul keyboard type 2 + +;;; Code: + +(require 'quail) +(require 'korea-util) + +(quail-define-package + "korean-hanja" "Korean" "漢2" t + "2벌식KSC漢字: 該當하는 漢字의 韻을 한글2벌式으로 呼出하여 選擇" + nil nil nil nil nil nil t) + +(quail-define-rules + ("rk" "伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕") + ("rkr" "刻却各恪慤殼珏脚覺角閣") + ("rks" "侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間") + ("rkf" "乫喝曷渴碣竭葛褐蝎鞨") + ("rka" "勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕") + ("rkq" "匣岬甲胛鉀閘") + ("rkd" "剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇") + ("ro" "介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開") + ("ror" "喀客") + ("rod" "坑更粳羹") + ("rir" "醵") + ("rj" "倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸") + ("rjs" "乾件健巾建愆楗腱虔蹇鍵騫") + ("rjf" "乞傑杰桀") + ("rja" "儉劍劒檢瞼鈐黔") + ("rjq" "劫怯迲") + ("rp" "偈憩揭") + ("rur" "擊格檄激膈覡隔") + ("rus" "堅牽犬甄絹繭肩見譴遣鵑") + ("ruf" "抉決潔結缺訣") + ("rua" "兼慊箝謙鉗鎌") + ("rud" "京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨") + ("rP" "係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄") + ("rh" "古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓") + ("rhr" "哭斛曲梏穀谷鵠") + ("rhs" "困坤崑昆梱棍滾琨袞鯤") + ("rhf" "汨滑骨") + ("rhd" "供公共功孔工恐恭拱控攻珙空蚣貢鞏") + ("rhw" "串") + ("rhk" "寡戈果瓜科菓誇課跨過鍋顆") + ("rhkr" "廓槨藿郭") + ("rhks" "串冠官寬慣棺款灌琯瓘管罐菅觀貫關館") + ("rhkf" "刮恝括适") + ("rhkd" "侊光匡壙廣曠洸炚狂珖筐胱鑛") + ("rho" "卦掛罫") + ("rhl" "乖傀塊壞怪愧拐槐魁") + ("rhld" "宏紘肱轟") + ("ry" "交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫") + ("rn" "丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜") + ("rnr" "國局菊鞠鞫麴") + ("rns" "君窘群裙軍郡") + ("rnf" "堀屈掘窟") + ("rnd" "宮弓穹窮芎躬") + ("rnjs" "倦券勸卷圈拳捲權淃眷") + ("rnjf" "厥獗蕨蹶闕") + ("rnp" "机櫃潰詭軌饋") + ("rnl" "句晷歸貴鬼龜") + ("rb" "叫圭奎揆槻珪硅窺竅糾葵規赳逵閨") + ("rbs" "勻均畇筠菌鈞龜") + ("rbf" "橘") + ("rmr" "克剋劇戟棘極隙") + ("rms" "僅劤勤懃斤根槿瑾筋芹菫覲謹近饉") + ("rmf" "契") + ("rma" "今妗擒昑檎琴禁禽芩衾衿襟金錦") + ("rmq" "伋及急扱汲級給") + ("rmd" "亘兢矜肯") + ("rl" "企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒") + ("rls" "緊") + ("rlf" "佶吉拮桔") + ("rla" "金") + ("Rlr" "喫") + ("sk" "儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那") + ("skr" "樂洛烙珞落諾酪駱") + ("sks" "亂卵暖欄煖爛蘭難鸞") + ("skf" "捏捺") + ("ska" "南嵐枏楠湳濫男藍襤") + ("skq" "拉納臘蠟衲") + ("skd" "囊娘廊朗浪狼郎") + ("so" "乃來內奈柰耐") + ("sod" "冷") + ("su" "女") + ("sus" "年撚秊") + ("sua" "念恬拈捻") + ("sud" "寧寗") + ("sh" "努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺") + ("shr" "碌祿綠菉錄鹿") + ("shs" "論") + ("shd" "壟弄濃籠聾膿農") + ("shl" "惱牢磊腦賂雷") + ("sy" "尿") + ("sn" "壘屢樓淚漏累縷陋") + ("sns" "嫩") + ("snf" "訥") + ("sb" "杻紐") + ("smr" "勒肋") + ("sma" "凜") + ("smd" "凌稜綾能菱陵") + ("sl" "尼泥") + ("slr" "匿溺") + ("ek" "多茶") + ("eks" "丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛") + ("ekf" "撻澾獺疸達") + ("eka" "啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟") + ("ekq" "沓畓答踏遝") + ("ekd" "唐堂塘幢戇撞棠當糖螳黨") + ("eo" "代垈坮大對岱帶待戴擡玳臺袋貸隊黛") + ("eor" "宅") + ("ejr" "德悳") + ("eh" "倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜") + ("ehr" "毒瀆牘犢獨督禿篤纛讀") + ("ehs" "墩惇敦旽暾沌焞燉豚頓") + ("ehf" "乭突") + ("ehd" "仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅") + ("en" "兜斗杜枓痘竇荳讀豆逗頭") + ("ens" "屯臀芚遁遯鈍") + ("emr" "得") + ("emd" "嶝橙燈登等藤謄鄧騰") + ("fk" "喇懶拏癩羅蘿螺裸邏") + ("fkr" "樂洛烙珞絡落諾酪駱") + ("fks" "丹亂卵欄欒瀾爛蘭鸞") + ("fkf" "剌辣") + ("fka" "嵐擥攬欖濫籃纜藍襤覽") + ("fkq" "拉臘蠟") + ("fkd" "廊朗浪狼琅瑯螂郞") + ("fo" "來崍徠萊") + ("fod" "冷") + ("fir" "掠略") + ("fid" "亮倆兩凉梁樑粮粱糧良諒輛量") + ("fu" "侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎") + ("fur" "力曆歷瀝礫轢靂") + ("fus" "憐戀攣漣煉璉練聯蓮輦連鍊") + ("fuf" "冽列劣洌烈裂") + ("fua" "廉斂殮濂簾") + ("fuq" "獵") + ("fud" "令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡") + ("fP" "例澧禮醴隷") + ("fh" "勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵") + ("fhr" "碌祿綠菉錄鹿麓") + ("fhs" "論") + ("fhd" "壟弄朧瀧瓏籠聾") + ("fhl" "儡瀨牢磊賂賚賴雷") + ("fy" "了僚寮廖料燎療瞭聊蓼遼鬧") + ("fyd" "龍") + ("fn" "壘婁屢樓淚漏瘻累縷蔞褸鏤陋") + ("fb" "劉旒柳榴流溜瀏琉瑠留瘤硫謬類") + ("fbr" "六戮陸") + ("fbs" "侖倫崙淪綸輪") + ("fbf" "律慄栗率") + ("fbd" "隆") + ("fmr" "勒肋") + ("fma" "凜") + ("fmd" "凌楞稜綾菱陵") + ("fl" "俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉") + ("fls" "吝潾燐璘藺躪隣鱗麟") + ("fla" "林淋琳臨霖") + ("flq" "砬立笠粒") + ("ak" "摩瑪痲碼磨馬魔麻") + ("akr" "寞幕漠膜莫邈") + ("aks" "万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻") + ("akf" "唜抹末沫茉襪靺") + ("akd" "亡妄忘忙望網罔芒茫莽輞邙") + ("ao" "埋妹媒寐昧枚梅每煤罵買賣邁魅") + ("aor" "脈貊陌驀麥") + ("aod" "孟氓猛盲盟萌") + ("aur" "冪覓") + ("aus" "免冕勉棉沔眄眠綿緬面麵") + ("auf" "滅蔑") + ("aud" "冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴") + ("aP" "袂") + ("ah" "侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌") + ("ahr" "木沐牧目睦穆鶩") + ("ahf" "歿沒") + ("ahd" "夢朦蒙") + ("ay" "卯墓妙廟描昴杳渺猫竗苗錨") + ("an" "務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡") + ("anr" "墨默") + ("ans" "們刎吻問文汶紊紋聞蚊門雯") + ("anf" "勿沕物") + ("al" "味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴") + ("als" "岷悶愍憫敏旻旼民泯玟珉緡閔") + ("alf" "密蜜謐") + ("qkr" "剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁") + ("qks" "伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯") + ("qkf" "勃拔撥渤潑發跋醱鉢髮魃") + ("qkd" "倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐") + ("qo" "倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪") + ("qor" "伯佰帛柏栢白百魄") + ("qjs" "幡樊煩燔番磻繁蕃藩飜") + ("qjf" "伐筏罰閥") + ("qja" "凡帆梵氾汎泛犯範范") + ("qjq" "法琺") + ("qur" "僻劈壁擘檗璧癖碧蘗闢霹") + ("qus" "便卞弁變辨辯邊") + ("quf" "別瞥鱉鼈") + ("qud" "丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈") + ("qh" "保堡報寶普步洑湺潽珤甫菩補褓譜輔") + ("qhr" "伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒") + ("qhs" "本") + ("qhf" "乶") + ("qhd" "俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳") + ("qn" "不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧") + ("qnr" "北") + ("qns" "分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰") + ("qnf" "不佛弗彿拂") + ("qnd" "崩朋棚硼繃鵬") + ("ql" "丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥脾臂菲蜚裨誹譬費鄙非飛鼻") + ("qls" "嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻") + ("qld" "憑氷聘騁") + ("tk" "乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝") + ("tkr" "削數朔索") + ("tks" "傘刪山散汕珊産疝算蒜酸霰") + ("tkf" "乷撒殺煞薩") + ("tka" "三參杉森渗芟蔘衫") + ("tkq" "揷澁鈒颯") + ("tkd" "上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜") + ("to" "塞璽賽") + ("tor" "嗇塞穡索色") + ("tod" "牲生甥省笙") + ("tj" "墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署胥舒薯西誓逝鋤黍鼠") + ("tjr" "夕奭席惜昔晳析汐淅潟石碩蓆釋錫") + ("tjs" "仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮") + ("tjf" "卨屑楔泄洩渫舌薛褻設說雪齧") + ("tja" "剡暹殲纖蟾贍閃陝") + ("tjq" "攝涉燮葉") + ("tjd" "城姓宬性惺成星晟猩珹盛省筬聖聲腥誠醒") + ("tp" "世勢歲洗稅笹細說貰") + ("th" "召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷") + ("thr" "俗屬束涑粟續謖贖速") + ("ths" "孫巽損蓀遜飡") + ("thf" "率") + ("thd" "宋悚松淞訟誦送頌") + ("tho" "刷殺灑碎鎖") + ("thl" "衰釗") + ("tn" "修受嗽囚垂壽嫂守岫峀帥愁戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚") + ("tnr" "叔塾夙孰宿淑潚熟琡璹肅菽") + ("tns" "巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴") + ("tnf" "戌術述鉥") + ("tnd" "崇崧嵩") + ("tmf" "瑟膝蝨") + ("tmq" "濕拾習褶襲") + ("tmd" "丞乘僧勝升承昇繩蠅陞") + ("tl" "侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺") + ("tlr" "埴寔式息拭植殖湜熄篒蝕識軾食飾") + ("tls" "伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅") + ("tlf" "失室實悉") + ("tla" "審尋心沁沈深瀋甚芯諶") + ("tlq" "什十拾") + ("Tkd" "雙") + ("Tl" "氏") + ("dk" "亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝") + ("dkr" "堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷") + ("dks" "安岸按晏案眼雁鞍顔鮟") + ("dkf" "斡謁軋閼") + ("dka" "唵岩巖庵暗癌菴闇") + ("dkq" "壓押狎鴨") + ("dkd" "仰央怏昻殃秧鴦") + ("do" "厓哀埃崖愛曖涯碍艾隘靄") + ("dor" "厄扼掖液縊腋額") + ("dod" "櫻罌鶯鸚") + ("di" "也倻冶夜惹揶椰爺耶若野") + ("dir" "弱掠略約若葯蒻藥躍") + ("did" "亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養") + ("dj" "圄御於漁瘀禦語馭魚齬") + ("djr" "億憶抑檍臆") + ("djs" "偃堰彦焉言諺") + ("djf" "孼蘖") + ("dja" "俺儼嚴奄掩淹") + ("djq" "嶪業") + ("dps" "円") + ("du" "予余勵呂女如廬旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎") + ("dur" "亦力域役易曆歷疫繹譯轢逆驛") + ("dus" "嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶") + ("duf" "列劣咽悅涅烈熱裂說閱") + ("dua" "厭廉念捻染殮炎焰琰艶苒簾閻髥鹽") + ("duq" "曄獵燁葉") + ("dud" "令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領") + ("dP" "乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預") + ("dh" "五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳烏熬獒筽蜈誤鰲鼇") + ("dhr" "屋沃獄玉鈺") + ("dhs" "溫瑥瘟穩縕蘊") + ("dhf" "兀") + ("dhd" "壅擁瓮甕癰翁邕雍饔") + ("dhk" "渦瓦窩窪臥蛙蝸訛") + ("dhks" "婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑") + ("dhkf" "曰") + ("dhkd" "往旺枉汪王") + ("dho" "倭娃歪矮") + ("dhl" "外嵬巍猥畏") + ("dy" "了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療窈窯繇繞耀腰蓼蟯要謠遙遼邀饒") + ("dyr" "慾欲浴縟褥辱") + ("dyd" "俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍") + ("dn" "于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩") + ("dnr" "勖彧旭昱栯煜稶郁頊") + ("dns" "云暈橒殞澐熉耘芸蕓運隕雲韻") + ("dnf" "蔚鬱亐") + ("dnd" "熊雄") + ("dnjs" "元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛") + ("dnjf" "月越鉞") + ("dnl" "位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏") + ("db" "乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類") + ("dbr" "六堉戮毓肉育陸") + ("dbs" "倫允奫尹崙淪潤玧胤贇輪鈗閏") + ("dbf" "律慄栗率聿") + ("dbd" "戎瀜絨融隆") + ("dms" "垠恩慇殷誾銀隱") + ("dmf" "乙") + ("dma" "吟淫蔭陰音飮") + ("dmq" "揖泣邑") + ("dmd" "凝應膺鷹") + ("dml" "依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼議醫") + ("dl" "二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌") + ("dlr" "匿溺瀷益翊翌翼謚") + ("dls" "人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟") + ("dlf" "一佚佾壹日溢逸鎰馹") + ("dla" "任壬妊姙恁林淋稔臨荏賃") + ("dlq" "入卄立笠粒") + ("dld" "仍剩孕芿") + ("wk" "仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌") + ("wkr" "作勺嚼斫昨灼炸爵綽芍酌雀鵲") + ("wks" "孱棧殘潺盞") + ("wka" "岑暫潛箴簪蠶") + ("wkq" "雜") + ("wkd" "丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長障") + ("wo" "再哉在宰才材栽梓渽滓災縡裁財載齋齎") + ("wod" "爭箏諍錚") + ("wj" "佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟") + ("wjr" "勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑") + ("wjs" "佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞") + ("wjf" "切截折浙癤竊節絶") + ("wja" "占岾店漸点粘霑鮎點") + ("wjq" "接摺蝶") + ("wjd" "丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖靜頂鼎") + ("wp" "制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊") + ("wh" "俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥") + ("whr" "族簇足鏃") + ("whs" "存尊") + ("whf" "卒拙猝") + ("whd" "倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘") + ("whk" "佐坐左座挫") + ("whl" "罪") + ("wn" "主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐") + ("wnr" "竹粥") + ("wns" "俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿") + ("wnf" "茁") + ("wnd" "中仲衆重") + ("wmr" "卽") + ("wmf" "櫛") + ("wmq" "楫汁葺") + ("wmd" "增憎曾拯烝甑症繒蒸證贈") + ("wl" "之只咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲") + ("wlr" "直稙稷織職") + ("wls" "唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震") + ("wlf" "侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭") + ("wla" "斟朕") + ("wlq" "什執潗緝輯鏶集") + ("wld" "徵懲澄") + ("ck" "且侘借叉嗟嵯差次此磋箚茶蹉車遮") + ("ckr" "捉搾着窄錯鑿齪") + ("cks" "撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌") + ("ckf" "刹察擦札紮") + ("cka" "僭參塹慘慙懺斬站讒讖") + ("ckd" "倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼") + ("co" "債埰寀寨彩採砦綵菜蔡采釵") + ("cor" "冊柵策責") + ("cj" "凄妻悽處") + ("cjr" "倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻") + ("cjs" "仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆") + ("cjf" "凸哲喆徹撤澈綴輟轍鐵") + ("cja" "僉尖沾添甛瞻簽籤詹諂") + ("cjq" "堞妾帖捷牒疊睫諜貼輒") + ("cjd" "廳晴淸聽菁請靑鯖") + ("cp" "切剃替涕滯締諦逮遞體") + ("ch" "初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮") + ("chr" "促囑燭矗蜀觸") + ("chs" "寸忖村邨") + ("chd" "叢塚寵悤憁摠總聰蔥銃") + ("chkf" "撮") + ("chl" "催崔最") + ("cn" "墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍") + ("cnr" "丑畜祝竺筑築縮蓄蹙蹴軸逐") + ("cns" "春椿瑃") + ("cnf" "出朮黜") + ("cnd" "充忠沖蟲衝衷") + ("cnp" "悴膵萃贅") + ("cnl" "取吹嘴娶就炊翠聚脆臭趣醉驟鷲") + ("cmr" "側仄厠惻測") + ("cmd" "層") + ("cl" "侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒") + ("clr" "則勅飭") + ("cls" "親") + ("clf" "七柒漆") + ("cla" "侵寢枕沈浸琛砧針鍼") + ("clq" "蟄") + ("cld" "秤稱") + ("zho" "快") + ("xk" "他咤唾墮妥惰打拖朶楕舵陀馱駝") + ("xkr" "倬卓啄坼度托拓擢晫柝濁濯琢琸託鐸") + ("xks" "呑嘆坦彈憚歎灘炭綻誕") + ("xkf" "奪脫") + ("xka" "探眈耽貪") + ("xkq" "塔搭榻") + ("xkd" "宕帑湯糖蕩") + ("xo" "兌台太怠態殆汰泰笞胎苔跆邰颱") + ("xor" "宅擇澤") + ("xod" "撑") + ("xj" "攄") + ("xh" "兎吐土討") + ("xhd" "慟桶洞痛筒統通") + ("xhl" "堆槌腿褪退頹") + ("xn" "偸套妬投透鬪") + ("xmr" "慝特") + ("xma" "闖") + ("vk" "坡婆巴把播擺杷波派爬琶破罷芭跛頗") + ("vks" "判坂板版瓣販辦鈑阪") + ("vkf" "八叭捌") + ("vo" "佩唄悖敗沛浿牌狽稗覇貝") + ("vod" "彭澎烹膨") + ("vir" "愎") + ("vus" "便偏扁片篇編翩遍鞭騙") + ("vua" "貶") + ("vud" "坪平枰萍評") + ("vP" "吠嬖幣廢弊斃肺蔽閉陛") + ("vh" "佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑") + ("vhr" "幅暴曝瀑爆輻") + ("vy" "俵剽彪慓杓標漂瓢票表豹飇飄驃") + ("vna" "品稟") + ("vnd" "楓諷豊風馮") + ("vl" "彼披疲皮被避陂") + ("vlf" "匹弼必泌珌畢疋筆苾馝") + ("vlq" "乏逼") + ("gk" "下何厦夏廈昰河瑕荷蝦賀遐霞鰕") + ("gkr" "壑學虐謔鶴") + ("gks" "寒恨悍旱汗漢澣瀚罕翰閑閒限韓") + ("gkf" "割轄") + ("gka" "函含咸啣喊檻涵緘艦銜陷鹹") + ("gkq" "合哈盒蛤閤闔陜") + ("gkd" "亢伉姮嫦巷恒抗杭桁沆港缸肛航行降項") + ("go" "亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸") + ("gor" "劾核") + ("god" "倖幸杏荇行") + ("gid" "享向嚮珦鄕響餉饗香") + ("gj" "噓墟虛許") + ("gjs" "憲櫶獻軒") + ("gjf" "歇") + ("gja" "險驗") + ("gur" "奕爀赫革") + ("gus" "俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯") + ("guf" "孑穴血頁") + ("gua" "嫌") + ("guq" "俠協夾峽挾浹狹脅脇莢鋏頰") + ("gud" "亨兄刑型形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨") + ("gP" "兮彗惠慧暳蕙蹊醯鞋") + ("gh" "乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥") + ("ghr" "惑或酷") + ("ghs" "婚昏混渾琿魂") + ("ghf" "忽惚笏") + ("ghd" "哄弘汞泓洪烘紅虹訌鴻") + ("ghk" "化和嬅樺火畵禍禾花華話譁貨靴") + ("ghkr" "廓擴攫確碻穫") + ("ghks" "丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥") + ("ghkf" "活滑猾豁闊") + ("ghkd" "凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃") + ("ghl" "匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄") + ("ghlr" "劃獲") + ("ghld" "宖橫鐄") + ("gy" "哮嚆孝效斅曉梟涍淆爻肴酵驍") + ("gn" "侯候厚后吼喉嗅帿後朽煦珝逅") + ("gns" "勛勳塤壎焄熏燻薰訓暈") + ("gnd" "薨") + ("gnjs" "喧暄煊萱") + ("gnp" "卉喙毁") + ("gnl" "彙徽揮暉煇諱輝麾") + ("gb" "休携烋畦虧") + ("gbf" "恤譎鷸") + ("gbd" "兇凶匈洶胸") + ("gmr" "黑") + ("gms" "昕欣炘痕") + ("gmf" "吃屹紇訖") + ("gma" "欠欽歆") + ("gmq" "吸恰洽翕") + ("gmd" "興") + ("gml" "僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲") + ("glf" "詰")) + +;;; hanja.el ends here diff --git a/lisp/leim/quail/hanja3.el b/lisp/leim/quail/hanja3.el new file mode 100644 index 00000000000..788683d6a73 --- /dev/null +++ b/lisp/leim/quail/hanja3.el @@ -0,0 +1,614 @@ +;;; hanja3.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: utf-8;-*- + +;; Copyright (C) 1997, 1999, 2001-2013 Free Software Foundation, Inc. + +;; Author: Koaunghi Un <koaunghi.un@zdv.uni-tuebingen.de> +;; Keywords: mule, quail, multilingual, input method, Korean, Hanja + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file defines korean-hanja3 keyboards: +;; - hanja input method with hangul keyboard type 3 + +;;; Code: + +(require 'quail) + +(quail-define-package + "korean-hanja3" "Korean" "漢3" t + "3벌식KSC漢字: 該當하는 漢字의 韻을 한글3벌式으로 呼出하여 選擇" + nil nil nil nil nil nil t) + +(quail-define-rules + ("kf" "伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕") + ("kfx" "刻却各恪慤殼珏脚覺角閣") + ("kfs" "侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間") + ("kfw" "乫喝曷渴碣竭葛褐蝎鞨") + ("kfz" "勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕") + ("kf3" "匣岬甲胛鉀閘") + ("kfa" "剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇") + ("kr" "介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開") + ("krx" "喀客") + ("kra" "坑更粳羹") + ("k6x" "醵") + ("kt" "倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸") + ("kts" "乾件健巾建愆楗腱虔蹇鍵騫") + ("ktw" "乞傑杰桀") + ("ktz" "儉劍劒檢瞼鈐黔") + ("kt3" "劫怯迲") + ("kc" "偈憩揭") + ("kex" "擊格檄激膈覡隔") + ("kes" "堅牽犬甄絹繭肩見譴遣鵑") + ("kew" "抉決潔結缺訣") + ("kez" "兼慊箝謙鉗鎌") + ("kea" "京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨") + ("k7" "係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄") + ("kv" "古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓") + ("kvx" "哭斛曲梏穀谷鵠") + ("kvs" "困坤崑昆梱棍滾琨袞鯤") + ("kvw" "汨滑骨") + ("kva" "供公共功孔工恐恭拱控攻珙空蚣貢鞏") + ("kv!" "串") + ("k/" "古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓") + ("k/x" "哭斛曲梏穀谷鵠") + ("k/s" "困坤崑昆梱棍滾琨袞鯤") + ("k/w" "汨滑骨") + ("k/a" "供公共功孔工恐恭拱控攻珙空蚣貢鞏") + ("k/!" "串") + ("k/f" "寡戈果瓜科菓誇課跨過鍋顆") + ("k/fx" "廓槨藿郭") + ("k/fs" "串冠官寬慣棺款灌琯瓘管罐菅觀貫關館") + ("k/fw" "刮恝括适") + ("k/fa" "侊光匡壙廣曠洸炚狂珖筐胱鑛") + ("k/r" "卦掛罫") + ("k/d" "乖傀塊壞怪愧拐槐魁") + ("k/da" "宏紘肱轟") + ("k4" "交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫") + ("kb" "丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜") + ("kbx" "國局菊鞠鞫麴") + ("kbs" "君窘群裙軍郡") + ("kbw" "堀屈掘窟") + ("kba" "宮弓穹窮芎躬") + ("k9" "丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜") + ("k9x" "國局菊鞠鞫麴") + ("k9s" "君窘群裙軍郡") + ("k9w" "堀屈掘窟") + ("k9a" "宮弓穹窮芎躬") + ("k9ts" "倦券勸卷圈拳捲權淃眷") + ("k9tw" "厥獗蕨蹶闕") + ("k9c" "机櫃潰詭軌饋") + ("k9d" "句晷歸貴鬼龜") + ("k5" "叫圭奎揆槻珪硅窺竅糾葵規赳逵閨") + ("k5s" "勻均畇筠菌鈞龜") + ("k5w" "橘") + ("kgx" "克剋劇戟棘極隙") + ("kgs" "僅劤勤懃斤根槿瑾筋芹菫覲謹近饉") + ("kgw" "契") + ("kgz" "今妗擒昑檎琴禁禽芩衾衿襟金錦") + ("kg3" "伋及急扱汲級給") + ("kga" "亘兢矜肯") + ("kd" "企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒") + ("kds" "緊") + ("kdw" "佶吉拮桔") + ("kdz" "金") + ("kkdx" "喫") + ("hf" "儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那") + ("hfx" "樂洛烙珞落諾酪駱") + ("hfs" "亂卵暖欄煖爛蘭難鸞") + ("hfw" "捏捺") + ("hfz" "南嵐枏楠湳濫男藍襤") + ("hf3" "拉納臘蠟衲") + ("hfa" "囊娘廊朗浪狼郎") + ("hr" "乃來內奈柰耐") + ("hra" "冷") + ("he" "女") + ("hes" "年撚秊") + ("hez" "念恬拈捻") + ("hea" "寧寗") + ("hv" "努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺") + ("hvx" "碌祿綠菉錄鹿") + ("hvs" "論") + ("hva" "壟弄濃籠聾膿農") + ("h/" "努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺") + ("h/x" "碌祿綠菉錄鹿") + ("h/s" "論") + ("h/a" "壟弄濃籠聾膿農") + ("h/d" "惱牢磊腦賂雷") + ("h4" "尿") + ("hb" "壘屢樓淚漏累縷陋") + ("hbs" "嫩") + ("hbw" "訥") + ("h9" "壘屢樓淚漏累縷陋") + ("h9s" "嫩") + ("h9w" "訥") + ("h5" "杻紐") + ("hgx" "勒肋") + ("hgz" "凜") + ("hga" "凌稜綾能菱陵") + ("hd" "尼泥") + ("hdx" "匿溺") + ("uf" "多茶") + ("ufs" "丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛") + ("ufw" "撻澾獺疸達") + ("ufz" "啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟") + ("uf3" "沓畓答踏遝") + ("ufa" "唐堂塘幢戇撞棠當糖螳黨") + ("ur" "代垈坮大對岱帶待戴擡玳臺袋貸隊黛") + ("urx" "宅") + ("utx" "德悳") + ("uv" "倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜") + ("uvx" "毒瀆牘犢獨督禿篤纛讀") + ("uvs" "墩惇敦旽暾沌焞燉豚頓") + ("uvw" "乭突") + ("uva" "仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅") + ("u/" "倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜") + ("u/x" "毒瀆牘犢獨督禿篤纛讀") + ("u/s" "墩惇敦旽暾沌焞燉豚頓") + ("u/w" "乭突") + ("u/a" "仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅") + ("ub" "兜斗杜枓痘竇荳讀豆逗頭") + ("ubs" "屯臀芚遁遯鈍") + ("u9" "兜斗杜枓痘竇荳讀豆逗頭") + ("u9s" "屯臀芚遁遯鈍") + ("ugx" "得") + ("uga" "嶝橙燈登等藤謄鄧騰") + ("yf" "喇懶拏癩羅蘿螺裸邏") + ("yfx" "樂洛烙珞絡落諾酪駱") + ("yfs" "丹亂卵欄欒瀾爛蘭鸞") + ("yfw" "剌辣") + ("yfz" "嵐擥攬欖濫籃纜藍襤覽") + ("yf3" "拉臘蠟") + ("yfa" "廊朗浪狼琅瑯螂郞") + ("yr" "來崍徠萊") + ("yra" "冷") + ("y6x" "掠略") + ("y6a" "亮倆兩凉梁樑粮粱糧良諒輛量") + ("ye" "侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎") + ("yex" "力曆歷瀝礫轢靂") + ("yes" "憐戀攣漣煉璉練聯蓮輦連鍊") + ("yew" "冽列劣洌烈裂") + ("yez" "廉斂殮濂簾") + ("ye3" "獵") + ("yea" "令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡") + ("y7" "例澧禮醴隷") + ("yv" "勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵") + ("yvx" "碌祿綠菉錄鹿麓") + ("yvs" "論") + ("yva" "壟弄朧瀧瓏籠聾") + ("y/" "勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵") + ("y/x" "碌祿綠菉錄鹿麓") + ("y/s" "論") + ("y/a" "壟弄朧瀧瓏籠聾") + ("y/d" "儡瀨牢磊賂賚賴雷") + ("y4" "了僚寮廖料燎療瞭聊蓼遼鬧") + ("y4a" "龍") + ("yb" "壘婁屢樓淚漏瘻累縷蔞褸鏤陋") + ("y9" "壘婁屢樓淚漏瘻累縷蔞褸鏤陋") + ("y5" "劉旒柳榴流溜瀏琉瑠留瘤硫謬類") + ("y5x" "六戮陸") + ("y5s" "侖倫崙淪綸輪") + ("y5w" "律慄栗率") + ("y5a" "隆") + ("ygx" "勒肋") + ("ygz" "凜") + ("yga" "凌楞稜綾菱陵") + ("yd" "俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉") + ("yds" "吝潾燐璘藺躪隣鱗麟") + ("ydz" "林淋琳臨霖") + ("yd3" "砬立笠粒") + ("if" "摩瑪痲碼磨馬魔麻") + ("ifx" "寞幕漠膜莫邈") + ("ifs" "万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻") + ("ifw" "唜抹末沫茉襪靺") + ("ifa" "亡妄忘忙望網罔芒茫莽輞邙") + ("ir" "埋妹媒寐昧枚梅每煤罵買賣邁魅") + ("irx" "脈貊陌驀麥") + ("ira" "孟氓猛盲盟萌") + ("iex" "冪覓") + ("ies" "免冕勉棉沔眄眠綿緬面麵") + ("iew" "滅蔑") + ("iea" "冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴") + ("i7" "袂") + ("iv" "侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌") + ("ivx" "木沐牧目睦穆鶩") + ("ivw" "歿沒") + ("iva" "夢朦蒙") + ("i/" "侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌") + ("i/x" "木沐牧目睦穆鶩") + ("i/w" "歿沒") + ("i/a" "夢朦蒙") + ("i4" "卯墓妙廟描昴杳渺猫竗苗錨") + ("ib" "務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡") + ("ibx" "墨默") + ("ibs" "們刎吻問文汶紊紋聞蚊門雯") + ("ibw" "勿沕物") + ("i9" "務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡") + ("i9x" "墨默") + ("i9s" "們刎吻問文汶紊紋聞蚊門雯") + ("i9w" "勿沕物") + ("id" "味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴") + ("ids" "岷悶愍憫敏旻旼民泯玟珉緡閔") + ("idw" "密蜜謐") + (";fx" "剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁") + (";fs" "伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯") + (";fw" "勃拔撥渤潑發跋醱鉢髮魃") + (";fa" "倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐") + (";r" "倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪") + (";rx" "伯佰帛柏栢白百魄") + (";ts" "幡樊煩燔番磻繁蕃藩飜") + (";tw" "伐筏罰閥") + (";tz" "凡帆梵氾汎泛犯範范") + (";t3" "法琺") + (";ex" "僻劈壁擘檗璧癖碧蘗闢霹") + (";es" "便卞弁變辨辯邊") + (";ew" "別瞥鱉鼈") + (";ea" "丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈") + (";v" "保堡報寶普步洑湺潽珤甫菩補褓譜輔") + (";vx" "伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒") + (";vs" "本") + (";vw" "乶") + (";va" "俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳") + (";/" "保堡報寶普步洑湺潽珤甫菩補褓譜輔") + (";/x" "伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒") + (";/s" "本") + (";/w" "乶") + (";/a" "俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳") + (";b" "不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧") + (";bx" "北") + (";bs" "分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰") + (";bw" "不佛弗彿拂") + (";ba" "崩朋棚硼繃鵬") + (";9" "不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧") + (";9x" "北") + (";9s" "分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰") + (";9w" "不佛弗彿拂") + (";9a" "崩朋棚硼繃鵬") + (";d" "丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥脾臂菲蜚裨誹譬費鄙非飛鼻") + (";ds" "嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻") + (";da" "憑氷聘騁") + ("nf" "乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝") + ("nfx" "削數朔索") + ("nfs" "傘刪山散汕珊産疝算蒜酸霰") + ("nfw" "乷撒殺煞薩") + ("nfz" "三參杉森渗芟蔘衫") + ("nf3" "揷澁鈒颯") + ("nfa" "上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜") + ("nr" "塞璽賽") + ("nrx" "嗇塞穡索色") + ("nra" "牲生甥省笙") + ("nt" "墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署胥舒薯西誓逝鋤黍鼠") + ("ntx" "夕奭席惜昔晳析汐淅潟石碩蓆釋錫") + ("nts" "仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮") + ("ntw" "卨屑楔泄洩渫舌薛褻設說雪齧") + ("ntz" "剡暹殲纖蟾贍閃陝") + ("nt3" "攝涉燮葉") + ("nta" "城姓宬性惺成星晟猩珹盛省筬聖聲腥誠醒") + ("nc" "世勢歲洗稅笹細說貰") + ("nv" "召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷") + ("nvx" "俗屬束涑粟續謖贖速") + ("nvs" "孫巽損蓀遜飡") + ("nvw" "率") + ("nva" "宋悚松淞訟誦送頌") + ("n/" "召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷") + ("n/x" "俗屬束涑粟續謖贖速") + ("n/s" "孫巽損蓀遜飡") + ("n/w" "率") + ("n/a" "宋悚松淞訟誦送頌") + ("n/r" "刷殺灑碎鎖") + ("n/d" "衰釗") + ("nb" "修受嗽囚垂壽嫂守岫峀帥愁戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚") + ("nbx" "叔塾夙孰宿淑潚熟琡璹肅菽") + ("nbs" "巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴") + ("nbw" "戌術述鉥") + ("nba" "崇崧嵩") + ("n9" "修受嗽囚垂壽嫂守岫峀帥愁戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚") + ("n9x" "叔塾夙孰宿淑潚熟琡璹肅菽") + ("n9s" "巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴") + ("n9w" "戌術述鉥") + ("n9a" "崇崧嵩") + ("ngw" "瑟膝蝨") + ("ng3" "濕拾習褶襲") + ("nga" "丞乘僧勝升承昇繩蠅陞") + ("nd" "侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺") + ("ndx" "埴寔式息拭植殖湜熄篒蝕識軾食飾") + ("nds" "伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅") + ("ndw" "失室實悉") + ("ndz" "審尋心沁沈深瀋甚芯諶") + ("nd3" "什十拾") + ("nnfa" "雙") + ("nnd" "氏") + ("jf" "亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝") + ("jfx" "堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷") + ("jfs" "安岸按晏案眼雁鞍顔鮟") + ("jfw" "斡謁軋閼") + ("jfz" "唵岩巖庵暗癌菴闇") + ("jf3" "壓押狎鴨") + ("jfa" "仰央怏昻殃秧鴦") + ("jr" "厓哀埃崖愛曖涯碍艾隘靄") + ("jrx" "厄扼掖液縊腋額") + ("jra" "櫻罌鶯鸚") + ("j6" "也倻冶夜惹揶椰爺耶若野") + ("j6x" "弱掠略約若葯蒻藥躍") + ("j6a" "亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養") + ("jt" "圄御於漁瘀禦語馭魚齬") + ("jtx" "億憶抑檍臆") + ("jts" "偃堰彦焉言諺") + ("jtw" "孼蘖") + ("jtz" "俺儼嚴奄掩淹") + ("jt3" "嶪業") + ("jcs" "円") + ("je" "予余勵呂女如廬旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎") + ("jex" "亦力域役易曆歷疫繹譯轢逆驛") + ("jes" "嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶") + ("jew" "列劣咽悅涅烈熱裂說閱") + ("jez" "厭廉念捻染殮炎焰琰艶苒簾閻髥鹽") + ("je3" "曄獵燁葉") + ("jea" "令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領") + ("j7" "乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預") + ("jv" "五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳烏熬獒筽蜈誤鰲鼇") + ("jvx" "屋沃獄玉鈺") + ("jvs" "溫瑥瘟穩縕蘊") + ("jvw" "兀") + ("jva" "壅擁瓮甕癰翁邕雍饔") + ("j/" "五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳烏熬獒筽蜈誤鰲鼇") + ("j/x" "屋沃獄玉鈺") + ("j/s" "溫瑥瘟穩縕蘊") + ("j/w" "兀") + ("j/a" "壅擁瓮甕癰翁邕雍饔") + ("j/f" "渦瓦窩窪臥蛙蝸訛") + ("j/fs" "婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑") + ("j/fw" "曰") + ("j/fa" "往旺枉汪王") + ("j/r" "倭娃歪矮") + ("j/d" "外嵬巍猥畏") + ("j4" "了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療窈窯繇繞耀腰蓼蟯要謠遙遼邀饒") + ("j4x" "慾欲浴縟褥辱") + ("j4a" "俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍") + ("jb" "于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩") + ("jbx" "勖彧旭昱栯煜稶郁頊") + ("jbs" "云暈橒殞澐熉耘芸蕓運隕雲韻") + ("jbw" "蔚鬱亐") + ("jba" "熊雄") + ("j9" "于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩") + ("j9x" "勖彧旭昱栯煜稶郁頊") + ("j9s" "云暈橒殞澐熉耘芸蕓運隕雲韻") + ("j9w" "蔚鬱亐") + ("j9a" "熊雄") + ("j9ts" "元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛") + ("j9tw" "月越鉞") + ("j9d" "位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏") + ("j5" "乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類") + ("j5x" "六堉戮毓肉育陸") + ("j5s" "倫允奫尹崙淪潤玧胤贇輪鈗閏") + ("j5w" "律慄栗率聿") + ("j5a" "戎瀜絨融隆") + ("jgs" "垠恩慇殷誾銀隱") + ("jgw" "乙") + ("jgz" "吟淫蔭陰音飮") + ("jg3" "揖泣邑") + ("jga" "凝應膺鷹") + ("j8" "依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼議醫") + ("jd" "二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌") + ("jdx" "匿溺瀷益翊翌翼謚") + ("jds" "人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟") + ("jdw" "一佚佾壹日溢逸鎰馹") + ("jdz" "任壬妊姙恁林淋稔臨荏賃") + ("jd3" "入卄立笠粒") + ("jda" "仍剩孕芿") + ("lf" "仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌") + ("lfx" "作勺嚼斫昨灼炸爵綽芍酌雀鵲") + ("lfs" "孱棧殘潺盞") + ("lfz" "岑暫潛箴簪蠶") + ("lf3" "雜") + ("lfa" "丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長障") + ("lr" "再哉在宰才材栽梓渽滓災縡裁財載齋齎") + ("lra" "爭箏諍錚") + ("lt" "佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟") + ("ltx" "勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑") + ("lts" "佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞") + ("ltw" "切截折浙癤竊節絶") + ("ltz" "占岾店漸点粘霑鮎點") + ("lt3" "接摺蝶") + ("lta" "丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖靜頂鼎") + ("lc" "制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊") + ("lv" "俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥") + ("lvx" "族簇足鏃") + ("lvs" "存尊") + ("lvw" "卒拙猝") + ("lva" "倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘") + ("l/" "俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥") + ("l/x" "族簇足鏃") + ("l/s" "存尊") + ("l/w" "卒拙猝") + ("l/a" "倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘") + ("l/f" "佐坐左座挫") + ("l/d" "罪") + ("lb" "主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐") + ("lbx" "竹粥") + ("lbs" "俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿") + ("lbw" "茁") + ("lba" "中仲衆重") + ("l9" "主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐") + ("l9x" "竹粥") + ("l9s" "俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿") + ("l9w" "茁") + ("l9a" "中仲衆重") + ("lgx" "卽") + ("lgw" "櫛") + ("lg3" "楫汁葺") + ("lga" "增憎曾拯烝甑症繒蒸證贈") + ("ld" "之只咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲") + ("ldx" "直稙稷織職") + ("lds" "唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震") + ("ldw" "侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭") + ("ldz" "斟朕") + ("ld3" "什執潗緝輯鏶集") + ("lda" "徵懲澄") + ("of" "且侘借叉嗟嵯差次此磋箚茶蹉車遮") + ("ofx" "捉搾着窄錯鑿齪") + ("ofs" "撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌") + ("ofw" "刹察擦札紮") + ("ofz" "僭參塹慘慙懺斬站讒讖") + ("ofa" "倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼") + ("or" "債埰寀寨彩採砦綵菜蔡采釵") + ("orx" "冊柵策責") + ("ot" "凄妻悽處") + ("otx" "倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻") + ("ots" "仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆") + ("otw" "凸哲喆徹撤澈綴輟轍鐵") + ("otz" "僉尖沾添甛瞻簽籤詹諂") + ("ot3" "堞妾帖捷牒疊睫諜貼輒") + ("ota" "廳晴淸聽菁請靑鯖") + ("oc" "切剃替涕滯締諦逮遞體") + ("ov" "初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮") + ("ovx" "促囑燭矗蜀觸") + ("ovs" "寸忖村邨") + ("ova" "叢塚寵悤憁摠總聰蔥銃") + ("o/" "初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮") + ("o/x" "促囑燭矗蜀觸") + ("o/s" "寸忖村邨") + ("o/a" "叢塚寵悤憁摠總聰蔥銃") + ("o/fw" "撮") + ("o/d" "催崔最") + ("ob" "墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍") + ("obx" "丑畜祝竺筑築縮蓄蹙蹴軸逐") + ("obs" "春椿瑃") + ("obw" "出朮黜") + ("oba" "充忠沖蟲衝衷") + ("o9" "墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍") + ("o9x" "丑畜祝竺筑築縮蓄蹙蹴軸逐") + ("o9s" "春椿瑃") + ("o9w" "出朮黜") + ("o9a" "充忠沖蟲衝衷") + ("o9c" "悴膵萃贅") + ("o9d" "取吹嘴娶就炊翠聚脆臭趣醉驟鷲") + ("ogx" "側仄厠惻測") + ("oga" "層") + ("od" "侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒") + ("odx" "則勅飭") + ("ods" "親") + ("odw" "七柒漆") + ("odz" "侵寢枕沈浸琛砧針鍼") + ("od3" "蟄") + ("oda" "秤稱") + ("0/r" "快") + ("'f" "他咤唾墮妥惰打拖朶楕舵陀馱駝") + ("'fx" "倬卓啄坼度托拓擢晫柝濁濯琢琸託鐸") + ("'fs" "呑嘆坦彈憚歎灘炭綻誕") + ("'fw" "奪脫") + ("'fz" "探眈耽貪") + ("'f3" "塔搭榻") + ("'fa" "宕帑湯糖蕩") + ("'r" "兌台太怠態殆汰泰笞胎苔跆邰颱") + ("'rx" "宅擇澤") + ("'ra" "撑") + ("'t" "攄") + ("'v" "兎吐土討") + ("'va" "慟桶洞痛筒統通") + ("'/" "兎吐土討") + ("'/a" "慟桶洞痛筒統通") + ("'/d" "堆槌腿褪退頹") + ("'b" "偸套妬投透鬪") + ("'9" "偸套妬投透鬪") + ("'gx" "慝特") + ("'gz" "闖") + ("pf" "坡婆巴把播擺杷波派爬琶破罷芭跛頗") + ("pfs" "判坂板版瓣販辦鈑阪") + ("pfw" "八叭捌") + ("pr" "佩唄悖敗沛浿牌狽稗覇貝") + ("pra" "彭澎烹膨") + ("p6x" "愎") + ("pes" "便偏扁片篇編翩遍鞭騙") + ("pez" "貶") + ("pea" "坪平枰萍評") + ("p7" "吠嬖幣廢弊斃肺蔽閉陛") + ("pv" "佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑") + ("pvx" "幅暴曝瀑爆輻") + ("p/" "佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑") + ("p/x" "幅暴曝瀑爆輻") + ("p4" "俵剽彪慓杓標漂瓢票表豹飇飄驃") + ("pbz" "品稟") + ("pba" "楓諷豊風馮") + ("p9z" "品稟") + ("p9a" "楓諷豊風馮") + ("pd" "彼披疲皮被避陂") + ("pdw" "匹弼必泌珌畢疋筆苾馝") + ("pd3" "乏逼") + ("mf" "下何厦夏廈昰河瑕荷蝦賀遐霞鰕") + ("mfx" "壑學虐謔鶴") + ("mfs" "寒恨悍旱汗漢澣瀚罕翰閑閒限韓") + ("mfw" "割轄") + ("mfz" "函含咸啣喊檻涵緘艦銜陷鹹") + ("mf3" "合哈盒蛤閤闔陜") + ("mfa" "亢伉姮嫦巷恒抗杭桁沆港缸肛航行降項") + ("mr" "亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸") + ("mrx" "劾核") + ("mra" "倖幸杏荇行") + ("m6a" "享向嚮珦鄕響餉饗香") + ("mt" "噓墟虛許") + ("mts" "憲櫶獻軒") + ("mtw" "歇") + ("mtz" "險驗") + ("mex" "奕爀赫革") + ("mes" "俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯") + ("mew" "孑穴血頁") + ("mez" "嫌") + ("me3" "俠協夾峽挾浹狹脅脇莢鋏頰") + ("mea" "亨兄刑型形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨") + ("m7" "兮彗惠慧暳蕙蹊醯鞋") + ("mv" "乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥") + ("mvx" "惑或酷") + ("mvs" "婚昏混渾琿魂") + ("mvw" "忽惚笏") + ("mva" "哄弘汞泓洪烘紅虹訌鴻") + ("m/" "乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥") + ("m/x" "惑或酷") + ("m/s" "婚昏混渾琿魂") + ("m/w" "忽惚笏") + ("m/a" "哄弘汞泓洪烘紅虹訌鴻") + ("m/f" "化和嬅樺火畵禍禾花華話譁貨靴") + ("m/fx" "廓擴攫確碻穫") + ("m/fs" "丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥") + ("m/fw" "活滑猾豁闊") + ("m/fa" "凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃") + ("m/d" "匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄") + ("m/dx" "劃獲") + ("m/da" "宖橫鐄") + ("m4" "哮嚆孝效斅曉梟涍淆爻肴酵驍") + ("mb" "侯候厚后吼喉嗅帿後朽煦珝逅") + ("mbs" "勛勳塤壎焄熏燻薰訓暈") + ("mba" "薨") + ("m9" "侯候厚后吼喉嗅帿後朽煦珝逅") + ("m9s" "勛勳塤壎焄熏燻薰訓暈") + ("m9a" "薨") + ("m9ts" "喧暄煊萱") + ("m9c" "卉喙毁") + ("m9d" "彙徽揮暉煇諱輝麾") + ("m5" "休携烋畦虧") + ("m5w" "恤譎鷸") + ("m5a" "兇凶匈洶胸") + ("mgx" "黑") + ("mgs" "昕欣炘痕") + ("mgw" "吃屹紇訖") + ("mgz" "欠欽歆") + ("mg3" "吸恰洽翕") + ("mga" "興") + ("m8" "僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲") + ("mdw" "詰")) + +;;; hanja3.el ends here diff --git a/lisp/leim/quail/hebrew.el b/lisp/leim/quail/hebrew.el new file mode 100644 index 00000000000..fe06b27a922 --- /dev/null +++ b/lisp/leim/quail/hebrew.el @@ -0,0 +1,882 @@ +;; hebrew.el --- Quail package for inputting Hebrew characters -*-coding: utf-8;-*- + +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Many input methods in this file provided +;; by Yair Friedman <yair.f.lists@gmail.com> + +;; Keywords: multilingual, input method, Hebrew + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "hebrew" "Hebrew" "ע" nil "Hebrew SI-1452 input method. + +Based on SI-1452 keyboard layout. +Only Hebrew-related characters are considered. + 'q' is used to switch levels instead of Alt-Gr. + Maqaaf (־) is mapped to '/פ'. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?\;) + ("w" ?\') + ("e" ?ק) ; Qof + ("r" ?ר) ; Resh + ("t" ?א) ; Alef + ("y" ?ט) ; Tet + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?י) ; Yod + ("j" ?ח) ; Het + ("k" ?ל) ; Lamed + ("l" ?ך) ; Final Kaf + (";" ?ף) ; Final Pe + ("'" ?,) + ("z" ?ז) ; Zayin + ("x" ?ס) ; Samekh + ("c" ?ב) ; Bet + ("v" ?ה) ; He + ("b" ?נ) ; Nun + ("n" ?מ) ; Mem + ("m" ?צ) ; Tsadi + ("," ?ת) ; Tav + ("." ?ץ) ; Final Tsadi + ("/" ?.) ; Stop + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + ("<" ?>) ; mirroring + (">" ?<) ; mirroring + ("q`" ?ְ) ; Sheva + ("q1" ?ֱ) ; Hataf Segol + ("q2" ?ֲ) ; Hataf Patah + ("q3" ?ֳ) ; Hataf Qamats + ("q4" ?ִ) ; Hiriq + ("q5" ?ֵ) ; Tsere + ("q6" ?ֶ) ; Segol (Point) + ("q7" ?ַ) ; Patah + ("q8" ?ָ) ; Qamats + ("q9" ?ׂ) ; Sin dot + ("q0" ?ׁ) ; Shin dot + ("q-" ?ֹ) ; Holam + ("q=" ?ּ) ; Dagesh or Mapiq + ("q\\" ?ֻ) ; Qubuts + ("qq" ?/) + ("qw" ?׳) ; Geresh (Punct.) + ("qi" ?װ) ; Yiddish Double Vav + ("qp" ?־) ; Maqaf + ("q[" ?ֿ) ; Rafe + ("q]" ?ֽ) ; Meteg + ("qa" ?₪) ; New Sheqel sign + ("qh" ?ײ) ; Yiddish Double Yod + ("qj" ?ױ) ; Yiddish Vav Yod + ("q\"" ?״) ; Gershayim (Punct.) + ("q," ?\u200E) ; LRM + ("q." ?\u200F) ; RLM +) + +(quail-define-package + "hebrew-new" "Hebrew" "ע" nil "Hebrew SI-1452 new draft input method. + +Based on latest draft of SI-1452 keyboard layout. +Only Hebrew-related characters are considered. + '`' is used to switch levels instead of Alt-Gr. +Geresh is mapped to '`k'. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("q" ?/) + ("w" ?\') + ("e" ?ק) ; Qof + ("r" ?ר) ; Resh + ("t" ?א) ; Alef + ("y" ?ט) ; Tet + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?י) ; Yod + ("j" ?ח) ; Het + ("k" ?ל) ; Lamed + ("l" ?ך) ; Final Kaf + (";" ?ף) ; Final Pe + ("'" ?,) + ("z" ?ז) ; Zayin + ("x" ?ס) ; Samekh + ("c" ?ב) ; Bet + ("v" ?ה) ; He + ("b" ?נ) ; Nun + ("n" ?מ) ; Mem + ("m" ?צ) ; Tsadi + ("," ?ת) ; Tav + ("." ?ץ) ; Final Tsadi + ("/" ?.) ; Stop + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + ("<" ?>) ; mirroring + (">" ?<) ; mirroring + + ("``" ?\;) + ("`1" ?ֽ) ; Meteg +;("`2" ??) ; Unassigned + ("`3" ?€) ; Euro Sign + ("`4" ?₪) ; New Sheqel sign + ("`5" ?°) ; Degree Sign + ("`6" ?֫) ; Ole +;("`7" ??) ; Unassigned + ("`8" ?×) ; Multiplication Sign + ("`9" ?\u200E) ; LRM + ("`0" ?\u200F) ; RLM + ("`-" ?־) ; Maqaf + ("`=" ?–) ; En Dash + ("`q" ?ׂ) ; Sin dot + ("`w" ?ׁ) ; Shin dot + ("`e" ?ָ) ; Qamats + ("`r" ?ֳ) ; Hataf Qamats +;("`t" ??) ; Unassigned + ("`y" ?װ) ; Yiddish Double Vav + ("`u" ?ֹ) ; Holam +;("`i" ??) ; Unassigned +;("`o" ??) ; Unassigned + ("`p" ?ַ) ; Patah + ("`[" ?ֲ) ; Hataf Patah + ("`]" ?ֿ) ; Rafe + ("`\\" ?ֻ) ; Qubuts + ("`a" ?ְ) ; Sheva + ("`s" ?ּ) ; Dagesh or Mapiq +;("`d" ??) ; Unassigned +;("`f" ??) ; Unassigned + ("`g" ?ױ) ; Yiddish Vav Yod + ("`h" ?ײ) ; Yiddish Double Yod + ("`j" ?ִ) ; Hiriq + ("`k" ?׳) ; Geresh (Punct.) + ("`l" ?“) ; Left Double Quotation Mark + ("`;" ?”) ; Right Double Quotation Mark + ("`'" ?״) ; Gershayim (Punct.) +;("`z" ??) ; Unassigned + ("`x" ?ֶ) ; Segol (Point) + ("`c" ?ֱ) ; Hataf Segol +;("`v" ??) ; Unassigned +;("`b" ??) ; Unassigned +;("`n" ??) ; Unassigned + ("`m" ?ֵ) ; Tsere +;("`," ??) ; Unassigned +;("`." ??) ; Unassigned + ("`/" ?÷) ; Division Sign + + ("``" ?׃) ; Sof Pasuq + ("`!" ?֑) ; Etnahta + ("`@" ?֒) ; Segol (Accent) + ("`#" ?֓) ; Shalshelet + ("`$" ?֔) ; Zaqef Qatan + ("`%" ?֕) ; Zaqef Gadol + ("`^" ?֖) ; Tipeha + ("`&" ?֗) ; Revia + ("`*" ?֘) ; Zarqa + ("`(" ?֙) ; Pashta + ("`)" ?֚) ; Yetiv + ("`_" ?֛) ; Tevir + ("`+" ?֜) ; Geresh (Accent) + ("`Q" ?֝) ; Geresh Muqdam + ("`W" ?֞) ; Gershayim (Accent) + ("`E" ?ׇ) ; Qamats Qatan + ("`R" ?֟) ; Qarney Para + ("`T" ?֠) ; Telisha Gedola + ("`Y" ?֡) ; Pazer + ("`U" ?ֺ) ; Holam Haser for Vav + ("`I" ?֢) ; Atnah Hafukh + ("`O" ?֣) ; Munah +;("`P" ??) ; Reserved + ("`{" ?֤) ; Mahapakh + ("`}" ?֥) ; Merkha + ("`|" ?֦) ; Merkha Kefula +;("`A" ??) ; Reserved +;("`S" ??) ; Reserved + ("`D" ?֧) ; Darga + ("`F" ?֨) ; Qadma + ("`G" ?֩) ; Telisha Qetana + ("`H" ?֪) ; Yerah Ben Yomo + ("`J" ?\u200D) ; ZWJ + ("`K" ?֬) ; Iluy + ("`L" ?“) ; Left Double Quotation Mark (2nd) + ("`:" ?„) ; Double Low-9 Quotation Mark + ("`\"" ?֭) ; Dehi + ("`Z" ?֮) ; Zinor + ("`X" ?֯) ; Masora Circle + ("`C" ?\u034F) ; CGJ + ("`V" ?׀) ; Paseq + ("`B" ?׆) ; Nun Hafukha + ("`N" ?\u200C) ; ZWNJ +;("`M" ??) ; Unassigned +;("`<" ??) ; Unassigned + ("`>" ?ׅ) ; Lower Dot + ("`?" ?ׄ) ; Upper Dot +) + +(quail-define-package + "hebrew-lyx" "Hebrew" "לִ" nil "Hebrew LyX input method. + +Based on LyX keyboard layout. +Additional mappings for Rafe and Yiddish ligatures. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?\;) + ("_" ?־) ; Maqaf + ("q`" ?ְ) ; Sheva + ("w" ?\') + ("e" ?ק) ; Qof + ("r" ?ר) ; Resh + ("t" ?א) ; Alef + ("y" ?ט) ; Tet + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?י) ; Yod + ("j" ?ח) ; Het + ("k" ?ל) ; Lamed + ("l" ?ך) ; Final Kaf + (";" ?ף) ; Final Pe + ("'" ?,) + ("z" ?ז) ; Zayin + ("x" ?ס) ; Samekh + ("c" ?ב) ; Bet + ("v" ?ה) ; He + ("b" ?נ) ; Nun + ("n" ?מ) ; Mem + ("m" ?צ) ; Tsadi + ("," ?ת) ; Tav + ("." ?ץ) ; Final Tsadi + ("/" ?.) ; Stop + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("W" ?׳) ; Geresh (Punct.) + ("E" ?ָ) ; Qamats + ("R" ?ֿ) ; Rafe + ("T" ?\u200E) ; LRM + ("Y" ?\u200F) ; RLM + ("U" ?ֹ) ; Holam + ("I" ?ײ) ; Yiddish Double Yod + ("O" ?װ) ; Yiddish Double Vav + ("P" ?ַ) ; Patah + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + ("A" ?ְ) ; Sheva + ("S" ?ּ) ; Dagesh or Mapiq + ("F" ?״) ; Gershayim (Punct.) + ("G" ?ׂ) ; Sin dot + ("H" ?ׁ) ; Shin dot + ("J" ?ִ) ; Hiriq + ("K" ?₪) ; New Sheqel sign + ("L" ?ױ) ; Yiddish Vav Yod + ("X" ?ֶ) ; Segol (Point) + ("C" ?ֻ) ; Qubuts + ("V" ?ֱ) ; Hataf Segol + ("B" ?ֲ) ; Hataf Patah + ("N" ?ֳ) ; Hataf Qamats + ("M" ?ֵ) ; Tsere + ("<" ?>) ; mirroring + (">" ?<) ; mirroring +) + + +(quail-define-package + "hebrew-full" "Hebrew" "עִ֫" nil "Hebrew Full method. + +Provides access to all Hebrew characters suitable to Modern Hebrew. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?\;) + ("-" ?־) ; Maqaf + ("w" ?') + ("e" ?ק) ; Qof + ("r" ?ר) ; Resh + ("t" ?א) ; Alef + ("y" ?ט) ; Tet + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?י) ; Yod + ("j" ?ח) ; Het + ("k" ?ל) ; Lamed + ("l" ?ך) ; Final Kaf + (";" ?ף) ; Final Pe + ("'" ?,) + ("z" ?ז) ; Zayin + ("x" ?ס) ; Samekh + ("c" ?ב) ; Bet + ("v" ?ה) ; He + ("b" ?נ) ; Nun + ("n" ?מ) ; Mem + ("m" ?צ) ; Tsadi + ("," ?ת) ; Tav + ("." ?ץ) ; Final Tsadi + ("/" ?.) + + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("Q" ?/) + ("W" ?׳) ; Geresh (Punct.) + ("E" ?₪) ; New Sheqel Sign + ("R" ?ֿ) ; Rafe + ("T" ?ֱ) ; Hataf Segol + ("Y" ?ױ) ; Yiddish Vav Yod + ("U" ?װ) ; Yiddish Double Vav + ("I" ?ֲ) ; Hataf Patah + ("O" ?ֳ) ; Hataf Qamats + ("P" ?״) ; Gershayim (Punct.) + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + ("A" ?ְ) ; Sheva + ("S" ?ּ) ; Dagesh or Mapiq + ("D" ?ֻ) ; Qubuts + ("F" ?ֹ) ; Holam + ("G" ?ֶ) ; Segol (Point) + ("H" ?ֵ) ; Tsere + ("J" ?ִ) ; Hiriq + ("K" ?ַ) ; Patah + ("L" ?ָ) ; Qamats + ("Z" ?ׂ) ; Sin Dot + ("X" ?ׁ) ; Shin Dot + ("C" ?֫) ; Ole + ("V" ?ײ) ; Yiddish Double Yod + ("B" ?׃) ; Sof Pasuq + ("N" ?\u200E) ; LRM + ("M" ?\u200F) ; RLM + ("<" ?>) ; mirroring + (">" ?<) ; mirroring + + ("q`" ?\u202D) ; LRO + ("q1" ?\u202E) ; RLO + ("q2" ?\u202A) ; LRE + ("q3" ?\u202B) ; RLE + ("q4" ?\u202C) ; PDF + ("q5" ?\u034F) ; CGJ + ("q6" ?֬) ; Iluy + ("q8" ?֭) ; Dehi + ("q9" ?ׇ) ; Qamats Qatan + ("q0" ?֝) ; Geresh Muqdam + ("q-" ?-) ; Minus + ("q=" ?֮) ; Zinor + ("q|" ?׀) ; Paseq + ("qw" ?֯) ; Masora Circle + ("qe" ?ׄ) ; Upper Dot + ("qr" ?ׅ) ; Lower Dot + ("qy" ?֟) ; Qarney Para + ("qu" ?֓) ; Shalshelet + ("qi" ?֞) ; Gershayim (Accent) + ("qo" ?֜) ; Geresh (Accent) + ("qp" ?֨) ; Qadma + ("q[" ?׆) ; Nun Hafukha + ("qa" ?ֺ) ; Holam Haser for Vav + ("qs" ?֩) ; Telisha Qetana + ("qd" ?֠) ; Telisha Gedola + ("qf" ?֡) ; Pazer + ("qg" ?֕) ; Zaqef Gadol + ("qh" ?֔) ; Zaqef Qatan + ("qj" ?֙) ; Pashta + ("qk" ?֤) ; Mahapakh + ("ql" ?֗) ; Revia + ("q;" ?֒) ; Segol (Accent) + ("q'" ?֘) ; Zarqa + ("qz" ?֪) ; Yerah Ben Yomo + ("qx" ?֦) ; Merkha Kefula + ("qc" ?֚) ; Yetiv + ("qv" ?֛) ; Tevir + ("qb" ?֧) ; Darga + ("qn" ?֑) ; Etnahta + ("qm" ?֣) ; Munah + ("q," ?֖) ; Tipeha + ("q." ?֥) ; Merkha + ("q/" ?ֽ) ; Meteg +) + + +(quail-define-package + "hebrew-biblical-tiro" "Hebrew" "תִרֹ" nil +"Biblical Hebrew Tiro input method. + +Based on Society of Biblical Literature's Tiro keyboard layout. +Not suitable for modern Hebrew input. + 'q' is used to switch levels instead of Alt-Gr. + Combining dot above (Called Masora dot) (̇) is mapped to 'q1'. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?׃) ; Sof Pasuq + ("-" ?־) ; Maqaf + ("=" ?◦) ; White Bullet + ("w" ?׳) ; Geresh (Punct.) + ("e" ?ק) ; Qof + ("r" ?ר) ; Resh + ("t" ?א) ; Alef + ("y" ?ט) ; Tet + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("\\" ?׀) ; Paseq + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?י) ; Yod + ("j" ?ח) ; Het + ("k" ?ל) ; Lamed + ("l" ?ך) ; Final Kaf + (";" ?ף) ; Final Pe + ("'" ?֚) ; Yetiv + ("z" ?ז) ; Zayin + ("x" ?ס) ; Samekh + ("c" ?ב) ; Bet + ("v" ?ה) ; He + ("b" ?נ) ; Nun + ("n" ?מ) ; Mem + ("m" ?צ) ; Tsadi + ("," ?ת) ; Tav + ("." ?ץ) ; Final Tsadi + ("/" ?֭) ; Dehi + ("~" ?֮) ; Zinor + ("!" ?֩) ; Telisha Qetana + ("@" ?֙) ; Pashta + ("#" ?֒) ; Segol (Accent) + ("$" ?֯) ; Masora circle + ("%" ?ֺ) ; Holam Haser for Vav + ("^" ?ֹ) ; Holam + ("&" ?ֿ) ; Rafe + ("*" ?ׂ) ; Sin dot + ("(" ?ׁ) ; Shin dot + (")" ?֝) ; Geresh Muqdam + ("_" ?֠) ; Telisha Gedola + ("+" ?ּ) ; Dagesh or Mapiq + ("Q" ?ׄ) ; Upper dot + ("W" ?֬) ; Iluy + ("E" ?֫) ; Ole + ("R" ?֟) ; Qarney Para + ("T" ?֓) ; Shalshelet + ("Y" ?֞) ; Gershayim (Accent) + ("U" ?֜) ; Geresh (Accent) + ("I" ?֡) ; Pazer + ("O" ?֕) ; Zaqef Gadol + ("P" ?֔) ; Zaqef Qatan + ("{" ?֗) ; Revia + ("}" ?֘) ; Zarqa + ("|" ?֨) ; Qadma + ("A" ?ֽ) ; Meteg + ("S" ?ְ) ; Sheva + ("D" ?ֻ) ; Qubuts + ("F" ?ִ) ; Hiriq + ("G" ?ֱ) ; Hataf Segol + ("H" ?ֶ) ; Segol (Point) + ("J" ?ֵ) ; Tsere + ("K" ?ֳ) ; Hataf Qamats + ("L" ?ָ) ; Qamats + (":" ?ֲ) ; Hataf Patah + ("\"" ?ַ) ; Patah + ("Z" ?ׅ) ; Lower dot + ("X" ?֤) ; Mahapakh + ("C" ?֪) ; Yerah Ben Yomo + ("V" ?֦) ; Merkha Kefula + ("B" ?֥) ; Merkha + ("N" ?֧) ; Darga + ("M" ?֛) ; Tevir + ("<" ?֑) ; Etnahta + (">" ?֖) ; Tipeha + ("?" ?֣) ; Munah + + ("q`" ?\;) + ("q1" ?\u0307) ; Combining dot above + ("q2" ?\u0336) ; Combining long stroke overlay + ("q3" ?\u030A) ; Combining ring above + ("q4" ?₪) ; New Sheqel Sign + ("q5" ?\u200D) ; ZWJ + ("q6" ?\u200C) ; ZWNJ + ("q7" ?\u034F) ; CGJ + ("q8" ?\u200E) ; LRM + ("q9" ?\u200F) ; RLM + ("q0" ?◌) ; Dotted Circle + ("q-" ?-) ; Minus + ("q=" ?•) ; Bullet + ("qq" ?\u0308) ; Combining Diaeresis + ("qw" ?״) ; Gershayim (Punct.) + ("qe" ?€) ; Euro Sign + ("qu" ?װ) ; Yiddish Double Vav + ("q\\" ?\\) + ("qh" ?ײ) ; Yiddish Double Yod + ("qj" ?ױ) ; Yiddish Vav Yod + ("ql" ?ׇ) ; Qamats Qatan + ("q'" ?,) + ("qc" ?֢) ; Atnah Hafukh + ("qb" ?׆) ; Nun Hafukha + ("q/" ?.) + + ("q~" ?~) + ("q!" ?!) + ("q@" ?@) + ("q#" ?#) + ("q$" ?$) + ("q%" ?%) + ("q^" ?^) + ("q&" ?&) + ("q*" ?*) + ("q(" ?\)) ; mirroring + ("q)" ?\() ; mirroring + ("q_" ?_) + ("q+" ?+) + ("qQ" ?/) + ("qW" ?') + ("q{" ?}) ; mirroring + ("q}" ?{) ; mirroring + ("q|" ?|) + ("q:" ?:) + ("q\"" ?\") + ("q<" ?>) + ("q>" ?<) + ("q?" ??) +) + +(quail-define-package + "hebrew-biblical-sil" "Hebrew" "סִל" nil +"Biblical Hebrew SIL input method. + +Based on Society of Biblical Literature's SIL keyboard layout. +Phonetic and not suitable for modern Hebrew input. + '`' is used to switch levels instead of Alt-Gr. + Euro Sign (€) is mapped to 'Z'. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("-" ?־) ; Maqaf + ("=" ?ּ) ; Dagesh or Mapiq + ("q" ?ק) ; Qof + ("w" ?ו) ; Vav + ("e" ?ֶ) ; Segol (Point) + ("r" ?ר) ; Resh + ("t" ?ת) ; Tav + ("y" ?י) ; Yod + ("u" ?ֻ) ; Qubuts + ("i" ?ִ) ; Hiriq + ("o" ?ֹ) ; Holam + ("p" ?פ) ; Pe + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("\\" ?׀) ; Paseq + ("a" ?ַ) ; Patah + ("s" ?ס) ; Samekh + ("d" ?ד) ; Dalet + ("f" [ "שׂ" ]) ; Shin + Sin dot + ("g" ?ג) ; Gimel + ("h" ?ה) ; He + ("j" [ "שׁ" ]) ; Shin + Shin dot + ("k" ?כ) ; Kaf + ("l" ?ל) ; Lamed + (";" ?ְ) ; Sheva + ("'" ?’) ; Right Single Quotation Mark + ("z" ?ז) ; Zayin + ("x" ?ח) ; Het + ("c" ?צ) ; Tsadi + ("v" ?ט) ; Tet + ("b" ?ב) ; Bet + ("n" ?נ) ; Nun + ("m" ?מ) ; Mem + + ("~" ?₪) ; New Sheqel Sign + ("@" ?֘) ; Zarqa + ("#" ?֨) ; Qadma + ("$" ?֜) ; Geresh (Accent) + ("%" ?֞) ; Gershayim (Accent) + ("&" ?֬) ; Iluy + ("*" ?֝) ; Geresh Muqdam + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("_" ?–) ; Em Dash + ("Q" ?֗) ; Revia + ("E" ?ֵ) ; Tsere + ("Y" ?֟) ; Qarney Para + ("O" ?ֺ) ; Holam Haser for Vav + ("P" ?ף) ; Final Pe + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + + ("A" ?ָ) ; Qamats + ("S" ?ש) ; Shin + ("K" ?ך) ; Final Kaf + (":" ?״) ; Gershayim (Punct.) + ("\"" ?”) ; Right Double Quotation Mark + ("Z" ?€) ; Euro Sign + ("C" ?ץ) ; Final Tsadi + ("N" ?ן) ; Final Nun + ("M" ?ם) ; Final Mem + ("<" ?ע) ; Ayin + (">" ?א) ; Alef + + ("``" ?$) + ("`1" ?ֽ) ; Meteg + ("`2" ?֢) ; Atnah Hafukh + ("`3" ?֖) ; Tipeha + ("`4" ?֥) ; Merkha + ("`5" ?֦) ; Merkha Kefula + ("`6" ?֭) ; Dehi + ("`7" ?֣) ; Munah + ("`8" ?֛) ; Tevir + ("`9" ?֧) ; Darga + ("`0" ?֪) ; Yerah Ben Yomo + ("`-" ?—) ; Em Dash + ("`=" ?֑) ; Etnahta + ("`]" ?֚) ; Accent Yetiv + ("`\\" ?֤) ; Mahapakh + ("`a" ?ׇ) ; Qamats Qatan + ("`g" ? ◦) ; White Bullet + ("`h" ?\u0336) ; Combining Long Stroke Overlay + ("`;" ?\;) + ("`'" ?\u0323); Combining Dot Below (Lower Point??) + ("`m" ?\u200C) ; ZWNJ + ("`," ?») ; mirroring + ("`." ?«) ; mirroring + ("`/" ?׳) ; Geresh (Punct.) + + ("`!" ?֗) ; Revia + ("`@" ?֮) ; Zinor + ("`#" ?֙) ; Pashta + ("`$" ?֠) ; Telisha Gedola + ("`%" ?֩) ; Telisha Qetana + ("`&" ?֡) ; Pazer + ("`*" ?֕) ; Zaqef Gadol + ("`(" ?֓) ; Shalshelet + ("`)" ?֯) ; Masora Circle + ("`_" ?ֿ) ; Rafe + ("`+" ?◌) ; Dotted Circle + ("`E" ?ֱ) ; Hataf Segol + ("`O" ?ֳ) ; Hataf Qamats + ("`P" ?\u034F) ; CGJ + ("`{" ?֔) ; Zaqef Qatan + ("`}" ?֒) ; Segol (Accent) + ("`|" ?֫) ; Ole + ("`A" ?ֲ) ; Hataf Patah + ("`G" ?•) ; Bullet + ("`H" ?\u030A) ; Combining ring above + ("`:" ?׃) ; Sof Pasuq + ("`\"" ?ׄ) ; Upper Dot + ("`M" ?\u200D) ; ZWJ + ("`<" ?\u0307) ; Combining dot above + ("`>" ?\u0308) ; Combining Diaeresis +) + + +(quail-define-package + "yiddish-royal" "Hebrew" "ײר" nil "Yiddish Royal input method. + +Based on Royal Yiddish typewriter. +Better for yiddish than Hebrew methods. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?~) + ("q" ?ק) ; Qof + ("w" [ "אָ" ]) ; Qamats Alef (Komets Alef) + ("e" ?ר) ; Resh + ("r" ?א) ; Alef (Shtumer Alef) + ("t" ?ט) ; Tet + ("y" ?װ) ; Yiddish Double Vav (Tsvey Vovn) + ("u" ?ו) ; Vav + ("i" ?ן) ; Final Nun + ("o" ?ם) ; Final Mem + ("p" [ "פֿ" ]) ; Rafe Pe (Fey) + ("[" [ "פּ" ]) ; Dagesh Pe (Pey) + ("]" ?,) + ("a" ?ש) ; Shin + ("s" ?ד) ; Dalet + ("d" ?ג) ; Gimel + ("f" ?כ) ; Kaf + ("g" ?ע) ; Ayin + ("h" ?ײ) ; Yiddish Double Yod (Tsvey Yudn) + ("j" ?י) ; Yod + ("k" ?ח) ; Het + ("l" ?ל) ; Lamed + (";" ?ך) ; Final Kaf + ("'" ?ף) ; Final Pe + ("z" ?.) + ("x" ?ז) ; Zayin + ("c" ?ס) ; Samekh + ("v" ?ב) ; Bet + ("b" ?ה) ; He + ("n" ?נ) ; Nun + ("m" ?מ) ; Mem + ("," ?צ) ; Tsadi + ("." ?ת) ; Tav + ("/" ?ץ) ; Final Tsadi + + ("~" ?@) + ("!" ?”) ; Right Double Quotation Mark + ("@" ?„) ; Double Low-9 Quotation Mark + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("Q" ?“) ; Left Double Quotation Mark + ("W" ?”) ; Right Double Quotation Mark + ("E" ?ײ) ; Yiddish Double Yod (x2) + ("R" [ "אַ" ]) ; Patah Alef (Pasekh Alef) +; ("T" "") + ("Y" ?ױ) ; Ligature Yiddish Vav Yod (vov yud) + ("U" [ "וּ" ]) ; Melupm vov + ("I" ?/) + ("O" ?\\) + ("P" ?פ) ; Pe + ("{" ??) + ("}" ?!) + ("A" [ "שׂ" ]) ; Shin + Sin dot + ("S" [ "שׂ" ]) ; Shin + Sin dot +; ("D" "") + ("F" [ "כּ" ]) ; Dagesh Kaf (Kof) +; ("G" "") + ("H" [ "ײַ" ]) ; Yiddish Double Yod + Patah (Pasekh Tsvey Yudn) + ("J" [ "יִ" ]) ; Khirik Yud + ("K" ?}) ; mirroring + ("L" ?{) ; mirroring + ("\"" ?\;) + ("Z" ??) + ("X" ?|) + ("C" [ "בּ" ]) ; Dagesh Bet (Beys) + ("V" [ "בֿ" ]) ; Rafe Bet (Veys) + ("B" ?\]) ; mirroring + ("N" ?\[) ; mirroring + ("M" ?>) ; mirroring + ("<" ?<) ; mirroring + (">" [ "תּ" ]) ; Dagesh Tav (Tof) + ("?" ?\') +) + + +(quail-define-package + "yiddish-keyman" "Hebrew" "ײק" nil "Yiddish Keyman input method. + +Based on Keyman keyboard layout. +Better for yiddish than Hebrew methods.. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("`" ?\;) + ("q" ?„) ; Double Low-9 Quotation Mark + ("w" ?ש) ; Shin + ("e" ?ע) ; Ayin + ("r" ?ר) ; Resh + ("t" ?ט) ; Tet + ("y" ?י) ; Yod + ("u" ?ו) ; Vav + ("i" ?י) ; Yod (x2) + ("o" [ "אָ" ]) ; Qamats Alef (Komets Alef) + ("p" [ "פּ" ]) ; Dagesh Pe (Pey) + ("[" ?\]) ; mirroring + ("]" ?\[) ; mirroring + ("a" [ "אַ" ]) ; Patah Alef (Pasekh Alef) + ("s" ?ס) ; Samekh + ("d" ?ד) ; Dalet + ("f" [ "פֿ" ]) ; Rafe Pe (Fey) + ("g" ?ג) ; Gimel + ("h" ?ה) ; He + ("j" ?ײ) ; Yiddish Double Yod (Tsvey Yudn) + ("k" ?ק) ; Qof + ("l" ?ל) ; Lamed + ("z" ?ז) ; Zayin + ("x" ?כ) ; Kaf + ("c" ?צ) ; Tsadi + ("v" ?װ) ; Yiddish Double Vav (Tsvey Vovn) + ("b" ?ב) ; Bet + ("n" ?נ) ; Nun + ("m" ?מ) ; Mem + + ("(" ?\)) ; mirroring + (")" ?\() ; mirroring + ("Q" ?”) ; Right Double Quotation Mark + ("W" [ "שׂ" ]) ; Shin + Sin dot + ("E" ?ײ) ; Yiddish Double Yod (x2) +; ("R" "") ; + ("T" [ "תּ" ]) ; Dagesh Tav (Tof) + ("Y" [ "ײַ" ]) ; Yiddish Double Yod + Patah (Pasekh Tsvey Yudn) + ("U" [ "וּ" ]) ; Melupm vov + ("I" [ "יִ" ]) ; Khirik Yud + ("O" ?ױ) ; Ligature Yiddish Vav Yod (vov yud) +; ("P" "") + ("{" ?}) ; mirroring + ("}" ?{) ; mirroring + ("A" ?א) ; Alef (Shtumer Alef) + ("S" ?ת) ; Tav + ("F" ?ף) ; Final Pe + ("G" ?׳) ; Geresh (Punct.) + ("H" ?ח) ; Het + ("J" ?ײ) ; Yiddish Double Yod (x2) + ("K" [ "כּ" ]) ; Dagesh Kaf (Kof) +; ("L" "") +; ("Z" "") + ("X" ?ך) ; Final Kaf + ("C" ?ץ) ; Final Tsadi + ("V" [ "בֿ" ]) ; Rafe Bet (Veys) ) ; Bet +; ("B" "") + ("N" ?ן) ; Final Nun + ("M" ?ם) ; Final Mem + ("<" ?>) ; mirroring + (">" ?<) ; mirroring +) + +;;; hebrew.el ends here diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el new file mode 100644 index 00000000000..d953a219104 --- /dev/null +++ b/lisp/leim/quail/indian.el @@ -0,0 +1,473 @@ +;;; indian.el --- Quail packages for inputting Indian + +;; Copyright (C) 2000-2013 Free Software Foundation, Inc. + +;; Author: KAWABATA, Taichi <kawabata@m17n.org> + +;; Keywords: multilingual, input method, Indian, Devanagari + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; History: + +;; 2000.12.12 +;; Totally re-written from devanagari.el to handle multiple Indian Scripts. + +;;; Code: + +(require 'quail) +(require 'ind-util) + +;;; +;;; Input by transliteration +;;; + +(defun quail-define-indian-trans-package (hashtbls pkgname + lang title doc) + (funcall 'quail-define-package pkgname lang title t doc + nil nil nil nil nil nil t nil) + (maphash + (lambda (key val) + (quail-defrule key (if (= (length val) 1) + (string-to-char val) + (vector val)))) + (cdr hashtbls))) + +;; This needs to be seen by quail-update-leim-list-file, but cannot be +;; commented out because quail-update-leim-list-file ignores +;; commented-out lines. +(if nil + (quail-define-package "devanagari-itrans" "Devanagari" "DevIT" t "Devanagari ITRANS")) +(quail-define-indian-trans-package + indian-dev-itrans-v5-hash "devanagari-itrans" "Devanagari" "DevIT" + "Devanagari transliteration by ITRANS method.") +(quail-defrule "..." ?॥) +(quail-defrule "\\'" ?॑) +(quail-defrule "\\_" ?॒) +(quail-defrule "\\__" ?_) +(quail-defrule "\\''" ?') + +(if nil + (quail-define-package "devanagari-kyoto-harvard" "Devanagari" "DevKH" t "Devanagari Kyoto-Harvard")) +(quail-define-indian-trans-package + indian-dev-kyoto-harvard-hash + "devanagari-kyoto-harvard" "Devanagari" "DevKH" + "Devanagari transliteration by Kyoto-Harvard method.") + +(if nil + (quail-define-package "devanagari-aiba" "Devanagari" "DevAB" t "Devanagari Aiba")) +(quail-define-indian-trans-package + indian-dev-aiba-hash "devanagari-aiba" "Devanagari" "DevAB" + "Devanagari transliteration by Aiba-method.") + +(if nil + (quail-define-package "punjabi-itrans" "Punjabi" "PnjIT" t "Punjabi ITRANS")) +(quail-define-indian-trans-package + indian-pnj-itrans-v5-hash "punjabi-itrans" "Punjabi" "PnjIT" + "Punjabi transliteration by ITRANS method.") + +(if nil + (quail-define-package "gujarati-itrans" "Gujarati" "GjrIT" t "Gujarati ITRANS")) +(quail-define-indian-trans-package + indian-gjr-itrans-v5-hash "gujarati-itrans" "Gujarati" "GjrIT" + "Gujarati transliteration by ITRANS method.") + +(if nil + (quail-define-package "oriya-itrans" "Oriya" "OriIT" t "Oriya ITRANS")) +(quail-define-indian-trans-package + indian-ori-itrans-v5-hash "oriya-itrans" "Oriya" "OriIT" + "Oriya transliteration by ITRANS method.") + +(if nil + (quail-define-package "bengali-itrans" "Bengali" "BngIT" t "Bengali ITRANS")) +(quail-define-indian-trans-package + indian-bng-itrans-v5-hash "bengali-itrans" "Bengali" "BngIT" + "Bengali transliteration by ITRANS method.") + +(if nil + (quail-define-package "assamese-itrans" "Assamese" "AsmIT" t "Assamese ITRANS")) +(quail-define-indian-trans-package + indian-asm-itrans-v5-hash "assamese-itrans" "Assamese" "AsmIT" + "Assamese transliteration by ITRANS method.") + +(if nil + (quail-define-package "telugu-itrans" "Telugu" "TlgIT" t "Telugu ITRANS")) +(quail-define-indian-trans-package + indian-tlg-itrans-v5-hash "telugu-itrans" "Telugu" "TlgIT" + "Telugu transliteration by ITRANS method.") + +(if nil + (quail-define-package "kannada-itrans" "Kannada" "KndIT" t "Kannada ITRANS")) +(quail-define-indian-trans-package + indian-knd-itrans-v5-hash "kannada-itrans" "Kannada" "KndIT" + "Kannada transliteration by ITRANS method.") + +(if nil + (quail-define-package "malayalam-itrans" "Malayalam" "MlmIT" t "Malayalam ITRANS")) +(quail-define-indian-trans-package + indian-mlm-itrans-v5-hash "malayalam-itrans" "Malayalam" "MlmIT" + "Malayalam transliteration by ITRANS method.") + +(defvar quail-tamil-itrans-syllable-table + (let ((vowels + '(("அ" nil "a") + ("ஆ" "ா" "A") + ("இ" "ி" "i") + ("ஈ" "ீ" "I") + ("உ" "ு" "u") + ("ஊ" "ூ" "U") + ("எ" "ெ" "e") + ("ஏ" "ே" "E") + ("ஐ" "ை" "ai") + ("ஒ" "ொ" "o") + ("ஓ" "ோ" "O") + ("ஔ" "ௌ" "au"))) + (consonants + '(("க" "k") ; U+0B95 + ("ங" "N^") ; U+0B99 + ("ச" "ch") ; U+0B9A + ("ஞ" "JN") ; U+0B9E + ("ட" "T") ; U+0B9F + ("ண" "N") ; U+0BA3 + ("த" "t") ; U+0BA4 + ("ந" "n") ; U+0BA8 + ("ப" "p") ; U+0BAA + ("ம" "m") ; U+0BAE + ("ய" "y") ; U+0BAF + ("ர" "r") ; U+0BB0 + ("ல" "l") ; U+0BB2 + ("வ" "v") ; U+0BB5 + ("ழ" "z") ; U+0BB4 + ("ள" "L") ; U+0BB3 + ("ற" "rh") ; U+0BB1 + ("ன" "nh") ; U+0BA9 + ("ஜ" "j") ; U+0B9C + ("ஶ" nil) ; U+0BB6 + ("ஷ" "Sh") ; U+0BB7 + ("ஸ" "s") ; U+0BB8 + ("ஹ" "h") ; U+0BB9 + ("க்ஷ" "x" ) ; U+0B95 + )) + (virama #x0BCD) + clm) + (with-temp-buffer + (insert "\n") + (insert " +") + (insert-char ?- 74) + (insert "\n |") + (setq clm 6) + (dolist (v vowels) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (car v)) + (setq clm (+ clm 6))) + (insert "\n |") + (setq clm 6) + (dolist (v vowels) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (nth 2 v)) + (setq clm (+ clm 6))) + (dolist (c consonants) + (insert "\n----+") + (insert-char ?- 74) + (insert "\n") + (insert (car c) virama + (propertize "\t" 'display '(space :align-to 4)) + "|") + (setq clm 6) + (dolist (v vowels) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (car c) (or (nth 1 v) "")) + (setq clm (+ clm 6))) + (insert "\n" (or (nth 1 c) "") + (propertize "\t" 'display '(space :align-to 4)) + "|") + (setq clm 6) + + (dolist (v vowels) + (apply 'insert (propertize "\t" 'display (list 'space :align-to clm)) + (if (nth 1 c) (list (nth 1 c) (nth 2 v)) (list ""))) + (setq clm (+ clm 6)))) + (insert "\n") + (insert "----+") + (insert-char ?- 74) + (insert "\n") + (buffer-string)))) + +(defvar quail-tamil-itrans-numerics-and-symbols-table + (let ((numerics '((?௰ "பத்து") (?௱ "நூறு") (?௲ "ஆயிரம்"))) + (symbols '((?௳ "நாள்") (?௴ "மாதம்") (?௵ "வருடம்") + (?௶ "பற்று") (?௷ "வரவு") (?௸ "மேற்படி") + (?௹ "ரூபாய்") (?௺ "எண்"))) + clm) + (with-temp-buffer + (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (insert + (propertize "\t" 'display '(space :align-to 5)) "numerics" + (propertize "\t" 'display '(space :align-to 18)) "|" + (propertize "\t" 'display '(space :align-to 45)) "symbols") + (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (dotimes (i 2) + (setq clm 0) + (dolist (elm numerics) + (if (> clm 0) + (insert (propertize "\t" 'display (list 'space :align-to clm)))) + (insert (nth i elm)) + (setq clm (+ clm 5))) + (insert (propertize "\t" 'display '(space :align-to 18)) "|") + (setq clm 19) + (dolist (elm symbols) + (if (> clm 19) + (insert (propertize "\t" 'display (list 'space :align-to clm)))) + (insert (nth i elm)) + (setq clm (+ clm 8))) + (insert "\n")) + (insert (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (insert "\n") + (buffer-string)))) + +(defvar quail-tamil-itrans-various-signs-and-digits-table + (let ((various '((?ஃ . "H") ("ஸ்ரீ" . "srii") (?ௐ))) + (digits "௦௧௨௩௪௫௬௭௮௯") + (width 6) clm) + (with-temp-buffer + (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (insert + (propertize "\t" 'display '(space :align-to 5)) "various" + (propertize "\t" 'display '(space :align-to 18)) "|" + (propertize "\t" 'display '(space :align-to 45)) "digits") + + (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (setq clm 0 ) + + (dotimes (i (length various)) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (car (nth i various))) + (setq clm (+ clm width))) + (insert (propertize "\t" 'display '(space :align-to 18)) "|") + (setq clm 20) + (dotimes (i 10) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (aref digits i)) + (setq clm (+ clm width))) + (insert "\n") + (setq clm 0) + (dotimes (i (length various)) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (or (cdr (nth i various)) "")) + (setq clm (+ clm width))) + (insert (propertize "\t" 'display '(space :align-to 18)) "|") + (setq clm 20) + (dotimes (i 10) + (insert (propertize "\t" 'display (list 'space :align-to clm)) + (format "%d" i)) + (setq clm (+ clm width))) + (insert "\n" (make-string 18 ?-) "+" (make-string 60 ?-) "\n") + (buffer-string)))) + +(if nil + (quail-define-package "tamil-itrans" "Tamil" "TmlIT" t "Tamil ITRANS")) +(quail-define-indian-trans-package + indian-tml-itrans-v5-hash "tamil-itrans" "Tamil" "TmlIT" + "Tamil transliteration by ITRANS method. + +You can input characters using the following mapping tables. + Example: To enter வணக்கம், type vaNakkam. + +### Basic syllables (consonants + vowels) ### +\\<quail-tamil-itrans-syllable-table> + +### Miscellaneous (various signs + digits) ### +\\<quail-tamil-itrans-various-signs-and-digits-table> + +### Others (numerics + symbols) ### + +Characters below have no ITRANS method associated with them. +Their descriptions are included for easy reference. +\\<quail-tamil-itrans-numerics-and-symbols-table> + +Full key sequences are listed below:") + +;;; +;;; Input by Inscript +;;; + +(defun quail-define-inscript-package (char-tables key-tables pkgname lang + title docstring) + (funcall 'quail-define-package pkgname lang title nil docstring + nil nil nil t nil nil nil nil) + (let (char-table key-table char key) + (while (and char-tables key-tables) + (setq char-table (car char-tables) + char-tables (cdr char-tables) + key-table (car key-tables) + key-tables (cdr key-tables)) + (while (and char-table key-table) + (setq char (car char-table) + char-table (cdr char-table) + key (car key-table) + key-table (cdr key-table)) + (if (and (consp char) (consp key)) + (setq char-table (append char char-table) + key-table (append key key-table)) + (if (and key char) + (quail-defrule + (if (characterp key) (char-to-string key) key) + (if (stringp char) (vector char) char)))))))) + +;; + +(defvar inscript-dev-keytable + '( + (;; VOWELS (18) + (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t) + (?+ ?=) ("F]" "f]") (?! ?@) (?Z ?z) (?S ?s) (?W ?w) + (?| ?\\) (?~ ?`) (?A ?a) (?Q ?q) ("+]" "=]") ("R]" "r]")) + (;; CONSONANTS (42) + ?k ?K ?i ?I ?U ;; GRUTTALS + ?\; ?: ?p ?P ?} ;; PALATALS + ?' ?\" ?\[ ?{ ?C ;; CEREBRALS + ?l ?L ?o ?O ?v ?V ;; DENTALS + ?h ?H ?y ?Y ?c ;; LABIALS + ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS + ?M ?< ?m ?u ;; SIBILANTS + "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS + ?% ?&) + (;; Misc Symbols (7) + ?X ?x ?_ ">]" ?d "X]" ?>) + (;; Digits + ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) + (;; Inscripts + ?# ?$ ?^ ?* ?\]))) + +(defvar inscript-mlm-keytable + '( + (;; VOWELS (18) + (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t) + (?+ ?=) ("F]" "f]") (?! ?@) (?S ?s) (?Z ?z) (?W ?w) + (?| ?\\) (?~ ?`) (?A ?a) (?Q ?q) ("+]" "=]") ("R]" "r]")) + (;; CONSONANTS (42) + ?k ?K ?i ?I ?U ;; GRUTTALS + ?\; ?: ?p ?P ?} ;; PALATALS + ?' ?\" ?\[ ?{ ?C ;; CEREBRALS + ?l ?L ?o ?O ?v ?V ;; DENTALS + ?h ?H ?y ?Y ?c ;; LABIALS + ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS + ?M ?< ?m ?u ;; SIBILANTS + "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS + ?% ?&) + (;; Misc Symbols (7) + ?X ?x ?_ ">]" ?d "X]" ?>) + (;; Digits + ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) + (;; Inscripts + ?# ?$ ?^ ?* ?\]))) + +(defvar inscript-tml-keytable + '( + (;; VOWELS (18) + (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t) + nil nil nil (?S ?s) (?Z ?z) (?W ?w) + nil (?A ?a) (?~ ?`) (?Q ?q) nil nil) + (;; CONSONANTS (42) + ?k ?K ?i ?I ?U ;; GRUTTALS + ?\; ?: ?p ?P ?} ;; PALATALS + ?' ?\" ?\[ ?{ ?C ;; CEREBRALS + ?l ?L ?o ?O ?v ?V ;; DENTALS + ?h ?H ?y ?Y ?c ;; LABIALS + ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS + ?M ?< ?m ?u ;; SIBILANTS + "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS + ?% ?&) + (;; Misc Symbols (7) + ?X ?x ?_ ">]" ?d "X]" ?>) + (;; Digits + ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) + (;; Inscripts + ?# ?$ ?^ ?* ?\]))) + +(if nil + (quail-define-package "devanagari-inscript" "Devanagari" "DevIS" t "Devanagari keyboard Inscript")) +(quail-define-inscript-package + indian-dev-base-table inscript-dev-keytable + "devanagari-inscript" "Devanagari" "DevIS" + "Devanagari keyboard Inscript.") + +(if nil + (quail-define-package "punjabi-inscript" "Punjabi" "PnjIS" t "Punjabi keyboard Inscript")) +(quail-define-inscript-package + indian-pnj-base-table inscript-dev-keytable + "punjabi-inscript" "Punjabi" "PnjIS" + "Punjabi keyboard Inscript.") + +(if nil + (quail-define-package "gujarati-inscript" "Gujarati" "GjrIS" t "Gujarati keyboard Inscript")) +(quail-define-inscript-package + indian-gjr-base-table inscript-dev-keytable + "gujarati-inscript" "Gujarati" "GjrIS" + "Gujarati keyboard Inscript.") + +(if nil + (quail-define-package "oriya-inscript" "Oriya" "OriIS" t "Oriya keyboard Inscript")) +(quail-define-inscript-package + indian-ori-base-table inscript-dev-keytable + "oriya-inscript" "Oriya" "OriIS" + "Oriya keyboard Inscript.") + +(if nil + (quail-define-package "bengali-inscript" "Bengali" "BngIS" t "Bengali keyboard Inscript")) +(quail-define-inscript-package + indian-bng-base-table inscript-dev-keytable + "bengali-inscript" "Bengali" "BngIS" + "Bengali keyboard Inscript.") + +(if nil + (quail-define-package "assamese-inscript" "Assamese" "AsmIS" t "Assamese keyboard Inscript")) +(quail-define-inscript-package + indian-asm-base-table inscript-dev-keytable + "assamese-inscript" "Assamese" "AsmIS" + "Assamese keyboard Inscript.") + +(if nil + (quail-define-package "telugu-inscript" "Telugu" "TlgIS" t "Telugu keyboard Inscript")) +(quail-define-inscript-package + indian-tlg-base-table inscript-dev-keytable + "telugu-inscript" "Telugu" "TlgIS" + "Telugu keyboard Inscript.") + +(if nil + (quail-define-package "kannada-inscript" "Kannada" "KndIS" t "Kannada keyboard Inscript")) +(quail-define-inscript-package + indian-knd-base-table inscript-dev-keytable + "kannada-inscript" "Kannada" "KndIS" + "Kannada keyboard Inscript.") + +(if nil + (quail-define-package "malayalam-inscript" "Malayalam" "MlmIS" t "Malayalam keyboard Inscript")) +(quail-define-inscript-package + indian-mlm-base-table inscript-mlm-keytable + "malayalam-inscript" "Malayalam" "MlmIS" + "Malayalam keyboard Inscript.") + +(if nil + (quail-define-package "tamil-inscript" "Tamil" "TmlIS" t "Tamil keyboard Inscript")) +(quail-define-inscript-package + indian-tml-base-table inscript-tml-keytable + "tamil-inscript" "Tamil" "TmlIS" + "Tamil keyboard Inscript.") + +;;; indian.el ends here diff --git a/lisp/leim/quail/ipa-praat.el b/lisp/leim/quail/ipa-praat.el new file mode 100644 index 00000000000..40b58aacf97 --- /dev/null +++ b/lisp/leim/quail/ipa-praat.el @@ -0,0 +1,346 @@ +;;; ipa-praat.el --- Inputting IPA characters with the conventions of Praat + +;; Copyright (C) 2011-2013 Free Software Foundation, Inc. + +;; Author: Oliver Scholz <epameinondas@gmx.de> +;; Keywords: multilingual, input method, IPA + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This is a new input method for IPA characters and diacritics, which follows +;; the conventions of Praat, a GPLed program for phonetical analysis. +;; +;; This input method is much more complete than the current ipa.el. + +;;; Code: + +(require 'quail) + +(quail-define-package + "ipa-praat" "IPA" "IPAP" t + "International Phonetic Alphabet input method. +This follows the input method of the phonetical analysis program +Praat (http://www.fon.hum.uva.nl/praat/). + + +* Vowels + +- Unrounded + | front | centr. | back +-------------+-------+--------+------ +close | i i | ɨ \\i- | ɯ \\mt +close centr. | ɪ \\ic | | +close-mid | e e | ɘ \\e- | ɤ \\rh + | | ə \\sw | +open-mid | ɛ \\ef | ɜ \\er | ʌ \\vt + | æ \\ae | ɐ \\at | +open | a a | | ɑ \\as + + + +- Rounded + | front | centr. | back +-------------+-------+--------+------- +close | y y | ʉ \\u- | u u +close centr. | ʏ \\yc | | ʊ \\hs +close-mid | ø \\o/ | ɵ \\o- | o o +open-mid | œ \\oe | ɞ \\kb | ɔ \\ct +open | ɶ \\Oe | | ɒ \\ab + + + +For most of the codes, the first letter tells you the most +similar letter of the English alphabet. The second letter can be +t (turned), c (capital), s (script), r (reversed), - (barred or +retracted), or / (slashed). One symbol (ɛ) is a phonetic version +of a Greek letter. The codes for ə, ɤ, ʊ and ɞ are abbreviations +for schwa, ram's horn, horseshoe, and kidney bean. + + +* Consonants + +- Pulmonic + + | plos. | nasal | fric. | approx. | trill | tap/flap | l. appr. +-----------+-------+-------+-------+---------+-------+----------+--------- +bilabial | p p | m m | ɸ \\ff | | | | + | b b | | β \\bf | ʋ \\vs | ʙ \\bc | | +labiodent. | | ɱ \\mj | f f | | | | + | | | v v | | | | +dental | | | θ \\tf | | | | + | | | ð \\dh | | | | +alveolar | t t | n n | s s | | | ɾ \\fh | + | d d | | z z | ɹ \\rt | r r | | l l +alv. lat. | | | ɬ \\l- | | | ɺ \\rl | + | | | ɮ \\lz | l l | | | l l +postalv. | | | ʃ \\sh | | | | + | | | ʒ \\zh | | | | +retroflex | ʈ \\t. | ɳ \\n. | ʂ \\s. | | | ɽ \\f. | + | ɖ \\d. | | ʐ \\z. | ɻ \\r. | | | ɭ \\l. +alv.-pala. | | | ɕ \\cc | | | | + | | | ʑ \\zc | | | | +palatal | c c | ɲ \\nj | ç \\c, | | | | + | ɟ \\j. | | ʝ \\jc | j j | | | ʎ \\yt +lab.-pal. | | | | | | | + | | | | ɥ \\ht | | | +lab.-vela. | | | ʍ \\wt | | | | + | | | | w w | | | +velar | k k | ŋ \\ng | x x | | | | ʟ \\lc + | ɡ \\gs | | ɣ \\gf | ɰ \\ml | | | +uvular | q q | ɴ \\nc | χ \\cf | | | | + | ɢ \\gc | | ʁ \\ri | | ʀ \\rc | | +pharyngeal | | | ħ \\h- | | | | + | | | ʕ \\9e | | | | +epiglottal | ʡ \\?- | | ʜ \\hc | | | | + | | | ʢ \\9- | | | | +glottal | ʔ | | h h | | | | + | | | ɦ \\h^ | | | | + +- Nonpulmonic + + | implosive | click +----------+-----------+------ +bilabial | ɓ \\b^ | ʘ \\O. +dental | | ǀ \\|1 +alveolar | ɗ \\d^ | +alv.-lat. | | ǁ \\|2 +postalv. | | ǂ \\|- +retrofl. | | ! ! +palatal | ʄ \\j^ | +velar | ɠ \\g^ | +uvular | ʛ \\G^ | + +For most of the codes, the first letter tells you the most +similar letter of the English alphabet. The second letter can +be t (turned), c (capital or curled), s (script), - (barred), +l (with leg), i (inverted), or j (left tail). Some phonetic +symbols are similar to Greek letters but have special +phonetic (f) versions with serifs (ɸ, β, ɣ) or are otherwise +slightly different (θ, χ). The codes for ŋ (engma), ð (eth), +ʃ (esh), and ʒ (yogh) are traditional alternative spellings. +The retroflexes have a period in the second place, because an +alternative traditional spelling is to write a dot under +them. The code for ɾ is an abbreviation for fishhook. + + +* Diacritics + +- In line + +input | example | description +------+---------+--------------------- +\\:f | ː | phonetic length sign +\\'1 | ˈ | primary stress +\\'2 | ˌ | secondary stress +\\cn | t̚ | unreleased plosive +\\rh | ɜ˞ | rhotacized vowel + +- Understrikes + +input | example | description +------+---------+-------------------------------- +\\|v | n̩ | syllabic consonant +\\0v | b̥ | voiceless +\\Tv | o̞ | lowered +\\T^ | o̝ | raised +\\T( | o̘ | advanced tongue root +\\T) | o̙ | retracted tongue root +\\-v | e̱ | backed +\\+v | o̟ | fronted +\\:v | o̤ | breathy voice +\\~v | o̰ | creaky voice +\\Nv | d̪ | dental (as opposed to alveolar) +\\Uv | d̺ | apical +\\Dv | d̻ | laminal +\\nv | u̯ | nonsyllabic +\\e3v | e̹ | slightly rounded +\\cv | u̜ | slightly unrounded + +- Overstrikes + +input | example | description +------+---------+-------------------------------------------- +\\0^ | ɣ̊ | voiceless +\\'^ | | high tone +\\`^ | | low tone +\\-^ | | mid tone +\\~^ | | nasalized +\\v^ | | rising tone +\\^^ | | falling tone +\\:^ | | centralized +\\N^ | | short +\\li | k͡p | simultaneous articulation or single segment +" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ;; plosives + ("\\t." ?ʈ) ; retroflex + ("\\d." ?ɖ) ; voiced retroflex + ("\\j-" ?ɟ) ; voiced palatal + ("\\gs" ?ɡ) ; voiced velar + ("\\gc" ?ɢ) ; voiced uvular + ("\\?-" ?ʡ) ; epiglottal + ("\\?g" ?ʔ) ; glottal + + ;; nasals + ("\\mj" ?ɱ) ; labiodental + ("\\n." ?ɳ) ; retroflex + ("\\nj" ?ɲ) ; palatal + ("\\ng" ?ŋ) ; velar + ("\\nc" ?ɴ) ; uvular + + ;; fricatives + ("\\ff" ?ɸ) ; bilabial + ("\\bf" ?β) ; voiced bilabial + ("\\tf" ?θ) ; labiodental + ("\\dh" ?ð) ; voiced labiodental + ("\\sh" ?ʃ) ; postalveolar + ("\\l-" ?ɬ) ; alv. lateral + ("\\lz" ?ɮ) ; voiced alv. lateral + ("\\zh" ?ʒ) ; voiced postalveolar + ("\\s." ?ʂ) ; retroflex + ("\\z." ?ʐ) ; voiced retroflex + ("\\cc" ?ɕ) ; alveolo-palatal + ("\\zc" ?ʑ) ; voiced alveolo-palatal + ("\\c," ?ç) ; palatal + ("\\jc" ?ʝ) ; voiced palatal + ("\\wt" ?ʍ) ; labial-velar + ("\\gf" ?ɣ) ; voiced velar + ("\\cf" ?χ) ; uvular + ("\\ri" ?ʁ) ; voiced uvular + ("\\h-" ?ħ) ; pharyngeal + ("\\9e" ?ʕ) ; voiced pharyngeal + ("\\hc" ?ʜ) ; epiglottal + ("\\9-" ?ʢ) ; voiced epiglottal + ("\\h^" ?ɦ) ; voiced glottal + + ;; approximants + ("\\vs" ?ʋ) ; labiodental + ("\\rt" ?ɹ) ; alveolar + ("\\r." ?ɻ) ; retroflex + ("\\ht" ?ɥ) ; labial-palatal + ("\\ml" ?ɰ) ; velar + + ;; trills + ("\\bc" ?ʙ) ; bilabial + ("\\rc" ?ʀ) ; uvular + + ;; taps or flaps + ; ⱱ -- labiodental + ("\\fh" ?ɾ) ; alveolar + ("\\rl" ?ɺ) ; alv.-lateral + ("\\f." ?ɽ) ; retroflex + + ;; lateral approx. + ("\\l." ?ɭ) ; retroflex + ("\\yt" ?ʎ) ; palatal + ("\\lc" ?ʟ) ; velar + + ;; implosives + ("\\b^" ?ɓ) ; bilabial + ("\\d^" ?ɗ) ; alveolar + ("\\j^" ?ʄ) ; palatal + ("\\g^" ?ɠ) ; velar + ("\\G^" ?ʛ) ; uvular + + ;; clicks + ("\\O." ?ʘ) ; bilabial + ("\\|1" ?ǀ) ; dental + ("\\|2" ?ǁ) ; alv. lateral + ("\\|-" ?ǂ) ; postalveolar + + ;; other + ("\\l~" ?ɫ) ; velarized l + ("\\hj" ?ɧ) ; post-alveolar & velar fricative + + ;; vowels + ("\\i-" ?ɨ) + ("\\u-" ?ʉ) + + ("\\mt" ?ɯ) + + ("\\ic" ?ɪ) + ("\\yc" ?ʏ) + + ("\\hs" ?ʊ) + + ("\\o/" ?ø) + ("\\e-" ?ɘ) + ("\\o-" ?ɵ) + ("\\rh" ?ɤ) + + ("\\sw" ?ə) + + ("\\ef" ?ɛ) + ("\\oe" ?œ) + ("\\er" ?ɜ) + ("\\kb" ?ɞ) + ("\\vt" ?ʌ) + ("\\ct" ?ɔ) + + ("\\ae" ?æ) + ("\\at" ?ɐ) + + ("\\Oe" ?ɶ) + ("\\as" ?ɑ) + ("\\ab" ?ɒ) + + ("\\sr" ?ɚ) + + ;; diacritics + ("\\:f" ?ː) ; phonetic length sign + ("\\'1" ?ˈ) ; primary stress + ("\\'2" ?ˌ) ; secondary stress + ("\\cn" #x031A) ; t̚ unreleased plosive + ("\\rh" #x02DE) ; ɜ˞ rhotacized vowel + + ("\\|v" #x0329) ; n̩ syllabic consonant + ("\\0v" #x0325) ; b̥ voiceless + ("\\Tv" #x031E) ; o̞ lowered + ("\\T^" #x031D ) ; o̝ raised + ("\\T(" #x0318) ; o̘ advanced tongue root + ("\\T)" #x0319) ; o̙ retracted tongue root + ("\\-v" #x0331) ; e̱ backed + ("\\+v" #x031F) ; o̟ fronted + ("\\:v" #x0324) ; o̤ breathy voice + ("\\~v" #x0330) ; o̰ creaky voice + ("\\Nv" #x032A) ; d̪ dental (as opposed to alveolar) + ("\\Uv" #x033A) ; d̺ apical + ("\\Dv" #x033B) ; d̻ laminal + ("\\nv" #x032F) ; u̯ nonsyllabic + ("\\e3v" #x0339) ; e̹ slightly rounded + ("\\cv" #x031C) ; u̜ slightly unrounded + + ("\\0^" #x030A) ; ɣ̊ voiceless + ("\\'^" #x0301) ; high tone + ("\\`^" #x0300) ; low tone + ("\\-^" #x0304) ; mid tone + ("\\~^" #x0303) ; nasalized + ("\\v^" #x030C) ; rising tone + ("\\^^" #x0302) ; falling tone + ("\\:^" #x0308) ; centralized + ("\\N^" #x0306) ; short + ("\\li" #x0361) ; k͡p simultaneous articulation or single segment + ) + +;; Local Variables: +;; coding: utf-8 +;; End: + +;;; ipa-praat.el ends here diff --git a/lisp/leim/quail/ipa.el b/lisp/leim/quail/ipa.el new file mode 100644 index 00000000000..8b921faa1e2 --- /dev/null +++ b/lisp/leim/quail/ipa.el @@ -0,0 +1,519 @@ +;;; ipa.el --- Quail package for inputting IPA characters -*-coding: utf-8;-*- + +;; Copyright (C) 2009-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 +;; Licensed to the Free Software Foundation. + +;; Keywords: multilingual, input method, IPA + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) +(eval-when-compile (require 'cl-lib)) + +(quail-define-package + "ipa" "IPA" "IPA" t + "International Phonetic Alphabet for English, French, German and Italian + +Upside-down characters are obtained by a preceding slash (/)." + nil nil nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("i" ?i) + ("I" ?ɪ) + ("e" ?e) + ("/3" ?ɛ) + ("E" ?ɛ) + ("ae" ?æ) + ("a" ?a) + ("i-" ?ɨ) + ("/e" ?ə) + ("/a" ?ɐ) + ("/m" ?ɯ) + ("&" ?ɤ) + ("/v" ?ʌ) + ("A" ?ɑ) + ("o|" ?ɑ) + ("y" ?y) + ("Y" ?ʏ) + ("o/" ?ø) + ("oe" ?œ) + ("OE" ?ɶ) + ("u-" ?ʉ) + ("o-" ?ɵ) + ("u" ?u) + ("U" ?ʊ) + ("o" ?o) + ("/c" ?ɔ) + ("/A" ?ɒ) + ("|o" ?ɒ) + ("e-" ?ɚ) + ("e|" ?ɚ) + ("/3~" ["ɛ̃"]) + ("E~" ["ɛ̃"]) + ("A~" ["ɑ̃"]) + ("oe~" ["œ̃"]) + ("/c~" ["ɔ̃"]) + ("p" ?p) + ("b" ?b) + ("t" ?t) + ("d" ?d) + ("k" ?k) + ("g" ?ɡ) + ("f" ?f) + ("v" ?v) + ("th" ?θ) + ("dh" ?ð) + ("s" ?s) + ("z" ?z) + ("sh" ?ʃ) + ("tsh" ["ʧ" "tʃ" "t⁀ʃ"]) + ("zh" ?ʒ) + ("3" ?ʒ) + ("c," ?ç) + ("x" ?x) + ("/R" ?ʁ) + ("h" ?h) + ("m" ?m) + ("n" ?n) + ("gn" ?ɲ) + ("ng" ?ŋ) + ("r" ?r) + ("R" ?ʀ) + ("/r" ?ɹ) + ("j" ?j) + ("l" ?l) + ("/y" ?ʎ) + ("L" ?ʟ) + ("/h" ?ɥ) + ("w" ?w) + ("M" ?ʍ) + ("'" ?ˈ) + ("`" ?ˌ) + (":" ?ː)) + +(quail-define-package + "ipa-kirshenbaum" "IPA" "IPA-K" t + "The International Phonetic Alphabet, using Kirshenbaum ASCII translit. + +Kirshenbaum IPA is an ASCII transliteration of the phonetic alphabet, common +in the Usenet groups `sci.lang' and `alt.usage.english'. This input method +allows you to type Kirshenbaum on your ASCII-capable keyboard, producing the +corresponding actual IPA characters in your editor. + +See http://www.kirshenbaum.net/IPA/ascii-ipa.pdf for full details of the +transliteration. + +A caveat with regard to that document; while XEmacs currently preserves +Unicode diacritics on reading and emitting them, it displays them, +incorrectly, as separate from the modified glyphs.") + +(quail-define-rules + ("g" "ɡ") ;; Voiced velar plosive U+0261 + ("r" "ɹ") ;; Alveolar approximant U+0279 + ("A" "ɑ") ;; Low back unrounded vowel U+0251 + ("B" "β") ;; Voiced bilabial fricative U+03B2 + ("C" "ç") ;; Voiced palatal fricative U+00E7 + ("D" "ð") ;; Voiced dental fricative U+00F0 + ("E" "ɛ") ;; Lower-mid front unrounded vowel U+025B + ("G" "ɢ") ;; Voiced uvular stop U+0262 + ("H" "ħ") ;; Voiced pharyngeal fricative U+0127 + ("I" "ɪ") ;; Semi-high front unrounded vowel U+026A + ("J" "ɟ") ;; Voiced palatal stop U+025F + ("L" ["ɫ" ;; Voiced velar lateral U+026B + "ʟ" ;; Voiced velar lateral U+029F + "ɬ"]) ;; Voiced alveolar lateral fricative U+026C + ("M" "ɱ") ;; Labio-dental nasal U+0271 + ("N" "ŋ") ;; Velar nasal U+014B + ("O" "ɔ") ;; Low-mid back rounded vowel U+0254 + ("P" "ɸ") ;; Voiceless bilabial fricative U+0278 + ("Q" "ɣ") ;; Voiced velar fricative U+0263 + ("R" ["ʀ" ;; Alveolar trill U+0280 + "ɚ"]) ;; Rhotacized schwa U+025A + ("@<r>" "ɚ") ;; Mid central rhotacized vowel U+025A + ("S" "ʃ") ;; Voiceless postalveolar fricative U+0283 + ("tS" ["ʧ" ;; Voiceless postalveolar affricate U+02A7 + "tʃ" ;; U+0074 U+0283 + "t⁀ʃ"]) ;; U+0074 U+2040 U+0283 + ("T" "θ") ;; Voiceless dental fricative U+03B8 + ("U" "ʊ") ;; Semi-high back rounded vowel U+028A + ("V" "ʌ") ;; Low-mid back unrounded vowel U+028C + ("W" "œ") ;; Low-mid front rounded vowel U+0153 + ("X" "χ") ;; Voiceless uvular fricative U+03C7 + ("Y" "ø") ;; Upper-mid front rounded vowel U+00F8 + ("Z" "ʒ") ;; Voiced postalveolar fricative U+0292 + ("?" "ʔ") ;; Glottal stop U+0294 + ("@" "ə") ;; Mid central unrounded vowel (schwa) U+0259 + ("&" "æ") ;; Low front unrounded vowel U+00E6 + ("*" "ɾ") ;; Voiced alveolar flap U+027E + + ("a~" "ã") ;; Low central unrounded vowel, nasal U+00E3 + ("o~" "õ") ;; Upper-mid back rounded vowel, nasal U+00F5 + ("u~" "ũ") ;; High back rounded vowel, nasal U+0169 + ("~" "̃") ;; +Nasalized modifier U+0303 + (":" "ː") ;; +Long modifier U+02D0 + ("-" "̩") ;; +Syllabic modifier U+0329 + ("." "̣") ;; +Retroflex modifier U+0323 + ("`" "ʼ") ;; +Ejective modifier U+02BC + ("[" "̪") ;; +Dental modifier U+032A + (";" "ʲ") ;; +Palatalized modifier U+02B2 + ("<H>" "̴") ;; +Pharyngealized modifier U+0334 + ("<h>" "ʰ") ;; +Aspirated modifier U+02B0 + ("<o>" ["̥" ;; +Voiceless modifier U+0325 + "˚"]) ;; +Unexploded modifier U+02DA + ("<r>" "ʳ") ;; +Rhotacized modifier U+02B3 + ("<w>" "ʷ") ;; +Labialized modifier U+02B7 + ("<?>" "ʱ") ;; +Murmured modifier U+02B1 + + ("b<trl>" "ʙ") ;; Bilabial trill U+0299 + ("b`" "ɓ") ;; Bilabial implosive U+0253 + ("p!" "ʘ") ;; Bilabial click U+0298 + ("r<lbd>" "ʋ") ;; Labio-dental approximant U+028B + ("d`" "ɗ") ;; Dental implosive U+0257 + ("t!" "ʇ") ;; Dental click U+0287 + ("s<lat>" "ɬ") ;; Voiceless alveolar lateral fricative U+026C + ("z<lat>" "ɮ") ;; Voiced alveolar lateral fricative U+026E + ("r<trl>" "ʀ") ;; Alveolar trill U+0280 + + ("*<lat>" "ɺ") ;; Voiced alveolar lateral flap U+027A + ("c!" "ʗ") ;; Alveolar click U+0297 + ("l!" "ʖ") ;; Alveolar lateral click U+0296 + ("n." "ɳ") ;; Retroflex nasal U+0273 + ("t." "ʈ") ;; Voiceless retroflex stop U+0288 + ("d." "ɖ") ;; Voiced retroflex stop U+0256 + ("s." "ʂ") ;; Voiceless retroflex fricative U+0282 + ("z." "ʐ") ;; Voiceless retroflex fricative U+0290 + ("r." "ɻ") ;; Retroflex approximant U+027B + ("l." "ɭ") ;; Retroflex lateral U+026D + ("*." "ɽ") ;; Retroflex flap U+027D + + ("C<vcd>" "ʝ") ;; Voiced palatal fricative U+029D + ("j<rnd>" "ɥ") ;; Rounded palatal approximant U+0265 + ("l^" "ʎ") ;; Palatal lateral U+028E + ("J`" "ʄ") ;; Palatal implosive U+0284 + ("j<vel>" "ɰ") ;; Velar approximant U+0270 + ("g`" "ɠ") ;; Velar implosive U+0260 + ("k!" "ʞ") ;; Velar click U+029E + + ("n<lbv>" ["n⁀g"]) ;; Labio-velar nasal + ("t<lbv>" ["k⁀p"]) ;; Voiceless labio-velar stop + + ;; "n<lbv> for "gb" WITH U+2030 CHARACTER TIE was ambiguous and + ;; misleading. I _believe_ this is what was meant instead. + ("d<lbv>" ["g⁀b"]) ;; Voiced labio-velar stop. + + ("w<vls>" "ʍ") ;; Voiceless labio-velar stop U+028D + ("n\"" "ɴ") ;; Uvular nasal U+0274 + ("g\"" "ʁ") ;; Voiced uvular fricative U+0281 + ("r\"" "ʀ") ;; Uvular trill U+0280 + ("G`" "ʛ") ;; Voiced uvular implosive U+029B + ("H<vcd>" "ʕ") ;; Voiced pharyngeal fricative U+0295 + + ("h<?>" "ɦ") ;; Murmured glottal fricative U+0266 + ("I." "ʏ") ;; Semi-high front rounded vowel U+028F + ("&." "ɶ") ;; Low front unrounded vowel U+0276 + + ("i\"" "ɨ") ;; High central unrounded vowel U+0268 + ("u\"" "ʉ") ;; High central rounded vowel U+0289 + ("@<umd>" "ɘ") ;; Upper-mid central unrounded vowel U+0258 + + ("R<umd>" "ɝ") ;; Upper-mid central rhotacized vowel U+025D + + ("@." "ɵ") ;; Mid central rounded vowel U+0275 + ("V\"" "ɜ") ;; Lower-mid central unrounded vowel U+025C + ("O\"" "ɞ") ;; Lower-mid central rounded vowel U+025E + ("u-" "ɯ") ;; High back unrounded vowel U+026F + ("o-" "ɤ") ;; Upper-mid back unrounded vowel U+0264 + ("A." "ɒ")) ;; Lower back rounded vowel U+0252 + + +(defconst ipa-x-sampa-implosive-submap + '(("b_<" ?ɓ) ;; Voiced bilabial implosive U+0253 + ("d_<" ?ɗ) ;; Voiced alveolar implosive U+0257 + ("g_<" ?ɠ) ;; Voiced velar implosive U+0260 + ("G\\_<" ?ʛ) ;; Voiced uvular implosive U+029B + ("J\\_<" ?ʄ)) ;; Voiced palatal implosive U+0284 + "A map from the X-SAMPA for some implosive consonants to characters. +This is used because their X-SAMPA syntax is quasi-diacritic, but the +corresponding Unicode characters themselves don't have diacritics, they are +separate code points. So we need to implement some extra logic that isn't +normally provided by Quail.") + +;; On XEmacs, with the supplied X-SAMPA data, this function is capably +;; implemented with: +;; +;; (list (vector (concat to-prepend quail-keymap))) +;; +;; Supporting GNU Emacs too makes it a good deal more complicated. + +(defun ipa-x-sampa-prepend-to-keymap-entry (to-prepend quail-keymap) + "Return QUAIL-KEYMAP with TO-PREPEND at the beginning of each result. + +QUAIL-KEYMAP is a cons that satisfies `quail-map-p'; TO-PREPEND is a +string." + (when (consp quail-keymap) (setq quail-keymap (cdr quail-keymap))) + (if (or (integerp quail-keymap) + (and (fboundp 'characterp) (characterp quail-keymap))) + (setq quail-keymap (list (string quail-keymap))) + (if (stringp quail-keymap) + (setq quail-keymap (list quail-keymap)) + (cl-assert (vectorp quail-keymap) t) + (setq quail-keymap (append quail-keymap nil)))) + (list + (apply 'vector + (mapcar + #'(lambda (entry) + (cl-assert (char-or-string-p entry) t) + (format "%s%s" to-prepend + (if (integerp entry) (string entry) entry))) + quail-keymap)))) + +(defun ipa-x-sampa-underscore-implosive (input-string length) + "Return keymap with IPA implosives, for INPUT-STRING, length LENGTH. + +The implosive consonants in X-SAMPA are represented with more or less a +diacritic syntax, but the property +implosive in the IPA is expressed using +separate characters, and not using a diacritic. This function works around +the confusion that implies when generating IPA from X-SAMPA; it returns a +Quail map that is a copy of the map for `_', but with all the DIACRITIC +entries changed to return the diacritic together with the base character, +and with the map to the implosive added to its end. + +Like all `quail-defrule'-assigned functions, this will be called once for +each particular sequence of keys, the first time the user types that +particular sequence of keys, and the result will be cached by Quail." + (let* ((input-string (substring input-string 0 (or length))) + (underscore-map (copy-tree (quail-lookup-key "_"))) + (split-input (split-string input-string "_")) + (pre-underscore (car split-input)) + (pre-underscore-map (quail-lookup-key pre-underscore)) + (x-sampa-submap-entry + (assoc (format "%s<" input-string) ipa-x-sampa-implosive-submap)) + underscore-map-entry) + (if (and (consp pre-underscore-map) (car pre-underscore-map)) + (setq pre-underscore-map (car pre-underscore-map)) + (setq pre-underscore-map pre-underscore)) + (unless (stringp pre-underscore-map) + (setq pre-underscore-map (string pre-underscore-map))) + (dolist (underscoring underscore-map) + (cond ((null underscoring)) + ((eq (length underscoring) 2) + (setq underscore-map-entry (cl-second underscoring)) + (setcdr underscoring (ipa-x-sampa-prepend-to-keymap-entry + pre-underscore-map underscore-map-entry))) + ((eq (length underscoring) 3) + (setq underscore-map-entry (cl-second (cl-third underscoring))) + (setcdr (cl-third underscoring) + (ipa-x-sampa-prepend-to-keymap-entry + pre-underscore-map underscore-map-entry))) + (t + (cl-assert (null t) t + "Can't handle subtrees of this level right now.")))) + (append underscore-map (list (list ?< (cl-second x-sampa-submap-entry)))))) + +(quail-define-package + "ipa-x-sampa" "IPA" "IPA-X" t + "The International Phonetic Alphabet, using J.C. Wells' X-SAMPA. + +X-SAMPA is an ASCII transliteration of the IPA, normally used for data +exchange in environments where Unicode is not available. This input method +uses this transliteration to allow you to produce the IPA in your editor +with a keyboard that's limited to ASCII. + +See http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf for a full definition +of the mapping. A caveat with regard to that document; while XEmacs +currently preserves Unicode diacritics on reading and emitting them, it +displays them, incorrectly, as separate from the modified glyphs.") + +(quail-define-rules + ;; Table taken from http://en.wikipedia.org/wiki/X-SAMPA, checked with + ;; http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf + + ("d`" "ɖ") ;; Voiced retroflex plosive U+0256 + ("g" "ɡ") ;; Voiced velar plosive U+0261 + ("h\\" "ɦ") ;; Voiced glottal fricative U+0266 + ("j\\" "ʝ") ;; Voiced palatal fricative U+029D + ("l`" "ɭ") ;; Retroflex lateral approximant U+026D + ("l\\" "ɺ") ;; Alveolar lateral flap U+027A + ("n`" "ɳ") ;; Retroflex nasal U+0273 + ("p\\" "ɸ") ;; Voiceless bilabial fricative U+0278 + ("r`" "ɽ") ;; Retroflex flap U+027D + ("r\\" "ɹ") ;; Alveolar approximant U+0279 + ("r\\`" "ɻ") ;; Retroflex approximant U+027B + ("s`" "ʂ") ;; Voiceless retroflex fricative U+0282 + ("s\\" "ɕ") ;; Voiceless alveolo-palatal fricative U+0255 + ("t`" "ʈ") ;; Voiceless retroflex plosive U+0288 + ("v\\" "ʋ") ;; Labiodental approximant U+028B + ("x\\" "ɧ") ;; Voiceless palatal-velar fricative U+0267 + ("z`" "ʐ") ;; Voiced retroflex fricative U+0290 + ("z\\" "ʑ") ;; Voiced alveolo-palatal fricative U+0291 + ("A" "ɑ") ;; Open back unrounded vowel U+0251 + ("B" "β") ;; Voiced bilabial fricative U+03B2 + ("B\\" "ʙ") ;; Bilabial trill U+0299 + ("C" "ç") ;; Voiceless palatal fricative U+00E7 + ("D" "ð") ;; Voiced dental fricative U+00F0 + ("E" "ɛ") ;; Open-mid front unrounded vowel U+025B + ("F" "ɱ") ;; Labiodental nasal U+0271 + ("G" "ɣ") ;; Voiced velar fricative U+0263 + ("G\\" "ɢ") ;; Voiced uvular plosive U+0262 + ("H" "ɥ") ;; Labial-palatal approximant U+0265 + ("H\\" "ʜ") ;; Voiceless epiglottal fricative U+029C + ("I" "ɪ") ;; Near-close near-front unrounded vowel U+026A + ("I\\" "Ɨ") ;; Central lax close unrounded vowel U+0197 + ("J" "ɲ") ;; Palatal nasal U+0272 + ("J\\" "ɟ") ;; Voiceless palatal plosive U+025F + ("K" "ɬ") ;; Voiceless alveolar lateral fricative U+026C + ("K\\" "ɮ") ;; Voiced alveolar lateral fricative U+026E + ("L" "ʎ") ;; Palatal lateral approximant U+028E + ("L\\" "ʟ") ;; Velar lateral approximant U+029F + ("M" "ɯ") ;; Close back unrounded vowel U+026F + ("M\\" "ɰ") ;; Velar approximant U+0270 + ("N" "ŋ") ;; Velar nasal U+014B + ("N\\" "ɴ") ;; Uvular nasal U+0274 + ("O" "ɔ") ;; Open-mid back rounded vowel U+0254 + ("O\\" "ʘ") ;; Bilabial click U+0298 + ("P" "ʋ") ;; Labiodental approximant U+028B + ("Q" "ɒ") ;; Open back rounded vowel U+0252 + ("R" "ʁ") ;; Voiced uvular fricative U+0281 + ("R\\" "ʀ") ;; Uvular trill U+0280 + ("S" "ʃ") ;; Voiceless postalveolar fricative U+0283 + ("tS" ["ʧ" ;; Voiceless postalveolar affricate U+02A7 + "tʃ" ;; U+0074 U+0283 + "t⁀ʃ"]) ;; U+0074 U+2040 U+0283 + ("T" "θ") ;; Voiceless dental fricative U+03B8 + ("U" "ʊ") ;; Near-close near-back rounded vowel U+028A + ("U\\" ["ʊ̵"]) ;; Central lax close rounded vowel, U+028A U+0335 + ("V" "ʌ") ;; Open-mid back unrounded vowel U+028C + ("W" "ʍ") ;; Voiceless labial-velar fricative U+028D + ("X" "χ") ;; Voiceless uvular fricative U+03C7 + ("X\\" "ħ") ;; Voiceless pharyngeal fricative U+0127 + ("Y" "ʏ") ;; Near-close near-front rounded vowel U+028F + ("Z" "ʒ") ;; Voiced postalveolar fricative U+0292 + + ("\"" "ˈ") ;; Primary stress U+02C8 + ("%" "ˌ") ;; Secondary stress U+02CC + (":" "ː") ;; Long U+02D0 + (":\\" "ˑ") ;; Half-long U+02D1 + ("@" "ə") ;; Schwa U+0259 + ("@\\" "ɘ") ;; Close-mid central unrounded vowel U+0258 + ("@`" "ɚ") ;; Rhotacized schwa U+025A + ("{" "æ") ;; Near-open front unrounded vowel U+00E6 + ("}" "ʉ") ;; Close central rounded vowel U+0289 + ("1" "ɨ") ;; Close central unrounded vowel U+0268 + ("2" "ø") ;; Close-mid front rounded vowel U+00F8 + ("3" "ɜ") ;; Open-mid central unrounded vowel U+025C + ("3\\" "ɞ") ;; Open-mid central rounded vowel U+025E + ("4" "ɾ") ;; Alveolar flap U+027E + ("5" "ɫ") ;; Velarized alveolar lateral approximant U+026B + ("6" "ɐ") ;; Near-open central vowel U+0250 + ("7" "ɤ") ;; Close-mid back unrounded vowel U+0264 + ("8" "ɵ") ;; Close-mid central rounded vowel U+0275 + ("9" "œ") ;; Open-mid front rounded vowel U+0153 + ("&" "ɶ") ;; Open front rounded vowel U+0276 + ("?" "ʔ") ;; Glottal stop U+0294 + ("?\\" "ʕ") ;; Voiced pharyngeal fricative U+0295 + ;; The undefined escape character, ignored. + ;; Indeterminacy in French vowels, ignored. + ;; Begin nonsegmental notation, ignored. + ("<\\" "ʢ") ;; Voiced epiglottal fricative U+02A2 + ;; End nonsegmental notation, ignored. + (">\\" "ʡ") ;; Epiglottal plosive U+02A1 + ("^" "↑") ;; Upstep U+2191 + ("!" "↓") ;; Downstep U+2193 + ("!\\" "ǃ") ;; Postalveolal click U+01C3 + ("\\" "ǀ") ;; Dental click U+01C0 + ("\\|\\" "ǁ") ;; Lateral alveolar click U+01C1 + ("=\\" "ǂ") ;; Palatal click U+01C2 + ("-\\" "̮") ;; Linking mark U+032E + + ;; Diacritics. Note that XEmacs doesn't yet have composed characters, so we + ;; can input them, but they won't display properly. If you send email using + ;; them, and the recipient's client is capable, they will get through, + ;; though. + + ("_\"" "̈") ;; Centralized U+0308 + ("_+" "̟") ;; Advanced U+031F + ("_-" "̠") ;; Retracted U+0320 + ("_/" "ˇ") ;; Rising tone U+02C7 + ("_0" "̥") ;; Voiceless U+0325 + ("_=" "̩") ;; Syllabic U+0329 + ("=" "̩") ;; Syllabic U+0329 + ("_>" "ʼ") ;; Ejective U+02BC + ("_?\\" "ˤ") ;; Pharyngealized U+02E4 + ("_\\" "ˆ") ;; Falling Tone U+02C6 + ("_^" "̯") ;; Non-syllabic U+032F + ("_}" "̚") ;; No audible release U+031A + ;; ` is alternatively; retroflexion in consonants + ("`" "˞") ;; Rhotacization in vowels U+02DE + ("_~" "̃") ;; Nasalization U+0303 + ("~" "̃") ;; Nasalization U+0303 + ("_A" "̘") ;; Advanced tongue root U+0318 + ("_a" "̺") ;; Apical U+033A + ("_B" "̏") ;; Extra low tone U+030F + ;; _B_L omitted, no Unicode code point for "low rising tone." + ("_c" "̜") ;; Less rounded U+031C + ("_d" "̪") ;; Dental U+032A + ("_e" "̴") ;; Velarized or pharyngeal U+0334 + + ("<F>" "↙") ;; Global fall; SOUTH EAST ARROW; may be a bit smaller than + ;; intended. + ("_F" "̂") ;; Falling tone U+0302 + ("_G" "ˠ") ;; Velarized U+02E0 + ("_H" "́") ;; High tone U+0301 + ;; "_H_T omitted, no Unicode code point for "high rising tone" + ("_h" "ʰ") ;; Aspirated U+02B0 + ("_j" "ʲ") ;; Palatalized U+02B2 + ("'" "ʲ") ;; Palatalized U+02B2 + ("_k" "̰") ;; Creaky voice U+0330 + ("_L" "̀") ;; Low tone U+0300 + ("_l" "ˡ") ;; Lateral release U+02E1 + ("_M" "̄") ;; Mid tone U+0304 + ("_m" "̻") ;; Laminal U+033B + ("_N" "̼") ;; Linguolabial U+033C + ("_n" "ⁿ") ;; Nasal release U+207F + ("_O" "̹") ;; More rounded U+0339 + ("_o" "̞") ;; Lowered U+031E + ("_q" "̙") ;; Retracted tongue root U+0319 + ("<R>" "↗") ;; NORTH EAST ARROW; may be a bit smaller than intended. + ("_R" "̌") ;; Haček, caron, rising tone. U+030C + ;; _R_F omitted, apparently there's no corresponding Unicode entry. + ("_r" "̝") ;; Raised U+031D + ("_T" "̋") ;; Extra high tone U+030B + ("_t" "̤") ;; Breathy voice U+0324 + ("_v" "̬") ;; Voiced U+032C + ("_w" "ʷ") ;; Labialized U+02B7 + ("_X" "̆") ;; Extra-short U+0306 + ("_x" "̽")) ;; Mid-centralized U+033D + +;; Putting in place rules for the implosives like for the others above +;; breaks the "_<diacritic>" rules for b, d, g, G and J a little--you need +;; to interrupt Quail before typing the underscore if you want the +;; diacritic. To avoid this, handle the input specially with the function +;; ipa-x-sampa-underscore-implosive. + +(dolist (implosive-x-sampa (mapcar 'car ipa-x-sampa-implosive-submap)) + (setq implosive-x-sampa (car (split-string implosive-x-sampa "_"))) + (quail-defrule (format "%s_" implosive-x-sampa) + 'ipa-x-sampa-underscore-implosive)) + +;;; ipa.el ends here diff --git a/lisp/leim/quail/japanese.el b/lisp/leim/quail/japanese.el new file mode 100644 index 00000000000..6dd19e9c60a --- /dev/null +++ b/lisp/leim/quail/japanese.el @@ -0,0 +1,552 @@ +;;; japanese.el --- Quail package for inputting Japanese -*-coding: iso-2022-7bit;-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Japanese + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'kkc) + +(defvar quail-japanese-use-double-n nil + "If non-nil, use type \"nn\" to insert $B$s(B.") + +;; Update Quail translation region while considering Japanese bizarre +;; translation rules. +(defun quail-japanese-update-translation (control-flag) + (if (null control-flag) + (setq quail-current-str + (if (/= (aref quail-current-key 0) ?q) + (or quail-current-str quail-current-key) + "")) + (if (integerp control-flag) + (let ((keylen (length quail-current-key))) + (cond ((= control-flag 0) + (setq quail-current-str (aref quail-current-key 0) + control-flag t)) + ((= (aref quail-current-key 0) ?n) + (setq quail-current-str ?$B$s(B) + (if (and quail-japanese-use-double-n + (> keylen 0) + (= (aref quail-current-key 1) ?n)) + (setq control-flag t))) + ((and (> keylen 1) + (= (aref quail-current-key 0) (aref quail-current-key 1))) + (setq quail-current-str ?$B$C(B)) + (t + (setq quail-current-str (aref quail-current-key 0)))) + (if (integerp control-flag) + (setq unread-command-events + (string-to-list + (substring quail-current-key control-flag))))))) + control-flag) + +;; Convert Hiragana <-> Katakana in the current translation region. +(defun quail-japanese-toggle-kana () + (interactive) + (setq quail-translating nil) + (let ((start (overlay-start quail-conv-overlay)) + (end (overlay-end quail-conv-overlay))) + (save-excursion + (goto-char start) + (if (re-search-forward "\\cH" end t) + (japanese-katakana-region start end) + (japanese-hiragana-region start end))) + (setq quail-conversion-str + (buffer-substring (overlay-start quail-conv-overlay) + (overlay-end quail-conv-overlay))))) + +;; Convert Hiragana in the current translation region to Kanji by KKC +;; (Kana Kanji Converter) utility. +(defun quail-japanese-kanji-kkc () + (interactive) + (when (= (char-before (overlay-end quail-conv-overlay)) ?n) + ;; The last char is `n'. We had better convert it to `$B$s(B' + ;; before kana-kanji conversion. + (goto-char (1- (overlay-end quail-conv-overlay))) + (insert ?$B$s(B) + (delete-char 1)) + (let* ((from (copy-marker (overlay-start quail-conv-overlay))) + (len (- (overlay-end quail-conv-overlay) from))) + (quail-delete-overlays) + (setq quail-current-str nil) + (unwind-protect + (let ((result (kkc-region from (+ from len)))) + (move-overlay quail-conv-overlay from (point)) + (setq quail-conversion-str (buffer-substring from (point))) + (if (= (+ from result) (point)) + (setq quail-converting nil)) + (setq quail-translating nil)) + (set-marker from nil)))) + +(defun quail-japanese-self-insert-and-switch-to-alpha (key idx) + (quail-delete-region) + (setq unread-command-events (list (aref key (1- idx)))) + (quail-japanese-switch-package "q" 1)) + +(defvar quail-japanese-switch-table + '((?z . "japanese-zenkaku") + (?k . "japanese-hankaku-kana") + (?h . "japanese") + (?q . ("japanese-ascii")))) + +(defvar quail-japanese-package-saved nil) +(make-variable-buffer-local 'quail-japanese-package-saved) +(put 'quail-japanese-package-saved 'permanent-local t) + +(defun quail-japanese-switch-package (key idx) + (quail-delete-region) + (setq quail-current-str nil + quail-converting nil + quail-conversion-str "") + (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table)))) + (if (null pkg) + (quail-error "No package to be switched") + (if (stringp pkg) + (activate-input-method pkg) + (if (string= (car pkg) current-input-method) + (if quail-japanese-package-saved + (activate-input-method quail-japanese-package-saved)) + (setq quail-japanese-package-saved current-input-method) + (activate-input-method (car pkg)))))) + (throw 'quail-tag nil)) + +(defvar quail-japanese-transliteration-rules + '(( "a" "$B$"(B") ( "i" "$B$$(B") ( "u" "$B$&(B") ( "e" "$B$((B") ( "o" "$B$*(B") + ("ka" "$B$+(B") ("ki" "$B$-(B") ("ku" "$B$/(B") ("ke" "$B$1(B") ("ko" "$B$3(B") + ("sa" "$B$5(B") ("si" "$B$7(B") ("su" "$B$9(B") ("se" "$B$;(B") ("so" "$B$=(B") + ("ta" "$B$?(B") ("ti" "$B$A(B") ("tu" "$B$D(B") ("te" "$B$F(B") ("to" "$B$H(B") + ("na" "$B$J(B") ("ni" "$B$K(B") ("nu" "$B$L(B") ("ne" "$B$M(B") ("no" "$B$N(B") + ("ha" "$B$O(B") ("hi" "$B$R(B") ("hu" "$B$U(B") ("he" "$B$X(B") ("ho" "$B$[(B") + ("ma" "$B$^(B") ("mi" "$B$_(B") ("mu" "$B$`(B") ("me" "$B$a(B") ("mo" "$B$b(B") + ("ya" "$B$d(B") ("yu" "$B$f(B") ("yo" "$B$h(B") + ("ra" "$B$i(B") ("ri" "$B$j(B") ("ru" "$B$k(B") ("re" "$B$l(B") ("ro" "$B$m(B") + ("la" "$B$i(B") ("li" "$B$j(B") ("lu" "$B$k(B") ("le" "$B$l(B") ("lo" "$B$m(B") + ("wa" "$B$o(B") ("wi" "$B$p(B") ("wu" "$B$&(B") ("we" "$B$q(B") ("wo" "$B$r(B") + ("n'" "$B$s(B") + ("ga" "$B$,(B") ("gi" "$B$.(B") ("gu" "$B$0(B") ("ge" "$B$2(B") ("go" "$B$4(B") + ("za" "$B$6(B") ("zi" "$B$8(B") ("zu" "$B$:(B") ("ze" "$B$<(B") ("zo" "$B$>(B") + ("da" "$B$@(B") ("di" "$B$B(B") ("du" "$B$E(B") ("de" "$B$G(B") ("do" "$B$I(B") + ("ba" "$B$P(B") ("bi" "$B$S(B") ("bu" "$B$V(B") ("be" "$B$Y(B") ("bo" "$B$\(B") + ("pa" "$B$Q(B") ("pi" "$B$T(B") ("pu" "$B$W(B") ("pe" "$B$Z(B") ("po" "$B$](B") + + ("kya" ["$B$-$c(B"]) ("kyu" ["$B$-$e(B"]) ("kye" ["$B$-$'(B"]) ("kyo" ["$B$-$g(B"]) + ("sya" ["$B$7$c(B"]) ("syu" ["$B$7$e(B"]) ("sye" ["$B$7$'(B"]) ("syo" ["$B$7$g(B"]) + ("sha" ["$B$7$c(B"]) ("shu" ["$B$7$e(B"]) ("she" ["$B$7$'(B"]) ("sho" ["$B$7$g(B"]) + ("cha" ["$B$A$c(B"]) ("chu" ["$B$A$e(B"]) ("che" ["$B$A$'(B"]) ("cho" ["$B$A$g(B"]) + ("tya" ["$B$A$c(B"]) ("tyu" ["$B$A$e(B"]) ("tye" ["$B$A$'(B"]) ("tyo" ["$B$A$g(B"]) + ("nya" ["$B$K$c(B"]) ("nyu" ["$B$K$e(B"]) ("nye" ["$B$K$'(B"]) ("nyo" ["$B$K$g(B"]) + ("hya" ["$B$R$c(B"]) ("hyu" ["$B$R$e(B"]) ("hye" ["$B$R$'(B"]) ("hyo" ["$B$R$g(B"]) + ("mya" ["$B$_$c(B"]) ("myu" ["$B$_$e(B"]) ("mye" ["$B$_$'(B"]) ("myo" ["$B$_$g(B"]) + ("rya" ["$B$j$c(B"]) ("ryu" ["$B$j$e(B"]) ("rye" ["$B$j$'(B"]) ("ryo" ["$B$j$g(B"]) + ("lya" ["$B$j$c(B"]) ("lyu" ["$B$j$e(B"]) ("lye" ["$B$j$'(B"]) ("lyo" ["$B$j$g(B"]) + ("gya" ["$B$.$c(B"]) ("gyu" ["$B$.$e(B"]) ("gye" ["$B$.$'(B"]) ("gyo" ["$B$.$g(B"]) + ("zya" ["$B$8$c(B"]) ("zyu" ["$B$8$e(B"]) ("zye" ["$B$8$'(B"]) ("zyo" ["$B$8$g(B"]) + ("jya" ["$B$8$c(B"]) ("jyu" ["$B$8$e(B"]) ("jye" ["$B$8$'(B"]) ("jyo" ["$B$8$g(B"]) + ( "ja" ["$B$8$c(B"]) ( "ju" ["$B$8$e(B"]) ( "je" ["$B$8$'(B"]) ( "jo" ["$B$8$g(B"]) + ("bya" ["$B$S$c(B"]) ("byu" ["$B$S$e(B"]) ("bye" ["$B$S$'(B"]) ("byo" ["$B$S$g(B"]) + ("pya" ["$B$T$c(B"]) ("pyu" ["$B$T$e(B"]) ("pye" ["$B$T$'(B"]) ("pyo" ["$B$T$g(B"]) + + ("kwa" ["$B$/$n(B"]) ("kwi" ["$B$/$#(B"]) ("kwe" ["$B$/$'(B"]) ("kwo" ["$B$/$)(B"]) + ("tsa" ["$B$D$!(B"]) ("tsi" ["$B$D$#(B"]) ("tse" ["$B$D$'(B"]) ("tso" ["$B$D$)(B"]) + ( "fa" ["$B$U$!(B"]) ( "fi" ["$B$U$#(B"]) ( "fe" ["$B$U$'(B"]) ( "fo" ["$B$U$)(B"]) + ("gwa" ["$B$0$n(B"]) ("gwi" ["$B$0$#(B"]) ("gwe" ["$B$0$'(B"]) ("gwo" ["$B$0$)(B"]) + + ("dyi" ["$B$G$#(B"]) ("dyu" ["$B$I$%(B"]) ("dye" ["$B$G$'(B"]) ("dyo" ["$B$I$)(B"]) + ("xwi" ["$B$&$#(B"]) ("xwe" ["$B$&$'(B"]) ("xwo" ["$B$&$)(B"]) + + ("shi" "$B$7(B") ("tyi" ["$B$F$#(B"]) ("chi" "$B$A(B") ("tsu" "$B$D(B") ("ji" "$B$8(B") + ("fu" "$B$U(B") + ("ye" ["$B$$$'(B"]) + + ("va" ["$B%t$!(B"]) ("vi" ["$B%t$#(B"]) ("vu" "$B%t(B") ("ve" ["$B%t$'(B"]) ("vo" ["$B%t$)(B"]) + + ("xa" "$B$!(B") ("xi" "$B$#(B") ("xu" "$B$%(B") ("xe" "$B$'(B") ("xo" "$B$)(B") + ("xtu" "$B$C(B") ("xya" "$B$c(B") ("xyu" "$B$e(B") ("xyo" "$B$g(B") ("xwa" "$B$n(B") + ("xka" "$B%u(B") ("xke" "$B%v(B") + + ("1" "$B#1(B") ("2" "$B#2(B") ("3" "$B#3(B") ("4" "$B#4(B") ("5" "$B#5(B") + ("6" "$B#6(B") ("7" "$B#7(B") ("8" "$B#8(B") ("9" "$B#9(B") ("0" "$B#0(B") + + ("!" "$B!*(B") ("@" "$B!w(B") ("#" "$B!t(B") ("$" "$B!p(B") ("%" "$B!s(B") + ("^" "$B!0(B") ("&" "$B!u(B") ("*" "$B!v(B") ("(" "$B!J(B") (")" "$B!K(B") + ("-" "$B!<(B") ("=" "$B!a(B") ("`" "$B!.(B") ("\\" "$B!o(B") ("|" "$B!C(B") + ("_" "$B!2(B") ("+" "$B!\(B") ("~" "$B!1(B") ("[" "$B!V(B") ("]" "$B!W(B") + ("{" "$B!P(B") ("}" "$B!Q(B") (":" "$B!'(B") (";" "$B!((B") ("\"" "$B!I(B") + ("'" "$B!G(B") ("." "$B!#(B") ("," "$B!"(B") ("<" "$B!c(B") (">" "$B!d(B") + ("?" "$B!)(B") ("/" "$B!?(B") + + ("z1" "$B!{(B") ("z!" "$B!|(B") + ("z2" "$B"&(B") ("z@" "$B"'(B") + ("z3" "$B"$(B") ("z#" "$B"%(B") + ("z4" "$B""(B") ("z$" "$B"#(B") + ("z5" "$B!~(B") ("z%" "$B"!(B") + ("z6" "$B!y(B") ("z^" "$B!z(B") + ("z7" "$B!}(B") ("z&" "$B!r(B") + ("z8" "$B!q(B") ("z*" "$B!_(B") + ("z9" "$B!i(B") ("z(" "$B!Z(B") + ("z0" "$B!j(B") ("z)" "$B![(B") + ("z-" "$B!A(B") ("z_" "$B!h(B") + ("z=" "$B!b(B") ("z+" "$B!^(B") + ("z\\" "$B!@(B") ("z|" "$B!B(B") + ("z`" "$B!-(B") ("z~" "$B!/(B") + + ("zq" "$B!T(B") ("zQ" "$B!R(B") + ("zw" "$B!U(B") ("zW" "$B!S(B") + ("zr" "$B!9(B") ("zR" "$B!8(B") + ("zt" "$B!:(B") ("zT" "$B!x(B") + ("zp" "$B")(B") ("zP" "$B",(B") + ("z[" "$B!X(B") ("z{" "$B!L(B") + ("z]" "$B!Y(B") ("z}" "$B!M(B") + + ("zs" "$B!3(B") ("zS" "$B!4(B") + ("zd" "$B!5(B") ("zD" "$B!6(B") + ("zf" "$B!7(B") ("zF" "$B"*(B") + ("zg" "$B!>(B") ("zG" "$B!=(B") + ("zh" "$B"+(B") + ("zj" "$B"-(B") + ("zk" "$B",(B") + ("zl" "$B"*(B") + ("z;" "$B!+(B") ("z:" "$B!,(B") + ("z\'" "$B!F(B") ("z\"" "$B!H(B") + + ("zx" [":-"]) ("zX" [":-)"]) + ("zc" "$B!;(B") ("zC" "$B!n(B") + ("zv" "$B"((B") ("zV" "$B!`(B") + ("zb" "$B!k(B") ("zB" "$B"+(B") + ("zn" "$B!l(B") ("zN" "$B"-(B") + ("zm" "$B!m(B") ("zM" "$B".(B") + ("z," "$B!E(B") ("z<" "$B!e(B") + ("z." "$B!D(B") ("z>" "$B!f(B") + ("z/" "$B!&(B") ("z?" "$B!g(B") + + ("\\\\" quail-japanese-self-insert-and-switch-to-alpha) + ("{{" quail-japanese-self-insert-and-switch-to-alpha) + ("}}" quail-japanese-self-insert-and-switch-to-alpha) + + ("qq" quail-japanese-switch-package) + ("qz" quail-japanese-switch-package) + )) + + +;; $B%m!<%^;zF~NO5Z$S2>L>4A;zJQ49$K$h$kF|K\8lF~NO%a%=%C%I(B +;; +;; $B$3$NF~NO%a%=%C%I$G$NF|K\8l$NF~NO$OFs$D$N%9%F!<%8!V%m!<%^;z2>L>JQ49!W(B +;; $B$H!V2>L>4A;zJQ49!W$+$i$J$k!#:G=i$O%m!<%^;z2>L>JQ49$N%9%F!<%8$G!"%9(B +;; $B%Z!<%9%-!<$r2!$9$3$H$K$h$j!"<!$N%9%F!<%8!V2>L>4A;zJQ49!W$X?J$`!#(B +;; +;; $B!V%m!<%^;z2>L>JQ49!W(B +;; +;; $BJ?2>L>$O>.J8;z%-!<!JNs!K$rBG$D$3$H$K$h$jF~NO!#6gFIE@!"3g8LN`$OBP1~(B +;; $B$9$k1Q;z%-!<$rBG$D$3$H$K$h$jF~NO!#$=$NB>$N%7%s%\%k$O(B `z' $B$KB3$1$F2?(B +;; $B$l$+$N%-!<$rBG$D$3$H$K$h$jF~NO!#2<$KA4$F$N2DG=$J%-!<%7!<%1%s%9%j%9(B +;; $B%H%"%C%W$5$l$F$$$k!#F~NO$5$l$?J8;z$O2<@~$G<($5$l$k!#(B +;; +;; $B$5$i$K0J2<$N%-!<$GFCJL$J=hM}$r9T$&!#(B +;; +;; K $BJ?2>L>$rJR2>L>$K!"$"$k$$$OJR2>L>$rJ?2>L>$KJQ49(B +;; qq $B$3$NF~NO%a%=%C%I$H(B `japanese-ascii' $BF~NO%a%=%C%I$r%H%0%k@ZBX(B +;; qz `japanese-zenkaku' $BF~NO%a%=%C%I$K%7%U%H(B +;; qh $B$HBG$F$P85$KLa$k(B +;; RET $B8=:_$NF~NOJ8;zNs$r3NDj(B +;; SPC $B2>L>4A;zJQ49$K?J$`(B +;; +;; `japanese-ascii' $BF~NO%a%=%C%I$O(B ASCII $BJ8;z$rF~NO$9$k$N$K;H$&!#$3$l(B +;; $B$OF~NO%a%=%C%I$r%*%U$K$9$k$N$H$[$H$s$IF1$8$G$"$k!#0[$J$k$N$O(B qq $B$H(B +;; $BBG$D$3$H$K$h$j!"(B`japanese' $BF~NO%a%=%C%I$KLa$l$kE@$G$"$k!#(B +;; +;; `japanese-zenkaku' $BF~NO%a%=%C%I$OA43Q1Q?t;z$rF~NO$9$k$N$K;H$&!#(B +;; +;; $B!V%m!<%^;z2>L>JQ49!W%9%F!<%8$G$N%-!<%7!<%1%s%9$N%j%9%H$O:G8e$KIU$1(B +;; $B$F$"$k!#(B +;; +;; $B!V2>L>4A;zJQ49!W(B +;; +;; $B$3$N%9%F!<%8$G$O!"A0%9%F!<%8$GF~NO$5$l$?J8;zNs$r2>L>4A;zJQ49$9$k!#(B +;; $BJQ49$5$l$?J8;zNs$O!"CmL\J8@a!JH?E>I=<(!K$H;D$j$NF~NO!J2<@~I=<(!K$K(B +;; $BJ,$1$i$l$k!#CmL\J8@a$KBP$7$F$O0J2<$N%3%^%s%I$,;H$($k!#(B +;; +;; SPC, C-n kkc-next +;; $B<!$NJQ498uJd$rI=<((B +;; kkc-show-conversion-list-count $B0J>eB3$1$FBG$F$P!"JQ498uJd%j%9(B +;; $B%H$r%(%3!<%(%j%"$KI=<((B +;; C-p kkc-prev +;; $BA0$NJQ498uJd$rI=<((B +;; kkc-show-conversion-list-count $B0J>eB3$1$FBG$F$P!"JQ498uJd%j%9(B +;; $B%H$r%(%3!<%(%j%"$KI=<((B +;; l kkc-show-conversion-list-or-next-group +;; $B:G9b#1#08D$^$G$NJQ498uJd$r%(%3!<%(%j%"$KI=<(!#(B +;; $BB3$1$FBG$?$l$l$P!"<!$N#1#08uJd$rI=<(!#(B +;; L kkc-show-conversion-list-or-prev-group +;; $B:G9b#1#08D$^$G$NJQ498uJd$r%(%3!<%(%j%"$KI=<(!#(B +;; $BB3$1$FBG$?$l$l$P!"A0$N#1#08uJd$rI=<(!#(B +;; 0..9 kkc-select-from-list +;; $BBG$?$l$??t;z$NJQ498uJd$rA*Br(B +;; H kkc-hiragana +;; $BCmL\J8@a$rJ?2>L>$KJQ49(B +;; K kkc-katakana +;; $BCmL\J8@a$rJR2>L>$KJQ49(B +;; C-o kkc-longer +;; $BCmL\J8@a$r8e$m$K0lJ8;z?-$P$9(B +;; C-i kkc-shorter +;; $BCmL\J8@a$r8e$m$+$i0lJ8;z=L$a$k(B +;; C-f kkc-next-phrase +;; $BCmL\J8@a$r3NDj$5$;$k!#$b$7;D$j$NF~NO$,$^$@$"$l$P!":G=i$NJ8@a$r(B +;; $BA*Br$7!"$=$l$rCmL\J8@a$H$7!"$=$N:G=i$NJQ498uJd$rI=<($9$k!#(B +;; DEL, C-c kkc-cancel +;; $B2>L>4A;zJQ49$r%-%c%s%;%k$7!"%m!<%^;z2>L>JQ49$N%9%F!<%8$KLa$k!#(B +;; return kkc-terminate +;; $BA4J8@a$r3NDj$5$;$k!#(B +;; C-SPC, C-@ kkc-first-char-only +;; $B:G=i$NJ8;z$r3NDj$5$;!";D$j$O:o=|$9$k!#(B +;; C-h kkc-help +;; $B$3$l$i$N%-!<%P%$%s%I$N%j%9%H$rI=<($9$k!#$"(B + +(quail-define-package + "japanese" "Japanese" "A$B$"(B" + nil + "Japanese input method by Roman transliteration and Kana-Kanji conversion. + +When you use this input method, text entry proceeds in two stages: +Roman-Kana transliteration and Kana-Kanji conversion. When you start +to enter text, you are in the first stage, Roman-Kana transliteration. +Type SPC to proceed to the next stage, Kana-Kanji conversion. + +:: Roman-Kana transliteration :: + +You can input any Hiragana character as a sequence of lower-case +letters, Japanese punctuation characters by typing punctuation keys, +Japanese symbols by typing `z' followed by another key. See below for +a list of all available sequences. The characters you input are +underlined. + +In addition, the following keys provide special effects: + +K Change Hiragana to Katakana or Katakana to Hiragana. +qq Toggle between this input method and the input method `japanese-ascii'. +qz Shift to the input method `japanese-zenkaku'. + Typing \"qh\" will put you back to this input method. +RET Accept the current character sequence. +SPC Proceed to the next stage, Kana-Kanji conversion. + +The input method `japanese-ascii' is used to enter ASCII characters. +This is almost the same as turning off the input method. The only +difference is that typing `qq' will put you back into the Japanese +input method. + +The input method `japanese-zenkaku' is used to enter full width +JISX0208 characters corresponding to typed ASCII characters. + +List of the all key sequences for Roman-Kana transliteration is shown +at the tail. + +:: Kana-Kanji conversion :: + +You can convert the current Japanese characters (underlined) to +Kana-Kanji mixed text. In this stage, the converted text is divided +into two parts, the current phrase (highlighted) and the remaining +input (underlined). The following commands can be used on the +current phrase. + +SPC, C-n kkc-next + Show the next candidate for the current phrase. + If successively typed `kkc-show-conversion-list-count' times, + conversion candidates are shown in the echo area. +C-p kkc-prev + Show the previous candidate for the current phrase. + If successively typed `kkc-show-conversion-list-count' times, + conversion candidates are shown in the echo area. +l kkc-show-conversion-list-or-next-group + Show at most 10 candidates for the current phrase in echo area. + If typed repeatedly, show the next 10 candidates. +L kkc-show-conversion-list-or-prev-group + Show at most 10 candidates for the current phrase in echo area. + If typed repeatedly, show the previous 10 candidates. +0..9 kkc-select-from-list + Select a candidate corresponding to the typed number. +H kkc-hiragana + Convert the current phrase to Hiragana +K kkc-katakana + Convert the current phrase to Katakana +C-o kkc-longer + Extend the current phrase; pull in the first character of + the remaining input. +C-i kkc-shorter + Contract the current phrase; drop its last character + back into the remaining input. +C-f kkc-next-phrase + Accept the current phrase. If there remains input, select + the first phrase as the current one, and show the first + candidate for the conversion. +DEL, C-c kkc-cancel + Cancel the conversion, shift back to the Roman-Kana + transliteration. +return kkc-terminate + Accept the whole conversion. +C-SPC, C-@ kkc-first-char-only + Accept the first character of the current conversion, + delete the remaining input. +C-h kkc-help + List these key bindings. +" + nil t t nil nil nil nil nil + 'quail-japanese-update-translation + '(("K" . quail-japanese-toggle-kana) + (" " . quail-japanese-kanji-kkc) + ("\C-m" . quail-no-conversion) + ([return] . quail-no-conversion)) + ) + +(dolist (elt quail-japanese-transliteration-rules) + (quail-defrule (car elt) (nth 1 elt))) + +(quail-define-package + "japanese-ascii" "Japanese" "Aa" + nil + "Temporary ASCII input mode used within the input method `japanese'. +Type \"qq\" to go back to previous input method." + nil t t) + +(quail-define-rules ("qq" quail-japanese-switch-package)) + +(quail-define-package + "japanese-zenkaku" "Japanese" "$B#A(B" + nil + "Japanese zenkaku alpha numeric character input method. +---- Special key bindings ---- +qq: toggle between this input method and the input method `japanese-ascii'. +qh: shift to the input method `japanese', + typing \"qz\" puts you back to this input method. +" + nil t t) + +(quail-define-rules + +(" " "$B!!(B") ("!" "$B!*(B") ("\"" "$B!m(B") ("#" "$B!t(B") +("$" "$B!p(B") ("%" "$B!s(B") ("&" "$B!u(B") ("'" "$B!l(B") +("(" "$B!J(B") (")" "$B!K(B") ("*" "$B!v(B") ("+" "$B!\(B") +("," "$B!$(B") ("-" "$B!](B") ("." "$B!%(B") ("/" "$B!?(B") +("0" "$B#0(B") ("1" "$B#1(B") ("2" "$B#2(B") ("3" "$B#3(B") +("4" "$B#4(B") ("5" "$B#5(B") ("6" "$B#6(B") ("7" "$B#7(B") +("8" "$B#8(B") ("9" "$B#9(B") (":" "$B!'(B") (";" "$B!((B") +("<" "$B!c(B") ("=" "$B!a(B") (">" "$B!d(B") ("?" "$B!)(B") +("@" "$B!w(B") ("A" "$B#A(B") ("B" "$B#B(B") ("C" "$B#C(B") +("D" "$B#D(B") ("E" "$B#E(B") ("F" "$B#F(B") ("G" "$B#G(B") +("H" "$B#H(B") ("I" "$B#I(B") ("J" "$B#J(B") ("K" "$B#K(B") +("L" "$B#L(B") ("M" "$B#M(B") ("N" "$B#N(B") ("O" "$B#O(B") +("P" "$B#P(B") ("Q" "$B#Q(B") ("R" "$B#R(B") ("S" "$B#S(B") +("T" "$B#T(B") ("U" "$B#U(B") ("V" "$B#V(B") ("W" "$B#W(B") +("X" "$B#X(B") ("Y" "$B#Y(B") ("Z" "$B#Z(B") ("[" "$B!N(B") +("\\" "$B!o(B") ("]" "$B!O(B") ("^" "$B!0(B") ("_" "$B!2(B") +("`" "$B!F(B") ("a" "$B#a(B") ("b" "$B#b(B") ("c" "$B#c(B") +("d" "$B#d(B") ("e" "$B#e(B") ("f" "$B#f(B") ("g" "$B#g(B") +("h" "$B#h(B") ("i" "$B#i(B") ("j" "$B#j(B") ("k" "$B#k(B") +("l" "$B#l(B") ("m" "$B#m(B") ("n" "$B#n(B") ("o" "$B#o(B") +("p" "$B#p(B") ("q" "$B#q(B") ("r" "$B#r(B") ("s" "$B#s(B") +("t" "$B#t(B") ("u" "$B#u(B") ("v" "$B#v(B") ("w" "$B#w(B") +("x" "$B#x(B") ("y" "$B#y(B") ("z" "$B#z(B") ("{" "$B!P(B") +("|" "$B!C(B") ("}" "$B!Q(B") ("~" "$B!A(B") + +("qq" quail-japanese-switch-package) +("qh" quail-japanese-switch-package) +) + +(defun quail-japanese-hankaku-update-translation (control-flag) + (setq control-flag + (quail-japanese-update-translation control-flag)) + (if (or (and (stringp quail-current-str) + (> (length quail-current-str) 0)) + (integerp quail-current-str)) + (setq quail-current-str (japanese-hankaku quail-current-str))) + control-flag) + +(quail-define-package + "japanese-hankaku-kana" + "Japanese" "(I1(B" + nil + "Japanese hankaku katakana input method by Roman transliteration. +---- Special key bindings ---- +qq: toggle between this input method and the input method `japanese-ascii'. +" + nil t t nil nil nil nil nil + 'quail-japanese-hankaku-update-translation) + +(dolist (elt quail-japanese-transliteration-rules) + (quail-defrule (car elt) + (let ((trans (nth 1 elt))) + (when (or (stringp trans) (vectorp trans)) + (let ((s (japanese-hankaku (if (stringp trans) + trans + (aref trans 0))))) + ;; If the result of the conversion is a string + ;; containing more than one character, make the + ;; result a vector, so that quail-defrule + ;; recognizes the whole string is the + ;; translation, instead of interpreting + ;; individual characters as alternative + ;; translations. + (if (and (stringp s) (> (length s) 1)) + (setq trans (vector s)) + (setq trans s)))) + trans))) + +(quail-define-package + "japanese-hiragana" "Japanese" "$B$"(B" + nil + "Japanese hiragana input method by Roman transliteration." + nil t t nil nil nil nil nil + 'quail-japanese-update-translation) + +;; Use the same map as that of `japanese'. +(setcar (cdr (cdr quail-current-package)) + (nth 2 (assoc "japanese" quail-package-alist))) + +;; Update Quail translation region while converting Hiragana to Katakana. +(defun quail-japanese-katakana-update-translation (control-flag) + (setq control-flag + (quail-japanese-update-translation control-flag)) + (if (or (and (stringp quail-current-str) + (> (length quail-current-str) 0)) + (integerp quail-current-str)) + (setq quail-current-str (japanese-katakana quail-current-str))) + control-flag) + +(quail-define-package + "japanese-katakana" "Japanese" "$B%"(B" + nil + "Japanese katakana input method by Roman transliteration." + nil t t nil nil nil nil nil + 'quail-japanese-katakana-update-translation) + +(dolist (elt quail-japanese-transliteration-rules) + (quail-defrule (car elt) + (let ((trans (nth 1 elt))) + (cond ((stringp trans) + (japanese-katakana trans)) + ((vectorp trans) + (vector (japanese-katakana (aref trans 0)))) + (t trans))))) + +;;; japanese.el ends here diff --git a/lisp/leim/quail/lao.el b/lisp/leim/quail/lao.el new file mode 100644 index 00000000000..52357afd8dd --- /dev/null +++ b/lisp/leim/quail/lao.el @@ -0,0 +1,213 @@ +;;; lao.el --- Quail package for inputting Lao characters -*-coding: utf-8;-*- + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Lao + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'lao-util) + +(defun quail-lao-update-translation (control-flag) + (if (integerp control-flag) + ;; Non-composable character typed. + (setq quail-current-str + (buffer-substring (overlay-start quail-overlay) + (overlay-end quail-overlay)) + unread-command-events + (string-to-list + (substring quail-current-key control-flag))) + (setq quail-current-str + (compose-string (quail-lookup-map-and-concat quail-current-key)))) + control-flag) + +(defvar lao-key-alist + '(("!" . "1") + ("\"" . "=") + ("#" . "3") + ("$" . "4") + ("&" . "5") + ("%" . "໌") + ("'" . "ງ") + ("(" . "7") + (")" . "8") + ("*" . "6") + ("+" . ["ໍ່"]) + ("," . "ມ") + ("-" . "ຊ") + ("." . "ໃ") + ("/" . "ຝ") + ("0" . "ຂ") + ("1" . "ຢ") + ("2" . "ຟ") + ("3" . "ໂ") + ("4" . "ຖ") + ("5" . "ຸ") + ("6" . "ູ") + ("7" . "ຄ") + ("8" . "ຕ") + ("9" . "ຈ") + (":" . "%") + (";" . "ວ") + ("<" . "ໝ") + ("=" . "ໍ") + (">" . "$") + ("?" . ")") + ("@" . "2") + ("A" . ["ັ້"]) + ("B" . ["ຶ້"]) + ("C" . "ຯ") + ("D" . ".") + ("E" . ["ຳ້"]) + ("F" . ",") + ("G" . ":") + ("H" . "໊") + ("I" . "ຮ") + ("J" . "໋") + ("K" . "!") + ("L" . "?") + ("M" . "ໆ") + ("N" . ["ື້"]) + ("O" . "ໜ") + ("P" . "ຽ") + ("Q" . ["ົ້"]) + ("R" . "_") + ("S" . ";") + ("T" . "+") + ("U" . ["ີ້"]) + ("V" . "x") + ("W" . "0") + ("X" . "(") + ("Y" . ["ິ້"]) + ("Z" . "\"") + ("[" . "ບ") + ("]" . "ລ") + ("^" . "ຼ") + ("_" . "9") + ("`" . "ງ") + ("a" . "ັ") + ("b" . "ຶ") + ("c" . "ແ") + ("d" . "ກ") + ("e" . "ຳ") + ("f" . "ດ") + ("g" . "ເ") + ("h" . "້") + ("i" . "ຣ") + ("j" . "່") + ("k" . "າ") + ("l" . "ສ") + ("m" . "ທ") + ("n" . "ື") + ("o" . "ນ") + ("p" . "ຍ") + ("q" . "ົ") + ("r" . "ພ") + ("s" . "ຫ") + ("t" . "ະ") + ("u" . "ີ") + ("v" . "ອ") + ("w" . "ໄ") + ("x" . "ປ") + ("y" . "ິ") + ("z" . "ຜ") + ("{" . "-") + ("|" . ["ຫຼ"]) + ("}" . "/") + ("~" . "໌") + ("\\0" . "໐") + ("\\1" . "໑") + ("\\2" . "໒") + ("\\3" . "໓") + ("\\4" . "໔") + ("\\5" . "໕") + ("\\6" . "໖") + ("\\7" . "໗") + ("\\8" . "໘") + ("\\9" . "໙") + ) + "Alist of key sequences vs the corresponding Lao string to input. +This variable is for the input method \"lao\". +If you change the value of this variable while quail/lao is already loaded, +you need to re-load it to properly re-initialize related alists.") + +;; Temporary variable to initialize lao-consonant-key-alist, etc. +(defconst lao-key-alist-vector + (let ((tail lao-key-alist) + consonant-key-alist semivowel-key-alist vowel-key-alist + voweltone-key-alist tone-key-alist other-key-alist + elt phonetic-type) + (while tail + (setq elt (car tail) tail (cdr tail)) + (if (stringp (cdr elt)) + (setq phonetic-type (get-char-code-property (aref (cdr elt) 0) + 'phonetic-type)) + (setq phonetic-type (get-char-code-property (aref (aref (cdr elt) 0) 0) + 'phonetic-type)) + (aset (cdr elt) 0 (compose-string (aref (cdr elt) 0)))) + (cond ((eq phonetic-type 'consonant) + (setq consonant-key-alist (cons elt consonant-key-alist))) + ((memq phonetic-type '(vowel-upper vowel-lower)) + (if (stringp (cdr elt)) + (setq vowel-key-alist (cons elt vowel-key-alist)) + (setq voweltone-key-alist (cons elt voweltone-key-alist)))) + ((eq phonetic-type 'tone) + (setq tone-key-alist (cons elt tone-key-alist))) + ((eq phonetic-type 'semivowel-lower) + (setq semivowel-key-alist (cons elt semivowel-key-alist))) + (t + (setq other-key-alist (cons elt other-key-alist))))) + (vector consonant-key-alist semivowel-key-alist vowel-key-alist + voweltone-key-alist tone-key-alist other-key-alist))) + +(defconst lao-consonant-key-alist (aref lao-key-alist-vector 0)) +(defconst lao-semivowel-key-alist (aref lao-key-alist-vector 1)) +(defconst lao-vowel-key-alist (aref lao-key-alist-vector 2)) +(defconst lao-voweltone-key-alist (aref lao-key-alist-vector 3)) +(defconst lao-tone-key-alist (aref lao-key-alist-vector 4)) +(defconst lao-other-key-alist (aref lao-key-alist-vector 5)) + +;; Done with it. +(makunbound 'lao-key-alist-vector) + +(quail-define-package + "lao" "Lao" "ລ" t + "Lao input method simulating Lao keyboard layout based on Thai TIS620" + nil t t t t nil nil nil 'quail-lao-update-translation nil t) + +(quail-install-map + (quail-map-from-table + '((base-state (lao-consonant-key-alist . svt-state) + lao-vowel-key-alist + lao-voweltone-key-alist + lao-tone-key-alist + lao-other-key-alist) + (svt-state (lao-semivowel-key-alist . v-state) + (lao-vowel-key-alist . t-state) + lao-voweltone-key-alist + lao-tone-key-alist) + (v-state (lao-vowel-key-alist . t-state)) + (t-state lao-tone-key-alist)))) + +;;; lao.el ends here diff --git a/lisp/leim/quail/latin-alt.el b/lisp/leim/quail/latin-alt.el new file mode 100644 index 00000000000..6841947524f --- /dev/null +++ b/lisp/leim/quail/latin-alt.el @@ -0,0 +1,1722 @@ +;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8;-*- + +;; Copyright (C) 1997-1998, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, latin + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Author (of latin-post.el): TAKAHASHI Naoto <ntakahas@etl.go.jp> + +;;; Commentary: + +;; These input methods differ from those in latin-post.el +;; in that comma is not special (use / instead), +;; and // is not special either (so you can enter a slash +;; by typing //). + +;; At least, that's what I could see by comparing the first few +;; of these with latin-post.el. + +;;; Code: + +(require 'quail) + +(quail-define-package + "latin-1-alt-postfix" "Latin-1" "1<" t + "Latin-1 character input method with postfix modifiers +This input method differs from `latin-1-postfix' in that +comma is not special (use slash instead), and `//' is not +special (so you can use that to enter a slash). + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + cedilla | / | c/ -> ç + nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø + others | /<> | s/ -> ß ?/ -> ¿ !/ -> ¡ + | various | << -> « >> -> » o_ -> º a_ -> ª + +It seems natural to use comma for cedillas, but that is +inconvenient in practice because commas are needed very +often after a letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A'" ?Á) + ("A^" ?Â) + ("A~" ?Ã) + ("A\"" ?Ä) + ("A/" ?Å) + ("a`" ?à) + ("a'" ?á) + ("a^" ?â) + ("a~" ?ã) + ("a\"" ?ä) + ("a/" ?å) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("E/" ?Æ) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("e/" ?æ) + ("I`" ?Ì) + ("i`" ?ì) + ("I'" ?Í) + ("i'" ?í) + ("I^" ?Î) + ("i^" ?î) + ("I\"" ?Ï) + ("i\"" ?ï) + ("O`" ?Ò) + ("o`" ?ò) + ("O'" ?Ó) + ("o'" ?ó) + ("O^" ?Ô) + ("o^" ?ô) + ("O~" ?Õ) + ("o~" ?õ) + ("O\"" ?Ö) + ("o\"" ?ö) + ("O/" ?Ø) + ("o/" ?ø) + ("U`" ?Ù) + ("u`" ?ù) + ("U'" ?Ú) + ("u'" ?ú) + ("U^" ?Û) + ("u^" ?û) + ("U\"" ?Ü) + ("u\"" ?ü) + ("Y'" ?Ý) + ("y'" ?ý) + ("y\"" ?ÿ) + ("D/" ?Ð) + ("d/" ?ð) + ("T/" ?Þ) + ("t/" ?þ) + ("s/" ?ß) + ("C/" ?Ç) + ("c/" ?ç) + ("N~" ?Ñ) + ("n~" ?ñ) + ("?/" ?¿) + ("!/" ?¡) + ("<<" ?«) + (">>" ?») + ("o_" ?º) + ("a_" ?ª) + + ("A``" ["A`"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("A\"\"" ["A\""]) + ("A//" ["A/"]) + ("a``" ["a`"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("a\"\"" ["a\""]) + ("a//" ["a/"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("E//" ["E/"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("e//" ["e/"]) + ("I``" ["I`"]) + ("i``" ["i`"]) + ("I''" ["I'"]) + ("i''" ["i'"]) + ("I^^" ["I^"]) + ("i^^" ["i^"]) + ("I\"\"" ["I\""]) + ("i\"\"" ["i\""]) + ("O``" ["O`"]) + ("o``" ["o`"]) + ("O''" ["O'"]) + ("o''" ["o'"]) + ("O^^" ["O^"]) + ("o^^" ["o^"]) + ("O~~" ["O~"]) + ("o~~" ["o~"]) + ("O\"\"" ["O\""]) + ("o\"\"" ["o\""]) + ("O//" ["O/"]) + ("o//" ["o/"]) + ("U``" ["U`"]) + ("u``" ["u`"]) + ("U''" ["U'"]) + ("u''" ["u'"]) + ("U^^" ["U^"]) + ("u^^" ["u^"]) + ("U\"\"" ["U\""]) + ("u\"\"" ["u\""]) + ("Y''" ["Y'"]) + ("y''" ["y'"]) + ("y\"\"" ["y\""]) + ("D//" ["D/"]) + ("d//" ["d/"]) + ("T//" ["T/"]) + ("t//" ["t/"]) + ("s//" ["s/"]) + ("C//" ["C/"]) + ("c//" ["c/"]) + ("N~~" ["N~"]) + ("n~~" ["n~"]) + ("?//" ["?/"]) + ("!//" ["!/"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("o__" ["o_"]) + ("a__" ["a_"]) + ) + +(quail-define-package + "latin-2-alt-postfix" "Latin-2" "2<" t + "Latin-2 character input method with postfix modifiers +This input method differs from `latin-2-postfix' in that +comma and period are not special (use ` instead). + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + ogonek | ` | a` -> ą + diaeresis | \" | a\" -> ä + circumflex | ^ | a^ -> â + breve | ~ | a~ -> ă + cedilla | ` | c` -> ç + caron | ~ | c~ -> č + dbl. acute | : | o: -> ő + ring | ` | u` -> ů + dot | ` | z` -> ż + stroke | / | d/ -> đ + others | / | s/ -> ß + +It seems natural to use period and comma for dots/rings and +cedillas/ogoneks, but that is inconvenient in practice, because +periods and commas are needed very often after a letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("A`" ?Ą) + ("A\"" ?Ä) + ("A^" ?Â) + ("A~" ?Ă) + ("C'" ?Ć) + ("C`" ?Ç) + ("C~" ?Č) + ("D/" ?Đ) + ("D~" ?Ď) + ("E'" ?É) + ("E`" ?Ę) + ("E\"" ?Ë) + ("E~" ?Ě) + ("I'" ?Í) + ("I^" ?Î) + ("L'" ?Ĺ) + ("L/" ?Ł) + ("L~" ?Ľ) + ("N'" ?Ń) + ("N~" ?Ň) + ("O'" ?Ó) + ("O:" ?Ő) + ("O\"" ?Ö) + ("O^" ?Ô) + ("R'" ?Ŕ) + ("R~" ?Ř) + ("S'" ?Ś) + ("S`" ?Ş) + ("S~" ?Š) + ("T`" ?Ţ) + ("T~" ?Ť) + ("U'" ?Ú) + ("U:" ?Ű) + ("U\"" ?Ü) + ("U`" ?Ů) + ("Y'" ?Ý) + ("Z'" ?Ź) + ("Z`" ?Ż) + ("Z~" ?Ž) + ("a'" ?á) + ("a`" ?ą) + ("a\"" ?ä) + ("a^" ?â) + ("a~" ?ă) + ("c'" ?ć) + ("c`" ?ç) + ("c~" ?č) + ("d/" ?đ) + ("d~" ?ď) + ("e'" ?é) + ("e`" ?ę) + ("e\"" ?ë) + ("e~" ?ě) + ("i'" ?í) + ("i^" ?î) + ("l'" ?ĺ) + ("l/" ?ł) + ("l~" ?ľ) + ("n'" ?ń) + ("n~" ?ň) + ("o'" ?ó) + ("o:" ?ő) + ("o\"" ?ö) + ("o^" ?ô) + ("r'" ?ŕ) + ("r~" ?ř) + ("s'" ?ś) + ("s`" ?ş) + ("s/" ?ß) + ("s~" ?š) + ("t`" ?ţ) + ("t~" ?ť) + ("u'" ?ú) + ("u:" ?ű) + ("u\"" ?ü) + ("u`" ?ů) + ("y'" ?ý) + ("z'" ?ź) + ("z`" ?ż) + ("z~" ?ž) + + ("A''" ["A'"]) + ("A``" ["A`"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("C''" ["C'"]) + ("C``" ["C`"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("D~~" ["D~"]) + ("E''" ["E'"]) + ("E``" ["E`"]) + ("E\"\"" ["E\""]) + ("E~~" ["E~"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("L''" ["L'"]) + ("L//" ["L/"]) + ("L~~" ["L~"]) + ("N''" ["N'"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O::" ["O:"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("R''" ["R'"]) + ("R~~" ["R~"]) + ("S''" ["S'"]) + ("S``" ["S`"]) + ("S~~" ["S~"]) + ("T``" ["T`"]) + ("T~~" ["T~"]) + ("U''" ["U'"]) + ("U::" ["U:"]) + ("U\"\"" ["U\""]) + ("U``" ["U`"]) + ("Y''" ["Y'"]) + ("Z''" ["Z'"]) + ("Z``" ["Z`"]) + ("Z~~" ["Z~"]) + ("a''" ["a'"]) + ("a``" ["a`"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("c''" ["c'"]) + ("c``" ["c`"]) + ("c~~" ["c~"]) + ("d//" ["d/"]) + ("d~~" ["d~"]) + ("e''" ["e'"]) + ("e``" ["e`"]) + ("e\"\"" ["e\""]) + ("e~~" ["e~"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("l''" ["l'"]) + ("l//" ["l/"]) + ("l~~" ["l~"]) + ("n''" ["n'"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o::" ["o:"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("r''" ["r'"]) + ("r~~" ["r~"]) + ("s''" ["s'"]) + ("s``" ["s`"]) + ("s//" ["s/"]) + ("s~~" ["s~"]) + ("t``" ["t`"]) + ("t~~" ["t~"]) + ("u''" ["u'"]) + ("u::" ["u:"]) + ("u\"\"" ["u\""]) + ("u``" ["u`"]) + ("y''" ["y'"]) + ("z''" ["z'"]) + ("z``" ["z`"]) + ("z~~" ["z~"]) + ) + +(quail-define-package + "latin-3-alt-postfix" "Latin-3" "3<" t + "Latin-3 character input method with postfix modifiers +This input method differs from `latin-3-postfix' in that +comma is not special (use ` instead), and period is not +special (use slash instead). + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + dot | / | c/ -> ċ i/ -> ı I/ -> İ + cedilla | ` | c` -> ç + breve | ~ | g~ -> ğ + tilde | ~ | n~ -> ñ + stroke | / | h/ -> ħ + others | / | s/ -> ß + +It would be natural to use period and comma for dots and cedillas, but +that would inconvenient in practice, because periods and commas are +needed very often after a letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A'" ?Á) + ("A^" ?Â) + ("A\"" ?Ä) + ("C/" ?Ċ) + ("C^" ?Ĉ) + ("C`" ?Ç) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("G~" ?Ğ) + ("G/" ?Ġ) + ("G^" ?Ĝ) + ("H/" ?Ħ) + ("H^" ?Ĥ) + ("I/" ?İ) + ("I`" ?Ì) + ("I'" ?Í) + ("I^" ?Î) + ("I\"" ?Ï) + ("J^" ?Ĵ) + ("N~" ?Ñ) + ("O`" ?Ò) + ("O'" ?Ó) + ("O^" ?Ô) + ("O\"" ?Ö) + ("S`" ?Ş) + ("S^" ?Ŝ) + ("U`" ?Ù) + ("U'" ?Ú) + ("U^" ?Û) + ("U\"" ?Ü) + ("U~" ?Ŭ) + ("Z/" ?Ż) + ("a`" ?à) + ("a'" ?á) + ("a^" ?â) + ("a\"" ?ä) + ("c/" ?ċ) + ("c^" ?ĉ) + ("c`" ?ç) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("g~" ?ğ) + ("g/" ?ġ) + ("g^" ?ĝ) + ("h/" ?ħ) + ("h^" ?ĥ) + ("i/" ?ı) + ("i`" ?ì) + ("i'" ?í) + ("i^" ?î) + ("i\"" ?ï) + ("j^" ?ĵ) + ("n~" ?ñ) + ("o`" ?ò) + ("o'" ?ó) + ("o^" ?ô) + ("o\"" ?ö) + ("s`" ?ş) + ("s/" ?ß) + ("s^" ?ŝ) + ("u`" ?ù) + ("u'" ?ú) + ("u^" ?û) + ("u\"" ?ü) + ("u~" ?ŭ) + ("z/" ?ż) + + ("A``" ["A`"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A\"\"" ["A\""]) + ("C//" ["C/"]) + ("C^^" ["C^"]) + ("C``" ["C`"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("G~~" ["G~"]) + ("G//" ["G/"]) + ("G^^" ["G^"]) + ("H//" ["H/"]) + ("H^^" ["H^"]) + ("I//" ["I/"]) + ("I``" ["I`"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("I\"\"" ["I\""]) + ("J^^" ["J^"]) + ("N~~" ["N~"]) + ("O``" ["O`"]) + ("O''" ["O'"]) + ("O^^" ["O^"]) + ("O\"\"" ["O\""]) + ("S``" ["S`"]) + ("S^^" ["S^"]) + ("U``" ["U`"]) + ("U''" ["U'"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("U~~" ["U~"]) + ("Z//" ["Z/"]) + ("a``" ["a`"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a\"\"" ["a\""]) + ("c//" ["c/"]) + ("c^^" ["c^"]) + ("c``" ["c`"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("g~~" ["g~"]) + ("g//" ["g/"]) + ("g^^" ["g^"]) + ("h//" ["h/"]) + ("h^^" ["h^"]) + ("i//" ["i/"]) + ("i``" ["i`"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("i\"\"" ["i\""]) + ("j^^" ["j^"]) + ("n~~" ["n~"]) + ("o``" ["o`"]) + ("o''" ["o'"]) + ("o^^" ["o^"]) + ("o\"\"" ["o\""]) + ("s``" ["s`"]) + ("s//" ["s/"]) + ("s^^" ["s^"]) + ("u``" ["u`"]) + ("u''" ["u'"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("u~~" ["u~"]) + ("z//" ["z/"]) + ) + +(quail-define-package + "latin-4-alt-postfix" "Latin-4" "4<" t + "Latin-4 characters input method with postfix modifiers +This input method differs from `latin-4-postfix' in that +comma is not special (use ` instead), and period is not +special (use ~ instead). + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + ogonek | ` | a` -> ą + macron | - | a- -> ā + tilde | ~ | a~ -> ã + caron | ~ | c~ -> č + dot | ~ | e~ -> ė + cedilla | ` | k` -> ķ g` -> ģ + stroke | / | d/ -> đ + nordic | / | a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß n/ -> ŋ k/ -> ĸ + +It seems natural to use period and comma for dots and +cedillas/ogoneks, but that is inconvenient in practice, because +periods and commas are needed very often after a letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?Ą) + ("A-" ?Ā) + ("A'" ?Á) + ("A^" ?Â) + ("A~" ?Ã) + ("A\"" ?Ä) + ("A/" ?Å) + ("C~" ?Č) + ("D/" ?Đ) + ("E/" ?Æ) + ("E-" ?Ē) + ("E'" ?É) + ("E`" ?Ę) + ("E\"" ?Ë) + ("E~" ?Ė) + ("G`" ?Ģ) + ("I~" ?Ĩ) + ("I`" ?Į) + ("I'" ?Í) + ("I^" ?Î) + ("I-" ?Ī) + ("K`" ?Ķ) + ("L`" ?Ļ) + ("N/" ?Ŋ) + ("N`" ?Ņ) + ("O-" ?Ō) + ("O^" ?Ô) + ("O~" ?Õ) + ("O\"" ?Ö) + ("O/" ?Ø) + ("R`" ?Ŗ) + ("S~" ?Š) + ("T/" ?Ŧ) + ("U`" ?Ų) + ("U'" ?Ú) + ("U^" ?Û) + ("U\"" ?Ü) + ("U~" ?Ũ) + ("U-" ?Ū) + ("Z~" ?Ž) + ("a`" ?ą) + ("a-" ?ā) + ("a'" ?á) + ("a^" ?â) + ("a~" ?ã) + ("a\"" ?ä) + ("a/" ?å) + ("c~" ?č) + ("d/" ?đ) + ("e/" ?æ) + ("e-" ?ē) + ("e'" ?é) + ("e`" ?ę) + ("e\"" ?ë) + ("e~" ?ė) + ("g`" ?ģ) + ("i~" ?ĩ) + ("i`" ?į) + ("i'" ?í) + ("i^" ?î) + ("i-" ?ī) + ("k/" ?ĸ) + ("k`" ?ķ) + ("l`" ?ļ) + ("n/" ?ŋ) + ("n`" ?ņ) + ("o-" ?ō) + ("o^" ?ô) + ("o~" ?õ) + ("o\"" ?ö) + ("o/" ?ø) + ("r`" ?ŗ) + ("s/" ?ß) + ("s~" ?š) + ("t/" ?ŧ) + ("u`" ?ų) + ("u'" ?ú) + ("u^" ?û) + ("u\"" ?ü) + ("u~" ?ũ) + ("u-" ?ū) + ("z~" ?ž) + + ("A``" ["A`"]) + ("A--" ["A-"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("A\"\"" ["A\""]) + ("A//" ["A/"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("E//" ["E/"]) + ("E--" ["E-"]) + ("E''" ["E'"]) + ("E``" ["E`"]) + ("E\"\"" ["E\""]) + ("E~~" ["E~"]) + ("G``" ["G`"]) + ("I~~" ["I~"]) + ("I``" ["I`"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("I--" ["I-"]) + ("K``" ["K`"]) + ("L``" ["L`"]) + ("N//" ["N/"]) + ("N``" ["N`"]) + ("O--" ["O-"]) + ("O^^" ["O^"]) + ("O~~" ["O~"]) + ("O\"\"" ["O\""]) + ("O//" ["O/"]) + ("R``" ["R`"]) + ("S~~" ["S~"]) + ("T//" ["T/"]) + ("U``" ["U`"]) + ("U''" ["U'"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("U~~" ["U~"]) + ("U--" ["U-"]) + ("Z~~" ["Z~"]) + ("a``" ["a`"]) + ("a--" ["a-"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("a\"\"" ["a\""]) + ("a//" ["a/"]) + ("c~~" ["c~"]) + ("d//" ["d/"]) + ("e//" ["e/"]) + ("e--" ["e-"]) + ("e''" ["e'"]) + ("e``" ["e`"]) + ("e\"\"" ["e\""]) + ("e~~" ["e~"]) + ("g``" ["g`"]) + ("i~~" ["i~"]) + ("i``" ["i`"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("i--" ["i-"]) + ("k//" ["k/"]) + ("k``" ["k`"]) + ("l``" ["l`"]) + ("n//" ["n/"]) + ("n``" ["n`"]) + ("o--" ["o-"]) + ("o^^" ["o^"]) + ("o~~" ["o~"]) + ("o\"\"" ["o\""]) + ("o//" ["o/"]) + ("r``" ["r`"]) + ("s//" ["s/"]) + ("s~~" ["s~"]) + ("t//" ["t/"]) + ("u``" ["u`"]) + ("u''" ["u'"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("u~~" ["u~"]) + ("u--" ["u-"]) + ("z~~" ["z~"]) + ) + +(quail-define-package + "latin-5-alt-postfix" "Latin-5" "5<" t + "Latin-5 characters input method with postfix modifiers +This input method differs from `latin-5-postfix' in that +comma is not special (use ` instead), and period is not +special (use / instead). + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + breve | ~ | g~ -> ğ + cedilla | ` | c` -> ç + dot | / | i/ -> ı I/ -> İ + nordic | / | a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß + +It seems natural to use period and comma for dots and cedillas, but +that is inconvenient in practice, because periods and commas are +needed very often after a letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("A/" ?Å) + ("A\"" ?Ä) + ("A^" ?Â) + ("A`" ?À) + ("A~" ?Ã) + ("C`" ?Ç) + ("E'" ?É) + ("E/" ?Æ) + ("E\"" ?Ë) + ("E^" ?Ê) + ("E`" ?È) + ("G~" ?Ğ) + ("I'" ?Í) + ("I/" ?İ) + ("I\"" ?Ï) + ("I^" ?Î) + ("I`" ?Ì) + ("N~" ?Ñ) + ("O'" ?Ó) + ("O/" ?Ø) + ("O\"" ?Ö) + ("O^" ?Ô) + ("O`" ?Ò) + ("O~" ?Õ) + ("S`" ?Ş) + ("U'" ?Ú) + ("U\"" ?Ü) + ("U^" ?Û) + ("U`" ?Ù) + ("a'" ?á) + ("a/" ?å) + ("a\"" ?ä) + ("a^" ?â) + ("a`" ?à) + ("a~" ?ã) + ("c`" ?ç) + ("e'" ?é) + ("e/" ?æ) + ("e\"" ?ë) + ("e^" ?ê) + ("e`" ?è) + ("g~" ?ğ) + ("i'" ?í) + ("i/" ?ı) + ("i\"" ?ï) + ("i^" ?î) + ("i`" ?ì) + ("n~" ?ñ) + ("o'" ?ó) + ("o/" ?ø) + ("o\"" ?ö) + ("o^" ?ô) + ("o`" ?ò) + ("o~" ?õ) + ("s`" ?ş) + ("s/" ?ß) + ("u'" ?ú) + ("u\"" ?ü) + ("u^" ?û) + ("u`" ?ù) + ("y\"" ?ÿ) + + ("A''" ["A'"]) + ("A//" ["A/"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A``" ["A`"]) + ("A~~" ["A~"]) + ("C``" ["C`"]) + ("E''" ["E'"]) + ("E//" ["E/"]) + ("E\"\"" ["E\""]) + ("E^^" ["E^"]) + ("E``" ["E`"]) + ("G~~" ["G~"]) + ("I''" ["I'"]) + ("I//" ["I/"]) + ("I\"\"" ["I\""]) + ("I^^" ["I^"]) + ("I``" ["I`"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O//" ["O/"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("O``" ["O`"]) + ("O~~" ["O~"]) + ("S``" ["S`"]) + ("U''" ["U'"]) + ("U\"\"" ["U\""]) + ("U^^" ["U^"]) + ("U``" ["U`"]) + ("a''" ["a'"]) + ("a//" ["a/"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a``" ["a`"]) + ("a~~" ["a~"]) + ("c``" ["c`"]) + ("e''" ["e'"]) + ("e//" ["e/"]) + ("e\"\"" ["e\""]) + ("e^^" ["e^"]) + ("e``" ["e`"]) + ("g~~" ["g~"]) + ("i''" ["i'"]) + ("i//" ["i/"]) + ("i\"\"" ["i\""]) + ("i^^" ["i^"]) + ("i``" ["i`"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o//" ["o/"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("o``" ["o`"]) + ("o~~" ["o~"]) + ("s``" ["s`"]) + ("s//" ["s/"]) + ("u''" ["u'"]) + ("u\"\"" ["u\""]) + ("u^^" ["u^"]) + ("u``" ["u`"]) + ("y\"\"" ["y\""]) + ) + + + +(quail-define-package + "french-alt-postfix" "French" "FR<" t + "French (Français) input method with postfix modifiers + +` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. +Par exemple: a` -> à e' -> é. + +Ç, «, et » sont produits par C/, <<, et >>. + +En doublant la frappe des diacritiques, ils s'isoleront de la lettre. +Par exemple: e'' -> e' + +Œ est produit par O/." + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A^" ?Â) + ("a`" ?à) + ("a^" ?â) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("I^" ?Î) + ("I\"" ?Ï) + ("i^" ?î) + ("i\"" ?ï) + ("O^" ?Ô) + ("O/" ?Œ) + ("o^" ?ô) + ("o/" ?œ) + ("U`" ?Ù) + ("U^" ?Û) + ("U\"" ?Ü) + ("u`" ?ù) + ("u^" ?û) + ("u\"" ?ü) + ("C/" ?Ç) + ("c/" ?ç) + ("<<" ?«) + (">>" ?») + + ("A``" ["A`"]) + ("A^^" ["A^"]) + ("a``" ["a`"]) + ("a^^" ["a^"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("I^^" ["I^"]) + ("I\"\"" ["I\""]) + ("i^^" ["i^"]) + ("i\"\"" ["i\""]) + ("O^^" ["O^"]) + ("O//" ["O/"]) + ("o^^" ["o^"]) + ("o//" ["o/"]) + ("U``" ["U`"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("u``" ["u`"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("C//" ["C/"]) + ("c//" ["c/"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ) + + + +(quail-define-package + "italian-alt-postfix" "Latin-1" "IT<" t + "Italian (Italiano) input method with postfix modifiers + +a' -> á A' -> Á a` -> à A` -> À i^ -> î << -> « +e' -> é E' -> É e` -> è E` -> È I^ -> Î >> -> » +i' -> í I' -> Í i` -> ì I` -> Ì o_ -> º +o' -> ó O' -> Ó o` -> ò O` -> Ò a_ -> ª +u' -> ú U' -> Ú u` -> ù U` -> Ù + +This method is for purists who like accents the old way. + +Doubling the postfix separates the letter and postfix: e.g. a`` -> a` +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A'" ?Á) + ("a`" ?à) + ("a'" ?á) + ("E`" ?È) + ("E'" ?É) + ("e`" ?è) + ("e'" ?é) + ("I`" ?Ì) + ("i`" ?ì) + ("I'" ?Í) + ("i'" ?í) + ("I^" ?Î) + ("i^" ?î) + ("O`" ?Ò) + ("o`" ?ò) + ("O'" ?Ó) + ("o'" ?ó) + ("U`" ?Ù) + ("u`" ?ù) + ("U'" ?Ú) + ("u'" ?ú) + ("<<" ?«) + (">>" ?») + ("o_" ?º) + ("a_" ?ª) + + ("A``" ["A`"]) + ("A''" ["A'"]) + ("a``" ["a`"]) + ("a''" ["a'"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("I``" ["I`"]) + ("i``" ["i`"]) + ("I''" ["I'"]) + ("i''" ["i'"]) + ("I^^" ["I^"]) + ("i^^" ["i^"]) + ("O``" ["O`"]) + ("o``" ["o`"]) + ("O''" ["O'"]) + ("o''" ["o'"]) + ("U``" ["U`"]) + ("u``" ["u`"]) + ("U''" ["U'"]) + ("u''" ["u'"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("o__" ["o_"]) + ("a__" ["a_"]) + ) + + +(quail-define-package + "turkish-alt-postfix" "Turkish" "TR«" t + "Turkish (Türkçe) input method with postfix modifiers. +This input method differs from `turkish-postfix' in that +comma is not special (use ` instead). + +turkish-latin-3-alt-postfix is an obsolete alias for turkish-alt-postfix. + +Note for I, ı, İ, i. + +A^ ->  +C` -> Ç +G^ -> Ğ +I -> I +i -> ı +I/ -> İ +i/ -> i +O\" -> Ö +S` -> Ş +U\" -> Ü +U^ -> Û + +Doubling the postfix separates the letter and postfix: e.g. a^^ -> a^ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A^" ?Â) + ("a^" ?â) + ("C`" ?Ç) + ("c`" ?ç) + ("G^" ?Ğ) + ("g^" ?ğ) + ("I/" ?İ) + ("i" ?ı) + ("i/" ?i) + ("O\"" ?Ö) + ("o\"" ?ö) + ("S`" ?Ş) + ("s`" ?ş) + ("U\"" ?Ü) + ("u\"" ?ü) + ("U^" ?Û) + ("u^" ?û) + + ("A^^" ["A^"]) + ("a^^" ["a^"]) + ("C``" ["C`"]) + ("c``" ["c`"]) + ("G^^" ["G^"]) + ("g^^" ["g^"]) + ("I//" ["I/"]) + ("i" ["i"]) + ("i//" ["i/"]) + ("O\"\"" ["O\""]) + ("o\"\"" ["o\""]) + ("S``" ["S`"]) + ("s``" ["s`"]) + ("U\"\"" ["U\""]) + ("u\"\"" ["u\""]) + ("U^^" ["U^"]) + ("u^^" ["u^"]) + ) + +;; Backwards compatibility. +(push (cons "turkish-latin-3-alt-postfix" + (cdr (assoc "turkish-alt-postfix" quail-package-alist))) + quail-package-alist) + +;; Dutch Quail input method derived from the one in Yudit by Roman +;; Czyborra. +(quail-define-package + "dutch" "Dutch" "NL" t + "Dutch character mixfix input method. +Caters for French and Turkish as well as Dutch. + + | | examples + ------------+---------+---------- + others | | fl. -> ƒ eur. -> € ij -> ij IJ -> IJ + ------------+---------+---------- + | postfix | + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + Turkish | various | i/ -> ı s, -> ş g^ -> ğ I/ -> İ + | | S, -> Ş G^ -> Ğ + ------------+---------+---------- + | prefix | + ------------+---------+---------- + diaeresis | \" | \"a -> ä + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("fl." ?ƒ) ;; LATIN SMALL LETTER F WITH HOOK (florin currency symbol) + ("eur." ?€) ;; EURO SIGN + ;; “The 25th letter of the Dutch alphabet.” + ("ij" ?ij) ;; LATIN SMALL LIGATURE IJ + ("IJ" ?IJ) ;; LATIN CAPITAL LIGATURE IJ + ;; “Trema on the second letter of vowel pair.” Yudit uses `:', not `"'. + ("\"a" ?ä) ;; LATIN SMALL LETTER A WITH DIAERESIS + ("\"e" ?ë) ;; LATIN SMALL LETTER E WITH DIAERESIS + ("\"i" ?ï) ;; LATIN SMALL LETTER I WITH DIAERESIS + ("\"o" ?ö) ;; LATIN SMALL LETTER O WITH DIAERESIS + ("\"u" ?ü) ;; LATIN SMALL LETTER U WITH DIAERESIS + ("\"A" ?Ä) ;; LATIN CAPITAL LETTER A WITH DIAERESIS + ("\"E" ?Ë) ;; LATIN CAPITAL LETTER E WITH DIAERESIS + ("\"I" ?Ï) ;; LATIN CAPITAL LETTER I WITH DIAERESIS + ("\"O" ?Ö) ;; LATIN CAPITAL LETTER O WITH DIAERESIS + ("\"U" ?Ü) ;; LATIN CAPITAL LETTER U WITH DIAERESIS + ;; “Acute, marking emphasis on long vowels”: + ("a'" ?á) ;; LATIN SMALL LETTER A WITH ACUTE + ("e'" ?é) ;; LATIN SMALL LETTER E WITH ACUTE + ("i'" ?í) ;; LATIN SMALL LETTER I WITH ACUTE + ("o'" ?ó) ;; LATIN SMALL LETTER O WITH ACUTE + ("u'" ?ú) ;; LATIN SMALL LETTER U WITH ACUTE + ("A'" ?Á) ;; LATIN CAPITAL LETTER A WITH ACUTE + ("E'" ?É) ;; LATIN CAPITAL LETTER E WITH ACUTE + ("I'" ?Í) ;; LATIN CAPITAL LETTER I WITH ACUTE + ("O'" ?Ó) ;; LATIN CAPITAL LETTER O WITH ACUTE + ("U'" ?Ú) ;; LATIN CAPITAL LETTER U WITH ACUTE + ;; “Grave, marking emphasis on short vowels”: + ("a`" ?à) ;; LATIN SMALL LETTER A WITH GRAVE + ("e`" ?è) ;; LATIN SMALL LETTER E WITH GRAVE + ("i`" ?ì) ;; LATIN SMALL LETTER I WITH GRAVE + ("o`" ?ò) ;; LATIN SMALL LETTER O WITH GRAVE + ("u`" ?ù) ;; LATIN SMALL LETTER U WITH GRAVE + ("A`" ?À) ;; LATIN CAPITAL LETTER A WITH GRAVE + ("E`" ?È) ;; LATIN CAPITAL LETTER E WITH GRAVE + ("I`" ?Ì) ;; LATIN CAPITAL LETTER I WITH GRAVE + ("O`" ?Ò) ;; LATIN CAPITAL LETTER O WITH GRAVE + ("U`" ?Ù) ;; LATIN CAPITAL LETTER U WITH GRAVE + ;; “Cater for the use of many French words and use of the circumflex + ;; in Frisian.” Yudit used `;' for cedilla. + ("c," ?ç) ;; LATIN SMALL LETTER C WITH CEDILLA + ("C," ?Ç) ;; LATIN CAPITAL LETTER C WITH CEDILLA + ("a^" ?â) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX + ("e^" ?ê) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX + ("i^" ?î) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX + ("o^" ?ô) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX + ("u^" ?û) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX + ("A^" ?Â) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX + ("E^" ?Ê) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX + ("I^" ?Î) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX + ("O^" ?Ô) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX + ("U^" ?Û) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX + ;; “Follow the example of the Dutch POSIX locale, using ISO-8859-9 to + ;; cater to the many Turks in Dutch society.” Perhaps German methods + ;; should do so too. Follow turkish-alt-postfix here. + ("i/" ?ı) ;; LATIN SMALL LETTER I WITH NO DOT + ("s," ?ş) ;; LATIN SMALL LETTER S WITH CEDILLA + ("g^" ?ğ) ;; LATIN SMALL LETTER G WITH BREVE + ("I/" ?İ) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE + ("S," ?Ş) ;; LATIN CAPITAL LETTER S WITH CEDILLA + ("G^" ?Ğ) ;; LATIN CAPITAL LETTER G WITH BREVE + ) + +;; Originally from Yudit, discussed with Albertas Agejevas +;; <alga@uosis.mif.vu.lt> +(quail-define-package + "lithuanian-numeric" "Lithuanian" "LtN" t + "Lithuanian numeric input method. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?ą) + ("2" ?č) + ("3" ?ę) + ("4" ?ė) + ("5" ?į) + ("6" ?š) + ("7" ?ų) + ("8" ?ū) + ("9" ?„) + ("0" ?“) + ("=" ?ž) + ("!" ?Ą) + ("@" ?Č) + ("#" ?Ę) + ("$" ?Ė) + ("%" ?Į) + ("^" ?Š) + ("&" ?Ų) + ("*" ?Ū) + ("+" ?Ž)) + +;; From XFree 4.1 /usr/X11R6/lib/X11/xkb/symbols/lt, suggested by +;; Albertas Agejevas <alga@uosis.mif.vu.lt> +(quail-define-package + "lithuanian-keyboard" "Lithuanian" "Lt" t + "Lithuanian standard keyboard input method. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?ą) + ("!" ?Ą) + ("2" ?č) + ("@" ?Č) + ("#" ?Ę) + ("4" ?ė) + ("$" ?Ė) + ("5" ?į) + ("%" ?Į) + ("6" ?š) + ("^" ?Š) + ("7" ?ų) + ("&" ?Ų) + ("9" ?„) + ("0" ?“) + ("=" ?ž) + ("+" ?Ž)) + +;; From XFree 4.1 /usr/X11R6/lib/X11/xkb/symbols/lv +(quail-define-package + "latvian-keyboard" "Latvian" "Lv" t + "Latvian standard keyboard input method. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("4" ?€) + ("$" ?¢) + ("e" ?ē) + ("E" ?Ē) + ("r" ?ŗ) + ("R" ?Ŗ) + ("u" ?ū) + ("U" ?Ū) + ("i" ?ī) + ("I" ?Ī) + ("o" ?ō) + ("O" ?Ō) + ("a" ?ā) + ("A" ?Ā) + ("s" ?š) + ("S" ?Š) + ("g" ?ģ) + ("G" ?Ģ) + ("k" ?ķ) + ("K" ?Ķ) + ("l" ?ļ) + ("L" ?Ļ) + ("\'" ?“) + ("\"" ?„) + ("z" ?ž) + ("Z" ?Ž) + ("c" ?č) + ("C" ?Č) + ("n" ?ņ) + ("N" ?Ņ)) + +(quail-define-package + "latin-alt-postfix" "Latin" "L<" t + "Latin character input method with postfix modifiers. +This is the union of various input methods originally made for input +of characters from a single Latin-N charset. + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + cedilla | /` | c/ -> ç c` -> ç + ogonek | ` | a` -> ą + breve | ~ | a~ -> ă + caron | ~ | c~ -> č + dbl. acute | : | o: -> ő + ring | ` | u` -> ů + dot | ` | z` -> ż + stroke | / | d/ -> đ + nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø + others | /<> | s/ -> ß ?/ -> ¿ !/ -> ¡ + | various | << -> « >> -> » o_ -> º a_ -> ª + +It would be natural to use comma for cedillas, but that would be +inconvenient in practice because commas are needed very often after a +letter. + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +;; Fixme: ¦ § ¨ © ¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ ¼ ½ ¾ × ÷ +(quail-define-rules + (" _" ? ) + ("!/" ?¡) + ("//" ?°) + ("<<" ?«) + (">>" ?») + ("?/" ?¿) + ("$/" ?£) + ("$/" ?¤) + ("A'" ?Á) + ("A-" ?Ā) + ("A/" ?Å) + ("A\"" ?Ä) + ("A^" ?Â) + ("A`" ?À) + ("A`" ?Ą) + ("A~" ?Ã) + ("A~" ?Ă) + ("C'" ?Ć) + ("C/" ?Ç) + ("C/" ?Ċ) + ("C^" ?Ĉ) + ("C`" ?Ç) + ("C~" ?Č) + ("D/" ?Ð) + ("D/" ?Đ) + ("D~" ?Ď) + ("E'" ?É) + ("E-" ?Ē) + ("E/" ?Æ) + ("E\"" ?Ë) + ("E^" ?Ê) + ("E`" ?È) + ("E`" ?Ę) + ("E~" ?Ė) + ("E~" ?Ě) + ("G/" ?Ġ) + ("G^" ?Ĝ) + ("G`" ?Ģ) + ("G~" ?Ğ) + ("H/" ?Ħ) + ("H^" ?Ĥ) + ("I'" ?Í) + ("I-" ?Ī) + ("I/" ?İ) + ("I\"" ?Ï) + ("I^" ?Î) + ("I`" ?Ì) + ("I`" ?Į) + ("I~" ?Ĩ) + ("J^" ?Ĵ) + ("K`" ?Ķ) + ("L'" ?Ĺ) + ("L/" ?Ł) + ("L`" ?Ļ) + ("L~" ?Ľ) + ("N'" ?Ń) + ("N/" ?Ŋ) + ("N`" ?Ņ) + ("N~" ?Ñ) + ("N~" ?Ň) + ("O'" ?Ó) + ("O-" ?Ō) + ("O/" ?Ø) + ("O/" ?Œ) + ("O:" ?Ő) + ("O\"" ?Ö) + ("O^" ?Ô) + ("O`" ?Ò) + ("O~" ?Õ) + ("R'" ?Ŕ) + ("R`" ?Ŗ) + ("R~" ?Ř) + ("S'" ?Ś) + ("S^" ?Ŝ) + ("S`" ?Ş) + ("S~" ?Š) + ("T/" ?Þ) + ("T/" ?Ŧ) + ("T`" ?Ţ) + ("T~" ?Ť) + ("U'" ?Ú) + ("U-" ?Ū) + ("U:" ?Ű) + ("U\"" ?Ü) + ("U^" ?Û) + ("U`" ?Ù) + ("U`" ?Ů) + ("U`" ?Ų) + ("U~" ?Ũ) + ("U~" ?Ŭ) + ("Y'" ?Ý) + ("Y\"" ?Ÿ) + ("Y=" ?¥) + ("Z'" ?Ź) + ("Z/" ?Ż) + ("Z`" ?Ż) + ("Z~" ?Ž) + ("a'" ?á) + ("a-" ?ā) + ("a/" ?å) + ("a\"" ?ä) + ("a^" ?â) + ("a_" ?ª) + ("a`" ?à) + ("a`" ?ą) + ("a~" ?ã) + ("a~" ?ă) + ("c'" ?ć) + ("c/" ?ç) + ("c/" ?ċ) + ("c/" ?¢) + ("c^" ?ĉ) + ("c`" ?ç) + ("c~" ?č) + ("d/" ?ð) + ("d/" ?đ) + ("d~" ?ď) + ("e'" ?é) + ("e-" ?ē) + ("e/" ?æ) + ("e\"" ?ë) + ("e^" ?ê) + ("e`" ?è) + ("e`" ?ę) + ("e~" ?ė) + ("e~" ?ě) + ("e=" ?€) + ("g/" ?ġ) + ("g^" ?ĝ) + ("g`" ?ģ) + ("g~" ?ğ) + ("h/" ?ħ) + ("h^" ?ĥ) + ("i'" ?í) + ("i-" ?ī) + ("i/" ?ı) + ("i\"" ?ï) + ("i^" ?î) + ("i`" ?ì) + ("i`" ?į) + ("i~" ?ĩ) + ("j^" ?ĵ) + ("k/" ?ĸ) + ("k`" ?ķ) + ("l'" ?ĺ) + ("l/" ?ł) + ("l`" ?ļ) + ("l~" ?ľ) + ("n'" ?ń) + ("n/" ?ŋ) + ("n`" ?ņ) + ("n~" ?ñ) + ("n~" ?ň) + ("o'" ?ó) + ("o-" ?ō) + ("o/" ?ø) + ("o/" ?œ) + ("o:" ?ő) + ("o\"" ?ö) + ("o^" ?ô) + ("o_" ?º) + ("o`" ?ò) + ("o~" ?õ) + ("r'" ?ŕ) + ("r`" ?ŗ) + ("r~" ?ř) + ("s'" ?ś) + ("s/" ?ß) + ("s^" ?ŝ) + ("s`" ?ş) + ("s~" ?š) + ("t/" ?þ) + ("t/" ?ŧ) + ("t`" ?ţ) + ("t~" ?ť) + ("u'" ?ú) + ("u-" ?ū) + ("u:" ?ű) + ("u\"" ?ü) + ("u^" ?û) + ("u`" ?ù) + ("u`" ?ů) + ("u`" ?ų) + ("u~" ?ũ) + ("u~" ?ŭ) + ("y'" ?ý) + ("y\"" ?ÿ) + ("z'" ?ź) + ("z/" ?ż) + ("z`" ?ż) + ("z~" ?ž) + + (" __" [" _"]) + ("!//" ["!/"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("?//" ["?/"]) + ("///" ["//"]) + ("$//" ["$/"]) + ("A''" ["A'"]) + ("A--" ["A-"]) + ("A//" ["A/"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A``" ["A`"]) + ("A~~" ["A~"]) + ("C''" ["C'"]) + ("C//" ["C/"]) + ("C^^" ["C^"]) + ("C``" ["C`"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("D~~" ["D~"]) + ("E''" ["E'"]) + ("E--" ["E-"]) + ("E//" ["E/"]) + ("E\"\"" ["E\""]) + ("E^^" ["E^"]) + ("E``" ["E`"]) + ("E~~" ["E~"]) + ("G//" ["G/"]) + ("G^^" ["G^"]) + ("G``" ["G`"]) + ("G~~" ["G~"]) + ("H//" ["H/"]) + ("H^^" ["H^"]) + ("I''" ["I'"]) + ("I--" ["I-"]) + ("I//" ["I/"]) + ("I\"\"" ["I\""]) + ("I^^" ["I^"]) + ("I``" ["I`"]) + ("I~~" ["I~"]) + ("J^^" ["J^"]) + ("K``" ["K`"]) + ("L''" ["L'"]) + ("L//" ["L/"]) + ("L``" ["L`"]) + ("L~~" ["L~"]) + ("N''" ["N'"]) + ("N//" ["N/"]) + ("N``" ["N`"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O--" ["O-"]) + ("O//" ["O/"]) + ("O::" ["O:"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("O``" ["O`"]) + ("O~~" ["O~"]) + ("R''" ["R'"]) + ("R``" ["R`"]) + ("R~~" ["R~"]) + ("S''" ["S'"]) + ("S^^" ["S^"]) + ("S``" ["S`"]) + ("S~~" ["S~"]) + ("T//" ["T/"]) + ("T``" ["T`"]) + ("T~~" ["T~"]) + ("U''" ["U'"]) + ("U--" ["U-"]) + ("U::" ["U:"]) + ("U\"\"" ["U\""]) + ("U^^" ["U^"]) + ("U``" ["U`"]) + ("U~~" ["U~"]) + ("Y''" ["Y'"]) + ("Z''" ["Z'"]) + ("Z//" ["Z/"]) + ("Z``" ["Z`"]) + ("Z~~" ["Z~"]) + ("a''" ["a'"]) + ("a--" ["a-"]) + ("a//" ["a/"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a__" ["a_"]) + ("a``" ["a`"]) + ("a~~" ["a~"]) + ("c''" ["c'"]) + ("c//" ["c/"]) + ("c^^" ["c^"]) + ("c``" ["c`"]) + ("c~~" ["c~"]) + ("d//" ["d/"]) + ("d~~" ["d~"]) + ("e''" ["e'"]) + ("e--" ["e-"]) + ("e//" ["e/"]) + ("e\"\"" ["e\""]) + ("e^^" ["e^"]) + ("e``" ["e`"]) + ("e~~" ["e~"]) + ("e==" ["e="]) + ("g//" ["g/"]) + ("g^^" ["g^"]) + ("g``" ["g`"]) + ("g~~" ["g~"]) + ("h//" ["h/"]) + ("h^^" ["h^"]) + ("i''" ["i'"]) + ("i--" ["i-"]) + ("i//" ["i/"]) + ("i\"\"" ["i\""]) + ("i^^" ["i^"]) + ("i``" ["i`"]) + ("i~~" ["i~"]) + ("j^^" ["j^"]) + ("k//" ["k/"]) + ("k``" ["k`"]) + ("l''" ["l'"]) + ("l//" ["l/"]) + ("l``" ["l`"]) + ("l~~" ["l~"]) + ("n''" ["n'"]) + ("n//" ["n/"]) + ("n``" ["n`"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o--" ["o-"]) + ("o//" ["o/"]) + ("o::" ["o:"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("o__" ["o_"]) + ("o``" ["o`"]) + ("o~~" ["o~"]) + ("r''" ["r'"]) + ("r``" ["r`"]) + ("r~~" ["r~"]) + ("s''" ["s'"]) + ("s//" ["s/"]) + ("s^^" ["s^"]) + ("s``" ["s`"]) + ("s~~" ["s~"]) + ("t//" ["t/"]) + ("t``" ["t`"]) + ("t~~" ["t~"]) + ("u''" ["u'"]) + ("u--" ["u-"]) + ("u::" ["u:"]) + ("u\"\"" ["u\""]) + ("u^^" ["u^"]) + ("u``" ["u`"]) + ("u~~" ["u~"]) + ("y''" ["y'"]) + ("y\"\"" ["y\""]) + ("z''" ["z'"]) + ("z//" ["z/"]) + ("z``" ["z`"]) + ("z~~" ["z~"]) + ) + +;;; latin-alt.el ends here diff --git a/lisp/leim/quail/latin-ltx.el b/lisp/leim/quail/latin-ltx.el new file mode 100644 index 00000000000..d76f59ebbce --- /dev/null +++ b/lisp/leim/quail/latin-ltx.el @@ -0,0 +1,738 @@ +;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +;; 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Author: TAKAHASHI Naoto <ntakahas@m17n.org> +;; Dave Love <fx@gnu.org> +;; Keywords: multilingual, input, Greek, i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "TeX" "UTF-8" "\\" t + "LaTeX-like input method for many characters. +These characters are from the charsets used by the `utf-8' coding +system, including many technical ones. Examples: + \\'a -> á \\`{a} -> à + \\pi -> π \\int -> ∫ ^1 -> ¹" + + '(("\t" . quail-completion)) + t t nil nil nil nil nil nil nil t) + +(eval-when-compile + (require 'cl-lib) + + (defconst latin-ltx--mark-map + '(("DOT BELOW" . "d") + ("DOT ABOVE" . ".") + ("OGONEK" . "k") + ("CEDILLA" . "c") + ("CARON" . "v") + ;; ("HOOK ABOVE" . ??) + ("MACRON" . "=") + ("BREVE" . "u") + ("TILDE" . "~") + ("GRAVE" . "`") + ("CIRCUMFLEX" . "^") + ("DIAERESIS" . "\"") + ("DOUBLE ACUTE" . "H") + ("ACUTE" . "'"))) + + (defconst latin-ltx--mark-re (regexp-opt (mapcar #'car latin-ltx--mark-map))) + + (defun latin-ltx--ascii-p (char) + (and (characterp char) (< char 128))) + + (defmacro latin-ltx--define-rules (&rest rules) + (load "uni-name") + (let ((newrules ())) + (dolist (rule rules) + (pcase rule + (`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail rule. + (`(,seq ,re) + (let ((count 0) + (re (eval re t))) + (dolist (pair (ucs-names)) + (let ((name (car pair)) + (char (cdr pair))) + (when (and (characterp char) ;; Ignore char-ranges. + (string-match re name)) + (let ((keys (if (stringp seq) + (replace-match seq nil nil name) + (funcall seq name char)))) + (if (listp keys) + (dolist (x keys) + (setq count (1+ count)) + (push (list x char) newrules)) + (setq count (1+ count)) + (push (list keys char) newrules)))))) + ;; (message "latin-ltx: %d mappings for %S" count re) + )))) + (setq newrules (delete-dups newrules)) + (let ((rules (copy-sequence newrules))) + (while rules + (let ((rule (pop rules))) + (when (assoc (car rule) rules) + (let ((conflicts (list (cadr rule))) + (tail rules) + c) + (while (setq c (assoc (car rule) tail)) + (push (cadr c) conflicts) + (setq tail (cdr (memq c tail))) + (setq rules (delq c rules))) + (message "Conflict for %S: %S" + (car rule) (apply #'string conflicts))))))) + (let ((inputs (mapcar #'car newrules))) + (setq inputs (delete-dups inputs)) + (message "latin-ltx: %d rules (+ %d conflicts)!" + (length inputs) (- (length newrules) (length inputs)))) + `(quail-define-rules ,@(nreverse newrules))))) + +(latin-ltx--define-rules + ("!`" ?¡) + ("\\pounds" ?£) ;; ("{\\pounds}" ?£) + ("\\S" ?§) ;; ("{\\S}" ?§) + ("$^a$" ?ª) + ("$\\pm$" ?±) ("\\pm" ?±) + ("$^2$" ?²) + ("$^3$" ?³) + ("\\P" ?¶) ;; ("{\\P}" ?¶) + ;; Fixme: Yudit has the equivalent of ("\\cdot" ?⋅), for U+22C5, DOT + ;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to + ;; \cdot. + ("$\\cdot$" ?·) ("\\cdot" ?·) + ("$^1$" ?¹) + ("$^o$" ?º) + ("?`" ?¿) + + ((lambda (name char) + (let* ((c (if (match-end 1) + (downcase (match-string 2 name)) + (match-string 2 name))) + (mark1 (cdr (assoc (match-string 3 name) latin-ltx--mark-map))) + (mark2 (if (match-end 4) + (cdr (assoc (match-string 4 name) latin-ltx--mark-map)))) + (marks (if mark2 (concat mark1 "\\" mark2) mark1))) + (cl-assert mark1) + (cons (format "\\%s{%s}" marks c) + ;; Exclude "d" because we use "\\dh" for something else. + (unless (member (or mark2 mark1) '("d"));; "k" + (list (format "\\%s%s" marks c)))))) + (concat "\\`LATIN \\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH \\(" + latin-ltx--mark-re "\\)\\(?: AND \\(" + latin-ltx--mark-re "\\)\\)?\\'")) + + ((lambda (name char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map)))) + (cl-assert mark) + (list (format "\\%s" mark)))) + (concat "\\`COMBINING \\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'")) + + ((lambda (name char) + (unless (latin-ltx--ascii-p char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map)))) + (cl-assert mark) + (list (format "\\%s{}" mark))))) + (concat "\\`\\(?:SPACING \\)?\\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'")) + + ("\\AA" ?Å) ;; ("{\\AA}" ?Å) + ("\\AE" ?Æ) ;; ("{\\AE}" ?Æ) + + ("$\\times$" ?×) ("\\times" ?×) + ("\\O" ?Ø) ;; ("{\\O}" ?Ø) + ("\\ss" ?ß) ;; ("{\\ss}" ?ß) + + ("\\aa" ?å) ;; ("{\\aa}" ?å) + ("\\ae" ?æ) ;; ("{\\ae}" ?æ) + + ("$\\div$" ?÷) ("\\div" ?÷) + ("\\o" ?ø) ;; ("{\\o}" ?ø) + + ("\\~{\\i}" ?ĩ) + ("\\={\\i}" ?ī) + ("\\u{\\i}" ?ĭ) + + ("\\i" ?ı) ;; ("{\\i}" ?ı) + ("\\^{\\j}" ?ĵ) + + ("\\L" ?Ł) ;; ("{\\L}" ?Ł) + ("\\l" ?ł) ;; ("{\\l}" ?ł) + + ("\\H" ?̋) + ("\\H{}" ?˝) + ("\\U{o}" ?ő) ("\\Uo" ?ő) ;; FIXME: Was it just a typo? + + ("\\OE" ?Œ) ;; ("{\\OE}" ?Œ) + ("\\oe" ?œ) ;; ("{\\oe}" ?œ) + + ("\\v{\\i}" ?ǐ) + + ("\\={\\AE}" ?Ǣ) ("\\=\\AE" ?Ǣ) + ("\\={\\ae}" ?ǣ) ("\\=\\ae" ?ǣ) + + ("\\v{\\j}" ?ǰ) + ("\\'{\\AE}" ?Ǽ) ("\\'\\AE" ?Ǽ) + ("\\'{\\ae}" ?ǽ) ("\\'\\ae" ?ǽ) + ("\\'{\\O}" ?Ǿ) ("\\'\\O" ?Ǿ) + ("\\'{\\o}" ?ǿ) ("\\'\\o" ?ǿ) + + ("\\," ? ) + ("\\/" ?) + ("\\:" ? ) + ("\\;" ? ) + + ((lambda (name char) + (let* ((base (concat (match-string 1 name) (match-string 3 name))) + (basechar (cdr (assoc base (ucs-names))))) + (when (latin-ltx--ascii-p basechar) + (string (if (match-end 2) ?^ ?_) basechar)))) + "\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)") + + ((lambda (name _char) + (let* ((basename (match-string 2 name)) + (name (if (match-end 1) (capitalize basename) (downcase basename)))) + (concat "^" (if (> (length name) 1) "\\") name))) + "\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'") + + ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name)))) + ;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'") + ;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'") + ("^o_" ?º) + ("^{SM}" ?℠) + ("^{TEL}" ?℡) + ("^{TM}" ?™) + + ("\\b" ?̱) + + ("\\rq" ?’) + + ;; FIXME: Provides some useful entries (yen, euro, copyright, registered, + ;; currency, minus, micro), but also a lot of dubious ones. + ((lambda (name char) + (unless (or (latin-ltx--ascii-p char) + ;; We prefer COMBINING LONG SOLIDUS OVERLAY for \not. + (member name '("NOT SIGN"))) + (concat "\\" (downcase (match-string 1 name))))) + "\\`\\([^- ]+\\) SIGN\\'") + + ((lambda (name char) + (concat "\\" (funcall (if (match-end 1) #' capitalize #'downcase) + (match-string 2 name)))) + "\\`GREEK \\(?:SMALL\\|CAPITA\\(L\\)\\) LETTER \\([^- ]+\\)\\'") + + ("\\Box" ?□) + ("\\Bumpeq" ?≎) + ("\\Cap" ?⋒) + ("\\Cup" ?⋓) + ("\\Diamond" ?◇) + ("\\Downarrow" ?⇓) + ("\\H{o}" ?ő) + ("\\Im" ?ℑ) + ("\\Join" ?⋈) + ("\\Leftarrow" ?⇐) + ("\\Leftrightarrow" ?⇔) + ("\\Ll" ?⋘) + ("\\Lleftarrow" ?⇚) + ("\\Longleftarrow" ?⇐) + ("\\Longleftrightarrow" ?⇔) + ("\\Longrightarrow" ?⇒) + ("\\Lsh" ?↰) + ("\\Re" ?ℜ) + ("\\Rightarrow" ?⇒) + ("\\Rrightarrow" ?⇛) + ("\\Rsh" ?↱) + ("\\Subset" ?⋐) + ("\\Supset" ?⋑) + ("\\Uparrow" ?⇑) + ("\\Updownarrow" ?⇕) + ("\\Vdash" ?⊩) + ("\\Vert" ?‖) + ("\\Vvdash" ?⊪) + ("\\aleph" ?ℵ) + ("\\amalg" ?∐) + ("\\angle" ?∠) + ("\\approx" ?≈) + ("\\approxeq" ?≊) + ("\\ast" ?∗) + ("\\asymp" ?≍) + ("\\backcong" ?≌) + ("\\backepsilon" ?∍) + ("\\backprime" ?‵) + ("\\backsim" ?∽) + ("\\backsimeq" ?⋍) + ("\\backslash" ?\\) + ("\\barwedge" ?⊼) + ("\\because" ?∵) + ("\\beth" ?ℶ) + ("\\between" ?≬) + ("\\bigcap" ?⋂) + ("\\bigcirc" ?◯) + ("\\bigcup" ?⋃) + ("\\bigstar" ?★) + ("\\bigtriangledown" ?▽) + ("\\bigtriangleup" ?△) + ("\\bigvee" ?⋁) + ("\\bigwedge" ?⋀) + ("\\blacklozenge" ?✦) + ("\\blacksquare" ?▪) + ("\\blacktriangle" ?▴) + ("\\blacktriangledown" ?▾) + ("\\blacktriangleleft" ?◂) + ("\\blacktriangleright" ?▸) + ("\\bot" ?⊥) + ("\\bowtie" ?⋈) + ("\\boxminus" ?⊟) + ("\\boxplus" ?⊞) + ("\\boxtimes" ?⊠) + ("\\bullet" ?•) + ("\\bumpeq" ?≏) + ("\\cap" ?∩) + ("\\cdots" ?⋯) + ("\\centerdot" ?·) + ("\\checkmark" ?✓) + ("\\chi" ?χ) + ("\\circ" ?∘) + ("\\circeq" ?≗) + ("\\circlearrowleft" ?↺) + ("\\circlearrowright" ?↻) + ("\\circledR" ?®) + ("\\circledS" ?Ⓢ) + ("\\circledast" ?⊛) + ("\\circledcirc" ?⊚) + ("\\circleddash" ?⊝) + ("\\clubsuit" ?♣) + ("\\coloneq" ?≔) + ("\\complement" ?∁) + ("\\cong" ?≅) + ("\\coprod" ?∐) + ("\\cup" ?∪) + ("\\curlyeqprec" ?⋞) + ("\\curlyeqsucc" ?⋟) + ("\\curlypreceq" ?≼) + ("\\curlyvee" ?⋎) + ("\\curlywedge" ?⋏) + ("\\curvearrowleft" ?↶) + ("\\curvearrowright" ?↷) + + ("\\dag" ?†) + ("\\dagger" ?†) + ("\\daleth" ?ℸ) + ("\\dashv" ?⊣) + ("\\ddag" ?‡) + ("\\ddagger" ?‡) + ("\\ddots" ?⋱) + ("\\diamond" ?⋄) + ("\\diamondsuit" ?♢) + ("\\divideontimes" ?⋇) + ("\\doteq" ?≐) + ("\\doteqdot" ?≑) + ("\\dotplus" ?∔) + ("\\dotsquare" ?⊡) + ("\\downarrow" ?↓) + ("\\downdownarrows" ?⇊) + ("\\downleftharpoon" ?⇃) + ("\\downrightharpoon" ?⇂) + ("\\ell" ?ℓ) + ("\\emptyset" ?∅) + ("\\eqcirc" ?≖) + ("\\eqcolon" ?≕) + ("\\eqslantgtr" ?⋝) + ("\\eqslantless" ?⋜) + ("\\equiv" ?≡) + ("\\exists" ?∃) + ("\\fallingdotseq" ?≒) + ("\\flat" ?♭) + ("\\forall" ?∀) + ("\\frac1" ?⅟) + ("\\frac12" ?½) + ("\\frac13" ?⅓) + ("\\frac14" ?¼) + ("\\frac15" ?⅕) + ("\\frac16" ?⅙) + ("\\frac18" ?⅛) + ("\\frac23" ?⅔) + ("\\frac25" ?⅖) + ("\\frac34" ?¾) + ("\\frac35" ?⅗) + ("\\frac38" ?⅜) + ("\\frac45" ?⅘) + ("\\frac56" ?⅚) + ("\\frac58" ?⅝) + ("\\frac78" ?⅞) + ("\\frown" ?⌢) + ("\\ge" ?≥) + ("\\geq" ?≥) + ("\\geqq" ?≧) + ("\\geqslant" ?≥) + ("\\gets" ?←) + ("\\gg" ?≫) + ("\\ggg" ?⋙) + ("\\gimel" ?ℷ) + ("\\gnapprox" ?⋧) + ("\\gneq" ?≩) + ("\\gneqq" ?≩) + ("\\gnsim" ?⋧) + ("\\gtrapprox" ?≳) + ("\\gtrdot" ?⋗) + ("\\gtreqless" ?⋛) + ("\\gtreqqless" ?⋛) + ("\\gtrless" ?≷) + ("\\gtrsim" ?≳) + ("\\gvertneqq" ?≩) + ("\\hbar" ?ℏ) + ("\\heartsuit" ?♥) + ("\\hookleftarrow" ?↩) + ("\\hookrightarrow" ?↪) + ("\\iff" ?⇔) + ("\\imath" ?ı) + ("\\in" ?∈) + ("\\infty" ?∞) + ("\\int" ?∫) + ("\\intercal" ?⊺) + ("\\langle" ?⟨) ;; Was ?〈, see bug#12948. + ("\\lbrace" ?{) + ("\\lbrack" ?\[) + ("\\lceil" ?⌈) + ("\\ldots" ?…) + ("\\le" ?≤) + ("\\leadsto" ?↝) + ("\\leftarrow" ?←) + ("\\leftarrowtail" ?↢) + ("\\leftharpoondown" ?↽) + ("\\leftharpoonup" ?↼) + ("\\leftleftarrows" ?⇇) + ;; ("\\leftparengtr" ?〈), see bug#12948. + ("\\leftrightarrow" ?↔) + ("\\leftrightarrows" ?⇆) + ("\\leftrightharpoons" ?⇋) + ("\\leftrightsquigarrow" ?↭) + ("\\leftthreetimes" ?⋋) + ("\\leq" ?≤) + ("\\leqq" ?≦) + ("\\leqslant" ?≤) + ("\\lessapprox" ?≲) + ("\\lessdot" ?⋖) + ("\\lesseqgtr" ?⋚) + ("\\lesseqqgtr" ?⋚) + ("\\lessgtr" ?≶) + ("\\lesssim" ?≲) + ("\\lfloor" ?⌊) + ("\\lhd" ?◁) + ("\\rhd" ?▷) + ("\\ll" ?≪) + ("\\llcorner" ?⌞) + ("\\lnapprox" ?⋦) + ("\\lneq" ?≨) + ("\\lneqq" ?≨) + ("\\lnsim" ?⋦) + ("\\longleftarrow" ?←) + ("\\longleftrightarrow" ?↔) + ("\\longmapsto" ?↦) + ("\\longrightarrow" ?→) + ("\\looparrowleft" ?↫) + ("\\looparrowright" ?↬) + ("\\lozenge" ?✧) + ("\\lq" ?‘) + ("\\lrcorner" ?⌟) + ("\\ltimes" ?⋉) + ("\\lvertneqq" ?≨) + ("\\maltese" ?✠) + ("\\mapsto" ?↦) + ("\\measuredangle" ?∡) + ("\\mho" ?℧) + ("\\mid" ?∣) + ("\\models" ?⊧) + ("\\mp" ?∓) + ("\\multimap" ?⊸) + ("\\nLeftarrow" ?⇍) + ("\\nLeftrightarrow" ?⇎) + ("\\nRightarrow" ?⇏) + ("\\nVDash" ?⊯) + ("\\nVdash" ?⊮) + ("\\nabla" ?∇) + ("\\napprox" ?≉) + ("\\natural" ?♮) + ("\\ncong" ?≇) + ("\\ne" ?≠) + ("\\nearrow" ?↗) + ("\\neg" ?¬) + ("\\neq" ?≠) + ("\\nequiv" ?≢) + ("\\newline" ?
) + ("\\nexists" ?∄) + ("\\ngeq" ?≱) + ("\\ngeqq" ?≱) + ("\\ngeqslant" ?≱) + ("\\ngtr" ?≯) + ("\\ni" ?∋) + ("\\nleftarrow" ?↚) + ("\\nleftrightarrow" ?↮) + ("\\nleq" ?≰) + ("\\nleqq" ?≰) + ("\\nleqslant" ?≰) + ("\\nless" ?≮) + ("\\nmid" ?∤) + ("\\not" ?̸) ;FIXME: conflict with "NOT SIGN" ¬. + ("\\notin" ?∉) + ("\\nparallel" ?∦) + ("\\nprec" ?⊀) + ("\\npreceq" ?⋠) + ("\\nrightarrow" ?↛) + ("\\nshortmid" ?∤) + ("\\nshortparallel" ?∦) + ("\\nsim" ?≁) + ("\\nsimeq" ?≄) + ("\\nsubset" ?⊄) + ("\\nsubseteq" ?⊈) + ("\\nsubseteqq" ?⊈) + ("\\nsucc" ?⊁) + ("\\nsucceq" ?⋡) + ("\\nsupset" ?⊅) + ("\\nsupseteq" ?⊉) + ("\\nsupseteqq" ?⊉) + ("\\ntriangleleft" ?⋪) + ("\\ntrianglelefteq" ?⋬) + ("\\ntriangleright" ?⋫) + ("\\ntrianglerighteq" ?⋭) + ("\\nvDash" ?⊭) + ("\\nvdash" ?⊬) + ("\\nwarrow" ?↖) + ("\\odot" ?⊙) + ("\\oint" ?∮) + ("\\ominus" ?⊖) + ("\\oplus" ?⊕) + ("\\oslash" ?⊘) + ("\\otimes" ?⊗) + ("\\par" ?
) + ("\\parallel" ?∥) + ("\\partial" ?∂) + ("\\perp" ?⊥) + ("\\pitchfork" ?⋔) + ("\\prec" ?≺) + ("\\precapprox" ?≾) + ("\\preceq" ?≼) + ("\\precnapprox" ?⋨) + ("\\precnsim" ?⋨) + ("\\precsim" ?≾) + ("\\prime" ?′) + ("\\prod" ?∏) + ("\\propto" ?∝) + ("\\qed" ?∎) + ("\\quad" ? ) + ("\\rangle" ?⟩) ;; Was ?〉, see bug#12948. + ("\\rbrace" ?}) + ("\\rbrack" ?\]) + ("\\rceil" ?⌉) + ("\\rfloor" ?⌋) + ("\\rightarrow" ?→) + ("\\rightarrowtail" ?↣) + ("\\rightharpoondown" ?⇁) + ("\\rightharpoonup" ?⇀) + ("\\rightleftarrows" ?⇄) + ("\\rightleftharpoons" ?⇌) + ;; ("\\rightparengtr" ?⦔) ;; Was ?〉, see bug#12948. + ("\\rightrightarrows" ?⇉) + ("\\rightthreetimes" ?⋌) + ("\\risingdotseq" ?≓) + ("\\rtimes" ?⋊) + ("\\sbs" ?﹨) + ("\\searrow" ?↘) + ("\\setminus" ?∖) + ("\\sharp" ?♯) + ("\\shortmid" ?∣) + ("\\shortparallel" ?∥) + ("\\sim" ?∼) + ("\\simeq" ?≃) + ("\\smallamalg" ?∐) + ("\\smallsetminus" ?∖) + ("\\smallsmile" ?⌣) + ("\\smile" ?⌣) + ("\\spadesuit" ?♠) + ("\\sphericalangle" ?∢) + ("\\sqcap" ?⊓) + ("\\sqcup" ?⊔) + ("\\sqsubset" ?⊏) + ("\\sqsubseteq" ?⊑) + ("\\sqsupset" ?⊐) + ("\\sqsupseteq" ?⊒) + ("\\square" ?□) + ("\\squigarrowright" ?⇝) + ("\\star" ?⋆) + ("\\straightphi" ?φ) + ("\\subset" ?⊂) + ("\\subseteq" ?⊆) + ("\\subseteqq" ?⊆) + ("\\subsetneq" ?⊊) + ("\\subsetneqq" ?⊊) + ("\\succ" ?≻) + ("\\succapprox" ?≿) + ("\\succcurlyeq" ?≽) + ("\\succeq" ?≽) + ("\\succnapprox" ?⋩) + ("\\succnsim" ?⋩) + ("\\succsim" ?≿) + ("\\sum" ?∑) + ("\\supset" ?⊃) + ("\\supseteq" ?⊇) + ("\\supseteqq" ?⊇) + ("\\supsetneq" ?⊋) + ("\\supsetneqq" ?⊋) + ("\\surd" ?√) + ("\\swarrow" ?↙) + ("\\therefore" ?∴) + ("\\thickapprox" ?≈) + ("\\thicksim" ?∼) + ("\\to" ?→) + ("\\top" ?⊤) + ("\\triangle" ?▵) + ("\\triangledown" ?▿) + ("\\triangleleft" ?◃) + ("\\trianglelefteq" ?⊴) + ("\\triangleq" ?≜) + ("\\triangleright" ?▹) + ("\\trianglerighteq" ?⊵) + ("\\twoheadleftarrow" ?↞) + ("\\twoheadrightarrow" ?↠) + ("\\ulcorner" ?⌜) + ("\\uparrow" ?↑) + ("\\updownarrow" ?↕) + ("\\upleftharpoon" ?↿) + ("\\uplus" ?⊎) + ("\\uprightharpoon" ?↾) + ("\\upuparrows" ?⇈) + ("\\urcorner" ?⌝) + ("\\u{i}" ?ĭ) + ("\\vDash" ?⊨) + + ((lambda (name char) + (concat "\\var" (downcase (match-string 1 name)))) + "\\`GREEK \\([^- ]+\\) SYMBOL\\'") + + ("\\varprime" ?′) + ("\\varpropto" ?∝) + ("\\varsigma" ?ς) ;FIXME: Looks reversed with the non\var. + ("\\vartriangleleft" ?⊲) + ("\\vartriangleright" ?⊳) + ("\\vdash" ?⊢) + ("\\vdots" ?⋮) + ("\\vee" ?∨) + ("\\veebar" ?⊻) + ("\\vert" ?|) + ("\\wedge" ?∧) + ("\\wp" ?℘) + ("\\wr" ?≀) + + ("\\Bbb{N}" ?ℕ) ; AMS commands for blackboard bold + ("\\Bbb{P}" ?ℙ) ; Also sometimes \mathbb. + ("\\Bbb{R}" ?ℝ) + ("\\Bbb{Z}" ?ℤ) + ("--" ?–) + ("---" ?—) + ;; We used to use ~ for NBSP but that's inconvenient and may even look like + ;; a bug where the user finds his ~ key doesn't insert a ~ any more. + ("\\ " ? ) + ("\\\\" ?\\) + ("\\mathscr{I}" ?ℐ) ; moment of inertia + ("\\Smiley" ?☺) + ("\\blacksmiley" ?☻) + ("\\Frowny" ?☹) + ("\\Letter" ?✉) + ("\\permil" ?‰) + ;; Probably not useful enough: + ;; ("\\Telefon" ?☎) ; there are other possibilities + ;; ("\\Radioactivity" ?☢) + ;; ("\Biohazard" ?☣) + ;; ("\\Male" ?♂) + ;; ("\\Female" ?♀) + ;; ("\\Lightning" ?☇) + ;; ("\\Mercury" ?☿) + ;; ("\\Earth" ?♁) + ;; ("\\Jupiter" ?♃) + ;; ("\\Saturn" ?♄) + ;; ("\\Uranus" ?♅) + ;; ("\\Neptune" ?♆) + ;; ("\\Pluto" ?♇) + ;; ("\\Sun" ?☉) + ;; ("\\Writinghand" ?✍) + ;; ("\\Yinyang" ?☯) + ;; ("\\Heart" ?♡) + ("\\dh" ?ð) + ("\\DH" ?Ð) + ("\\th" ?þ) + ("\\TH" ?Þ) + ("\\lnot" ?¬) + ("\\ordfeminine" ?ª) + ("\\ordmasculine" ?º) + ("\\lambdabar" ?ƛ) + ("\\celsius" ?℃) + ;; by analogy with lq, rq: + ("\\ldq" ?\“) + ("\\rdq" ?\”) + ("\\defs" ?≙) ; per fuzz/zed + ;; ("\\sqrt[3]" ?∛) + ("\\llbracket" ?\〚) ; stmaryrd + ("\\rrbracket" ?\〛) + ;; ("\\lbag" ?\〚) ; fuzz + ;; ("\\rbag" ?\〛) + ("\\ldata" ?\《) ; fuzz/zed + ("\\rdata" ?\》) + ;; From Karl Eichwalder. + ("\\glq" ?‚) + ("\\grq" ?‘) + ("\\glqq" ?„) ("\\\"`" ?„) + ("\\grqq" ?“) ("\\\"'" ?“) + ("\\flq" ?‹) + ("\\frq" ?›) + ("\\flqq" ?\«) ("\\\"<" ?\«) + ("\\frqq" ?\») ("\\\">" ?\») + + ("\\-" ?) ;; soft hyphen + + ("\\textmu" ?µ) + ("\\textfractionsolidus" ?⁄) + ("\\textbigcircle" ?⃝) + ("\\textmusicalnote" ?♪) + ("\\textdied" ?✝) + ("\\textcolonmonetary" ?₡) + ("\\textwon" ?₩) + ("\\textnaira" ?₦) + ("\\textpeso" ?₱) + ("\\textlira" ?₤) + ("\\textrecipe" ?℞) + ("\\textinterrobang" ?‽) + ("\\textpertenthousand" ?‱) + ("\\textbaht" ?฿) + ("\\textnumero" ?№) + ("\\textdiscount" ?⁒) + ("\\textestimated" ?℮) + ("\\textopenbullet" ?◦) + ("\\textlquill" ?⁅) + ("\\textrquill" ?⁆) + ("\\textcircledP" ?℗) + ("\\textreferencemark" ?※) + ) + +;;; latin-ltx.el ends here diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el new file mode 100644 index 00000000000..7fa3d88e8c6 --- /dev/null +++ b/lisp/leim/quail/latin-post.el @@ -0,0 +1,2496 @@ +;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*- + +;; Copyright (C) 1997-1998, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 +;; Copyright (C) 2003 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H13PRO009 + +;; Keywords: multilingual, input method, latin, i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Author: TAKAHASHI Naoto <ntakahas@etl.go.jp> + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(quail-define-package + "latin-1-postfix" "Latin-1" "1<" t + "Latin-1 character input method with postfix modifiers + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + cedilla | , | c, -> ç + nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß ?/ -> ¿ !/ -> ¡ // -> ° + | various | << -> « >> -> » o_ -> º a_ -> ª + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A'" ?Á) + ("A^" ?Â) + ("A~" ?Ã) + ("A\"" ?Ä) + ("A/" ?Å) + ("a`" ?à) + ("a'" ?á) + ("a^" ?â) + ("a~" ?ã) + ("a\"" ?ä) + ("a/" ?å) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("E/" ?Æ) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("e/" ?æ) + ("I`" ?Ì) + ("i`" ?ì) + ("I'" ?Í) + ("i'" ?í) + ("I^" ?Î) + ("i^" ?î) + ("I\"" ?Ï) + ("i\"" ?ï) + ("O`" ?Ò) + ("o`" ?ò) + ("O'" ?Ó) + ("o'" ?ó) + ("O^" ?Ô) + ("o^" ?ô) + ("O~" ?Õ) + ("o~" ?õ) + ("O\"" ?Ö) + ("o\"" ?ö) + ("O/" ?Ø) + ("o/" ?ø) + ("U`" ?Ù) + ("u`" ?ù) + ("U'" ?Ú) + ("u'" ?ú) + ("U^" ?Û) + ("u^" ?û) + ("U\"" ?Ü) + ("u\"" ?ü) + ("Y'" ?Ý) + ("y'" ?ý) + ("y\"" ?ÿ) + ("D/" ?Ð) + ("d/" ?ð) + ("T/" ?Þ) + ("t/" ?þ) + ("s/" ?ß) + ("C," ?Ç) + ("c," ?ç) + ("N~" ?Ñ) + ("n~" ?ñ) + ("?/" ?¿) + ("!/" ?¡) + ("<<" ?«) + (">>" ?») + ("o_" ?º) + ("a_" ?ª) + ("//" ?°) + + ("A``" ["A`"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("A\"\"" ["A\""]) + ("A//" ["A/"]) + ("a``" ["a`"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("a\"\"" ["a\""]) + ("a//" ["a/"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("E//" ["E/"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("e//" ["e/"]) + ("I``" ["I`"]) + ("i``" ["i`"]) + ("I''" ["I'"]) + ("i''" ["i'"]) + ("I^^" ["I^"]) + ("i^^" ["i^"]) + ("I\"\"" ["I\""]) + ("i\"\"" ["i\""]) + ("O``" ["O`"]) + ("o``" ["o`"]) + ("O''" ["O'"]) + ("o''" ["o'"]) + ("O^^" ["O^"]) + ("o^^" ["o^"]) + ("O~~" ["O~"]) + ("o~~" ["o~"]) + ("O\"\"" ["O\""]) + ("o\"\"" ["o\""]) + ("O//" ["O/"]) + ("o//" ["o/"]) + ("U``" ["U`"]) + ("u``" ["u`"]) + ("U''" ["U'"]) + ("u''" ["u'"]) + ("U^^" ["U^"]) + ("u^^" ["u^"]) + ("U\"\"" ["U\""]) + ("u\"\"" ["u\""]) + ("Y''" ["Y'"]) + ("y''" ["y'"]) + ("y\"\"" ["y\""]) + ("D//" ["D/"]) + ("d//" ["d/"]) + ("T//" ["T/"]) + ("t//" ["t/"]) + ("s//" ["s/"]) + ("C,," ["C,"]) + ("c,," ["c,"]) + ("N~~" ["N~"]) + ("n~~" ["n~"]) + ("?//" ["?/"]) + ("!//" ["!/"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("o__" ["o_"]) + ("a__" ["a_"]) + ("///" ["//"]) + ) + +(quail-define-package + "latin-2-postfix" "Latin-2" "2<" t + "Latin-2 character input method with postfix modifiers + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + ogonek | , | a, -> ą + diaeresis | \" | a\" -> ä + circumflex | ^ | a^ -> â + breve | ~ | a~ -> ă + cedilla | , | c, -> ç + caron | ~ | c~ -> č + dbl. acute | : | o: -> ő + ring | . | u. -> ů + dot | . | z. -> ż + stroke | / | d/ -> đ + others | / | s/ -> ß + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("A," ?Ą) + ("A\"" ?Ä) + ("A^" ?Â) + ("A~" ?Ă) + ("C'" ?Ć) + ("C," ?Ç) + ("C~" ?Č) + ("D/" ?Đ) + ("D~" ?Ď) + ("E'" ?É) + ("E," ?Ę) + ("E\"" ?Ë) + ("E~" ?Ě) + ("I'" ?Í) + ("I^" ?Î) + ("L'" ?Ĺ) + ("L/" ?Ł) + ("L~" ?Ľ) + ("N'" ?Ń) + ("N~" ?Ň) + ("O'" ?Ó) + ("O:" ?Ő) + ("O\"" ?Ö) + ("O^" ?Ô) + ("R'" ?Ŕ) + ("R~" ?Ř) + ("S'" ?Ś) + ("S," ?Ş) + ("S~" ?Š) + ("T," ?Ţ) + ("T~" ?Ť) + ("U'" ?Ú) + ("U:" ?Ű) + ("U\"" ?Ü) + ("U." ?Ů) + ("Y'" ?Ý) + ("Z'" ?Ź) + ("Z." ?Ż) + ("Z~" ?Ž) + ("a'" ?á) + ("a," ?ą) + ("a\"" ?ä) + ("a^" ?â) + ("a~" ?ă) + ("c'" ?ć) + ("c," ?ç) + ("c~" ?č) + ("d/" ?đ) + ("d~" ?ď) + ("e'" ?é) + ("e," ?ę) + ("e\"" ?ë) + ("e~" ?ě) + ("i'" ?í) + ("i^" ?î) + ("l'" ?ĺ) + ("l/" ?ł) + ("l~" ?ľ) + ("n'" ?ń) + ("n~" ?ň) + ("o'" ?ó) + ("o:" ?ő) + ("o\"" ?ö) + ("o^" ?ô) + ("r'" ?ŕ) + ("r~" ?ř) + ("s'" ?ś) + ("s," ?ş) + ("s/" ?ß) + ("s~" ?š) + ("t," ?ţ) + ("t~" ?ť) + ("u'" ?ú) + ("u:" ?ű) + ("u\"" ?ü) + ("u." ?ů) + ("y'" ?ý) + ("z'" ?ź) + ("z." ?ż) + ("z~" ?ž) + + ("A''" ["A'"]) + ("A,," ["A,"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("C''" ["C'"]) + ("C,," ["C,"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("D~~" ["D~"]) + ("E''" ["E'"]) + ("E,," ["E,"]) + ("E\"\"" ["E\""]) + ("E~~" ["E~"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("L''" ["L'"]) + ("L//" ["L/"]) + ("L~~" ["L~"]) + ("N''" ["N'"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O::" ["O:"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("R''" ["R'"]) + ("R~~" ["R~"]) + ("S''" ["S'"]) + ("S,," ["S,"]) + ("S~~" ["S~"]) + ("T,," ["T,"]) + ("T~~" ["T~"]) + ("U''" ["U'"]) + ("U::" ["U:"]) + ("U\"\"" ["U\""]) + ("U.." ["U."]) + ("Y''" ["Y'"]) + ("Z''" ["Z'"]) + ("Z.." ["Z."]) + ("Z~~" ["Z~"]) + ("a''" ["a'"]) + ("a,," ["a,"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("c''" ["c'"]) + ("c,," ["c,"]) + ("c~~" ["c~"]) + ("d//" ["d/"]) + ("d~~" ["d~"]) + ("e''" ["e'"]) + ("e,," ["e,"]) + ("e\"\"" ["e\""]) + ("e~~" ["e~"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("l''" ["l'"]) + ("l//" ["l/"]) + ("l~~" ["l~"]) + ("n''" ["n'"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o::" ["o:"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("r''" ["r'"]) + ("r~~" ["r~"]) + ("s''" ["s'"]) + ("s,," ["s,"]) + ("s//" ["s/"]) + ("s~~" ["s~"]) + ("t,," ["t,"]) + ("t~~" ["t~"]) + ("u''" ["u'"]) + ("u::" ["u:"]) + ("u\"\"" ["u\""]) + ("u.." ["u."]) + ("y''" ["y'"]) + ("z''" ["z'"]) + ("z.." ["z."]) + ("z~~" ["z~"]) + ) + +(quail-define-package + "latin-3-postfix" "Latin-3" "3<" t + "Latin-3 character input method with postfix modifiers + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + dot | . | c. -> ċ i. -> ı I. -> İ + cedilla | , | c, -> ç + breve | ~ | g~ -> ğ + tilde | ~ | n~ -> ñ + stroke | / | h/ -> ħ + others | / | s/ -> ß + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A'" ?Á) + ("A^" ?Â) + ("A\"" ?Ä) + ("C." ?Ċ) + ("C^" ?Ĉ) + ("C," ?Ç) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("G~" ?Ğ) + ("G." ?Ġ) + ("G^" ?Ĝ) + ("H/" ?Ħ) + ("H^" ?Ĥ) + ("I." ?İ) + ("I`" ?Ì) + ("I'" ?Í) + ("I^" ?Î) + ("I\"" ?Ï) + ("J^" ?Ĵ) + ("N~" ?Ñ) + ("O`" ?Ò) + ("O'" ?Ó) + ("O^" ?Ô) + ("O\"" ?Ö) + ("S," ?Ş) + ("S^" ?Ŝ) + ("U`" ?Ù) + ("U'" ?Ú) + ("U^" ?Û) + ("U\"" ?Ü) + ("U~" ?Ŭ) + ("Z." ?Ż) + ("a`" ?à) + ("a'" ?á) + ("a^" ?â) + ("a\"" ?ä) + ("c." ?ċ) + ("c^" ?ĉ) + ("c," ?ç) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("g~" ?ğ) + ("g." ?ġ) + ("g^" ?ĝ) + ("h/" ?ħ) + ("h^" ?ĥ) + ("i." ?ı) + ("i`" ?ì) + ("i'" ?í) + ("i^" ?î) + ("i\"" ?ï) + ("j^" ?ĵ) + ("n~" ?ñ) + ("o`" ?ò) + ("o'" ?ó) + ("o^" ?ô) + ("o\"" ?ö) + ("s," ?ş) + ("s/" ?ß) + ("s^" ?ŝ) + ("u`" ?ù) + ("u'" ?ú) + ("u^" ?û) + ("u\"" ?ü) + ("u~" ?ŭ) + ("z." ?ż) + + ("A``" ["A`"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A\"\"" ["A\""]) + ("C.." ["C."]) + ("C^^" ["C^"]) + ("C,," ["C,"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("G~~" ["G~"]) + ("G.." ["G."]) + ("G^^" ["G^"]) + ("H//" ["H/"]) + ("H^^" ["H^"]) + ("I.." ["I."]) + ("I``" ["I`"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("I\"\"" ["I\""]) + ("J^^" ["J^"]) + ("N~~" ["N~"]) + ("O``" ["O`"]) + ("O''" ["O'"]) + ("O^^" ["O^"]) + ("O\"\"" ["O\""]) + ("S,," ["S,"]) + ("S^^" ["S^"]) + ("U``" ["U`"]) + ("U''" ["U'"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("U~~" ["U~"]) + ("Z.." ["Z."]) + ("a``" ["a`"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a\"\"" ["a\""]) + ("c.." ["c."]) + ("c^^" ["c^"]) + ("c,," ["c,"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("g~~" ["g~"]) + ("g.." ["g."]) + ("g^^" ["g^"]) + ("h//" ["h/"]) + ("h^^" ["h^"]) + ("i.." ["i."]) + ("i``" ["i`"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("i\"\"" ["i\""]) + ("j^^" ["j^"]) + ("n~~" ["n~"]) + ("o``" ["o`"]) + ("o''" ["o'"]) + ("o^^" ["o^"]) + ("o\"\"" ["o\""]) + ("s,," ["s,"]) + ("s//" ["s/"]) + ("s^^" ["s^"]) + ("u``" ["u`"]) + ("u''" ["u'"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("u~~" ["u~"]) + ("z.." ["z."]) + ) + +(quail-define-package + "latin-4-postfix" "Latin-4" "4<" t + "Latin-4 characters input method with postfix modifiers + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + ogonek | , | a, -> ą + macron | - | a- -> ā + tilde | ~ | a~ -> ã + caron | ~ | c~ -> č + dot | . | e. -> ė + cedilla | , | k, -> ķ g, -> ģ + stroke | / | d/ -> đ + nordic | / | a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß n/ -> ŋ k/ -> ĸ + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A," ?Ą) + ("A-" ?Ā) + ("A'" ?Á) + ("A^" ?Â) + ("A~" ?Ã) + ("A\"" ?Ä) + ("A/" ?Å) + ("C~" ?Č) + ("D/" ?Đ) + ("E/" ?Æ) + ("E-" ?Ē) + ("E'" ?É) + ("E," ?Ę) + ("E\"" ?Ë) + ("E." ?Ė) + ("G," ?Ģ) + ("I~" ?Ĩ) + ("I," ?Į) + ("I'" ?Í) + ("I^" ?Î) + ("I-" ?Ī) + ("K," ?Ķ) + ("L," ?Ļ) + ("N/" ?Ŋ) + ("N," ?Ņ) + ("O-" ?Ō) + ("O^" ?Ô) + ("O~" ?Õ) + ("O\"" ?Ö) + ("O/" ?Ø) + ("R," ?Ŗ) + ("S~" ?Š) + ("T/" ?Ŧ) + ("U," ?Ų) + ("U'" ?Ú) + ("U^" ?Û) + ("U\"" ?Ü) + ("U~" ?Ũ) + ("U-" ?Ū) + ("Z~" ?Ž) + ("a," ?ą) + ("a-" ?ā) + ("a'" ?á) + ("a^" ?â) + ("a~" ?ã) + ("a\"" ?ä) + ("a/" ?å) + ("c~" ?č) + ("d/" ?đ) + ("e/" ?æ) + ("e-" ?ē) + ("e'" ?é) + ("e," ?ę) + ("e\"" ?ë) + ("e." ?ė) + ("g," ?ģ) + ("i~" ?ĩ) + ("i," ?į) + ("i'" ?í) + ("i^" ?î) + ("i-" ?ī) + ("k/" ?ĸ) + ("k," ?ķ) + ("l," ?ļ) + ("n/" ?ŋ) + ("n," ?ņ) + ("o-" ?ō) + ("o^" ?ô) + ("o~" ?õ) + ("o\"" ?ö) + ("o/" ?ø) + ("r," ?ŗ) + ("s/" ?ß) + ("s~" ?š) + ("t/" ?ŧ) + ("u," ?ų) + ("u'" ?ú) + ("u^" ?û) + ("u\"" ?ü) + ("u~" ?ũ) + ("u-" ?ū) + ("z~" ?ž) + + ("A,," ["A,"]) + ("A--" ["A-"]) + ("A''" ["A'"]) + ("A^^" ["A^"]) + ("A~~" ["A~"]) + ("A\"\"" ["A\""]) + ("A//" ["A/"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("E//" ["E/"]) + ("E--" ["E-"]) + ("E''" ["E'"]) + ("E,," ["E,"]) + ("E\"\"" ["E\""]) + ("E.." ["E."]) + ("G,," ["G,"]) + ("I~~" ["I~"]) + ("I,," ["I,"]) + ("I''" ["I'"]) + ("I^^" ["I^"]) + ("I--" ["I-"]) + ("K,," ["K,"]) + ("L,," ["L,"]) + ("N//" ["N/"]) + ("N,," ["N,"]) + ("O--" ["O-"]) + ("O^^" ["O^"]) + ("O~~" ["O~"]) + ("O\"\"" ["O\""]) + ("O//" ["O/"]) + ("R,," ["R,"]) + ("S~~" ["S~"]) + ("T//" ["T/"]) + ("U,," ["U,"]) + ("U''" ["U'"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("U~~" ["U~"]) + ("U--" ["U-"]) + ("Z~~" ["Z~"]) + ("a,," ["a,"]) + ("a--" ["a-"]) + ("a''" ["a'"]) + ("a^^" ["a^"]) + ("a~~" ["a~"]) + ("a\"\"" ["a\""]) + ("a//" ["a/"]) + ("c~~" ["c~"]) + ("d//" ["d/"]) + ("e//" ["e/"]) + ("e--" ["e-"]) + ("e''" ["e'"]) + ("e,," ["e,"]) + ("e\"\"" ["e\""]) + ("e.." ["e."]) + ("g,," ["g,"]) + ("i~~" ["i~"]) + ("i,," ["i,"]) + ("i''" ["i'"]) + ("i^^" ["i^"]) + ("i--" ["i-"]) + ("k//" ["k/"]) + ("k,," ["k,"]) + ("l,," ["l,"]) + ("n//" ["n/"]) + ("n,," ["n,"]) + ("o--" ["o-"]) + ("o^^" ["o^"]) + ("o~~" ["o~"]) + ("o\"\"" ["o\""]) + ("o//" ["o/"]) + ("r,," ["r,"]) + ("s//" ["s/"]) + ("s~~" ["s~"]) + ("t//" ["t/"]) + ("u,," ["u,"]) + ("u''" ["u'"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("u~~" ["u~"]) + ("u--" ["u-"]) + ("z~~" ["z~"]) + ) + +(quail-define-package + "latin-5-postfix" "Latin-5" "5<" t + "Latin-5 characters input method with postfix modifiers + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + breve | ~ | g~ -> ğ + cedilla | , | c, -> ç + dot | . | i. -> ı I. -> İ + nordic | / | a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("A/" ?Å) + ("A\"" ?Ä) + ("A^" ?Â) + ("A`" ?À) + ("A~" ?Ã) + ("C," ?Ç) + ("E'" ?É) + ("E/" ?Æ) + ("E\"" ?Ë) + ("E^" ?Ê) + ("E`" ?È) + ("G~" ?Ğ) + ("I'" ?Í) + ("I." ?İ) + ("I\"" ?Ï) + ("I^" ?Î) + ("I`" ?Ì) + ("N~" ?Ñ) + ("O'" ?Ó) + ("O/" ?Ø) + ("O\"" ?Ö) + ("O^" ?Ô) + ("O`" ?Ò) + ("O~" ?Õ) + ("S," ?Ş) + ("U'" ?Ú) + ("U\"" ?Ü) + ("U^" ?Û) + ("U`" ?Ù) + ("a'" ?á) + ("a/" ?å) + ("a\"" ?ä) + ("a^" ?â) + ("a`" ?à) + ("a~" ?ã) + ("c," ?ç) + ("e'" ?é) + ("e/" ?æ) + ("e\"" ?ë) + ("e^" ?ê) + ("e`" ?è) + ("g~" ?ğ) + ("i'" ?í) + ("i." ?ı) + ("i\"" ?ï) + ("i^" ?î) + ("i`" ?ì) + ("n~" ?ñ) + ("o'" ?ó) + ("o/" ?ø) + ("o\"" ?ö) + ("o^" ?ô) + ("o`" ?ò) + ("o~" ?õ) + ("s," ?ş) + ("s/" ?ß) + ("u'" ?ú) + ("u\"" ?ü) + ("u^" ?û) + ("u`" ?ù) + ("y\"" ?ÿ) + + ("A''" ["A'"]) + ("A//" ["A/"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A``" ["A`"]) + ("A~~" ["A~"]) + ("C,," ["C,"]) + ("E''" ["E'"]) + ("E//" ["E/"]) + ("E\"\"" ["E\""]) + ("E^^" ["E^"]) + ("E``" ["E`"]) + ("G~~" ["G~"]) + ("I''" ["I'"]) + ("I.." ["I."]) + ("I\"\"" ["I\""]) + ("I^^" ["I^"]) + ("I``" ["I`"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O//" ["O/"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("O``" ["O`"]) + ("O~~" ["O~"]) + ("S,," ["S,"]) + ("U''" ["U'"]) + ("U\"\"" ["U\""]) + ("U^^" ["U^"]) + ("U``" ["U`"]) + ("a''" ["a'"]) + ("a//" ["a/"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a``" ["a`"]) + ("a~~" ["a~"]) + ("c,," ["c,"]) + ("e''" ["e'"]) + ("e//" ["e/"]) + ("e\"\"" ["e\""]) + ("e^^" ["e^"]) + ("e``" ["e`"]) + ("g~~" ["g~"]) + ("i''" ["i'"]) + ("i.." ["i."]) + ("i\"\"" ["i\""]) + ("i^^" ["i^"]) + ("i``" ["i`"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o//" ["o/"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("o``" ["o`"]) + ("o~~" ["o~"]) + ("s,," ["s,"]) + ("s//" ["s/"]) + ("u''" ["u'"]) + ("u\"\"" ["u\""]) + ("u^^" ["u^"]) + ("u``" ["u`"]) + ("y\"\"" ["y\""]) + ) + +(quail-define-package + "danish-postfix" "Latin-1" "DA<" t + "Danish input method (rule: AE -> Æ, OE -> Ø, AA -> Å, E' -> É) + +Doubling the postfix separates the letter and postfix: e.g. aee -> ae +" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AE" ?Æ) + ("ae" ?æ) + ("OE" ?Ø) + ("oe" ?ø) + ("AA" ?Å) + ("aa" ?å) + ("E'" ?É) + ("e'" ?é) + + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("AAA" ["AA"]) + ("aaa" ["aa"]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ) + +(quail-define-package + "esperanto-postfix" "Latin-3" "EO<" t + "Esperanto input method with postfix modifiers + +A following ^ or x will produce an accented character, +e.g. c^ -> ĉ gx -> ĝ u^ -> ŭ. + +Doubling the postfix separates the letter and postfix, +e.g. a'' -> a'. +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("Cx" ?Ĉ) + ("C^" ?Ĉ) + ("cx" ?ĉ) + ("c^" ?ĉ) + ("Gx" ?Ĝ) + ("G^" ?Ĝ) + ("gx" ?ĝ) + ("g^" ?ĝ) + ("Hx" ?Ĥ) + ("H^" ?Ĥ) + ("hx" ?ĥ) + ("h^" ?ĥ) + ("Jx" ?Ĵ) + ("J^" ?Ĵ) + ("jx" ?ĵ) + ("j^" ?ĵ) + ("Sx" ?Ŝ) + ("S^" ?Ŝ) + ("sx" ?ŝ) + ("s^" ?ŝ) + ("Ux" ?Ŭ) + ("U^" ?Ŭ) + ("ux" ?ŭ) + ("u^" ?ŭ) + + ("Cxx" ["Cx"]) + ("C^^" ["C^"]) + ("cxx" ["cx"]) + ("c^^" ["c^"]) + ("Gxx" ["Gx"]) + ("G^^" ["G^"]) + ("gxx" ["gx"]) + ("g^^" ["g^"]) + ("Hxx" ["Hx"]) + ("H^^" ["H^"]) + ("hxx" ["hx"]) + ("h^^" ["h^"]) + ("Jxx" ["Jx"]) + ("J^^" ["J^"]) + ("jxx" ["jx"]) + ("j^^" ["j^"]) + ("Sxx" ["Sx"]) + ("S^^" ["S^"]) + ("sxx" ["sx"]) + ("s^^" ["s^"]) + ("Uxx" ["Ux"]) + ("U^^" ["U^"]) + ("uxx" ["ux"]) + ("u^^" ["u^"]) + ) + +(quail-define-package + "finnish-postfix" "Latin-1" "FI<" t + "Finnish (Suomi) input method + +AE -> Ä +AEE -> AE +OE -> Ö +OEE -> OE +" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AE" ?Ä) + ("ae" ?ä) + ("OE" ?Ö) + ("oe" ?ö) + + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ) + +(quail-define-package + "french-postfix" "French" "FR<" t + "French (Français) input method with postfix modifiers + +` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. +Par exemple: a` -> à e' -> é. + +Ç, «, et » sont produits par C,, <<, et >>. + +En doublant la frappe des diacritiques, ils s'isoleront de la lettre. +Par exemple: e'' -> e' + +Œ est produit par O/." + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("A^" ?Â) + ("a`" ?à) + ("a^" ?â) + ("E`" ?È) + ("E'" ?É) + ("E^" ?Ê) + ("E\"" ?Ë) + ("e`" ?è) + ("e'" ?é) + ("e^" ?ê) + ("e\"" ?ë) + ("I^" ?Î) + ("I\"" ?Ï) + ("i^" ?î) + ("i\"" ?ï) + ("O^" ?Ô) + ("O/" ?Œ) + ("o^" ?ô) + ("o/" ?œ) + ("U`" ?Ù) + ("U^" ?Û) + ("U\"" ?Ü) + ("u`" ?ù) + ("u^" ?û) + ("u\"" ?ü) + ("C," ?Ç) + ("c," ?ç) + ("<<" ?«) + (">>" ?») + + ("A``" ["A`"]) + ("A^^" ["A^"]) + ("a``" ["a`"]) + ("a^^" ["a^"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("E^^" ["E^"]) + ("E\"\"" ["E\""]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("e^^" ["e^"]) + ("e\"\"" ["e\""]) + ("I^^" ["I^"]) + ("I\"\"" ["I\""]) + ("i^^" ["i^"]) + ("i\"\"" ["i\""]) + ("O^^" ["O^"]) + ("O//" ["O/"]) + ("o^^" ["o^"]) + ("o//" ["o/"]) + ("U``" ["U`"]) + ("U^^" ["U^"]) + ("U\"\"" ["U\""]) + ("u``" ["u`"]) + ("u^^" ["u^"]) + ("u\"\"" ["u\""]) + ("C,," ["C,"]) + ("c,," ["c,"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ) + +(quail-define-package + "german-postfix" "German" "DE<" t + "German (Deutsch) input method + +ae -> ä +aee -> ae +oe -> ö +oee -> oe +ue -> ü (not after a/e/q) +uee -> ue +sz -> ß +szz -> sz +" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AE" ?Ä) + ("ae" ?ä) + ("OE" ?Ö) + ("oe" ?ö) + ("UE" ?Ü) + ("ue" ?ü) + ("sz" ?ß) + + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("UEE" ["UE"]) + ("uee" ["ue"]) + ("szz" ["sz"]) + ("ge" ["ge"]) + ("eue" ["eue"]) + ("Eue" ["Eue"]) + ("aue" ["aue"]) + ("Aue" ["Aue"]) + ("que" ["que"]) + ("Que" ["Que"]) +) + +(quail-define-package + "icelandic-postfix" "Latin-1" "IS<" t + "Icelandic (Íslenska) input method with postfix modifiers + +A' -> Á +E' -> É +I' -> Í +O' -> Ó +U' -> Ú +Y' -> Ý +AE -> Æ +OE -> Ö +D/ -> Ð (eth) +T/ -> Þ (thorn) + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("a'" ?á) + ("E'" ?É) + ("e'" ?é) + ("I'" ?Í) + ("i'" ?í) + ("O'" ?Ó) + ("o'" ?ó) + ("U'" ?Ú) + ("u'" ?ú) + ("Y'" ?Ý) + ("y'" ?ý) + ("AE" ?Æ) + ("ae" ?æ) + ("OE" ?Ö) + ("oe" ?ö) + ("D/" ?Ð) + ("d/" ?ð) + ("T/" ?Þ) + ("t/" ?þ) + + ("A''" ["A'"]) + ("a''" ["a'"]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ("I''" ["I'"]) + ("i''" ["i'"]) + ("O''" ["O'"]) + ("o''" ["o'"]) + ("U''" ["U'"]) + ("u''" ["u'"]) + ("Y''" ["Y'"]) + ("y''" ["y'"]) + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("D//" ["D/"]) + ("d//" ["d/"]) + ("T//" ["T/"]) + ("t//" ["t/"]) + ) + +(quail-define-package + "italian-postfix" "Latin-1" "IT<" t + "Italian (Italiano) input method with postfix modifiers + +a` -> à A` -> À e' -> é << -> « +e` -> è E` -> È E' -> É >> -> » +i` -> ì I` -> Ì o_ -> º +o` -> ò O` -> Ò a_ -> ª +u` -> ù U` -> Ù + +Typewriter-style italian characters. + +Doubling the postfix separates the letter and postfix: e.g. a`` -> a` +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A`" ?À) + ("a`" ?à) + ("E`" ?È) + ("E'" ?É) + ("e`" ?è) + ("e'" ?é) + ("I`" ?Ì) + ("i`" ?ì) + ("O`" ?Ò) + ("o`" ?ò) + ("U`" ?Ù) + ("u`" ?ù) + ("<<" ?«) + (">>" ?») + ("o_" ?º) + ("a_" ?ª) + + ("A``" ["A`"]) + ("a``" ["a`"]) + ("E``" ["E`"]) + ("E''" ["E'"]) + ("e``" ["e`"]) + ("e''" ["e'"]) + ("I``" ["I`"]) + ("i``" ["i`"]) + ("O``" ["O`"]) + ("o``" ["o`"]) + ("U``" ["U`"]) + ("u``" ["u`"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("o__" ["o_"]) + ("a__" ["a_"]) + ) + +(quail-define-package + "norwegian-postfix" "Latin-1" "NO<" t + "Norwegian (Norsk) input method (rule: AE->Æ OE->Ø AA->Å E'->É) + +Doubling the postfix separates the letter and postfix: e.g. aee -> ae +" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AE" ?Æ) + ("ae" ?æ) + ("OE" ?Ø) + ("oe" ?ø) + ("AA" ?Å) + ("aa" ?å) + ("E'" ?É) + ("e'" ?é) + + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("AAA" ["AA"]) + ("aaa" ["aa"]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ) + +(quail-define-package + "scandinavian-postfix" "Latin-1" "SC<" t + "Scandinavian input method with postfix modifiers +Supported languages are Swedish, Norwegian, Danish, and Finnish. + +ae -> æ +oe -> ø +aa -> å +a\" -> ä +o\" -> ö +e' -> é + +Doubling the postfix separates the letter and postfix: +aee -> ae o\"\" -> o\" etc. +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AE" ?Æ) + ("ae" ?æ) + ("OE" ?Ø) + ("oe" ?ø) + ("AA" ?Å) + ("aa" ?å) + ("A\"" ?Ä) + ("a\"" ?ä) + ("O\"" ?Ö) + ("o\"" ?ö) + ("E'" ?É) + ("e'" ?é) + + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("AAA" ["AA"]) + ("aaa" ["aa"]) + ("A\"\"" ["A\""]) + ("a\"\"" ["a\""]) + ("O\"\"" ["O\""]) + ("o\"\"" ["o\""]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ) + +(quail-define-package + "spanish-postfix" "Spanish" "ES<" t + "Spanish (Español) input method with postfix modifiers + +A' -> Á +E' -> É +I' -> Í +O' -> Ó +U' -> Ú +N~ -> Ñ +!/ -> ¡ +?/ -> ¿ + +Doubling the postfix separates the letter and postfix: +a'' -> a' n~~ -> n~, etc. +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A'" ?Á) + ("a'" ?á) + ("E'" ?É) + ("e'" ?é) + ("I'" ?Í) + ("i'" ?í) + ("O'" ?Ó) + ("o'" ?ó) + ("U'" ?Ú) + ("u'" ?ú) + ("U\"" ?Ü) + ("u\"" ?ü) + ("N~" ?Ñ) + ("n~" ?ñ) + ("?/" ?¿) + ("!/" ?¡) + + ("A''" ["A'"]) + ("a''" ["a'"]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ("I''" ["I'"]) + ("i''" ["i'"]) + ("O''" ["O'"]) + ("o''" ["o'"]) + ("U''" ["U'"]) + ("u''" ["u'"]) + ("U\"" ["U\""]) + ("u\"" ["U\""]) + ("N~~" ["N~"]) + ("n~~" ["n~"]) + ("?//" ["?/"]) + ("!//" ["!/"]) + ) + +(quail-define-package + "swedish-postfix" "Latin-1" "SV<" t + "Swedish (Svenska) input method (rule: AA -> Å AE -> Ä OE -> Ö E' -> É) + +Doubling the postfix separates the letter and postfix: e.g. aee -> ae +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("AA" ?Å) + ("aa" ?å) + ("AE" ?Ä) + ("ae" ?ä) + ("OE" ?Ö) + ("oe" ?ö) + ("E'" ?É) + ("e'" ?é) + + ("AAA" ["AA"]) + ("aaa" ["aa"]) + ("AEE" ["AE"]) + ("aee" ["ae"]) + ("OEE" ["OE"]) + ("oee" ["oe"]) + ("E''" ["E'"]) + ("e''" ["e'"]) + ) + +(quail-define-package + "turkish-postfix" "Turkish" "TR<" t + "Turkish (Türkçe) input method with postfix modifiers. +turkish-latin-3-postfix is an obsolete alias for turkish-postfix. + +Note for I, ı, İ, i. + +A^ ->  +C, -> Ç +G^ -> Ğ +I -> I +i -> ı +I. -> İ +i. -> i +O\" -> Ö +S, -> Ş +U\" -> Ü +U^ -> Û + +Doubling the postfix separates the letter and postfix: e.g. a^^ -> a^ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A^" ?Â) + ("a^" ?â) + ("C," ?Ç) + ("c," ?ç) + ("G^" ?Ğ) + ("g^" ?ğ) + ("I." ?İ) + ("i" ?ı) + ("i." ?i) + ("O\"" ?Ö) + ("o\"" ?ö) + ("S," ?Ş) + ("s," ?ş) + ("U\"" ?Ü) + ("u\"" ?ü) + ("U^" ?Û) + ("u^" ?û) + + ("A^^" ["A^"]) + ("a^^" ["a^"]) + ("C,," ["C,"]) + ("c,," ["c,"]) + ("G^^" ["G^"]) + ("g^^" ["g^"]) + ("I.." ["I."]) + ("i" ["i"]) + ("i.." ["i."]) + ("O\"\"" ["O\""]) + ("o\"\"" ["o\""]) + ("S,," ["S,"]) + ("s,," ["s,"]) + ("U\"\"" ["U\""]) + ("u\"\"" ["u\""]) + ("U^^" ["U^"]) + ("u^^" ["u^"]) + ) + +;; Backwards compatibility. +(push (cons "turkish-latin-3-postfix" + (cdr (assoc "turkish-postfix" quail-package-alist))) + quail-package-alist) + +(quail-define-package + "british" "Latin-1" "£@" t + "British English input method with Latin-1 character £ (# -> £)" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("#" [?£ ?#]) + ) + +;; The following are various quail packages for those who think +;; the above are too awkward. Supported languages and their +;; package name are: +;; +;; French (frnch, azerty) +;; Icelandic (iclndc) +;; Denish (dnsh) +;; Norwegian (nrwgn) +;; Swedish (swdsh) +;; Finnish (fnnsh) +;; German (grmn) +;; Italian (itln) +;; Spanish (spnsh) +;; Dvorak (dvorak) +;; +;;; 92.12.15 created for Mule Ver.0.9.6 by Takahashi N. <ntakahas@etl.go.jp> +;;; 92.12.29 modified by Takahashi N. <ntakahas@etl.go.jp> + +;; +(quail-define-package + "french-keyboard" "French" "FR@" t + "French (Français) input method simulating some French keyboard +<e dans l'o> n'est pas disponible." nil t t t t nil nil nil nil nil t) + +;; ê1 é2 è3 ô4 î5 ï6 â7 û8 ù9 à0 -_ ë+ `~ +;; qQ wW eE rR tT yY uU iI oO pP çÇ ü& +;; aA sS dD fF gG hH jJ kK lL ;: '" \| +;; zZ xX cC vV bB nN mM ,( .) !? + +(quail-define-rules + ("1" ?ê) + ("2" ?é) + ("3" ?è) + ("4" ?ô) + ("5" ?î) + ("6" ?ï) + ("7" ?â) + ("8" ?û) + ("9" ?ù) + ("0" ?à) + ("=" ?ë) + ("[" ?ç) + ("]" ?ü) + + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("{" ?Ç) + ("}" ?&) + ("<" ?\() + (">" ?\)) + ) + +;; +(quail-define-package + "french-azerty" "French" "AZ@" t + "French (Français) input method simulating Azerty keyboard + +Similaire au clavier français de SUN. +préfixes: ^ pour circonflexe, ¨ pour tréma. +<e dans l'o> n'est pas disponible." nil t t t t nil nil nil nil nil t) + +;; &1 é2 "3 '4 (5 §6 è7 !8 ç9 à0 )° -_ @~ +;; aA zZ eE rR tT yY uU iI oO pP ^¨ `$ +;; qQ sS dD fF gG hH jJ kK lL mM ù% *| +;; wW xX cC vV bB nN ,? ;. :/ =+ + +(quail-define-rules + ("1" ?&) + ("2" ?é) + ("3" ?\") + ("4" ?') + ("5" ?\() + ("6" ?§) + ("7" ?è) + ("8" ?!) + ("9" ?ç) + ("0" ?à) + ("-" ?\)) + ("=" ?-) + ("`" ?@) + ("q" ?a) + ("w" ?z) + ("e" ?e) + ("r" ?r) + ("t" ?t) + ("y" ?y) + ("u" ?u) + ("i" ?i) + ("o" ?o) + ("p" ?p) + ("[" ?^) + ("]" ?`) + ("a" ?q) + ("s" ?s) + ("d" ?d) + ("f" ?f) + ("g" ?g) + ("h" ?h) + ("j" ?j) + ("k" ?k) + ("l" ?l) + (";" ?m) + ("'" ?ù) + ("\\" ?*) + ("z" ?w) + ("x" ?x) + ("c" ?c) + ("v" ?v) + ("b" ?b) + ("n" ?n) + ("m" ?,) + ("," ?\;) + ("." ?:) + ("/" ?=) + + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("_" ?°) + ("+" ?_) + ("~" ?~) + ("Q" ?A) + ("W" ?Z) + ("E" ?E) + ("R" ?R) + ("T" ?T) + ("Y" ?Y) + ("U" ?U) + ("I" ?I) + ("O" ?O) + ("P" ?P) + ("{" ?¨) + ("}" ?$) + ("A" ?Q) + ("S" ?S) + ("D" ?D) + ("F" ?F) + ("G" ?G) + ("H" ?H) + ("J" ?J) + ("K" ?K) + ("L" ?L) + (":" ?M) + ("\"" ?%) + ("|" ?|) + ("Z" ?W) + ("X" ?X) + ("C" ?C) + ("V" ?V) + ("B" ?B) + ("N" ?N) + ("M" ??) + ("<" ?.) + (">" ?/) + ("?" ?+) + + ("[q" ?â) + ("[e" ?ê) + ("[i" ?î) + ("[o" ?ô) + ("[u" ?û) + + ("{e" ?ë) + ("{i" ?ï) + ("{u" ?ü) + + ("[[" ?^) + ("{{" ?¨) + ) + +;; +(quail-define-package + "icelandic-keyboard" "Latin-1" "IS@" t + "Icelandic (Íslenska) input method simulating some Icelandic keyboard + +Dead accent is right to æ." nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4$ 5% 6^ 7& 8* 9( 0) öÖ -_ `~ +;; qQ wW eE rR tT yY uU iI oO pP ðÐ '? +;; aA sS dD fF gG hH jJ kK lL æÆ ´´ +* +;; zZ xX cC vV bB nN mM ,; .: þÞ + +(quail-define-rules + ("-" ?ö) + ("=" ?-) + ("[" ?ð) + ("]" ?') + (";" ?æ) + ("'" ?´) + ("\\" ?+) + ("/" ?þ) + + ("@" ?\") + ("_" ?Ö) + ("+" ?_) + ("{" ?Ð) + ("}" ??) + (":" ?Æ) + ("\"" ?´) + ("|" ?*) + ("<" ?\;) + (">" ?:) + ("?" ?Þ) + + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'y" ?ý) + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'Y" ?Ý) + + ("''" ?´) + ) + +;; +(quail-define-package + "danish-keyboard" "Latin-1" "DA@" t + "Danish input method simulating SUN Danish keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4¤ 5% 6& 7/ 8( 9) 0= +? ½§ ~^ +;; qQ wW eE rR tT yY uU iI oO pP åÅ éÉ +;; aA sS dD fF gG hH jJ kK lL æÆ øØ '* +;; zZ xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?+) + ("=" ?½) + ("`" ?~) + ("[" ?å) + ("]" ?é) + (";" ?æ) + ("'" ?ø) + ("\\" ?') + ("/" ?-) + + ("@" ?\") + ("$" ?¤) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?§) + ("~" ?^) + ("{" ?Å) + ("}" ?É) + (":" ?Æ) + ("\"" ?Ø) + ("|" ?*) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "norwegian-keyboard" "Latin-1" "NO@" t + "Norwegian (Norsk) input method simulating SUN Norwegian keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4¤ 5% 6& 7/ 8( 9) 0= +? |§ ~^ +;; qQ wW eE rR tT yY uU iI oO pP åÅ éÉ +;; aA sS dD fF gG hH jJ kK lL øØ æÆ '* +;; zZ xX cC vV bB nN mM ,; .: '? + +(quail-define-rules + ("-" ?+) + ("=" ?|) + ("`" ?~) + ("[" ?å) + ("]" ?é) + (";" ?ø) + ("'" ?æ) + ("\\" ?') + ("/" ?-) + + ("!" ?!) + ("@" ?\") + ("$" ?¤) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?§) + ("~" ?^) + ("{" ?Å) + ("}" ?É) + (":" ?Ø) + ("\"" ?Æ) + ("|" ?*) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "swedish-keyboard" "Latin-1" "SV@" t + "Swedish (Svenska) input method simulating SUN Swedish/Finnish keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4¤ 5% 6& 7/ 8( 9) 0= +? §½ ~^ +;; qQ wW eE rR tT yY uU iI oO pP åÅ éÉ +;; aA sS dD fF gG hH jJ kK lL öÖ äÄ '* +;; zZ xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?+) + ("=" ?§) + ("`" ?~) + ("[" ?å) + ("]" ?é) + (";" ?ö) + ("'" ?ä) + ("\\" ?') + ("/" ?-) + + ("@" ?\") + ("$" ?¤) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?½) + ("~" ?^) + ("{" ?Å) + ("}" ?É) + (":" ?Ö) + ("\"" ?Ä) + ("|" ?*) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "finnish-keyboard" "Latin-1" "FI@" t + "Finnish input method simulating SUN Finnish/Swedish keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3# 4¤ 5% 6& 7/ 8( 9) 0= +? §½ ~^ +;; qQ wW eE rR tT yY uU iI oO pP åÅ éÉ +;; aA sS dD fF gG hH jJ kK lL öÖ äÄ '* +;; zZ xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?+) + ("=" ?§) + ("`" ?~) + ("[" ?å) + ("]" ?é) + (";" ?ö) + ("'" ?ä) + ("\\" ?') + ("/" ?-) + + ("@" ?\") + ("$" ?¤) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?½) + ("~" ?^) + ("{" ?Å) + ("}" ?É) + (":" ?Ö) + ("\"" ?Ä) + ("|" ?*) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "german" "German" "DE@" t + "German (Deutsch) input method simulating SUN German keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3§ 4$ 5% 6& 7/ 8( 9) 0= ß? [{ ]} +;; qQ wW eE rR tT zZ uU iI oO pP üÜ +* +;; aA sS dD fF gG hH jJ kK lL öÖ äÄ #^ +;; yY xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?ß) + ("=" ?\[) + ("`" ?\]) + ("y" ?z) + ("[" ?ü) + ("]" ?+) + (";" ?ö) + ("'" ?ä) + ("\\" ?#) + ("z" ?y) + ("/" ?-) + + ("@" ?\") + ("#" ?§) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("Y" ?Z) + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?{) + ("~" ?}) + ("{" ?Ü) + ("}" ?*) + (":" ?Ö) + ("\"" ?Ä) + ("|" ?^) + ("Z" ?Y) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "italian-keyboard" "Latin-1" "IT@" t + "Italian (Italiano) input method simulating SUN Italian keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3£ 4$ 5% 6& 7/ 8( 9) 0= '? ì^ `~ +;; qQ wW eE rR tT yY uU iI oO pP èé +* +;; aA sS dD fF gG hH jJ kK lL òç à° ù§ +;; zZ xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?') + ("=" ?ì) + ("[" ?è) + ("]" ?+) + (";" ?ò) + ("'" ?à) + ("\\" ?ù) + ("/" ?-) + + ("@" ?\") + ("#" ?£) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?^) + ("~" ?~) + ("{" ?é) + ("}" ?*) + (":" ?ç) + ("\"" ?°) + ("|" ?§) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "spanish-keyboard" "Spanish" "ES@" t + "Spanish (Español) input method simulating SUN Spanish keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2" 3· 4$ 5% 6& 7/ 8( 9) 0= '? ¡¿ íÍ +;; qQ wW eE rR tT yY uU iI oO pP éÉ óÓ +;; aA sS dD fF gG hH jJ kK lL ñÑ áÁ úÚ +;; zZ xX cC vV bB nN mM ,; .: -_ + +(quail-define-rules + ("-" ?') + ("=" ?¡) + ("`" ?í) + ("[" ?é) + ("]" ?ó) + (";" ?ñ) + ("'" ?á) + ("\\" ?ú) + ("/" ?-) + + ("@" ?\") + ("#" ?·) + ("^" ?&) + ("&" ?/) + ("*" ?\() + ("(" ?\)) + (")" ?=) + ("_" ??) + ("+" ?¿) + ("~" ?Í) + ("{" ?É) + ("}" ?Ó) + (":" ?Ñ) + ("\"" ?Á) + ("|" ?Ú) + ("<" ?\;) + (">" ?:) + ("?" ?_) + ) + +;; +(quail-define-package + "english-dvorak" "English" "DV@" t + "English (ASCII) input method simulating Dvorak keyboard" + nil t t t t nil nil nil nil nil t) + +;; 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) [{ ]} `~ +;; '" ,< .> pP yY fF gG cC rR lL /? =+ +;; aA oO eE uU iI dD hH tT nN sS -_ \| +;; ;: qQ jJ kK xX bB mM wW vV zZ + +(quail-define-rules + ("-" ?\[) + ("=" ?\]) + ("`" ?`) + ("q" ?') + ("w" ?,) + ("e" ?.) + ("r" ?p) + ("t" ?y) + ("y" ?f) + ("u" ?g) + ("i" ?c) + ("o" ?r) + ("p" ?l) + ("[" ?/) + ("]" ?=) + ("a" ?a) + ("s" ?o) + ("d" ?e) + ("f" ?u) + ("g" ?i) + ("h" ?d) + ("j" ?h) + ("k" ?t) + ("l" ?n) + (";" ?s) + ("'" ?-) + ("\\" ?\\) + ("z" ?\;) + ("x" ?q) + ("c" ?j) + ("v" ?k) + ("b" ?x) + ("n" ?b) + ("m" ?m) + ("," ?w) + ("." ?v) + ("/" ?z) + + ("_" ?{) + ("+" ?}) + ("~" ?~) + ("Q" ?\") + ("W" ?<) + ("E" ?>) + ("R" ?P) + ("T" ?Y) + ("Y" ?F) + ("U" ?G) + ("I" ?C) + ("O" ?R) + ("P" ?L) + ("{" ??) + ("}" ?+) + ("A" ?A) + ("S" ?O) + ("D" ?E) + ("F" ?U) + ("G" ?I) + ("H" ?D) + ("J" ?H) + ("K" ?T) + ("L" ?N) + (":" ?S) + ("\"" ?_) + ("|" ?|) + ("Z" ?:) + ("X" ?Q) + ("C" ?J) + ("V" ?K) + ("B" ?X) + ("N" ?B) + ("M" ?M) + ("<" ?W) + (">" ?V) + ("?" ?Z) + ) + +(quail-define-package + "latin-postfix" "Latin" "L<" t + "Latin character input method with postfix modifiers. +This is the union of various input methods originally made for input +of characters from a single Latin-N charset. + + | postfix | examples + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + circumflex | ^ | a^ -> â + diaeresis | \" | a\" -> ä + tilde | ~ | a~ -> ã + cedilla | , | c, -> ç + ogonek | , | a, -> ą + breve | ~ | a~ -> ă + caron | ~ | c~ -> č + dbl. acute | : | o: -> ő + ring | . | u. -> ů + dot | . | z. -> ż + stroke | / | d/ -> đ + nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø + others | / | s/ -> ß ?/ -> ¿ !/ -> ¡ // -> ° o/ -> œ + | various | << -> « >> -> » o_ -> º a_ -> ª + +Doubling the postfix separates the letter and postfix: e.g. a'' -> a' +" nil t nil nil nil nil nil nil nil nil t) + +;; Fixme: ¦ § ¨ © ¬ ® ¯ ± ² ³ ´ µ ¶ · ¸ ¹ ¼ ½ ¾ × ÷ +(quail-define-rules + (" _" ? ) + ("!/" ?¡) + ("//" ?°) + ("<<" ?\«) + (">>" ?\») + ("?/" ?¿) + ("$/" ?£) + ("$/" ?¤) + ("A'" ?Á) + ("A," ?Ą) + ("A-" ?Ā) + ("A/" ?Å) + ("A\"" ?Ä) + ("A^" ?Â) + ("A`" ?À) + ("A~" ?Ã) + ("A~" ?Ă) + ("C'" ?Ć) + ("C," ?Ç) + ("C." ?Ċ) + ("C^" ?Ĉ) + ("C~" ?Č) + ("D/" ?Ð) + ("D/" ?Đ) + ("D~" ?Ď) + ("E'" ?É) + ("E," ?Ę) + ("E-" ?Ē) + ("E." ?Ė) + ("E/" ?Æ) + ("E\"" ?Ë) + ("E^" ?Ê) + ("E`" ?È) + ("E~" ?Ě) + ("G," ?Ģ) + ("G." ?Ġ) + ("G^" ?Ĝ) + ("G~" ?Ğ) + ("H/" ?Ħ) + ("H^" ?Ĥ) + ("I'" ?Í) + ("I," ?Į) + ("I-" ?Ī) + ("I." ?İ) + ("I\"" ?Ï) + ("I^" ?Î) + ("I`" ?Ì) + ("I~" ?Ĩ) + ("J^" ?Ĵ) + ("K," ?Ķ) + ("L'" ?Ĺ) + ("L," ?Ļ) + ("L/" ?Ł) + ("L~" ?Ľ) + ("N'" ?Ń) + ("N," ?Ņ) + ("N/" ?Ŋ) + ("N~" ?Ñ) + ("N~" ?Ň) + ("O'" ?Ó) + ("O-" ?Ō) + ("O/" ?Ø) + ("O/" ?Œ) + ("O:" ?Ő) + ("O\"" ?Ö) + ("O^" ?Ô) + ("O`" ?Ò) + ("O~" ?Õ) + ("R'" ?Ŕ) + ("R," ?Ŗ) + ("R~" ?Ř) + ("S'" ?Ś) + ("S," ?Ş) + ("S^" ?Ŝ) + ("S~" ?Š) + ("T," ?Ţ) + ("T/" ?Þ) + ("T/" ?Ŧ) + ("T~" ?Ť) + ("U'" ?Ú) + ("U," ?Ų) + ("U-" ?Ū) + ("U." ?Ů) + ("U:" ?Ű) + ("U\"" ?Ü) + ("U^" ?Û) + ("U`" ?Ù) + ("U~" ?Ũ) + ("U~" ?Ŭ) + ("Y'" ?Ý) + ("Y\"" ?Ÿ) + ("Y=" ?¥) + ("Z'" ?Ź) + ("Z." ?Ż) + ("Z~" ?Ž) + ("a'" ?á) + ("a," ?ą) + ("a-" ?ā) + ("a/" ?å) + ("a\"" ?ä) + ("a^" ?â) + ("a_" ?ª) + ("a`" ?à) + ("a~" ?ã) + ("a~" ?ă) + ("c'" ?ć) + ("c," ?ç) + ("c." ?ċ) + ("c^" ?ĉ) + ("c~" ?č) + ("c/" ?¢) + ("d/" ?ð) + ("d/" ?đ) + ("d~" ?ď) + ("e'" ?é) + ("e," ?ę) + ("e-" ?ē) + ("e." ?ė) + ("e/" ?æ) + ("e\"" ?ë) + ("e^" ?ê) + ("e`" ?è) + ("e~" ?ě) + ("e=" ?€) + ("g," ?ģ) + ("g." ?ġ) + ("g^" ?ĝ) + ("g~" ?ğ) + ("h/" ?ħ) + ("h^" ?ĥ) + ("i'" ?í) + ("i," ?į) + ("i-" ?ī) + ("i." ?ı) + ("i\"" ?ï) + ("i^" ?î) + ("i`" ?ì) + ("i~" ?ĩ) + ("j^" ?ĵ) + ("k," ?ķ) + ("k/" ?ĸ) + ("l'" ?ĺ) + ("l," ?ļ) + ("l/" ?ł) + ("l~" ?ľ) + ("n'" ?ń) + ("n," ?ņ) + ("n/" ?ŋ) + ("n~" ?ñ) + ("n~" ?ň) + ("o'" ?ó) + ("o-" ?ō) + ("o/" ?ø) + ("o/" ?œ) + ("o:" ?ő) + ("o\"" ?ö) + ("o^" ?ô) + ("o_" ?º) + ("o`" ?ò) + ("o~" ?õ) + ("r'" ?ŕ) + ("r," ?ŗ) + ("r~" ?ř) + ("s'" ?ś) + ("s," ?ş) + ("s/" ?ß) + ("s^" ?ŝ) + ("s~" ?š) + ("t," ?ţ) + ("t/" ?þ) + ("t/" ?ŧ) + ("t~" ?ť) + ("u'" ?ú) + ("u," ?ų) + ("u-" ?ū) + ("u." ?ů) + ("u:" ?ű) + ("u\"" ?ü) + ("u^" ?û) + ("u`" ?ù) + ("u~" ?ũ) + ("u~" ?ŭ) + ("y'" ?ý) + ("y\"" ?ÿ) + ("z'" ?ź) + ("z." ?ż) + ("z~" ?ž) + + ("!//" ["!/"]) + ("///" ["//"]) + ("<<<" ["<<"]) + (">>>" [">>"]) + ("?//" ["?/"]) + ("$//" ["$/"]) + ("A''" ["A'"]) + ("A,," ["A,"]) + ("A--" ["A-"]) + ("A//" ["A/"]) + ("A\"\"" ["A\""]) + ("A^^" ["A^"]) + ("A``" ["A`"]) + ("A~~" ["A~"]) + ("C''" ["C'"]) + ("C,," ["C,"]) + ("C.." ["C."]) + ("C^^" ["C^"]) + ("C~~" ["C~"]) + ("D//" ["D/"]) + ("D~~" ["D~"]) + ("E''" ["E'"]) + ("E,," ["E,"]) + ("E--" ["E-"]) + ("E.." ["E."]) + ("E//" ["E/"]) + ("E\"\"" ["E\""]) + ("E^^" ["E^"]) + ("E``" ["E`"]) + ("E~~" ["E~"]) + ("G,," ["G,"]) + ("G.." ["G."]) + ("G^^" ["G^"]) + ("G~~" ["G~"]) + ("H//" ["H/"]) + ("H^^" ["H^"]) + ("I''" ["I'"]) + ("I,," ["I,"]) + ("I--" ["I-"]) + ("I.." ["I."]) + ("I\"\"" ["I\""]) + ("I^^" ["I^"]) + ("I``" ["I`"]) + ("I~~" ["I~"]) + ("J^^" ["J^"]) + ("K,," ["K,"]) + ("L''" ["L'"]) + ("L,," ["L,"]) + ("L//" ["L/"]) + ("L~~" ["L~"]) + ("N''" ["N'"]) + ("N,," ["N,"]) + ("N//" ["N/"]) + ("N~~" ["N~"]) + ("O''" ["O'"]) + ("O--" ["O-"]) + ("O//" ["O/"]) + ("O::" ["O:"]) + ("O\"\"" ["O\""]) + ("O^^" ["O^"]) + ("O``" ["O`"]) + ("O~~" ["O~"]) + ("R''" ["R'"]) + ("R,," ["R,"]) + ("R~~" ["R~"]) + ("S''" ["S'"]) + ("S,," ["S,"]) + ("S^^" ["S^"]) + ("S~~" ["S~"]) + ("T,," ["T,"]) + ("T//" ["T/"]) + ("T~~" ["T~"]) + ("U''" ["U'"]) + ("U,," ["U,"]) + ("U--" ["U-"]) + ("U.." ["U."]) + ("U::" ["U:"]) + ("U\"\"" ["U\""]) + ("U^^" ["U^"]) + ("U``" ["U`"]) + ("U~~" ["U~"]) + ("Y''" ["Y'"]) + ("Y\"\"" ["Y\""]) + ("Y==" ["Y="]) + ("Z''" ["Z'"]) + ("Z.." ["Z."]) + ("Z~~" ["Z~"]) + ("a''" ["a'"]) + ("a,," ["a,"]) + ("a--" ["a-"]) + ("a//" ["a/"]) + ("a\"\"" ["a\""]) + ("a^^" ["a^"]) + ("a__" ["a_"]) + ("a``" ["a`"]) + ("a~~" ["a~"]) + ("c''" ["c'"]) + ("c,," ["c,"]) + ("c.." ["c."]) + ("c^^" ["c^"]) + ("c~~" ["c~"]) + ("c//" ["c/"]) + ("d//" ["d/"]) + ("d~~" ["d~"]) + ("e''" ["e'"]) + ("e,," ["e,"]) + ("e--" ["e-"]) + ("e.." ["e."]) + ("e//" ["e/"]) + ("e\"\"" ["e\""]) + ("e^^" ["e^"]) + ("e``" ["e`"]) + ("e==" ["e="]) + ("e~~" ["e~"]) + ("g,," ["g,"]) + ("g.." ["g."]) + ("g^^" ["g^"]) + ("g~~" ["g~"]) + ("h//" ["h/"]) + ("h^^" ["h^"]) + ("i''" ["i'"]) + ("i,," ["i,"]) + ("i--" ["i-"]) + ("i.." ["i."]) + ("i\"\"" ["i\""]) + ("i^^" ["i^"]) + ("i``" ["i`"]) + ("i~~" ["i~"]) + ("j^^" ["j^"]) + ("k,," ["k,"]) + ("k//" ["k/"]) + ("l''" ["l'"]) + ("l,," ["l,"]) + ("l//" ["l/"]) + ("l~~" ["l~"]) + ("n''" ["n'"]) + ("n,," ["n,"]) + ("n//" ["n/"]) + ("n~~" ["n~"]) + ("o''" ["o'"]) + ("o--" ["o-"]) + ("o//" ["o/"]) + ("o::" ["o:"]) + ("o\"\"" ["o\""]) + ("o^^" ["o^"]) + ("o__" ["o_"]) + ("o``" ["o`"]) + ("o~~" ["o~"]) + ("r''" ["r'"]) + ("r,," ["r,"]) + ("r~~" ["r~"]) + ("s''" ["s'"]) + ("s,," ["s,"]) + ("s//" ["s/"]) + ("s^^" ["s^"]) + ("s~~" ["s~"]) + ("t,," ["t,"]) + ("t//" ["t/"]) + ("t~~" ["t~"]) + ("u''" ["u'"]) + ("u,," ["u,"]) + ("u--" ["u-"]) + ("u.." ["u."]) + ("u::" ["u:"]) + ("u\"\"" ["u\""]) + ("u^^" ["u^"]) + ("u``" ["u`"]) + ("u~~" ["u~"]) + ("y''" ["y'"]) + ("y\"\"" ["y\""]) + ("z''" ["z'"]) + ("z.." ["z."]) + ("z~~" ["z~"]) + ) + +;; Derived from Slovenian.kmap from Yudit +;; attributed as: 2001-11-11 Roman Maurer <roman.maurer@amis.net> +(quail-define-package + "slovenian" "Slovenian" "Sl" t + "Slovenian postfix input." + nil t t t nil nil nil nil nil nil t) + +(quail-define-rules + ("C<" ?Č) + ("C'" ?Ć) + ("D;" ?Đ) + ("S<" ?Š) + ("Z<" ?Ž) + ("c<" ?č) + ("c'" ?ć) + ("d;" ?đ) + ("s<" ?š) + ("z<" ?ž)) + +;;; latin-post.el ends here diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el new file mode 100644 index 00000000000..c6085f34290 --- /dev/null +++ b/lisp/leim/quail/latin-pre.el @@ -0,0 +1,1194 @@ +;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: utf-8;-*- + +;; Copyright (C) 1997-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: mule, multilingual, latin, input method + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Key translation maps were originally copied from iso-acc.el. +;; latin-1-prefix: extra special characters added, adapted from the vim +;; digraphs (from J.H.M.Dassen <jdassen@wi.leidenuniv.nl>) +;; by R.F. Smith <rsmith@xs4all.nl> +;; +;; polish-slash: +;; Author: Włodek Bzyl <matwb@univ.gda.pl> +;; Maintainer: Włodek Bzyl <matwb@univ.gda.pl> +;; +;; latin-[89]-prefix: Dave Love <fx@gnu.org> + +;; You might make extra input sequences on the basis of the X +;; locale/*/Compose files (which have both prefix and postfix +;; sequences), but bear in mind that sequences which are logical in +;; that context may not be sensible when they're not signaled with +;; the Compose key. An example is a double space for NBSP. + +;;; Code: + +(require 'quail) + +(quail-define-package + "latin-1-prefix" "Latin-1" "1>" t + "Latin-1 characters input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á, '' -> ´ + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"a -> ä \"\" -> ¨ + tilde | ~ | ~a -> ã + cedilla | ~ | ~c -> ç + misc | \" ~ / | \"s -> ß ~d -> ð ~t -> þ /a -> å /e -> æ /o -> ø + symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ ~~ -> ¸ + | ~ | ~s -> § ~x -> ¤ ~. -> · ~$ -> £ ~u -> µ + | ~ | ~p -> ¶ ~- -> ~= -> ¯ ~| -> ¦ + symbol | _ / | _o -> º _a -> ª // -> ° /\\ -> × _y -> ¥ + | _ / | _: -> ÷ /c -> ¢ /2 -> ½ /4 -> ¼ /3 -> ¾ + | _ / | /= -> ¬ + symbol | ^ | ^r -> ® ^c -> © ^1 -> ¹ ^2 -> ² ^3 -> ³ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'Y" ?Ý) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'y" ?ý) + ("''" ?´) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`I" ?Ì) + ("`O" ?Ò) + ("`U" ?Ù) + ("`a" ?à) + ("`e" ?è) + ("`i" ?ì) + ("`o" ?ò) + ("`u" ?ù) + ("``" ?`) + ("` " ?`) + ("^A" ?Â) + ("^E" ?Ê) + ("^I" ?Î) + ("^O" ?Ô) + ("^U" ?Û) + ("^a" ?â) + ("^e" ?ê) + ("^i" ?î) + ("^o" ?ô) + ("^u" ?û) + ("^^" ?^) + ("^ " ?^) + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"i" ?ï) + ("\"o" ?ö) + ("\"s" ?ß) + ("\"u" ?ü) + ("\"y" ?ÿ) + ("\"\"" ?¨) + ("\" " ?\") + ("~A" ?Ã) + ("~C" ?Ç) + ("~D" ?Ð) + ("~N" ?Ñ) + ("~O" ?Õ) + ("~T" ?Þ) + ("~a" ?ã) + ("~c" ?ç) + ("~d" ?ð) + ("~n" ?ñ) + ("~o" ?õ) + ("~t" ?þ) + ("~>" ?\») + ("~<" ?\«) + ("~!" ?¡) + ("~?" ?¿) + ("~~" ?¸) + ("~ " ?~) + ("/A" ?Å) + ("/E" ?Æ) + ("/O" ?Ø) + ("/a" ?å) + ("/e" ?æ) + ("/o" ?ø) + ("//" ?°) + ("/ " ?/) + ("_o" ?º) + ("_a" ?ª) + ("_ " ? ) +;; Symbols added by Roland Smith <rsmith@xs4all.nl> + ("_+" ?±) + ("_y" ?¥) + ("_:" ?÷) + ("__" ?_) + ("/c" ?¢) + ("/\\" ?×) + ("/2" ?½) + ("/4" ?¼) + ("/3" ?¾) + ("~s" ?§) + ("~p" ?¶) + ("~x" ?¤) + ("~." ?·) + ("~$" ?£) + ("~u" ?µ) + ("^r" ?®) + ("^c" ?©) + ("^1" ?¹) + ("^2" ?²) + ("^3" ?³) + ("~-" ?) + ("~|" ?¦) + ("/=" ?¬) + ("~=" ?¯) +) + +(quail-define-package + "catalan-prefix" "Latin-1" "CA>" t + "Catalan and Spanish input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á '' -> ´ + grave | ` | `a -> à + diaeresis | \" | \"i -> ï \"\" -> ¨ + tilde | ~ | ~n -> ñ + cedilla | ~ | ~c -> ç + symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`O" ?Ò) + ("`a" ?à) + ("`e" ?è) + ("`o" ?ò) + ("` " ?`) + ("\"I" ?Ï) + ("\"U" ?Ü) + ("\"i" ?ï) + ("\"u" ?ü) + ("\" " ?\") + ("~C" ?Ç) + ("~N" ?Ñ) + ("~c" ?ç) + ("~n" ?ñ) + ("~>" ?\») + ("~<" ?\«) + ("~!" ?¡) + ("~?" ?¿) + ("~ " ?~) +) + +(quail-define-package + "esperanto-prefix" "Latin-3" "EO>" t + "Esperanto input method with prefix modifiers +Key translation rules are: + ^H -> ?Ĥ ^J -> ?Ĵ ^h -> ?ĥ ^j -> ?ĵ ^C -> ?Ĉ ^G -> ?Ĝ, + ^S -> ?Ŝ ^c -> ?ĉ ^g -> ?ĝ ^s -> ?ŝ ~U -> ?Ŭ ~u -> ?ŭ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("^H" ?Ĥ) + ("^J" ?Ĵ) + ("^h" ?ĥ) + ("^j" ?ĵ) + ("^C" ?Ĉ) + ("^G" ?Ĝ) + ("^S" ?Ŝ) + ("^c" ?ĉ) + ("^g" ?ĝ) + ("^s" ?ŝ) + ("^^" ?^) + ("^ " ?^) + ("~U" ?Ŭ) + ("~u" ?ŭ) + ("~ " ?~) +) + +(quail-define-package + "french-prefix" "French" "FR>" t + "French (Français) input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'e -> é + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"i -> ï + cedilla | ~ or , | ~c -> ç ,c -> ç + symbol | ~ | ~> -> » ~< -> « + misc | / | /o -> œ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'E" ?É) + ("'C" ?Ç) + ("'e" ?é) + ("'c" ?ç) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`U" ?Ù) + ("`a" ?à) + ("`e" ?è) + ("`u" ?ù) + ("` " ?`) + ("^A" ?Â) + ("^E" ?Ê) + ("^I" ?Î) + ("^O" ?Ô) + ("^U" ?Û) + ("^a" ?â) + ("^e" ?ê) + ("^i" ?î) + ("^o" ?ô) + ("^u" ?û) + ("^ " ?^) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"e" ?ë) + ("\"i" ?ï) + ("\" " ?\") + ("/o" ?œ) + ("/O" ?Œ) + ("/ " ?/) + ("~<" ?\«) + ("~>" ?\») + ("~C" ?Ç) + ("~c" ?ç) + ("~ " ?~) + (",C" ?Ç) + (",c" ?ç) + (", " ?,) +) + +(quail-define-package + "romanian-prefix" "Romanian" "RO>" t + "Romanian (româneşte) input method with prefix modifiers + + effect | prefix | examples + ------------+--------+------------------ + tilde | ~ | ~a -> ă + circumflex | ^ | ^a -> â, ^i -> î + cedilla | , | ,s -> ş, ,t -> ţ + ~ | ~ | ~~ -> ~ + ^ | ^ | ^^ -> ^ + , | , | ,, -> , +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("~A" ?Ă) ("~a" ?ă) + ("^A" ?Â) ("^a" ?â) + ("^I" ?Î) ("^i" ?î) + (",S" ?Ş) (",s" ?ş) + (",T" ?Ţ) (",t" ?ţ) + ("^^" ?^) ("~~" ?~) (",," ?,)) + +(quail-define-package + "romanian-alt-prefix" "Romanian" "RO>" t + "Alternative Romanian (româneşte) input method with prefix modifiers + + effect | prefix | examples + ------------+--------+------------------ + tilde | \" | \"a -> â + circumflex | ' | 'a -> â, 'i -> î + cedilla | ' | 's -> ş, 't -> ţ + ' | ' | '' -> ' + \" | \" | \"\" -> \" +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Ă) ("'a" ?ă) + ("\"A" ?Â) ("\"a" ?â) + ("'I" ?Î) ("'i" ?î) + ("'S" ?Ş) ("'s" ?ş) + ("'T" ?Ţ) ("'t" ?ţ) + ("''" ?') ("\"\"" ?\")) + +(quail-define-package + "german-prefix" "German" "DE>" t + "German (Deutsch) input method with prefix modifiers +Key translation rules are: + \"A -> Ä -> \"O -> Ö \"U -> Ü \"s -> ß +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("\"A" ?Ä) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"o" ?ö) + ("\"u" ?ü) + ("\"s" ?ß) + ("\" " ?\") +) + +(quail-define-package + "irish-prefix" "Latin-1" "GA>" t + "Irish input method with prefix modifiers +Key translation rules are: + 'A -> Á 'E -> É 'I -> Í 'O -> Ó 'U -> Ú +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("' " ?') +) + +(quail-define-package + "portuguese-prefix" "Latin-1" "PT>" t + "Portuguese input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á '' -> ´ + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"u -> ü + tilde | ~ | ~a -> ã + cedilla | ' or , | 'c -> ç ,c -> ç +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'C" ?Ç) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'c" ?ç) + ("' " ?') + ("`A" ?À) + ("`a" ?à) + ("` " ?`) + ("^A" ?Â) + ("^E" ?Ê) + ("^O" ?Ô) + ("^a" ?â) + ("^e" ?ê) + ("^o" ?ô) + ("^ " ?^) + ("\"U" ?Ü) + ("\"u" ?ü) + ("\" " ?\") + ("~A" ?Ã) + ("~O" ?Õ) + ("~a" ?ã) + ("~o" ?õ) + ("~ " ?~) + (",c" ?ç) + (",C" ?Ç) + (",," ?,) +) + +(quail-define-package + "spanish-prefix" "Spanish" "ES>" t + "Spanish (Español) input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á + diaeresis | \" | \"u -> ü + tilde | ~ | ~n -> ñ + symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("' " ?') + ("\"U" ?Ü) + ("\"u" ?ü) + ("\" " ?\") + ("~N" ?Ñ) + ("~n" ?ñ) + ("~>" ?\») + ("~<" ?\«) + ("~!" ?¡) + ("~?" ?¿) + ("~ " ?~) +) + +(quail-define-package + "latin-2-prefix" "Latin-2" "2>" t + "Latin-2 characters input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á '' -> ?´ + circumflex | ^ | ^a -> â + diaeresis | \" | \"a -> ä \"\" -> ¨ + breve | ~ | ~a -> ă + caron | ~ | ~c -> č + cedilla | ` | `c -> ç `e -> ?ę + misc | ' ` ~ | 'd -> đ `l -> ł `z -> ż ~o -> ő ~u -> ű + symbol | ~ | `. -> ˙ ~~ -> ˘ ~. -> ?¸ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'C" ?Ć) + ("'D" ?Đ) + ("'E" ?É) + ("'I" ?Í) + ("'L" ?Ĺ) + ("'N" ?Ń) + ("'O" ?Ó) + ("'R" ?Ŕ) + ("'S" ?Ś) + ("'U" ?Ú) + ("'Y" ?Ý) + ("'Z" ?Ź) + ("'a" ?á) + ("'c" ?ć) + ("'d" ?đ) + ("'e" ?é) + ("'i" ?í) + ("'l" ?ĺ) + ("'n" ?ń) + ("'o" ?ó) + ("'r" ?ŕ) + ("'s" ?ś) + ("'u" ?ú) + ("'y" ?ý) + ("'z" ?ź) + ("''" ?´) + ("' " ?') + ("`A" ?Ą) + ("`C" ?Ç) + ("`E" ?Ę) + ("`L" ?Ł) + ("`S" ?Ş) + ("`T" ?Ţ) + ("`Z" ?Ż) + ("`a" ?ą) + ("`l" ?ł) + ("`c" ?ç) + ("`e" ?ę) + ("`s" ?ş) + ("`t" ?ţ) + ("`z" ?ż) + ("``" ?Ş) + ("`." ?˙) + ("` " ?`) + ("^A" ?Â) + ("^I" ?Î) + ("^O" ?Ô) + ("^a" ?â) + ("^i" ?î) + ("^o" ?ô) + ("^^" ?^) + ("^ " ?^) + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"o" ?ö) + ("\"s" ?ß) + ("\"u" ?ü) + ("\"\"" ?¨) + ("\" " ?\") + ("~A" ?Ă) + ("~C" ?Č) + ("~D" ?Ď) + ("~E" ?Ě) + ("~L" ?Ľ) + ("~N" ?Ň) + ("~O" ?Ő) + ("~R" ?Ř) + ("~S" ?Š) + ("~T" ?Ť) + ("~U" ?Ű) + ("~Z" ?Ž) + ("~a" ?ă) + ("~c" ?č) + ("~d" ?ď) + ("~e" ?ě) + ("~l" ?ľ) + ("~n" ?ň) + ("~o" ?ő) + ("~r" ?ř) + ("~s" ?š) + ("~t" ?ť) + ("~u" ?ű) + ("~z" ?ž) + ("~v" ?˘) + ("~~" ?˘) + ("~." ?¸) + ("~ " ?~) +) + +(quail-define-package + "latin-3-prefix" "Latin-3" "3>" t + "Latin-3 characters input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á '' -> ?´ + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"a -> ä \"\" -> ¨ + cedilla | ~ | ~c -> ç ~s -> ş ~~ -> ¸ + dot above | / . | /g -> ġ .o -> ġ + misc | \" ~ / | \"s -> ß ~g -> ğ ~u -> ŭ /h -> ħ /i -> ı + symbol | ~ | ~` -> ˘ /# -> £ /$ -> ¤ // -> ° +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("''" ?´) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`I" ?Ì) + ("`O" ?Ò) + ("`U" ?Ù) + ("`a" ?à) + ("`e" ?è) + ("`i" ?ì) + ("`o" ?ò) + ("`u" ?ù) + ("``" ?`) + ("` " ?`) + ("^A" ?Â) + ("^C" ?Ĉ) + ("^E" ?Ê) + ("^G" ?Ĝ) + ("^H" ?Ĥ) + ("^I" ?Î) + ("^J" ?Ĵ) + ("^O" ?Ô) + ("^S" ?Ŝ) + ("^U" ?Û) + ("^a" ?â) + ("^c" ?ĉ) + ("^e" ?ê) + ("^g" ?ĝ) + ("^h" ?ĥ) + ("^i" ?î) + ("^j" ?ĵ) + ("^o" ?ô) + ("^s" ?ŝ) + ("^u" ?û) + ("^^" ?^) + ("^ " ?^) + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"i" ?ï) + ("\"o" ?ö) + ("\"u" ?ü) + ("\"s" ?ß) + ("\"\"" ?¨) + ("\" " ?\") + ("~C" ?Ç) + ("~N" ?Ñ) + ("~c" ?ç) + ("~n" ?ñ) + ("~S" ?Ş) + ("~s" ?ş) + ("~G" ?Ğ) + ("~g" ?ğ) + ("~U" ?Ŭ) + ("~u" ?ŭ) + ("~`" ?˘) + ("~~" ?¸) + ("~ " ?~) + ("/C" ?Ċ) + ("/G" ?Ġ) + ("/H" ?Ħ) + ("/I" ?İ) + ("/Z" ?Ż) + ("/c" ?ċ) + ("/g" ?ġ) + ("/h" ?ħ) + ("/i" ?ı) + ("/z" ?ż) + ("/." ?˙) + ("/#" ?£) + ("/$" ?¤) + ("//" ?°) + ("/ " ?/) + (".C" ?Ċ) + (".G" ?Ġ) + (".I" ?İ) + (".Z" ?Ż) + (".c" ?ċ) + (".g" ?ġ) + (".z" ?ż) +) + + +(quail-define-package + "polish-slash" "Polish" "PL>" nil + "Polish diacritics and slash character are input as `/[acelnosxzACELNOSXZ/]'. +For example, the character named `aogonek' is obtained by `/a'." + nil t t t nil nil nil nil nil nil t) + +(quail-define-rules + ("//" ?/) + ("/a" ?ą) + ("/c" ?ć) + ("/e" ?ę) + ("/l" ?ł) + ("/n" ?ń) + ("/o" ?ó) + ("/s" ?ś) + ("/x" ?ź) + ("/z" ?ż) + ("/A" ?Ą) + ("/C" ?Ć) + ("/E" ?Ę) + ("/L" ?Ł) + ("/N" ?Ń) + ("/O" ?Ó) + ("/S" ?Ś) + ("/X" ?Ź) + ("/Z" ?Ż)) + +(quail-define-package + "latin-9-prefix" "Latin-9" "0>" t + "Latin-9 characters input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"a -> ä, \"Y -> Ÿ + tilde | ~ | ~a -> ã + caron | ~ | ~z -> ž + cedilla | ~ | ~c -> ç + misc | \" ~ / | \"s -> ß ~d -> ð ~t -> þ /a -> å /e -> æ /o -> ø + | \" ~ / | /o -> œ + symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ ~~ -> ž + | ~ | ~s -> § ~e -> € ~. -> · ~$ -> £ ~u -> µ + | ~ | ~- -> ~= -> ¯ + symbol | _ / | _o -> º _a -> ª // -> ° /\\ -> × _y -> ¥ + | _ / | _: -> ÷ /c -> ¢ ~p -> ¶ + | _ / | /= -> ¬ + symbol | ^ | ^r -> ® ^c -> © ^1 -> ¹ ^2 -> ² ^3 -> ³ _a -> ª +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'Y" ?Ý) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'y" ?ý) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`I" ?Ì) + ("`O" ?Ò) + ("`U" ?Ù) + ("`a" ?à) + ("`e" ?è) + ("`i" ?ì) + ("`o" ?ò) + ("`u" ?ù) + ("``" ?`) + ("` " ?`) + ("^A" ?Â) + ("^E" ?Ê) + ("^I" ?Î) + ("^O" ?Ô) + ("^U" ?Û) + ("^a" ?â) + ("^e" ?ê) + ("^i" ?î) + ("^o" ?ô) + ("^u" ?û) + ("^^" ?^) + ("^ " ?^) + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"i" ?ï) + ("\"o" ?ö) + ("\"s" ?ß) + ("\"u" ?ü) + ("\"y" ?ÿ) + ("\" " ?\") + ("~A" ?Ã) + ("~C" ?Ç) + ("~D" ?Ð) + ("~N" ?Ñ) + ("~O" ?Õ) + ("~S" ?Š) + ("~T" ?Þ) + ("~Z" ?Ž) + ("~a" ?ã) + ("~c" ?ç) + ("~d" ?ð) + ("~n" ?ñ) + ("~o" ?õ) + ("~s" ?š) + ("~t" ?þ) + ("~z" ?ž) + ("~>" ?\») + ("~<" ?\«) + ("~!" ?¡) + ("~?" ?¿) + ("~ " ?~) + ("/A" ?Å) + ("/E" ?Æ) + ("/O" ?Ø) + ("/a" ?å) + ("/e" ?æ) + ("/o" ?ø) + ("//" ?°) + ("/ " ?/) + ("_o" ?º) + ("_a" ?ª) + ("_+" ?±) + ("_y" ?¥) + ("_:" ?÷) + ("_ " ? ) + ("__" ?_) + ("/c" ?¢) + ("/\\" ?×) + ("/o" ?œ) ; clash with ø, but æ uses / + ("/O" ?Œ) + ("\"Y" ?Ÿ) + ("~s" ?§) + ("~p" ?¶) + ;; Is this the best option for Euro entry? + ("~e" ?€) + ("~." ?·) + ("~$" ?£) + ("~u" ?µ) + ("^r" ?®) + ("^c" ?©) + ("^1" ?¹) + ("^2" ?²) + ("^3" ?³) + ("~-" ?) + ("~=" ?¯) + ("/=" ?¬)) + +;; Latin-8 was done by an Englishman -- Johnny Celt should take a +;; squint at it. + +(quail-define-package + "latin-8-prefix" "Latin-8" "8>" t + "Latin-8 characters input method with prefix modifiers + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á + grave | ` | `a -> à + circumflex | ^ | ^w -> ŵ + diaeresis | \" | \"a -> ä + dot above | . | .b -> ḃ + tilde | ~ | ~a -> ã + cedilla | ~ | ~c -> ç + misc | \" ~ / | \"s -> ß /a -> å /e -> æ /o -> ø + | ~ | ~s -> § ~$ -> £ ~p -> ¶ + symbol | ^ | ^r -> ® ^c -> © +" nil t nil nil nil nil nil nil nil nil t) + +;; Basically following Latin-1, plus dottiness from Latin-3. +(quail-define-rules + (".B" ?Ḃ) + (".b" ?ḃ) + (".c" ?ċ) + (".C" ?Ċ) + (".D" ?Ḋ) + (".d" ?ḋ) + (".f" ?ḟ) + (".F" ?Ḟ) + (".g" ?ġ) + (".G" ?Ġ) + (".m" ?ṁ) + (".M" ?Ṁ) + (".p" ?ṗ) + (".P" ?Ṗ) + (".s" ?ṡ) + (".S" ?Ṡ) + (".t" ?ṫ) + (".T" ?Ṫ) + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'Y" ?Ý) + ("'W" ?Ẃ) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'w" ?ẃ) + ("'y" ?ý) + ("' " ?') + ("`A" ?À) + ("`E" ?È) + ("`I" ?Ì) + ("`O" ?Ò) + ("`U" ?Ù) + ("`W" ?Ẁ) + ("`Y" ?Ỳ) + ("`a" ?à) + ("`e" ?è) + ("`i" ?ì) + ("`o" ?ò) + ("`u" ?ù) + ("`w" ?ẁ) + ("`y" ?ỳ) + ("``" ?`) + ("` " ?`) + ("^A" ?Â) + ("^E" ?Ê) + ("^I" ?Î) + ("^O" ?Ô) + ("^U" ?Û) + ("^a" ?â) + ("^e" ?ê) + ("^i" ?î) + ("^o" ?ô) + ("^u" ?û) + ("^w" ?ŵ) + ("^W" ?Ŵ) + ("^y" ?ŷ) + ("^Y" ?Ŷ) + ("^^" ?^) + ("^ " ?^) + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"i" ?ï) + ("\"o" ?ö) + ("\"s" ?ß) + ("\"u" ?ü) + ("\"w" ?ẅ) + ("\"W" ?Ẅ) + ("\"y" ?ÿ) + ("\"Y" ?Ÿ) + ("\" " ?\") + ("~A" ?Ã) + ("~C" ?Ç) + ("~N" ?Ñ) + ("~O" ?Õ) + ("~a" ?ã) + ("~c" ?ç) + ("~n" ?ñ) + ("~o" ?õ) + ("~ " ?~) + ("/A" ?Å) + ("/E" ?Æ) + ("/O" ?Ø) + ("/a" ?å) + ("/e" ?æ) + ("/o" ?ø) + ("/ " ?/) + ("~p" ?¶) + ("~s" ?§) + ("~$" ?£) + ("^r" ?®) + ("^c" ?©)) + +(quail-define-package + "latin-prefix" "Latin" "L>" t + "Latin characters input method with prefix modifiers. +This is the union of various input methods originally made for input +of characters from a single Latin-N charset. + + effect | prefix | examples + ------------+--------+---------- + acute | ' | 'a -> á, '' -> ´ + grave | ` | `a -> à + circumflex | ^ | ^a -> â + diaeresis | \" | \"a -> ä \"\" -> ¨ + tilde | ~ | ~a -> ã + cedilla | ~ | ~c -> ç + breve | ~ | ~a -> ă + caron | ~ | ~c -> č + dot above | ~ / . | ~o -> ġ /o -> ġ .o -> ġ + misc | \" ~ / | \"s -> ß ~d -> ð ~t -> þ /a -> å /e -> æ /o -> ø + symbol | ~ | ~> -> » ~< -> « ~! -> ¡ ~? -> ¿ ~~ -> ¸ + symbol | _ / | _o -> º _a -> ª // -> ° /\\ -> × _y -> ¥ + symbol | ^ | ^r -> ® ^c -> © ^1 -> ¹ ^2 -> ² ^3 -> ³ +" nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("' " ?') + ("''" ?´) + ("'A" ?Á) + ("'E" ?É) + ("'I" ?Í) + ("'O" ?Ó) + ("'U" ?Ú) + ("'W" ?Ẃ) + ("'Y" ?Ý) + ("'a" ?á) + ("'e" ?é) + ("'i" ?í) + ("'o" ?ó) + ("'u" ?ú) + ("'w" ?ẃ) + ("'y" ?ý) + (".B" ?Ḃ) + (".C" ?Ċ) + (".D" ?Ḋ) + (".F" ?Ḟ) + (".G" ?Ġ) + (".I" ?İ) + (".M" ?Ṁ) + (".P" ?Ṗ) + (".S" ?Ṡ) + (".T" ?Ṫ) + (".Z" ?Ż) + (".b" ?ḃ) + (".c" ?ċ) + (".d" ?ḋ) + (".f" ?ḟ) + (".g" ?ġ) + (".m" ?ṁ) + (".p" ?ṗ) + (".s" ?ṡ) + (".t" ?ṫ) + (".z" ?ż) + ("/ " ?/) + ("/#" ?£) + ("/$" ?¤) + ("/." ?˙) + ("//" ?°) + ("/2" ?½) + ("/3" ?¾) + ("/4" ?¼) + ("/=" ?¬) + ("/A" ?Å) + ("/C" ?Ċ) + ("/E" ?Æ) + ("/G" ?Ġ) + ("/H" ?Ħ) + ("/I" ?İ) + ("/O" ?Ø) + ("/O" ?Œ) + ("/Z" ?Ż) + ("/\\" ?×) + ("/a" ?å) + ("/c" ?¢) + ("/c" ?ċ) + ("/e" ?æ) + ("/g" ?ġ) + ("/h" ?ħ) + ("/i" ?ı) + ("/o" ?ø) + ("/o" ?œ) + ("/z" ?ż) + ("\" " ?\") + ("\"A" ?Ä) + ("\"E" ?Ë) + ("\"I" ?Ï) + ("\"O" ?Ö) + ("\"U" ?Ü) + ("\"W" ?Ẅ) + ("\"Y" ?Ÿ) + ("\"\"" ?¨) + ("\"a" ?ä) + ("\"e" ?ë) + ("\"i" ?ï) + ("\"o" ?ö) + ("\"s" ?ß) + ("\"u" ?ü) + ("\"w" ?ẅ) + ("\"y" ?ÿ) + ("^ " ?^) + ("^1" ?¹) + ("^2" ?²) + ("^3" ?³) + ("^A" ?Â) + ("^C" ?Ĉ) + ("^E" ?Ê) + ("^G" ?Ĝ) + ("^H" ?Ĥ) + ("^I" ?Î) + ("^J" ?Ĵ) + ("^O" ?Ô) + ("^S" ?Ŝ) + ("^U" ?Û) + ("^W" ?Ŵ) + ("^Y" ?Ŷ) + ("^^" ?^) + ("^a" ?â) + ("^c" ?©) + ("^c" ?ĉ) + ("^e" ?ê) + ("^g" ?ĝ) + ("^h" ?ĥ) + ("^i" ?î) + ("^j" ?ĵ) + ("^o" ?ô) + ("^r" ?®) + ("^s" ?ŝ) + ("^u" ?û) + ("^w" ?ŵ) + ("^y" ?ŷ) + ("_+" ?±) + ("_:" ?÷) + ("_a" ?ª) + ("_o" ?º) + ("_y" ?¥) + ("_ " ? ) + ("` " ?`) + ("`A" ?À) + ("`E" ?È) + ("`I" ?Ì) + ("`O" ?Ò) + ("`U" ?Ù) + ("`W" ?Ẁ) + ("`Y" ?Ỳ) + ("``" ?`) + ("`a" ?à) + ("`e" ?è) + ("`i" ?ì) + ("`o" ?ò) + ("`u" ?ù) + ("`w" ?ẁ) + ("`y" ?ỳ) + ("~ " ?~) + ("~!" ?¡) + ("~$" ?£) + ("~-" ?) + ("~." ?·) + ("~<" ?\«) + ("~=" ?¯) + ("~>" ?\») + ("~?" ?¿) + ("~A" ?Ã) + ("~C" ?Ç) + ("~D" ?Ð) + ("~G" ?Ğ) + ("~N" ?Ñ) + ("~O" ?Õ) + ("~O" ?Ġ) + ("~S" ?Ş) + ("~S" ?Š) + ("~T" ?Þ) + ("~U" ?Ŭ) + ("~Z" ?Ž) + ("~`" ?˘) + ("~a" ?ã) + ("~c" ?ç) + ("~d" ?ð) + ("~e" ?€) + ("~g" ?ğ) + ("~n" ?ñ) + ("~o" ?õ) + ("~o" ?ġ) + ("~p" ?¶) + ("~s" ?§) + ("~s" ?ş) + ("~s" ?š) + ("~t" ?þ) + ("~u" ?µ) + ("~u" ?ŭ) + ("~x" ?¤) + ("~z" ?ž) + ("~|" ?¦) + ("~~" ?¸) +) + +;;; latin-pre.el ends here diff --git a/lisp/leim/quail/lrt.el b/lisp/leim/quail/lrt.el new file mode 100644 index 00000000000..ec88020493c --- /dev/null +++ b/lisp/leim/quail/lrt.el @@ -0,0 +1,80 @@ +;;; lrt.el --- Quail package for inputting Lao characters by LRT method -*-coding: utf-8;-*- + +;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Lao, LRT. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'lao-util) + +;; LRT (Lao Roman Transcription) input method accepts the following +;; key sequence: +;; consonant [+ semi-vowel-sign-lo ] + vowel [+ maa-sakod ] [+ tone-mark ] + +(defun quail-lao-update-translation (control-flag) + (if (integerp control-flag) + ;; Non-composable character typed. + (setq quail-current-str + (buffer-substring (overlay-start quail-overlay) + (overlay-end quail-overlay)) + unread-command-events + (string-to-list + (substring quail-current-key control-flag))) + (let ((lao-str (lao-transcribe-roman-to-lao-string quail-current-key))) + (if (> (aref lao-str 0) 255) + (setq quail-current-str lao-str) + (or quail-current-str + (setq quail-current-str quail-current-key))))) + control-flag) + + +(quail-define-package + "lao-lrt" "Lao" "ລR" t + "Lao input method using LRT (Lao Roman Transcription). +`\\' (backslash) + number-key => ໐,໑,໒,... LAO DIGIT ZERO, ONE, TWO, ... +`\\' (backslash) + `\\' => ໆ LAO KO LA (REPETITION) +`\\' (backslash) + `$' => ຯ LAO ELLIPSIS +" + nil 'forget-last-selection 'deterministic 'kbd-translate 'show-layout + nil nil nil 'quail-lao-update-translation nil t) + +;; LRT (Lao Roman Transcription) input method accepts the following +;; key sequence: +;; consonant [ semi-vowel-sign-lo ] vowel [ maa-sakod ] [ tone-mark ] + +(quail-install-map + (quail-map-from-table + '((base-state (lao-transcription-consonant-alist . sv-state) + lao-transcription-vowel-alist + lao-transcription-tone-alist) + (sv-state (lao-transcription-semi-vowel-alist . v-state) + (lao-transcription-vowel-alist . mt-state)) + (v-state (lao-transcription-vowel-alist . mt-state)) + (mt-state (lao-transcription-maa-sakod-alist . t-state) + lao-transcription-tone-alist) + (t-state lao-transcription-tone-alist)))) + +;;; lrt.el ends here diff --git a/lisp/leim/quail/persian.el b/lisp/leim/quail/persian.el new file mode 100644 index 00000000000..5eeb0e3d208 --- /dev/null +++ b/lisp/leim/quail/persian.el @@ -0,0 +1,526 @@ +;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8;-*- + +;; Copyright (C) 2011-2013 Free Software Foundation, Inc. + +;; Author: Mohsen BANAN <libre@mohsen.1.banan.byname.net> +;; X-URL: http://mohsen.1.banan.byname.net/contact + +;; Keywords: multilingual, input method, Farsi, Persian, keyboard + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; This file contains a collection of input methods for +;; Persian languages (Farsi, Urdu, Pashto/Afghanic, ...) +;; +;; At this time, the following input methods are specified: +;; +;; - (farsi-isiri-9149) Persian Keyboard based on Islamic Republic of Iran's ISIRI-9147 +;; - (farsi-transliterate-banan) An intuitive transliteration keyboard for Farsi +;; +;; Additional documentation for these input methods can be found at: +;; http://www.persoarabic.org/PLPC/120036 +;; + +;;; Code: + +(require 'quail) + +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; farsi-isiri-9147 +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; The keyboard mapping defined here is based on: +;; فنّاوریِ اطلاعات - چیدمان حروف و علائم فارسی بر صفحه کلید رایانه +;; استاندارد ملی ایران ۹۱۴۷ − چاپ اول +;; +;; Institute of Standards and Industrial Research of Iran +;; Information Technology – Layout of Persian Letters and Symbols +;; on Computer Keyboards +;; ISIRI 9147 -- 1st edition +;; Published at: http://www.isiri.org/portal/files/std/9147.pdf +;; Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-9147 +;; +;; +;; Specification of Iran's Persian Character Set is also relevant: +;; فنّاوریِ اطلاعات -- تبادل و شیوهی نمایش اطلاعاتِ فارسی بر اساس یونی کُد +;; استاندارد ملی ایران ۶۲۱۹ −− نسخهی نهایی +;; +;; Institute of Standards and Industrial Research of Iran +;; Information Technology – Persian Information Interchange and Display Mechanism, using Unicode +;; ISIRI-6219 Final Version +;; Published at: http://www.isiri.org/portal/files/std/6219.htm +;; Re-Published at: http://www.persoarabic.org/Repub/fpf-isiri-6219 +;; +;; Layers 1, 2 and 3 of ISIRI-9147 are fully implemented with the +;; exception of the Backslash, Alt-Backslash, Shift-Space and +;; Alt-Space keys. +;; +;; The Backslash key is used to replace کلید با دگر ساز راست -- the Alt or +;; Meta key. +;; +;; Layer 3 is then entered with the Backslash key and Layer 3 is +;; implemented as two letter keys as specified in ISIRI-9147. +;; +;; The character corresponding to Backslash is entered with Backslash-Backslash. +;; Alt-Backslash has been moved to Backslash-r. +;; Alt-Space has been moved to Backslash-t. +;; Shift-Space has been moved to Backslash-y. +;; +;; With these modifications, farsi-isiri-9147 is a full implementation +;; of ISIRI-9147. Additionally, these modifications allow for this +;; implementation to be ascii input stream based -- in addition to +;; being a keyboard layout. +;; +;; If a key on Layer 1 was reserved to replace دگر ساز راست (the Alt +;; or Meta key), then farsi-isiri-9147 could have claimed full +;; compliance -- without the need for the above description. Perhaps +;; this can be considered a flaw in the base ISIRI-9147 specification +;; to be addressed in the next revision. +;; + + +(quail-define-package + "farsi-isiri-9147" "Persian" " ف" nil + "Farsi keyboard based on ISIRI-9147. + See http://www.persoarabic.org/PLPC/120036 for additional documentation." + nil t t t t nil nil nil nil nil t) + +;; Note: the rows of keys below are enclosed in Left-To-Right Override +;; embedding, to prevent them from being reordered by the Emacs +;; display engine. + + +;; +----------------------------------------------------------------+ +;; | ۱! | ۲٬ | ۳٫ | ۴﷼ | ۵٪ | ۶× | ۷، | ۸* | ۹( | ۰) | -ـ | =+ | `÷ | +;; +----------------------------------------------------------------+ +;; | ضْ| صٌ| ثٍ| قً| فُ| غِ| عَ| هّ| خ] | ح[ | ج{ | چ} | +;; +------------------------------------------------------------+ +;; | شؤ | سئ | یي | بإ | لأ | اآ | تة | ن« | م» | ک: | گ؛ | \| | +;; +-----------------------------------------------------------+ +;; | ظك | طٓ| زژ | رٰ| ذB | دٔ| پء | و< | .> | /؟ | +;; +-------------------------------------------+ + +(quail-define-rules + ("1" ?۱) + ("2" ?۲) + ("3" ?۳) + ("4" ?۴) + ("5" ?۵) + ("6" ?۶) + ("7" ?۷) + ("8" ?۸) + ("9" ?۹) + ("0" ?۰) + ("-" ?-) + ("=" ?=) + ("`" ?\u200D) ;; ZWJ -- ZERO WIDTH JOINER اتصال مجازى + ("q" ?ض) + ("w" ?ص) + ("e" ?ث) + ("r" ?ق) + ("t" ?ف) + ("y" ?غ) + ("u" ?ع) + ("i" ?ه) + ("o" ?خ) + ("p" ?ح) + ("[" ?ج) + ("]" ?چ) + ("a" ?ش) + ("s" ?س) + ("d" ?ی) + ("f" ?ب) + ("g" ?ل) + ("h" ?ا) + ("j" ?ت) + ("k" ?ن) + ("l" ?م) + (";" ?ک) + ("'" ?گ) + + ("z" ?ظ) + ("x" ?ط) + ("c" ?ز) + ("v" ?ر) + ("b" ?ذ) + ("n" ?د) + ("m" ?پ) + ("," ?و) + ("." ?.) + ("/" ?/) + + ("!" ?!) + ("@" ?٬) + ("#" ?٫) + ("$" ?﷼) + ("%" ?٪) + ("^" ?×) + ("&" ?،) + ("*" ?*) + ("(" ?\)) + (")" ?\() + ("_" ?ـ) + ("+" ?+) + ("~" ?÷) + ("Q" ?ْ) ;; ساکن فارسى + ("W" ?ٌ) ;; دو پيش فارسى -- تنوين رفع + ("E" ?ٍ) ;; دو زير فارسى -- تنوين جر + ("R" ?ً) ;; دو زبر فارسى -- تنوين نصب + ("T" ?ُ) ;; پيش فارسى -- ضمه + ("Y" ?ِ) ;; زير فارسى -- کسره + ("U" ?َ) ;; زبر فارسى -- فتحه + ("I" ?ّ) ;; تشديد فارسى + ("O" ?\]) + ("P" ?\[) + ("{" ?}) + ("}" ?{) + ("A" ?ؤ) + ("S" ?ئ) + ("D" ?ي) + ("F" ?إ) + ("G" ?أ) + ("H" ?آ) + ("J" ?ة) + ("K" ?») + ("L" ?«) + (":" ?:) + ("\"" ?؛) + ("|" ?|) + ("Z" ?ك) + ("X" ?ٓ) + ("C" ?ژ) + ("V" ?ٰ) + ("B" ?\u200C) ;; ZWNJ -- ZERO WIDTH NON-JOINER فاصلهٔ مجازى + ("N" ?ٔ) ;; همزه فارسى بالا + ("M" ?ء) ;; harf farsi hamzeh + ("<" ?>) + (">" ?<) + ("?" ?؟) + + ;; Level 3 Entered with \ + ;; + ("\\" ?\\) ;; خط اريب وارو + ("\\\\" ?\\) + ("\\~" ?\u007E) + ("\\1" ?\u0060) + ("\\2" ?\u0040) + ("\\3" ?\u0023) + ("\\4" ?\u0024) + ("\\5" ?\u0025) + ("\\6" ?\u005E) + ("\\7" ?\u0026) + ("\\8" ?\u2022) + ("\\9" ?\u200E) + ("\\0" ?\u200F) + ("\\-" ?\u005F) + ("\\+" ?\u2212) + ("\\q" ?\u00B0) + ;;\\w" ?\u0000) + ("\\e" ?\u20AC) + ("\\r" ?\u2010) ;; replacement for Alt-BSL + ("\\t" ?\u00A0) ;; replacement for ALT-SPC + ("\\y" ?\u200C) ;; replacement for SHIFT-SPC + ;;("\\u" ?\u0000) + ("\\i" ?\u202D) + ("\\o" ?\u202E) + ("\\p" ?\u202C) + ("\\[" ?\u202A) + ("\\]" ?\u202B) + ;;("\\a" ?\u0000) + ;;("\\s" ?\u0000) + ("\\d" ?\u0649) + ;;("\\f" ?\u0000) + ;;("\\g" ?\u0000) + ("\\h" ?\u0671) + ;;("\\j" ?\u0000) + ("\\k" ?\uFD3E) + ("\\l" ?\uFD3F) + ("\\;" ?\u003B) + ("\\'" ?\u0022) + ;;("\\z" ?\u0000) + ;;("\\x" ?\u0000) + ;;("\\c" ?\u0000) + ("\\v" ?\u0656) + ("\\b" ?\u200D) + ("\\n" ?\u0655) + ("\\m" ?\u2026) + ("\\," ?\u002C) + ("\\." ?\u0027) + ("\\?" ?\u003F) + ;;("\\\\" ?\u2010) ;; Moved to backslash r to leave room for BSL-BSL + ) + +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; farsi-transliterate-banan +;; +;; Given a Qwerty keyboard, use Persian-to-Latin transliteration knowledge +;; to reverse transliterate in persian +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; See http://www.persoarabic.org/PLPC/120036 document for more complete +;;; documentation of keyboard bindings and usage instructions. +;;; +;; +;; ISIRI-9147 Persian keyboard is generally not well suited for Iranian-Expatriates +;; working/living in the West. +;; +;; The qwerty keyboard is usually second nature to Persian speaking expatriates and they +;; don't want to learn/adapt to ISIRI-9147. They expect software to adapt to them. +;; +;; That is what the ``Banan Multi-Character (Reverse) Transliteration Persian Input Method'' does. +;; +;; The typical profile of the user is assumed to be one who: +;; +;; - can write in farsi (not just speak it). +;; - is fully comfortable with a qwerty latin keyboard. +;; - is not familiar with isir-9147 and does not wish to be trained. +;; - communicates and writes in a mixed globish/persian -- not pure persian. +;; - is intuitively familiar with transliteration of farsi/persian into latin based on two letter +;; phonetic mapping to persian characters (e.g., gh ق -- kh خ -- sh ش -- ch چ -- zh ژ. +;; +;; This transliteration keyboard is designed to be intuitive such that +;; mapping are easy and natural to remember for a persian writer. +;; It is designed to be equivalent in capability to farsi-isiri-9147 +;; and provide for inputting all characters enumerated in ISIRI-6219. +;; +;; farsi-transliterate-banan is of course phonetic oriented. But it is very different from +;; pinglish. Pinglish is word oriented where you sound out the word with latin letters -- +;; including the vowels. farsi-transliterate-banan is letter oriented where you enter the +;; latin letter/letters closest to the persian letter. And usually omit vowels. +;; +;; For some persian characters there are multiple ways of inputting +;; the same character. For example both ``i'' and ``y'' produce ی. +;; For یک ``yk'', ``y'' is more natural and for این ``ain'', ``i'' is more natural. +;; +;; The more frequently used keys are mapped to lower case. The less frequently used letter moves to +;; upper case. For example: ``s'' is س and ``S'' is ص. ``h'' is ه and ``H'' +;; is ح. +;; +;; Multi-character input is based on \, &, and / prefix +;; characters. The letter 'h' is used as a postfix for the following two character mappings: +;; gh ق -- kh خ -- sh ش -- ch چ -- zh ژ -- Th ة -- Yh ى. +;; +;; +;; Prefix letter \ is used for two character inputs when an alternate form of a letter +;; is desired for example '\-' is: '÷' when '-' is: '-'. +;; +;; Prefix letter & is used for multi-character inputs when special characters are +;; desired based on their abbreviate name. For example you can enter ‎ to enter the +;; ``LEFT-TO-RIGHT MARK'' character. +;; +;; Prefix letter / is used to provide two characters. / is: ``ZERO WIDTH NON-JOINER'' +;; and // is /. +;; +;; The letter 'h' is used in a number of two character postfix mappings, +;; for example ``sh'' ش. So if you need the sequence of ``s'' and ``h'' you +;; need to repeat the ``s''. For example: سهم = 's' 's' 'h' 'm'. +;; + + +(quail-define-package + "farsi-transliterate-banan" "Persian" "ب" t + "Intuitive transliteration keyboard layout for persian/farsi. + See http://www.persoarabic.org/PLPC/120036 for additional documentation." + nil t t t t nil nil nil nil nil t) + + +(quail-define-rules +;;;;;;;;;;; isiri-6219 Table 5 -- جدول ۵ - حروِفِ اصلیِ فارسی + ("W" ?ء) ;; hamzeh + ("A" ?آ) ;; U+0622 & ARABIC LETTER ALEF WITH MADDA ABOVE & الف با کلاه + ("a" ?ا) ;; U+0627 & ARABIC LETTER ALEF & الف + ("\\a" ?أ) + ("b" ?ب) ;; U+0628 & ARABIC LETTER BEH & + ("p" ?پ) ;; U+067e & ARABIC LETTER PEH & + ("t" ?ت) + ("tt" ?ت) + ("c" ?ث) + ("cc" ?ث) + ("j" ?ج) + ("ch" ?چ) + ("H" ?ح) + ("hh" ?ح) + ("kh" ?خ) + ("d" ?د) + ("Z" ?ذ) + ("r" ?ر) + ("z" ?ز) + ("zz" ?ز) + ("zh" ?ژ) + ("s" ?س) + ("ss" ?س) + ("sh" ?ش) + ("S" ?ص) + ("x" ?ض) + ("T" ?ط) + ("TT" ?ط) + ("X" ?ظ) + ("w" ?ع) + ("q" ?غ) + ("G" ?غ) + ("Gh" ?غ) + ("GG" ?غ) + ("f" ?ف) + ("Q" ?ق) + ("gh" ?ق) + ("k" ?ک) + ("kk" ?ک) + ("g" ?گ) + ("gg" ?گ) + ("l" ?ل) + ("m" ?م) + ("n" ?ن) + ("v" ?و) + ("u" ?و) + ("V" ?ؤ) + ("h" ?ه) + ("y" ?ی) + ("i" ?ی) + ("I" ?ئ) + + +;;;;;;;;;;; isiri-6219 Table 6 -- جدول ۶ - حروِفِ عربی + ("F" ?إ) + ("D" ?\u0671) ;; (ucs-insert #x0671)ٱ named: حرفِ الفِ وصل + ("K" ?ك) ;; Arabic kaf + ("Th" ?ة) ;; ta marbuteh + ("Y" ?ي) + ("YY" ?ي) + ("Yh" ?ى) + +;;;;;;;;;;; isiri-6219 Table 4 -- جدول ۴ - ارقام و علائم ریاضی + ("0" ?۰) + ("1" ?۱) + ("2" ?۲) + ("3" ?۳) + ("4" ?۴) + ("5" ?۵) + ("6" ?۶) + ("7" ?۷) + ("8" ?۸) + ("9" ?۹) + + ("\\/" ?\u066B) ;; (ucs-insert #x066B)٫ named: ممیزِ فارسی + ("\\," ?\u066C) ;; (ucs-insert #x066C)٬ named: جداکنندهی هزارهای فارسی + ("%" ?\u066A) ;; (ucs-insert #x066A)٪ named: درصدِ فارسی + ("+" ?\u002B) ;; (ucs-insert #x002B)+ named: علامتِ بهاضافه + ("-" ?\u2212) ;; (ucs-insert #x2212)− named: علامتِ منها + ("\\*" ?\u00D7) ;; (ucs-insert #x00D7)× named: علامتِ ضرب + ("\\-" ?\u00F7) ;; (ucs-insert #x00F7)÷ named: علامتِ تقسیم + ("<" ?\u003C) ;; (ucs-insert #x003C)< named: علامتِ کوچکتر + ("=" ?\u003D) ;; (ucs-insert #x003D)= named: علامتِ مساوی + (">" ?\u003E) ;; (ucs-insert #x003E)> named: علامتِ بزرگتر + + +;;;;;;;;;;; isiri-6219 Table 2 -- جدول ۲ - علائم نقطه گذاریِ مشترک + ;;; Space + ("." ?.) ;; + (":" ?\u003A) ;; (ucs-insert #x003A): named: + ("!" ?\u0021) ;; (ucs-insert #x0021)! named: + ("\\." ?\u2026) ;; (ucs-insert #x2026)… named: + ("\\-" ?\u2010) ;; (ucs-insert #x2010)‐ named: + ("-" ?\u002D) ;; (ucs-insert #x002D)- named: + ("|" ?|) + ;;("\\\\" ?\) + ("//" ?/) + ("*" ?\u002A) ;; (ucs-insert #x002A)* named: + ("(" ?\u0028) ;; (ucs-insert #x0028)( named: + (")" ?\u0029) ;; (ucs-insert #x0029)) named: + ("[" ?\u005B) ;; (ucs-insert #x005B)[ named: + ("[" ?\u005D) ;; (ucs-insert #x005D)] named: + ("{" ?\u007B) ;; (ucs-insert #x007B){ named: + ("}" ?\u007D) ;; (ucs-insert #x007D)} named: + ("\\<" ?\u00AB) ;; (ucs-insert #x00AB)« named: + ("\\>" ?\u00BB) ;; (ucs-insert #x00BB)» named: + ("N" ?\u00AB) ;; (ucs-insert #x00AB)« named: + ("M" ?\u00BB) ;; (ucs-insert #x00BB)» named: + +;;;;;;;;;;; isiri-6219 Table 3 -- جدول ۳ - علائم نقطه گذاریِ فارسی + ("," ?،) ;; farsi + (";" ?؛) ;; + ("?" ?؟) ;; alamat soal + ("_" ?ـ) ;; + + +;;;;;;;;;;; isiri-6219 Table 1 -- جدول ۱ - نویسههای کنترلی + ;; LF + ;; CR + ("‌" ?\u200C) ;; (ucs-insert #x200C) named: فاصلهی مجازی + ("/" ?\u200C) ;; + ("‍" ?\u200D) ;; (ucs-insert #x200D) named: اتصالِ مجازی + ("J" ?\u200D) ;; + ("‎" ?\u200E) ;; (ucs-insert #x200E) named: نشانهی چپبهراست + ("‏" ?\u200F) ;; (ucs-insert #x200F) named: نشانهی راستبهچپ + ("&ls;" ?\u2028) ;; (ucs-insert #x2028)
named: جداکنندهی سطرها + ("&ps;" ?\u2028) ;; (ucs-insert #x2029)
named: جداکنندهی بندها + ("&lre;" ?\u202A) ;; (ucs-insert #x202A) named: زیرمتنِ چپبهراست + ("&rle;" ?\u202B) ;; (ucs-insert #x202B) named: زیرمتنِ راستبهچپ + ("&pdf;" ?\u202C) ;; (ucs-insert #x202C) named: پایانِ زیرمتن + ("&lro;" ?\u202D) ;; (ucs-insert #x202D) named: زیرمتنِ اکیداً چپبهراست + ("&rlo;" ?\u202D) ;; (ucs-insert #x202E) named: زیرمتنِ اکیداً راستبهچپ + ("&bom;" ?\uFEFF) ;; (ucs-insert #xFEFF) named: نشانهی ترتیبِ بایتها + + +;;;;;;;;;;; isiri-6219 Table 7 -- جدول ۷ - نشانههایِ فارسی + ("^" ?َ) ;; zbar ;; زبر فارسى + ("e" ?ِ) ;; zir زير فارسى + ("o" ?ُ) ;; peesh ;; پيش فارسى -- ضمه + ("E" ?ٍ) ;; eizan ;; دو زير فارسى -- تنوين جر + ("#" ?ً) ;; دو زبر + ("O" ?ٌ) ;; دو پيش فارسى -- تنوين رفع + ("~" ?ّ) ;; tashdid ;; تشديد فارسى + ("@" ?ْ) ;; ساکن فارسى + ("U" ?\u0653) ;; (ucs-insert #x0653)ٓ named: مدِ فارسی + ("`" ?ٔ) ;; همزه فارسى بالا + ("C" ?\u0655) ;; (ucs-insert #x0655)ٕ named: همزه فارسى پایین + ("$" ?\u0670) ;; (ucs-insert #x0670)ٰ named: الفِ مقصورهی فارسی + + +;;;;;;;;;;; isiri-6219 Table 8 - Forbidden Characters -- جدول ۸ - نویسههایِ ممنوع +;; ;; he ye (ucs-insert 1728) (ucs-insert #x06c0) kills emacs-24.0.90 +;; arabic digits 0-9 + + +;;;;;;; Latin Extensions + ("\\" ?\\) ;; خط اريب وارو + ("\\\\" ?\\) + ("\\~" ?~) + ("\\@" ?@) + ("\\#" ?#) + ("\\$" ?\uFDFC) ;; (ucs-insert #xFDFC)﷼ named: + ("\\^" ?^) + ("\\1" ?1) + ("\\2" ?2) + ("\\3" ?3) + ("\\4" ?4) + ("\\5" ?5) + ("\\6" ?6) + ("\\7" ?7) + ("\\8" ?8) + ("\\9" ?9) + ("\\0" ?0) + +) + +;;; persian.el ends here diff --git a/lisp/leim/quail/py-punct.el b/lisp/leim/quail/py-punct.el new file mode 100644 index 00000000000..3e537c4f043 --- /dev/null +++ b/lisp/leim/quail/py-punct.el @@ -0,0 +1,77 @@ +;;; py-punct.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Author: Ken'ichi HANDA <handa@etl.go.jp> + +;; Keywords: multilingual, input method, Chinese + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(load "quail/PY") +(load "quail/Punct") + +(quail-define-package + "chinese-py-punct" "Chinese-GB" "$AF47{(B" + t + "$A::WVJdHk(B $AF4Rt7=08(B and `v' for $A1j5c7{:EJdHk(B + +This is the combination of the input methods `chinese-py' and `chinese-punct'. +You can enter normal Chinese characters by the same way as `chinese-py'. +And, you can enter symbols by typing `v' followed by any key sequences +defined in `chinese-punct'. + +For instance, typing `v' and `%' insert `$A#%(B'. +") + +(setcar (nthcdr 2 quail-current-package) + (copy-sequence (nth 2 (assoc "chinese-py" quail-package-alist)))) + +(quail-defrule "v" (nth 2 (assoc "chinese-punct" quail-package-alist))) + +(load "quail/TONEPY") + +(quail-define-package + "chinese-tonepy-punct" "Chinese-GB" "$AF47{(B" + t + "$A::WVJdHk(B $A4x5wF4Rt7=08(B and `v' for $A1j5c7{:EJdHk(B + +This is the combination of the input methods `chinese-tonepy' and +`chinese-punct'. + +You can enter normal Chinese characters by the same way as +`chinese-tonepy'. And, you can enter symbols by typing `v' followed +by any key sequences defined in `chinese-punct'. + +For instance, typing `v' and `%' insert `$A#%(B'. +") + +(setcar (nthcdr 2 quail-current-package) + (copy-sequence (nth 2 (assoc "chinese-tonepy" quail-package-alist)))) + +(quail-defrule "v" (nth 2 (assoc "chinese-punct" quail-package-alist))) + +;;; py-punct.el ends here diff --git a/lisp/leim/quail/pypunct-b5.el b/lisp/leim/quail/pypunct-b5.el new file mode 100644 index 00000000000..37c12659cc3 --- /dev/null +++ b/lisp/leim/quail/pypunct-b5.el @@ -0,0 +1,56 @@ +;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*- + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Author: Ken'ichi HANDA <handa@etl.go.jp> + +;; Keywords: multilingual, input method, Chinese + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(load "quail/PY-b5") +(load "quail/Punct-b5") + +(quail-define-package + "chinese-py-punct-b5" "Chinese-BIG5" "$(03<>K(B" + t + "$(0&d'GTT&,!J3<5x!K(B and `v' for $(0O:X5>KHATT&,(B + +This is the combination of the input method `chinese-py-b5' and +`chinese-punct-b5'. + +You can enter normal Chinese characters by the same way as `chinese-py-b5'. +And, you can enter symbols by typing `v' followed by any key sequences +defined in `chinese-punct-b5'. + +For instance, typing `v' and `%' insert `$(0"h(B'. +") + +(setcar (nthcdr 2 quail-current-package) + (nth 2 (assoc "chinese-py-b5" quail-package-alist))) + +(quail-defrule "v" (nth 2 (assoc "chinese-punct-b5" quail-package-alist))) + +;;; pypunct-b5.el ends here diff --git a/lisp/leim/quail/rfc1345.el b/lisp/leim/quail/rfc1345.el new file mode 100644 index 00000000000..3981b76eda8 --- /dev/null +++ b/lisp/leim/quail/rfc1345.el @@ -0,0 +1,2064 @@ +;;; rfc1345.el --- Quail method for RFC 1345 mnemonics -*- coding: utf-8 -*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Dave Love <fx@gnu.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; The table below was derived from GNU Recode 3.6. + +;;; Code: + +(require 'quail) + +(quail-define-package + "rfc1345" "UTF-8" "m" t + "Unicode characters input method using RFC1345 mnemonics (non-ASCII only). +E.g. &a' -> á" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules +;; There doesn't seem to be any point in including ASCII. +;; ("&NU" ?\^@) +;; ("&SH" ?\^A) +;; ("&SX" ?\^B) +;; ("&EX" ?\^C) +;; ("&ET" ?\^D) +;; ("&EQ" ?\^E) +;; ("&AK" ?\^F) +;; ("&BL" ?\^G) +;; ("&BS" ?\^H) +;; ("&HT" 9) +;; ("&LF" 10) +;; ("&VT" ?\^K) +;; ("&FF" ?\^L) +;; ("&CR" 13) +;; ("&SO" ?\^N) +;; ("&SI" ?\^O) +;; ("&DL" ?\^P) +;; ("&D1" ?\^Q) +;; ("&D2" ?\^R) +;; ("&D3" ?\^S) +;; ("&D4" ?\^T) +;; ("&NK" ?\^U) +;; ("&SY" ?\^V) +;; ("&EB" ?\^W) +;; ("&CN" ?\^X) +;; ("&EM" ?\^Y) +;; ("&SB" ?\032) ; ^Z in a file causes trouble on MS systems. +;; ("&EC" ?\033) +;; ("&FS" ?\034) +;; ("&GS" ?\035) +;; ("&RS" ?\036) +;; ("&US" ?\037) +;; ("&SP" ?\ ) +;; ("&!" ?\!) +;; ("&\"" ?\") +;; ("&Nb" ?\#) +;; ("&DO" ?\$) +;; ("&%" ?\%) +;; ("&&" ?\&) +;; ("&'" ?\') +;; ("&(" ?\() +;; ("&)" ?\)) +;; ("&*" ?\*) +;; ("&+" ?\+) +;; ("&," ?\,) +;; ("&-" ?\-) +;; ("&." ?\.) +;; ("&/" ?\/) +;; ("&0" ?\0) +;; ("&1" ?\1) +;; ("&2" ?\2) +;; ("&3" ?\3) +;; ("&4" ?\4) +;; ("&5" ?\5) +;; ("&6" ?\6) +;; ("&7" ?\7) +;; ("&8" ?\8) +;; ("&9" ?\9) +;; ("&:" ?\:) +;; ("&;" ?\;) +;; ("&<" ?\<) +;; ("&=" ?\=) +;; ("&>" ?\>) +;; ("&?" ?\?) +;; ("&At" ?\@) +;; ("&A" ?\A) +;; ("&B" ?\B) +;; ("&C" ?\C) +;; ("&D" ?\D) +;; ("&E" ?\E) +;; ("&F" ?\F) +;; ("&G" ?\G) +;; ("&H" ?\H) +;; ("&I" ?\I) +;; ("&J" ?\J) +;; ("&K" ?\K) +;; ("&L" ?\L) +;; ("&M" ?\M) +;; ("&N" ?\N) +;; ("&O" ?\O) +;; ("&P" ?\P) +;; ("&Q" ?\Q) +;; ("&R" ?\R) +;; ("&S" ?\S) +;; ("&T" ?\T) +;; ("&U" ?\U) +;; ("&V" ?\V) +;; ("&W" ?\W) +;; ("&X" ?\X) +;; ("&Y" ?\Y) +;; ("&Z" ?\Z) +;; ("&<(" ?\[) +;; ("&//" ?\\) +;; ("&)>" ?\]) +;; ("&'>" ?\^) +;; ("&_" ?\_) +;; ("&'!" ?\`) +;; ("&a" ?\a) +;; ("&b" ?\b) +;; ("&c" ?\c) +;; ("&d" ?\d) +;; ("&e" ?\e) +;; ("&f" ?\f) +;; ("&g" ?\g) +;; ("&h" ?\h) +;; ("&i" ?\i) +;; ("&j" ?\j) +;; ("&k" ?\k) +;; ("&l" ?\l) +;; ("&m" ?\m) +;; ("&n" ?\n) +;; ("&o" ?\o) +;; ("&p" ?\p) +;; ("&q" ?\q) +;; ("&r" ?\r) +;; ("&s" ?\s) +;; ("&t" ?\t) +;; ("&u" ?\u) +;; ("&v" ?\v) +;; ("&w" ?\w) +;; ("&x" ?\x) +;; ("&y" ?\y) +;; ("&z" ?\z) +;; ("&(!" ?\{) +;; ("&!!" ?\|) +;; ("&!)" ?\}) +;; ("&'?" ?\~) +;; ("&DT" ?\) + ("&PA" ?\) + ("&HO" ?\) + ("&BH" ?\) + ("&NH" ?\) + ("&IN" ?\) + ("&NL" ?\
) + ("&SA" ?\) + ("&ES" ?\) + ("&HS" ?\) + ("&HJ" ?\) + ("&VS" ?\) + ("&PD" ?\) + ("&PU" ?\) + ("&RI" ?\) + ("&S2" ?\) + ("&S3" ?\) + ("&DC" ?\) + ("&P1" ?\) + ("&P2" ?\) + ("&TS" ?\) + ("&CC" ?\) + ("&MW" ?\) + ("&SG" ?\) + ("&EG" ?\) + ("&SS" ?\) + ("&GC" ?\) + ("&SC" ?\) + ("&CI" ?\) + ("&ST" ?\) + ("&OC" ?\) + ("&PM" ?\) + ("&AC" ?\) + ("&NS" ?\ ) + ("&!I" ?\¡) + ("&Ct" ?\¢) + ("&Pd" ?\£) + ("&Cu" ?\¤) + ("&Ye" ?\¥) + ("&BB" ?\¦) + ("&SE" ?\§) + ("&':" ?\¨) + ("&Co" ?\©) + ("&-a" ?\ª) + ("&<<" ?\«) + ("&NO" ?\¬) + ("&--" ?\) + ("&Rg" ?\®) + ("&'m" ?\¯) + ("&DG" ?\°) + ("&+-" ?\±) + ("&2S" ?\²) + ("&3S" ?\³) + ("&''" ?\´) + ("&My" ?\µ) + ("&PI" ?\¶) + ("&.M" ?\·) + ("&'," ?\¸) + ("&1S" ?\¹) + ("&-o" ?\º) + ("&>>" ?\») + ("&14" ?\¼) + ("&12" ?\½) + ("&34" ?\¾) + ("&?I" ?\¿) + ("&A!" ?\À) + ("&A'" ?\Á) + ("&A>" ?\Â) + ("&A?" ?\Ã) + ("&A:" ?\Ä) + ("&AA" ?\Å) + ("&AE" ?\Æ) + ("&C," ?\Ç) + ("&E!" ?\È) + ("&E'" ?\É) + ("&E>" ?\Ê) + ("&E:" ?\Ë) + ("&I!" ?\Ì) + ("&I'" ?\Í) + ("&I>" ?\Î) + ("&I:" ?\Ï) + ("&D-" ?\Ð) + ("&N?" ?\Ñ) + ("&O!" ?\Ò) + ("&O'" ?\Ó) + ("&O>" ?\Ô) + ("&O?" ?\Õ) + ("&O:" ?\Ö) + ("&*X" ?\×) + ("&O/" ?\Ø) + ("&U!" ?\Ù) + ("&U'" ?\Ú) + ("&U>" ?\Û) + ("&U:" ?\Ü) + ("&Y'" ?\Ý) + ("&TH" ?\Þ) + ("&ss" ?\ß) + ("&a!" ?\à) + ("&a'" ?\á) + ("&a>" ?\â) + ("&a?" ?\ã) + ("&a:" ?\ä) + ("&aa" ?\å) + ("&ae" ?\æ) + ("&c," ?\ç) + ("&e!" ?\è) + ("&e'" ?\é) + ("&e>" ?\ê) + ("&e:" ?\ë) + ("&i!" ?\ì) + ("&i'" ?\í) + ("&i>" ?\î) + ("&i:" ?\ï) + ("&d-" ?\ð) + ("&n?" ?\ñ) + ("&o!" ?\ò) + ("&o'" ?\ó) + ("&o>" ?\ô) + ("&o?" ?\õ) + ("&o:" ?\ö) + ("&-:" ?\÷) + ("&o/" ?\ø) + ("&u!" ?\ù) + ("&u'" ?\ú) + ("&u>" ?\û) + ("&u:" ?\ü) + ("&y'" ?\ý) + ("&th" ?\þ) + ("&y:" ?\ÿ) + ("&A-" ?\Ā) + ("&a-" ?\ā) + ("&A(" ?\Ă) + ("&a(" ?\ă) + ("&A;" ?\Ą) + ("&a;" ?\ą) + ("&C'" ?\Ć) + ("&c'" ?\ć) + ("&C>" ?\Ĉ) + ("&c>" ?\ĉ) + ("&C." ?\Ċ) + ("&c." ?\ċ) + ("&C<" ?\Č) + ("&c<" ?\č) + ("&D<" ?\Ď) + ("&d<" ?\ď) + ("&D/" ?\Đ) + ("&d/" ?\đ) + ("&E-" ?\Ē) + ("&e-" ?\ē) + ("&E(" ?\Ĕ) + ("&e(" ?\ĕ) + ("&E." ?\Ė) + ("&e." ?\ė) + ("&E;" ?\Ę) + ("&e;" ?\ę) + ("&E<" ?\Ě) + ("&e<" ?\ě) + ("&G>" ?\Ĝ) + ("&g>" ?\ĝ) + ("&G(" ?\Ğ) + ("&g(" ?\ğ) + ("&G." ?\Ġ) + ("&g." ?\ġ) + ("&G," ?\Ģ) + ("&g," ?\ģ) + ("&H>" ?\Ĥ) + ("&h>" ?\ĥ) + ("&H/" ?\Ħ) + ("&h/" ?\ħ) + ("&I?" ?\Ĩ) + ("&i?" ?\ĩ) + ("&I-" ?\Ī) + ("&i-" ?\ī) + ("&I(" ?\Ĭ) + ("&i(" ?\ĭ) + ("&I;" ?\Į) + ("&i;" ?\į) + ("&I." ?\İ) + ("&i." ?\ı) + ("&IJ" ?\IJ) + ("&ij" ?\ij) + ("&J>" ?\Ĵ) + ("&j>" ?\ĵ) + ("&K," ?\Ķ) + ("&k," ?\ķ) + ("&kk" ?\ĸ) + ("&L'" ?\Ĺ) + ("&l'" ?\ĺ) + ("&L," ?\Ļ) + ("&l," ?\ļ) + ("&L<" ?\Ľ) + ("&l<" ?\ľ) + ("&L." ?\Ŀ) + ("&l." ?\ŀ) + ("&L/" ?\Ł) + ("&l/" ?\ł) + ("&N'" ?\Ń) + ("&n'" ?\ń) + ("&N," ?\Ņ) + ("&n," ?\ņ) + ("&N<" ?\Ň) + ("&n<" ?\ň) + ("&'n" ?\ʼn) + ("&NG" ?\Ŋ) + ("&ng" ?\ŋ) + ("&O-" ?\Ō) + ("&o-" ?\ō) + ("&O(" ?\Ŏ) + ("&o(" ?\ŏ) + ("&O\"" ?\Ő) + ("&o\"" ?\ő) + ("&OE" ?\Œ) + ("&oe" ?\œ) + ("&R'" ?\Ŕ) + ("&r'" ?\ŕ) + ("&R," ?\Ŗ) + ("&r," ?\ŗ) + ("&R<" ?\Ř) + ("&r<" ?\ř) + ("&S'" ?\Ś) + ("&s'" ?\ś) + ("&S>" ?\Ŝ) + ("&s>" ?\ŝ) + ("&S," ?\Ş) + ("&s," ?\ş) + ("&S<" ?\Š) + ("&s<" ?\š) + ("&T," ?\Ţ) + ("&t," ?\ţ) + ("&T<" ?\Ť) + ("&t<" ?\ť) + ("&T/" ?\Ŧ) + ("&t/" ?\ŧ) + ("&U?" ?\Ũ) + ("&u?" ?\ũ) + ("&U-" ?\Ū) + ("&u-" ?\ū) + ("&U(" ?\Ŭ) + ("&u(" ?\ŭ) + ("&U0" ?\Ů) + ("&u0" ?\ů) + ("&U\"" ?\Ű) + ("&u\"" ?\ű) + ("&U;" ?\Ų) + ("&u;" ?\ų) + ("&W>" ?\Ŵ) + ("&w>" ?\ŵ) + ("&Y>" ?\Ŷ) + ("&y>" ?\ŷ) + ("&Y:" ?\Ÿ) + ("&Z'" ?\Ź) + ("&z'" ?\ź) + ("&Z." ?\Ż) + ("&z." ?\ż) + ("&Z<" ?\Ž) + ("&z<" ?\ž) + ("&s1" ?\ſ) + ("&b/" ?\ƀ) + ("&B2" ?\Ɓ) + ("&C2" ?\Ƈ) + ("&c2" ?\ƈ) + ("&F2" ?\Ƒ) + ("&f2" ?\ƒ) + ("&K2" ?\Ƙ) + ("&k2" ?\ƙ) + ("&O9" ?\Ơ) + ("&o9" ?\ơ) + ("&OI" ?\Ƣ) + ("&oi" ?\ƣ) + ("&yr" ?\Ʀ) + ("&U9" ?\Ư) + ("&u9" ?\ư) + ("&Z/" ?\Ƶ) + ("&z/" ?\ƶ) + ("&ED" ?\Ʒ) + ("&DZ<" ?\DŽ) + ("&Dz<" ?\Dž) + ("&dz<" ?\dž) + ("&LJ3" ?\LJ) + ("&Lj3" ?\Lj) + ("&lj3" ?\lj) + ("&NJ3" ?\NJ) + ("&Nj3" ?\Nj) + ("&nj3" ?\nj) + ("&A<" ?\Ǎ) + ("&a<" ?\ǎ) + ("&I<" ?\Ǐ) + ("&i<" ?\ǐ) + ("&O<" ?\Ǒ) + ("&o<" ?\ǒ) + ("&U<" ?\Ǔ) + ("&u<" ?\ǔ) + ("&U:-" ?\Ǖ) + ("&u:-" ?\ǖ) + ("&U:'" ?\Ǘ) + ("&u:'" ?\ǘ) + ("&U:<" ?\Ǚ) + ("&u:<" ?\ǚ) + ("&U:!" ?\Ǜ) + ("&u:!" ?\ǜ) + ("&e1" ?\ǝ) + ("&A1" ?\Ǟ) + ("&a1" ?\ǟ) + ("&A7" ?\Ǡ) + ("&a7" ?\ǡ) + ("&A3" ?\Ǣ) + ("&a3" ?\ǣ) + ("&G/" ?\Ǥ) + ("&g/" ?\ǥ) + ("&G<" ?\Ǧ) + ("&g<" ?\ǧ) + ("&K<" ?\Ǩ) + ("&k<" ?\ǩ) + ("&O;" ?\Ǫ) + ("&o;" ?\ǫ) + ("&O1" ?\Ǭ) + ("&o1" ?\ǭ) + ("&EZ" ?\Ǯ) + ("&ez" ?\ǯ) + ("&j<" ?\ǰ) + ("&DZ3" ?\DZ) + ("&Dz3" ?\Dz) + ("&dz3" ?\dz) + ("&G'" ?\Ǵ) + ("&g'" ?\ǵ) + ("&AA'" ?\Ǻ) + ("&aa'" ?\ǻ) + ("&AE'" ?\Ǽ) + ("&ae'" ?\ǽ) + ("&O/'" ?\Ǿ) + ("&o/'" ?\ǿ) + ("&A!!" ?\Ȁ) + ("&a!!" ?\ȁ) + ("&A)" ?\Ȃ) + ("&a)" ?\ȃ) + ("&E!!" ?\Ȅ) + ("&e!!" ?\ȅ) + ("&E)" ?\Ȇ) + ("&e)" ?\ȇ) + ("&I!!" ?\Ȉ) + ("&i!!" ?\ȉ) + ("&I)" ?\Ȋ) + ("&i)" ?\ȋ) + ("&O!!" ?\Ȍ) + ("&o!!" ?\ȍ) + ("&O)" ?\Ȏ) + ("&o)" ?\ȏ) + ("&R!!" ?\Ȑ) + ("&r!!" ?\ȑ) + ("&R)" ?\Ȓ) + ("&r)" ?\ȓ) + ("&U!!" ?\Ȕ) + ("&u!!" ?\ȕ) + ("&U)" ?\Ȗ) + ("&u)" ?\ȗ) + ("&r1" ?\ɼ) + ("&ed" ?\ʒ) + ("&;S" ?\ʻ) + ("&1>" ?\ˆ) + ("&'<" ?\ˇ) + ("&1-" ?\ˉ) + ("&1!" ?\ˋ) + ("&'(" ?\˘) + ("&'." ?\˙) + ("&'0" ?\˚) + ("&';" ?\˛) + ("&1?" ?\˜) + ("&'\"" ?\˝) + ("&'G" ?\ʹ) + ("&,G" ?\͵) + ("&j3" ?\ͺ) + ("&?%" ?\;) + ("&'*" ?\΄) + ("&'%" ?\΅) + ("&A%" ?\Ά) + ("&.*" ?\·) + ("&E%" ?\Έ) + ("&Y%" ?\Ή) + ("&I%" ?\Ί) + ("&O%" ?\Ό) + ("&U%" ?\Ύ) + ("&W%" ?\Ώ) + ("&i3" ?\ΐ) + ("&A*" ?\Α) + ("&B*" ?\Β) + ("&G*" ?\Γ) + ("&D*" ?\Δ) + ("&E*" ?\Ε) + ("&Z*" ?\Ζ) + ("&Y*" ?\Η) + ("&H*" ?\Θ) + ("&I*" ?\Ι) + ("&K*" ?\Κ) + ("&L*" ?\Λ) + ("&M*" ?\Μ) + ("&N*" ?\Ν) + ("&C*" ?\Ξ) + ("&O*" ?\Ο) + ("&P*" ?\Π) + ("&R*" ?\Ρ) + ("&S*" ?\Σ) + ("&T*" ?\Τ) + ("&U*" ?\Υ) + ("&F*" ?\Φ) + ("&X*" ?\Χ) + ("&Q*" ?\Ψ) + ("&W*" ?\Ω) + ("&J*" ?\Ϊ) + ("&V*" ?\Ϋ) + ("&a%" ?\ά) + ("&e%" ?\έ) + ("&y%" ?\ή) + ("&i%" ?\ί) + ("&u3" ?\ΰ) + ("&a*" ?\α) + ("&b*" ?\β) + ("&g*" ?\γ) + ("&d*" ?\δ) + ("&e*" ?\ε) + ("&z*" ?\ζ) + ("&y*" ?\η) + ("&h*" ?\θ) + ("&i*" ?\ι) + ("&k*" ?\κ) + ("&l*" ?\λ) + ("&m*" ?\μ) + ("&n*" ?\ν) + ("&c*" ?\ξ) + ("&o*" ?\ο) + ("&p*" ?\π) + ("&r*" ?\ρ) + ("&*s" ?\ς) + ("&s*" ?\σ) + ("&t*" ?\τ) + ("&u*" ?\υ) + ("&f*" ?\φ) + ("&x*" ?\χ) + ("&q*" ?\ψ) + ("&w*" ?\ω) + ("&j*" ?\ϊ) + ("&v*" ?\ϋ) + ("&o%" ?\ό) + ("&u%" ?\ύ) + ("&w%" ?\ώ) + ("&b3" ?\ϐ) + ("&T3" ?\Ϛ) + ("&M3" ?\Ϝ) + ("&K3" ?\Ϟ) + ("&P3" ?\Ϡ) + ("&IO" ?\Ё) + ("&D%" ?\Ђ) + ("&G%" ?\Ѓ) + ("&IE" ?\Є) + ("&DS" ?\Ѕ) + ("&II" ?\І) + ("&YI" ?\Ї) + ("&J%" ?\Ј) + ("&LJ" ?\Љ) + ("&NJ" ?\Њ) + ("&Ts" ?\Ћ) + ("&KJ" ?\Ќ) + ("&V%" ?\Ў) + ("&DZ" ?\Џ) + ("&A=" ?\А) + ("&B=" ?\Б) + ("&V=" ?\В) + ("&G=" ?\Г) + ("&D=" ?\Д) + ("&E=" ?\Е) + ("&Z%" ?\Ж) + ("&Z=" ?\З) + ("&I=" ?\И) + ("&J=" ?\Й) + ("&K=" ?\К) + ("&L=" ?\Л) + ("&M=" ?\М) + ("&N=" ?\Н) + ("&O=" ?\О) + ("&P=" ?\П) + ("&R=" ?\Р) + ("&S=" ?\С) + ("&T=" ?\Т) + ("&U=" ?\У) + ("&F=" ?\Ф) + ("&H=" ?\Х) + ("&C=" ?\Ц) + ("&C%" ?\Ч) + ("&S%" ?\Ш) + ("&Sc" ?\Щ) + ("&=\"" ?\Ъ) + ("&Y=" ?\Ы) + ("&%\"" ?\Ь) + ("&JE" ?\Э) + ("&JU" ?\Ю) + ("&JA" ?\Я) + ("&a=" ?\а) + ("&b=" ?\б) + ("&v=" ?\в) + ("&g=" ?\г) + ("&d=" ?\д) + ("&e=" ?\е) + ("&z%" ?\ж) + ("&z=" ?\з) + ("&i=" ?\и) + ("&j=" ?\й) + ("&k=" ?\к) + ("&l=" ?\л) + ("&m=" ?\м) + ("&n=" ?\н) + ("&o=" ?\о) + ("&p=" ?\п) + ("&r=" ?\р) + ("&s=" ?\с) + ("&t=" ?\т) + ("&u=" ?\у) + ("&f=" ?\ф) + ("&h=" ?\х) + ("&c=" ?\ц) + ("&c%" ?\ч) + ("&s%" ?\ш) + ("&sc" ?\щ) + ("&='" ?\ъ) + ("&y=" ?\ы) + ("&%'" ?\ь) + ("&je" ?\э) + ("&ju" ?\ю) + ("&ja" ?\я) + ("&io" ?\ё) + ("&d%" ?\ђ) + ("&g%" ?\ѓ) + ("&ie" ?\є) + ("&ds" ?\ѕ) + ("&ii" ?\і) + ("&yi" ?\ї) + ("&j%" ?\ј) + ("&lj" ?\љ) + ("&nj" ?\њ) + ("&ts" ?\ћ) + ("&kj" ?\ќ) + ("&v%" ?\ў) + ("&dz" ?\џ) + ("&Y3" ?\Ѣ) + ("&y3" ?\ѣ) + ("&O3" ?\Ѫ) + ("&o3" ?\ѫ) + ("&F3" ?\Ѳ) + ("&f3" ?\ѳ) + ("&V3" ?\Ѵ) + ("&v3" ?\ѵ) + ("&C3" ?\Ҁ) + ("&c3" ?\ҁ) + ("&G3" ?\Ґ) + ("&g3" ?\ґ) + ("&A+" ?\א) + ("&B+" ?\ב) + ("&G+" ?\ג) + ("&D+" ?\ד) + ("&H+" ?\ה) + ("&W+" ?\ו) + ("&Z+" ?\ז) + ("&X+" ?\ח) + ("&Tj" ?\ט) + ("&J+" ?\י) + ("&K%" ?\ך) + ("&K+" ?\כ) + ("&L+" ?\ל) + ("&M%" ?\ם) + ("&M+" ?\מ) + ("&N%" ?\ן) + ("&N+" ?\נ) + ("&S+" ?\ס) + ("&E+" ?\ע) + ("&P%" ?\ף) + ("&P+" ?\פ) + ("&Zj" ?\ץ) + ("&ZJ" ?\צ) + ("&Q+" ?\ק) + ("&R+" ?\ר) + ("&Sh" ?\ש) + ("&T+" ?\ת) + ("&,+" ?\،) + ("&;+" ?\؛) + ("&?+" ?\؟) + ("&H'" ?\ء) + ("&aM" ?\آ) + ("&aH" ?\أ) + ("&wH" ?\ؤ) + ("&ah" ?\إ) + ("&yH" ?\ئ) + ("&a+" ?\ا) + ("&b+" ?\ب) + ("&tm" ?\ة) + ("&t+" ?\ت) + ("&tk" ?\ث) + ("&g+" ?\ج) + ("&hk" ?\ح) + ("&x+" ?\خ) + ("&d+" ?\د) + ("&dk" ?\ذ) + ("&r+" ?\ر) + ("&z+" ?\ز) + ("&s+" ?\س) + ("&sn" ?\ش) + ("&c+" ?\ص) + ("&dd" ?\ض) + ("&tj" ?\ط) + ("&zH" ?\ظ) + ("&e+" ?\ع) + ("&i+" ?\غ) + ("&++" ?\ـ) + ("&f+" ?\ف) + ("&q+" ?\ق) + ("&k+" ?\ك) + ("&l+" ?\ل) + ("&m+" ?\م) + ("&n+" ?\ن) + ("&h+" ?\ه) + ("&w+" ?\و) + ("&j+" ?\ى) + ("&y+" ?\ي) + ("&:+" ?\ً) + ("&\"+" ?\ٌ) + ("&=+" ?\ٍ) + ("&/+" ?\َ) + ("&'+" ?\ُ) + ("&1+" ?\ِ) + ("&3+" ?\ّ) + ("&0+" ?\ْ) + ("&0a" ?\٠) + ("&1a" ?\١) + ("&2a" ?\٢) + ("&3a" ?\٣) + ("&4a" ?\٤) + ("&5a" ?\٥) + ("&6a" ?\٦) + ("&7a" ?\٧) + ("&8a" ?\٨) + ("&9a" ?\٩) + ("&aS" ?\ٰ) + ("&p+" ?\پ) + ("&hH" ?\ځ) + ("&tc" ?\چ) + ("&zj" ?\ژ) + ("&v+" ?\ڤ) + ("&gf" ?\گ) + ("&A-0" ?\Ḁ) + ("&a-0" ?\ḁ) + ("&B." ?\Ḃ) + ("&b." ?\ḃ) + ("&B-." ?\Ḅ) + ("&b-." ?\ḅ) + ("&B_" ?\Ḇ) + ("&b_" ?\ḇ) + ("&C,'" ?\Ḉ) + ("&c,'" ?\ḉ) + ("&D." ?\Ḋ) + ("&d." ?\ḋ) + ("&D-." ?\Ḍ) + ("&d-." ?\ḍ) + ("&D_" ?\Ḏ) + ("&d_" ?\ḏ) + ("&D," ?\Ḑ) + ("&d," ?\ḑ) + ("&D->" ?\Ḓ) + ("&d->" ?\ḓ) + ("&E-!" ?\Ḕ) + ("&e-!" ?\ḕ) + ("&E-'" ?\Ḗ) + ("&e-'" ?\ḗ) + ("&E->" ?\Ḙ) + ("&e->" ?\ḙ) + ("&E-?" ?\Ḛ) + ("&e-?" ?\ḛ) + ("&E,(" ?\Ḝ) + ("&e,(" ?\ḝ) + ("&F." ?\Ḟ) + ("&f." ?\ḟ) + ("&G-" ?\Ḡ) + ("&g-" ?\ḡ) + ("&H." ?\Ḣ) + ("&h." ?\ḣ) + ("&H-." ?\Ḥ) + ("&h-." ?\ḥ) + ("&H:" ?\Ḧ) + ("&h:" ?\ḧ) + ("&H," ?\Ḩ) + ("&h," ?\ḩ) + ("&H-(" ?\Ḫ) + ("&h-(" ?\ḫ) + ("&I-?" ?\Ḭ) + ("&i-?" ?\ḭ) + ("&I:'" ?\Ḯ) + ("&i:'" ?\ḯ) + ("&K'" ?\Ḱ) + ("&k'" ?\ḱ) + ("&K-." ?\Ḳ) + ("&k-." ?\ḳ) + ("&K_" ?\Ḵ) + ("&k_" ?\ḵ) + ("&L-." ?\Ḷ) + ("&l-." ?\ḷ) + ("&L_" ?\Ḻ) + ("&l_" ?\ḻ) + ("&L->" ?\Ḽ) + ("&l->" ?\ḽ) + ("&M'" ?\Ḿ) + ("&m'" ?\ḿ) + ("&M." ?\Ṁ) + ("&m." ?\ṁ) + ("&M-." ?\Ṃ) + ("&m-." ?\ṃ) + ("&N." ?\Ṅ) + ("&n." ?\ṅ) + ("&N-." ?\Ṇ) + ("&n-." ?\ṇ) + ("&N_" ?\Ṉ) + ("&n_" ?\ṉ) + ("&N->" ?\Ṋ) + ("&n->" ?\ṋ) + ("&O?'" ?\Ṍ) + ("&o?'" ?\ṍ) + ("&O?:" ?\Ṏ) + ("&o?:" ?\ṏ) + ("&O-!" ?\Ṑ) + ("&o-!" ?\ṑ) + ("&O-'" ?\Ṓ) + ("&o-'" ?\ṓ) + ("&P'" ?\Ṕ) + ("&p'" ?\ṕ) + ("&P." ?\Ṗ) + ("&p." ?\ṗ) + ("&R." ?\Ṙ) + ("&r." ?\ṙ) + ("&R-." ?\Ṛ) + ("&r-." ?\ṛ) + ("&R_" ?\Ṟ) + ("&r_" ?\ṟ) + ("&S." ?\Ṡ) + ("&s." ?\ṡ) + ("&S-." ?\Ṣ) + ("&s-." ?\ṣ) + ("&S'." ?\Ṥ) + ("&s'." ?\ṥ) + ("&S<." ?\Ṧ) + ("&s<." ?\ṧ) + ("&T." ?\Ṫ) + ("&t." ?\ṫ) + ("&T-." ?\Ṭ) + ("&t-." ?\ṭ) + ("&T_" ?\Ṯ) + ("&t_" ?\ṯ) + ("&T->" ?\Ṱ) + ("&t->" ?\ṱ) + ("&U-?" ?\Ṵ) + ("&u-?" ?\ṵ) + ("&U->" ?\Ṷ) + ("&u->" ?\ṷ) + ("&U?'" ?\Ṹ) + ("&u?'" ?\ṹ) + ("&U-:" ?\Ṻ) + ("&u-:" ?\ṻ) + ("&V?" ?\Ṽ) + ("&v?" ?\ṽ) + ("&V-." ?\Ṿ) + ("&v-." ?\ṿ) + ("&W!" ?\Ẁ) + ("&w!" ?\ẁ) + ("&W'" ?\Ẃ) + ("&w'" ?\ẃ) + ("&W:" ?\Ẅ) + ("&w:" ?\ẅ) + ("&W." ?\Ẇ) + ("&w." ?\ẇ) + ("&W-." ?\Ẉ) + ("&w-." ?\ẉ) + ("&X." ?\Ẋ) + ("&x." ?\ẋ) + ("&X:" ?\Ẍ) + ("&x:" ?\ẍ) + ("&Y." ?\Ẏ) + ("&y." ?\ẏ) + ("&Z>" ?\Ẑ) + ("&z>" ?\ẑ) + ("&Z-." ?\Ẓ) + ("&z-." ?\ẓ) + ("&Z_" ?\Ẕ) + ("&z_" ?\ẕ) + ("&A-." ?\Ạ) + ("&a-." ?\ạ) + ("&A2" ?\Ả) + ("&a2" ?\ả) + ("&A>'" ?\Ấ) + ("&a>'" ?\ấ) + ("&A>!" ?\Ầ) + ("&a>!" ?\ầ) + ("&A>2" ?\Ẩ) + ("&a>2" ?\ẩ) + ("&A>?" ?\Ẫ) + ("&a>?" ?\ẫ) + ("&A('" ?\Ắ) + ("&a('" ?\ắ) + ("&A(!" ?\Ằ) + ("&a(!" ?\ằ) + ("&A(2" ?\Ẳ) + ("&a(2" ?\ẳ) + ("&A(?" ?\Ẵ) + ("&a(?" ?\ẵ) + ("&E-." ?\Ẹ) + ("&e-." ?\ẹ) + ("&E2" ?\Ẻ) + ("&e2" ?\ẻ) + ("&E?" ?\Ẽ) + ("&e?" ?\ẽ) + ("&E>'" ?\Ế) + ("&e>'" ?\ế) + ("&E>!" ?\Ề) + ("&e>!" ?\ề) + ("&E>2" ?\Ể) + ("&e>2" ?\ể) + ("&E>?" ?\Ễ) + ("&e>?" ?\ễ) + ("&I2" ?\Ỉ) + ("&i2" ?\ỉ) + ("&I-." ?\Ị) + ("&i-." ?\ị) + ("&O-." ?\Ọ) + ("&o-." ?\ọ) + ("&O2" ?\Ỏ) + ("&o2" ?\ỏ) + ("&O>'" ?\Ố) + ("&o>'" ?\ố) + ("&O>!" ?\Ồ) + ("&o>!" ?\ồ) + ("&O>2" ?\Ổ) + ("&o>2" ?\ổ) + ("&O>?" ?\Ỗ) + ("&o>?" ?\ỗ) + ("&O9'" ?\Ớ) + ("&o9'" ?\ớ) + ("&O9!" ?\Ờ) + ("&o9!" ?\ờ) + ("&O92" ?\Ở) + ("&o92" ?\ở) + ("&O9?" ?\Ỡ) + ("&o9?" ?\ỡ) + ("&U-." ?\Ụ) + ("&u-." ?\ụ) + ("&U2" ?\Ủ) + ("&u2" ?\ủ) + ("&U9'" ?\Ứ) + ("&u9'" ?\ứ) + ("&U9!" ?\Ừ) + ("&u9!" ?\ừ) + ("&U92" ?\Ử) + ("&u92" ?\ử) + ("&U9?" ?\Ữ) + ("&u9?" ?\ữ) + ("&Y!" ?\Ỳ) + ("&y!" ?\ỳ) + ("&Y-." ?\Ỵ) + ("&y-." ?\ỵ) + ("&Y2" ?\Ỷ) + ("&y2" ?\ỷ) + ("&Y?" ?\Ỹ) + ("&y?" ?\ỹ) + ("&a*," ?\ἀ) + ("&a*;" ?\ἁ) + ("&A*," ?\Ἀ) + ("&A*;" ?\Ἁ) + ("&e*," ?\ἐ) + ("&e*;" ?\ἑ) + ("&E*," ?\Ἐ) + ("&E*;" ?\Ἑ) + ("&y*," ?\ἠ) + ("&y*;" ?\ἡ) + ("&Y*," ?\Ἠ) + ("&Y*;" ?\Ἡ) + ("&i*," ?\ἰ) + ("&i*;" ?\ἱ) + ("&I*," ?\Ἰ) + ("&I*;" ?\Ἱ) + ("&o*," ?\ὀ) + ("&o*;" ?\ὁ) + ("&O*," ?\Ὀ) + ("&O*;" ?\Ὁ) + ("&u*," ?\ὐ) + ("&u*;" ?\ὑ) + ("&U*;" ?\Ὑ) + ("&w*," ?\ὠ) + ("&w*;" ?\ὡ) + ("&W*," ?\Ὠ) + ("&W*;" ?\Ὡ) + ("&a*!" ?\ὰ) + ("&a*'" ?\ά) + ("&e*!" ?\ὲ) + ("&e*'" ?\έ) + ("&y*!" ?\ὴ) + ("&y*'" ?\ή) + ("&i*!" ?\ὶ) + ("&i*'" ?\ί) + ("&o*!" ?\ὸ) + ("&o*'" ?\ό) + ("&u*!" ?\ὺ) + ("&u*'" ?\ύ) + ("&w*!" ?\ὼ) + ("&w*'" ?\ώ) + ("&a*(" ?\ᾰ) + ("&a*-" ?\ᾱ) + ("&a*j" ?\ᾳ) + ("&a*?" ?\ᾶ) + ("&A*(" ?\Ᾰ) + ("&A*-" ?\Ᾱ) + ("&A*!" ?\Ὰ) + ("&A*'" ?\Ά) + ("&A*J" ?\ᾼ) + ("&)*" ?\᾽) + ("&J3" ?\ι) + ("&,," ?\᾿) + ("&?*" ?\῀) + ("&?:" ?\῁) + ("&y*j" ?\ῃ) + ("&y*?" ?\ῆ) + ("&E*'" ?\Έ) + ("&Y*!" ?\Ὴ) + ("&Y*'" ?\Ή) + ("&Y*J" ?\ῌ) + ("&,!" ?\῍) + ("&,'" ?\῎) + ("&?," ?\῏) + ("&i*(" ?\ῐ) + ("&i*-" ?\ῑ) + ("&i*?" ?\ῖ) + ("&I*(" ?\Ῐ) + ("&I*-" ?\Ῑ) + ("&I*!" ?\Ὶ) + ("&I*'" ?\Ί) + ("&;!" ?\῝) + ("&;'" ?\῞) + ("&?;" ?\῟) + ("&u*(" ?\ῠ) + ("&u*-" ?\ῡ) + ("&r*," ?\ῤ) + ("&r*;" ?\ῥ) + ("&u*?" ?\ῦ) + ("&U*(" ?\Ῠ) + ("&U*-" ?\Ῡ) + ("&U*!" ?\Ὺ) + ("&U*'" ?\Ύ) + ("&R*;" ?\Ῥ) + ("&!:" ?\῭) + ("&:'" ?\΅) + ("&!*" ?\`) + ("&w*j" ?\ῳ) + ("&w*?" ?\ῶ) + ("&O*!" ?\Ὸ) + ("&O*'" ?\Ό) + ("&W*!" ?\Ὼ) + ("&W*'" ?\Ώ) + ("&W*J" ?\ῼ) + ("&/*" ?\´) + ("&;;" ?\῾) + ("&1N" ?\ ) + ("&1M" ?\ ) + ("&3M" ?\ ) + ("&4M" ?\ ) + ("&6M" ?\ ) + ("&1T" ?\ ) + ("&1H" ?\ ) + ("&LR" ?\) + ("&RL" ?\) + ("&-1" ?\‐) + ("&-N" ?\–) + ("&-M" ?\—) + ("&-3" ?\―) + ("&!2" ?\‖) + ("&=2" ?\‗) + ("&'6" ?\‘) + ("&'9" ?\’) + ("&.9" ?\‚) + ("&9'" ?\‛) + ("&\"6" ?\“) + ("&\"9" ?\”) + ("&:9" ?\„) + ("&9\"" ?\‟) + ("&/-" ?\†) + ("&/=" ?\‡) + ("&sb" ?\•) + ("&3b" ?\‣) + ("&.." ?\‥) + ("&.3" ?\…) + ("&.-" ?\‧) + ("&%0" ?\‰) + ("&1'" ?\′) + ("&2'" ?\″) + ("&3'" ?\‴) + ("&1\"" ?\‵) + ("&2\"" ?\‶) + ("&3\"" ?\‷) + ("&Ca" ?\‸) + ("&<1" ?\‹) + ("&>1" ?\›) + ("&:X" ?\※) + ("&!*2" ?\‼) + ("&'-" ?\‾) + ("&-b" ?\⁃) + ("&/f" ?\⁄) + ("&0S" ?\⁰) + ("&4S" ?\⁴) + ("&5S" ?\⁵) + ("&6S" ?\⁶) + ("&7S" ?\⁷) + ("&8S" ?\⁸) + ("&9S" ?\⁹) + ("&+S" ?\⁺) + ("&-S" ?\⁻) + ("&=S" ?\⁼) + ("&(S" ?\⁽) + ("&)S" ?\⁾) + ("&nS" ?\ⁿ) + ("&0s" ?\₀) + ("&1s" ?\₁) + ("&2s" ?\₂) + ("&3s" ?\₃) + ("&4s" ?\₄) + ("&5s" ?\₅) + ("&6s" ?\₆) + ("&7s" ?\₇) + ("&8s" ?\₈) + ("&9s" ?\₉) + ("&+s" ?\₊) + ("&-s" ?\₋) + ("&=s" ?\₌) + ("&(s" ?\₍) + ("&)s" ?\₎) + ("&Ff" ?\₣) + ("&Li" ?\₤) + ("&Pt" ?\₧) + ("&W=" ?\₩) + ("&NSh" ?\₪) + ("&Eu" ?\€) + ("&\"7" ?\⃑) + ("&oC" ?\℃) + ("&co" ?\℅) + ("&oF" ?\℉) + ("&N0" ?\№) + ("&PO" ?\℗) + ("&Rx" ?\℞) + ("&SM" ?\℠) + ("&TM" ?\™) + ("&Om" ?\Ω) + ("&AO" ?\Å) + ("&Est" ?\℮) + ("&13" ?\⅓) + ("&23" ?\⅔) + ("&15" ?\⅕) + ("&25" ?\⅖) + ("&35" ?\⅗) + ("&45" ?\⅘) + ("&16" ?\⅙) + ("&56" ?\⅚) + ("&18" ?\⅛) + ("&38" ?\⅜) + ("&58" ?\⅝) + ("&78" ?\⅞) + ("&1R" ?\Ⅰ) + ("&2R" ?\Ⅱ) + ("&3R" ?\Ⅲ) + ("&4R" ?\Ⅳ) + ("&5R" ?\Ⅴ) + ("&6R" ?\Ⅵ) + ("&7R" ?\Ⅶ) + ("&8R" ?\Ⅷ) + ("&9R" ?\Ⅸ) + ("&aR" ?\Ⅹ) + ("&bR" ?\Ⅺ) + ("&cR" ?\Ⅻ) + ("&50R" ?\Ⅼ) + ("&1r" ?\ⅰ) + ("&2r" ?\ⅱ) + ("&3r" ?\ⅲ) + ("&4r" ?\ⅳ) + ("&5r" ?\ⅴ) + ("&6r" ?\ⅵ) + ("&7r" ?\ⅶ) + ("&8r" ?\ⅷ) + ("&9r" ?\ⅸ) + ("&ar" ?\ⅹ) + ("&br" ?\ⅺ) + ("&cr" ?\ⅻ) + ("&50r" ?\ⅼ) + ("&<-" ?\←) + ("&-!" ?\↑) + ("&->" ?\→) + ("&-v" ?\↓) + ("&<>" ?\↔) + ("&UD" ?\↕) + ("&<!!" ?\↖) + ("&//>" ?\↗) + ("&!!>" ?\↘) + ("&<//" ?\↙) + ("&UD-" ?\↨) + ("&>V" ?\⇀) + ("&<=" ?\⇐) + ("&=>" ?\⇒) + ("&==" ?\⇔) + ("&FA" ?\∀) + ("&dP" ?\∂) + ("&TE" ?\∃) + ("&/0" ?\∅) + ("&DE" ?\∆) + ("&NB" ?\∇) + ("&(-" ?\∈) + ("&-)" ?\∋) + ("&FP" ?\∎) + ("&*P" ?\∏) + ("&+Z" ?\∑) + ("&-2" ?\−) + ("&-+" ?\∓) + ("&.+" ?\∔) + ("&*-" ?\∗) + ("&Ob" ?\∘) + ("&Sb" ?\∙) + ("&RT" ?\√) + ("&0(" ?\∝) + ("&00" ?\∞) + ("&-L" ?\∟) + ("&-V" ?\∠) + ("&PP" ?\∥) + ("&AN" ?\∧) + ("&OR" ?\∨) + ("&(U" ?\∩) + ("&)U" ?\∪) + ("&In" ?\∫) + ("&DI" ?\∬) + ("&Io" ?\∮) + ("&.:" ?\∴) + ("&:." ?\∵) + ("&:R" ?\∶) + ("&::" ?\∷) + ("&?1" ?\∼) + ("&CG" ?\∾) + ("&?-" ?\≃) + ("&?=" ?\≅) + ("&?2" ?\≈) + ("&=?" ?\≌) + ("&HI" ?\≓) + ("&!=" ?\≠) + ("&=3" ?\≡) + ("&=<" ?\≤) + ("&>=" ?\≥) + ("&<*" ?\≪) + ("&*>" ?\≫) + ("&!<" ?\≮) + ("&!>" ?\≯) + ("&(C" ?\⊂) + ("&)C" ?\⊃) + ("&(_" ?\⊆) + ("&)_" ?\⊇) + ("&0." ?\⊙) + ("&02" ?\⊚) + ("&-T" ?\⊥) + ("&.P" ?\⋅) + ("&:3" ?\⋮) + ("&Eh" ?\⌂) + ("&<7" ?\⌈) + ("&>7" ?\⌉) + ("&7<" ?\⌊) + ("&7>" ?\⌋) + ("&NI" ?\⌐) + ("&(A" ?\⌒) + ("&TR" ?\⌕) + ("&88" ?\⌘) + ("&Iu" ?\⌠) + ("&Il" ?\⌡) + ("&</" ?\〈) + ("&/>" ?\〉) + ("&Vs" ?\␣) + ("&1h" ?\⑀) + ("&3h" ?\⑁) + ("&2h" ?\⑂) + ("&4h" ?\⑃) + ("&1j" ?\⑆) + ("&2j" ?\⑇) + ("&3j" ?\⑈) + ("&4j" ?\⑉) + ("&1-o" ?\①) + ("&2-o" ?\②) + ("&3-o" ?\③) + ("&4-o" ?\④) + ("&5-o" ?\⑤) + ("&6-o" ?\⑥) + ("&7-o" ?\⑦) + ("&8-o" ?\⑧) + ("&9-o" ?\⑨) + ("&(1)" ?\⑴) + ("&(2)" ?\⑵) + ("&(3)" ?\⑶) + ("&(4)" ?\⑷) + ("&(5)" ?\⑸) + ("&(6)" ?\⑹) + ("&(7)" ?\⑺) + ("&(8)" ?\⑻) + ("&(9)" ?\⑼) + ("&1." ?\⒈) + ("&2." ?\⒉) + ("&3." ?\⒊) + ("&4." ?\⒋) + ("&5." ?\⒌) + ("&6." ?\⒍) + ("&7." ?\⒎) + ("&8." ?\⒏) + ("&9." ?\⒐) + ("&10." ?\⒑) + ("&11." ?\⒒) + ("&12." ?\⒓) + ("&13." ?\⒔) + ("&14." ?\⒕) + ("&15." ?\⒖) + ("&16." ?\⒗) + ("&17." ?\⒘) + ("&18." ?\⒙) + ("&19." ?\⒚) + ("&20." ?\⒛) + ("&(a)" ?\⒜) + ("&(b)" ?\⒝) + ("&(c)" ?\⒞) + ("&(d)" ?\⒟) + ("&(e)" ?\⒠) + ("&(f)" ?\⒡) + ("&(g)" ?\⒢) + ("&(h)" ?\⒣) + ("&(i)" ?\⒤) + ("&(j)" ?\⒥) + ("&(k)" ?\⒦) + ("&(l)" ?\⒧) + ("&(m)" ?\⒨) + ("&(n)" ?\⒩) + ("&(o)" ?\⒪) + ("&(p)" ?\⒫) + ("&(q)" ?\⒬) + ("&(r)" ?\⒭) + ("&(s)" ?\⒮) + ("&(t)" ?\⒯) + ("&(u)" ?\⒰) + ("&(v)" ?\⒱) + ("&(w)" ?\⒲) + ("&(x)" ?\⒳) + ("&(y)" ?\⒴) + ("&(z)" ?\⒵) + ("&A-o" ?\Ⓐ) + ("&B-o" ?\Ⓑ) + ("&C-o" ?\Ⓒ) + ("&D-o" ?\Ⓓ) + ("&E-o" ?\Ⓔ) + ("&F-o" ?\Ⓕ) + ("&G-o" ?\Ⓖ) + ("&H-o" ?\Ⓗ) + ("&I-o" ?\Ⓘ) + ("&J-o" ?\Ⓙ) + ("&K-o" ?\Ⓚ) + ("&L-o" ?\Ⓛ) + ("&M-o" ?\Ⓜ) + ("&N-o" ?\Ⓝ) + ("&O-o" ?\Ⓞ) + ("&P-o" ?\Ⓟ) + ("&Q-o" ?\Ⓠ) + ("&R-o" ?\Ⓡ) + ("&S-o" ?\Ⓢ) + ("&T-o" ?\Ⓣ) + ("&U-o" ?\Ⓤ) + ("&V-o" ?\Ⓥ) + ("&W-o" ?\Ⓦ) + ("&X-o" ?\Ⓧ) + ("&Y-o" ?\Ⓨ) + ("&Z-o" ?\Ⓩ) + ("&a-o" ?\ⓐ) + ("&b-o" ?\ⓑ) + ("&c-o" ?\ⓒ) + ("&d-o" ?\ⓓ) + ("&e-o" ?\ⓔ) + ("&f-o" ?\ⓕ) + ("&g-o" ?\ⓖ) + ("&h-o" ?\ⓗ) + ("&i-o" ?\ⓘ) + ("&j-o" ?\ⓙ) + ("&k-o" ?\ⓚ) + ("&l-o" ?\ⓛ) + ("&m-o" ?\ⓜ) + ("&n-o" ?\ⓝ) + ("&o-o" ?\ⓞ) + ("&p-o" ?\ⓟ) + ("&q-o" ?\ⓠ) + ("&r-o" ?\ⓡ) + ("&s-o" ?\ⓢ) + ("&t-o" ?\ⓣ) + ("&u-o" ?\ⓤ) + ("&v-o" ?\ⓥ) + ("&w-o" ?\ⓦ) + ("&x-o" ?\ⓧ) + ("&y-o" ?\ⓨ) + ("&z-o" ?\ⓩ) + ("&0-o" ?\⓪) + ("&hh" ?\─) + ("&HH-" ?\━) + ("&vv" ?\│) + ("&VV-" ?\┃) + ("&3-" ?\┄) + ("&3_" ?\┅) + ("&3!" ?\┆) + ("&3/" ?\┇) + ("&4-" ?\┈) + ("&4_" ?\┉) + ("&4!" ?\┊) + ("&4/" ?\┋) + ("&dr" ?\┌) + ("&dR-" ?\┍) + ("&Dr-" ?\┎) + ("&DR-" ?\┏) + ("&dl" ?\┐) + ("&dL-" ?\┑) + ("&Dl-" ?\┒) + ("&LD-" ?\┓) + ("&ur" ?\└) + ("&uR-" ?\┕) + ("&Ur-" ?\┖) + ("&UR-" ?\┗) + ("&ul" ?\┘) + ("&uL-" ?\┙) + ("&Ul-" ?\┚) + ("&UL-" ?\┛) + ("&vr" ?\├) + ("&vR-" ?\┝) + ("&Udr" ?\┞) + ("&uDr" ?\┟) + ("&Vr-" ?\┠) + ("&UdR" ?\┡) + ("&uDR" ?\┢) + ("&VR-" ?\┣) + ("&vl" ?\┤) + ("&vL-" ?\┥) + ("&Udl" ?\┦) + ("&uDl" ?\┧) + ("&Vl-" ?\┨) + ("&UdL" ?\┩) + ("&uDL" ?\┪) + ("&VL-" ?\┫) + ("&dh" ?\┬) + ("&dLr" ?\┭) + ("&dlR" ?\┮) + ("&dH-" ?\┯) + ("&Dh-" ?\┰) + ("&DLr" ?\┱) + ("&DlR" ?\┲) + ("&DH-" ?\┳) + ("&uh" ?\┴) + ("&uLr" ?\┵) + ("&ulR" ?\┶) + ("&uH-" ?\┷) + ("&Uh-" ?\┸) + ("&ULr" ?\┹) + ("&UlR" ?\┺) + ("&UH-" ?\┻) + ("&vh" ?\┼) + ("&vLr" ?\┽) + ("&vlR" ?\┾) + ("&vH-" ?\┿) + ("&Udh" ?\╀) + ("&uDh" ?\╁) + ("&Vh-" ?\╂) + ("&UdH" ?\╇) + ("&uDH" ?\╈) + ("&VLr" ?\╉) + ("&VlR" ?\╊) + ("&VH-" ?\╋) + ("&HH" ?\═) + ("&VV" ?\║) + ("&dR" ?\╒) + ("&Dr" ?\╓) + ("&DR" ?\╔) + ("&dL" ?\╕) + ("&Dl" ?\╖) + ("&LD" ?\╗) + ("&uR" ?\╘) + ("&Ur" ?\╙) + ("&UR" ?\╚) + ("&uL" ?\╛) + ("&Ul" ?\╜) + ("&UL" ?\╝) + ("&vR" ?\╞) + ("&Vr" ?\╟) + ("&VR" ?\╠) + ("&vL" ?\╡) + ("&Vl" ?\╢) + ("&VL" ?\╣) + ("&dH" ?\╤) + ("&Dh" ?\╥) + ("&DH" ?\╦) + ("&uH" ?\╧) + ("&Uh" ?\╨) + ("&UH" ?\╩) + ("&vH" ?\╪) + ("&Vh" ?\╫) + ("&VH" ?\╬) + ("&FD" ?\╱) + ("&BD" ?\╲) + ("&TB" ?\▀) + ("&LB" ?\▄) + ("&FB" ?\█) + ("&lB" ?\▌) + ("&RB" ?\▐) + ("&.S" ?\░) + ("&:S" ?\▒) + ("&?S" ?\▓) + ("&fS" ?\■) + ("&OS" ?\□) + ("&RO" ?\▢) + ("&Rr" ?\▣) + ("&RF" ?\▤) + ("&RY" ?\▥) + ("&RH" ?\▦) + ("&RZ" ?\▧) + ("&RK" ?\▨) + ("&RX" ?\▩) + ("&sB" ?\▪) + ("&SR" ?\▬) + ("&Or" ?\▭) + ("&UT" ?\▲) + ("&uT" ?\△) + ("&Tr" ?\▷) + ("&PR" ?\►) + ("&Dt" ?\▼) + ("&dT" ?\▽) + ("&Tl" ?\◁) + ("&PL" ?\◄) + ("&Db" ?\◆) + ("&Dw" ?\◇) + ("&LZ" ?\◊) + ("&0m" ?\○) + ("&0o" ?\◎) + ("&0M" ?\●) + ("&0L" ?\◐) + ("&0R" ?\◑) + ("&Sn" ?\◘) + ("&Ic" ?\◙) + ("&Fd" ?\◢) + ("&Bd" ?\◣) + ("&Ci" ?\◯) + ("&*2" ?\★) + ("&*1" ?\☆) + ("&TEL" ?\☎) + ("&tel" ?\☏) + ("&<H" ?\☜) + ("&>H" ?\☞) + ("&0u" ?\☺) + ("&0U" ?\☻) + ("&SU" ?\☼) + ("&Fm" ?\♀) + ("&Ml" ?\♂) + ("&cS" ?\♠) + ("&cH" ?\♡) + ("&cD" ?\♢) + ("&cC" ?\♣) + ("&cS-" ?\♤) + ("&cH-" ?\♥) + ("&cD-" ?\♦) + ("&cC-" ?\♧) + ("&Md" ?\♩) + ("&M8" ?\♪) + ("&M2" ?\♫) + ("&M16" ?\♬) + ("&Mb" ?\♭) + ("&Mx" ?\♮) + ("&MX" ?\♯) + ("&OK" ?\✓) + ("&XX" ?\✗) + ("&-X" ?\✠) + ("&IS" ?\ ) + ("&,_" ?\、) + ("&._" ?\。) + ("&+\"" ?\〃) + ("&JIS" ?\〄) + ("&*_" ?\々) + ("&;_" ?\〆) + ("&0_" ?\〇) + ("&<+" ?\《) + ("&>+" ?\》) + ("&<'" ?\「) + ("&>'" ?\」) + ("&<\"" ?\『) + ("&>\"" ?\』) + ("&(\"" ?\【) + ("&)\"" ?\】) + ("&=T" ?\〒) + ("&=_" ?\〓) + ("&('" ?\〔) + ("&)'" ?\〕) + ("&(I" ?\〖) + ("&)I" ?\〗) + ("&-?" ?\〜) + ("&A5" ?\ぁ) + ("&a5" ?\あ) + ("&I5" ?\ぃ) + ("&i5" ?\い) + ("&U5" ?\ぅ) + ("&u5" ?\う) + ("&E5" ?\ぇ) + ("&e5" ?\え) + ("&O5" ?\ぉ) + ("&o5" ?\お) + ("&ka" ?\か) + ("&ga" ?\が) + ("&ki" ?\き) + ("&gi" ?\ぎ) + ("&ku" ?\く) + ("&gu" ?\ぐ) + ("&ke" ?\け) + ("&ge" ?\げ) + ("&ko" ?\こ) + ("&go" ?\ご) + ("&sa" ?\さ) + ("&za" ?\ざ) + ("&si" ?\し) + ("&zi" ?\じ) + ("&su" ?\す) + ("&zu" ?\ず) + ("&se" ?\せ) + ("&ze" ?\ぜ) + ("&so" ?\そ) + ("&zo" ?\ぞ) + ("&ta" ?\た) + ("&da" ?\だ) + ("&ti" ?\ち) + ("&di" ?\ぢ) + ("&tU" ?\っ) + ("&tu" ?\つ) + ("&du" ?\づ) + ("&te" ?\て) + ("&de" ?\で) + ("&to" ?\と) + ("&do" ?\ど) + ("&na" ?\な) + ("&ni" ?\に) + ("&nu" ?\ぬ) + ("&ne" ?\ね) + ("&no" ?\の) + ("&ha" ?\は) + ("&ba" ?\ば) + ("&pa" ?\ぱ) + ("&hi" ?\ひ) + ("&bi" ?\び) + ("&pi" ?\ぴ) + ("&hu" ?\ふ) + ("&bu" ?\ぶ) + ("&pu" ?\ぷ) + ("&he" ?\へ) + ("&be" ?\べ) + ("&pe" ?\ぺ) + ("&ho" ?\ほ) + ("&bo" ?\ぼ) + ("&po" ?\ぽ) + ("&ma" ?\ま) + ("&mi" ?\み) + ("&mu" ?\む) + ("&me" ?\め) + ("&mo" ?\も) + ("&yA" ?\ゃ) + ("&ya" ?\や) + ("&yU" ?\ゅ) + ("&yu" ?\ゆ) + ("&yO" ?\ょ) + ("&yo" ?\よ) + ("&ra" ?\ら) + ("&ri" ?\り) + ("&ru" ?\る) + ("&re" ?\れ) + ("&ro" ?\ろ) + ("&wA" ?\ゎ) + ("&wa" ?\わ) + ("&wi" ?\ゐ) + ("&we" ?\ゑ) + ("&wo" ?\を) + ("&n5" ?\ん) + ("&vu" ?\ゔ) + ("&\"5" ?\゛) + ("&05" ?\゜) + ("&*5" ?\ゝ) + ("&+5" ?\ゞ) + ("&a6" ?\ァ) + ("&A6" ?\ア) + ("&i6" ?\ィ) + ("&I6" ?\イ) + ("&u6" ?\ゥ) + ("&U6" ?\ウ) + ("&e6" ?\ェ) + ("&E6" ?\エ) + ("&o6" ?\ォ) + ("&O6" ?\オ) + ("&Ka" ?\カ) + ("&Ga" ?\ガ) + ("&Ki" ?\キ) + ("&Gi" ?\ギ) + ("&Ku" ?\ク) + ("&Gu" ?\グ) + ("&Ke" ?\ケ) + ("&Ge" ?\ゲ) + ("&Ko" ?\コ) + ("&Go" ?\ゴ) + ("&Sa" ?\サ) + ("&Za" ?\ザ) + ("&Si" ?\シ) + ("&Zi" ?\ジ) + ("&Su" ?\ス) + ("&Zu" ?\ズ) + ("&Se" ?\セ) + ("&Ze" ?\ゼ) + ("&So" ?\ソ) + ("&Zo" ?\ゾ) + ("&Ta" ?\タ) + ("&Da" ?\ダ) + ("&Ti" ?\チ) + ("&Di" ?\ヂ) + ("&TU" ?\ッ) + ("&Tu" ?\ツ) + ("&Du" ?\ヅ) + ("&Te" ?\テ) + ("&De" ?\デ) + ("&To" ?\ト) + ("&Do" ?\ド) + ("&Na" ?\ナ) + ("&Ni" ?\ニ) + ("&Nu" ?\ヌ) + ("&Ne" ?\ネ) + ("&No" ?\ノ) + ("&Ha" ?\ハ) + ("&Ba" ?\バ) + ("&Pa" ?\パ) + ("&Hi" ?\ヒ) + ("&Bi" ?\ビ) + ("&Pi" ?\ピ) + ("&Hu" ?\フ) + ("&Bu" ?\ブ) + ("&Pu" ?\プ) + ("&He" ?\ヘ) + ("&Be" ?\ベ) + ("&Pe" ?\ペ) + ("&Ho" ?\ホ) + ("&Bo" ?\ボ) + ("&Po" ?\ポ) + ("&Ma" ?\マ) + ("&Mi" ?\ミ) + ("&Mu" ?\ム) + ("&Me" ?\メ) + ("&Mo" ?\モ) + ("&YA" ?\ャ) + ("&Ya" ?\ヤ) + ("&YU" ?\ュ) + ("&Yu" ?\ユ) + ("&YO" ?\ョ) + ("&Yo" ?\ヨ) + ("&Ra" ?\ラ) + ("&Ri" ?\リ) + ("&Ru" ?\ル) + ("&Re" ?\レ) + ("&Ro" ?\ロ) + ("&WA" ?\ヮ) + ("&Wa" ?\ワ) + ("&Wi" ?\ヰ) + ("&We" ?\ヱ) + ("&Wo" ?\ヲ) + ("&N6" ?\ン) + ("&Vu" ?\ヴ) + ("&KA" ?\ヵ) + ("&KE" ?\ヶ) + ("&Va" ?\ヷ) + ("&Vi" ?\ヸ) + ("&Ve" ?\ヹ) + ("&Vo" ?\ヺ) + ("&.6" ?\・) + ("&-6" ?\ー) + ("&*6" ?\ヽ) + ("&+6" ?\ヾ) + ("&b4" ?\ㄅ) + ("&p4" ?\ㄆ) + ("&m4" ?\ㄇ) + ("&f4" ?\ㄈ) + ("&d4" ?\ㄉ) + ("&t4" ?\ㄊ) + ("&n4" ?\ㄋ) + ("&l4" ?\ㄌ) + ("&g4" ?\ㄍ) + ("&k4" ?\ㄎ) + ("&h4" ?\ㄏ) + ("&j4" ?\ㄐ) + ("&q4" ?\ㄑ) + ("&x4" ?\ㄒ) + ("&zh" ?\ㄓ) + ("&ch" ?\ㄔ) + ("&sh" ?\ㄕ) + ("&r4" ?\ㄖ) + ("&z4" ?\ㄗ) + ("&c4" ?\ㄘ) + ("&s4" ?\ㄙ) + ("&a4" ?\ㄚ) + ("&o4" ?\ㄛ) + ("&e4" ?\ㄜ) + ("&eh4" ?\ㄝ) + ("&ai" ?\ㄞ) + ("&ei" ?\ㄟ) + ("&au" ?\ㄠ) + ("&ou" ?\ㄡ) + ("&an" ?\ㄢ) + ("&en" ?\ㄣ) + ("&aN" ?\ㄤ) + ("&eN" ?\ㄥ) + ("&er" ?\ㄦ) + ("&i4" ?\ㄧ) + ("&u4" ?\ㄨ) + ("&iu" ?\ㄩ) + ("&v4" ?\ㄪ) + ("&nG" ?\ㄫ) + ("&gn" ?\ㄬ) + ("&1c" ?\㈠) + ("&2c" ?\㈡) + ("&3c" ?\㈢) + ("&4c" ?\㈣) + ("&5c" ?\㈤) + ("&6c" ?\㈥) + ("&7c" ?\㈦) + ("&8c" ?\㈧) + ("&9c" ?\㈨) + ("&10c" ?\㈩) + ("&KSC" ?\㉿) + ("&am" ?\㏂) + ("&pm" ?\㏘) + ("&\"3" ?\) + ("&\"1" ?\) + ("&\"!" ?\) + ("&\"'" ?\) + ("&\">" ?\) + ("&\"?" ?\) + ("&\"-" ?\) + ("&\"(" ?\) + ("&\"." ?\) + ("&\":" ?\) + ("&\"0" ?\) + ("&\"," ?\) + ("&\"_" ?\) + ("&\"\"" ?\) + ("&\";" ?\) + ("&\"<" ?\) + ("&\"=" ?\) + ("&\"/" ?\) + ("&\"p" ?\) + ("&\"d" ?\) + ("&\"i" ?\) + ("&+_" ?\) + ("&a+:" ?\) + ("&Tel" ?\) + ("&UA" ?\) + ("&UB" ?\) + ("&t3" ?\) + ("&m3" ?\) + ("&k3" ?\) + ("&p3" ?\) + ("&Mc" ?\) + ("&Fl" ?\) + ("&Ss" ?\) + ("&Ch" ?\) + ("&CH" ?\) + ("&__" ?\) + ("&/c" ?\) + ("&ff" ?\ff) + ("&fi" ?\fi) + ("&fl" ?\fl) + ("&ffi" ?\ffi) + ("&ffl" ?\ffl) + ("&St" ?\ſt) + ("&st" ?\st) + ("&3+;" ?\ﹽ) + ("&aM." ?\ﺂ) + ("&aH." ?\ﺄ) + ("&ah." ?\ﺈ) + ("&a+-" ?\ﺍ) + ("&a+." ?\ﺎ) + ("&b+-" ?\ﺏ) + ("&b+." ?\ﺐ) + ("&b+," ?\ﺑ) + ("&b+;" ?\ﺒ) + ("&tm-" ?\ﺓ) + ("&tm." ?\ﺔ) + ("&t+-" ?\ﺕ) + ("&t+." ?\ﺖ) + ("&t+," ?\ﺗ) + ("&t+;" ?\ﺘ) + ("&tk-" ?\ﺙ) + ("&tk." ?\ﺚ) + ("&tk," ?\ﺛ) + ("&tk;" ?\ﺜ) + ("&g+-" ?\ﺝ) + ("&g+." ?\ﺞ) + ("&g+," ?\ﺟ) + ("&g+;" ?\ﺠ) + ("&hk-" ?\ﺡ) + ("&hk." ?\ﺢ) + ("&hk," ?\ﺣ) + ("&hk;" ?\ﺤ) + ("&x+-" ?\ﺥ) + ("&x+." ?\ﺦ) + ("&x+," ?\ﺧ) + ("&x+;" ?\ﺨ) + ("&d+-" ?\ﺩ) + ("&d+." ?\ﺪ) + ("&dk-" ?\ﺫ) + ("&dk." ?\ﺬ) + ("&r+-" ?\ﺭ) + ("&r+." ?\ﺮ) + ("&z+-" ?\ﺯ) + ("&z+." ?\ﺰ) + ("&s+-" ?\ﺱ) + ("&s+." ?\ﺲ) + ("&s+," ?\ﺳ) + ("&s+;" ?\ﺴ) + ("&sn-" ?\ﺵ) + ("&sn." ?\ﺶ) + ("&sn," ?\ﺷ) + ("&sn;" ?\ﺸ) + ("&c+-" ?\ﺹ) + ("&c+." ?\ﺺ) + ("&c+," ?\ﺻ) + ("&c+;" ?\ﺼ) + ("&dd-" ?\ﺽ) + ("&dd." ?\ﺾ) + ("&dd," ?\ﺿ) + ("ⅆ" ?\ﻀ) + ("&tj-" ?\ﻁ) + ("&tj." ?\ﻂ) + ("&tj," ?\ﻃ) + ("&tj;" ?\ﻄ) + ("&zH-" ?\ﻅ) + ("&zH." ?\ﻆ) + ("&zH," ?\ﻇ) + ("&zH;" ?\ﻈ) + ("&e+-" ?\ﻉ) + ("&e+." ?\ﻊ) + ("&e+," ?\ﻋ) + ("&e+;" ?\ﻌ) + ("&i+-" ?\ﻍ) + ("&i+." ?\ﻎ) + ("&i+," ?\ﻏ) + ("&i+;" ?\ﻐ) + ("&f+-" ?\ﻑ) + ("&f+." ?\ﻒ) + ("&f+," ?\ﻓ) + ("&f+;" ?\ﻔ) + ("&q+-" ?\ﻕ) + ("&q+." ?\ﻖ) + ("&q+," ?\ﻗ) + ("&q+;" ?\ﻘ) + ("&k+-" ?\ﻙ) + ("&k+." ?\ﻚ) + ("&k+," ?\ﻛ) + ("&k+;" ?\ﻜ) + ("&l+-" ?\ﻝ) + ("&l+." ?\ﻞ) + ("&l+," ?\ﻟ) + ("&l+;" ?\ﻠ) + ("&m+-" ?\ﻡ) + ("&m+." ?\ﻢ) + ("&m+," ?\ﻣ) + ("&m+;" ?\ﻤ) + ("&n+-" ?\ﻥ) + ("&n+." ?\ﻦ) + ("&n+," ?\ﻧ) + ("&n+;" ?\ﻨ) + ("&h+-" ?\ﻩ) + ("&h+." ?\ﻪ) + ("&h+," ?\ﻫ) + ("&h+;" ?\ﻬ) + ("&w+-" ?\ﻭ) + ("&w+." ?\ﻮ) + ("&j+-" ?\ﻯ) + ("&j+." ?\ﻰ) + ("&y+-" ?\ﻱ) + ("&y+." ?\ﻲ) + ("&y+," ?\ﻳ) + ("&y+;" ?\ﻴ) + ("&lM-" ?\ﻵ) + ("&lM." ?\ﻶ) + ("&lH-" ?\ﻷ) + ("&lH." ?\ﻸ) + ("&lh-" ?\ﻹ) + ("&lh." ?\ﻺ) + ("&la-" ?\ﻻ) + ("&la." ?\ﻼ) +) + +(provide 'rfc1345) + +;;; rfc1345.el ends here diff --git a/lisp/leim/quail/sgml-input.el b/lisp/leim/quail/sgml-input.el new file mode 100644 index 00000000000..9545bb8b1aa --- /dev/null +++ b/lisp/leim/quail/sgml-input.el @@ -0,0 +1,1061 @@ +;;; sgml-input.el --- Quail method for Unicode entered as SGML entities -*- coding: utf-8 -*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Dave Love <fx@gnu.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; The table was derived from the Unicode consortium file +;; MAPPINGS/VENDORS/MISC/SGML.TXT. + +;;; Code: + +(require 'quail) + +(quail-define-package + "sgml" "UTF-8" "&" t + "Unicode characters input method using SGML entities. +Entities are covered from the public sets ISOamsa, ISOamsb, ISOamsc, +ISOamsn, ISOamso, ISOamsr, ISObox, ISOcyr1, ISOcyr2, ISOdia, ISOgrk1, +ISOgrk2, ISOgrk3, ISOgrk4, ISOlat1, ISOlat2, ISOnum, ISOpub, ISOtech, +HTMLspecial and HTMLsymbol. + +E.g.: á -> á" + '(("\t" . quail-completion)) + t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("&Aacgr;" ?\Ά) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS + ("&aacgr;" ?\ά) ;; GREEK SMALL LETTER ALPHA WITH TONOS + ("Á" ?\Á) ;; LATIN CAPITAL LETTER A WITH ACUTE + ("á" ?\á) ;; LATIN SMALL LETTER A WITH ACUTE + ("Ă" ?\Ă) ;; LATIN CAPITAL LETTER A WITH BREVE + ("ă" ?\ă) ;; LATIN SMALL LETTER A WITH BREVE + ("Â" ?\Â) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX + ("â" ?\â) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX + ("´" ?\´) ;; ACUTE ACCENT + ("А" ?\А) ;; CYRILLIC CAPITAL LETTER A + ("а" ?\а) ;; CYRILLIC SMALL LETTER A + ("Æ" ?\Æ) ;; LATIN CAPITAL LETTER AE + ("æ" ?\æ) ;; LATIN SMALL LETTER AE + ("&Agr;" ?\Α) ;; GREEK CAPITAL LETTER ALPHA + ("&agr;" ?\α) ;; GREEK SMALL LETTER ALPHA + ("À" ?\À) ;; LATIN CAPITAL LETTER A WITH GRAVE + ("à" ?\à) ;; LATIN SMALL LETTER A WITH GRAVE + ("ℵ" ?\ℵ) ;; ALEF SYMBOL + ("ℵ" ?\ℵ) ;; ALEF SYMBOL + ("Α" ?\Α) ;; GREEK CAPITAL LETTER ALPHA + ("α" ?\α) ;; GREEK SMALL LETTER ALPHA + ("Ā" ?\Ā) ;; LATIN CAPITAL LETTER A WITH MACRON + ("ā" ?\ā) ;; LATIN SMALL LETTER A WITH MACRON + ("⨿" ?\∐) ;; N-ARY COPRODUCT + ("&" ?\&) ;; AMPERSAND + ("∧" ?\∧) ;; LOGICAL AND + ("∠" ?\∠) ;; ANGLE + ("&ang90;" ?\∟) ;; RIGHT ANGLE + ("∡" ?\∡) ;; MEASURED ANGLE + ("∢" ?\∢) ;; SPHERICAL ANGLE + ("Å" ?\Å) ;; ANGSTROM SIGN + ("Ą" ?\Ą) ;; LATIN CAPITAL LETTER A WITH OGONEK + ("ą" ?\ą) ;; LATIN SMALL LETTER A WITH OGONEK + ("≈" ?\≈) ;; ALMOST EQUAL TO + ("≊" ?\≊) ;; ALMOST EQUAL OR EQUAL TO + ("'" ?\ʼ) ;; MODIFIER LETTER APOSTROPHE + ("Å" ?\Å) ;; LATIN CAPITAL LETTER A WITH RING ABOVE + ("å" ?\å) ;; LATIN SMALL LETTER A WITH RING ABOVE + ("*" ?\*) ;; ASTERISK + ("≈" ?\≈) ;; ALMOST EQUAL TO + ("Ã" ?\Ã) ;; LATIN CAPITAL LETTER A WITH TILDE + ("ã" ?\ã) ;; LATIN SMALL LETTER A WITH TILDE + ("Ä" ?\Ä) ;; LATIN CAPITAL LETTER A WITH DIAERESIS + ("ä" ?\ä) ;; LATIN SMALL LETTER A WITH DIAERESIS + ("&b.alpha;" ?\α) ;; GREEK SMALL LETTER ALPHA + ("⌅" ?\⊼) ;; NAND + ("⌆" ?\⌆) ;; PERSPECTIVE + ("&b.beta;" ?\β) ;; GREEK SMALL LETTER BETA + ("&bchi;" ?\χ) ;; GREEK SMALL LETTER CHI + ("≌" ?\≌) ;; ALL EQUAL TO + ("Б" ?\Б) ;; CYRILLIC CAPITAL LETTER BE + ("б" ?\б) ;; CYRILLIC SMALL LETTER BE + ("&b.Delta;" ?\Δ) ;; GREEK CAPITAL LETTER DELTA + ("&b.delta;" ?\γ) ;; GREEK SMALL LETTER GAMMA + ("„" ?\„) ;; DOUBLE LOW-9 QUOTATION MARK + ("∵" ?\∵) ;; BECAUSE + ("϶" ?\∍) ;; SMALL CONTAINS AS MEMBER + ("&b.epsi;" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("&b.epsis;" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("&b.epsiv;" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("ℬ" ?\ℬ) ;; SCRIPT CAPITAL B + ("Β" ?\Β) ;; GREEK CAPITAL LETTER BETA + ("β" ?\β) ;; GREEK SMALL LETTER BETA + ("&b.eta;" ?\η) ;; GREEK SMALL LETTER ETA + ("ℶ" ?\ℶ) ;; BET SYMBOL + ("&b.Gamma;" ?\Γ) ;; GREEK CAPITAL LETTER GAMMA + ("&b.gamma;" ?\γ) ;; GREEK SMALL LETTER GAMMA + ("&b.gammagrk4;" ?\Ϝ) ;; GREEK LETTER DIGAMMA + ("&Bgr;" ?\Β) ;; GREEK CAPITAL LETTER BETA + ("&bgr;" ?\β) ;; GREEK SMALL LETTER BETA + ("&b.iota;" ?\ι) ;; GREEK SMALL LETTER IOTA + ("&b.kappa;" ?\κ) ;; GREEK SMALL LETTER KAPPA + ("&b.kappagrk4;" ?\ϰ) ;; GREEK KAPPA SYMBOL + ("&b.Lambdgrk4;" ?\Λ) ;; GREEK CAPITAL LETTER LAMDA + ("&b.lambdgrk4;" ?\λ) ;; GREEK SMALL LETTER LAMDA + ("␣" ?\␣) ;; OPEN BOX + ("▒" ?\▒) ;; MEDIUM SHADE + ("░" ?\░) ;; LIGHT SHADE + ("▓" ?\▓) ;; DARK SHADE + ("█" ?\█) ;; FULL BLOCK + ("&b.mu;" ?\μ) ;; GREEK SMALL LETTER MU + ("&b.nu;" ?\ν) ;; GREEK SMALL LETTER NU + ("&b.Omega;" ?\Ω) ;; GREEK CAPITAL LETTER OMEGA + ("&b.omega;" ?\ώ) ;; GREEK SMALL LETTER OMEGA WITH TONOS + ("⊥" ?\⊥) ;; UP TACK + ("⋈" ?\⋈) ;; BOWTIE + ("┐" ?\┐) ;; BOX DRAWINGS LIGHT DOWN AND LEFT + ("╕" ?\╕) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + ("╖" ?\╖) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + ("╗" ?\╗) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT + ("┌" ?\┌) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT + ("╒" ?\╒) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + ("╓" ?\╓) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + ("╔" ?\╔) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT + ("─" ?\─) ;; BOX DRAWINGS LIGHT HORIZONTAL + ("═" ?\═) ;; BOX DRAWINGS DOUBLE HORIZONTAL + ("┬" ?\┬) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + ("╤" ?\╤) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + ("╥" ?\╥) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + ("╦" ?\╦) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + ("┴" ?\┴) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL + ("╧" ?\╧) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + ("╨" ?\╨) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + ("╩" ?\╩) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL + ("┘" ?\┘) ;; BOX DRAWINGS LIGHT UP AND LEFT + ("╛" ?\╛) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + ("╜" ?\╜) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + ("╝" ?\╝) ;; BOX DRAWINGS DOUBLE UP AND LEFT + ("└" ?\└) ;; BOX DRAWINGS LIGHT UP AND RIGHT + ("╘" ?\╘) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + ("╙" ?\╙) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + ("╚" ?\╚) ;; BOX DRAWINGS DOUBLE UP AND RIGHT + ("│" ?\│) ;; BOX DRAWINGS LIGHT VERTICAL + ("║" ?\║) ;; BOX DRAWINGS DOUBLE VERTICAL + ("┼" ?\┼) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + ("╪" ?\╪) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + ("╫" ?\╫) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + ("╬" ?\╬) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + ("┤" ?\┤) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT + ("╡" ?\╡) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + ("╢" ?\╢) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + ("╣" ?\╣) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT + ("├" ?\├) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT + ("╞" ?\╞) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + ("╟" ?\╟) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + ("╠" ?\╠) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + ("&b.Phi;" ?\Φ) ;; GREEK CAPITAL LETTER PHI + ("&b.phis;" ?\φ) ;; GREEK SMALL LETTER PHI + ("&b.phiv;" ?\ϕ) ;; GREEK PHI SYMBOL + ("&b.Pi;" ?\Π) ;; GREEK CAPITAL LETTER PI + ("&b.pi;" ?\π) ;; GREEK SMALL LETTER PI + ("&b.piv;" ?\ϖ) ;; GREEK PI SYMBOL + ("‵" ?\‵) ;; REVERSED PRIME + ("&b.Psi;" ?\Ψ) ;; GREEK CAPITAL LETTER PSI + ("&b.psi;" ?\ψ) ;; GREEK SMALL LETTER PSI + ("˘" ?\˘) ;; BREVE + ("&b.rho;" ?\ρ) ;; GREEK SMALL LETTER RHO + ("&b.rhov;" ?\ϱ) ;; GREEK RHO SYMBOL + ("¦" ?\¦) ;; BROKEN BAR + ("&b.Sigma;" ?\Σ) ;; GREEK CAPITAL LETTER SIGMA + ("&b.sigma;" ?\σ) ;; GREEK SMALL LETTER SIGMA + ("&b.sigmagrk4;" ?\ς) ;; GREEK SMALL LETTER FINAL SIGMA + ("∽" ?\∽) ;; REVERSED TILDE + ("⋍" ?\⋍) ;; REVERSED TILDE EQUALS + ("\" ?\\) ;; REVERSE SOLIDUS + ("&b.tau;" ?\τ) ;; GREEK SMALL LETTER TAU + ("&b.Theta;" ?\Θ) ;; GREEK CAPITAL LETTER THETA + ("&b.thetagrk4;" ?\θ) ;; GREEK SMALL LETTER THETA + ("&b.thetagrk4;" ?\ϑ) ;; GREEK THETA SYMBOL + ("•" ?\•) ;; BULLET + ("≎" ?\≎) ;; GEOMETRICALLY EQUIVALENT TO + ("≏" ?\≏) ;; DIFFERENCE BETWEEN + ("&b.Upsi;" ?\Υ) ;; GREEK CAPITAL LETTER UPSILON + ("&b.upsi;" ?\υ) ;; GREEK SMALL LETTER UPSILON + ("&b.Xi;" ?\Ξ) ;; GREEK CAPITAL LETTER XI + ("&b.xi;" ?\ξ) ;; GREEK SMALL LETTER XI + ("&b.zeta;" ?\ζ) ;; GREEK SMALL LETTER ZETA + ("Ć" ?\Ć) ;; LATIN CAPITAL LETTER C WITH ACUTE + ("ć" ?\ć) ;; LATIN SMALL LETTER C WITH ACUTE + ("⋒" ?\⋒) ;; DOUBLE INTERSECTION + ("∩" ?\∩) ;; INTERSECTION + ("⁁" ?\⁁) ;; CARET INSERTION POINT + ("ˇ" ?\ˇ) ;; CARON + ("Č" ?\Č) ;; LATIN CAPITAL LETTER C WITH CARON + ("č" ?\č) ;; LATIN SMALL LETTER C WITH CARON + ("Ç" ?\Ç) ;; LATIN CAPITAL LETTER C WITH CEDILLA + ("ç" ?\ç) ;; LATIN SMALL LETTER C WITH CEDILLA + ("Ĉ" ?\Ĉ) ;; LATIN CAPITAL LETTER C WITH CIRCUMFLEX + ("ĉ" ?\ĉ) ;; LATIN SMALL LETTER C WITH CIRCUMFLEX + ("Ċ" ?\Ċ) ;; LATIN CAPITAL LETTER C WITH DOT ABOVE + ("ċ" ?\ċ) ;; LATIN SMALL LETTER C WITH DOT ABOVE + ("¸" ?\¸) ;; CEDILLA + ("¢" ?\¢) ;; CENT SIGN + ("Ч" ?\Ч) ;; CYRILLIC CAPITAL LETTER CHE + ("ч" ?\ч) ;; CYRILLIC SMALL LETTER CHE + ("✓" ?\✓) ;; CHECK MARK + ("Χ" ?\Χ) ;; GREEK CAPITAL LETTER CHI + ("χ" ?\χ) ;; GREEK SMALL LETTER CHI + ("○" ?\○) ;; WHITE CIRCLE + ("ˆ" ?\ˆ) ;; MODIFIER LETTER CIRCUMFLEX ACCENT + ("≗" ?\≗) ;; RING EQUAL TO + ("♣" ?\♣) ;; BLACK CLUB SUIT + (":" ?\:) ;; COLON + ("≔" ?\≔) ;; COLON EQUALS + ("," ?\,) ;; COMMA + ("@" ?\@) ;; COMMERCIAL AT + ("∁" ?\∁) ;; COMPLEMENT + ("∘" ?\∘) ;; RING OPERATOR + ("≅" ?\≅) ;; APPROXIMATELY EQUAL TO + ("∮" ?\∮) ;; CONTOUR INTEGRAL + ("∐" ?\∐) ;; N-ARY COPRODUCT + ("©" ?\©) ;; COPYRIGHT SIGN + ("℗" ?\℗) ;; SOUND RECORDING COPYRIGHT + ("↵" ?\↵) ;; DOWNWARDS ARROW WITH CORNER LEFTWARDS + ("✗" ?\✗) ;; BALLOT X + ("⋞" ?\⋞) ;; EQUAL TO OR PRECEDES + ("⋟" ?\⋟) ;; EQUAL TO OR SUCCEEDS + ("↶" ?\↶) ;; ANTICLOCKWISE TOP SEMICIRCLE ARROW + ("⋓" ?\⋓) ;; DOUBLE UNION + ("∪" ?\∪) ;; UNION + ("&cupre;" ?\≼) ;; PRECEDES OR EQUAL TO + ("↷" ?\↷) ;; CLOCKWISE TOP SEMICIRCLE ARROW + ("¤" ?\¤) ;; CURRENCY SIGN + ("⋎" ?\⋎) ;; CURLY LOGICAL OR + ("⋏" ?\⋏) ;; CURLY LOGICAL AND + ("†" ?\†) ;; DAGGER + ("‡" ?\‡) ;; DOUBLE DAGGER + ("ℸ" ?\ℸ) ;; DALET SYMBOL + ("⇓" ?\⇓) ;; DOWNWARDS DOUBLE ARROW + ("↓" ?\↓) ;; DOWNWARDS ARROW + ("&darr2;" ?\⇊) ;; DOWNWARDS PAIRED ARROWS + ("‐" ?\‐) ;; HYPHEN + ("⊣" ?\⊣) ;; LEFT TACK + ("˝" ?\˝) ;; DOUBLE ACUTE ACCENT + ("Ď" ?\Ď) ;; LATIN CAPITAL LETTER D WITH CARON + ("ď" ?\ď) ;; LATIN SMALL LETTER D WITH CARON + ("Д" ?\Д) ;; CYRILLIC CAPITAL LETTER DE + ("д" ?\д) ;; CYRILLIC SMALL LETTER DE + ("°" ?\°) ;; DEGREE SIGN + ("Δ" ?\Δ) ;; GREEK CAPITAL LETTER DELTA + ("δ" ?\δ) ;; GREEK SMALL LETTER DELTA + ("&Dgr;" ?\Δ) ;; GREEK CAPITAL LETTER DELTA + ("&dgr;" ?\δ) ;; GREEK SMALL LETTER DELTA + ("⇃" ?\⇃) ;; DOWNWARDS HARPOON WITH BARB LEFTWARDS + ("⇂" ?\⇂) ;; DOWNWARDS HARPOON WITH BARB RIGHTWARDS + ("⋄" ?\⋄) ;; DIAMOND OPERATOR + ("♦" ?\♦) ;; BLACK DIAMOND SUIT + ("¨" ?\¨) ;; DIAERESIS + ("÷" ?\÷) ;; DIVISION SIGN + ("⋇" ?\⋇) ;; DIVISION TIMES + ("Ђ" ?\Ђ) ;; CYRILLIC CAPITAL LETTER DJE + ("ђ" ?\ђ) ;; CYRILLIC SMALL LETTER DJE + ("&dlarr;" ?\↙) ;; SOUTH WEST ARROW + ("⌞" ?\⌞) ;; BOTTOM LEFT CORNER + ("⌍" ?\⌍) ;; BOTTOM LEFT CROP + ("$" ?\$) ;; DOLLAR SIGN + ("˙" ?\˙) ;; DOT ABOVE + ("¨" ?\¨) ;; DIAERESIS + ("⃜" ?\⃜) ;; COMBINING FOUR DOTS ABOVE + ("&drarr;" ?\↘) ;; SOUTH EAST ARROW + ("⌟" ?\⌟) ;; BOTTOM RIGHT CORNER + ("⌌" ?\⌌) ;; BOTTOM RIGHT CROP + ("Ѕ" ?\Ѕ) ;; CYRILLIC CAPITAL LETTER DZE + ("ѕ" ?\ѕ) ;; CYRILLIC SMALL LETTER DZE + ("Đ" ?\Đ) ;; LATIN CAPITAL LETTER D WITH STROKE + ("đ" ?\đ) ;; LATIN SMALL LETTER D WITH STROKE + ("▿" ?\▿) ;; WHITE DOWN-POINTING SMALL TRIANGLE + ("▾" ?\▾) ;; BLACK DOWN-POINTING SMALL TRIANGLE + ("Џ" ?\Џ) ;; CYRILLIC CAPITAL LETTER DZHE + ("џ" ?\џ) ;; CYRILLIC SMALL LETTER DZHE + ("&Eacgr;" ?\Έ) ;; GREEK CAPITAL LETTER EPSILON WITH TONOS + ("&eacgr;" ?\έ) ;; GREEK SMALL LETTER EPSILON WITH TONOS + ("É" ?\É) ;; LATIN CAPITAL LETTER E WITH ACUTE + ("é" ?\é) ;; LATIN SMALL LETTER E WITH ACUTE + ("Ě" ?\Ě) ;; LATIN CAPITAL LETTER E WITH CARON + ("ě" ?\ě) ;; LATIN SMALL LETTER E WITH CARON + ("≖" ?\≖) ;; RING IN EQUAL TO + ("Ê" ?\Ê) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX + ("ê" ?\ê) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX + ("≕" ?\≕) ;; EQUALS COLON + ("Э" ?\Э) ;; CYRILLIC CAPITAL LETTER E + ("э" ?\э) ;; CYRILLIC SMALL LETTER E + ("≑" ?\≑) ;; GEOMETRICALLY EQUAL TO + ("Ė" ?\Ė) ;; LATIN CAPITAL LETTER E WITH DOT ABOVE + ("ė" ?\ė) ;; LATIN SMALL LETTER E WITH DOT ABOVE + ("&EEacgr;" ?\Ή) ;; GREEK CAPITAL LETTER ETA WITH TONOS + ("&eeacgr;" ?\ή) ;; GREEK SMALL LETTER ETA WITH TONOS + ("&EEgr;" ?\Η) ;; GREEK CAPITAL LETTER ETA + ("&eegr;" ?\η) ;; GREEK SMALL LETTER ETA + ("≒" ?\≒) ;; APPROXIMATELY EQUAL TO OR THE IMAGE OF + ("&Egr;" ?\Ε) ;; GREEK CAPITAL LETTER EPSILON + ("&egr;" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("È" ?\È) ;; LATIN CAPITAL LETTER E WITH GRAVE + ("è" ?\è) ;; LATIN SMALL LETTER E WITH GRAVE + ("⪖" ?\⋝) ;; EQUAL TO OR GREATER-THAN + ("ℓ" ?\ℓ) ;; SCRIPT SMALL L + ("⪕" ?\⋜) ;; EQUAL TO OR LESS-THAN + ("Ē" ?\Ē) ;; LATIN CAPITAL LETTER E WITH MACRON + ("ē" ?\ē) ;; LATIN SMALL LETTER E WITH MACRON + ("∅" ?\∅) ;; EMPTY SET + (" " ?\ ) ;; EM SPACE + (" " ?\ ) ;; THREE-PER-EM SPACE + (" " ?\ ) ;; FOUR-PER-EM SPACE + ("Ŋ" ?\Ŋ) ;; LATIN CAPITAL LETTER ENG + ("ŋ" ?\ŋ) ;; LATIN SMALL LETTER ENG + (" " ?\ ) ;; EN SPACE + ("Ę" ?\Ę) ;; LATIN CAPITAL LETTER E WITH OGONEK + ("ę" ?\ę) ;; LATIN SMALL LETTER E WITH OGONEK + ("ε" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("Ε" ?\Ε) ;; GREEK CAPITAL LETTER EPSILON + ("ε" ?\ε) ;; GREEK SMALL LETTER EPSILON + ("&epsis;" ?\∊) ;; SMALL ELEMENT OF +;;; ("ϵ" ?\x????) ;; variant epsilon + ("=" ?\=) ;; EQUALS SIGN + ("≡" ?\≡) ;; IDENTICAL TO + ("≓" ?\≓) ;; IMAGE OF OR APPROXIMATELY EQUAL TO + ("≐" ?\≐) ;; APPROACHES THE LIMIT + ("Η" ?\Η) ;; GREEK CAPITAL LETTER ETA + ("η" ?\η) ;; GREEK SMALL LETTER ETA + ("Ð" ?\Ð) ;; LATIN CAPITAL LETTER ETH + ("ð" ?\ð) ;; LATIN SMALL LETTER ETH + ("Ë" ?\Ë) ;; LATIN CAPITAL LETTER E WITH DIAERESIS + ("ë" ?\ë) ;; LATIN SMALL LETTER E WITH DIAERESIS + ("!" ?\!) ;; EXCLAMATION MARK + ("∃" ?\∃) ;; THERE EXISTS + ("Ф" ?\Ф) ;; CYRILLIC CAPITAL LETTER EF + ("ф" ?\ф) ;; CYRILLIC SMALL LETTER EF + ("♀" ?\♀) ;; FEMALE SIGN + ("ffi" ?\ffi) ;; LATIN SMALL LIGATURE FFI + ("ff" ?\ff) ;; LATIN SMALL LIGATURE FF + ("ffl" ?\ffl) ;; LATIN SMALL LIGATURE FFL + ("fi" ?\fi) ;; LATIN SMALL LIGATURE FI +;; ("fj" ?\x????) ;; fj ligature + ("♭" ?\♭) ;; MUSIC FLAT SIGN + ("fl" ?\fl) ;; LATIN SMALL LIGATURE FL + ("ƒ" ?\ƒ) ;; LATIN SMALL LETTER F WITH HOOK + ("∀" ?\∀) ;; FOR ALL + ("⋔" ?\⋔) ;; PITCHFORK + ("½" ?\½) ;; VULGAR FRACTION ONE HALF + ("⅓" ?\⅓) ;; VULGAR FRACTION ONE THIRD + ("¼" ?\¼) ;; VULGAR FRACTION ONE QUARTER + ("⅕" ?\⅕) ;; VULGAR FRACTION ONE FIFTH + ("⅙" ?\⅙) ;; VULGAR FRACTION ONE SIXTH + ("⅛" ?\⅛) ;; VULGAR FRACTION ONE EIGHTH + ("⅔" ?\⅔) ;; VULGAR FRACTION TWO THIRDS + ("⅖" ?\⅖) ;; VULGAR FRACTION TWO FIFTHS + ("¾" ?\¾) ;; VULGAR FRACTION THREE QUARTERS + ("⅗" ?\⅗) ;; VULGAR FRACTION THREE FIFTHS + ("⅜" ?\⅜) ;; VULGAR FRACTION THREE EIGHTHS + ("⅘" ?\⅘) ;; VULGAR FRACTION FOUR FIFTHS + ("⅚" ?\⅚) ;; VULGAR FRACTION FIVE SIXTHS + ("⅝" ?\⅝) ;; VULGAR FRACTION FIVE EIGHTHS + ("⅞" ?\⅞) ;; VULGAR FRACTION SEVEN EIGHTHS + ("⁄" ?\⁄) ;; FRACTION SLASH + ("⌢" ?\⌢) ;; FROWN + ("ǵ" ?\ǵ) ;; LATIN SMALL LETTER G WITH ACUTE + ("Γ" ?\Γ) ;; GREEK CAPITAL LETTER GAMMA + ("γ" ?\γ) ;; GREEK SMALL LETTER GAMMA + ("ϝ" ?\Ϝ) ;; GREEK LETTER DIGAMMA +;;; ("⪆" 0x????) ;; greater-than, approximately equal to + ("Ğ" ?\Ğ) ;; LATIN CAPITAL LETTER G WITH BREVE + ("ğ" ?\ğ) ;; LATIN SMALL LETTER G WITH BREVE + ("Ģ" ?\Ģ) ;; LATIN CAPITAL LETTER G WITH CEDILLA + ("&gcedil;" ?\ģ) ;; LATIN SMALL LETTER G WITH CEDILLA + ("Ĝ" ?\Ĝ) ;; LATIN CAPITAL LETTER G WITH CIRCUMFLEX + ("ĝ" ?\ĝ) ;; LATIN SMALL LETTER G WITH CIRCUMFLEX + ("Г" ?\Г) ;; CYRILLIC CAPITAL LETTER GHE + ("г" ?\г) ;; CYRILLIC SMALL LETTER GHE + ("Ġ" ?\Ġ) ;; LATIN CAPITAL LETTER G WITH DOT ABOVE + ("ġ" ?\ġ) ;; LATIN SMALL LETTER G WITH DOT ABOVE + ("≧" ?\≧) ;; GREATER-THAN OVER EQUAL TO + ("≥" ?\≥) ;; GREATER-THAN OR EQUAL TO +;;; ("⪌" ?\x????) ;; greater-than, double equals, less-than + ("⋛" ?\⋛) ;; GREATER-THAN EQUAL TO OR LESS-THAN + ("⩾" ?\≥) ;; GREATER-THAN OR EQUAL TO + ("⋙" ?\⋙) ;; VERY MUCH GREATER-THAN + ("&Ggr;" ?\Γ) ;; GREEK CAPITAL LETTER GAMMA + ("&ggr;" ?\γ) ;; GREEK SMALL LETTER GAMMA + ("ℷ" ?\ℷ) ;; GIMEL SYMBOL + ("Ѓ" ?\Ѓ) ;; CYRILLIC CAPITAL LETTER GJE + ("ѓ" ?\ѓ) ;; CYRILLIC SMALL LETTER GJE + ("≷" ?\≷) ;; GREATER-THAN OR LESS-THAN +;;; ("⪊" ?\x????) ;; greater-than, not approximately equal to + ("⪈" ?\≩) ;; GREATER-THAN BUT NOT EQUAL TO + ("≩" ?\≩) ;; GREATER-THAN BUT NOT EQUAL TO + ("⋧" ?\⋧) ;; GREATER-THAN BUT NOT EQUIVALENT TO + ("`" ?\`) ;; GRAVE ACCENT + ("&gsdot;" ?\⋗) ;; GREATER-THAN WITH DOT + ("≳" ?\≳) ;; GREATER-THAN OR EQUIVALENT TO + ("≫" ?\≫) ;; MUCH GREATER-THAN + (">" ?\>) ;; GREATER-THAN SIGN + ("≩︀" ?\≩) ;; GREATER-THAN BUT NOT EQUAL TO + (" " ?\ ) ;; HAIR SPACE + ("½" ?\½) ;; VULGAR FRACTION ONE HALF + ("ℋ" ?\ℋ) ;; SCRIPT CAPITAL H + ("Ъ" ?\Ъ) ;; CYRILLIC CAPITAL LETTER HARD SIGN + ("ъ" ?\ъ) ;; CYRILLIC SMALL LETTER HARD SIGN + ("↔" ?\↔) ;; LEFT RIGHT ARROW + ("⇔" ?\⇔) ;; LEFT RIGHT DOUBLE ARROW + ("↭" ?\↭) ;; LEFT RIGHT WAVE ARROW + ("Ĥ" ?\Ĥ) ;; LATIN CAPITAL LETTER H WITH CIRCUMFLEX + ("ĥ" ?\ĥ) ;; LATIN SMALL LETTER H WITH CIRCUMFLEX + ("♥" ?\♥) ;; BLACK HEART SUIT + ("…" ?\…) ;; HORIZONTAL ELLIPSIS + ("―" ?\―) ;; HORIZONTAL BAR + ("Ħ" ?\Ħ) ;; LATIN CAPITAL LETTER H WITH STROKE + ("ħ" ?\ħ) ;; LATIN SMALL LETTER H WITH STROKE + ("⁃" ?\⁃) ;; HYPHEN BULLET + ("‐" ?\-) ;; HYPHEN-MINUS + ("&Iacgr;" ?\Ί) ;; GREEK CAPITAL LETTER IOTA WITH TONOS + ("&iacgr;" ?\ί) ;; GREEK SMALL LETTER IOTA WITH TONOS + ("Í" ?\Í) ;; LATIN CAPITAL LETTER I WITH ACUTE + ("í" ?\í) ;; LATIN SMALL LETTER I WITH ACUTE + ("Î" ?\Î) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX + ("î" ?\î) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX + ("И" ?\И) ;; CYRILLIC CAPITAL LETTER I + ("и" ?\и) ;; CYRILLIC SMALL LETTER I + ("&idiagr;" ?\ΐ) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + ("&Idigr;" ?\Ϊ) ;; GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + ("&idigr;" ?\ϊ) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA + ("İ" ?\İ) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE + ("Е" ?\Е) ;; CYRILLIC CAPITAL LETTER IE + ("е" ?\е) ;; CYRILLIC SMALL LETTER IE + ("¡" ?\¡) ;; INVERTED EXCLAMATION MARK + ("⇔" ?\⇔) ;; LEFT RIGHT DOUBLE ARROW + ("&Igr;" ?\Ι) ;; GREEK CAPITAL LETTER IOTA + ("&igr;" ?\ι) ;; GREEK SMALL LETTER IOTA + ("Ì" ?\Ì) ;; LATIN CAPITAL LETTER I WITH GRAVE + ("ì" ?\ì) ;; LATIN SMALL LETTER I WITH GRAVE + ("IJ" ?\IJ) ;; LATIN CAPITAL LIGATURE IJ + ("ij" ?\ij) ;; LATIN SMALL LIGATURE IJ + ("Ī" ?\Ī) ;; LATIN CAPITAL LETTER I WITH MACRON + ("ī" ?\ī) ;; LATIN SMALL LETTER I WITH MACRON + ("ℑ" ?\ℑ) ;; BLACK-LETTER CAPITAL I + ("℅" ?\℅) ;; CARE OF + ("∞" ?\∞) ;; INFINITY + ("ı" ?\ı) ;; LATIN SMALL LETTER DOTLESS I + ("ı" ?\ı) ;; LATIN SMALL LETTER DOTLESS I + ("∫" ?\∫) ;; INTEGRAL + ("⊺" ?\⊺) ;; INTERCALATE + ("Ё" ?\Ё) ;; CYRILLIC CAPITAL LETTER IO + ("ё" ?\ё) ;; CYRILLIC SMALL LETTER IO + ("Į" ?\Į) ;; LATIN CAPITAL LETTER I WITH OGONEK + ("į" ?\į) ;; LATIN SMALL LETTER I WITH OGONEK + ("Ι" ?\Ι) ;; GREEK CAPITAL LETTER IOTA + ("ι" ?\ι) ;; GREEK SMALL LETTER IOTA + ("¿" ?\¿) ;; INVERTED QUESTION MARK + ("∈" ?\∈) ;; ELEMENT OF + ("Ĩ" ?\Ĩ) ;; LATIN CAPITAL LETTER I WITH TILDE + ("ĩ" ?\ĩ) ;; LATIN SMALL LETTER I WITH TILDE + ("І" ?\І) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + ("і" ?\і) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + ("Ï" ?\Ï) ;; LATIN CAPITAL LETTER I WITH DIAERESIS + ("ï" ?\ï) ;; LATIN SMALL LETTER I WITH DIAERESIS + ("Ĵ" ?\Ĵ) ;; LATIN CAPITAL LETTER J WITH CIRCUMFLEX + ("ĵ" ?\ĵ) ;; LATIN SMALL LETTER J WITH CIRCUMFLEX + ("Й" ?\Й) ;; CYRILLIC CAPITAL LETTER SHORT I + ("й" ?\й) ;; CYRILLIC SMALL LETTER SHORT I +;;; ("&jnodot;" ?\x????) ;; latin small letter dotless j + ("Ј" ?\Ј) ;; CYRILLIC CAPITAL LETTER JE + ("ј" ?\ј) ;; CYRILLIC SMALL LETTER JE + ("Є" ?\Є) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE + ("є" ?\є) ;; CYRILLIC SMALL LETTER UKRAINIAN IE + ("Κ" ?\Κ) ;; GREEK CAPITAL LETTER KAPPA + ("κ" ?\κ) ;; GREEK SMALL LETTER KAPPA + ("ϰ" ?\ϰ) ;; GREEK KAPPA SYMBOL + ("Ķ" ?\Ķ) ;; LATIN CAPITAL LETTER K WITH CEDILLA + ("ķ" ?\ķ) ;; LATIN SMALL LETTER K WITH CEDILLA + ("К" ?\К) ;; CYRILLIC CAPITAL LETTER KA + ("к" ?\к) ;; CYRILLIC SMALL LETTER KA + ("&Kgr;" ?\Κ) ;; GREEK CAPITAL LETTER KAPPA + ("&kgr;" ?\κ) ;; GREEK SMALL LETTER KAPPA + ("ĸ" ?\ĸ) ;; LATIN SMALL LETTER KRA + ("Х" ?\Х) ;; CYRILLIC CAPITAL LETTER HA + ("х" ?\х) ;; CYRILLIC SMALL LETTER HA + ("&KHgr;" ?\Χ) ;; GREEK CAPITAL LETTER CHI + ("&khgr;" ?\χ) ;; GREEK SMALL LETTER CHI + ("Ќ" ?\Ќ) ;; CYRILLIC CAPITAL LETTER KJE + ("ќ" ?\ќ) ;; CYRILLIC SMALL LETTER KJE + ("⇚" ?\⇚) ;; LEFTWARDS TRIPLE ARROW + ("Ĺ" ?\Ĺ) ;; LATIN CAPITAL LETTER L WITH ACUTE + ("ĺ" ?\ĺ) ;; LATIN SMALL LETTER L WITH ACUTE + ("ℒ" ?\ℒ) ;; SCRIPT CAPITAL L + ("Λ" ?\Λ) ;; GREEK CAPITAL LETTER LAMDA + ("λ" ?\λ) ;; GREEK SMALL LETTER LAMDA + ("⟨" ?\〈) ;; LEFT-POINTING ANGLE BRACKET +;;; ("⪅" ?\x????) ;; less-than, approximately equal to + ("«" ?\«) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + ("↞" ?\↞) ;; LEFTWARDS TWO HEADED ARROW + ("←" ?\←) ;; LEFTWARDS ARROW + ("⇐" ?\⇐) ;; LEFTWARDS DOUBLE ARROW + ("&larr2;" ?\⇇) ;; LEFTWARDS PAIRED ARROWS + ("↩" ?\↩) ;; LEFTWARDS ARROW WITH HOOK + ("↫" ?\↫) ;; LEFTWARDS ARROW WITH LOOP + ("↢" ?\↢) ;; LEFTWARDS ARROW WITH TAIL + ("Ľ" ?\Ľ) ;; LATIN CAPITAL LETTER L WITH CARON + ("ľ" ?\ľ) ;; LATIN SMALL LETTER L WITH CARON + ("Ļ" ?\Ļ) ;; LATIN CAPITAL LETTER L WITH CEDILLA + ("ļ" ?\ļ) ;; LATIN SMALL LETTER L WITH CEDILLA + ("⌈" ?\⌈) ;; LEFT CEILING + ("{" ?\{) ;; LEFT CURLY BRACKET + ("Л" ?\Л) ;; CYRILLIC CAPITAL LETTER EL + ("л" ?\л) ;; CYRILLIC SMALL LETTER EL + ("&ldot;" ?\⋖) ;; LESS-THAN WITH DOT + ("“" ?\“) ;; LEFT DOUBLE QUOTATION MARK + ("„" ?\„) ;; DOUBLE LOW-9 QUOTATION MARK + ("≦" ?\≦) ;; LESS-THAN OVER EQUAL TO + ("≤" ?\≤) ;; LESS-THAN OR EQUAL TO +;;; ("⪋" ?\x????) ;; less-than, double equals, greater-than + ("⋚" ?\⋚) ;; LESS-THAN EQUAL TO OR GREATER-THAN + ("⩽" ?\≤) ;; LESS-THAN OR EQUAL TO + ("⌊" ?\⌊) ;; LEFT FLOOR + ("≶" ?\≶) ;; LESS-THAN OR GREATER-THAN + ("&Lgr;" ?\Λ) ;; GREEK CAPITAL LETTER LAMDA + ("&lgr;" ?\λ) ;; GREEK SMALL LETTER LAMDA + ("↽" ?\↽) ;; LEFTWARDS HARPOON WITH BARB DOWNWARDS + ("↼" ?\↼) ;; LEFTWARDS HARPOON WITH BARB UPWARDS + ("▄" ?\▄) ;; LOWER HALF BLOCK + ("Љ" ?\Љ) ;; CYRILLIC CAPITAL LETTER LJE + ("љ" ?\љ) ;; CYRILLIC SMALL LETTER LJE + ("⋘" ?\⋘) ;; VERY MUCH LESS-THAN + ("Ŀ" ?\Ŀ) ;; LATIN CAPITAL LETTER L WITH MIDDLE DOT + ("ŀ" ?\ŀ) ;; LATIN SMALL LETTER L WITH MIDDLE DOT +;;; ("⪉" 0x????) ;; less-than, not approximately equal to + ("≨" ?\≨) ;; LESS-THAN BUT NOT EQUAL TO + ("⪇" ?\≨) ;; LESS-THAN BUT NOT EQUAL TO + ("⋦" ?\⋦) ;; LESS-THAN BUT NOT EQUIVALENT TO + ("∗" ?\∗) ;; ASTERISK OPERATOR + ("_" ?\_) ;; LOW LINE + ("◊" ?\◊) ;; LOZENGE + ("◊" ?\✧) ;; WHITE FOUR POINTED STAR + ("⧫" ?\✦) ;; BLACK FOUR POINTED STAR + ("(" ?\() ;; LEFT PARENTHESIS +;;; ("&lpargt;" ?\x????) ;; left parenthesis, greater-than + ("&lrarr2;" ?\⇆) ;; LEFTWARDS ARROW OVER RIGHTWARDS ARROW + ("&lrhar2;" ?\⇋) ;; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON + ("‎" ?\) ;; LEFT-TO-RIGHT MARK + ("‹" ?\‹) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK + ("↰" ?\↰) ;; UPWARDS ARROW WITH TIP LEFTWARDS + ("≲" ?\≲) ;; LESS-THAN OR EQUIVALENT TO + ("[" ?\[) ;; LEFT SQUARE BRACKET + ("‘" ?\‘) ;; LEFT SINGLE QUOTATION MARK + ("‚" ?\‚) ;; SINGLE LOW-9 QUOTATION MARK + ("Ł" ?\Ł) ;; LATIN CAPITAL LETTER L WITH STROKE + ("ł" ?\ł) ;; LATIN SMALL LETTER L WITH STROKE + ("≪" ?\≪) ;; MUCH LESS-THAN + ("<" ?\<) ;; LESS-THAN SIGN + ("⋋" ?\⋋) ;; LEFT SEMIDIRECT PRODUCT + ("⋉" ?\⋉) ;; LEFT NORMAL FACTOR SEMIDIRECT PRODUCT + ("◃" ?\◃) ;; WHITE LEFT-POINTING SMALL TRIANGLE + ("⊴" ?\⊴) ;; NORMAL SUBGROUP OF OR EQUAL TO + ("◂" ?\◂) ;; BLACK LEFT-POINTING SMALL TRIANGLE + ("≨︀" ?\≨) ;; LESS-THAN BUT NOT EQUAL TO + ("¯" ?\¯) ;; MACRON + ("♂" ?\♂) ;; MALE SIGN + ("✠" ?\✠) ;; MALTESE CROSS + ("↦" ?\↦) ;; RIGHTWARDS ARROW FROM BAR + ("▮" ?\▮) ;; BLACK VERTICAL RECTANGLE + ("М" ?\М) ;; CYRILLIC CAPITAL LETTER EM + ("м" ?\м) ;; CYRILLIC SMALL LETTER EM + ("—" ?\—) ;; EM DASH + ("&Mgr;" ?\Μ) ;; GREEK CAPITAL LETTER MU + ("&mgr;" ?\μ) ;; GREEK SMALL LETTER MU + ("µ" ?\µ) ;; MICRO SIGN + ("∣" ?\∣) ;; DIVIDES + ("·" ?\·) ;; MIDDLE DOT + ("−" ?\−) ;; MINUS SIGN + ("⊟" ?\⊟) ;; SQUARED MINUS + ("…" ?\…) ;; HORIZONTAL ELLIPSIS + ("∓" ?\∓) ;; MINUS-OR-PLUS SIGN + ("⊧" ?\⊧) ;; MODELS + ("Μ" ?\Μ) ;; GREEK CAPITAL LETTER MU + ("μ" ?\μ) ;; GREEK SMALL LETTER MU + ("⊸" ?\⊸) ;; MULTIMAP + ("∇" ?\∇) ;; NABLA + ("Ń" ?\Ń) ;; LATIN CAPITAL LETTER N WITH ACUTE + ("ń" ?\ń) ;; LATIN SMALL LETTER N WITH ACUTE + ("≉" ?\≉) ;; NOT ALMOST EQUAL TO + ("ʼn" ?\ʼn) ;; LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + ("♮" ?\♮) ;; MUSIC NATURAL SIGN + (" " ?\ ) ;; NO-BREAK SPACE + ("Ň" ?\Ň) ;; LATIN CAPITAL LETTER N WITH CARON + ("ň" ?\ň) ;; LATIN SMALL LETTER N WITH CARON + ("Ņ" ?\Ņ) ;; LATIN CAPITAL LETTER N WITH CEDILLA + ("ņ" ?\ņ) ;; LATIN SMALL LETTER N WITH CEDILLA + ("≇" ?\≇) ;; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO + ("Н" ?\Н) ;; CYRILLIC CAPITAL LETTER EN + ("н" ?\н) ;; CYRILLIC SMALL LETTER EN + ("–" ?\–) ;; EN DASH + ("≠" ?\≠) ;; NOT EQUAL TO + ("↗" ?\↗) ;; NORTH EAST ARROW + ("≢" ?\≢) ;; NOT IDENTICAL TO + ("∄" ?\∄) ;; THERE DOES NOT EXIST +;;; ("≧̸" ?\x????) ;; not greater-than, double equals + ("≱" ?\≱) ;; NEITHER GREATER-THAN NOR EQUAL TO + ("⩾̸" ?\≱) ;; NEITHER GREATER-THAN NOR EQUAL TO + ("&Ngr;" ?\Ν) ;; GREEK CAPITAL LETTER NU + ("&ngr;" ?\ν) ;; GREEK SMALL LETTER NU + ("≯" ?\≯) ;; NOT GREATER-THAN + ("↮" ?\↮) ;; LEFT RIGHT ARROW WITH STROKE + ("⇎" ?\⇎) ;; LEFT RIGHT DOUBLE ARROW WITH STROKE + ("∋" ?\∋) ;; CONTAINS AS MEMBER + ("Њ" ?\Њ) ;; CYRILLIC CAPITAL LETTER NJE + ("њ" ?\њ) ;; CYRILLIC SMALL LETTER NJE + ("↚" ?\↚) ;; LEFTWARDS ARROW WITH STROKE + ("⇍" ?\⇍) ;; LEFTWARDS DOUBLE ARROW WITH STROKE + ("‥" ?\‥) ;; TWO DOT LEADER +;;; ("≦̸" ?\x????) ;; not less-than, double equals + ("≰" ?\≰) ;; NEITHER LESS-THAN NOR EQUAL TO + ("⩽̸" ?\≰) ;; NEITHER LESS-THAN NOR EQUAL TO + ("≮" ?\≮) ;; NOT LESS-THAN + ("⋪" ?\⋪) ;; NOT NORMAL SUBGROUP OF + ("⋬" ?\⋬) ;; NOT NORMAL SUBGROUP OF OR EQUAL TO + ("∤" ?\∤) ;; DOES NOT DIVIDE + ("¬" ?\¬) ;; NOT SIGN + ("∉" ?\∉) ;; NOT AN ELEMENT OF + ("∦" ?\∦) ;; NOT PARALLEL TO + ("⊀" ?\⊀) ;; DOES NOT PRECEDE + ("⪯̸" ?\⋠) ;; DOES NOT PRECEDE OR EQUAL + ("↛" ?\↛) ;; RIGHTWARDS ARROW WITH STROKE + ("⇏" ?\⇏) ;; RIGHTWARDS DOUBLE ARROW WITH STROKE + ("⋫" ?\⋫) ;; DOES NOT CONTAIN AS NORMAL SUBGROUP + ("⋭" ?\⋭) ;; DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL + ("⊁" ?\⊁) ;; DOES NOT SUCCEED + ("⪰̸" ?\⋡) ;; DOES NOT SUCCEED OR EQUAL + ("≁" ?\≁) ;; NOT TILDE + ("≄" ?\≄) ;; NOT ASYMPTOTICALLY EQUAL TO +;;; ("∤" ?\x????) ;; nshortmid ?\∤ + ("∦" ?\∦) ;; NOT PARALLEL TO + ("⊄" ?\⊄) ;; NOT A SUBSET OF + ("⫅̸" ?\⊈) ;; NEITHER A SUBSET OF NOR EQUAL TO + ("⊈" ?\⊈) ;; NEITHER A SUBSET OF NOR EQUAL TO + ("⊅" ?\⊅) ;; NOT A SUPERSET OF + ("⫆̸" ?\⊉) ;; NEITHER A SUPERSET OF NOR EQUAL TO + ("⊉" ?\⊉) ;; NEITHER A SUPERSET OF NOR EQUAL TO + ("Ñ" ?\Ñ) ;; LATIN CAPITAL LETTER N WITH TILDE + ("ñ" ?\ñ) ;; LATIN SMALL LETTER N WITH TILDE + ("Ν" ?\Ν) ;; GREEK CAPITAL LETTER NU + ("ν" ?\ν) ;; GREEK SMALL LETTER NU + ("#" ?\#) ;; NUMBER SIGN + ("№" ?\№) ;; NUMERO SIGN + (" " ?\ ) ;; FIGURE SPACE + ("⊬" ?\⊬) ;; DOES NOT PROVE + ("⊭" ?\⊭) ;; NOT TRUE + ("⊮" ?\⊮) ;; DOES NOT FORCE + ("⊯" ?\⊯) ;; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE + ("↖" ?\↖) ;; NORTH WEST ARROW + ("&Oacgr;" ?\Ό) ;; GREEK CAPITAL LETTER OMICRON WITH TONOS + ("&oacgr;" ?\ό) ;; GREEK SMALL LETTER OMICRON WITH TONOS + ("Ó" ?\Ó) ;; LATIN CAPITAL LETTER O WITH ACUTE + ("ó" ?\ó) ;; LATIN SMALL LETTER O WITH ACUTE + ("⊛" ?\⊛) ;; CIRCLED ASTERISK OPERATOR + ("⊚" ?\⊚) ;; CIRCLED RING OPERATOR + ("Ô" ?\Ô) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX + ("ô" ?\ô) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX + ("О" ?\О) ;; CYRILLIC CAPITAL LETTER O + ("о" ?\о) ;; CYRILLIC SMALL LETTER O + ("⊝" ?\⊝) ;; CIRCLED DASH + ("Ő" ?\Ő) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + ("ő" ?\ő) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE + ("⊙" ?\⊙) ;; CIRCLED DOT OPERATOR + ("Œ" ?\Œ) ;; LATIN CAPITAL LIGATURE OE + ("œ" ?\œ) ;; LATIN SMALL LIGATURE OE + ("˛" ?\˛) ;; OGONEK + ("&Ogr;" ?\Ο) ;; GREEK CAPITAL LETTER OMICRON + ("&ogr;" ?\ο) ;; GREEK SMALL LETTER OMICRON + ("Ò" ?\Ò) ;; LATIN CAPITAL LETTER O WITH GRAVE + ("ò" ?\ò) ;; LATIN SMALL LETTER O WITH GRAVE + ("&OHacgr;" ?\Ώ) ;; GREEK CAPITAL LETTER OMEGA WITH TONOS + ("&ohacgr;" ?\ώ) ;; GREEK SMALL LETTER OMEGA WITH TONOS + ("&OHgr;" ?\Ω) ;; GREEK CAPITAL LETTER OMEGA + ("&ohgr;" ?\ω) ;; GREEK SMALL LETTER OMEGA + ("Ω" ?\Ω) ;; OHM SIGN + ("↺" ?\↺) ;; ANTICLOCKWISE OPEN CIRCLE ARROW + ("‾" ?\‾) ;; OVERLINE + ("Ō" ?\Ō) ;; LATIN CAPITAL LETTER O WITH MACRON + ("ō" ?\ō) ;; LATIN SMALL LETTER O WITH MACRON + ("Ω" ?\Ω) ;; GREEK CAPITAL LETTER OMEGA + ("ω" ?\ω) ;; GREEK SMALL LETTER OMEGA + ("Ο" ?\Ο) ;; GREEK CAPITAL LETTER OMICRON + ("ο" ?\ο) ;; GREEK SMALL LETTER OMICRON + ("⊖" ?\⊖) ;; CIRCLED MINUS + ("⊕" ?\⊕) ;; CIRCLED PLUS + ("∨" ?\∨) ;; LOGICAL OR + ("↻" ?\↻) ;; CLOCKWISE OPEN CIRCLE ARROW + ("ℴ" ?\ℴ) ;; SCRIPT SMALL O + ("ª" ?\ª) ;; FEMININE ORDINAL INDICATOR + ("º" ?\º) ;; MASCULINE ORDINAL INDICATOR + ("Ⓢ" ?\Ⓢ) ;; CIRCLED LATIN CAPITAL LETTER S + ("Ø" ?\Ø) ;; LATIN CAPITAL LETTER O WITH STROKE + ("ø" ?\ø) ;; LATIN SMALL LETTER O WITH STROKE + ("⊘" ?\⊘) ;; CIRCLED DIVISION SLASH + ("Õ" ?\Õ) ;; LATIN CAPITAL LETTER O WITH TILDE + ("õ" ?\õ) ;; LATIN SMALL LETTER O WITH TILDE + ("⊗" ?\⊗) ;; CIRCLED TIMES + ("Ö" ?\Ö) ;; LATIN CAPITAL LETTER O WITH DIAERESIS + ("ö" ?\ö) ;; LATIN SMALL LETTER O WITH DIAERESIS + ("∥" ?\∥) ;; PARALLEL TO + ("¶" ?\¶) ;; PILCROW SIGN + ("∂" ?\∂) ;; PARTIAL DIFFERENTIAL + ("П" ?\П) ;; CYRILLIC CAPITAL LETTER PE + ("п" ?\п) ;; CYRILLIC SMALL LETTER PE + ("%" ?\%) ;; PERCENT SIGN + ("." ?\.) ;; FULL STOP + ("‰" ?\‰) ;; PER MILLE SIGN + ("⊥" ?\⊥) ;; UP TACK + ("&Pgr;" ?\Π) ;; GREEK CAPITAL LETTER PI + ("&pgr;" ?\π) ;; GREEK SMALL LETTER PI + ("&PHgr;" ?\Φ) ;; GREEK CAPITAL LETTER PHI + ("&phgr;" ?\φ) ;; GREEK SMALL LETTER PHI + ("φ" ?\φ) ;; GREEK SMALL LETTER PHI + ("Φ" ?\Φ) ;; GREEK CAPITAL LETTER PHI + ("&phis;" ?\φ) ;; GREEK SMALL LETTER PHI + ("ϕ" ?\ϕ) ;; GREEK PHI SYMBOL + ("ℳ" ?\ℳ) ;; SCRIPT CAPITAL M + ("☎" ?\☎) ;; BLACK TELEPHONE + ("Π" ?\Π) ;; GREEK CAPITAL LETTER PI + ("π" ?\π) ;; GREEK SMALL LETTER PI + ("ϖ" ?\ϖ) ;; GREEK PI SYMBOL + ("ℏ" ?\ℏ) ;; PLANCK CONSTANT OVER TWO PI + ("+" ?\+) ;; PLUS SIGN + ("⊞" ?\⊞) ;; SQUARED PLUS + ("∔" ?\∔) ;; DOT PLUS + ("±" ?\±) ;; PLUS-MINUS SIGN + ("£" ?\£) ;; POUND SIGN + ("≺" ?\≺) ;; PRECEDES +;;; ("⪷" ?\x????) ;; precedes, approximately equal to + ("⪯" ?\≼) ;; PRECEDES OR EQUAL TO + ("′" ?\′) ;; PRIME + ("″" ?\″) ;; DOUBLE PRIME +;;; ("⪹" 0x????) ;; precedes, not approximately equal to +;;; ("⪵" 0x????) ;; precedes, not double equal + ("⋨" ?\⋨) ;; PRECEDES BUT NOT EQUIVALENT TO + ("∏" ?\∏) ;; N-ARY PRODUCT + ("∝" ?\∝) ;; PROPORTIONAL TO + ("≾" ?\≾) ;; PRECEDES OR EQUIVALENT TO + ("&PSgr;" ?\Ψ) ;; GREEK CAPITAL LETTER PSI + ("&psgr;" ?\ψ) ;; GREEK SMALL LETTER PSI + ("Ψ" ?\Ψ) ;; GREEK CAPITAL LETTER PSI + ("ψ" ?\ψ) ;; GREEK SMALL LETTER PSI + (" " ?\ ) ;; PUNCTUATION SPACE + ("?" ?\?) ;; QUESTION MARK + (""" ?\") ;; QUOTATION MARK + ("⇛" ?\⇛) ;; RIGHTWARDS TRIPLE ARROW + ("Ŕ" ?\Ŕ) ;; LATIN CAPITAL LETTER R WITH ACUTE + ("ŕ" ?\ŕ) ;; LATIN SMALL LETTER R WITH ACUTE + ("√" ?\√) ;; SQUARE ROOT + ("⟩" ?\〉) ;; RIGHT-POINTING ANGLE BRACKET + ("»" ?\») ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + ("↠" ?\↠) ;; RIGHTWARDS TWO HEADED ARROW + ("→" ?\→) ;; RIGHTWARDS ARROW + ("⇒" ?\⇒) ;; RIGHTWARDS DOUBLE ARROW + ("&rarr2;" ?\⇉) ;; RIGHTWARDS PAIRED ARROWS + ("↪" ?\↪) ;; RIGHTWARDS ARROW WITH HOOK + ("↬" ?\↬) ;; RIGHTWARDS ARROW WITH LOOP + ("↣" ?\↣) ;; RIGHTWARDS ARROW WITH TAIL + ("↝" ?\↝) ;; RIGHTWARDS WAVE ARROW + ("Ř" ?\Ř) ;; LATIN CAPITAL LETTER R WITH CARON + ("ř" ?\ř) ;; LATIN SMALL LETTER R WITH CARON + ("Ŗ" ?\Ŗ) ;; LATIN CAPITAL LETTER R WITH CEDILLA + ("ŗ" ?\ŗ) ;; LATIN SMALL LETTER R WITH CEDILLA + ("⌉" ?\⌉) ;; RIGHT CEILING + ("}" ?\}) ;; RIGHT CURLY BRACKET + ("Р" ?\Р) ;; CYRILLIC CAPITAL LETTER ER + ("р" ?\р) ;; CYRILLIC SMALL LETTER ER + ("”" ?\”) ;; RIGHT DOUBLE QUOTATION MARK + ("”" ?\“) ;; LEFT DOUBLE QUOTATION MARK + ("ℜ" ?\ℜ) ;; BLACK-LETTER CAPITAL R + ("▭" ?\▭) ;; WHITE RECTANGLE + ("®" ?\®) ;; REGISTERED SIGN + ("⌋" ?\⌋) ;; RIGHT FLOOR + ("&Rgr;" ?\Ρ) ;; GREEK CAPITAL LETTER RHO + ("&rgr;" ?\ρ) ;; GREEK SMALL LETTER RHO + ("⇁" ?\⇁) ;; RIGHTWARDS HARPOON WITH BARB DOWNWARDS + ("⇀" ?\⇀) ;; RIGHTWARDS HARPOON WITH BARB UPWARDS + ("Ρ" ?\Ρ) ;; GREEK CAPITAL LETTER RHO + ("ρ" ?\ρ) ;; GREEK SMALL LETTER RHO + ("ϱ" ?\ϱ) ;; GREEK RHO SYMBOL + ("˚" ?\˚) ;; RING ABOVE + ("&rlarr2;" ?\⇄) ;; RIGHTWARDS ARROW OVER LEFTWARDS ARROW + ("&rlhar2;" ?\⇌) ;; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON + ("‏" ?\) ;; RIGHT-TO-LEFT MARK + (")" ?\)) ;; RIGHT PARENTHESIS +;;; ("⦔" ?\x????) ;; right parenthesis, greater-than + ("›" ?\›) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + ("↱" ?\↱) ;; UPWARDS ARROW WITH TIP RIGHTWARDS + ("]" ?\]) ;; RIGHT SQUARE BRACKET + ("’" ?\’) ;; RIGHT SINGLE QUOTATION MARK + ("’" ?\‘) ;; LEFT SINGLE QUOTATION MARK + ("⋌" ?\⋌) ;; RIGHT SEMIDIRECT PRODUCT + ("⋊" ?\⋊) ;; RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT + ("▹" ?\▹) ;; WHITE RIGHT-POINTING SMALL TRIANGLE + ("⊵" ?\⊵) ;; CONTAINS AS NORMAL SUBGROUP OR EQUAL TO + ("▸" ?\▸) ;; BLACK RIGHT-POINTING SMALL TRIANGLE + ("℞" ?\℞) ;; PRESCRIPTION TAKE + ("Ś" ?\Ś) ;; LATIN CAPITAL LETTER S WITH ACUTE + ("ś" ?\ś) ;; LATIN SMALL LETTER S WITH ACUTE + ("&samalg;" ?\∐) ;; N-ARY COPRODUCT + ("‚" ?\‚) ;; SINGLE LOW-9 QUOTATION MARK + ("&sbsol;" ?\\) ;; REVERSE SOLIDUS + ("≻" ?\≻) ;; SUCCEEDS +;;; ("⪸" ?\x????) ;; succeeds, approximately equal to + ("Š" ?\Š) ;; LATIN CAPITAL LETTER S WITH CARON + ("š" ?\š) ;; LATIN SMALL LETTER S WITH CARON + ("≽" ?\≽) ;; SUCCEEDS OR EQUAL TO + ("⪰" ?\≽) ;; SUCCEEDS OR EQUAL TO + ("Ş" ?\Ş) ;; LATIN CAPITAL LETTER S WITH CEDILLA + ("ş" ?\ş) ;; LATIN SMALL LETTER S WITH CEDILLA + ("Ŝ" ?\Ŝ) ;; LATIN CAPITAL LETTER S WITH CIRCUMFLEX + ("ŝ" ?\ŝ) ;; LATIN SMALL LETTER S WITH CIRCUMFLEX +;;; ("⪺" ?\x????) ;; succeeds, not approximately equal to +;;; ("⪶" ?\x????) ;; succeeds, not double equals + ("⋩" ?\⋩) ;; SUCCEEDS BUT NOT EQUIVALENT TO + ("≿" ?\≿) ;; SUCCEEDS OR EQUIVALENT TO + ("С" ?\С) ;; CYRILLIC CAPITAL LETTER ES + ("с" ?\с) ;; CYRILLIC SMALL LETTER ES + ("⋅" ?\⋅) ;; DOT OPERATOR + ("⊡" ?\⊡) ;; SQUARED DOT OPERATOR + ("§" ?\§) ;; SECTION SIGN + (";" ?\;) ;; SEMICOLON + ("∖" ?\∖) ;; SET MINUS + ("✶" ?\✶) ;; SIX POINTED BLACK STAR + ("&sfgr;" ?\ς) ;; GREEK SMALL LETTER FINAL SIGMA + ("⌢" ?\⌢) ;; FROWN + ("&Sgr;" ?\Σ) ;; GREEK CAPITAL LETTER SIGMA + ("&sgr;" ?\σ) ;; GREEK SMALL LETTER SIGMA + ("♯" ?\♯) ;; MUSIC SHARP SIGN + ("Щ" ?\Щ) ;; CYRILLIC CAPITAL LETTER SHCHA + ("щ" ?\щ) ;; CYRILLIC SMALL LETTER SHCHA + ("Ш" ?\Ш) ;; CYRILLIC CAPITAL LETTER SHA + ("ш" ?\ш) ;; CYRILLIC SMALL LETTER SHA + ("­" ?\) ;; SOFT HYPHEN + ("Σ" ?\Σ) ;; GREEK CAPITAL LETTER SIGMA + ("σ" ?\σ) ;; GREEK SMALL LETTER SIGMA + ("ς" ?\ς) ;; GREEK SMALL LETTER FINAL SIGMA + ("ς" ?\ς) ;; GREEK SMALL LETTER FINAL SIGMA + ("∼" ?\∼) ;; TILDE OPERATOR + ("≃" ?\≃) ;; ASYMPTOTICALLY EQUAL TO +;;; ("∣" ?\x????) ;; shortmid ?\∤ + ("⌣" ?\⌣) ;; SMILE + ("Ь" ?\Ь) ;; CYRILLIC CAPITAL LETTER SOFT SIGN + ("ь" ?\ь) ;; CYRILLIC SMALL LETTER SOFT SIGN + ("/" ?\/) ;; SOLIDUS + ("♠" ?\♠) ;; BLACK SPADE SUIT + ("∥" ?\∥) ;; PARALLEL TO + ("⊓" ?\⊓) ;; SQUARE CAP + ("⊔" ?\⊔) ;; SQUARE CUP + ("⊏" ?\⊏) ;; SQUARE IMAGE OF + ("⊑" ?\⊑) ;; SQUARE IMAGE OF OR EQUAL TO + ("⊐" ?\⊐) ;; SQUARE ORIGINAL OF + ("⊒" ?\⊒) ;; SQUARE ORIGINAL OF OR EQUAL TO + ("□" ?\□) ;; WHITE SQUARE + ("□" ?\□) ;; WHITE SQUARE + ("▪" ?\▪) ;; BLACK SMALL SQUARE + ("∖" ?\∖) ;; SET MINUS + ("⌣" ?\⌣) ;; SMILE + ("⋆" ?\⋆) ;; STAR OPERATOR + ("☆" ?\☆) ;; WHITE STAR + ("★" ?\★) ;; BLACK STAR + ("⋐" ?\⋐) ;; DOUBLE SUBSET + ("⊂" ?\⊂) ;; SUBSET OF + ("⫅" ?\⊆) ;; SUBSET OF OR EQUAL TO + ("⊆" ?\⊆) ;; SUBSET OF OR EQUAL TO + ("⫋" ?\⊊) ;; SUBSET OF WITH NOT EQUAL TO + ("⊊" ?\⊊) ;; SUBSET OF WITH NOT EQUAL TO + ("∑" ?\∑) ;; N-ARY SUMMATION + ("♪" ?\♪) ;; EIGHTH NOTE + ("⋑" ?\⋑) ;; DOUBLE SUPERSET + ("⊃" ?\⊃) ;; SUPERSET OF + ("¹" ?\¹) ;; SUPERSCRIPT ONE + ("²" ?\²) ;; SUPERSCRIPT TWO + ("³" ?\³) ;; SUPERSCRIPT THREE + ("⫆" ?\⊇) ;; SUPERSET OF OR EQUAL TO + ("⊇" ?\⊇) ;; SUPERSET OF OR EQUAL TO + ("⫌" ?\⊋) ;; SUPERSET OF WITH NOT EQUAL TO + ("⊋" ?\⊋) ;; SUPERSET OF WITH NOT EQUAL TO + ("ß" ?\ß) ;; LATIN SMALL LETTER SHARP S + ("⌖" ?\⌖) ;; POSITION INDICATOR + ("Τ" ?\Τ) ;; GREEK CAPITAL LETTER TAU + ("τ" ?\τ) ;; GREEK SMALL LETTER TAU + ("Ť" ?\Ť) ;; LATIN CAPITAL LETTER T WITH CARON + ("ť" ?\ť) ;; LATIN SMALL LETTER T WITH CARON + ("Ţ" ?\Ţ) ;; LATIN CAPITAL LETTER T WITH CEDILLA + ("ţ" ?\ţ) ;; LATIN SMALL LETTER T WITH CEDILLA + ("Т" ?\Т) ;; CYRILLIC CAPITAL LETTER TE + ("т" ?\т) ;; CYRILLIC SMALL LETTER TE + ("⃛" ?\⃛) ;; COMBINING THREE DOTS ABOVE + ("⌕" ?\⌕) ;; TELEPHONE RECORDER + ("&Tgr;" ?\Τ) ;; GREEK CAPITAL LETTER TAU + ("&tgr;" ?\τ) ;; GREEK SMALL LETTER TAU + ("∴" ?\∴) ;; THEREFORE + ("θ" ?\θ) ;; GREEK SMALL LETTER THETA + ("Θ" ?\Θ) ;; GREEK CAPITAL LETTER THETA + ("&thetas;" ?\θ) ;; GREEK SMALL LETTER THETA + ("ϑ" ?\ϑ) ;; GREEK THETA SYMBOL + ("ϑ" ?\ϑ) ;; GREEK THETA SYMBOL + ("&THgr;" ?\Θ) ;; GREEK CAPITAL LETTER THETA + ("&thgr;" ?\θ) ;; GREEK SMALL LETTER THETA + (" " ?\ ) ;; THIN SPACE + ("≈" ?\≈) ;; ALMOST EQUAL TO + ("∼" ?\∼) ;; TILDE OPERATOR + ("Þ" ?\Þ) ;; LATIN CAPITAL LETTER THORN + ("þ" ?\þ) ;; LATIN SMALL LETTER THORN + ("˜" ?\˜) ;; SMALL TILDE + ("×" ?\×) ;; MULTIPLICATION SIGN + ("⊠" ?\⊠) ;; SQUARED TIMES + ("⊤" ?\⊤) ;; DOWN TACK + ("‴" ?\‴) ;; TRIPLE PRIME + ("™" ?\™) ;; TRADE MARK SIGN + ("≜" ?\≜) ;; DELTA EQUAL TO + ("Ц" ?\Ц) ;; CYRILLIC CAPITAL LETTER TSE + ("ц" ?\ц) ;; CYRILLIC SMALL LETTER TSE + ("Ћ" ?\Ћ) ;; CYRILLIC CAPITAL LETTER TSHE + ("ћ" ?\ћ) ;; CYRILLIC SMALL LETTER TSHE + ("Ŧ" ?\Ŧ) ;; LATIN CAPITAL LETTER T WITH STROKE + ("ŧ" ?\ŧ) ;; LATIN SMALL LETTER T WITH STROKE + ("≬" ?\≬) ;; BETWEEN + ("&Uacgr;" ?\Ύ) ;; GREEK CAPITAL LETTER UPSILON WITH TONOS + ("&uacgr;" ?\ύ) ;; GREEK SMALL LETTER UPSILON WITH TONOS + ("Ú" ?\Ú) ;; LATIN CAPITAL LETTER U WITH ACUTE + ("ú" ?\ú) ;; LATIN SMALL LETTER U WITH ACUTE + ("⇑" ?\⇑) ;; UPWARDS DOUBLE ARROW + ("↑" ?\↑) ;; UPWARDS ARROW + ("&uarr2;" ?\⇈) ;; UPWARDS PAIRED ARROWS + ("Ў" ?\Ў) ;; CYRILLIC CAPITAL LETTER SHORT U + ("ў" ?\ў) ;; CYRILLIC SMALL LETTER SHORT U + ("Ŭ" ?\Ŭ) ;; LATIN CAPITAL LETTER U WITH BREVE + ("ŭ" ?\ŭ) ;; LATIN SMALL LETTER U WITH BREVE + ("Û" ?\Û) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX + ("û" ?\û) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX + ("У" ?\У) ;; CYRILLIC CAPITAL LETTER U + ("у" ?\у) ;; CYRILLIC SMALL LETTER U + ("Ű" ?\Ű) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + ("ű" ?\ű) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE + ("&udiagr;" ?\ΰ) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + ("&Udigr;" ?\Ϋ) ;; GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + ("&udigr;" ?\ϋ) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA + ("&Ugr;" ?\Υ) ;; GREEK CAPITAL LETTER UPSILON + ("&ugr;" ?\υ) ;; GREEK SMALL LETTER UPSILON + ("Ù" ?\Ù) ;; LATIN CAPITAL LETTER U WITH GRAVE + ("ù" ?\ù) ;; LATIN SMALL LETTER U WITH GRAVE + ("↿" ?\↿) ;; UPWARDS HARPOON WITH BARB LEFTWARDS + ("↾" ?\↾) ;; UPWARDS HARPOON WITH BARB RIGHTWARDS + ("▀" ?\▀) ;; UPPER HALF BLOCK + ("⌜" ?\⌜) ;; TOP LEFT CORNER + ("⌏" ?\⌏) ;; TOP LEFT CROP + ("Ū" ?\Ū) ;; LATIN CAPITAL LETTER U WITH MACRON + ("ū" ?\ū) ;; LATIN SMALL LETTER U WITH MACRON + ("¨" ?\¨) ;; DIAERESIS + ("Ų" ?\Ų) ;; LATIN CAPITAL LETTER U WITH OGONEK + ("ų" ?\ų) ;; LATIN SMALL LETTER U WITH OGONEK + ("⊎" ?\⊎) ;; MULTISET UNION + ("ϒ" ?\Υ) ;; GREEK CAPITAL LETTER UPSILON + ("υ" ?\υ) ;; GREEK SMALL LETTER UPSILON + ("ϒ" ?\ϒ) ;; GREEK UPSILON WITH HOOK SYMBOL + ("Υ" ?\Υ) ;; GREEK CAPITAL LETTER UPSILON + ("υ" ?\υ) ;; GREEK SMALL LETTER UPSILON + ("⌝" ?\⌝) ;; TOP RIGHT CORNER + ("⌎" ?\⌎) ;; TOP RIGHT CROP + ("Ů" ?\Ů) ;; LATIN CAPITAL LETTER U WITH RING ABOVE + ("ů" ?\ů) ;; LATIN SMALL LETTER U WITH RING ABOVE + ("Ũ" ?\Ũ) ;; LATIN CAPITAL LETTER U WITH TILDE + ("ũ" ?\ũ) ;; LATIN SMALL LETTER U WITH TILDE + ("▵" ?\▵) ;; WHITE UP-POINTING SMALL TRIANGLE + ("▴" ?\▴) ;; BLACK UP-POINTING SMALL TRIANGLE + ("Ü" ?\Ü) ;; LATIN CAPITAL LETTER U WITH DIAERESIS + ("ü" ?\ü) ;; LATIN SMALL LETTER U WITH DIAERESIS + ("↕" ?\↕) ;; UP DOWN ARROW + ("⇕" ?\⇕) ;; UP DOWN DOUBLE ARROW + ("В" ?\В) ;; CYRILLIC CAPITAL LETTER VE + ("в" ?\в) ;; CYRILLIC SMALL LETTER VE + ("⊢" ?\⊢) ;; RIGHT TACK + ("⊨" ?\⊨) ;; TRUE + ("⊩" ?\⊩) ;; FORCES + ("⊻" ?\⊻) ;; XOR + ("⋮" ?\⋮) ;; VERTICAL ELLIPSIS + ("|" ?\|) ;; VERTICAL LINE + ("‖" ?\‖) ;; DOUBLE VERTICAL LINE + ("⊲" ?\⊲) ;; NORMAL SUBGROUP OF + ("&vprime;" ?\′) ;; PRIME + ("∝" ?\∝) ;; PROPORTIONAL TO + ("⊳" ?\⊳) ;; CONTAINS AS NORMAL SUBGROUP + ("⫋︀" ?\⊊) ;; SUBSET OF WITH NOT EQUAL TO + ("⊊︀" ?\⊊) ;; SUBSET OF WITH NOT EQUAL TO + ("⊋︀" ?\⊋) ;; SUPERSET OF WITH NOT EQUAL TO + ("⫌︀" ?\⊋) ;; SUPERSET OF WITH NOT EQUAL TO + ("⊪" ?\⊪) ;; TRIPLE VERTICAL BAR RIGHT TURNSTILE + ("Ŵ" ?\Ŵ) ;; LATIN CAPITAL LETTER W WITH CIRCUMFLEX + ("ŵ" ?\ŵ) ;; LATIN SMALL LETTER W WITH CIRCUMFLEX + ("≙" ?\≙) ;; ESTIMATES + ("℘" ?\℘) ;; SCRIPT CAPITAL P + ("≀" ?\≀) ;; WREATH PRODUCT + ("◯" ?\○) ;; WHITE CIRCLE + ("▽" ?\▽) ;; WHITE DOWN-POINTING TRIANGLE + ("&Xgr;" ?\Ξ) ;; GREEK CAPITAL LETTER XI + ("&xgr;" ?\ξ) ;; GREEK SMALL LETTER XI + ("⟺" ?\↔) ;; LEFT RIGHT ARROW + ("⟷" ?\↔) ;; LEFT RIGHT ARROW + ("Ξ" ?\Ξ) ;; GREEK CAPITAL LETTER XI + ("ξ" ?\ξ) ;; GREEK SMALL LETTER XI + ("⟸" ?\⇐) ;; LEFTWARDS DOUBLE ARROW + ("⟹" ?\⇒) ;; RIGHTWARDS DOUBLE ARROW + ("△" ?\△) ;; WHITE UP-POINTING TRIANGLE + ("Ý" ?\Ý) ;; LATIN CAPITAL LETTER Y WITH ACUTE + ("ý" ?\ý) ;; LATIN SMALL LETTER Y WITH ACUTE + ("Я" ?\Я) ;; CYRILLIC CAPITAL LETTER YA + ("я" ?\я) ;; CYRILLIC SMALL LETTER YA + ("Ŷ" ?\Ŷ) ;; LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + ("ŷ" ?\ŷ) ;; LATIN SMALL LETTER Y WITH CIRCUMFLEX + ("Ы" ?\Ы) ;; CYRILLIC CAPITAL LETTER YERU + ("ы" ?\ы) ;; CYRILLIC SMALL LETTER YERU + ("¥" ?\¥) ;; YEN SIGN + ("Ї" ?\Ї) ;; CYRILLIC CAPITAL LETTER YI + ("ї" ?\ї) ;; CYRILLIC SMALL LETTER YI + ("Ю" ?\Ю) ;; CYRILLIC CAPITAL LETTER YU + ("ю" ?\ю) ;; CYRILLIC SMALL LETTER YU + ("ÿ" ?\ÿ) ;; LATIN SMALL LETTER Y WITH DIAERESIS + ("Ÿ" ?\Ÿ) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS + ("Ź" ?\Ź) ;; LATIN CAPITAL LETTER Z WITH ACUTE + ("ź" ?\ź) ;; LATIN SMALL LETTER Z WITH ACUTE + ("Ž" ?\Ž) ;; LATIN CAPITAL LETTER Z WITH CARON + ("ž" ?\ž) ;; LATIN SMALL LETTER Z WITH CARON + ("З" ?\З) ;; CYRILLIC CAPITAL LETTER ZE + ("з" ?\з) ;; CYRILLIC SMALL LETTER ZE + ("Ż" ?\Ż) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE + ("ż" ?\ż) ;; LATIN SMALL LETTER Z WITH DOT ABOVE + ("Ζ" ?\Ζ) ;; GREEK CAPITAL LETTER ZETA + ("ζ" ?\ζ) ;; GREEK SMALL LETTER ZETA + ("&Zgr;" ?\Ζ) ;; GREEK CAPITAL LETTER ZETA + ("&zgr;" ?\ζ) ;; GREEK SMALL LETTER ZETA + ("Ж" ?\Ж) ;; CYRILLIC CAPITAL LETTER ZHE + ("ж" ?\ж) ;; CYRILLIC SMALL LETTER ZHE + ("‍" ?\) ;; ZERO WIDTH JOINER + ("‌" ?\) ;; ZERO WIDTH NON-JOINER +) + +;;; sgml-input.el ends here diff --git a/lisp/leim/quail/sisheng.el b/lisp/leim/quail/sisheng.el new file mode 100644 index 00000000000..2717ce50768 --- /dev/null +++ b/lisp/leim/quail/sisheng.el @@ -0,0 +1,293 @@ +;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration + +;; Copyright (C) 2004-2013 Free Software Foundation, Inc. + +;; Author: Werner LEMBERG <wl@gnu.org> + +;; Keywords: multilingual, input method, Chinese, pinyin, sisheng + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(defconst sisheng-regexp + "[āēīōūǖ]\\|üē") + +;; First element is the key, +;; second element is the vowel used for the input sequence, +;; last four elements are the resulting tones. +;; +(defconst sisheng-vowel-table + '(("ā" "a" "ā" "á" "ǎ" "à") + ("ē" "e" "ē" "é" "ě" "è") + ("ī" "i" "ī" "í" "ǐ" "ì") + ("ō" "o" "ō" "ó" "ǒ" "ò") + ("ū" "u" "ū" "ú" "ǔ" "ù") + ("ǖ" "v" "ǖ" "ǘ" "ǚ" "ǜ") + ("üē" "ve" "üē" "üé" "üě" "üè"))) + + +;; All possible syllables in Mandarin Chinese, presented in the first +;; tone. Note that make-sisheng-rules always constructs rules for all +;; four tones even if some of those tones aren't used in Mandarin. +;; +(defconst sisheng-syllable-table + '("ā" "āi" "ān" "āng" "āo" + + "bā" "bāi" "bān" "bāng" "bāo" + "bēi" "bēn" "bēng" + "bī" "biān" "biāo" "biē" "bīn" "bīng" + "bō" + "bū" + + "cā" "cāi" "cān" "cāng" "cāo" + "cē" "cēn" "cēng" + "cī" + "cōng" "cōu" + "cū" "cuān" "cuī" "cūn" "cuō" + + "chā" "chāi" "chān" "chāng" "chāo" + "chē" "chēn" "chēng" + "chī" + "chōng" "chōu" + "chū" "chuā" "chuāi" "chuān" "chuāng" "chuī" "chūn" "chuō" + + "dā" "dāi" "dān" "dāng" "dāo" + "dē" "dēi" "dēn" "dēng" + "dī" "diān" "diāo" "diē" "dīng" "diū" + "dōng" "dōu" + "dū" "duān" "duī" "dūn" "duō" + + "ē" "ēi" "ēn" "ēng" "ēr" + + "fā" "fān" "fāng" + "fēi" "fēn" "fēng" + "fiāo" + "fō" "fōu" + "fū" + + "gā" "gāi" "gān" "gāng" "gāo" + "gē" "gēi" "gēn" "gēng" + "gōng" "gōu" + "gū" "guā" "guāi" "guān" "guāng" "guī" "gūn" "guō" + + "hā" "hāi" "hān" "hāng" "hāo" + "hē" "hēi" "hēn" "hēng" + "hōng" "hōu" + "hū" "huā" "huāi" "huān" "huāng" "huī" "hūn" "huō" + + "jī" "jiā" "jiān" "jiāng" "jiāo" "jiē" "jīn" "jīng" "jiōng" "jiū" + "jū" "juān" "juē" "jūn" + + "kā" "kāi" "kān" "kāng" "kāo" + "kē" "kēi" "kēn" "kēng" + "kōng" "kōu" + "kū" "kuā" "kuāi" "kuān" "kuāng" "kuī" "kūn" "kuō" + + "lā" "lāi" "lān" "lāng" "lāo" + "lē" "lēi" "lēng" + "lī" "liā" "liān" "liāng" "liāo" "liē" "līn" "līng" "liū" + "lōng" "lōu" + "lū" "luān" "lūn" "luō" + "lǖ" "lüē" + + "mā" "māi" "mān" "māng" "māo" + "mē" "mēi" "mēn" "mēng" + "mī" "miān" "miāo" "miē" "mīn" "mīng" "miū" + "mō" "mōu" + "mū" + + "nā" "nāi" "nān" "nāng" "nāo" + "nē" "nēi" "nēn" "nēng" + "nī" "niān" "niāng" "niāo" "niē" "nīn" "nīng" "niū" + "nōng" "nōu" + "nū" "nuān" "nuō" + "nǖ" "nüē" + + "ō" "ōu" + + "pā" "pāi" "pān" "pāng" "pāo" + "pēi" "pēn" "pēng" + "pī" "piān" "piāo" "piē" "pīn" "pīng" + "pō" "pōu" + "pū" + + "qī" "qiā" "qiān" "qiāng" "qiāo" "qiē" "qīn" "qīng" "qiōng" "qiū" + "qū" "quān" "quē" "qūn" + + "rān" "rāng" "rāo" + "rē" "rēn" "rēng" + "rī" + "rōng" "rōu" + "rū" "ruā" "ruān" "ruī" "rūn" "ruō" + + "sā" "sāi" "sān" "sāng" "sāo" + "sē" "sēn" "sēng" + "sī" + "sōng" "sōu" + "sū" "suān" "suī" "sūn" "suō" + + "shā" "shāi" "shān" "shāng" "shāo" + "shē" "shēi" "shēn" "shēng" + "shī" + "shōu" + "shū" "shuā" "shuāi" "shuān" "shuāng" "shuī" "shūn" "shuō" + + "tā" "tāi" "tān" "tāng" "tāo" + "tē" "tēi" "tēng" + "tī" "tiān" "tiāo" "tiē" "tīng" + "tōng" "tōu" + "tū" "tuān" "tuī" "tūn" "tuō" + + "wā" "wāi" "wān" "wāng" + "wēi" "wēn" "wēng" + "wō" + "wū" + + "xī" "xiā" "xiān" "xiāng" "xiāo" "xiē" "xīn" "xīng" "xiōng" "xiū" + "xū" "xuān" "xuē" "xūn" + + "yā" "yān" "yāng" "yāo" + "yē" + "yī" "yīn" "yīng" + "yō" "yōng" "yōu" + "yū" "yuān" "yuē" "yūn" + + "zā" "zāi" "zān" "zāng" "zāo" + "zē" "zēi" "zēn" "zēng" + "zī" + "zōng" "zōu" + "zū" "zuān" "zuī" "zūn" "zuō" + + "zhā" "zhāi" "zhān" "zhāng" "zhāo" + "zhē" "zhēi" "zhēn" "zhēng" + "zhī" + "zhōng" "zhōu" + "zhū" "zhuā" "zhuāi" "zhuān" "zhuāng" "zhuī" "zhūn" "zhuō")) + +;; This function converts e.g. +;; +;; "zhuō" +;; +;; into +;; +;; (("zhuo4" ["zhuò"]) +;; ("zhuo3" ["zhuǒ"]) +;; ("zhuo2" ["zhuó"]) +;; ("zhuo1" ["zhuō"])) +;; +(defun quail-make-sisheng-rules (syllable) + (let ((case-fold-search t) + vowel-match + vowel-list + input-vowel + base-key + key + value + key-value-list + (i 1)) + (string-match sisheng-regexp syllable) + (setq vowel-match (downcase (match-string 0 syllable))) + (setq vowel-list + (cdr (assoc-string vowel-match sisheng-vowel-table))) + (setq input-vowel (car vowel-list)) + (setq base-key (replace-match input-vowel nil nil syllable)) + (while (<= i 4) + (setq key (concat base-key (number-to-string i))) + (setq value (vector (replace-match (nth i vowel-list) nil nil syllable))) + (push (list key value) key-value-list) + (setq i (1+ i))) + key-value-list)) + +;; Set up sisheng input method. +;; +(quail-define-package + "chinese-sisheng" ; name + "Chinese" ; language + "ǚ" ; title + t ; guidance + "Sìshēng input method for pīnyīn transliteration of Chinese. + +Examples: shuang1 -> shuāng + Lv3 -> Lǚ + AN4 -> ÀN + +Use the fifth (unstressed) tone for syllables containing `ü' +without a tone mark. + +Example: nve5 -> nüe +" ; docstring + nil ; translation-keys + t ; forget-last-selection + nil ; deterministic + nil ; kbd-translate + nil ; show-layout + nil ; create-decode-map + nil ; maximum-shortest + nil ; overlay-plist + nil ; update-translation-function + nil ; conversion-keys + t ; simple + ) + +;; Call quail-make-sisheng-rules for all syllables in sisheng-syllable-table. +;; +(let ((case-table-save (current-case-table)) + sisheng-list) + (set-case-table (standard-case-table)) + (dolist (syllable sisheng-syllable-table) + (setq sisheng-list + (append (quail-make-sisheng-rules syllable) + sisheng-list))) + + (dolist (syllable sisheng-syllable-table) + (setq sisheng-list + (append (quail-make-sisheng-rules (upcase-initials syllable)) + sisheng-list))) + + (dolist (syllable sisheng-syllable-table) + (setq sisheng-list + (append (quail-make-sisheng-rules (upcase syllable)) + sisheng-list))) + + (eval `(quail-define-rules + ,@sisheng-list + + ("lv5" ["lü"]) + ("lve5" ["lüe"]) + ("nv5" ["nü"]) + ("nve5" ["nüe"]) + + ("Lv5" ["Lü"]) + ("Lve5" ["Lüe"]) + ("Nv5" ["Nü"]) + ("Nve5" ["Nüe"]) + + ("LV5" ["LÜ"]) + ("LVE5" ["LÜE"]) + ("NV5" ["NÜ"]) + ("NVE5" ["NÜE"]))) + (set-case-table case-table-save)) + +;; Local Variables: +;; coding: utf-8 +;; End: + +;;; sisheng.el ends here diff --git a/lisp/leim/quail/slovak.el b/lisp/leim/quail/slovak.el new file mode 100644 index 00000000000..10d111421cc --- /dev/null +++ b/lisp/leim/quail/slovak.el @@ -0,0 +1,479 @@ +;;; slovak.el --- Quail package for inputting Slovak -*-coding: utf-8;-*- + +;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc. + +;; Authors: Tibor Šimko <tibor.simko@fmph.uniba.sk> +;; Milan Zamazal <pdm@zamazal.org> +;; Maintainer: Pavel Janík <Pavel@Janik.cz> +;; Keywords: i18n, multilingual, input method, Slovak + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file defines the following Slovak keyboards: +;; - standard Slovak keyboard +;; - three Slovak keyboards for programmers + +;;; Code: + +(require 'quail) + + +(quail-define-package + "slovak" "Slovak" "SK" t + "Standard Slovak keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?+) + ("2" ?ľ) + ("3" ?š) + ("4" ?č) + ("5" ?ť) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("!" ?1) + ("@" ?2) + ("#" ?3) + ("$" ?4) + ("%" ?5) + ("^" ?6) + ("&" ?7) + ("*" ?8) + ("(" ?9) + (")" ?0) + ("-" ?=) + ("_" ?%) + ("=" ?') + ("[" ?ú) + ("{" ?/) + ("]" ?ä) + ("}" ?\() + ("\\" ?ň) + ("|" ?\)) + (";" ?ô) + (":" ?\") + ("'" ?§) + ("\"" ?!) + ("<" ??) + (">" ?:) + ("/" ?-) + ("?" ?_) + ("`" ?\;) + ("~" ?^) + ("y" ?z) + ("z" ?y) + ("Y" ?Z) + ("Z" ?Y) + ("=a" ?á) + ("+a" ?ä) + ("+=a" ?ä) + ("+c" ?č) + ("+d" ?ď) + ("=e" ?é) + ("+e" ?ě) + ("=i" ?í) + ("=l" ?ĺ) + ("+l" ?ľ) + ("+n" ?ň) + ("=o" ?ó) + ("+o" ?ô) + ("~o" ?ô) + ("+=o" ?ö) + ("=r" ?ŕ) + ("+r" ?ř) + ("=s" ?ß) + ("+s" ?š) + ("+t" ?ť) + ("=u" ?ú) + ("+u" ?ů) + ("+=u" ?ü) + ("=z" ?ý) + ("+y" ?ž) + ("=A" ?Á) + ("+A" ?Ä) + ("+=A" ?Ä) + ("+C" ?Č) + ("+D" ?Ď) + ("=E" ?É) + ("+E" ?Ě) + ("=I" ?Í) + ("=L" ?Ĺ) + ("+L" ?Ľ) + ("+N" ?Ň) + ("=O" ?Ó) + ("+O" ?Ô) + ("~O" ?Ô) + ("+=O" ?Ö) + ("=R" ?Ŕ) + ("+R" ?Ř) + ("=S" ?ß) + ("+S" ?Š) + ("+T" ?Ť) + ("=U" ?Ú) + ("+U" ?Ů) + ("+=U" ?Ü) + ("=Z" ?Ý) + ("+Y" ?Ž) + ("=q" ?`) + ("=2" ?@) + ("=3" ?#) + ("=4" ?$) + ("=5" ?%) + ("=6" ?^) + ("=7" ?&) + ("=8" ?*) + ("=9" ?\() + ("=0" ?\)) + ("+1" ?!) + ("+2" ?@) + ("+3" ?#) + ("+4" ?$) + ("+5" ?%) + ("+6" ?^) + ("+7" ?&) + ("+8" ?*) + ("+9" ?\() + ("+0" ?\)) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + + +(quail-define-package + "slovak-prog-1" "Slovak" "SK" t + "Slovak (non-standard) keyboard for programmers #1. + +All digits except of `1' are replaced by Slovak characters as on the standard +Slovak keyboard. +Dead keys are on `[', `[[', and `[[['. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("[[[[" ?\[) + ("2" ?ľ) + ("3" ?š) + ("4" ?č) + ("5" ?ť) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("[a" ?á) + ("[[a" ?ä) + ("[[[a" ?ä) + ("[c" ?č) + ("[[c" ?č) + ("[d" ?ď) + ("[[d" ?ď) + ("[e" ?é) + ("[[e" ?ě) + ("[i" ?í) + ("[l" ?ĺ) + ("[[l" ?ľ) + ("[n" ?ň) + ("[[n" ?ň) + ("[o" ?ó) + ("[[o" ?ô) + ("[[[o" ?ö) + ("[r" ?ŕ) + ("[[r" ?ř) + ("[s" ?š) + ("[[s" ?š) + ("[[[s" ?ß) + ("[t" ?ť) + ("[[t" ?ť) + ("[u" ?ú) + ("[[u" ?ů) + ("[[[u" ?ü) + ("[y" ?ý) + ("[z" ?ž) + ("[[z" ?ž) + ("[A" ?Á) + ("[[A" ?Ä) + ("[[[A" ?Ä) + ("[C" ?Č) + ("[[C" ?Č) + ("[D" ?Ď) + ("[[D" ?Ď) + ("[E" ?É) + ("[[E" ?Ě) + ("[I" ?Í) + ("[L" ?Ĺ) + ("[[L" ?Ľ) + ("[N" ?Ň) + ("[[N" ?Ň) + ("[O" ?Ó) + ("[[O" ?Ô) + ("[[[O" ?Ö) + ("[R" ?Ŕ) + ("[[R" ?Ř) + ("[S" ?Š) + ("[[S" ?Š) + ("[[[S" ?ß) + ("[T" ?Ť) + ("[[T" ?Ť) + ("[U" ?Ú) + ("[[U" ?Ů) + ("[[[U" ?Ü) + ("[Y" ?Ý) + ("[Z" ?Ž) + ("[[Z" ?Ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + + +(quail-define-package + "slovak-prog-2" "Slovak" "SK" t + "Slovak (non-standard) keyboard for programmers #2. + +All digits except of `1' are replaced by Slovak characters as on the standard +Slovak keyboard. +Dead keys are on `=' and `+'. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("2" ?ľ) + ("3" ?š) + ("4" ?č) + ("5" ?ť) + ("6" ?ž) + ("7" ?ý) + ("8" ?á) + ("9" ?í) + ("0" ?é) + ("==" ?=) + ("++" ?+) + ("=+" ?+) + ("=2" ?2) + ("=3" ?3) + ("=4" ?4) + ("=5" ?5) + ("=6" ?6) + ("=7" ?7) + ("=8" ?8) + ("=9" ?9) + ("=0" ?0) + ("+2" ?2) + ("+3" ?3) + ("+4" ?4) + ("+5" ?5) + ("+6" ?6) + ("+7" ?7) + ("+8" ?8) + ("+9" ?9) + ("+0" ?0) + ("=a" ?á) + ("+a" ?ä) + ("+=a" ?ä) + ("+c" ?č) + ("+d" ?ď) + ("=e" ?é) + ("+e" ?ě) + ("=i" ?í) + ("=l" ?ĺ) + ("+l" ?ľ) + ("+n" ?ň) + ("=o" ?ó) + ("+o" ?ô) + ("+=o" ?ö) + ("=r" ?ŕ) + ("+r" ?ř) + ("=s" ?ß) + ("+s" ?š) + ("+t" ?ť) + ("=u" ?ú) + ("+u" ?ů) + ("+=u" ?ü) + ("=y" ?ý) + ("+z" ?ž) + ("=A" ?Á) + ("+A" ?Ä) + ("+=A" ?Ä) + ("+C" ?Č) + ("+D" ?Ď) + ("=E" ?É) + ("+E" ?Ě) + ("=I" ?Í) + ("=L" ?Ĺ) + ("+L" ?Ľ) + ("+N" ?Ň) + ("=O" ?Ó) + ("+O" ?Ô) + ("+=O" ?Ö) + ("=R" ?Ŕ) + ("+R" ?Ř) + ("=S" ?ß) + ("+S" ?Š) + ("+T" ?Ť) + ("=U" ?Ú) + ("+U" ?Ů) + ("+=U" ?Ü) + ("=Y" ?Ý) + ("+Z" ?Ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + + +(quail-define-package + "slovak-prog-3" "Slovak" "SK" t + "Slovak (non-standard) keyboard for programmers #3. + +Dead keys are on `[', `[[', `[[[', and `]'. +All other keys are the same as on standard US keyboard." + nil t nil nil t nil nil nil nil nil t) + +(quail-define-rules + ("[[[[" ?\[) + ("[]" ?\]) + ("][" ?\[) + ("]]" ?\]) + ("[a" ?á) + ("[[a" ?ä) + ("[[[a" ?ä) + ("]a" ?ä) + ("][a" ?ä) + ("[c" ?č) + ("[[c" ?č) + ("]c" ?č) + ("[d" ?ď) + ("[[d" ?ď) + ("]d" ?ď) + ("[e" ?é) + ("[[e" ?ě) + ("]e" ?ě) + ("[i" ?í) + ("[l" ?ĺ) + ("[[l" ?ľ) + ("]l" ?ľ) + ("[n" ?ň) + ("[[n" ?ň) + ("]n" ?ň) + ("[[o" ?ô) + ("[[[o" ?ö) + ("[o" ?ó) + ("]o" ?ô) + ("][o" ?ö) + ("[r" ?ŕ) + ("[[r" ?ř) + ("]r" ?ř) + ("[s" ?š) + ("[[s" ?š) + ("[[[s" ?ß) + ("]s" ?š) + ("[t" ?ť) + ("[[t" ?ť) + ("]t" ?ť) + ("[u" ?ú) + ("[[u" ?ů) + ("[[[u" ?ü) + ("]u" ?ů) + ("][u" ?ü) + ("[y" ?ý) + ("[z" ?ž) + ("[[z" ?ž) + ("]z" ?ž) + ("[A" ?Á) + ("[[A" ?Ä) + ("[[[A" ?Ä) + ("]A" ?Ä) + ("][A" ?Ä) + ("[C" ?Č) + ("[[C" ?Č) + ("]C" ?Č) + ("[D" ?Ď) + ("[[D" ?Ď) + ("]D" ?Ď) + ("[E" ?É) + ("[[E" ?Ě) + ("]E" ?Ě) + ("[I" ?Í) + ("[L" ?Ĺ) + ("[[L" ?Ľ) + ("]L" ?Ľ) + ("[N" ?Ň) + ("[[N" ?Ň) + ("]N" ?Ň) + ("[O" ?Ó) + ("[[O" ?Ô) + ("[[[O" ?Ö) + ("]O" ?Ô) + ("][O" ?Ö) + ("[R" ?Ŕ) + ("[[R" ?Ř) + ("]R" ?Ř) + ("[S" ?Š) + ("[[S" ?Š) + ("[[[S" ?ß) + ("]S" ?Š) + ("[T" ?Ť) + ("[[T" ?Ť) + ("]T" ?Ť) + ("[U" ?Ú) + ("[[U" ?Ů) + ("[[[U" ?Ü) + ("]U" ?Ů) + ("][U" ?Ü) + ("[Y" ?Ý) + ("[Z" ?Ž) + ("[[Z" ?Ž) + ("]Z" ?Ž) + ([kp-1] ?1) + ([kp-2] ?2) + ([kp-3] ?3) + ([kp-4] ?4) + ([kp-5] ?5) + ([kp-6] ?6) + ([kp-7] ?7) + ([kp-8] ?8) + ([kp-9] ?9) + ([kp-0] ?0) + ([kp-add] ?+)) + +;;; slovak.el ends here diff --git a/lisp/leim/quail/symbol-ksc.el b/lisp/leim/quail/symbol-ksc.el new file mode 100644 index 00000000000..5556173a420 --- /dev/null +++ b/lisp/leim/quail/symbol-ksc.el @@ -0,0 +1,202 @@ +;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601) -*-coding: utf-8;-*- + +;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Korean, Hangul + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; 94.10.24 Written for Mule Ver.2.0 (koaunghi.un@zdv.uni-tuebingen.de) +;;; 94.11.04 Updated for Mule Ver.2.1 (koaunghi.un@zdv.uni-tuebingen.de) +;;; 96.09.23 Updated for emacs-19.33-beta (koaunghi.un@zdv.uni-tuebingen.de) + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'korea-util) + +(quail-define-package + "korean-symbol" "Korean" "심벌" t + "한글심벌입력표: + 【(】괄호열기【arrow】화살【sex】♂♀【index】첨자 【accent】악센트 + 【)】괄호닫기【music】음악【dot】점 【quote】따옴표【xtext】§※¶¡¿ + 【Unit】℃Å¢℉【math】수학기호【pic】상형문자【line】선문자 + 【unit】단위 【frac】분수 【textline】―∥\∼ + 【wn】㈜【ks】㉿【No】№【㏇】㏇ 【dag】† 【ddag】‡【percent】‰ + 【am】㏂【pm】㏘【™】™【Tel】℡【won】₩ 【yen】¥ 【pound】£ + 【Eng】ABC… 【enum】012… 【Russ】АБВ…【Greek】ΑΒΓ… + 【eng】abc… 【easc】영어ASCII【russ】абв…【greek】αβγ… + 【Rom】ⅠⅡⅢ… 【Scan】ÆÐª… 【hira】ぁあぃ + 【rom】ⅰⅱⅲ… 【scan】æđð… 【kata】ァアィ + 【ojaso】㉠∼㉭【pjaso】㈀∼㈍【oeng】ⓐ∼ⓩ【peng】⒜∼⒵ + 【ogana】㉮∼㉻【pgana】㈎∼㈛【onum】①∼⑮【pnum】⑴∼⒂ + 【자소】2벌식 + ㅥ(S) ㅿ(t_) ㆁ(D) ㆀ(DD) ㅱ(aD) ㆆ(_d) ㆅ(G) ㆍ(uk)") + +(quail-define-rules + ("(" "〔〈《「『【") + (")" "〕〉》」』】") + ("math" "±×÷≠≤≥∞∴∠⊥⌒∂∇≡≒〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃∮∑∏") + ("pic" "☆★○●◎◇◆□■△▲▽▼◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¤") + ("arrow" "→←↑↓↔↕↗↙↖↘") + ("music" "♭♩♪♬") + ("won" "₩") + ("yen" "¥") + ("pound" "£") + ("xtext" "§※¶¡¿") + ("dot" "·‥…¨ː") + ("quote" "、。〃‘’“”°′″´˝") + ("textline" "―∥\∼") + ("Unit" "℃Å¢℉") + ("sex" "♂♀") + ("accent" "~ˇ˘˚˙¸˛") + ("percent" "‰") + ("dag" "†") + ("ddag" "‡") + ("wn" "㈜") + ("ks" "㉿") + ("No" "№") + ("Co" "㏇") + ("TM" "™") + ("am" "㏂") + ("pm" "㏘") + ("Tel" "℡") + ("easc" "!"#$%&'()*+,-./:;<=>?@[]^_`{|} ̄") + ("enum" "0123456789") + ("Eng" "ABCDEFGHIJKLMNOPQRSTUVWXYZ") + ("eng" "abcdefghijklmnopqrstuvwxyz") + ("r" "ㄱ") + ("R" "ㄲ") + ("rt" "ㄳ") + ("s" "ㄴ") + ("sw" "ㄵ") + ("sg" "ㄶ") + ("e" "ㄷ") + ("E" "ㄸ") + ("f" "ㄹ") + ("fr" "ㄺ") + ("fa" "ㄻ") + ("fq" "ㄼ") + ("ft" "ㄽ") + ("fx" "ㄾ") + ("fv" "ㄿ") + ("fg" "ㅀ") + ("a" "ㅁ") + ("q" "ㅂ") + ("Q" "ㅃ") + ("qt" "ㅄ") + ("t" "ㅅ") + ("T" "ㅆ") + ("d" "ㅇ") + ("w" "ㅈ") + ("W" "ㅉ") + ("c" "ㅊ") + ("z" "ㅋ") + ("x" "ㅌ") + ("v" "ㅍ") + ("g" "ㅎ") + ("k" "ㅏ") + ("o" "ㅐ") + ("i" "ㅑ") + ("O" "ㅒ") + ("j" "ㅓ") + ("p" "ㅔ") + ("u" "ㅕ") + ("P" "ㅖ") + ("h" "ㅗ") + ("hk" "ㅘ") + ("ho" "ㅙ") + ("hl" "ㅚ") + ("y" "ㅛ") + ("n" "ㅜ") + ("nj" "ㅝ") + ("np" "ㅞ") + ("nl" "ㅟ") + ("b" "ㅠ") + ("m" "ㅡ") + ("ml" "ㅢ") + ("l" "ㅣ") + ("S" "ㅥ") + ("se" "ㅦ") + ("st" "ㅧ") + ("st_" "ㅨ") + ("frt" "ㅩ") + ("fqt" "ㅫ") + ("fe" "ㅪ") + ("ft_" "ㅬ") + ("f_d" "ㅭ") + ("aq" "ㅮ") + ("at" "ㅯ") + ("at_" "ㅰ") + ("aD" "ㅱ") + ("qr" "ㅲ") + ("qe" "ㅳ") + ("qtr" "ㅴ") + ("qte" "ㅵ") + ("qw" "ㅶ") + ("qx" "ㅷ") + ("qD" "ㅸ") + ("QD" "ㅹ") + ("tr" "ㅺ") + ("ts" "ㅻ") + ("te" "ㅼ") + ("tq" "ㅽ") + ("tw" "ㅾ") + ("t_" "ㅿ") + ("DD" "ㆀ") + ("D" "ㆁ") + ("Dt" "ㆂ") + ("Dt_" "ㆃ") + ("vD" "ㆄ") + ("G" "ㆅ") + ("_d" "ㆆ") + ("yi" "ㆇ") + ("yO" "ㆈ") + ("yl" "ㆉ") + ("bu" "ㆊ") + ("bP" "ㆋ") + ("bl" "ㆌ") + ("uk" "ㆍ") + ("ukl" "ㆎ") + ("Rom" "ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ") + ("rom" "ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ") + ("Greek" "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ") + ("greek" "αβγδεζηθικλμνξοπρστυφχψω") + ("line" "─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊") + ("unit" "㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆") + ("Scan" "ÆÐªĦIJĿŁØŒºÞŦŊ") + ("ojaso" "㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭") + ("ogana" "㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻") + ("oeng" "ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ") + ("onum" "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮") + ("frac" "½⅓⅔¼¾⅛⅜⅝⅞") + ("scan" "æđðħıijĸŀłøœßþŧŋʼn") + ("pjaso" "㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍>") + ("pgana" "㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛") + ("peng" "⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵") + ("pnum" "⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂") + ("index" "¹²³⁴ⁿ₁₂₃₄") + ("hira" "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん") + ("kata" "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ") + ("Russ" "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ") + ("russ" "абвгдеёжзийклмнопрстуфхцчшщъыьэюя")) + +;;; symbol-ksc.el ends here diff --git a/lisp/leim/quail/thai.el b/lisp/leim/quail/thai.el new file mode 100644 index 00000000000..37171042643 --- /dev/null +++ b/lisp/leim/quail/thai.el @@ -0,0 +1,112 @@ +;;; thai.el --- Quail package for inputting Thai characters -*-coding: utf-8;-*- + +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Thai + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) + +(defmacro thai-generate-quail-map (translation-table) + (let (map) + (dotimes (i (length translation-table)) + (let ((trans (aref translation-table i))) + (when (not (eq trans 0)) + (if (> (length trans) 1) + (setq trans (vector trans)) + (setq trans (aref trans 0))) + (setq map (cons (list (char-to-string i) trans) map))))) + `(quail-define-rules ,@map))) + +;; Thai Kesmanee keyboard support. + +(quail-define-package + "thai-kesmanee" "Thai" "กก>" t + "Thai Kesmanee input method with TIS620 keyboard layout + +The difference from the ordinal Thai keyboard: + '฿' and '๏' are assigned to '\\' and '|' respectively, + 'ฃ' and 'ฅ' are assigned to '`' and '~' respectively, + Don't know where to assign characters '๚' and '๛'." + nil t t t t nil nil nil nil nil t) + +(thai-generate-quail-map + [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; control codes + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; control codes +;; This data is quite old. +;; 0 "#" "." "๒" "๓" "๔" "ั้" "ง" ; SPC .. ' +;; "๖" "๗" "๕" "๙" "ม" "ข" "ใ" "ฝ" ; ( .. / +;; "จ" "ล" "/" "_" "ภ" "ถ" "ุ" "ึ" ; 0 .. 7 +;; "ค" "ต" "ซ" "ว" "ฒ" "ช" "ฬ" "ฦ" ; 8 .. ? +;; "๑" "ฤ" "ฺ" "ฉ" "ฏ" "ฎ" "โ" "ฌ" ; @ .. G +;; "็" "ณ" "๋" "ษ" "ศ" "๎" "์" "ฯ" ; H .. O +;; "ญ" "๐" "ฑ" "ฆ" "ธ" "๊" "ฮ" "\"" ; P .. W +;; ")" "ํ" "(" "บ" "฿" "ล" "ู" "๘" ; X .. _ +;; "ฃ" "ฟ" "ิ" "แ" "ก" "ำ" "ด" "เ" ; ` .. g +;; "้" "ร" "่" "า" "ส" "ท" "ื" "น" ; h .. o +;; "ย" "ๆ" "พ" "ห" "ะ" "ี" "อ" "ไ" ; p .. w +;; "ป" "ั" "ผ" "ฐ" "๏" "," "ฅ" 0 ; x .. DEL +;; This is the correct data nowadays. + 0 "+" "." "๒" "๓" "๔" "฿" "ง" ; SPC .. ' + "๖" "๗" "๕" "๙" "ม" "ข" "ใ" "ฝ" ; ( .. / + "จ" "ๅ" "/" "-" "ภ" "ถ" "ุ" "ึ" ; 0 .. 7 + "ค" "ต" "ซ" "ว" "ฒ" "ช" "ฬ" "ฦ" ; 8 .. ? + "๑" "ฤ" "ฺ" "ฉ" "ฏ" "ฎ" "โ" "ฌ" ; @ .. G + "็" "ณ" "๋" "ษ" "ศ" "?" "์" "ฯ" ; H .. O + "ญ" "๐" "ฑ" "ฆ" "ธ" "๊" "ฮ" "\"" ; P .. W + "\)" "ํ" "\(" "บ" "ฃ" "ล" "ู" "๘" ; X .. _ + "_" "ฟ" "ิ" "แ" "ก" "ำ" "ด" "เ" ; ` .. g + "้" "ร" "่" "า" "ส" "ท" "ื" "น" ; h .. o + "ย" "ๆ" "พ" "ห" "ะ" "ี" "อ" "ไ" ; p .. w + "ป" "ั" "ผ" "ฐ" "ฅ" "," "%" 0 ; x .. DEL + ]) + + +;; Thai Pattachote keyboard support. + +(quail-define-package + "thai-pattachote" "Thai" "กป>" t + "Thai Pattachote input method with TIS620 keyboard layout" + nil t t t t nil nil nil nil nil t) + +(thai-generate-quail-map + [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; control codes + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; control codes + 0 "+" "ฑ" "/" "," "?" "_" "ข" ; SPC .. ' + "(" ")" "." "%" "ะ" "๑" "จ" "พ" ; ( .. / + "๐" "=" "๒" "๓" "๔" "๕" "ู" "๗" ; 0 .. 7 + "๘" "๙" "ฆ" "ไ" "ฟ" "๖" "ฒ" "ฬ" ; 8 .. ? + "\"" "๋" "ั" "ฐ" "ำ" "ๆ" "ณ" "์" ; @ .. G + "ื" "ซ" "ผ" "ช" "โ" "ฮ" "ศ" "ถ" ; H .. O + "ฒ" "๊" "ญ" "ธ" "ษ" "ฝ" "ภ" "ฤ" ; P .. W + "ฎ" "ึ" "ฎ" "ใ" "ฺ" "ฒ" "ุ" "-" ; X .. _ + "ฃ" "้" "ิ" "ล" "ง" "ย" "ก" "ั" ; ` .. g + "ี" "ม" "า" "น" "เ" "ส" "ค" "ว" ; h .. o + "แ" "็" "อ" "ท" "ร" "ด" "ห" "ต" ; p .. w + "ป" "่" "บ" "ฯ" "ํ" "ฦ" "ฅ" 0 ; x .. DEL + ]) + +;;; thai.el ends here diff --git a/lisp/leim/quail/tibetan.el b/lisp/leim/quail/tibetan.el new file mode 100644 index 00000000000..774b4ad0d6b --- /dev/null +++ b/lisp/leim/quail/tibetan.el @@ -0,0 +1,455 @@ +;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: utf-8-emacs;-*- + +;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, Tibetan + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;; Author: Toru TOMABECHI, <Toru.Tomabechi@orient.unil.ch> + +;; Created: Feb. 17. 1997 + +;; History: +;; 1997.03.13 Support for inputting special signs and punctuation added. +;; (Only Ext. Wylie input) + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'tibet-util) + +;; Now quail-current-key is set to Tibetan-Roman transcription. We +;; set quail-current-str to the corresponding Tibetan string (composed +;; if necessary). Both Wylie and TibKey input methods use this +;; function. + +(defun quail-tibetan-update-translation (control-flag) + (if (numberp control-flag) + ;; Non-composable-character typed. + (setq quail-current-str + (buffer-substring (overlay-start quail-overlay) + (overlay-end quail-overlay)) + unread-command-events + (string-to-list + (substring quail-current-key control-flag))) + ;; Special treatment of "-d..." and "-y...". + (if (string-match "^-[dy]" quail-current-key) + (setq quail-current-key (substring quail-current-key 1))) + (let ((str (tibetan-transcription-to-tibetan quail-current-key))) + ;; If quail-current-key is for punctuation, it can't be + ;; transcribed by tibetan-transcription-to-tibetan, thus STR + ;; contains ASCII string now. In that case, use the current + ;; characters set in quail-current-str. + (if (> (aref str 0) 255) + (setq quail-current-str (tibetan-compose-string str)) + (or quail-current-str + (setq quail-current-str quail-current-key))))) + control-flag) + +;;; Wylie transcription based input methods. + +;; Special alist for `འ'. It must be treated as a subjoined +;; consonant if it follows a consonant. +;; * Removed by Tomabechi 2000/06/10 * +;; 'a chung must be explicitly typed as a vowel ("fa") +;; འ is now treated as normal base consonants +;; (defconst tibetan-wylie-quote-alist '(("'" . ?འ))) + +;; Special alist to avoid default stacking. +(defconst tibetan-wylie-non-stacking-alist + '(("-d" . "ད") + ("-y" . "ཡ"))) + +;; Punctuation characters are not transcribed. + +(defconst tibetan-wylie-punctuation-alist + '(("." . " ") + (":" . "ཿ") + (" " . "་") + ("/" . "།") + ("//" . "༎") + ("////" . ["༎ ༎"]) + ("$" . "༏") + ("/\"" . "༐") ; Not defined in Ext. Wylie. + ("&" . "༐") + (";" . "༑") + ("%" . "༔") + ("!" . "༈") + ("<" . "༼") + (">" . "༽") + ("@" . "྅") + ("*" . ["༄༅"]) + ("#" . ["༄༅༅"]) + ("^" . "༆") + ("0" . "༠") + ("1" . "༡") + ("2" . "༢") + ("3" . "༣") + ("4" . "༤") + ("5" . "༥") + ("6" . "༦") + ("7" . "༧") + ("8" . "༨") + ("9" . "༩") + ("-0" . "༳") + ("-1" . "༪") + ("-2" . "༫") + ("-3" . "༬") + ("-4" . "༭") + ("-5" . "༮") + ("-6" . "༯") + ("-7" . "༰") + ("-8" . "༱") + ("-9" . "༲") + ("|" . "ༀ༁༂༃༇༉༊༒༓༕༖༗༘༙༚༛༜༝༞༟༴༶༸༺༻༾༿྾྿࿀࿁࿂࿃࿄࿅࿆࿇࿈࿉࿊࿋࿌࿏"))) + +(quail-define-package "tibetan-wylie" "Tibetan" "TIBw" t +"Tibetan character input by Extended Wylie key assignment. + + +-------------------------------------+ + |ཀ་ k |ཁ་ kh |ག་ g |གྷ་ gh |ང་ ng| ི i ། / + |ཅ་ c |ཆ་ ch |ཇ་ j | |ཉ་ ny| ུ u ༎ // + |ཊ་ T |ཋ་ TH |ཌ་ D |ཌྷ་ DH |ཎ་ N | ེ e ༎ ༎ //// + |ཏ་ t |ཐ་ th |ད་ d |དྷ་ dh |ན་ n | ོ o ༑ ; + |པ་ p |ཕ་ ph |བ་ b |བྷ་ bh |མ་ m | ཻ ai (ee, E) ༏ $ + |ཙ་ ts|ཚ་ tsh|ཛ་ dz |ཛྷ་ dzh|ཝ་ w | ཽ au (oo, O) ༐ & + |ཞ་ zh|ཟ་ z |འ་ ' | |ཡ་ y | ྀ I ༄༅ * + |ར་ r |ལ་ l |ཤ་ sh |ཥ་ SH |ས་ s | ཿ : ༄༅༅ # + |ཧ་ h |ཨ་ A |ཀྵ་ kSH| | | ཾ M ༼ ༽ < > + +-------------------------------------+ ༔ % + (The consonant ཨ་ must be typed explicitly.) + + NOT SPECIFIED IN EXT. WYLIE: + +--------------------------------------------------------+ + |ྂ = ~ |ྃ = ` |྄ = , |྅ = @ |༷ = _o|༵ = _O|༆ = ^| + +--------------------------------------------------------+ + |ྈ = x |ྉ = X |྆ = v |྇ = V |ྊ = q |ྋ = Q | + +-----------------------------------------------+ + + SPECIAL KEYS + + : Consonant Stacking + (Consonant stacking for ordinary Tibetan is done automatically) + - : No Consonant Stacking + (To suppress automatic stacking for \"g-y\", + and to get da-drag in -r-d, -l-d .) + | : Special signs. + + Tsheg is assigned to SPC. Space is assigned to period '.'. +" + nil nil nil nil nil nil nil nil + 'quail-tibetan-update-translation) + +;; Here we build up a Quail map for a Tibetan sequence the whole of +;; which can be one composition. +;; +;; A Tibetan syllable is typically structured as follows: +;; [P] C [c+] V [M] [S [s]] +;; ^^^^^^^^^^^^ +;; where P:prefix, C:base consonant, c:subjoined consonant, +;; V:vowel, M:vowel modifier, S:suffix, s:post suffix. +;; In this pattern, the part indicated by "^^^" can be one composition. + +;;; modified by Tomabechi 1999/12/10 +;;; modified by Tomabechi 2000/06/08 +;;; Allows infinite addition of vowels/modifiers +;;; as specified in Unicode v.3 +(quail-install-map + (quail-map-from-table + '((base-state (tibetan-consonant-transcription-alist . svm-state) + (tibetan-precomposed-transcription-alist . svm-state) + (tibetan-wylie-non-stacking-alist . svm-state) + tibetan-subjoined-transcription-alist + tibetan-vowel-transcription-alist + tibetan-modifier-transcription-alist + tibetan-wylie-punctuation-alist) + (svm-state ;;(tibetan-wylie-quote-alist . vm-state) + (tibetan-vowel-transcription-alist . vm-state) + (tibetan-subjoined-transcription-alist . svm-state) + (tibetan-modifier-transcription-alist . m-state)) + (vm-state (tibetan-vowel-transcription-alist . vm-state) + (tibetan-modifier-transcription-alist . m-state)) + (m-state (tibetan-modifier-transcription-alist . m-state))))) + +;;; +;;; TibKey key alignment based input method +;;; + +(defconst tibetan-tibkey-to-transcription-alist + '(;; consonant + ("`" . "`") ; sna ldan + ("~" . "~") ; sna ldan + nada + ("q" . "k") ; ka + ("Q" ."kSH") ; kSHa + ("w" . "kh") ; kha + ("e" . "g") ; ga + ("r" . "ng") ; nga + ("t" . "c") ; ca + ("T" . "I") ; gi gu log + ("y" . "ch") ; cha + ("u" . "j") ; ja + ("i" . "ny") ; nya + ("o" . "t") ; ta + ("O" . "T") ; Ta + ("p" . "th") ; tha + ("P" . "TH") ; THa + ("[" . "d") ; da + ("{" . "D") ; Da + ("]" . "n") ; na + ("}" . "N") ; Na + ("a" . "p") ; pa + ("A" . "a") ; Vowel a (not used in original TibKey) + ("s" . "ph") ; pha + ("d" . "b") ; ba + ("f" . "m") ; ma + ("F" . "M") ; anusvara + ("g" . "u") ; zhabs kyu + ("G" . "i") ; gi gu + ("H" . ",") ; virama + ("j" . "o") ; naro + ("J" . "e") ; 'greng bu + ("k" . "ts") ; tsa + ("l" . "tsh") ; tsha + (";" . "dz") ; dza + ("'" . "w") ; wa + ("\"" . "+w") ; wa zur + ("z" . "zh") ; zha + ("x" . "z") ; za + ("c" . "'") ; 'a + ("C" . "+'") ; 'a chung + ("v" . "y") ; ya + ("V" . "+y") ; ya btags + ("b" . "r") ; ra + ("B" . "+r") ; ra btags + ("n" . "l") ; la + ("N" . "+l") ; la btags + ("m" . "sh") ; sha + ("M" . "SH") ; SHa + ("," . "s") ; sa + ("." . "h") ; ha + ("/" . "A") ; Aa + ;; subjoined + ("hq" . "+k") ; ka + ("hQ" ."+kSH") ; kSHa + ("hw" . "+kh") ; kha + ("he" . "+g") ; ga + ("hr" . "+ng") ; nga + ("ht" . "+c") ; ca + ("hy" . "+ch") ; cha + ("hu" . "+j") ; ja + ("hi" . "+ny") ; nya + ("ho" . "+t") ; ta + ("hO" . "+T") ; Ta + ("hp" . "+th") ; tha + ("hP" . "+TH") ; THa + ("h[" . "+d") ; da + ("h{" . "+D") ; Da + ("h]" . "+n") ; na + ("h}" . "+N") ; Na + ("ha" . "+p") ; pa + ("hs" . "+ph") ; pha + ("hd" . "+b") ; ba + ("hf" . "+m") ; ma + ("hk" . "+ts") ; tsa + ("hl" . "+tsh") ; tsha + ("h;" . "+dz") ; dza + ("h'" . "+w") ; wa + ("hz" . "+zh") ; zha + ("hx" . "+z") ; za + ("hc" . "+'") ; 'a + ("hv" . "+y") ; ya + ("hb" . "+r") ; ra + ("hn" . "+l") ; la + ("hm" . "+sh") ; sha + ("hM" . "+SH") ; SHa + ("h," . "+s") ; sa + ("h." . "+h") ; ha + ("h/" . "+A") ; Aa + ;; Special rule for `ཡ' to avoid stacking. + ("E" . "-y") + )) + +(defconst tibetan-consonant-tibkey-alist nil) +(defconst tibetan-subjoined-tibkey-alist nil) +(defconst tibetan-vowel-tibkey-alist nil) +(defconst tibetan-modifier-tibkey-alist nil) +(defconst tibetan-non-stacking-tibkey-alist nil) + +(let ((type-list '("consonant" "subjoined" "vowel" "modifier" "non-stacking")) + (tail tibetan-tibkey-to-transcription-alist) + elt) + (while tail + (setq elt (car tail) tail (cdr tail)) + (let ((types type-list) + type transcription trans-alist tibkey-alist) + (while types + (setq type (car types) types (cdr types)) + (setq trans-alist + (if (string= type "non-stacking") + 'tibetan-wylie-non-stacking-alist + (intern (format "tibetan-%s-transcription-alist" type))) + transcription + (cdr (assoc (cdr elt) (symbol-value trans-alist)))) + (when transcription + (setq tibkey-alist (intern (format "tibetan-%s-tibkey-alist" type))) + (set tibkey-alist + (cons (cons (car elt) transcription) + (symbol-value tibkey-alist))))) + (or tibkey-alist + (error "No Tibetan transcription for %s" (cdr elt)))))) + +(defconst tibetan-punctuation-tibkey-alist + '(("1" . "༡") + ("!" . "༄") ; nyi zla long + ("2" . "༢") + ("@" . "༅") ; nyi zla simple + ("3" . "༣") +;;; ("#" ) + ("4" . "༤") +;;; ("$" ) + ("5" . "༥") + ("%" . "༔") + ("6" . "༦") + ("^" . "༁") + ("7" . "༧") + ("8" . "༨") +;;; ("*" ) ; avagraha, not supported yet + ("9" . "༩") + ("(" . "༼") + ("0" . "༠") + (")" . "༽") +;;; ("-" ) ; emphatic, not yet supported +;;; ("_" ) ; id. +;;; ("=" ) ; special sign, not yet supported + ("+" . "༑") + ("\\" . "༏") + ("|" . "༈") + ("I" . "྅") ; avagraha + (":" . "ཿ") +;;; (">" ?་) ; to be assigned to SPC + (">" . " ") + ("?" . "།") + ("??" . "༎") + ("????" . ["༎ ༎"]) + (" " . "་") + )) + +;; Convert TibKey string to Tibetan-Roman transcription string. +;; If there's no proper conversion, return nil. +(defun quail-tibkey-to-transcription (tibkey) + (let ((len (length tibkey)) + (i 0) + (trans-list nil)) + (while (< i len) + (let ((last len) + trans) + (while (and (not trans) (> last i)) + (or (setq trans (cdr (assoc (substring tibkey i last) + tibetan-tibkey-to-transcription-alist))) + (setq last (1- last)))) + (if trans + (setq trans-list (cons trans trans-list) + i last) + (setq trans-list nil i len)))) + (apply 'concat (nreverse trans-list)))) + +(defvar quail-tibkey-characters nil) + +(defun quail-tibkey-update-translation (control-flag) + (if (integerp control-flag) + ;; Non-composable-character typed. + (setq quail-current-str + (buffer-substring (overlay-start quail-overlay) + (overlay-end quail-overlay)) + unread-command-events + (string-to-list + (substring quail-current-key control-flag))) + (let ((transcription (quail-tibkey-to-transcription quail-current-key))) + (if (> (length transcription) 0) + (let ((quail-current-key transcription)) + (setq control-flag + (quail-tibetan-update-translation control-flag))) + (or quail-current-str + (setq quail-current-str quail-current-key))))) + control-flag) + +(quail-define-package "tibetan-tibkey" "Tibetan" "TIBt" t +"Tibetan character input by TibKey key assignment. + +\(This implementation is still incomplete. + Therefore, the following key assignment is a provisional one.) + + [NOT SHIFTED] + + +-------------------------------------------------------+ + |`ྃ|1༡|2༢|3༣|4༤|5༥|6༦|7༧|8༨|9༩|0༠|- |= |\\༈| + +-------------------------------------------------------+ + |qཀ|wཁ|eག|rང|tཅ|yཆ|uཇ|iཉ|oཏ|pཐ|[ད|]ན| + +-----------------------------------------------+ + |aཔ| sཕ| dབ|fམ|gུ|h |jོ|kཙ|lཚ|;ཛ|'ཝ| + +---------------------------------------------+ + |zཞ|xཟ|cའ|vཡ|bར|nལ|mཤ|,ས|.ཧ|/ཨ| + +---------------------------------------+ + The key 'h' is used for consonant stacking. + + [SHIFTED] + + +----------------------------------------------------------+ + |~ྂ|!༄|@༅|# |$ |%༔ |^༁|& |* |(༼|)༽|_ |+༑| |༈| + +----------------------------------------------------------+ + |Qཀྵ|W |E |R |Tྀ|Y |U |I྅|Oཊ|Pཋ|{ཌ|}ཎ| + +-----------------------------------------------+ + |A |S |D |Fཾ|Gི|H྄|Jེ|K |L |:ཿ|\"ྭ| + +-------------------------------------------+ + |Z |X |Cཱ|Vྱ|Bྲ|Nླ|Mཥ|< |> |?། | + +---------------------------------------+ + + DIFFERENCE FROM THE ORIGINAL TIBKEY: + + 1. Vowel 'a' should be typed explicitly by the key 'A'. + This is really inconvenient. But to make the coding + scheme clear, it is desirable to have an explicit + vowel sign for 'a'. + 2. Tsheg is assigned to SPC key. You can input a space + by typing '>'. + 4. To avoid the default stacking and to obtain གཡ, + type 'E' instead of 'v' (=ཡ). + 3. There are many characters that are not supported in the + current implementation (especially special signs). + I hope I'll complete in a future revision. +" + nil nil nil nil nil nil nil nil + 'quail-tibkey-update-translation) + +(quail-install-map + (quail-map-from-table + '((base-state (tibetan-consonant-tibkey-alist . s-state) + (tibetan-non-stacking-tibkey-alist . s-state) + tibetan-subjoined-tibkey-alist + tibetan-vowel-tibkey-alist + tibetan-modifier-tibkey-alist + tibetan-punctuation-tibkey-alist) + (s-state (tibetan-subjoined-tibkey-alist . s-state) + (tibetan-vowel-tibkey-alist . m-state)) + (m-state tibetan-modifier-tibkey-alist)))) + +;;; tibetan.el ends here diff --git a/lisp/leim/quail/uni-input.el b/lisp/leim/quail/uni-input.el new file mode 100644 index 00000000000..0ec4f8581ef --- /dev/null +++ b/lisp/leim/quail/uni-input.el @@ -0,0 +1,138 @@ +;;; uni-input.el --- Hex Unicode input method + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Author: Dave Love <fx@gnu.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Provides an input method for entering characters by hex unicode in +;; the form `uxxxx', similarly to the Yudit editor. + +;; This is not really a Quail method, but uses some Quail functions. +;; There is probably A Better Way. + +;; You can get a similar effect by using C-q with +;; `read-quoted-char-radix' set to 16. + +;; Note that this only allows you to enter BMP values unless someone +;; extends it to use variable numbers of digits. + +;;; Code: + +(require 'quail) + +(defun ucs-input-insert-char (char) + (insert char) + (move-overlay quail-overlay (overlay-start quail-overlay) (point))) + +(defun ucs-input-method (key) + (if (or buffer-read-only + (and (/= key ?U) (/= key ?u))) + (list key) + (quail-setup-overlays nil) + (ucs-input-insert-char key) + (let ((modified-p (buffer-modified-p)) + (buffer-undo-list t) + (input-method-function nil) + (echo-keystrokes 0) + (help-char nil) + (events (list key)) + (str " ")) + (unwind-protect + (catch 'non-digit + (progn + (dotimes (i 4) + (let ((seq (read-key-sequence nil)) + key) + (if (and (stringp seq) + (= 1 (length seq)) + (setq key (aref seq 0)) + (memq key '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?a + ?b ?c ?d ?e ?f ?A ?B ?C ?D ?E ?F))) + (progn + (push key events) + (ucs-input-insert-char key)) + (quail-delete-region) + (throw 'non-digit (append (reverse events) + (listify-key-sequence seq)))))) + (quail-delete-region) + (let ((n (string-to-number (apply 'string + (cdr (nreverse events))) + 16))) + (if (characterp n) + (list n))))) + (quail-delete-overlays) + (set-buffer-modified-p modified-p) + (run-hooks 'input-method-after-insert-chunk-hook))))) + +;;;###autoload +(defun ucs-input-activate (&optional arg) + "Activate UCS input method. +With ARG, activate UCS input method if and only if ARG is positive. + +While this input method is active, the variable +`input-method-function' is bound to the function `ucs-input-method'." + (if (and arg + (< (prefix-numeric-value arg) 0)) + (unwind-protect + (progn + (quail-hide-guidance) + (quail-delete-overlays) + (setq describe-current-input-method-function nil)) + (kill-local-variable 'input-method-function)) + (setq deactivate-current-input-method-function 'ucs-input-deactivate) + (setq describe-current-input-method-function 'ucs-input-help) + (quail-delete-overlays) + (if (eq (selected-window) (minibuffer-window)) + (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer)) + (set (make-local-variable 'input-method-function) + 'ucs-input-method))) + +(defun ucs-input-deactivate () + "Deactivate UCS input method." + (interactive) + (ucs-input-activate -1)) + +(define-obsolete-function-alias + 'ucs-input-inactivate + 'ucs-input-deactivate "24.3") + +(defun ucs-input-help () + (interactive) + (with-output-to-temp-buffer "*Help*" + (princ "\ +Input method: ucs (mode line indicator:U+) + +Input as Unicode: U<hex> or u<hex>, where <hex> is a four-digit hex number."))) + +;; The file leim-list.el contains the following call. +;; (register-input-method "ucs" "UTF-8" 'ucs-input-activate "U+" +;; "Unicode input as hex in the form Uxxxx.") + +(provide 'uni-input) + +;; Local Variables: +;; generated-autoload-load-name: "quail/uni-input" +;; End: + +;;; uni-input.el ends here diff --git a/lisp/leim/quail/viqr.el b/lisp/leim/quail/viqr.el new file mode 100644 index 00000000000..c5c1c940181 --- /dev/null +++ b/lisp/leim/quail/viqr.el @@ -0,0 +1,71 @@ +;;; viqr.el --- Quail packages for inputting Vietnamese with VIQR system -*-coding: utf-8;-*- + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010, 2011 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; Keywords: multilingual, input method, latin + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'quail) +(require 'viet-util) + +;; `viet-viqr-alist' is an alist of Vietnamese characters vs +;; corresponding VIQR strings. We create Quail map which maps VIQR +;; strings to corresponding Vietnamese characters. + +(defmacro viet-quail-define-rules () + (cons 'quail-define-rules + (let ((l viet-viqr-alist) + rules) + (while l + (setq rules (cons (list (cdr (car l)) (car (car l))) rules)) + (setq l (cdr l))) + rules))) + +(quail-define-package + "vietnamese-viqr" "Vietnamese" "VQ" t + "Vietnamese input method with VIQR mnemonic system + + effect | postfix | examples + ------------+---------+---------- + breve | ( | a( -> ă + circumflex | ^ | a^ -> â + horn | + | o+ -> ơ + ------------+---------+---------- + acute | ' | a' -> á + grave | ` | a` -> à + hook above | ? | a? -> ả + tilde | ~ | a~ -> ã + dot below | . | a. -> ạ + ------------+---------+---------- + d bar | dd | dd -> đ + ------------+---------+---------- + no compose | \\ | a\\. -> a. + ------------+---------+---------- + combination| (~ | a(~ -> ẵ +" nil t t nil nil t nil nil nil nil t) + + +(viet-quail-define-rules) + +;;; viqr.el ends here diff --git a/lisp/leim/quail/vntelex.el b/lisp/leim/quail/vntelex.el new file mode 100644 index 00000000000..7b7b4925bbb --- /dev/null +++ b/lisp/leim/quail/vntelex.el @@ -0,0 +1,428 @@ +;;; vntelex.el --- Quail package for Vietnamese by Telex method + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Werner Lemberg <wl@gnu.org> +;; Keywords: multilingual, input method, Vietnamese + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; based on the files VietnameseTelex.kmap (written by Nguyen Thanh +;; Bien <biennt@linuxvn.com>) and VNtelex.kmap (written by Nguyen Dai +;; Quy <DaiQuy.Nguyen@ulg.ac.be>) from the yudit 2.4 package + +;;; Code: + +(require 'quail) + + +(quail-define-package + "vietnamese-telex" ; NAME + "Vietnamese" ; LANGUAGE + "VT" ; TITLE + t ; GUIDANCE + "Vietnamese telex input method + +Vowels with circumflex: + + aa -> â, EE -> Ê, etc. + +Other diacritics: + + effect postfix examples + ------------------------------ + breve w aw -> ă + horn w ow -> ơ + + acute s as -> á + grave f af -> à + hook above r ar -> ả + tilde x ax -> ã + dot below j aj -> ạ + + d bar dd -> đ + +Combinations: + + AWF -> Ằ, owx -> ỡ, etc. + +Alternatives: + + EE = Ee -> Ê, AWF = Awf -> Ằ, etc. + +Doubling the postfix (but not in combinations) separates the letter +and postfix: Eee -> Ee, ajj -> aj, etc. +" ; DOCSTRING + nil ; TRANSLATION-KEYS + t ; FORGET-LAST-SELECTION + nil ; DETERMINISTIC + nil ; KBD-TRANSLATE + nil ; SHOW-LAYOUT + nil ; CREATE-DECODE-MAP + nil ; MAXIMUM-SHORTEST + nil ; OVERLAY-PLIST + nil ; UPDATE-TRANSLATION-FUNCTION + nil ; CONVERSION-KEYS + t) ; SIMPLE + +(quail-define-rules + ("af" ?à) ; LATIN SMALL LETTER A WITH GRAVE + ("AF" ?À) ; LATIN CAPITAL LETTER A WITH GRAVE + ("Af" ?À) + ("as" ?á) ; LATIN SMALL LETTER A WITH ACUTE + ("AS" ?Á) ; LATIN CAPITAL LETTER A WITH ACUTE + ("As" ?Á) + ("aa" ?â) ; LATIN SMALL LETTER A WITH CIRCUMFLEX + ("AA" ?Â) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX + ("Aa" ?Â) + ("ax" ?ã) ; LATIN SMALL LETTER A WITH TILDE + ("AX" ?Ã) ; LATIN CAPITAL LETTER A WITH TILDE + ("Ax" ?Ã) + ("ef" ?è) ; LATIN SMALL LETTER E WITH GRAVE + ("EF" ?È) ; LATIN CAPITAL LETTER E WITH GRAVE + ("Ef" ?È) + ("es" ?é) ; LATIN SMALL LETTER E WITH ACUTE + ("ES" ?É) ; LATIN CAPITAL LETTER E WITH ACUTE + ("Es" ?É) + ("ee" ?ê) ; LATIN SMALL LETTER E WITH CIRCUMFLEX + ("EE" ?Ê) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX + ("Ee" ?Ê) + ("if" ?ì) ; LATIN SMALL LETTER I WITH GRAVE + ("IF" ?Ì) ; LATIN CAPITAL LETTER I WITH GRAVE + ("If" ?Ì) + ("is" ?í) ; LATIN SMALL LETTER I WITH ACUTE + ("IS" ?Í) ; LATIN CAPITAL LETTER I WITH ACUTE + ("Is" ?Í) + ("of" ?ò) ; LATIN SMALL LETTER O WITH GRAVE + ("OF" ?Ò) ; LATIN CAPITAL LETTER O WITH GRAVE + ("Of" ?Ò) + ("os" ?ó) ; LATIN SMALL LETTER O WITH ACUTE + ("OS" ?Ó) ; LATIN CAPITAL LETTER O WITH ACUTE + ("Os" ?Ó) + ("oo" ?ô) ; LATIN SMALL LETTER O WITH CIRCUMFLEX + ("OO" ?Ô) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX + ("Oo" ?Ô) + ("ox" ?õ) ; LATIN SMALL LETTER O WITH TILDE + ("OX" ?Õ) ; LATIN CAPITAL LETTER O WITH TILDE + ("Ox" ?Õ) + ("uf" ?ù) ; LATIN SMALL LETTER U WITH GRAVE + ("UF" ?Ù) ; LATIN CAPITAL LETTER U WITH GRAVE + ("Uf" ?Ù) + ("us" ?ú) ; LATIN SMALL LETTER U WITH ACUTE + ("US" ?Ú) ; LATIN CAPITAL LETTER U WITH ACUTE + ("Us" ?Ú) + ("ys" ?ý) ; LATIN SMALL LETTER Y WITH ACUTE + ("YS" ?Ý) ; LATIN CAPITAL LETTER Y WITH ACUTE + ("Ys" ?Ý) + ("aw" ?ă) ; LATIN SMALL LETTER A WITH BREVE + ("AW" ?Ă) ; LATIN CAPITAL LETTER A WITH BREVE + ("Aw" ?Ă) + ("ix" ?ĩ) ; LATIN SMALL LETTER I WITH TILDE + ("IX" ?Ĩ) ; LATIN CAPITAL LETTER I WITH TILDE + ("Ix" ?Ĩ) + ("ux" ?ũ) ; LATIN SMALL LETTER U WITH TILDE + ("UX" ?Ũ) ; LATIN CAPITAL LETTER U WITH TILDE + ("Ux" ?Ũ) + ("ow" ?ơ) ; LATIN SMALL LETTER O WITH HORN + ("OW" ?Ơ) ; LATIN CAPITAL LETTER O WITH HORN + ("Ow" ?Ơ) + ("uw" ?ư) ; LATIN SMALL LETTER U WITH HORN + ("UW" ?Ư) ; LATIN CAPITAL LETTER U WITH HORN + ("Uw" ?Ư) + ("aj" ?ạ) ; LATIN SMALL LETTER A WITH DOT BELOW + ("AJ" ?Ạ) ; LATIN CAPITAL LETTER A WITH DOT BELOW + ("Aj" ?Ạ) + ("ar" ?ả) ; LATIN SMALL LETTER A WITH HOOK ABOVE + ("AR" ?Ả) ; LATIN CAPITAL LETTER A WITH HOOK ABOVE + ("Ar" ?Ả) + ("aas" ?ấ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + ("AAS" ?Ấ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + ("Aas" ?Ấ) + ("aaf" ?ầ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + ("AAF" ?Ầ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + ("Aaf" ?Ầ) + ("aar" ?ẩ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + ("AAR" ?Ẩ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + ("Aar" ?Ẩ) + ("aax" ?ẫ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + ("AAX" ?Ẫ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + ("Aax" ?Ẫ) + ("aaj" ?ậ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + ("AAJ" ?Ậ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + ("Aaj" ?Ậ) + ("aws" ?ắ) ; LATIN SMALL LETTER A WITH BREVE AND ACUTE + ("AWS" ?Ắ) ; LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + ("Aws" ?Ắ) + ("awf" ?ằ) ; LATIN SMALL LETTER A WITH BREVE AND GRAVE + ("AWF" ?Ằ) ; LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + ("Awf" ?Ằ) + ("awr" ?ẳ) ; LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + ("AWR" ?Ẳ) ; LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + ("Awr" ?Ẳ) + ("awx" ?ẵ) ; LATIN SMALL LETTER A WITH BREVE AND TILDE + ("AWX" ?Ẵ) ; LATIN CAPITAL LETTER A WITH BREVE AND TILDE + ("Awx" ?Ẵ) + ("awj" ?ặ) ; LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + ("AWJ" ?Ặ) ; LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + ("Awj" ?Ặ) + ("ej" ?ẹ) ; LATIN SMALL LETTER E WITH DOT BELOW + ("EJ" ?Ẹ) ; LATIN CAPITAL LETTER E WITH DOT BELOW + ("Ej" ?Ẹ) + ("er" ?ẻ) ; LATIN SMALL LETTER E WITH HOOK ABOVE + ("ER" ?Ẻ) ; LATIN CAPITAL LETTER E WITH HOOK ABOVE + ("Er" ?Ẻ) + ("ex" ?ẽ) ; LATIN SMALL LETTER E WITH TILDE + ("EX" ?Ẽ) ; LATIN CAPITAL LETTER E WITH TILDE + ("Ex" ?Ẽ) + ("ees" ?ế) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + ("EES" ?Ế) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + ("Ees" ?Ế) + ("eef" ?ề) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + ("EEF" ?Ề) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + ("Eef" ?Ề) + ("eer" ?ể) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + ("EER" ?Ể) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + ("Eer" ?Ể) + ("eex" ?ễ) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + ("EEX" ?Ễ) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + ("Eex" ?Ễ) + ("eej" ?ệ) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + ("EEJ" ?Ệ) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + ("Eej" ?Ệ) + ("ir" ?ỉ) ; LATIN SMALL LETTER I WITH HOOK ABOVE + ("IR" ?Ỉ) ; LATIN CAPITAL LETTER I WITH HOOK ABOVE + ("Ir" ?Ỉ) + ("ij" ?ị) ; LATIN SMALL LETTER I WITH DOT BELOW + ("IJ" ?Ị) ; LATIN CAPITAL LETTER I WITH DOT BELOW + ("Ij" ?Ị) + ("oj" ?ọ) ; LATIN SMALL LETTER O WITH DOT BELOW + ("OJ" ?Ọ) ; LATIN CAPITAL LETTER O WITH DOT BELOW + ("Oj" ?Ọ) + ("or" ?ỏ) ; LATIN SMALL LETTER O WITH HOOK ABOVE + ("OR" ?Ỏ) ; LATIN CAPITAL LETTER O WITH HOOK ABOVE + ("Or" ?Ỏ) + ("oos" ?ố) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + ("OOS" ?Ố) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + ("Oos" ?Ố) + ("oof" ?ồ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + ("OOF" ?Ồ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + ("Oof" ?Ồ) + ("oor" ?ổ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + ("OOR" ?Ổ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + ("Oor" ?Ổ) + ("oox" ?ỗ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + ("OOX" ?Ỗ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + ("Oox" ?Ỗ) + ("ooj" ?ộ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + ("OOJ" ?Ộ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + ("Ooj" ?Ộ) + ("ows" ?ớ) ; LATIN SMALL LETTER O WITH HORN AND ACUTE + ("OWS" ?Ớ) ; LATIN CAPITAL LETTER O WITH HORN AND ACUTE + ("Ows" ?Ớ) + ("owf" ?ờ) ; LATIN SMALL LETTER O WITH HORN AND GRAVE + ("OWF" ?Ờ) ; LATIN CAPITAL LETTER O WITH HORN AND GRAVE + ("Owf" ?Ờ) + ("owr" ?ở) ; LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + ("OWR" ?Ở) ; LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + ("Owr" ?Ở) + ("owx" ?ỡ) ; LATIN SMALL LETTER O WITH HORN AND TILDE + ("OWX" ?Ỡ) ; LATIN CAPITAL LETTER O WITH HORN AND TILDE + ("Owx" ?Ỡ) + ("owj" ?ợ) ; LATIN SMALL LETTER O WITH HORN AND DOT BELOW + ("OWJ" ?Ợ) ; LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + ("Owj" ?Ợ) + ("uj" ?ụ) ; LATIN SMALL LETTER U WITH DOT BELOW + ("UJ" ?Ụ) ; LATIN CAPITAL LETTER U WITH DOT BELOW + ("Uj" ?Ụ) + ("ur" ?ủ) ; LATIN SMALL LETTER U WITH HOOK ABOVE + ("UR" ?Ủ) ; LATIN CAPITAL LETTER U WITH HOOK ABOVE + ("Ur" ?Ủ) + ("uws" ?ứ) ; LATIN SMALL LETTER U WITH HORN AND ACUTE + ("UWS" ?Ứ) ; LATIN CAPITAL LETTER U WITH HORN AND ACUTE + ("Uws" ?Ứ) + ("uwf" ?ừ) ; LATIN SMALL LETTER U WITH HORN AND GRAVE + ("UWF" ?Ừ) ; LATIN CAPITAL LETTER U WITH HORN AND GRAVE + ("Uwf" ?Ừ) + ("uwr" ?ử) ; LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + ("UWR" ?Ử) ; LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + ("Uwr" ?Ử) + ("uwx" ?ữ) ; LATIN SMALL LETTER U WITH HORN AND TILDE + ("UWX" ?Ữ) ; LATIN CAPITAL LETTER U WITH HORN AND TILDE + ("Uwx" ?Ữ) + ("uwj" ?ự) ; LATIN SMALL LETTER U WITH HORN AND DOT BELOW + ("UWJ" ?Ự) ; LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + ("Uwj" ?Ự) + ("yf" ?ỳ) ; LATIN SMALL LETTER Y WITH GRAVE + ("YF" ?Ỳ) ; LATIN CAPITAL LETTER Y WITH GRAVE + ("Yf" ?Ỳ) + ("yj" ?ỵ) ; LATIN SMALL LETTER Y WITH DOT BELOW + ("YJ" ?Ỵ) ; LATIN CAPITAL LETTER Y WITH DOT BELOW + ("Yj" ?Ỵ) + ("yr" ?ỷ) ; LATIN SMALL LETTER Y WITH HOOK ABOVE + ("YR" ?Ỷ) ; LATIN CAPITAL LETTER Y WITH HOOK ABOVE + ("Yr" ?Ỷ) + ("yx" ?ỹ) ; LATIN SMALL LETTER Y WITH TILDE + ("YX" ?Ỹ) ; LATIN CAPITAL LETTER Y WITH TILDE + ("Yx" ?Ỹ) + ("dd" ?đ) ; LATIN SMALL LETTER D WITH STROKE + ("DD" ?Đ) ; LATIN CAPITAL LETTER D WITH STROKE + ("Dd" ?Đ) +;("$$" ?₫) ; U+20AB DONG SIGN (#### check) + + ("aff" ["af"]) + ("AFF" ["AF"]) + ("Aff" ["Af"]) + ("ass" ["as"]) + ("ASS" ["AS"]) + ("Ass" ["As"]) + ("aaa" ["aa"]) + ("AAA" ["AA"]) + ("Aaa" ["Aa"]) + ("axx" ["ax"]) + ("AXX" ["AX"]) + ("Axx" ["Ax"]) + ("eff" ["ef"]) + ("EFF" ["EF"]) + ("Eff" ["Ef"]) + ("ess" ["es"]) + ("ESS" ["ES"]) + ("Ess" ["Es"]) + ("eee" ["ee"]) + ("EEE" ["EE"]) + ("Eee" ["Ee"]) + ("iff" ["if"]) + ("IFF" ["IF"]) + ("Iff" ["If"]) + ("iss" ["is"]) + ("ISS" ["IS"]) + ("Iss" ["Is"]) + ("off" ["of"]) + ("OFF" ["OF"]) + ("Off" ["Of"]) + ("oss" ["os"]) + ("OSS" ["OS"]) + ("Oss" ["Os"]) + ("ooo" ["oo"]) + ("OOO" ["OO"]) + ("Ooo" ["Oo"]) + ("oxx" ["ox"]) + ("OXX" ["OX"]) + ("Oxx" ["Ox"]) + ("uff" ["uf"]) + ("UFF" ["UF"]) + ("Uff" ["Uf"]) + ("uss" ["us"]) + ("USS" ["US"]) + ("Uss" ["Us"]) + ("yss" ["ys"]) + ("YSS" ["YS"]) + ("Yss" ["Ys"]) + ("aww" ["aw"]) + ("AWW" ["AW"]) + ("Aww" ["Aw"]) + ("ixx" ["ix"]) + ("IXX" ["IX"]) + ("Ixx" ["Ix"]) + ("uxx" ["ux"]) + ("UXX" ["UX"]) + ("Uxx" ["ux"]) + ("oww" ["ow"]) + ("OWW" ["OW"]) + ("Oww" ["Ow"]) + ("uww" ["uw"]) + ("UWW" ["UW"]) + ("Uww" ["Uw"]) + ("ajj" ["aj"]) + ("AJJ" ["AJ"]) + ("Ajj" ["Aj"]) + ("arr" ["ar"]) + ("ARR" ["AR"]) + ("Arr" ["Ar"]) + ("ejj" ["ej"]) + ("EJJ" ["EJ"]) + ("Ejj" ["Ej"]) + ("err" ["er"]) + ("ERR" ["ER"]) + ("Err" ["Er"]) + ("exx" ["ex"]) + ("EXX" ["EX"]) + ("Exx" ["Ex"]) + ("irr" ["ir"]) + ("IRR" ["IR"]) + ("Irr" ["Ir"]) + ("ijj" ["ij"]) + ("IJJ" ["IJ"]) + ("Ijj" ["Ij"]) + ("ojj" ["oj"]) + ("OJJ" ["OJ"]) + ("Ojj" ["Oj"]) + ("orr" ["or"]) + ("ORR" ["OR"]) + ("Orr" ["Or"]) + ("ujj" ["uj"]) + ("UJJ" ["UJ"]) + ("Ujj" ["Uj"]) + ("urr" ["ur"]) + ("URR" ["UR"]) + ("Urr" ["Ur"]) + ("yff" ["yf"]) + ("YFF" ["YF"]) + ("Yff" ["Yf"]) + ("yjj" ["yj"]) + ("YJJ" ["YJ"]) + ("Yjj" ["Yj"]) + ("yrr" ["yr"]) + ("YRR" ["YR"]) + ("Yrr" ["Yr"]) + ("yxx" ["yx"]) + ("YXX" ["YX"]) + ("Yxx" ["Yx"]) + ("ddd" ["dd"]) + ("DDD" ["DD"]) + ("Ddd" ["Dd"]) +;("$$$" ["$$"]) + + ;; escape from composition + ("\\w" ?w) ; breve or horn + ("\\W" ?W) + ("\\a" ?a) ; a circumflex + ("\\A" ?A) ; A circumflex + ("\\e" ?e) ; e circumflex + ("\\E" ?E) ; E circumflex + ("\\o" ?o) ; o circumflex + ("\\O" ?O) ; O circumflex + ("\\s" ?s) ; acute + ("\\S" ?S) + ("\\f" ?f) ; grave + ("\\F" ?F) + ("\\r" ?r) ; hook above + ("\\R" ?R) + ("\\x" ?x) ; tilde + ("\\X" ?X) + ("\\j" ?j) ; dot below + ("\\J" ?J) + ("\\d" ?d) ; d-bar (d) + ("\\D" ?D) ; D-bar (d) + ("\\\\" ?\\) ; literal backslash +) + +;; Local Variables: +;; coding: utf-8 +;; End: + +;;; vntelex.el ends here diff --git a/lisp/leim/quail/vnvni.el b/lisp/leim/quail/vnvni.el new file mode 100644 index 00000000000..b130962f8f3 --- /dev/null +++ b/lisp/leim/quail/vnvni.el @@ -0,0 +1,305 @@ +;;; vnvni.el --- Quail package for Vietnamese by VNI method + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Werner Lemberg <wl@gnu.org> +;; Nguyen Thai Ngoc Duy <pclouds@gmail.com> +;; Keywords: multilingual, input method, Vietnamese + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; There are two commonly-used input methods for Vietnamese: Telex +;; (implemented in vntelex.el) and VNI (implemented in this file, +;; which was based on vntelex.el). + +;;; Code: + +(require 'quail) + + +(quail-define-package + "vietnamese-vni" ; NAME + "Vietnamese" ; LANGUAGE + "VV" ; TITLE + t ; GUIDANCE + "Vietnamese VNI input method + +Diacritics: + + effect postfix examples + ------------------------------ + circumflex 6 a6 -> â + breve 8 a8 -> ă + horn 7 o7 -> ơ + + acute 1 a1 -> á + grave 2 a2 -> à + hook above 3 a3 -> ả + tilde 4 a4 -> ã + dot below 5 a5 -> ạ + + d bar 9 d9 -> đ + +Combinations: + + A82 -> Ằ, o74 -> ỡ, etc. + +Doubling the postfix (but not in combinations) separates the letter +and postfix: E66 -> E6, a55 -> a5, etc. +" ; DOCSTRING + nil ; TRANSLATION-KEYS + t ; FORGET-LAST-SELECTION + nil ; DETERMINISTIC + nil ; KBD-TRANSLATE + nil ; SHOW-LAYOUT + nil ; CREATE-DECODE-MAP + nil ; MAXIMUM-SHORTEST + nil ; OVERLAY-PLIST + nil ; UPDATE-TRANSLATION-FUNCTION + nil ; CONVERSION-KEYS + t) ; SIMPLE + +(quail-define-rules + ("a2" ?à) ; LATIN SMALL LETTER A WITH GRAVE + ("A2" ?À) ; LATIN CAPITAL LETTER A WITH GRAVE + ("a1" ?á) ; LATIN SMALL LETTER A WITH ACUTE + ("A1" ?Á) ; LATIN CAPITAL LETTER A WITH ACUTE + ("a6" ?â) ; LATIN SMALL LETTER A WITH CIRCUMFLEX + ("A6" ?Â) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX + ("a4" ?ã) ; LATIN SMALL LETTER A WITH TILDE + ("A4" ?Ã) ; LATIN CAPITAL LETTER A WITH TILDE + ("e2" ?è) ; LATIN SMALL LETTER E WITH GRAVE + ("E2" ?È) ; LATIN CAPITAL LETTER E WITH GRAVE + ("e1" ?é) ; LATIN SMALL LETTER E WITH ACUTE + ("E1" ?É) ; LATIN CAPITAL LETTER E WITH ACUTE + ("e6" ?ê) ; LATIN SMALL LETTER E WITH CIRCUMFLEX + ("E6" ?Ê) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX + ("i2" ?ì) ; LATIN SMALL LETTER I WITH GRAVE + ("I2" ?Ì) ; LATIN CAPITAL LETTER I WITH GRAVE + ("i1" ?í) ; LATIN SMALL LETTER I WITH ACUTE + ("I1" ?Í) ; LATIN CAPITAL LETTER I WITH ACUTE + ("o2" ?ò) ; LATIN SMALL LETTER O WITH GRAVE + ("O2" ?Ò) ; LATIN CAPITAL LETTER O WITH GRAVE + ("o1" ?ó) ; LATIN SMALL LETTER O WITH ACUTE + ("O1" ?Ó) ; LATIN CAPITAL LETTER O WITH ACUTE + ("o6" ?ô) ; LATIN SMALL LETTER O WITH CIRCUMFLEX + ("O6" ?Ô) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX + ("o4" ?õ) ; LATIN SMALL LETTER O WITH TILDE + ("O4" ?Õ) ; LATIN CAPITAL LETTER O WITH TILDE + ("u2" ?ù) ; LATIN SMALL LETTER U WITH GRAVE + ("U2" ?Ù) ; LATIN CAPITAL LETTER U WITH GRAVE + ("u1" ?ú) ; LATIN SMALL LETTER U WITH ACUTE + ("U1" ?Ú) ; LATIN CAPITAL LETTER U WITH ACUTE + ("y1" ?ý) ; LATIN SMALL LETTER Y WITH ACUTE + ("Y1" ?Ý) ; LATIN CAPITAL LETTER Y WITH ACUTE + ("a8" ?ă) ; LATIN SMALL LETTER A WITH BREVE + ("A8" ?Ă) ; LATIN CAPITAL LETTER A WITH BREVE + ("i4" ?ĩ) ; LATIN SMALL LETTER I WITH TILDE + ("I4" ?Ĩ) ; LATIN CAPITAL LETTER I WITH TILDE + ("u4" ?ũ) ; LATIN SMALL LETTER U WITH TILDE + ("U4" ?Ũ) ; LATIN CAPITAL LETTER U WITH TILDE + ("o7" ?ơ) ; LATIN SMALL LETTER O WITH HORN + ("O7" ?Ơ) ; LATIN CAPITAL LETTER O WITH HORN + ("u7" ?ư) ; LATIN SMALL LETTER U WITH HORN + ("U7" ?Ư) ; LATIN CAPITAL LETTER U WITH HORN + ("a5" ?ạ) ; LATIN SMALL LETTER A WITH DOT BELOW + ("A5" ?Ạ) ; LATIN CAPITAL LETTER A WITH DOT BELOW + ("a3" ?ả) ; LATIN SMALL LETTER A WITH HOOK ABOVE + ("A3" ?Ả) ; LATIN CAPITAL LETTER A WITH HOOK ABOVE + ("a61" ?ấ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + ("A61" ?Ấ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + ("a62" ?ầ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + ("A62" ?Ầ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + ("a63" ?ẩ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND HO6K ABOVE + ("A63" ?Ẩ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HO6K ABOVE + ("a64" ?ẫ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + ("A64" ?Ẫ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + ("a65" ?ậ) ; LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + ("A65" ?Ậ) ; LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + ("a81" ?ắ) ; LATIN SMALL LETTER A WITH BREVE AND ACUTE + ("A81" ?Ắ) ; LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + ("a82" ?ằ) ; LATIN SMALL LETTER A WITH BREVE AND GRAVE + ("A82" ?Ằ) ; LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + ("a83" ?ẳ) ; LATIN SMALL LETTER A WITH BREVE AND HO6K ABOVE + ("A83" ?Ẳ) ; LATIN CAPITAL LETTER A WITH BREVE AND HO6K ABOVE + ("a84" ?ẵ) ; LATIN SMALL LETTER A WITH BREVE AND TILDE + ("A84" ?Ẵ) ; LATIN CAPITAL LETTER A WITH BREVE AND TILDE + ("a85" ?ặ) ; LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + ("A85" ?Ặ) ; LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + ("e5" ?ẹ) ; LATIN SMALL LETTER E WITH DOT BELOW + ("E5" ?Ẹ) ; LATIN CAPITAL LETTER E WITH DOT BELOW + ("e3" ?ẻ) ; LATIN SMALL LETTER E WITH HO6K ABOVE + ("E3" ?Ẻ) ; LATIN CAPITAL LETTER E WITH HO6K ABOVE + ("e4" ?ẽ) ; LATIN SMALL LETTER E WITH TILDE + ("E4" ?Ẽ) ; LATIN CAPITAL LETTER E WITH TILDE + ("e61" ?ế) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + ("E61" ?Ế) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + ("e62" ?ề) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + ("E62" ?Ề) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + ("e63" ?ể) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND HO6K ABOVE + ("E63" ?Ể) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HO6K ABOVE + ("e64" ?ễ) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + ("E64" ?Ễ) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + ("e65" ?ệ) ; LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + ("E65" ?Ệ) ; LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + ("i3" ?ỉ) ; LATIN SMALL LETTER I WITH HO6K ABOVE + ("I3" ?Ỉ) ; LATIN CAPITAL LETTER I WITH HO6K ABOVE + ("i5" ?ị) ; LATIN SMALL LETTER I WITH DOT BELOW + ("I5" ?Ị) ; LATIN CAPITAL LETTER I WITH DOT BELOW + ("o5" ?ọ) ; LATIN SMALL LETTER O WITH DOT BELOW + ("O5" ?Ọ) ; LATIN CAPITAL LETTER O WITH DOT BELOW + ("o3" ?ỏ) ; LATIN SMALL LETTER O WITH HO6K ABOVE + ("O3" ?Ỏ) ; LATIN CAPITAL LETTER O WITH HO6K ABOVE + ("o61" ?ố) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + ("O61" ?Ố) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + ("o62" ?ồ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + ("O62" ?Ồ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + ("o63" ?ổ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND HO6K ABOVE + ("O63" ?Ổ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HO6K ABOVE + ("o64" ?ỗ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + ("O64" ?Ỗ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + ("o65" ?ộ) ; LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELO7 + ("O65" ?Ộ) ; LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELO7 + ("o71" ?ớ) ; LATIN SMALL LETTER O WITH HORN AND ACUTE + ("O71" ?Ớ) ; LATIN CAPITAL LETTER O WITH HORN AND ACUTE + ("o72" ?ờ) ; LATIN SMALL LETTER O WITH HORN AND GRAVE + ("O72" ?Ờ) ; LATIN CAPITAL LETTER O WITH HORN AND GRAVE + ("o73" ?ở) ; LATIN SMALL LETTER O WITH HORN AND HO6K ABOVE + ("O73" ?Ở) ; LATIN CAPITAL LETTER O WITH HORN AND HO6K ABOVE + ("o74" ?ỡ) ; LATIN SMALL LETTER O WITH HORN AND TILDE + ("O74" ?Ỡ) ; LATIN CAPITAL LETTER O WITH HORN AND TILDE + ("o75" ?ợ) ; LATIN SMALL LETTER O WITH HORN AND DOT BELO7 + ("O75" ?Ợ) ; LATIN CAPITAL LETTER O WITH HORN AND DOT BELO7 + ("u5" ?ụ) ; LATIN SMALL LETTER U WITH DOT BELO7 + ("U5" ?Ụ) ; LATIN CAPITAL LETTER U WITH DOT BELO7 + ("u3" ?ủ) ; LATIN SMALL LETTER U WITH HO6K ABOVE + ("U3" ?Ủ) ; LATIN CAPITAL LETTER U WITH HO6K ABOVE + ("u71" ?ứ) ; LATIN SMALL LETTER U WITH HORN AND ACUTE + ("U71" ?Ứ) ; LATIN CAPITAL LETTER U WITH HORN AND ACUTE + ("u72" ?ừ) ; LATIN SMALL LETTER U WITH HORN AND GRAVE + ("U72" ?Ừ) ; LATIN CAPITAL LETTER U WITH HORN AND GRAVE + ("u73" ?ử) ; LATIN SMALL LETTER U WITH HORN AND HO6K ABOVE + ("U73" ?Ử) ; LATIN CAPITAL LETTER U WITH HORN AND HO6K ABOVE + ("u74" ?ữ) ; LATIN SMALL LETTER U WITH HORN AND TILDE + ("U74" ?Ữ) ; LATIN CAPITAL LETTER U WITH HORN AND TILDE + ("u75" ?ự) ; LATIN SMALL LETTER U WITH HORN AND DOT BELO7 + ("U75" ?Ự) ; LATIN CAPITAL LETTER U WITH HORN AND DOT BELO7 + ("y2" ?ỳ) ; LATIN SMALL LETTER Y WITH GRAVE + ("Y2" ?Ỳ) ; LATIN CAPITAL LETTER Y WITH GRAVE + ("y5" ?ỵ) ; LATIN SMALL LETTER Y WITH DOT BELO7 + ("Y5" ?Ỵ) ; LATIN CAPITAL LETTER Y WITH DOT BELO7 + ("y3" ?ỷ) ; LATIN SMALL LETTER Y WITH HO6K ABOVE + ("Y3" ?Ỷ) ; LATIN CAPITAL LETTER Y WITH HO6K ABOVE + ("y4" ?ỹ) ; LATIN SMALL LETTER Y WITH TILDE + ("Y4" ?Ỹ) ; LATIN CAPITAL LETTER Y WITH TILDE + ("d9" ?đ) ; LATIN SMALL LETTER D WITH STROKE + ("D9" ?Đ) ; LATIN CAPITAL LETTER D WITH STROKE +;("$$" ?₫) ; U+20AB DONG SIGN (#### check) + + ("a22" ["a22"]) + ("A22" ["A2"]) + ("a11" ["a1"]) + ("A11" ["A1"]) + ("a66"' ["a6"]) + ("A66"' ["A6"]) + ("a44" ["a4"]) + ("A44" ["A4"]) + ("e22" ["e2"]) + ("E22" ["E2"]) + ("e11" ["e1"]) + ("E11" ["E1"]) + ("e66" ["e6"]) + ("E66" ["E6"]) + ("i22" ["i2"]) + ("I22" ["I2"]) + ("i11" ["i1"]) + ("I11" ["I1"]) + ("o22" ["o2"]) + ("O22" ["O2"]) + ("o11" ["o1"]) + ("O11" ["O1"]) + ("o66" ["o6"]) + ("O66" ["O6"]) + ("o44" ["o4"]) + ("O44" ["O4"]) + ("u22" ["u2"]) + ("U22" ["U2"]) + ("u11" ["u1"]) + ("U11" ["U1"]) + ("y11" ["y1"]) + ("Y11" ["Y1"]) + ("a88" ["a8"]) + ("A88" ["A8"]) + ("i44" ["i4"]) + ("I44" ["I4"]) + ("u44" ["u4"]) + ("U44" ["u4"]) + ("o77" ["o7"]) + ("O77" ["O7"]) + ("u77" ["u7"]) + ("U77" ["U7"]) + ("a55" ["a5"]) + ("A55" ["A5"]) + ("a33" ["a3"]) + ("A33" ["A3"]) + ("e55" ["e5"]) + ("E55" ["E5"]) + ("e33" ["e3"]) + ("E33" ["E3"]) + ("e44" ["e4"]) + ("E44" ["E4"]) + ("i33" ["i3"]) + ("I33" ["I3"]) + ("i55" ["i5"]) + ("I55" ["I5"]) + ("o55" ["o5"]) + ("O55" ["O5"]) + ("o33" ["o3"]) + ("O33" ["O3"]) + ("u55" ["u5"]) + ("U55" ["U5"]) + ("u33" ["u3"]) + ("U33" ["U3"]) + ("y22" ["y2"]) + ("Y22" ["Y2"]) + ("y55" ["y5"]) + ("Y55" ["Y5"]) + ("y33" ["y3"]) + ("Y33" ["Y3"]) + ("y44" ["y4"]) + ("Y44" ["Y4"]) + ("d9" ["d9"]) + ("D99" ["D9"]) +;("$$$" ["$$"]) + + ;; escape from composition + ("\\1" ?1) + ("\\2" ?2) + ("\\3" ?3) + ("\\4" ?4) + ("\\5" ?5) + ("\\6" ?6) + ("\\7" ?7) + ("\\8" ?8) + ("\\9" ?9) + ("\\\\" ?\\)) ; literal backslash + + +;; Local Variables: +;; coding: utf-8 +;; End: diff --git a/lisp/leim/quail/welsh.el b/lisp/leim/quail/welsh.el new file mode 100644 index 00000000000..fa72dc5c27e --- /dev/null +++ b/lisp/leim/quail/welsh.el @@ -0,0 +1,201 @@ +;;; welsh.el --- Quail package for inputting Welsh characters -*-coding: utf-8;-*- + +;; Copyright (C) 2001-2013 Free Software Foundation, Inc. + +;; Author: Dave Love <fx@gnu.org> +;; Keywords: i18n + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Welsh input following the Yudit map by david@sheetmusic.org.uk. + +;;; Code: + +(require 'quail) + +(quail-define-package + "welsh" "Welsh" "Ŵ" t + "Welsh postfix input method" + nil t nil nil nil nil nil nil nil nil t) + +(quail-define-rules + ("A\\" ?À) + ("A/" ?Á) + ("A^" ?Â) + ("A+" ?Â) + ("A\"" ?Ä) + ("a\\" ?à) + ("a/" ?á) + ("a^" ?â) + ("a+" ?â) + ("a\"" ?ä) + + ("E\\" ?È) + ("E/" ?É) + ("E^" ?Ê) + ("E+" ?Ê) + ("E\"" ?Ë) + ("e\\" ?è) + ("e/" ?é) + ("e^" ?ê) + ("e+" ?ê) + ("e\"" ?ë) + + ("I\\" ?Ì) + ("I/" ?Í) + ("I^" ?Î) + ("I+" ?Î) + ("I\"" ?Ï) + ("i\\" ?ì) + ("i/" ?í) + ("i^" ?î) + ("i+" ?î) + ("i\"" ?ï) + + ("O\\" ?Ò) + ("O/" ?Ó) + ("O^" ?Ô) + ("O+" ?Ô) + ("O\"" ?Ö) + ("o\\" ?ò) + ("o/" ?ó) + ("o^" ?ô) + ("o+" ?ô) + ("o\"" ?ö) + + ("U\\" ?Ù) + ("U/" ?Ú) + ("U^" ?Û) + ("U+" ?Û) + ("U\"" ?Ü) + ("u\\" ?ù) + ("u/" ?ú) + ("u^" ?û) + ("u+" ?û) + ("u\"" ?ü) + + ("Y\\" ?Ỳ) + ("Y/" ?Ý) + ("Y^" ?Ŷ) + ("Y+" ?Ŷ) + ("Y\"" ?Ÿ) + ("y\\" ?ỳ) + ("y/" ?ý) + ("y\"" ?ÿ) + ("y^" ?ŷ) + ("y+" ?ŷ) + + ("W\\" ?Ẁ) + ("W/" ?Ẃ) + ("W^" ?Ŵ) + ("W+" ?Ŵ) + ("W\"" ?Ẅ) + ("w\\" ?ẁ) + ("w/" ?ẃ) + ("w^" ?ŵ) + ("w+" ?ŵ) + ("w\"" ?ẅ) + + ;; "hawlfraint" (copyright). Dyma arwyddlun hawlfraint. + ("(h)" ?ⓗ)) + +;; (quail-define-package +;; "welsh" "Welsh" "Ŵ" t +;; "Welsh postfix input method, using Latin-8" +;; nil t nil nil nil nil nil nil nil nil t) + +;; (quail-define-rules +;; ("A\\" ?À) +;; ("A/" ?Á) +;; ("A^" ?Â) +;; ("A+" ?Â) +;; ("A\"" ?Ä) +;; ("a\\" ?à) +;; ("a/" ?á) +;; ("a^" ?â) +;; ("a+" ?â) +;; ("a\"" ?ä) + +;; ("E\\" ?È) +;; ("E/" ?É) +;; ("E^" ?Ê) +;; ("E+" ?Ê) +;; ("E\"" ?Ë) +;; ("e\\" ?è) +;; ("e/" ?é) +;; ("e^" ?ê) +;; ("e+" ?ê) +;; ("e\"" ?ë) + +;; ("I\\" ?Ì) +;; ("I/" ?Í) +;; ("I^" ?Î) +;; ("I+" ?Î) +;; ("I\"" ?Ï) +;; ("i\\" ?ì) +;; ("i/" ?í) +;; ("i^" ?î) +;; ("i+" ?î) +;; ("i\"" ?ï) + +;; ("O\\" ?Ò) +;; ("O/" ?Ó) +;; ("O^" ?Ô) +;; ("O+" ?Ô) +;; ("O\"" ?Ö) +;; ("o\\" ?ò) +;; ("o/" ?ó) +;; ("o^" ?ô) +;; ("o+" ?ô) +;; ("o\"" ?ö) + +;; ("U\\" ?Ù) +;; ("U/" ?Ú) +;; ("U^" ?Û) +;; ("U+" ?Û) +;; ("U\"" ?Ü) +;; ("u\\" ?ù) +;; ("u/" ?ú) +;; ("u^" ?û) +;; ("u+" ?û) +;; ("u\"" ?ü) + +;; ("Y\\" ?¬) +;; ("Y/" ?Ý) +;; ("Y^" ?Þ) +;; ("Y+" ?Þ) +;; ("Y\"" ?¯) +;; ("y\\" ?¼) +;; ("y/" ?ý) +;; ("y\"" ?ÿ) +;; ("y^" ?þ) +;; ("y+" ?þ) + +;; ("W\\" ?¨) +;; ("W/" ?ª) +;; ("W^" ?Ð) +;; ("W+" ?Ð) +;; ("W\"" ?½) +;; ("w\\" ?¸) +;; ("w/" ?º) +;; ("w^" ?ð) +;; ("w+" ?ð) +;; ("w\"" ?¾)) + + +;;; welsh.el ends here diff --git a/lisp/loadup.el b/lisp/loadup.el index fe4fe1fe571..dc284803c57 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -282,7 +282,7 @@ ;; This file doesn't exist when building a development version of Emacs ;; from the repository. It is generated just after temacs is built. -(load "leim-list.el" t) +(load "leim/leim-list.el" t) ;; If you want additional libraries to be preloaded and their ;; doc strings kept in the DOC file rather than in core, diff --git a/lisp/startup.el b/lisp/startup.el index 0b1c55b36a0..c7b171055eb 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -499,8 +499,6 @@ It is the default value of the variable `top-level'." ;; available input methods. (let ((tail load-path) (lispdir (expand-file-name "../lisp" data-directory)) - ;; For out-of-tree builds, leim-list is generated in the build dir. - (leimdir (expand-file-name "../leim" doc-directory)) dir) (while tail (setq dir (car tail)) @@ -508,12 +506,8 @@ It is the default value of the variable `top-level'." (load (expand-file-name "subdirs.el") t t t)) ;; Do not scan standard directories that won't contain a leim-list.el. ;; http://lists.gnu.org/archive/html/emacs-devel/2009-10/msg00502.html - ;; Also skip leim/leim-list.el, since we preloaded that one. + ;; (Except the preloaded one in lisp/leim.) (or (string-prefix-p lispdir dir) - ;; Not supposed to be subdirs.el in leim, but someone - ;; might have added one and be keeping their own leim-list - ;; files in subdirs of leim. - (string-equal leimdir dir) (let ((default-directory dir)) (load (expand-file-name "leim-list.el") t t t))) ;; We don't use a dolist loop and we put this "setq-cdr" command at |