]> code.delx.au - gnu-emacs/blobdiff - leim/quail/cyrillic.el
Merged from emacs@sv.gnu.org
[gnu-emacs] / leim / quail / cyrillic.el
index 0a1deae285977837ac0701c9072522d92777d430..655c2053222227b4c785b3bb3a3342974b82b9d1 100644 (file)
@@ -1,9 +1,13 @@
-;;; quail/cyrillic.el -- Quail package for inputting Cyrillic characters
+;;; cyrillic.el --- Quail package for inputting Cyrillic characters
 
-;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
+;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006
+;;   Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2003
+;;   National Institute of Advanced Industrial Science and Technology (AIST)
+;;   Registration Number H14PRO021
 
-;; Keywords: multilingual, input method, Cyrillic
+;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
+;; Keywords: multilingual, input method, Cyrillic, i18n
 
 ;; This file is part of GNU Emacs.
 
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; These methods use a mixture of 8859-5 and Unicode.  Quail, used
+;; with ucs-tables provides suport 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 superceeded 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 conviniently 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
- "cyrillic-jcuken" "Cyrillic" "\e,L69\e(B" nil
- "\e,L9FC:5=\e(B keyboard layout widely used in Russia (ISO 8859-5 encoding)"
- nil t t t t)
+ "russian-typewriter" "Russian" "\e,L69\e(B" nil
+ "\e,L9FC:5=\e(B 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) -_ =+ \e,L!\e(B
-;;   \e,L9\e(B  \e,LF\e(B  \e,LC\e(B  \e,L:\e(B  \e,L5\e(B  \e,L=\e(B  \e,L3\e(B  \e,LH\e(B  \e,LI\e(B  \e,L7\e(B  \e,LE\e(B  \e,Lj\e(B
-;;    \e,LD\e(B  \e,LK\e(B  \e,L2\e(B  \e,L0\e(B  \e,L?\e(B  \e,L@\e(B  \e,L>\e(B  \e,L;\e(B  \e,L4\e(B \e,L6\e(B  \e,LM\e(B
+;;  1! 2" 3' 4* 5: 6, 7. 8; 9( 0) -_ =+ \e,L!\e(B
+;;   \e,L9\e(B  \e,LF\e(B  \e,LC\e(B  \e,L:\e(B  \e,L5\e(B  \e,L=\e(B  \e,L3\e(B  \e,LH\e(B  \e,LI\e(B  \e,L7\e(B  \e,LE\e(B  \e,LJ\e(B
+;;    \e,LD\e(B  \e,LK\e(B  \e,L2\e(B  \e,L0\e(B  \e,L?\e(B  \e,L@\e(B  \e,L>\e(B  \e,L;\e(B  \e,L4\e(B  \e,L6\e(B  \e,LM\e(B
 ;;     \e,LO\e(B  \e,LG\e(B  \e,LA\e(B  \e,L<\e(B  \e,L8\e(B  \e,LB\e(B  \e,LL\e(B  \e,L1\e(B  \e,LN\e(B  /?
 
 (quail-define-rules
  ("," ?\e,LQ\e(B)
  ("." ?\e,Ln\e(B)
  ("/" ?/)
+
  ("!" ?!)
- ("@" ?@)
- ("#" ?#)
- ("$" ?\")
+ ("@" ?\")
+ ("#" ?')
+ ("$" ?*)
  ("%" ?:)
  ("^" ?,)
  ("&" ?.)
+ ("*" ?\;)
+ ("(" ?\()
+ (")" ?\))
+ ("_" ?_)
+ ("+" ?+)
+ ("~" ?\e,L!\e(B)
+ ("Q" ?\e,L9\e(B)
+ ("W" ?\e,LF\e(B)
+ ("E" ?\e,LC\e(B)
+ ("R" ?\e,L:\e(B)
+ ("T" ?\e,L5\e(B)
+ ("Y" ?\e,L=\e(B)
+ ("U" ?\e,L3\e(B)
+ ("I" ?\e,LH\e(B)
+ ("O" ?\e,LI\e(B)
+ ("P" ?\e,L7\e(B)
+ ("{" ?\e,LE\e(B)
+ ("}" ?\e,LJ\e(B)
+ ("A" ?\e,LD\e(B)
+ ("S" ?\e,LK\e(B)
+ ("D" ?\e,L2\e(B)
+ ("F" ?\e,L0\e(B)
+ ("G" ?\e,L?\e(B)
+ ("H" ?\e,L@\e(B)
+ ("J" ?\e,L>\e(B)
+ ("K" ?\e,L;\e(B)
+ ("L" ?\e,L4\e(B)
+ (":" ?\e,L6\e(B)
+ ("\"" ?\e,LM\e(B)
+ ("|" ?|)
+ ("Z" ?\e,LO\e(B)
+ ("X" ?\e,LG\e(B)
+ ("C" ?\e,LA\e(B)
+ ("V" ?\e,L<\e(B)
+ ("B" ?\e,L8\e(B)
+ ("N" ?\e,LB\e(B)
+ ("M" ?\e,LL\e(B)
+ ("<" ?\e,L1\e(B)
+ (">" ?\e,LN\e(B)
+ ("?" ??)
+ )
+
+;; 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" "\e,L69\e(B" nil
+     "\e,L9FC:5=\e(B 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
+ "\e,L9FC:5=\e(B Russian computer layout"
+ nil t t t t nil nil nil nil nil t)
+
+;;  1! 2" 3\e,Lp\e(B 4; 5% 6: 7? 8* 9( 0) -_ =+ \e,Lq!\e(B
+;;   \e,L9\e(B  \e,LF\e(B  \e,LC\e(B  \e,L:\e(B  \e,L5\e(B  \e,L=\e(B  \e,L3\e(B  \e,LH\e(B  \e,LI\e(B  \e,L7\e(B  \e,LE\e(B  \e,LJ\e(B
+;;    \e,LD\e(B  \e,LK\e(B  \e,L2\e(B  \e,L0\e(B  \e,L?\e(B  \e,L@\e(B  \e,L>\e(B  \e,L;\e(B  \e,L4\e(B  \e,L6\e(B  \e,LM\e(B
+;;     \e,LO\e(B  \e,LG\e(B  \e,LA\e(B  \e,L<\e(B  \e,L8\e(B  \e,LB\e(B  \e,LL\e(B  \e,L1\e(B  \e,LN\e(B  .,
+
+(quail-define-rules
+ ("1" ?1)
+ ("2" ?2)
+ ("3" ?3)
+ ("4" ?4)
+ ("5" ?5)
+ ("6" ?6)
+ ("7" ?7)
+ ("8" ?8)
+ ("9" ?9)
+ ("0" ?0)
+ ("-" ?-)
+ ("=" ?=)
+ ("`" ?\e,Lq\e(B)
+ ("q" ?\e,LY\e(B)
+ ("w" ?\e,Lf\e(B)
+ ("e" ?\e,Lc\e(B)
+ ("r" ?\e,LZ\e(B)
+ ("t" ?\e,LU\e(B)
+ ("y" ?\e,L]\e(B)
+ ("u" ?\e,LS\e(B)
+ ("i" ?\e,Lh\e(B)
+ ("o" ?\e,Li\e(B)
+ ("p" ?\e,LW\e(B)
+ ("[" ?\e,Le\e(B)
+ ("]" ?\e,Lj\e(B)
+ ("a" ?\e,Ld\e(B)
+ ("s" ?\e,Lk\e(B)
+ ("d" ?\e,LR\e(B)
+ ("f" ?\e,LP\e(B)
+ ("g" ?\e,L_\e(B)
+ ("h" ?\e,L`\e(B)
+ ("j" ?\e,L^\e(B)
+ ("k" ?\e,L[\e(B)
+ ("l" ?\e,LT\e(B)
+ (";" ?\e,LV\e(B)
+ ("'" ?\e,Lm\e(B)
+ ("\\" ?\\)
+ ("z" ?\e,Lo\e(B)
+ ("x" ?\e,Lg\e(B)
+ ("c" ?\e,La\e(B)
+ ("v" ?\e,L\\e(B)
+ ("b" ?\e,LX\e(B)
+ ("n" ?\e,Lb\e(B)
+ ("m" ?\e,Ll\e(B)
+ ("," ?\e,LQ\e(B)
+ ("." ?\e,Ln\e(B)
+ ("/" ?.)
+ ("!" ?!)
+ ("@" ?\")
+ ("#" ?\e,Lp\e(B)
+ ("$" ?\;)
+ ("%" ?%)
+ ("^" ?:)
+ ("&" ??)
  ("*" ?*)
  ("(" ?()
 (")" ?))
+ (")" ?))
  ("_" ?_)
  ("+" ?+)
  ("~" ?\e,L!\e(B)
  ("M" ?\e,LL\e(B)
  ("<" ?\e,L1\e(B)
  (">" ?\e,LN\e(B)
- ("?" ??))
+ ("?" ?,))
 
-;;
+;; 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" "\e,L6\e(BM" nil
  "\e,L)*5@B7\e(B-\e,L#,\e(B keyboard layout based on JUS.I.K1.004 (ISO 8859-5 encoding)"
- nil t t t t)
+ nil t t t t nil nil nil nil nil t)
 
 ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
 ;;   \e,L)\e(B  \e,L*\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L#\e(B
  ("," ?,)
  ("." ?.)
  ("/" ?-)
+
  ("!" ?!)
  ("@" ?\")
  ("#" ?#)
 (quail-define-package
  "cyrillic-serbian" "Cyrillic" "\e,L6\e(BS" nil
  "\e,L)*5@B7\e(B-\e,L"+\e(B keyboard layout based on JUS.I.K1.005 (ISO 8859-5 encoding)"
                    nil t t t t)
nil t t t t nil nil nil nil nil t)
 
 ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
 ;;   \e,L)\e(B  \e,L*\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L"\e(B
  ("," ?,)
  ("." ?.)
  ("/" ?-)
+
  ("!" ?!)
  ("@" ?\")
  ("#" ?#)
 
 ;;
 
+;; 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" "\e,L6\e(BB" nil
+;;  "\e,L)*5@B7\e(B-\e,L&.\e(B 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= /? +* <>
+;; ;;   \e,L)\e(B  \e,L*\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L&\e(B
+;; ;;    \e,L0\e(B  \e,LA\e(B  \e,L4\e(B  \e,LD\e(B  \e,L3\e(B  \e,LE\e(B  \e,L(\e(B  \e,L:\e(B  \e,L;\e(B  \e,LG\e(B  \e,L.\e(B  \e,L6\e(B
+;; ;;     \e,L%\e(B  \e,L/\e(B  \e,LF\e(B  \e,L2\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B  ,; .: -_
+
+;; (quail-define-rules
+;;  ("-" ?/)
+;;  ("=" ?+)
+;;  ("`" ?<)
+;;  ("q" ?\e,Ly\e(B)
+;;  ("w" ?\e,Lz\e(B)
+;;  ("e" ?\e,LU\e(B)
+;;  ("r" ?\e,L`\e(B)
+;;  ("t" ?\e,Lb\e(B)
+;;  ("y" ?\e,LW\e(B)
+;;  ("u" ?\e,Lc\e(B)
+;;  ("i" ?\e,LX\e(B)
+;;  ("o" ?\e,L^\e(B)
+;;  ("p" ?\e,L_\e(B)
+;;  ("[" ?\e,Lh\e(B)
+;;  ("]" ?\e,Lv\e(B)
+;;  ("a" ?\e,LP\e(B)
+;;  ("s" ?\e,La\e(B)
+;;  ("d" ?\e,LT\e(B)
+;;  ("f" ?\e,Ld\e(B)
+;;  ("g" ?\e,LS\e(B)
+;;  ("h" ?\e,Le\e(B)
+;;  ("j" ?\e,Lx\e(B)
+;;  ("k" ?\e,LZ\e(B)
+;;  ("l" ?\e,L[\e(B)
+;;  (";" ?\e,Lg\e(B)
+;;  ("'" ?\e,L~\e(B)
+;;  ("\\" ?\e,LV\e(B)
+;;  ("z" ?\e,Lu\e(B)
+;;  ("x" ?\e,L\7f\e(B)
+;;  ("c" ?\e,Lf\e(B)
+;;  ("v" ?\e,LR\e(B)
+;;  ("b" ?\e,LQ\e(B)
+;;  ("n" ?\e,L]\e(B)
+;;  ("m" ?\e,L\\e(B)
+;;  ("/" ?-)
+
+;;  ("@" ?\")
+;;  ("^" ?&)
+;;  ("&" ?')
+;;  ("*" ?\()
+;;  ("(" ?\))
+;;  (")" ?=)
+;;  ("_" ??)
+;;  ("+" ?*)
+;;  ("~" ?>)
+;;  ("Q" ?\e,L)\e(B)
+;;  ("W" ?\e,L*\e(B)
+;;  ("E" ?\e,L5\e(B)
+;;  ("R" ?\e,L@\e(B)
+;;  ("T" ?\e,LB\e(B)
+;;  ("Y" ?\e,L7\e(B)
+;;  ("U" ?\e,LC\e(B)
+;;  ("I" ?\e,L8\e(B)
+;;  ("O" ?\e,L>\e(B)
+;;  ("P" ?\e,L?\e(B)
+;;  ("{" ?\e,LH\e(B)
+;;  ("}" ?\e,L&\e(B)
+;;  ("A" ?\e,L0\e(B)
+;;  ("S" ?\e,LA\e(B)
+;;  ("D" ?\e,L4\e(B)
+;;  ("F" ?\e,LD\e(B)
+;;  ("G" ?\e,L3\e(B)
+;;  ("H" ?\e,LE\e(B)
+;;  ("J" ?\e,L(\e(B)
+;;  ("K" ?\e,L:\e(B)
+;;  ("L" ?\e,L;\e(B)
+;;  (":" ?\e,LG\e(B)
+;;  ("\"" ?\e,L.\e(B)
+;;  ("|" ?\e,L6\e(B)
+;;  ("Z" ?\e,L%\e(B)
+;;  ("X" ?\e,L/\e(B)
+;;  ("C" ?\e,LF\e(B)
+;;  ("V" ?\e,L2\e(B)
+;;  ("B" ?\e,L1\e(B)
+;;  ("N" ?\e,L=\e(B)
+;;  ("M" ?\e,L<\e(B)
+;;  ("<" ?\;)
+;;  (">" ?:)
+;;  ("?" ?_))
+
+;;
+
+;; 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 keyborad 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-beylorussian" "Cyrillic" "\e,L6\e(BB" nil
- "\e,L)*5@B7\e(B-\e,L&.\e(B BEYLORUSSIAN (ISO 8859-5 encoding)"
- nil t t t t)
+ "cyrillic-ukrainian" "Ukrainian" "\e,L6\e(BU" nil
+ "\e,L$'5@B7\e(B-\e,L&.\e(B UKRAINIAN (ISO 8859-5 encoding)
+
+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= /? +* <>
-;;   \e,L)\e(B  \e,L*\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L&\e(B
+;;   \e,L$\e(B  \e,L'\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L&\e(B
 ;;    \e,L0\e(B  \e,LA\e(B  \e,L4\e(B  \e,LD\e(B  \e,L3\e(B  \e,LE\e(B  \e,L(\e(B  \e,L:\e(B  \e,L;\e(B  \e,LG\e(B  \e,L.\e(B  \e,L6\e(B
 ;;     \e,L%\e(B  \e,L/\e(B  \e,LF\e(B  \e,L2\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B  ,; .: -_
 
  ("-" ?/)
  ("=" ?+)
  ("`" ?<)
- ("q" ?\e,Ly\e(B)
- ("w" ?\e,Lz\e(B)
+ ("q" ?\e,Lt\e(B)
+ ("w" ?\e,Lw\e(B)
  ("e" ?\e,LU\e(B)
  ("r" ?\e,L`\e(B)
  ("t" ?\e,Lb\e(B)
  ("," ?,)
  ("." ?.)
  ("/" ?-)
+
  ("!" ?!)
  ("@" ?\")
  ("#" ?#)
  ("_" ??)
  ("+" ?*)
  ("~" ?>)
- ("Q" ?\e,L)\e(B)
- ("W" ?\e,L*\e(B)
+ ("Q" ?\e,L$\e(B)
+ ("W" ?\e,L'\e(B)
  ("E" ?\e,L5\e(B)
  ("R" ?\e,L@\e(B)
  ("T" ?\e,LB\e(B)
  (">" ?:)
  ("?" ?_))
 
-;;
-
-(quail-define-package 
- "cyrillic-ukrainian" "Cyrillic" "\e,L6\e(BU" nil
- "\e,L$'5@B7\e(B-\e,L&.\e(B UKRAINIAN (ISO 8859-5 encoding)
 
-Sorry, but 'ghe with upturn' is not included in ISO 8859-5"
- nil t t t t)
+(quail-define-package
+ "ukrainian-computer" "Ukrainian" "UK" nil
+ "\e$,1(9(F(C(:(5(=\e(B 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= /? +* <>
-;;   \e,L$\e(B  \e,L'\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,L7\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,L&\e(B
-;;    \e,L0\e(B  \e,LA\e(B  \e,L4\e(B  \e,LD\e(B  \e,L3\e(B  \e,LE\e(B  \e,L(\e(B  \e,L:\e(B  \e,L;\e(B  \e,LG\e(B  \e,L.\e(B  \e,L6\e(B
-;;     \e,L%\e(B  \e,L/\e(B  \e,LF\e(B  \e,L2\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B  ,; .: -_
+;;  ' 1! 2" 3\e$,1uV\e(B 4; 5% 6: 7? 8* 9( 0) -_ =+
+;;   \e$,1(9\e(B  \e$,1(F\e(B  \e$,1(C\e(B  \e$,1(:\e(B  \e$,1(5\e(B  \e$,1(=\e(B  \e$,1(3\e(B  \e$,1(H\e(B  \e$,1(I\e(B  \e$,1(7\e(B  \e$,1(E\e(B  \e$,1('\e(B
+;;    \e$,1(D\e(B  \e$,1(&\e(B  \e$,1(2\e(B  \e$,1(0\e(B  \e$,1(?\e(B  \e$,1(@\e(B  \e$,1(>\e(B  \e$,1(;\e(B  \e$,1(4\e(B  \e$,1(6\e(B  \e$,1($\e(B  \e$,1)P\e(B
+;;      \e$,1(O\e(B  \e$,1(G\e(B  \e$,1(A\e(B  \e$,1(<\e(B  \e$,1(8\e(B  \e$,1(B\e(B  \e$,1(L\e(B  \e$,1(1\e(B  \e$,1(N\e(B  .,
 
 (quail-define-rules
  ("1" ?1)
@@ -485,106 +746,107 @@ Sorry, but 'ghe with upturn' is not included in ISO 8859-5"
  ("8" ?8)
  ("9" ?9)
  ("0" ?0)
- ("-" ?/)
- ("=" ?+)
- ("`" ?<)
- ("q" ?\e,Lt\e(B)
- ("w" ?\e,Lw\e(B)
- ("e" ?\e,LU\e(B)
- ("r" ?\e,L`\e(B)
- ("t" ?\e,Lb\e(B)
- ("y" ?\e,LW\e(B)
- ("u" ?\e,Lc\e(B)
- ("i" ?\e,LX\e(B)
- ("o" ?\e,L^\e(B)
- ("p" ?\e,L_\e(B)
- ("[" ?\e,Lh\e(B)
- ("]" ?\e,Lv\e(B)
- ("a" ?\e,LP\e(B)
- ("s" ?\e,La\e(B)
- ("d" ?\e,LT\e(B)
- ("f" ?\e,Ld\e(B)
- ("g" ?\e,LS\e(B)
- ("h" ?\e,Le\e(B)
- ("j" ?\e,Lx\e(B)
- ("k" ?\e,LZ\e(B)
- ("l" ?\e,L[\e(B)
- (";" ?\e,Lg\e(B)
- ("'" ?\e,L~\e(B)
- ("\\" ?\e,LV\e(B)
- ("z" ?\e,Lu\e(B)
- ("x" ?\e,L\7f\e(B)
- ("c" ?\e,Lf\e(B)
- ("v" ?\e,LR\e(B)
- ("b" ?\e,LQ\e(B)
- ("n" ?\e,L]\e(B)
- ("m" ?\e,L\\e(B)
- ("," ?,)
- ("." ?.)
- ("/" ?-)
+ ("-" ?-)
+ ("=" ?=)
+ ("`" ?')
+ ("q" ?\e$,1(Y\e(B)
+ ("w" ?\e$,1(f\e(B)
+ ("e" ?\e$,1(c\e(B)
+ ("r" ?\e$,1(Z\e(B)
+ ("t" ?\e$,1(U\e(B)
+ ("y" ?\e$,1(]\e(B)
+ ("u" ?\e$,1(S\e(B)
+ ("i" ?\e$,1(h\e(B)
+ ("o" ?\e$,1(i\e(B)
+ ("p" ?\e$,1(W\e(B)
+ ("[" ?\e$,1(e\e(B)
+ ("]" ?\e$,1(w\e(B)
+ ("a" ?\e$,1(d\e(B)
+ ("s" ?\e$,1(v\e(B)
+ ("d" ?\e$,1(R\e(B)
+ ("f" ?\e$,1(P\e(B)
+ ("g" ?\e$,1(_\e(B)
+ ("h" ?\e$,1(`\e(B)
+ ("j" ?\e$,1(^\e(B)
+ ("k" ?\e$,1([\e(B)
+ ("l" ?\e$,1(T\e(B)
+ (";" ?\e$,1(V\e(B)
+ ("'" ?\e$,1(t\e(B)
+ ("z" ?\e$,1(o\e(B)
+ ("x" ?\e$,1(g\e(B)
+ ("c" ?\e$,1(a\e(B)
+ ("v" ?\e$,1(\\e(B)
+ ("b" ?\e$,1(X\e(B)
+ ("n" ?\e$,1(b\e(B)
+ ("m" ?\e$,1(l\e(B)
+ ("," ?\e$,1(Q\e(B)
+ ("." ?\e$,1(n\e(B)
+ ("/" ?.)
  ("!" ?!)
  ("@" ?\")
- ("#" ?#)
- ("$" ?$)
+ ("#" ?\e$,1uV\e(B)
+ ("$" ?\;)
  ("%" ?%)
- ("^" ?&)
- ("&" ?')
- ("*" ?\()
- ("(" ?\))
- (")" ?=)
- ("_" ??)
- ("+" ?*)
- ("~" ?>)
- ("Q" ?\e,L$\e(B)
- ("W" ?\e,L'\e(B)
- ("E" ?\e,L5\e(B)
- ("R" ?\e,L@\e(B)
- ("T" ?\e,LB\e(B)
- ("Y" ?\e,L7\e(B)
- ("U" ?\e,LC\e(B)
- ("I" ?\e,L8\e(B)
- ("O" ?\e,L>\e(B)
- ("P" ?\e,L?\e(B)
- ("{" ?\e,LH\e(B)
- ("}" ?\e,L&\e(B)
- ("A" ?\e,L0\e(B)
- ("S" ?\e,LA\e(B)
- ("D" ?\e,L4\e(B)
- ("F" ?\e,LD\e(B)
- ("G" ?\e,L3\e(B)
- ("H" ?\e,LE\e(B)
- ("J" ?\e,L(\e(B)
- ("K" ?\e,L:\e(B)
- ("L" ?\e,L;\e(B)
- (":" ?\e,LG\e(B)
- ("\"" ?\e,L.\e(B)
- ("|" ?\e,L6\e(B)
- ("Z" ?\e,L%\e(B)
- ("X" ?\e,L/\e(B)
- ("C" ?\e,LF\e(B)
- ("V" ?\e,L2\e(B)
- ("B" ?\e,L1\e(B)
- ("N" ?\e,L=\e(B)
- ("M" ?\e,L<\e(B)
- ("<" ?\;)
- (">" ?:)
- ("?" ?_))
-
+ ("^" ?:)
+ ("&" ??)
+ ("*" ?*)
+ ("(" ?()
+ (")" ?))
+ ("_" ?_)
+ ("+" ?+)
+ ("~" ?')
+ ("Q" ?\e$,1(9\e(B)
+ ("W" ?\e$,1(F\e(B)
+ ("E" ?\e$,1(C\e(B)
+ ("R" ?\e$,1(:\e(B)
+ ("T" ?\e$,1(5\e(B)
+ ("Y" ?\e$,1(=\e(B)
+ ("U" ?\e$,1(3\e(B)
+ ("I" ?\e$,1(H\e(B)
+ ("O" ?\e$,1(I\e(B)
+ ("P" ?\e$,1(7\e(B)
+ ("{" ?\e$,1(E\e(B)
+ ("}" ?\e$,1('\e(B)
+ ("A" ?\e$,1(D\e(B)
+ ("S" ?\e$,1(&\e(B)
+ ("D" ?\e$,1(2\e(B)
+ ("F" ?\e$,1(0\e(B)
+ ("G" ?\e$,1(?\e(B)
+ ("H" ?\e$,1(@\e(B)
+ ("J" ?\e$,1(>\e(B)
+ ("K" ?\e$,1(;\e(B)
+ ("L" ?\e$,1(4\e(B)
+ (":" ?\e$,1(6\e(B)
+ ("\"" ?\e$,1($\e(B)
+ ("Z" ?\e$,1(O\e(B)
+ ("X" ?\e$,1(G\e(B)
+ ("C" ?\e$,1(A\e(B)
+ ("V" ?\e$,1(<\e(B)
+ ("B" ?\e$,1(8\e(B)
+ ("N" ?\e$,1(B\e(B)
+ ("M" ?\e$,1(L\e(B)
+ ("<" ?\e$,1(1\e(B)
+ (">" ?\e$,1(N\e(B)
+ ("?" ?,)
+ ("\\" ?\e$,1)Q\e(B)
+ ("|" ?\e$,1)P\e(B))
 ;;
 
-(quail-define-package 
+;; 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" "\e,L6O\e(B" nil
  "\e,LO25@BK\e(B Roman transcription (ISO 8859-5 encoding)
 
-This layout is based on 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  | \e,L"\e(B  \e,L#\e(B  \e,L$\e(B  \e,L%\e(B  \e,L&\e(B  \e,L'\e(B  \e,L(\e(B  \e,L)\e(B  \e,L*\e(B  \e,L+\e(B  \e,L,\e(B  \e,L.\e(B  \e,L/\e(B"
                    nil t t t t)
nil t t t t nil nil nil nil nil t)
 
 ;;  1! 2\e,Lq\e(B 3\e,Lj\e(B 4\e,L!\e(B 5% 6^ 7& 8* 9( 0) -_ \e,LG\e(B  \e,LN\e(B
 ;;   \e,LO\e(B  \e,L2\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,LK\e(B  \e,LC\e(B  \e,L8\e(B  \e,L>\e(B  \e,L?\e(B  \e,LH\e(B  \e,LI\e(B
@@ -644,7 +906,7 @@ as follows.
  ("," ?,)
  ("." ?.)
  ("/" ?/)
+
  ("!" ?!)
  ("@" ?\e,Lq\e(B)
  ("#" ?\e,Lj\e(B)
@@ -692,7 +954,7 @@ as follows.
  ("<" ?<)
  (">" ?>)
  ("?" ??)
+
  ("/q" ?\e,Lr\e(B)
  ("/w" ?\e,Ls\e(B)
  ("/e" ?\e,Lt\e(B)
@@ -706,7 +968,7 @@ as follows.
  ("/a" ?\e,L|\e(B)
  ("/s" ?\e,L~\e(B)
  ("/d" ?\e,L\7f\e(B)
+
  ("/Q" ?\e,L"\e(B)
  ("/W" ?\e,L#\e(B)
  ("/E" ?\e,L$\e(B)
@@ -723,11 +985,24 @@ as follows.
 
 ;; 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" "\e,L6\e(Bt" nil
+ "cyrillic-translit" "Cyrillic" "\e,L6\e(Bt" t
  "Intuitively transliterated keyboard layout.
-Most convenient for entering Russian but all cyrillic characters are included.
-Should handle most cases. However:
+Most convenient for entering Russian, but all Cyrillic characters
+are included.  Should handle most cases.  However:
   for \e,Lf\e(B (TSE) use \"c\", never \"ts\"
   \e,Li\e(B (SHCHA = Bulgarian SHT) = \"shch\", \"sj\", \"/sht\" or \"/t\",
   \e,Lm\e(B (REVERSE ROUNDED E) = \"e'\" or \"e`\"
@@ -739,56 +1014,315 @@ Should handle most cases. However:
 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 \e,Lt\e(B (YE) = \"/e\" and \e,Lw\e(B (YI) = \"yi\", 
-Belorussian \e,L~\e(B (SHORT U) = \"u'\",
-Serbo-Croatian \e,Lr\e(B (DJE) = \"/d\", \e,L{\e(B (CHJE)= \"/ch\", 
+Also included are Ukrainian \e,Lt\e(B (YE) = \"/e\" and \e,Lw\e(B (YI) = \"yi\",
+Belarusian \e,L~\e(B (SHORT U) = \"u'\",
+Serbo-Croatian \e,Lr\e(B (DJE) = \"/d\", \e,L{\e(B (CHJE)= \"/ch\",
 Macedonian \e,Ls\e(B (GJE) = \"/g\", \e,Lu\e(B (DZE) = \"/s\", \e,L|\e(B (KJE) = \"/k\",
-cyrillic \e,Lv\e(B (I DECIMAL) = \"/i\", \e,Lx\e(B (JE) = \"/j\", 
+cyrillic \e,Lv\e(B (I DECIMAL) = \"/i\", \e,Lx\e(B (JE) = \"/j\",
 \e,Ly\e(B (LJE) = \"/l\", \e,Lz\e(B (NJE) = \"/n\" and \e,L\7f\e(B (DZE) =\"/z\"."
- nil t t t t)
+ nil t t t t nil nil nil nil nil t)
 
 (quail-define-rules
- ("a" ?\e,LP\e(B)("b" ?\e,LQ\e(B) ("v" ?\e,LR\e(B) ("w" ?\e,LR\e(B) ("g" ?\e,LS\e(B) ("d" ?\e,LT\e(B) 
- ("e" ?\e,LU\e(B) ("je" ?\e,LU\e(B) 
+ ("a" ?\e,LP\e(B)("b" ?\e,LQ\e(B) ("v" ?\e,LR\e(B) ("w" ?\e,LR\e(B) ("g" ?\e,LS\e(B) ("d" ?\e,LT\e(B)
+ ("e" ?\e,LU\e(B) ("je" ?\e,LU\e(B)
  ("yo" ?\e,Lq\e(B) ("jo" ?\e,Lq\e(B)
- ("zh" ?\e,LV\e(B) ("z" ?\e,LW\e(B) ("i" ?\e,LX\e(B) 
+ ("zh" ?\e,LV\e(B) ("z" ?\e,LW\e(B) ("i" ?\e,LX\e(B)
  ("j" ?\e,LY\e(B) ("j'" ?\e,LY\e(B) ("j`" ?\e,LY\e(B) ("k" ?\e,LZ\e(B) ("l" ?\e,L[\e(B)
  ("m" ?\e,L\\e(B) ("n" ?\e,L]\e(B) ("o" ?\e,L^\e(B) ("p" ?\e,L_\e(B) ("r" ?\e,L`\e(B) ("s" ?\e,La\e(B) ("t" ?\e,Lb\e(B) ("u" ?\e,Lc\e(B)
  ("f" ?\e,Ld\e(B) ("x" ?\e,Le\e(B) ("h" ?\e,Le\e(B) ("kh" ?\e,Le\e(B)
  ("c" ?\e,Lf\e(B) ("ch" ?\e,Lg\e(B)
- ("sh" ?\e,Lh\e(B) 
- ("shch" ?\e,Li\e(B) ("sj" ?\e,Li\e(B) 
- ("/sht" ?\e,Li\e(B) ("/t" ?\e,Li\e(B) 
- ("~" ?\e,Lj\e(B) ("y" ?\e,Lk\e(B) ("'" ?\e,Ll\e(B) ("`" ?\e,Ll\e(B) 
- ("e'" ?\e,Lm\e(B) ("e`" ?\e,Lm\e(B) ("@" ?\e,Lm\e(B) 
- ("yu" ?\e,Ln\e(B) ("ju" ?\e,Ln\e(B) 
+ ("sh" ?\e,Lh\e(B)
+ ("shch" ?\e,Li\e(B) ("sj" ?\e,Li\e(B)
+ ("/sht" ?\e,Li\e(B) ("/t" ?\e,Li\e(B)
+ ("~" ?\e,Lj\e(B) ("y" ?\e,Lk\e(B) ("'" ?\e,Ll\e(B) ("`" ?\e,Ll\e(B)
+ ("e'" ?\e,Lm\e(B) ("e`" ?\e,Lm\e(B) ("@" ?\e,Lm\e(B)
+ ("yu" ?\e,Ln\e(B) ("ju" ?\e,Ln\e(B)
  ("ya" ?\e,Lo\e(B) ("ja" ?\e,Lo\e(B) ("q" ?\e,Lo\e(B)
 
- ("A" ?\e,L0\e(B) ("B" ?\e,L1\e(B) ("V" ?\e,L2\e(B) ("W" ?\e,L2\e(B) ("G" ?\e,L3\e(B) ("D" ?\e,L4\e(B) 
+ ("A" ?\e,L0\e(B) ("B" ?\e,L1\e(B) ("V" ?\e,L2\e(B) ("W" ?\e,L2\e(B) ("G" ?\e,L3\e(B) ("D" ?\e,L4\e(B)
  ("E" ?\e,L5\e(B) ("Je" ?\e,L5\e(B) ("JE" ?\e,L5\e(B)
- ("Yo" ?\e,L!\e(B) ("YO" ?\e,L!\e(B) ("Jo" ?\e,L!\e(B) ("JO" ?\e,L!\e(B) 
- ("Zh" ?\e,L6\e(B) ("ZH" ?\e,L6\e(B) ("Z" ?\e,L7\e(B) ("I" ?\e,L8\e(B) 
+ ("Yo" ?\e,L!\e(B) ("YO" ?\e,L!\e(B) ("Jo" ?\e,L!\e(B) ("JO" ?\e,L!\e(B)
+ ("Zh" ?\e,L6\e(B) ("ZH" ?\e,L6\e(B) ("Z" ?\e,L7\e(B) ("I" ?\e,L8\e(B)
  ("J" ?\e,L9\e(B) ("J'" ?\e,L9\e(B) ("J`" ?\e,L9\e(B) ("K" ?\e,L:\e(B) ("L" ?\e,L;\e(B)
  ("M" ?\e,L<\e(B) ("N" ?\e,L=\e(B) ("O" ?\e,L>\e(B) ("P" ?\e,L?\e(B) ("R" ?\e,L@\e(B) ("S" ?\e,LA\e(B) ("T" ?\e,LB\e(B) ("U" ?\e,LC\e(B)
  ("F" ?\e,LD\e(B) ("X" ?\e,LE\e(B) ("H" ?\e,LE\e(B) ("Kh" ?\e,LE\e(B) ("KH" ?\e,LE\e(B)
- ("C" ?\e,LF\e(B) ("Ch" ?\e,LG\e(B) ("CH" ?\e,LG\e(B) 
- ("Sh" ?\e,LH\e(B) ("SH" ?\e,LH\e(B) 
- ("Shch" ?\e,LI\e(B) ("SHCH" ?\e,LI\e(B) ("Sj" ?\e,LI\e(B) ("SJ" ?\e,LI\e(B) 
- ("/Sht" ?\e,LI\e(B) ("/SHT" ?\e,LI\e(B) ("/T" ?\e,LI\e(B) 
- ("~~" "\e,LJ\e(B") ("Y" ?\e,LK\e(B) ("''" "\e,LL\e(B") ("E'" ?\e,LM\e(B) ("E`" ?\e,LM\e(B) 
- ("Yu" ?\e,LN\e(B) ("YU" ?\e,LN\e(B) ("Ju" ?\e,LN\e(B) ("JU" ?\e,LN\e(B) 
+ ("C" ?\e,LF\e(B) ("Ch" ?\e,LG\e(B) ("CH" ?\e,LG\e(B)
+ ("Sh" ?\e,LH\e(B) ("SH" ?\e,LH\e(B)
+ ("Shch" ?\e,LI\e(B) ("SHCH" ?\e,LI\e(B) ("Sj" ?\e,LI\e(B) ("SJ" ?\e,LI\e(B)
+ ("/Sht" ?\e,LI\e(B) ("/SHT" ?\e,LI\e(B) ("/T" ?\e,LI\e(B)
+ ("~~" "\e,LJ\e(B") ("Y" ?\e,LK\e(B) ("''" "\e,LL\e(B") ("E'" ?\e,LM\e(B) ("E`" ?\e,LM\e(B)
+ ("Yu" ?\e,LN\e(B) ("YU" ?\e,LN\e(B) ("Ju" ?\e,LN\e(B) ("JU" ?\e,LN\e(B)
  ("Ya" ?\e,LO\e(B) ("YA" ?\e,LO\e(B) ("Ja" ?\e,LO\e(B) ("JA" ?\e,LO\e(B) ("Q" ?\e,LO\e(B)
 
  ("/e" ?\e,Lt\e(B) ("yi" ?\e,Lw\e(B) ("u'" ?\e,L~\e(B)
  ("/d" ?\e,Lr\e(B) ("/ch" ?\e,L{\e(B)
  ("/g" ?\e,Ls\e(B) ("/s" ?\e,Lu\e(B) ("/k" ?\e,L|\e(B)
  ("/i" ?\e,Lv\e(B) ("/j" ?\e,Lx\e(B) ("/l" ?\e,Ly\e(B) ("/n" ?\e,Lz\e(B) ("/z" ?\e,L\7f\e(B)
- ("/E" ?\e,L$\e(B) ("YE" ?\e,L$\e(B) ("Yi" ?\e,L'\e(B) ("YI" ?\e,L'\e(B) ("U'" ?\e,L.\e(B) 
+ ("/E" ?\e,L$\e(B) ("YE" ?\e,L$\e(B) ("Yi" ?\e,L'\e(B) ("YI" ?\e,L'\e(B) ("U'" ?\e,L.\e(B)
  ("/D" ?\e,L"\e(B) ("/Ch" ?\e,L+\e(B) ("/CH" ?\e,L+\e(B)
- ("/G" ?\e,L#\e(B) ("/S" ?\e,L%\e(B) ("/K" ?\e,L,\e(B) 
+ ("/G" ?\e,L#\e(B) ("/S" ?\e,L%\e(B) ("/K" ?\e,L,\e(B)
  ("/I" ?\e,L&\e(B) ("/J" ?\e,L(\e(B) ("/L" ?\e,L)\e(B) ("/N" ?\e,L*\e(B) ("/Z" ?\e,L/\e(B)
 )
 
+;; 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
+ "\e$,1(9(F(C(:(5(=\e(B keyboard layout registered as STB955-94 Belarusian standard.
+Unicode based."
+ nil t t t t nil nil nil nil nil t)
+
+;; \e$,1(q(!\e(B 1! 2" 3N 4; 5% 6: 7? 8* 9( 0) -_ =+
+;;     \e$,1(9\e(B  \e$,1(F\e(B  \e$,1(C\e(B  \e$,1(:\e(B  \e$,1(5\e(B  \e$,1(=\e(B  \e$,1(3\e(B  \e$,1(H\e(B  \e$,1(.\e(B  \e$,1(7\e(B  \e$,1(E\e(B  '
+;;      \e$,1(D\e(B  \e$,1(K\e(B  \e$,1(2\e(B  \e$,1(0\e(B  \e$,1(?\e(B  \e$,1(@\e(B  \e$,1(>\e(B  \e$,1(;\e(B  \e$,1(4\e(B  \e$,1(6\e(B  \e$,1(M\e(B
+;;       \e$,1(O\e(B  \e$,1(G\e(B  \e$,1(A\e(B  \e$,1(<\e(B  \e$,1(&\e(B  \e$,1(B\e(B  \e$,1(L\e(B  \e$,1(1\e(B  \e$,1(N\e(B  .,
+
+(quail-define-rules
+ ("~" ?\e$,1(!\e(B)
+ ("@" ?\")
+ ("#" ?\e$,1uV\e(B)
+ ("$" ?\;)
+ ("%" ?%)
+ ("^" ?:)
+ ("&" ??)
+ ("Q" ?\e$,1(9\e(B)
+ ("W" ?\e$,1(F\e(B)
+ ("E" ?\e$,1(C\e(B)
+ ("R" ?\e$,1(:\e(B)
+ ("T" ?\e$,1(5\e(B)
+ ("Y" ?\e$,1(=\e(B)
+ ("U" ?\e$,1(3\e(B)
+ ("I" ?\e$,1(H\e(B)
+ ("O" ?\e$,1(.\e(B)
+ ("P" ?\e$,1(7\e(B)
+ ("{" ?\e$,1(E\e(B)
+ ("}" ?')
+ ("A" ?\e$,1(D\e(B)
+ ("S" ?\e$,1(K\e(B)
+ ("D" ?\e$,1(2\e(B)
+ ("F" ?\e$,1(0\e(B)
+ ("G" ?\e$,1(?\e(B)
+ ("H" ?\e$,1(@\e(B)
+ ("J" ?\e$,1(>\e(B)
+ ("K" ?\e$,1(;\e(B)
+ ("L" ?\e$,1(4\e(B)
+ (":" ?\e$,1(6\e(B)
+ ("\"" ?\e$,1(M\e(B)
+ ("|" ?|)
+ ("Z" ?\e$,1(O\e(B)
+ ("X" ?\e$,1(G\e(B)
+ ("C" ?\e$,1(A\e(B)
+ ("V" ?\e$,1(<\e(B)
+ ("B" ?\e$,1(&\e(B)
+ ("N" ?\e$,1(B\e(B)
+ ("M" ?\e$,1(L\e(B)
+ ("<" ?\e$,1(1\e(B)
+ (">" ?\e$,1(N\e(B)
+ ("?" ?,)
+
+ ("`" ?\e$,1(q\e(B)
+ ("q" ?\e$,1(Y\e(B)
+ ("w" ?\e$,1(f\e(B)
+ ("e" ?\e$,1(c\e(B)
+ ("r" ?\e$,1(Z\e(B)
+ ("t" ?\e$,1(U\e(B)
+ ("y" ?\e$,1(]\e(B)
+ ("u" ?\e$,1(S\e(B)
+ ("i" ?\e$,1(h\e(B)
+ ("o" ?\e$,1(~\e(B)
+ ("p" ?\e$,1(W\e(B)
+ ("[" ?\e$,1(e\e(B)
+ ("]" ?')
+ ("a" ?\e$,1(d\e(B)
+ ("s" ?\e$,1(k\e(B)
+ ("d" ?\e$,1(R\e(B)
+ ("f" ?\e$,1(P\e(B)
+ ("g" ?\e$,1(_\e(B)
+ ("h" ?\e$,1(`\e(B)
+ ("j" ?\e$,1(^\e(B)
+ ("k" ?\e$,1([\e(B)
+ ("l" ?\e$,1(T\e(B)
+ (";" ?\e$,1(V\e(B)
+ ("'" ?\e$,1(m\e(B)
+ ("z" ?\e$,1(o\e(B)
+ ("x" ?\e$,1(g\e(B)
+ ("c" ?\e$,1(a\e(B)
+ ("v" ?\e$,1(\\e(B)
+ ("b" ?\e$,1(v\e(B)
+ ("n" ?\e$,1(b\e(B)
+ ("m" ?\e$,1(l\e(B)
+ ("," ?\e$,1(Q\e(B)
+ ("." ?\e$,1(n\e(B)
+ ("/" ?.))
+
+;; 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" "\e$,1(6(1(D\e(B"
+ 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 \e,A'\e(B (Cyrillic paragraph) and /# for \e$,1uV\e(B.
+
+The letters \e$,1(G\e(B, \e$,1(H\e(B, \e$,1(I\e(B and \e$,1(N\e(B are not affected by Caps Lock."
+ nil t t t t nil nil nil nil nil t)
+
+;;  \e$,1(G\e(B
+;;      \e$,1(O\e(B  \e$,1(2\e(B  \e$,1(5\e(B  \e$,1(@\e(B  \e$,1(B\e(B  \e$,1(J\e(B  \e$,1(C\e(B  \e$,1(8\e(B  \e$,1(>\e(B  \e$,1(?\e(B  \e$,1(H\e(B  \e$,1(I\e(B
+;;       \e$,1(0\e(B  \e$,1(A\e(B  \e$,1(4\e(B  \e$,1(D\e(B  \e$,1(3\e(B  \e$,1(E\e(B  \e$,1(9\e(B  \e$,1(:\e(B  \e$,1(;\e(B        \e$,1(N\e(B
+;;        \e$,1(7\e(B  \e$,1(L\e(B  \e$,1(F\e(B  \e$,1(6\e(B  \e$,1(1\e(B  \e$,1(=\e(B  \e$,1(<\e(B
+
+(quail-define-rules
+ ("/&" ?\e,A'\e(B)
+ ("/#" ?\e$,1uV\e(B)
+ ("A" ?\e$,1(0\e(B)
+ ("B" ?\e$,1(1\e(B)
+ ("W" ?\e$,1(2\e(B)
+ ("G" ?\e$,1(3\e(B)
+ ("D" ?\e$,1(4\e(B)
+ ("E" ?\e$,1(5\e(B)
+ ("V" ?\e$,1(6\e(B)
+ ("Z" ?\e$,1(7\e(B)
+ ("I" ?\e$,1(8\e(B)
+ ("J" ?\e$,1(9\e(B)
+ ("K" ?\e$,1(:\e(B)
+ ("L" ?\e$,1(;\e(B)
+ ("M" ?\e$,1(<\e(B)
+ ("N" ?\e$,1(=\e(B)
+ ("O" ?\e$,1(>\e(B)
+ ("P" ?\e$,1(?\e(B)
+ ("R" ?\e$,1(@\e(B)
+ ("S" ?\e$,1(A\e(B)
+ ("T" ?\e$,1(B\e(B)
+ ("U" ?\e$,1(C\e(B)
+ ("F" ?\e$,1(D\e(B)
+ ("H" ?\e$,1(E\e(B)
+ ("C" ?\e$,1(F\e(B)
+ ("~" ?\e$,1(G\e(B)
+ ("{" ?\e$,1(H\e(B)
+ ("}" ?\e$,1(I\e(B)
+ ("Y" ?\e$,1(J\e(B)
+ ("X" ?\e$,1(L\e(B)
+ ("|" ?\e$,1(N\e(B)
+ ("Q" ?\e$,1(O\e(B)
+ ("a" ?\e$,1(P\e(B)
+ ("b" ?\e$,1(Q\e(B)
+ ("w" ?\e$,1(R\e(B)
+ ("g" ?\e$,1(S\e(B)
+ ("d" ?\e$,1(T\e(B)
+ ("e" ?\e$,1(U\e(B)
+ ("v" ?\e$,1(V\e(B)
+ ("z" ?\e$,1(W\e(B)
+ ("i" ?\e$,1(X\e(B)
+ ("j" ?\e$,1(Y\e(B)
+ ("k" ?\e$,1(Z\e(B)
+ ("l" ?\e$,1([\e(B)
+ ("m" ?\e$,1(\\e(B)
+ ("n" ?\e$,1(]\e(B)
+ ("o" ?\e$,1(^\e(B)
+ ("p" ?\e$,1(_\e(B)
+ ("r" ?\e$,1(`\e(B)
+ ("s" ?\e$,1(a\e(B)
+ ("t" ?\e$,1(b\e(B)
+ ("u" ?\e$,1(c\e(B)
+ ("f" ?\e$,1(d\e(B)
+ ("h" ?\e$,1(e\e(B)
+ ("c" ?\e$,1(f\e(B)
+ ("`" ?\e$,1(g\e(B)
+ ("[" ?\e$,1(h\e(B)
+ ("]" ?\e$,1(i\e(B)
+ ("y" ?\e$,1(j\e(B)
+ ("x" ?\e$,1(l\e(B)
+ ("\\" ?\e$,1(n\e(B)
+ ("q" ?\e$,1(o\e(B))
+
+;; Based on an implementation by Ognyan Kulev <ogi@fmi.uni-sofia.bg>.
+;; This follows XKB bg.
+
+(quail-define-package
+ "bulgarian-bds" "Bulgarian" "\e$,1(1(4(A\e(B" nil
+ "Bulgarian standard keyboard layout (BDS)
+
+This keyboard layout is standard for Bulgarian typewriters.
+
+The letters \e$,1(F\e(B, \e$,1(<\e(B, \e$,1(G\e(B, \e$,1(@\e(B, \e$,1(;\e(B, \e$,1(1\e(B and \e$,1(K\e(B are not affected by Caps Lock.
+
+In addition to original Bulgarian typewriter layout, keys \\ and |
+are transformed into ' and \e$,1(K\e(B 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\e$,1uV\e(B -I .V
+;;      ,\e$,1(k\e(B \e$,1(C\e(B  \e$,1(5\e(B  \e$,1(8\e(B  \e$,1(H\e(B  \e$,1(I\e(B  \e$,1(:\e(B  \e$,1(A\e(B  \e$,1(4\e(B  \e$,1(7\e(B  \e$,1(F\e(B  ;\e,A'\e(B
+;;       \e$,1(L\e(B  \e$,1(O\e(B  \e$,1(0\e(B  \e$,1(>\e(B  \e$,1(6\e(B  \e$,1(3\e(B  \e$,1(B\e(B  \e$,1(=\e(B  \e$,1(2\e(B  \e$,1(<\e(B  \e$,1(G\e(B  '\e$,1(K\e(B
+;;        \e$,1(N\e(B  \e$,1(9\e(B  \e$,1(J\e(B  \e$,1(M\e(B  \e$,1(D\e(B  \e$,1(E\e(B  \e$,1(?\e(B  \e$,1(@\e(B  \e$,1(;\e(B  \e$,1(1\e(B
+
+(quail-define-rules
+
+ ("1" ?1) ("!" ?!)
+ ("2" ?2) ("@" ??)
+ ("3" ?3) ("#" ?+)
+ ("4" ?4) ("$" ?\")
+ ("5" ?5) ("%" ?%)
+ ("6" ?6) ("^" ?=)
+ ("7" ?7) ("&" ?:)
+ ("8" ?8) ("*" ?/)
+ ("9" ?9) ("(" ?_)
+ ("0" ?0) (")" ?\e$,1uV\e(B)
+ ("-" ?-) ("_" ?I)
+ ("=" ?.) ("+" ?V)
+
+ ("q" ?,) ("Q" ?\e$,1(k\e(B)
+ ("w" ?\e$,1(c\e(B) ("W" ?\e$,1(C\e(B)
+ ("e" ?\e$,1(U\e(B) ("E" ?\e$,1(5\e(B)
+ ("r" ?\e$,1(X\e(B) ("R" ?\e$,1(8\e(B)
+ ("t" ?\e$,1(h\e(B) ("T" ?\e$,1(H\e(B)
+ ("y" ?\e$,1(i\e(B) ("Y" ?\e$,1(I\e(B)
+ ("u" ?\e$,1(Z\e(B) ("U" ?\e$,1(:\e(B)
+ ("i" ?\e$,1(a\e(B) ("I" ?\e$,1(A\e(B)
+ ("o" ?\e$,1(T\e(B) ("O" ?\e$,1(4\e(B)
+ ("p" ?\e$,1(W\e(B) ("P" ?\e$,1(7\e(B)
+ ("[" ?\e$,1(f\e(B) ("{" ?\e$,1(F\e(B)
+ ("]" ?\;) ("}" ?\e,A'\e(B)
+
+ ("a" ?\e$,1(l\e(B) ("A" ?\e$,1(L\e(B)
+ ("s" ?\e$,1(o\e(B) ("S" ?\e$,1(O\e(B)
+ ("d" ?\e$,1(P\e(B) ("D" ?\e$,1(0\e(B)
+ ("f" ?\e$,1(^\e(B) ("F" ?\e$,1(>\e(B)
+ ("g" ?\e$,1(V\e(B) ("G" ?\e$,1(6\e(B)
+ ("h" ?\e$,1(S\e(B) ("H" ?\e$,1(3\e(B)
+ ("j" ?\e$,1(b\e(B) ("J" ?\e$,1(B\e(B)
+ ("k" ?\e$,1(]\e(B) ("K" ?\e$,1(=\e(B)
+ ("l" ?\e$,1(R\e(B) ("L" ?\e$,1(2\e(B)
+ (";" ?\e$,1(\\e(B) (":" ?\e$,1(<\e(B)
+ ("'" ?\e$,1(g\e(B) ("\"" ?\e$,1(G\e(B)
+ ("`" ?\() ("~" ?\))
+
+ ("z" ?\e$,1(n\e(B) ("Z" ?\e$,1(N\e(B)
+ ("x" ?\e$,1(Y\e(B) ("X" ?\e$,1(9\e(B)
+ ("c" ?\e$,1(j\e(B) ("C" ?\e$,1(J\e(B)
+ ("v" ?\e$,1(m\e(B) ("V" ?\e$,1(M\e(B)
+ ("b" ?\e$,1(d\e(B) ("B" ?\e$,1(D\e(B)
+ ("n" ?\e$,1(e\e(B) ("N" ?\e$,1(E\e(B)
+ ("m" ?\e$,1(_\e(B) ("M" ?\e$,1(?\e(B)
+ ("," ?\e$,1(`\e(B) ("<" ?\e$,1(@\e(B)
+ ("." ?\e$,1([\e(B) (">" ?\e$,1(;\e(B)
+ ("/" ?\e$,1(Q\e(B) ("?" ?\e$,1(1\e(B)
+ ("\\" ?') ("|" ?\e$,1(K\e(B))
+
 ;; Local Variables:
-;; buffer-file-coding-system: iso-2022-7bit
+;; coding: iso-2022-7bit
 ;; End:
+
+;;; arch-tag: e6d34b16-8710-4181-a17e-819a1df0334f
+;;; cyrillic.el ends here