1 ;;; cyrillic.el --- Quail package for inputting Cyrillic characters
3 ;; Copyright (C) 1997-1998, 2001-2018 Free Software Foundation, Inc.
4 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5 ;; 2006, 2007, 2008, 2009, 2010, 2011
6 ;; National Institute of Advanced Industrial Science and Technology (AIST)
7 ;; Registration Number H14PRO021
9 ;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
10 ;; Keywords: multilingual, input method, Cyrillic, i18n
12 ;; This file is part of GNU Emacs.
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 3 of the License, or
17 ;; (at your option) any later version.
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.
24 ;; You should have received a copy of the GNU General Public License
25 ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
29 ;; These methods use a mixture of 8859-5 and Unicode. Quail, used
30 ;; with ucs-tables provides support for translating on the fly to
31 ;; what's appropriate for aa buffer's file coding system, so the
32 ;; encoding shouldn't matter too much provided it supports the
33 ;; necessary characters.
39 ;; This was `cyrillic-jcuken'. Alexander Mikhailian
40 ;; <mikhailian@altern.org> says: "cyrillic-jcuken" is actually
41 ;; russian. It is ok but a bit outdated. This layout has been used
42 ;; in typewriters for ages but it has been superseded on desktops by
43 ;; a variation of this layout, implemented in M$ Windows software.
44 ;; The Windows layout is greatly preferred because of the comma and
45 ;; period being placed more conveniently and, of course, because of
46 ;; the popularity of Windows software. This layout is a common option
47 ;; in X Windows and console layouts for GNU/Linux. [See
48 ;; `russian-computer' below.]
50 "russian-typewriter" "Russian" "ЖЙ" nil
51 "ЙЦУКЕН Russian typewriter layout (ISO 8859-5 encoding)."
52 nil t t t t nil nil nil nil nil t
)
54 ;; №1 -2 /3 "4 :5 ,6 .7 _8 ?9 %0 != ;\ |+
55 ;; Й Ц У К Е Н Г Ш Щ З Х Ъ )(
56 ;; Ф Ы В А П Р О Л Д Ж Э
57 ;; Я Ч С М И Т Ь Б Ю Ё
157 ;; Maintain the obsolete name for now.
158 (push (cons "cyrillic-jcuken"
159 (cdr (assoc "russian-typewriter" quail-package-alist
)))
162 ;; This needs to be seen by quail-update-leim-list-file, but cannot be
163 ;; commented out because quail-update-leim-list-file ignores
164 ;; commented-out lines.
166 (quail-define-package
167 "cyrillic-jcuken" "Russian" "ЖЙ" nil
168 "ЙЦУКЕН Russian typewriter layout (ISO 8859-5 encoding)."))
170 ;; See comment above. This is the variant `winkeys' from `ru' in XKB.
171 (quail-define-package
172 "russian-computer" "Russian" "RU" nil
173 "ЙЦУКЕН Russian computer layout"
174 nil t t t t nil nil nil nil nil t
)
176 ;; 1! 2" 3№ 4; 5% 6: 7? 8* 9( 0) -_ =+ \/ ёЁ
177 ;; Й Ц У К Е Н Г Ш Щ З Х Ъ
178 ;; Ф Ы В А П Р О Л Д Ж Э
179 ;; Я Ч С М И Т Ь Б Ю .,
278 ;; Mikhailian couldn't check the next two.
280 ;; This seems to have the same layout for letters as mk in XKB, but at
281 ;; least the top row is different.
282 (quail-define-package
283 "cyrillic-macedonian" "Cyrillic" "ЖM" nil
284 "ЉЊЕРТЗ-ЃЌ keyboard layout based on JUS.I.K1.004"
285 nil t t t t nil nil nil nil nil t
)
287 ;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
288 ;; Љ Њ Е Р Т З У И О П Ш Ѓ
289 ;; А С Д Ф Г Х Ј К Л Ч Ќ Ж
290 ;; Ѕ Џ Ц В Б Н М ,; .: -_
391 (quail-define-package
392 "cyrillic-serbian" "Cyrillic" "ЖS" nil
393 "ЉЊЕРТЗ-ЂЋ keyboard layout based on JUS.I.K1.005"
394 nil t t t t nil nil nil nil nil t
)
396 ;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
397 ;; Љ Њ Е Р Т З У И О П Ш Ђ
398 ;; А С Д Ф Г Х Ј К Л Ч Ћ Ж
399 ;; Ѕ Џ Ц В Б Н М ,; .: -_
500 ;; Alexander Mikhailian comments:
501 ;; Having worked for several years as a Belarusian linguist, I still
502 ;; can not find the origin of this layout which BTW does include
503 ;; several characters that are not present in Belarusian and does not
504 ;; include a few ones that do exist in Belarusian. Besides, the typo
505 ;; in the name of this layout speaks for itself since Belarusian has
506 ;; an outdated version of spelling which is "Byelorussian" and not
507 ;; "beylorussian". I suggest that you just remove this layout.
509 ;; [`derived from JUS.I.K1' according to an old Mule note -- fx]
511 ;; (quail-define-package
512 ;; "cyrillic-beylorussian" "Belarussian" "ЖB" nil
513 ;; "ЉЊЕРТЗ-ІЎ BEYLORUSSIAN (ISO 8859-5 encoding)"
514 ;; nil t t t t nil nil nil nil nil t)
516 ;; ;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
517 ;; ;; Љ Њ Е Р Т З У И О П Ш І
518 ;; ;; А С Д Ф Г Х Ј К Л Ч Ў Ж
519 ;; ;; Ѕ Џ Ц В Б Н М ,; .: -_
521 ;; (quail-define-rules
604 ;; Alexander Mikhailian reports the opinion of fellow Ukrainian
605 ;; linguist Bogdan Babych <babych@altern.org>:
606 ;; He had seen this layout on some oldish systems but that the vast
607 ;; majority of the population uses a modified version of the M$ Windows
608 ;; layout. In fact, Microsoft shipped for a while a layout that was lacking
609 ;; two characters, precisely the "GHE_WITH_UPTURN" and the apostrophe. The
610 ;; latest versions of Windows software do have the "GHE_WITH_UPTURN" in the
611 ;; ukrainian keyboard layout but the apostrophe is still not there, whereas
612 ;; there is one letter, "Cyrillic_YO", not used in ukrainian. Ukrainians
613 ;; normally replace the "Cyrillic_YO" by the apostrophe sign and live
614 ;; happily with this little change. [See "ukrainian-computer" below.]
616 ;; Fixme: add GHE_WITH_UPTURN.
617 (quail-define-package
618 "cyrillic-ukrainian" "Ukrainian" "ЖU" nil
621 Sorry, but `ghe with upturn' is not included in ISO 8859-5."
622 nil t t t t nil nil nil nil nil t
)
624 ;; 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0= /? +* <>
625 ;; Є Ї Е Р Т З У И О П Ш І
626 ;; А С Д Ф Г Х Ј К Л Ч Ў Ж
627 ;; Ѕ Џ Ц В Б Н М ,; .: -_
727 (quail-define-package
728 "ukrainian-computer" "Ukrainian" "UK" nil
729 "ЙЦУКЕН Ukrainian (Unicode-based for use with KOI8-U encoding)."
730 nil t t t t nil nil nil nil nil t
)
732 ;; ' 1! 2" 3№ 4; 5% 6: 7? 8* 9( 0) -_ =+
733 ;; Й Ц У К Е Н Г Ш Щ З Х Ї
734 ;; Ф І В А П Р О Л Д Ж Є Ґ
735 ;; Я Ч С М И Т Ь Б Ю .,
834 (quail-define-package
835 "uzbek-cyrillic" "Ўзбекча" "Ўзб" nil
836 "ЙЦУКЕН Uzbek computer layout"
837 nil t t t t nil nil nil nil nil t
)
839 ;; Ё 1! 2" 3№ 4; 5% 6: 7? 8* 9( 0) Ғ Ҳ
840 ;; Й Ц У К Е Н Г Ш Ў З Х Ъ \|
841 ;; Ф Қ В А П Р О Л Д Ж Э
842 ;; Я Ч С М И Т Ь Б Ю .,
948 ;; Alexander Mikhailian says this is of limited use. It has been
949 ;; popular among emigrants or foreigners who have to type in Cyrillic
950 ;; (mostly Russian) from time to time.
951 (quail-define-package
952 "cyrillic-yawerty" "Cyrillic" "ЖЯ" nil
953 "ЯВЕРТЫ Roman transcription
955 This layout is based on Roman transcription by phonemic resemblance.
956 When preceded by a `/', the second and the third rows (number key row) change
959 keytop | Q W E R T Y U I O P A S D
960 --------+---------------------------------------
961 input | Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ў Џ"
962 nil t t t t nil nil nil nil nil t
)
964 ;; 1! 2ё 3ъ 4Ё 5% 6^ 7& 8* 9( 0) -_ Ч Ю
965 ;; Я В Е Р Т Ы У И О П Ш Щ
966 ;; А С Д Ф Г Х Й К Л ;: '" Э
967 ;; З Ь Ц Ж Б Н М ,< .> /?
969 ;; 1! 2ё 3ъ 4Ё 5% 6^ 7& 8* 9( 0) -_ Ч Ю
970 ;; Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ш Щ
971 ;; Ќ Ў Џ Ф Г Х Й К Л ;: '" Э
972 ;; З Ь Ц Ж Б Н М ,< .> /?
1099 ;; This was provided by Valery Alexeev <valery@domovoy.math.uga.edu>.
1101 ;; Ognyan Kulev <ogi@fmi.uni-sofia.bg> wrote:
1103 ;; I would suggest future `cyrillic-translit' to be with the
1104 ;; modification of `cyrillic-translit-bulgarian' applied and the
1105 ;; latter to disappear. It could be used by people who write
1106 ;; bulgarian e-mails with latin letters for kick start (phonetic input
1107 ;; method is not so obvious as translit input method but each letter
1108 ;; is one keypress and a *lot* of people know it).
1110 ;; Anton Zinoviev <anton@lml.bas.bg> wrote:
1111 ;; I would say that the main idea for cyrillic-translit is to be
1112 ;; language-independent and universal. It should be able to generate all
1113 ;; Cyrillic symbols.
1114 (quail-define-package
1115 "cyrillic-translit" "Cyrillic" "Жt" t
1116 "Intuitively transliterated keyboard layout.
1117 Most convenient for entering Russian, but all Cyrillic characters
1118 are included. Should handle most cases. However:
1119 for ц (TSE) use \"c\", never \"ts\"
1120 щ (SHCHA = Bulgarian SHT) = \"shch\", \"sj\", \"/sht\" or \"/t\",
1121 э (REVERSE ROUNDED E) = \"e\\\"
1122 х (KHA) when after с (S) = \"x\" or \"kh\"
1123 ъ (HARD SIGN) = \"~\", Ъ (CAPITAL HARD SIGN) = \"~~\",
1124 ь (SOFT SIGN) = \"\\='\", Ь (CAPITAL SOFT SIGN) = \"\\='\\='\",
1125 я (YA) = \"ya\", \"ja\" or \"q\".
1127 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
1128 u f h=kh=x c ch sh shch=sj=/s=/sht ~ y \\=' e\\ yu=ju ya=ja=q
1130 Also included are Ukrainian є (YE) = \"/e\", ї (YI) = \"yi\",
1131 ґ (GHE WITH UPTURN) = \"g\\='\",
1132 Belarusian ў (SHORT U) = \"u~\",
1133 Serbo-Croatian ђ (DJE) = \"/d\", ћ (CHJE)= \"/ch\",
1134 Macedonian ѓ (GJE) = \"/g\", ѕ (DZE) = \"/s\", ќ (KJE) = \"/k\",
1135 cyrillic і (I DECIMAL) = \"/i\", ј (JE) = \"/j\",
1136 љ (LJE) = \"/l\", њ (NJE) = \"/n\" and џ (DZE) =\"/z\"."
1137 nil t t t t nil nil nil nil nil t
)
1140 ("a" ?а
) ("b" ?б
) ("v" ?в
) ("w" ?в
) ("g" ?г
) ("d" ?д
)
1143 ("zh" ?ж
) ("z" ?з
) ("i" ?и
)
1144 ("j" ?й
) ("j'" ?й
) ("j`" ?й
) ("k" ?к
) ("l" ?л
)
1145 ("m" ?м
) ("n" ?н
) ("o" ?о
) ("p" ?п
) ("r" ?р
) ("s" ?с
) ("t" ?т
) ("u" ?у
)
1146 ("f" ?ф
) ("x" ?х
) ("h" ?х
) ("kh" ?х
)
1149 ("shch" ?щ
) ("sj" ?щ
)
1150 ("/sht" ?щ
) ("/t" ?щ
)
1151 ("~" ?ъ
) ("y" ?ы
) ("'" ?ь
) ("`" ?ь
)
1152 ("e\\" ?э
) ("e'" ?э
) ("e`" ?э
) ("@" ?э
)
1154 ("ya" ?я
) ("ja" ?я
) ("q" ?я
)
1156 ("A" ?А
) ("B" ?Б
) ("V" ?В
) ("W" ?В
) ("G" ?Г
) ("D" ?Д
)
1157 ("E" ?Е
) ("Je" ?Е
) ("JE" ?Е
)
1158 ("Yo" ?Ё
) ("YO" ?Ё
) ("Jo" ?Ё
) ("JO" ?Ё
)
1159 ("Zh" ?Ж
) ("ZH" ?Ж
) ("Z" ?З
) ("I" ?И
)
1160 ("J" ?Й
) ("J'" ?Й
) ("J`" ?Й
) ("K" ?К
) ("L" ?Л
)
1161 ("M" ?М
) ("N" ?Н
) ("O" ?О
) ("P" ?П
) ("R" ?Р
) ("S" ?С
) ("T" ?Т
) ("U" ?У
)
1162 ("F" ?Ф
) ("X" ?Х
) ("H" ?Х
) ("Kh" ?Х
) ("KH" ?Х
)
1163 ("C" ?Ц
) ("Ch" ?Ч
) ("CH" ?Ч
)
1165 ("Shch" ?Щ
) ("SHCH" ?Щ
) ("Sj" ?Щ
) ("SJ" ?Щ
)
1166 ("/Sht" ?Щ
) ("/SHT" ?Щ
) ("/T" ?Щ
)
1167 ("~~" ?Ъ
) ("Y" ?Ы
) ("''" ?Ь
)
1168 ("E\\" ?Э
) ("E'" ?Э
) ("E`" ?Э
) ("@@" ?Э
)
1169 ("Yu" ?Ю
) ("YU" ?Ю
) ("Ju" ?Ю
) ("JU" ?Ю
)
1170 ("Ya" ?Я
) ("YA" ?Я
) ("Ja" ?Я
) ("JA" ?Я
) ("Q" ?Я
)
1172 ("/e" ?є
) ("yi" ?ї
) ("u'" ?ў
) ("u~" ?ў
)
1174 ("/d" ?ђ
) ("/ch" ?ћ
)
1175 ("/g" ?ѓ
) ("/s" ?ѕ
) ("/k" ?ќ
)
1176 ("/i" ?і
) ("/j" ?ј
) ("/l" ?љ
) ("/n" ?њ
) ("/z" ?џ
)
1177 ("/E" ?Є
) ("YE" ?Є
) ("Yi" ?Ї
) ("YI" ?Ї
) ("U'" ?Ў
) ("U~" ?Ў
)
1179 ("/D" ?Ђ
) ("/Ch" ?Ћ
) ("/CH" ?Ћ
)
1180 ("/G" ?Ѓ
) ("/S" ?Ѕ
) ("/K" ?Ќ
)
1181 ("/I" ?І
) ("/J" ?Ј
) ("/L" ?Љ
) ("/N" ?Њ
) ("/Z" ?Џ
)
1183 ;; Combining accents as a separate character
1184 ("//'" ?́
) ("//`" ?̀
)
1186 ;; In the following two rules the accent is not a separate character
1189 ("/-" ?–
) ;; EN DASH
1190 ("/--" ?—
) ;; EM DASH
1192 ("/." ?․
) ;; ONE DOT LEADER
1193 ("/.." ?‥
) ;; TWO DOT LEADER
1194 ("/..." ?…
) ;; HORIZONTAL ELLIPSIS
1195 ("/,," ?„
) ;; DOUBLE LOW-9 QUOTATION MARK
1196 ("/," ?‚
) ;; SINGLE LOW-9 QUOTATION MARK
1197 ("/''" ?”
) ;; RIGHT DOUBLE QUOTATION MARK
1198 ("/'" ?’
) ;; RIGHT SINGLE QUOTATION MARK
1199 ("/``" ?“
) ;; LEFT DOUBLE QUOTATION MARK
1200 ("/`" ?‘
) ;; LEFT SINGLE QUOTATION MARK
1201 ("/<<" ?«
) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
1202 ("/>>" ?»
) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1205 ("/ab" ?§
) ; _аб_зац
1206 ("/pa" ?§
) ; _pa_ragraph
1208 ("/no" ?№
) ; _но_мер
1233 ;; Roman numerals, commonly used for months and section/subsection numbers
1261 ;; Originally from Yudit's `Belarusian input table according to
1262 ;; STB955-94 belarusian standard' (not all) by Alexander Mikhailian
1263 ;; <mikhailian@altern.org>, subsequently amended by AM.
1264 (quail-define-package
1265 "belarusian" "Belarusian" "BE" nil
1266 "ЙЦУКЕН keyboard layout registered as STB955-94 Belarusian standard.
1268 nil t t t t nil nil nil nil nil t
)
1270 ;; ёЁ 1! 2" 3N 4; 5% 6: 7? 8* 9( 0) -_ =+
1271 ;; Й Ц У К Е Н Г Ш Ў З Х '
1272 ;; Ф Ы В А П Р О Л Д Ж Э
1273 ;; Я Ч С М І Т Ь Б Ю .,
1353 (quail-define-package
1354 "bulgarian-alt-phonetic" "Bulgarian" "БНФ"
1356 "Bulgarian alternative Phonetic keyboard layout, producing Unicode.
1358 This phonetic layout replaces all the Latin letters with Bulgarian
1359 \(Cyrillic) letters based on similarities in their pronunciation or look.
1361 Note that, since the letters `щ', `ь', `ю' and `я' are attached to the
1362 `]', `\\', `\\=`' and `[' keys respectively, Caps Lock does not affect them."
1363 nil t t t t nil nil nil nil nil t
)
1365 ;; Ю 1! 2@ 3№ 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ьѝ
1366 ;; Ч Ш Е Р Т Ъ У И О П Я Щ
1367 ;; А С Д Ф Г Х Й К Л :; '"
1368 ;; З Ж Ц В Б Н М ,„ .“ /?
1426 ;; From `Bulgarian-PHO.kmap for Yudit', Alexander Shopov
1427 ;; <al_shopov@web.bg>.
1429 ;; Extra commentary and the indicator from an independent
1430 ;; (cyrillic-iso8859-5) implementation by Ognyan Kulev
1431 ;; <ogi@fmi.uni-sofia.bg> and name changes from Anton Zinoviev
1432 ;; <anton@lml.bas.bg>.
1433 (quail-define-package
1434 "bulgarian-phonetic" "Bulgarian" "ЖБФ"
1436 "Bulgarian Phonetic keyboard layout, producing Unicode.
1438 The layout is similar to `cyrillic-translit', but all Bulgarian
1439 characters are typed with a single key.
1441 Use /& for § (Cyrillic paragraph) and /# for №.
1443 The letters Ч, Ш, Щ and Ю are not affected by Caps Lock."
1444 nil t t t t nil nil nil nil nil t
)
1447 ;; Я В Е Р Т Ъ У И О П Ш Щ
1448 ;; А С Д Ф Г Х Й К Л Ю
1515 ;; Based on an implementation by Ognyan Kulev <ogi@fmi.uni-sofia.bg>.
1516 ;; This follows XKB bg.
1518 (quail-define-package
1519 "bulgarian-bds" "Bulgarian" "БДС" nil
1520 "Bulgarian standard keyboard layout (BDS)
1522 This keyboard layout is standard for Bulgarian typewriters.
1524 The letters Ц, М, Ч, Р, Л, Б and Ы are not affected by Caps Lock.
1526 In addition to original Bulgarian typewriter layout, keys \\ and |
1527 are transformed into \\=' and Ы respectively. Some keyboards mark these
1528 keys as being transformed into ( and ) respectively. For ( and ), use
1529 \\=` and ~ respectively. This input method follows XKB."
1530 nil t t t t nil nil nil nil nil t
)
1532 ;; () 1! 2? 3+ 4" 5% 6= 7: 8/ 9_ 0№ -I .V
1533 ;; ,ы У Е И Ш Щ К С Д З Ц ;§
1534 ;; ьѝ Я А О Ж Г Т Н В М Ч 'Ы
1535 ;; Ю Й Ъ Э Ф Х П Р Л Б
1590 ;; This is a slight modification of the `cyrillic-yawerty' input
1591 ;; method. In addition to the standard Russian letters, the Tuvan
1592 ;; alphabet introduces three letters: `Ң', `Ө' and `Ү'. They were made
1593 ;; available in combination with `/' and `N', `T' and `Y' respectively.
1594 (quail-define-package
1595 "cyrillic-tuvan" "Tuvan" "ҢӨҮ" nil
1596 "ЯВЕРТЫ Roman transcription of the Tuvan alphabet
1598 When preceded by a `/', the letters `N', `T' and `Y' change
1601 keytop | N T Y n t y
1602 --------+------------------
1603 input | Ң Ө Ү ң ө ү"
1604 nil t t t t nil nil nil nil nil t
)
1606 ;; 1! 2ё 3ъ 4Ё 5% 6^ 7& 8* 9( 0) -_ Ч Ю
1607 ;; Я В Е Р Т Ы У И О П Ш Щ
1608 ;; А С Д Ф Г Х Й К Л ;: '" Э
1609 ;; З Ь Ц Ж Б Н М ,< .> /?
1719 ;;; cyrillic.el ends here