Initial Commit
[packages] / mule-packages / leim / quail / cyrillic.el
1 ;;; cyrillic.el --- Quail package for inputting Cyrillic characters -*- coding: iso-2022-7bit -*-
2
3 ;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006
4 ;;   Free Software Foundation, Inc.
5 ;; Copyright (C) 1997, 2003
6 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
7 ;;   Registration Number H14PRO021
8
9 ;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
10 ;; Keywords: multilingual, input method, Cyrillic, i18n
11
12 ;; This file is part of GNU Emacs.
13
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
15 ;; it under the terms of the GNU General Public License as published by
16 ;; the Free Software Foundation; either version 2, or (at your option)
17 ;; any later version.
18
19 ;; GNU Emacs is distributed in the hope that it will be useful,
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 ;; GNU General Public License for more details.
23
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
27 ;; Boston, MA 02110-1301, USA.
28
29 ;;; Commentary:
30
31 ;; These methods use a mixture of 8859-5 and Unicode.  Quail, used
32 ;; with ucs-tables provides suport for translating on the fly to
33 ;; what's appropriate for aa buffer's file coding system, so the
34 ;; encoding shouldn't matter too much provided it supports the
35 ;; necessary characters.
36
37 ;;; Code:
38
39 (require 'quail)
40
41 ;; XEmacs change. 
42 (defvar cyrillic-decent-xemacs-unicode-support
43   (and (fboundp 'decode-char) (decode-char 'ucs #x31C)
44        (eq #x31C (encode-char (decode-char 'ucs #x31C) 'ucs)))
45   "Whether Unicode support in XEmacs is good enough certain features.")
46
47 ;; This was `cyrillic-jcuken'.  Alexander Mikhailian
48 ;; <mikhailian@altern.org> says:  "cyrillic-jcuken" is actually
49 ;; russian.  It is ok but a bit outdated.  This layout has been used
50 ;; in typewriters for ages but it has been superceeded on desktops by
51 ;; a variation of this layout, implemented in M$ Windows software.
52 ;; The Windows layout is greatly preferred because of the comma and
53 ;; period being placed more conviniently and, of course, because of
54 ;; the popularity of Windows software. This layout is a common option
55 ;; in X Windows and console layouts for GNU/Linux.  [See
56 ;; `russian-computer' below.]
57 (quail-define-package
58  "russian-typewriter" "Russian" "\e,L69\e(B" nil
59  "\e,L9FC:5=\e(B Russian typewriter layout (ISO 8859-5 encoding)."
60  nil t t t t nil nil nil nil nil t)
61
62 ;;  1! 2" 3' 4* 5: 6, 7. 8; 9( 0) -_ =+ \e,L!\e(B
63 ;;   \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
64 ;;    \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
65 ;;     \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  /?
66
67 (quail-define-rules
68  ("1" ?1)
69  ("2" ?2)
70  ("3" ?3)
71  ("4" ?4)
72  ("5" ?5)
73  ("6" ?6)
74  ("7" ?7)
75  ("8" ?8)
76  ("9" ?9)
77  ("0" ?0)
78  ("-" ?-)
79  ("=" ?=)
80  ("`" ?\e,Lq\e(B)
81  ("q" ?\e,LY\e(B)
82  ("w" ?\e,Lf\e(B)
83  ("e" ?\e,Lc\e(B)
84  ("r" ?\e,LZ\e(B)
85  ("t" ?\e,LU\e(B)
86  ("y" ?\e,L]\e(B)
87  ("u" ?\e,LS\e(B)
88  ("i" ?\e,Lh\e(B)
89  ("o" ?\e,Li\e(B)
90  ("p" ?\e,LW\e(B)
91  ("[" ?\e,Le\e(B)
92  ("]" ?\e,Lj\e(B)
93  ("a" ?\e,Ld\e(B)
94  ("s" ?\e,Lk\e(B)
95  ("d" ?\e,LR\e(B)
96  ("f" ?\e,LP\e(B)
97  ("g" ?\e,L_\e(B)
98  ("h" ?\e,L`\e(B)
99  ("j" ?\e,L^\e(B)
100  ("k" ?\e,L[\e(B)
101  ("l" ?\e,LT\e(B)
102  (";" ?\e,LV\e(B)
103  ("'" ?\e,Lm\e(B)
104  ("\\" ?\\)
105  ("z" ?\e,Lo\e(B)
106  ("x" ?\e,Lg\e(B)
107  ("c" ?\e,La\e(B)
108  ("v" ?\e,L\\e(B)
109  ("b" ?\e,LX\e(B)
110  ("n" ?\e,Lb\e(B)
111  ("m" ?\e,Ll\e(B)
112  ("," ?\e,LQ\e(B)
113  ("." ?\e,Ln\e(B)
114  ("/" ?/)
115
116  ("!" ?!)
117  ("@" ?\")
118  ("#" ?')
119  ("$" ?*)
120  ("%" ?:)
121  ("^" ?,)
122  ("&" ?.)
123  ("*" ?\;)
124  ("(" ?\()
125  (")" ?\))
126  ("_" ?_)
127  ("+" ?+)
128  ("~" ?\e,L!\e(B)
129  ("Q" ?\e,L9\e(B)
130  ("W" ?\e,LF\e(B)
131  ("E" ?\e,LC\e(B)
132  ("R" ?\e,L:\e(B)
133  ("T" ?\e,L5\e(B)
134  ("Y" ?\e,L=\e(B)
135  ("U" ?\e,L3\e(B)
136  ("I" ?\e,LH\e(B)
137  ("O" ?\e,LI\e(B)
138  ("P" ?\e,L7\e(B)
139  ("{" ?\e,LE\e(B)
140  ("}" ?\e,LJ\e(B)
141  ("A" ?\e,LD\e(B)
142  ("S" ?\e,LK\e(B)
143  ("D" ?\e,L2\e(B)
144  ("F" ?\e,L0\e(B)
145  ("G" ?\e,L?\e(B)
146  ("H" ?\e,L@\e(B)
147  ("J" ?\e,L>\e(B)
148  ("K" ?\e,L;\e(B)
149  ("L" ?\e,L4\e(B)
150  (":" ?\e,L6\e(B)
151  ("\"" ?\e,LM\e(B)
152  ("|" ?|)
153  ("Z" ?\e,LO\e(B)
154  ("X" ?\e,LG\e(B)
155  ("C" ?\e,LA\e(B)
156  ("V" ?\e,L<\e(B)
157  ("B" ?\e,L8\e(B)
158  ("N" ?\e,LB\e(B)
159  ("M" ?\e,LL\e(B)
160  ("<" ?\e,L1\e(B)
161  (">" ?\e,LN\e(B)
162  ("?" ??)
163  )
164
165 ;; Maintain the obsolete name for now.
166 (push (cons "cyrillic-jcuken"
167             (cdr (assoc "russian-typewriter" quail-package-alist)))
168       quail-package-alist)
169
170
171 ;; This needs to be seen by quail-update-leim-list-file, but cannot be
172 ;; commented out because quail-update-leim-list-file ignores
173 ;; commented-out lines.
174 (if nil
175     (quail-define-package 
176      "cyrillic-jcuken" "Russian" "\e,L69\e(B" nil
177      "\e,L9FC:5=\e(B Russian typewriter layout (ISO 8859-5 encoding)."))
178
179 ;; See comment above.  This is the variant `winkeys' from `ru' in XKB.
180 (quail-define-package
181  "russian-computer" "Russian" "RU" nil
182  "\e,L9FC:5=\e(B Russian computer layout"
183  nil t t t t nil nil nil nil nil t)
184
185 ;;  1! 2" 3\e,Lp\e(B 4; 5% 6: 7? 8* 9( 0) -_ =+ \e,Lq!\e(B
186 ;;   \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
187 ;;    \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
188 ;;     \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  .,
189
190 (quail-define-rules
191  ("1" ?1)
192  ("2" ?2)
193  ("3" ?3)
194  ("4" ?4)
195  ("5" ?5)
196  ("6" ?6)
197  ("7" ?7)
198  ("8" ?8)
199  ("9" ?9)
200  ("0" ?0)
201  ("-" ?-)
202  ("=" ?=)
203  ("`" ?\e,Lq\e(B)
204  ("q" ?\e,LY\e(B)
205  ("w" ?\e,Lf\e(B)
206  ("e" ?\e,Lc\e(B)
207  ("r" ?\e,LZ\e(B)
208  ("t" ?\e,LU\e(B)
209  ("y" ?\e,L]\e(B)
210  ("u" ?\e,LS\e(B)
211  ("i" ?\e,Lh\e(B)
212  ("o" ?\e,Li\e(B)
213  ("p" ?\e,LW\e(B)
214  ("[" ?\e,Le\e(B)
215  ("]" ?\e,Lj\e(B)
216  ("a" ?\e,Ld\e(B)
217  ("s" ?\e,Lk\e(B)
218  ("d" ?\e,LR\e(B)
219  ("f" ?\e,LP\e(B)
220  ("g" ?\e,L_\e(B)
221  ("h" ?\e,L`\e(B)
222  ("j" ?\e,L^\e(B)
223  ("k" ?\e,L[\e(B)
224  ("l" ?\e,LT\e(B)
225  (";" ?\e,LV\e(B)
226  ("'" ?\e,Lm\e(B)
227  ("\\" ?\\)
228  ("z" ?\e,Lo\e(B)
229  ("x" ?\e,Lg\e(B)
230  ("c" ?\e,La\e(B)
231  ("v" ?\e,L\\e(B)
232  ("b" ?\e,LX\e(B)
233  ("n" ?\e,Lb\e(B)
234  ("m" ?\e,Ll\e(B)
235  ("," ?\e,LQ\e(B)
236  ("." ?\e,Ln\e(B)
237  ("/" ?.)
238  ("!" ?!)
239  ("@" ?\")
240  ("#" ?\e,Lp\e(B)
241  ("$" ?\;)
242  ("%" ?%)
243  ("^" ?:)
244  ("&" ??)
245  ("*" ?*)
246  ("(" ?()
247  (")" ?))
248  ("_" ?_)
249  ("+" ?+)
250  ("~" ?\e,L!\e(B)
251  ("Q" ?\e,L9\e(B)
252  ("W" ?\e,LF\e(B)
253  ("E" ?\e,LC\e(B)
254  ("R" ?\e,L:\e(B)
255  ("T" ?\e,L5\e(B)
256  ("Y" ?\e,L=\e(B)
257  ("U" ?\e,L3\e(B)
258  ("I" ?\e,LH\e(B)
259  ("O" ?\e,LI\e(B)
260  ("P" ?\e,L7\e(B)
261  ("{" ?\e,LE\e(B)
262  ("}" ?\e,LJ\e(B)
263  ("A" ?\e,LD\e(B)
264  ("S" ?\e,LK\e(B)
265  ("D" ?\e,L2\e(B)
266  ("F" ?\e,L0\e(B)
267  ("G" ?\e,L?\e(B)
268  ("H" ?\e,L@\e(B)
269  ("J" ?\e,L>\e(B)
270  ("K" ?\e,L;\e(B)
271  ("L" ?\e,L4\e(B)
272  (":" ?\e,L6\e(B)
273  ("\"" ?\e,LM\e(B)
274  ("|" ?|)
275  ("Z" ?\e,LO\e(B)
276  ("X" ?\e,LG\e(B)
277  ("C" ?\e,LA\e(B)
278  ("V" ?\e,L<\e(B)
279  ("B" ?\e,L8\e(B)
280  ("N" ?\e,LB\e(B)
281  ("M" ?\e,LL\e(B)
282  ("<" ?\e,L1\e(B)
283  (">" ?\e,LN\e(B)
284  ("?" ?,))
285
286 ;; Mikhailian couldn't check the next two.
287
288 ;; This seems to have the same layout for letters as mk in XKB, but at
289 ;; least the top row is different.
290 (quail-define-package
291  "cyrillic-macedonian" "Cyrillic" "\e,L6\e(BM" nil
292  "\e,L)*5@B7\e(B-\e,L#,\e(B keyboard layout based on JUS.I.K1.004 (ISO 8859-5 encoding)"
293  nil t t t t nil nil nil nil nil t)
294
295 ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
296 ;;   \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
297 ;;    \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
298 ;;     \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  ,; .: -_
299
300 (quail-define-rules
301  ("1" ?1)
302  ("2" ?2)
303  ("3" ?3)
304  ("4" ?4)
305  ("5" ?5)
306  ("6" ?6)
307  ("7" ?7)
308  ("8" ?8)
309  ("9" ?9)
310  ("0" ?0)
311  ("-" ?/)
312  ("=" ?+)
313  ("`" ?<)
314  ("q" ?\e,Ly\e(B)
315  ("w" ?\e,Lz\e(B)
316  ("e" ?\e,LU\e(B)
317  ("r" ?\e,L`\e(B)
318  ("t" ?\e,Lb\e(B)
319  ("y" ?\e,LW\e(B)
320  ("u" ?\e,Lc\e(B)
321  ("i" ?\e,LX\e(B)
322  ("o" ?\e,L^\e(B)
323  ("p" ?\e,L_\e(B)
324  ("[" ?\e,Lh\e(B)
325  ("]" ?\e,Ls\e(B)
326  ("a" ?\e,LP\e(B)
327  ("s" ?\e,La\e(B)
328  ("d" ?\e,LT\e(B)
329  ("f" ?\e,Ld\e(B)
330  ("g" ?\e,LS\e(B)
331  ("h" ?\e,Le\e(B)
332  ("j" ?\e,Lx\e(B)
333  ("k" ?\e,LZ\e(B)
334  ("l" ?\e,L[\e(B)
335  (";" ?\e,Lg\e(B)
336  ("'" ?\e,L|\e(B)
337  ("\\" ?\e,LV\e(B)
338  ("z" ?\e,Lu\e(B)
339  ("x" ?\e,L\7f\e(B)
340  ("c" ?\e,Lf\e(B)
341  ("v" ?\e,LR\e(B)
342  ("b" ?\e,LQ\e(B)
343  ("n" ?\e,L]\e(B)
344  ("m" ?\e,L\\e(B)
345  ("," ?,)
346  ("." ?.)
347  ("/" ?-)
348
349  ("!" ?!)
350  ("@" ?\")
351  ("#" ?#)
352  ("$" ?$)
353  ("%" ?%)
354  ("^" ?&)
355  ("&" ?')
356  ("*" ?\()
357  ("(" ?\))
358  (")" ?=)
359  ("_" ??)
360  ("+" ?*)
361  ("~" ?>)
362  ("Q" ?\e,L)\e(B)
363  ("W" ?\e,L*\e(B)
364  ("E" ?\e,L5\e(B)
365  ("R" ?\e,L@\e(B)
366  ("T" ?\e,LB\e(B)
367  ("Y" ?\e,L7\e(B)
368  ("U" ?\e,LC\e(B)
369  ("I" ?\e,L8\e(B)
370  ("O" ?\e,L>\e(B)
371  ("P" ?\e,L?\e(B)
372  ("{" ?\e,LH\e(B)
373  ("}" ?\e,L#\e(B)
374  ("A" ?\e,L0\e(B)
375  ("S" ?\e,LA\e(B)
376  ("D" ?\e,L4\e(B)
377  ("F" ?\e,LD\e(B)
378  ("G" ?\e,L3\e(B)
379  ("H" ?\e,LE\e(B)
380  ("J" ?\e,L(\e(B)
381  ("K" ?\e,L:\e(B)
382  ("L" ?\e,L;\e(B)
383  (":" ?\e,LG\e(B)
384  ("\"" ?\e,L,\e(B)
385  ("|" ?\e,L6\e(B)
386  ("Z" ?\e,L%\e(B)
387  ("X" ?\e,L/\e(B)
388  ("C" ?\e,LF\e(B)
389  ("V" ?\e,L2\e(B)
390  ("B" ?\e,L1\e(B)
391  ("N" ?\e,L=\e(B)
392  ("M" ?\e,L<\e(B)
393  ("<" ?\;)
394  (">" ?:)
395  ("?" ?_))
396
397 ;;
398
399 (quail-define-package
400  "cyrillic-serbian" "Cyrillic" "\e,L6\e(BS" nil
401  "\e,L)*5@B7\e(B-\e,L"+\e(B keyboard layout based on JUS.I.K1.005 (ISO 8859-5 encoding)"
402  nil t t t t nil nil nil nil nil t)
403
404 ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
405 ;;   \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
406 ;;    \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
407 ;;     \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  ,; .: -_
408
409 (quail-define-rules
410  ("1" ?1)
411  ("2" ?2)
412  ("3" ?3)
413  ("4" ?4)
414  ("5" ?5)
415  ("6" ?6)
416  ("7" ?7)
417  ("8" ?8)
418  ("9" ?9)
419  ("0" ?0)
420  ("-" ?/)
421  ("=" ?+)
422  ("`" ?<)
423  ("q" ?\e,Ly\e(B)
424  ("w" ?\e,Lz\e(B)
425  ("e" ?\e,LU\e(B)
426  ("r" ?\e,L`\e(B)
427  ("t" ?\e,Lb\e(B)
428  ("y" ?\e,LW\e(B)
429  ("u" ?\e,Lc\e(B)
430  ("i" ?\e,LX\e(B)
431  ("o" ?\e,L^\e(B)
432  ("p" ?\e,L_\e(B)
433  ("[" ?\e,Lh\e(B)
434  ("]" ?\e,Lr\e(B)
435  ("a" ?\e,LP\e(B)
436  ("s" ?\e,La\e(B)
437  ("d" ?\e,LT\e(B)
438  ("f" ?\e,Ld\e(B)
439  ("g" ?\e,LS\e(B)
440  ("h" ?\e,Le\e(B)
441  ("j" ?\e,Lx\e(B)
442  ("k" ?\e,LZ\e(B)
443  ("l" ?\e,L[\e(B)
444  (";" ?\e,Lg\e(B)
445  ("'" ?\e,L{\e(B)
446  ("\\" ?\e,LV\e(B)
447  ("z" ?\e,Lu\e(B)
448  ("x" ?\e,L\7f\e(B)
449  ("c" ?\e,Lf\e(B)
450  ("v" ?\e,LR\e(B)
451  ("b" ?\e,LQ\e(B)
452  ("n" ?\e,L]\e(B)
453  ("m" ?\e,L\\e(B)
454  ("," ?,)
455  ("." ?.)
456  ("/" ?-)
457
458  ("!" ?!)
459  ("@" ?\")
460  ("#" ?#)
461  ("$" ?$)
462  ("%" ?%)
463  ("^" ?&)
464  ("&" ?')
465  ("*" ?\()
466  ("(" ?\))
467  (")" ?=)
468  ("_" ??)
469  ("+" ?*)
470  ("~" ?>)
471  ("Q" ?\e,L)\e(B)
472  ("W" ?\e,L*\e(B)
473  ("E" ?\e,L5\e(B)
474  ("R" ?\e,L@\e(B)
475  ("T" ?\e,LB\e(B)
476  ("Y" ?\e,L7\e(B)
477  ("U" ?\e,LC\e(B)
478  ("I" ?\e,L8\e(B)
479  ("O" ?\e,L>\e(B)
480  ("P" ?\e,L?\e(B)
481  ("{" ?\e,LH\e(B)
482  ("}" ?\e,L"\e(B)
483  ("A" ?\e,L0\e(B)
484  ("S" ?\e,LA\e(B)
485  ("D" ?\e,L4\e(B)
486  ("F" ?\e,LD\e(B)
487  ("G" ?\e,L3\e(B)
488  ("H" ?\e,LE\e(B)
489  ("J" ?\e,L(\e(B)
490  ("K" ?\e,L:\e(B)
491  ("L" ?\e,L;\e(B)
492  (":" ?\e,LG\e(B)
493  ("\"" ?\e,L+\e(B)
494  ("|" ?\e,L6\e(B)
495  ("Z" ?\e,L%\e(B)
496  ("X" ?\e,L/\e(B)
497  ("C" ?\e,LF\e(B)
498  ("V" ?\e,L2\e(B)
499  ("B" ?\e,L1\e(B)
500  ("N" ?\e,L=\e(B)
501  ("M" ?\e,L<\e(B)
502  ("<" ?\;)
503  (">" ?:)
504  ("?" ?_))
505
506 ;;
507
508 ;; Alexander Mikhailian comments:
509 ;; Having worked for several years as a Belarusian linguist, I still
510 ;; can not find the origin of this layout which BTW does include
511 ;; several characters that are not present in Belarusian and does not
512 ;; include a few ones that do exist in Belarusian.  Besides, the typo
513 ;; in the name of this layout speaks for itself since Belarusian has
514 ;; an outdated version of spelling which is "Byelorussian" and not
515 ;; "beylorussian".  I suggest that you just remove this layout.
516
517 ;; [`derived from JUS.I.K1' according to an old Mule note -- fx]
518
519 ;; (quail-define-package
520 ;;  "cyrillic-beylorussian" "Belarussian" "\e,L6\e(BB" nil
521 ;;  "\e,L)*5@B7\e(B-\e,L&.\e(B BEYLORUSSIAN (ISO 8859-5 encoding)"
522 ;;  nil t t t t nil nil nil nil nil t)
523
524 ;; ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
525 ;; ;;   \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
526 ;; ;;    \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
527 ;; ;;     \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  ,; .: -_
528
529 ;; (quail-define-rules
530 ;;  ("-" ?/)
531 ;;  ("=" ?+)
532 ;;  ("`" ?<)
533 ;;  ("q" ?\e,Ly\e(B)
534 ;;  ("w" ?\e,Lz\e(B)
535 ;;  ("e" ?\e,LU\e(B)
536 ;;  ("r" ?\e,L`\e(B)
537 ;;  ("t" ?\e,Lb\e(B)
538 ;;  ("y" ?\e,LW\e(B)
539 ;;  ("u" ?\e,Lc\e(B)
540 ;;  ("i" ?\e,LX\e(B)
541 ;;  ("o" ?\e,L^\e(B)
542 ;;  ("p" ?\e,L_\e(B)
543 ;;  ("[" ?\e,Lh\e(B)
544 ;;  ("]" ?\e,Lv\e(B)
545 ;;  ("a" ?\e,LP\e(B)
546 ;;  ("s" ?\e,La\e(B)
547 ;;  ("d" ?\e,LT\e(B)
548 ;;  ("f" ?\e,Ld\e(B)
549 ;;  ("g" ?\e,LS\e(B)
550 ;;  ("h" ?\e,Le\e(B)
551 ;;  ("j" ?\e,Lx\e(B)
552 ;;  ("k" ?\e,LZ\e(B)
553 ;;  ("l" ?\e,L[\e(B)
554 ;;  (";" ?\e,Lg\e(B)
555 ;;  ("'" ?\e,L~\e(B)
556 ;;  ("\\" ?\e,LV\e(B)
557 ;;  ("z" ?\e,Lu\e(B)
558 ;;  ("x" ?\e,L\7f\e(B)
559 ;;  ("c" ?\e,Lf\e(B)
560 ;;  ("v" ?\e,LR\e(B)
561 ;;  ("b" ?\e,LQ\e(B)
562 ;;  ("n" ?\e,L]\e(B)
563 ;;  ("m" ?\e,L\\e(B)
564 ;;  ("/" ?-)
565
566 ;;  ("@" ?\")
567 ;;  ("^" ?&)
568 ;;  ("&" ?')
569 ;;  ("*" ?\()
570 ;;  ("(" ?\))
571 ;;  (")" ?=)
572 ;;  ("_" ??)
573 ;;  ("+" ?*)
574 ;;  ("~" ?>)
575 ;;  ("Q" ?\e,L)\e(B)
576 ;;  ("W" ?\e,L*\e(B)
577 ;;  ("E" ?\e,L5\e(B)
578 ;;  ("R" ?\e,L@\e(B)
579 ;;  ("T" ?\e,LB\e(B)
580 ;;  ("Y" ?\e,L7\e(B)
581 ;;  ("U" ?\e,LC\e(B)
582 ;;  ("I" ?\e,L8\e(B)
583 ;;  ("O" ?\e,L>\e(B)
584 ;;  ("P" ?\e,L?\e(B)
585 ;;  ("{" ?\e,LH\e(B)
586 ;;  ("}" ?\e,L&\e(B)
587 ;;  ("A" ?\e,L0\e(B)
588 ;;  ("S" ?\e,LA\e(B)
589 ;;  ("D" ?\e,L4\e(B)
590 ;;  ("F" ?\e,LD\e(B)
591 ;;  ("G" ?\e,L3\e(B)
592 ;;  ("H" ?\e,LE\e(B)
593 ;;  ("J" ?\e,L(\e(B)
594 ;;  ("K" ?\e,L:\e(B)
595 ;;  ("L" ?\e,L;\e(B)
596 ;;  (":" ?\e,LG\e(B)
597 ;;  ("\"" ?\e,L.\e(B)
598 ;;  ("|" ?\e,L6\e(B)
599 ;;  ("Z" ?\e,L%\e(B)
600 ;;  ("X" ?\e,L/\e(B)
601 ;;  ("C" ?\e,LF\e(B)
602 ;;  ("V" ?\e,L2\e(B)
603 ;;  ("B" ?\e,L1\e(B)
604 ;;  ("N" ?\e,L=\e(B)
605 ;;  ("M" ?\e,L<\e(B)
606 ;;  ("<" ?\;)
607 ;;  (">" ?:)
608 ;;  ("?" ?_))
609
610 ;;
611
612 ;; Alexander Mikhailian reports the opinion of fellow Ukrainian
613 ;; linguist Bogdan Babych <babych@altern.org>:
614 ;; He had seen this layout on some oldish systems but that the vast
615 ;; majority of the population uses a modified version of the M$ Windows
616 ;; layout.  In fact, Microsoft shipped for a while a layout that was lacking
617 ;; two characters, precisely the "GHE_WITH_UPTURN" and the apostrophe.  The
618 ;; latest versions of Windows software do have the "GHE_WITH_UPTURN" in the
619 ;; ukrainian keyborad layout but the apostrophe is still not there, whereas
620 ;; there is one letter, "Cyrillic_YO", not used in ukrainian.  Ukrainians
621 ;; normally replace the "Cyrillic_YO" by the apostrophe sign and live
622 ;; happily with this little change.  [See "ukrainian-computer" below.]
623
624 ;; Fixme: add GHE_WITH_UPTURN.
625 (quail-define-package
626  "cyrillic-ukrainian" "Ukrainian" "\e,L6\e(BU" nil
627  "\e,L$'5@B7\e(B-\e,L&.\e(B UKRAINIAN (ISO 8859-5 encoding)
628
629 Sorry, but 'ghe with upturn' is not included in ISO 8859-5."
630  nil t t t t nil nil nil nil nil t)
631
632 ;;  1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
633 ;;   \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
634 ;;    \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
635 ;;     \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  ,; .: -_
636
637 (quail-define-rules
638  ("1" ?1)
639  ("2" ?2)
640  ("3" ?3)
641  ("4" ?4)
642  ("5" ?5)
643  ("6" ?6)
644  ("7" ?7)
645  ("8" ?8)
646  ("9" ?9)
647  ("0" ?0)
648  ("-" ?/)
649  ("=" ?+)
650  ("`" ?<)
651  ("q" ?\e,Lt\e(B)
652  ("w" ?\e,Lw\e(B)
653  ("e" ?\e,LU\e(B)
654  ("r" ?\e,L`\e(B)
655  ("t" ?\e,Lb\e(B)
656  ("y" ?\e,LW\e(B)
657  ("u" ?\e,Lc\e(B)
658  ("i" ?\e,LX\e(B)
659  ("o" ?\e,L^\e(B)
660  ("p" ?\e,L_\e(B)
661  ("[" ?\e,Lh\e(B)
662  ("]" ?\e,Lv\e(B)
663  ("a" ?\e,LP\e(B)
664  ("s" ?\e,La\e(B)
665  ("d" ?\e,LT\e(B)
666  ("f" ?\e,Ld\e(B)
667  ("g" ?\e,LS\e(B)
668  ("h" ?\e,Le\e(B)
669  ("j" ?\e,Lx\e(B)
670  ("k" ?\e,LZ\e(B)
671  ("l" ?\e,L[\e(B)
672  (";" ?\e,Lg\e(B)
673  ("'" ?\e,L~\e(B)
674  ("\\" ?\e,LV\e(B)
675  ("z" ?\e,Lu\e(B)
676  ("x" ?\e,L\7f\e(B)
677  ("c" ?\e,Lf\e(B)
678  ("v" ?\e,LR\e(B)
679  ("b" ?\e,LQ\e(B)
680  ("n" ?\e,L]\e(B)
681  ("m" ?\e,L\\e(B)
682  ("," ?,)
683  ("." ?.)
684  ("/" ?-)
685
686  ("!" ?!)
687  ("@" ?\")
688  ("#" ?#)
689  ("$" ?$)
690  ("%" ?%)
691  ("^" ?&)
692  ("&" ?')
693  ("*" ?\()
694  ("(" ?\))
695  (")" ?=)
696  ("_" ??)
697  ("+" ?*)
698  ("~" ?>)
699  ("Q" ?\e,L$\e(B)
700  ("W" ?\e,L'\e(B)
701  ("E" ?\e,L5\e(B)
702  ("R" ?\e,L@\e(B)
703  ("T" ?\e,LB\e(B)
704  ("Y" ?\e,L7\e(B)
705  ("U" ?\e,LC\e(B)
706  ("I" ?\e,L8\e(B)
707  ("O" ?\e,L>\e(B)
708  ("P" ?\e,L?\e(B)
709  ("{" ?\e,LH\e(B)
710  ("}" ?\e,L&\e(B)
711  ("A" ?\e,L0\e(B)
712  ("S" ?\e,LA\e(B)
713  ("D" ?\e,L4\e(B)
714  ("F" ?\e,LD\e(B)
715  ("G" ?\e,L3\e(B)
716  ("H" ?\e,LE\e(B)
717  ("J" ?\e,L(\e(B)
718  ("K" ?\e,L:\e(B)
719  ("L" ?\e,L;\e(B)
720  (":" ?\e,LG\e(B)
721  ("\"" ?\e,L.\e(B)
722  ("|" ?\e,L6\e(B)
723  ("Z" ?\e,L%\e(B)
724  ("X" ?\e,L/\e(B)
725  ("C" ?\e,LF\e(B)
726  ("V" ?\e,L2\e(B)
727  ("B" ?\e,L1\e(B)
728  ("N" ?\e,L=\e(B)
729  ("M" ?\e,L<\e(B)
730  ("<" ?\;)
731  (">" ?:)
732  ("?" ?_))
733
734 (quail-define-package
735  "ukrainian-computer" "Ukrainian" "UK" nil
736  "\e,L9FC:5=\e(B Ukrainian (for use with KOI8-U encoding)."
737  nil t t t t nil nil nil nil nil t)
738
739 ;;  ' 1! 2" 3\e,Lp\e(B 4; 5% 6: 7? 8* 9( 0) -_ =+
740 ;;   \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,L'\e(B
741 ;;    \e,LD\e(B  \e,L&\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,L$\e(B  \e%GҐ\e%@
742 ;;      \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  .,
743
744 (eval
745  (append 
746   '(quail-define-rules)
747   '(("1" ?1)
748     ("2" ?2)
749     ("3" ?3)
750     ("4" ?4)
751     ("5" ?5)
752     ("6" ?6)
753     ("7" ?7)
754     ("8" ?8)
755     ("9" ?9)
756     ("0" ?0)
757     ("-" ?-)
758     ("=" ?=)
759     ("`" ?')
760     ("q" ?\e,LY\e(B)
761     ("w" ?\e,Lf\e(B)
762     ("e" ?\e,Lc\e(B)
763     ("r" ?\e,LZ\e(B)
764     ("t" ?\e,LU\e(B)
765     ("y" ?\e,L]\e(B)
766     ("u" ?\e,LS\e(B)
767     ("i" ?\e,Lh\e(B)
768     ("o" ?\e,Li\e(B)
769     ("p" ?\e,LW\e(B)
770     ("[" ?\e,Le\e(B)
771     ("]" ?\e,Lw\e(B)
772     ("a" ?\e,Ld\e(B)
773     ("s" ?\e,Lv\e(B)
774     ("d" ?\e,LR\e(B)
775     ("f" ?\e,LP\e(B)
776     ("g" ?\e,L_\e(B)
777     ("h" ?\e,L`\e(B)
778     ("j" ?\e,L^\e(B)
779     ("k" ?\e,L[\e(B)
780     ("l" ?\e,LT\e(B)
781     (";" ?\e,LV\e(B)
782     ("'" ?\e,Lt\e(B)
783     ("z" ?\e,Lo\e(B)
784     ("x" ?\e,Lg\e(B)
785     ("c" ?\e,La\e(B)
786     ("v" ?\e,L\\e(B)
787     ("b" ?\e,LX\e(B)
788     ("n" ?\e,Lb\e(B)
789     ("m" ?\e,Ll\e(B)
790     ("," ?\e,LQ\e(B)
791     ("." ?\e,Ln\e(B)
792     ("/" ?.)
793     ("!" ?!)
794     ("@" ?\")
795     ("#" ?\e,Lp\e(B)
796     ("$" ?\;)
797     ("%" ?%)
798     ("^" ?:)
799     ("&" ??)
800     ("*" ?*)
801     ("(" ?()
802      (")" ?))
803     ("_" ?_)
804     ("+" ?+)
805     ("~" ?')
806     ("Q" ?\e,L9\e(B)
807     ("W" ?\e,LF\e(B)
808     ("E" ?\e,LC\e(B)
809     ("R" ?\e,L:\e(B)
810     ("T" ?\e,L5\e(B)
811     ("Y" ?\e,L=\e(B)
812     ("U" ?\e,L3\e(B)
813     ("I" ?\e,LH\e(B)
814     ("O" ?\e,LI\e(B)
815     ("P" ?\e,L7\e(B)
816     ("{" ?\e,LE\e(B)
817     ("}" ?\e,L'\e(B)
818     ("A" ?\e,LD\e(B)
819     ("S" ?\e,L&\e(B)
820     ("D" ?\e,L2\e(B)
821     ("F" ?\e,L0\e(B)
822     ("G" ?\e,L?\e(B)
823     ("H" ?\e,L@\e(B)
824     ("J" ?\e,L>\e(B)
825     ("K" ?\e,L;\e(B)
826     ("L" ?\e,L4\e(B)
827     (":" ?\e,L6\e(B)
828     ("\"" ?\e,L$\e(B)
829     ("Z" ?\e,LO\e(B)
830     ("X" ?\e,LG\e(B)
831     ("C" ?\e,LA\e(B)
832     ("V" ?\e,L<\e(B)
833     ("B" ?\e,L8\e(B)
834     ("N" ?\e,LB\e(B)
835     ("M" ?\e,LL\e(B)
836     ("<" ?\e,L1\e(B)
837     (">" ?\e,LN\e(B)
838     ("?" ?,))
839   ;; XEmacs change; conditionalise
840   (when cyrillic-decent-xemacs-unicode-support
841     (list (list "\\" (decode-char 'ucs #x491))
842           (list "|" (decode-char 'ucs #x490))))))
843
844 ;; Alexander Mikhailian says this is of limited use.  It has been
845 ;; popular among emigrants or foreigners who have to type in Cyrillic
846 ;; (mostly Russian) from time to time.
847 (quail-define-package
848  "cyrillic-yawerty" "Cyrillic" "\e,L6O\e(B" nil
849  "\e,LO25@BK\e(B Roman transcription (ISO 8859-5 encoding)
850
851 This layout is based on Roman transcription by phonemic resemblance.
852 When preceded by a '/', the second and the third rows (number key row) change
853 as follows.
854
855   keytop | Q  W  E  R  T  Y  U  I  O  P  A  S  D
856  --------+---------------------------------------
857   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"
858  nil t t t t nil nil nil nil nil t)
859
860 ;;  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
861 ;;   \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
862 ;;    \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,L9\e(B  \e,L:\e(B  \e,L;\e(B  ;: '" \e,LM\e(B
863 ;;     \e,L7\e(B  \e,LL\e(B  \e,LF\e(B  \e,L6\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B  ,< .> /?
864
865 ;;  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
866 ;;   \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,LH\e(B  \e,LI\e(B
867 ;;    \e,L,\e(B  \e,L.\e(B  \e,L/\e(B  \e,LD\e(B  \e,L3\e(B  \e,LE\e(B  \e,L9\e(B  \e,L:\e(B  \e,L;\e(B  ;: '" \e,LM\e(B
868 ;;     \e,L7\e(B  \e,LL\e(B  \e,LF\e(B  \e,L6\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B  ,< .> /?
869
870 (quail-define-rules
871  ("1" ?1)
872  ("2" ?2)
873  ("3" ?3)
874  ("4" ?4)
875  ("5" ?5)
876  ("6" ?6)
877  ("7" ?7)
878  ("8" ?8)
879  ("9" ?9)
880  ("0" ?0)
881  ("-" ?-)
882  ("=" ?\e,Lg\e(B)
883  ("`" ?\e,Ln\e(B)
884  ("q" ?\e,Lo\e(B)
885  ("w" ?\e,LR\e(B)
886  ("e" ?\e,LU\e(B)
887  ("r" ?\e,L`\e(B)
888  ("t" ?\e,Lb\e(B)
889  ("y" ?\e,Lk\e(B)
890  ("u" ?\e,Lc\e(B)
891  ("i" ?\e,LX\e(B)
892  ("o" ?\e,L^\e(B)
893  ("p" ?\e,L_\e(B)
894  ("[" ?\e,Lh\e(B)
895  ("]" ?\e,Li\e(B)
896  ("a" ?\e,LP\e(B)
897  ("s" ?\e,La\e(B)
898  ("d" ?\e,LT\e(B)
899  ("f" ?\e,Ld\e(B)
900  ("g" ?\e,LS\e(B)
901  ("h" ?\e,Le\e(B)
902  ("j" ?\e,LY\e(B)
903  ("k" ?\e,LZ\e(B)
904  ("l" ?\e,L[\e(B)
905  (";" ?\;)
906  ("'" ?')
907  ("\\" ?\e,Lm\e(B)
908  ("z" ?\e,LW\e(B)
909  ("x" ?\e,Ll\e(B)
910  ("c" ?\e,Lf\e(B)
911  ("v" ?\e,LV\e(B)
912  ("b" ?\e,LQ\e(B)
913  ("n" ?\e,L]\e(B)
914  ("m" ?\e,L\\e(B)
915  ("," ?,)
916  ("." ?.)
917  ("/" ?/)
918
919  ("!" ?!)
920  ("@" ?\e,Lq\e(B)
921  ("#" ?\e,Lj\e(B)
922  ("$" ?\e,L!\e(B)
923  ("%" ?%)
924  ("^" ?^)
925  ("&" ?&)
926  ("*" ?*)
927  ("(" ?\()
928  (")" ?\))
929  ("_" ?_)
930  ("+" ?\e,LG\e(B)
931  ("~" ?\e,LN\e(B)
932  ("Q" ?\e,LO\e(B)
933  ("W" ?\e,L2\e(B)
934  ("E" ?\e,L5\e(B)
935  ("R" ?\e,L@\e(B)
936  ("T" ?\e,LB\e(B)
937  ("Y" ?\e,LK\e(B)
938  ("U" ?\e,LC\e(B)
939  ("I" ?\e,L8\e(B)
940  ("O" ?\e,L>\e(B)
941  ("P" ?\e,L?\e(B)
942  ("{" ?\e,LH\e(B)
943  ("}" ?\e,LI\e(B)
944  ("A" ?\e,L0\e(B)
945  ("S" ?\e,LA\e(B)
946  ("D" ?\e,L4\e(B)
947  ("F" ?\e,LD\e(B)
948  ("G" ?\e,L3\e(B)
949  ("H" ?\e,LE\e(B)
950  ("J" ?\e,L9\e(B)
951  ("K" ?\e,L:\e(B)
952  ("L" ?\e,L;\e(B)
953  (":" ?:)
954  ("\"" ?\")
955  ("|" ?\e,LM\e(B)
956  ("Z" ?\e,L7\e(B)
957  ("X" ?\e,LL\e(B)
958  ("C" ?\e,LF\e(B)
959  ("V" ?\e,L6\e(B)
960  ("B" ?\e,L1\e(B)
961  ("N" ?\e,L=\e(B)
962  ("M" ?\e,L<\e(B)
963  ("<" ?<)
964  (">" ?>)
965  ("?" ??)
966
967  ("/q" ?\e,Lr\e(B)
968  ("/w" ?\e,Ls\e(B)
969  ("/e" ?\e,Lt\e(B)
970  ("/r" ?\e,Lu\e(B)
971  ("/t" ?\e,Lv\e(B)
972  ("/y" ?\e,Lw\e(B)
973  ("/u" ?\e,Lx\e(B)
974  ("/i" ?\e,Ly\e(B)
975  ("/o" ?\e,Lz\e(B)
976  ("/p" ?\e,L{\e(B)
977  ("/a" ?\e,L|\e(B)
978  ("/s" ?\e,L~\e(B)
979  ("/d" ?\e,L\7f\e(B)
980
981  ("/Q" ?\e,L"\e(B)
982  ("/W" ?\e,L#\e(B)
983  ("/E" ?\e,L$\e(B)
984  ("/R" ?\e,L%\e(B)
985  ("/T" ?\e,L&\e(B)
986  ("/Y" ?\e,L'\e(B)
987  ("/U" ?\e,L(\e(B)
988  ("/I" ?\e,L)\e(B)
989  ("/O" ?\e,L*\e(B)
990  ("/P" ?\e,L+\e(B)
991  ("/A" ?\e,L,\e(B)
992  ("/S" ?\e,L.\e(B)
993  ("/D" ?\e,L/\e(B))
994
995 ;; This was provided by Valery Alexeev <valery@domovoy.math.uga.edu>.
996
997 ;; Ognyan Kulev <ogi@fmi.uni-sofia.bg> wrote:
998
999 ;; I would suggest future `cyrillic-translit' to be with the
1000 ;; modification of `cyrillic-translit-bulgarian' applied and the
1001 ;; latter to disappear.  It could be used by people who write
1002 ;; bulgarian e-mails with latin letters for kick start (phonetic input
1003 ;; method is not so obvious as translit input method but each letter
1004 ;; is one keypress and a *lot* of people know it).
1005
1006 ;; Anton Zinoviev <anton@lml.bas.bg> wrote:
1007 ;; I would say that the main idea for cyrillic-translit is to be
1008 ;; language-independent and universal.  It should be able to generate all
1009 ;; Cyrillic symbols.
1010 (quail-define-package
1011  "cyrillic-translit" "Cyrillic" "\e,L6\e(Bt" t
1012  "Intuitively transliterated keyboard layout.
1013 Most convenient for entering Russian, but all Cyrillic characters
1014 are included.  Should handle most cases.  However:
1015   for \e,Lf\e(B (TSE) use \"c\", never \"ts\"
1016   \e,Li\e(B (SHCHA = Bulgarian SHT) = \"shch\", \"sj\", \"/sht\" or \"/t\",
1017   \e,Lm\e(B (REVERSE ROUNDED E) = \"e'\" or \"e`\"
1018   \e,Le\e(B (KHA) when after \e,La\e(B (S) = \"x\" or \"kh\"
1019   \e,Lj\e(B (HARD SIGN) = \"~\", \e,LJ\e(B (CAPITAL HARD SIGN) = \"~~\",
1020   \e,Ll\e(B (SOFT SIGN) = \"'\", \e,LL\e(B (CAPITAL SOFT SIGN) = \"''\",
1021   \e,Lo\e(B (YA) = \"ya\", \"ja\" or \"q\".
1022
1023 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
1024 u f h=kh=x c ch sh shch=sj=/s=/sht ~ y ' e' yu=ju ya=ja=q
1025
1026 Also included are Ukrainian \e,Lt\e(B (YE) = \"/e\" and \e,Lw\e(B (YI) = \"yi\",
1027 Belarusian \e,L~\e(B (SHORT U) = \"u'\",
1028 Serbo-Croatian \e,Lr\e(B (DJE) = \"/d\", \e,L{\e(B (CHJE)= \"/ch\",
1029 Macedonian \e,Ls\e(B (GJE) = \"/g\", \e,Lu\e(B (DZE) = \"/s\", \e,L|\e(B (KJE) = \"/k\",
1030 cyrillic \e,Lv\e(B (I DECIMAL) = \"/i\", \e,Lx\e(B (JE) = \"/j\",
1031 \e,Ly\e(B (LJE) = \"/l\", \e,Lz\e(B (NJE) = \"/n\" and \e,L\7f\e(B (DZE) =\"/z\"."
1032  nil t t t t nil nil nil nil nil t)
1033
1034 (quail-define-rules
1035  ("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)
1036  ("e" ?\e,LU\e(B) ("je" ?\e,LU\e(B)
1037  ("yo" ?\e,Lq\e(B) ("jo" ?\e,Lq\e(B)
1038  ("zh" ?\e,LV\e(B) ("z" ?\e,LW\e(B) ("i" ?\e,LX\e(B)
1039  ("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)
1040  ("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)
1041  ("f" ?\e,Ld\e(B) ("x" ?\e,Le\e(B) ("h" ?\e,Le\e(B) ("kh" ?\e,Le\e(B)
1042  ("c" ?\e,Lf\e(B) ("ch" ?\e,Lg\e(B)
1043  ("sh" ?\e,Lh\e(B)
1044  ("shch" ?\e,Li\e(B) ("sj" ?\e,Li\e(B)
1045  ("/sht" ?\e,Li\e(B) ("/t" ?\e,Li\e(B)
1046  ("~" ?\e,Lj\e(B) ("y" ?\e,Lk\e(B) ("'" ?\e,Ll\e(B) ("`" ?\e,Ll\e(B)
1047  ("e'" ?\e,Lm\e(B) ("e`" ?\e,Lm\e(B) ("@" ?\e,Lm\e(B)
1048  ("yu" ?\e,Ln\e(B) ("ju" ?\e,Ln\e(B)
1049  ("ya" ?\e,Lo\e(B) ("ja" ?\e,Lo\e(B) ("q" ?\e,Lo\e(B)
1050
1051  ("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)
1052  ("E" ?\e,L5\e(B) ("Je" ?\e,L5\e(B) ("JE" ?\e,L5\e(B)
1053  ("Yo" ?\e,L!\e(B) ("YO" ?\e,L!\e(B) ("Jo" ?\e,L!\e(B) ("JO" ?\e,L!\e(B)
1054  ("Zh" ?\e,L6\e(B) ("ZH" ?\e,L6\e(B) ("Z" ?\e,L7\e(B) ("I" ?\e,L8\e(B)
1055  ("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)
1056  ("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)
1057  ("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)
1058  ("C" ?\e,LF\e(B) ("Ch" ?\e,LG\e(B) ("CH" ?\e,LG\e(B)
1059  ("Sh" ?\e,LH\e(B) ("SH" ?\e,LH\e(B)
1060  ("Shch" ?\e,LI\e(B) ("SHCH" ?\e,LI\e(B) ("Sj" ?\e,LI\e(B) ("SJ" ?\e,LI\e(B)
1061  ("/Sht" ?\e,LI\e(B) ("/SHT" ?\e,LI\e(B) ("/T" ?\e,LI\e(B)
1062  ("~~" "\e,LJ\e(B") ("Y" ?\e,LK\e(B) ("''" "\e,LL\e(B") ("E'" ?\e,LM\e(B) ("E`" ?\e,LM\e(B)
1063  ("Yu" ?\e,LN\e(B) ("YU" ?\e,LN\e(B) ("Ju" ?\e,LN\e(B) ("JU" ?\e,LN\e(B)
1064  ("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)
1065
1066  ("/e" ?\e,Lt\e(B) ("yi" ?\e,Lw\e(B) ("u'" ?\e,L~\e(B)
1067  ("/d" ?\e,Lr\e(B) ("/ch" ?\e,L{\e(B)
1068  ("/g" ?\e,Ls\e(B) ("/s" ?\e,Lu\e(B) ("/k" ?\e,L|\e(B)
1069  ("/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)
1070  ("/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)
1071  ("/D" ?\e,L"\e(B) ("/Ch" ?\e,L+\e(B) ("/CH" ?\e,L+\e(B)
1072  ("/G" ?\e,L#\e(B) ("/S" ?\e,L%\e(B) ("/K" ?\e,L,\e(B)
1073  ("/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)
1074 )
1075
1076 ;; Originally from Yudit's `Belarusian input table according to
1077 ;; STB955-94 belarusian standard' (not all) by Alexander Mikhailian
1078 ;; <mikhailian@altern.org>, subsequently amended by AM.
1079
1080 ;; XEmacs change; not Unicode based, uses ISO-8859-5 for compatibility with
1081 ;; 21.4.
1082 (quail-define-package
1083  "belarusian" "Belarusian" "BE" nil
1084  "\e,L9FC:5=\e(B keyboard layout registered as STB955-94 Belarusian standard." 
1085  nil t t t t nil nil nil nil nil t)
1086
1087 ;; \e,Lq!\e(B 1! 2" 3N 4; 5% 6: 7? 8* 9( 0) -_ =+
1088 ;;     \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,L.\e(B  \e,L7\e(B  \e,LE\e(B  '
1089 ;;      \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
1090 ;;       \e,LO\e(B  \e,LG\e(B  \e,LA\e(B  \e,L<\e(B  \e,L&\e(B  \e,LB\e(B  \e,LL\e(B  \e,L1\e(B  \e,LN\e(B  .,
1091
1092 (quail-define-rules
1093  ("~" ?\e,L!\e(B)
1094  ("@" ?\")
1095  ("#" ?\e,Lp\e(B)
1096  ("$" ?\;)
1097  ("%" ?%)
1098  ("^" ?:)
1099  ("&" ??)
1100  ("Q" ?\e,L9\e(B)
1101  ("W" ?\e,LF\e(B)
1102  ("E" ?\e,LC\e(B)
1103  ("R" ?\e,L:\e(B)
1104  ("T" ?\e,L5\e(B)
1105  ("Y" ?\e,L=\e(B)
1106  ("U" ?\e,L3\e(B)
1107  ("I" ?\e,LH\e(B)
1108  ("O" ?\e,L.\e(B)
1109  ("P" ?\e,L7\e(B)
1110  ("{" ?\e,LE\e(B)
1111  ("}" ?')
1112  ("A" ?\e,LD\e(B)
1113  ("S" ?\e,LK\e(B)
1114  ("D" ?\e,L2\e(B)
1115  ("F" ?\e,L0\e(B)
1116  ("G" ?\e,L?\e(B)
1117  ("H" ?\e,L@\e(B)
1118  ("J" ?\e,L>\e(B)
1119  ("K" ?\e,L;\e(B)
1120  ("L" ?\e,L4\e(B)
1121  (":" ?\e,L6\e(B)
1122  ("\"" ?\e,LM\e(B)
1123  ("|" ?|)
1124  ("Z" ?\e,LO\e(B)
1125  ("X" ?\e,LG\e(B)
1126  ("C" ?\e,LA\e(B)
1127  ("V" ?\e,L<\e(B)
1128  ("B" ?\e,L&\e(B)
1129  ("N" ?\e,LB\e(B)
1130  ("M" ?\e,LL\e(B)
1131  ("<" ?\e,L1\e(B)
1132  (">" ?\e,LN\e(B)
1133  ("?" ?,)
1134
1135  ("`" ?\e,Lq\e(B)
1136  ("q" ?\e,LY\e(B)
1137  ("w" ?\e,Lf\e(B)
1138  ("e" ?\e,Lc\e(B)
1139  ("r" ?\e,LZ\e(B)
1140  ("t" ?\e,LU\e(B)
1141  ("y" ?\e,L]\e(B)
1142  ("u" ?\e,LS\e(B)
1143  ("i" ?\e,Lh\e(B)
1144  ("o" ?\e,L~\e(B)
1145  ("p" ?\e,LW\e(B)
1146  ("[" ?\e,Le\e(B)
1147  ("]" ?')
1148  ("a" ?\e,Ld\e(B)
1149  ("s" ?\e,Lk\e(B)
1150  ("d" ?\e,LR\e(B)
1151  ("f" ?\e,LP\e(B)
1152  ("g" ?\e,L_\e(B)
1153  ("h" ?\e,L`\e(B)
1154  ("j" ?\e,L^\e(B)
1155  ("k" ?\e,L[\e(B)
1156  ("l" ?\e,LT\e(B)
1157  (";" ?\e,LV\e(B)
1158  ("'" ?\e,Lm\e(B)
1159  ("z" ?\e,Lo\e(B)
1160  ("x" ?\e,Lg\e(B)
1161  ("c" ?\e,La\e(B)
1162  ("v" ?\e,L\\e(B)
1163  ("b" ?\e,Lv\e(B)
1164  ("n" ?\e,Lb\e(B)
1165  ("m" ?\e,Ll\e(B)
1166  ("," ?\e,LQ\e(B)
1167  ("." ?\e,Ln\e(B)
1168  ("/" ?.))
1169
1170 ;; From `Bulgarian-PHO.kmap for Yudit', Alexander Shopov
1171 ;; <al_shopov@web.bg>.
1172
1173 ;; Extra commentary and the indicator from an independent
1174 ;; (cyrillic-iso8859-5) implementation by Ognyan Kulev
1175 ;; <ogi@fmi.uni-sofia.bg> and name changes from Anton Zinoviev
1176 ;; <anton@lml.bas.bg>.
1177 ;; XEmacs change; doesn't produce Mule Unicode characters. 
1178 (quail-define-package
1179  "bulgarian-phonetic" "Bulgarian" "\e,L61D\e(B"
1180  nil
1181  "Bulgarian Phonetic keyboard layout. 
1182
1183 The layout is similar to `cyrillic-translit', but all Bulgarian
1184 characters are typed with a single key.
1185
1186 Use /& for \e,A'\e(B (Cyrillic paragraph) and /# for \e,Lp\e(B.
1187
1188 The letters \e,LG\e(B, \e,LH\e(B, \e,LI\e(B and \e,LN\e(B are not affected by Caps Lock."
1189  nil t t t t nil nil nil nil nil t)
1190
1191 ;;  \e,LG\e(B
1192 ;;      \e,LO\e(B  \e,L2\e(B  \e,L5\e(B  \e,L@\e(B  \e,LB\e(B  \e,LJ\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
1193 ;;       \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,L9\e(B  \e,L:\e(B  \e,L;\e(B        \e,LN\e(B
1194 ;;        \e,L7\e(B  \e,LL\e(B  \e,LF\e(B  \e,L6\e(B  \e,L1\e(B  \e,L=\e(B  \e,L<\e(B
1195
1196 (quail-define-rules
1197  ("/&" ?\e,A'\e(B)
1198  ("/#" ?\e,Lp\e(B)
1199  ("A" ?\e,L0\e(B)
1200  ("B" ?\e,L1\e(B)
1201  ("W" ?\e,L2\e(B)
1202  ("G" ?\e,L3\e(B)
1203  ("D" ?\e,L4\e(B)
1204  ("E" ?\e,L5\e(B)
1205  ("V" ?\e,L6\e(B)
1206  ("Z" ?\e,L7\e(B)
1207  ("I" ?\e,L8\e(B)
1208  ("J" ?\e,L9\e(B)
1209  ("K" ?\e,L:\e(B)
1210  ("L" ?\e,L;\e(B)
1211  ("M" ?\e,L<\e(B)
1212  ("N" ?\e,L=\e(B)
1213  ("O" ?\e,L>\e(B)
1214  ("P" ?\e,L?\e(B)
1215  ("R" ?\e,L@\e(B)
1216  ("S" ?\e,LA\e(B)
1217  ("T" ?\e,LB\e(B)
1218  ("U" ?\e,LC\e(B)
1219  ("F" ?\e,LD\e(B)
1220  ("H" ?\e,LE\e(B)
1221  ("C" ?\e,LF\e(B)
1222  ("~" ?\e,LG\e(B)
1223  ("{" ?\e,LH\e(B)
1224  ("}" ?\e,LI\e(B)
1225  ("Y" ?\e,LJ\e(B)
1226  ("X" ?\e,LL\e(B)
1227  ("|" ?\e,LN\e(B)
1228  ("Q" ?\e,LO\e(B)
1229  ("a" ?\e,LP\e(B)
1230  ("b" ?\e,LQ\e(B)
1231  ("w" ?\e,LR\e(B)
1232  ("g" ?\e,LS\e(B)
1233  ("d" ?\e,LT\e(B)
1234  ("e" ?\e,LU\e(B)
1235  ("v" ?\e,LV\e(B)
1236  ("z" ?\e,LW\e(B)
1237  ("i" ?\e,LX\e(B)
1238  ("j" ?\e,LY\e(B)
1239  ("k" ?\e,LZ\e(B)
1240  ("l" ?\e,L[\e(B)
1241  ("m" ?\e,L\\e(B)
1242  ("n" ?\e,L]\e(B)
1243  ("o" ?\e,L^\e(B)
1244  ("p" ?\e,L_\e(B)
1245  ("r" ?\e,L`\e(B)
1246  ("s" ?\e,La\e(B)
1247  ("t" ?\e,Lb\e(B)
1248  ("u" ?\e,Lc\e(B)
1249  ("f" ?\e,Ld\e(B)
1250  ("h" ?\e,Le\e(B)
1251  ("c" ?\e,Lf\e(B)
1252  ("`" ?\e,Lg\e(B)
1253  ("[" ?\e,Lh\e(B)
1254  ("]" ?\e,Li\e(B)
1255  ("y" ?\e,Lj\e(B)
1256  ("x" ?\e,Ll\e(B)
1257  ("\\" ?\e,Ln\e(B)
1258  ("q" ?\e,Lo\e(B))
1259
1260 ;; Based on an implementation by Ognyan Kulev <ogi@fmi.uni-sofia.bg>.
1261 ;; This follows XKB bg.
1262
1263 (quail-define-package
1264  "bulgarian-bds" "Bulgarian" "\e,L14A\e(B" nil
1265  "Bulgarian standard keyboard layout (BDS)
1266
1267 This keyboard layout is standard for Bulgarian typewriters.
1268
1269 The letters \e,LF\e(B, \e,L<\e(B, \e,LG\e(B, \e,L@\e(B, \e,L;\e(B, \e,L1\e(B and \e,LK\e(B are not affected by Caps Lock.
1270
1271 In addition to original Bulgarian typewriter layout, keys \\ and |
1272 are transformed into ' and \e,LK\e(B respectively.  Some keyboards mark these
1273 keys as being transformed into ( and ) respectively.  For ( and ), use
1274 ` and ~ respectively.  This input method follows XKB."
1275  nil t t t t nil nil nil nil nil t)
1276
1277 ;;  () 1! 2? 3+ 4" 5% 6= 7: 8/ 9_ 0\e,Lp\e(B -I .V
1278 ;;      ,\e,Lk\e(B \e,LC\e(B  \e,L5\e(B  \e,L8\e(B  \e,LH\e(B  \e,LI\e(B  \e,L:\e(B  \e,LA\e(B  \e,L4\e(B  \e,L7\e(B  \e,LF\e(B  ;\e,A'\e(B
1279 ;;       \e,LL\e(B  \e,LO\e(B  \e,L0\e(B  \e,L>\e(B  \e,L6\e(B  \e,L3\e(B  \e,LB\e(B  \e,L=\e(B  \e,L2\e(B  \e,L<\e(B  \e,LG\e(B  '\e,LK\e(B
1280 ;;        \e,LN\e(B  \e,L9\e(B  \e,LJ\e(B  \e,LM\e(B  \e,LD\e(B  \e,LE\e(B  \e,L?\e(B  \e,L@\e(B  \e,L;\e(B  \e,L1\e(B
1281
1282 (quail-define-rules
1283
1284  ("1" ?1) ("!" ?!)
1285  ("2" ?2) ("@" ??)
1286  ("3" ?3) ("#" ?+)
1287  ("4" ?4) ("$" ?\")
1288  ("5" ?5) ("%" ?%)
1289  ("6" ?6) ("^" ?=)
1290  ("7" ?7) ("&" ?:)
1291  ("8" ?8) ("*" ?/)
1292  ("9" ?9) ("(" ?_)
1293  ("0" ?0) (")" ?\e,Lp\e(B)
1294  ("-" ?-) ("_" ?I)
1295  ("=" ?.) ("+" ?V)
1296
1297  ("q" ?,) ("Q" ?\e,Lk\e(B)
1298  ("w" ?\e,Lc\e(B) ("W" ?\e,LC\e(B)
1299  ("e" ?\e,LU\e(B) ("E" ?\e,L5\e(B)
1300  ("r" ?\e,LX\e(B) ("R" ?\e,L8\e(B)
1301  ("t" ?\e,Lh\e(B) ("T" ?\e,LH\e(B)
1302  ("y" ?\e,Li\e(B) ("Y" ?\e,LI\e(B)
1303  ("u" ?\e,LZ\e(B) ("U" ?\e,L:\e(B)
1304  ("i" ?\e,La\e(B) ("I" ?\e,LA\e(B)
1305  ("o" ?\e,LT\e(B) ("O" ?\e,L4\e(B)
1306  ("p" ?\e,LW\e(B) ("P" ?\e,L7\e(B)
1307  ("[" ?\e,Lf\e(B) ("{" ?\e,LF\e(B)
1308  ("]" ?\;) ("}" ?\e,A'\e(B)
1309
1310  ("a" ?\e,Ll\e(B) ("A" ?\e,LL\e(B)
1311  ("s" ?\e,Lo\e(B) ("S" ?\e,LO\e(B)
1312  ("d" ?\e,LP\e(B) ("D" ?\e,L0\e(B)
1313  ("f" ?\e,L^\e(B) ("F" ?\e,L>\e(B)
1314  ("g" ?\e,LV\e(B) ("G" ?\e,L6\e(B)
1315  ("h" ?\e,LS\e(B) ("H" ?\e,L3\e(B)
1316  ("j" ?\e,Lb\e(B) ("J" ?\e,LB\e(B)
1317  ("k" ?\e,L]\e(B) ("K" ?\e,L=\e(B)
1318  ("l" ?\e,LR\e(B) ("L" ?\e,L2\e(B)
1319  (";" ?\e,L\\e(B) (":" ?\e,L<\e(B)
1320  ("'" ?\e,Lg\e(B) ("\"" ?\e,LG\e(B)
1321  ("`" ?\() ("~" ?\))
1322
1323  ("z" ?\e,Ln\e(B) ("Z" ?\e,LN\e(B)
1324  ("x" ?\e,LY\e(B) ("X" ?\e,L9\e(B)
1325  ("c" ?\e,Lj\e(B) ("C" ?\e,LJ\e(B)
1326  ("v" ?\e,Lm\e(B) ("V" ?\e,LM\e(B)
1327  ("b" ?\e,Ld\e(B) ("B" ?\e,LD\e(B)
1328  ("n" ?\e,Le\e(B) ("N" ?\e,LE\e(B)
1329  ("m" ?\e,L_\e(B) ("M" ?\e,L?\e(B)
1330  ("," ?\e,L`\e(B) ("<" ?\e,L@\e(B)
1331  ("." ?\e,L[\e(B) (">" ?\e,L;\e(B)
1332  ("/" ?\e,LQ\e(B) ("?" ?\e,L1\e(B)
1333  ("\\" ?') ("|" ?\e,LK\e(B))
1334
1335 ;; Local Variables:
1336 ;; coding: iso-2022-7bit
1337 ;; End:
1338
1339 ;;; arch-tag: e6d34b16-8710-4181-a17e-819a1df0334f
1340 ;;; cyrillic.el ends here