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