1// Keyboard layouts for the Ukraine.
2
3// AEN <aen@logic.ru> & Leon Kanter <leon@geon.donetsk.ua>,
4// Andriy Rysin <arysin@yahoo.com>, Oleksiy Protas <elfy.ua@gmail.com>
5
6// The legacy WinKeys layout extended on the third and fourth level with
7// some Unicode symbols, Cyrillics from other Slavic languages, and some
8// often-used ASCII symbols.
9default partial alphanumeric_keys
10xkb_symbols "unicode" {
11
12    include "ua(legacy)"
13
14    name[Group1]= "Ukrainian";
15
16    key <TLDE> { [      apostrophe,           U02BC,          U0301,          asciitilde  ] };  // Apostrophe and Stress symbol
17    key <AE01> { [               1,          exclam,    onesuperior                       ] };
18    key <AE02> { [               2,        quotedbl,    twosuperior,               U2019  ] };  // single quote used often as an apostrophe (deprecated)
19    key <AE03> { [               3,      numerosign,        section,               U20B4  ] };  // Paragraph and Hryvnia sign
20    key <AE04> { [               4,       semicolon,         dollar,            EuroSign  ] };
21    key <AE05> { [               5,         percent,         degree                       ] };
22    key <AE06> { [               6,           colon,           less                       ] };
23    key <AE07> { [               7,        question,        greater                       ] };
24    key <AE08> { [               8,        asterisk, enfilledcircbullet                   ] };
25    key <AE09> { [               9,       parenleft,    bracketleft,           braceleft  ] };
26    key <AE10> { [               0,      parenright,   bracketright,          braceright  ] };
27    key <AE11> { [           minus,      underscore,         emdash,              endash  ] };
28    key <AE12> { [           equal,            plus,       notequal,           plusminus  ] };
29
30    key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI,    Cyrillic_je,         Cyrillic_JE  ] };
31    key <AD02> { [    Cyrillic_tse,    Cyrillic_TSE,  Cyrillic_dzhe,       Cyrillic_DZHE  ] };
32    key <AD03> { [      Cyrillic_u,      Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU  ] };
33    key <AD04> { [     Cyrillic_ka,     Cyrillic_KA,     registered                       ] };  // Registered tm
34    key <AD05> { [     Cyrillic_ie,     Cyrillic_IE,    Cyrillic_io,         Cyrillic_IO  ] };
35    key <AD06> { [     Cyrillic_en,     Cyrillic_EN,   Cyrillic_nje,        Cyrillic_NJE  ] };
36    key <AD12> { [    Ukrainian_yi,    Ukrainian_YI, Cyrillic_hardsign,Cyrillic_HARDSIGN  ] };
37
38    key <AC02> { [     Ukrainian_i,     Ukrainian_I,  Cyrillic_yeru,       Cyrillic_YERU  ] };
39    key <AC08> { [     Cyrillic_el,     Cyrillic_EL,   Cyrillic_lje,        Cyrillic_LJE  ] };
40    key <AC09> { [     Cyrillic_de,     Cyrillic_DE,    Serbian_dje,         Serbian_DJE  ] };
41    key <AC11> { [    Ukrainian_ie,    Ukrainian_IE,     Cyrillic_e,          Cyrillic_E  ] };
42
43    key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash,  bar  ] };
44
45    key <AB02> { [    Cyrillic_che,    Cyrillic_CHE,   Serbian_tshe,        Serbian_TSHE  ] };
46    key <AB03> { [     Cyrillic_es,     Cyrillic_ES,      copyright                       ] };
47    key <AB06> { [     Cyrillic_te,     Cyrillic_TE,      trademark                       ] };
48    key <AB08> { [     Cyrillic_be,     Cyrillic_BE,  guillemotleft,  doublelowquotemark  ] };
49    key <AB09> { [     Cyrillic_yu,     Cyrillic_YU, guillemotright, leftdoublequotemark  ] };
50    key <AB10> { [          period,           comma,          slash,            ellipsis  ] };
51
52    include "level3(ralt_switch)"
53};
54
55partial alphanumeric_keys
56xkb_symbols "macOS" {
57
58    include "ua(unicode)"
59    name[Group1]= "Ukrainian (macOS)";
60
61    key <TLDE> { [ apostrophe, asciitilde, bracketright, bracketleft ] };
62    key <AE01> { [ 1, exclam, exclam, U0174 ] };
63    key <AE02> { [ 2, quotedbl, at, quotedbl ] };
64    key <AE03> { [ 3, numerosign, numbersign, U20B4 ] };
65    key <AE04> { [ 4, percent, dollar, EuroSign ] };
66    key <AE05> { [ 5, colon, degree ] };
67    key <AE06> { [ 6, comma, less ] };
68    key <AE07> { [ 7, period, ampersand, U204B ] };
69    key <AE08> { [ 8, semicolon, asterisk, U221A ] };
70    key <AE09> { [ 9, parenleft, parenleft, apostrophe ] };
71    key <AE10> { [ 0, parenright,  parenright, grave ] };
72    key <AE11> { [ minus, underscore, endash, emdash ] };
73    key <AE12> { [ equal, plus, U00BB, U00AB ] };
74
75    key <AC02> { [ Cyrillic_i, Cyrillic_I, Cyrillic_yeru, Cyrillic_YERU ] };
76    key <AB05> { [ Ukrainian_i, Ukrainian_I, Cyrillic_i, Cyrillic_I ] };
77
78    key <AB08> { [ Cyrillic_be, Cyrillic_BE, lessthanequal, less ] };
79    key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greaterthanequal, greater ] };
80
81    key <AB10> { [ slash, question, U201C, U201E] };
82
83    include "level3(ralt_switch)"
84};
85
86partial alphanumeric_keys
87xkb_symbols "legacy" {
88
89    name[Group1]= "Ukrainian (legacy)";
90
91    key <TLDE> { [      apostrophe,      asciitilde  ] };
92    key <AE01> { [               1,         exclam   ] };
93    key <AE02> { [               2,        quotedbl  ] };
94    key <AE03> { [               3,      numbersign  ] };
95    key <AE04> { [               4,        asterisk  ] };
96    key <AE05> { [               5,           colon  ] };
97    key <AE06> { [               6,           comma  ] };
98    key <AE07> { [               7,          period  ] };
99    key <AE08> { [               8,       semicolon  ] };
100    key <AE09> { [               9,       parenleft  ] };
101    key <AE10> { [               0,      parenright  ] };
102    key <AE11> { [           minus,      underscore  ] };
103    key <AE12> { [           equal,            plus  ] };
104
105    key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI  ] };
106    key <AD02> { [    Cyrillic_tse,    Cyrillic_TSE  ] };
107    key <AD03> { [      Cyrillic_u,      Cyrillic_U  ] };
108    key <AD04> { [     Cyrillic_ka,     Cyrillic_KA  ] };
109    key <AD05> { [     Cyrillic_ie,     Cyrillic_IE  ] };
110    key <AD06> { [     Cyrillic_en,     Cyrillic_EN  ] };
111    key <AD07> { [    Cyrillic_ghe,    Cyrillic_GHE  ] };
112    key <AD08> { [    Cyrillic_sha,    Cyrillic_SHA  ] };
113    key <AD09> { [  Cyrillic_shcha,  Cyrillic_SHCHA  ] };
114    key <AD10> { [     Cyrillic_ze,     Cyrillic_ZE  ] };
115    key <AD11> { [     Cyrillic_ha,     Cyrillic_HA  ] };
116    key <AD12> { [    Ukrainian_yi,    Ukrainian_YI  ] };
117    key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
118
119    key <AC01> { [     Cyrillic_ef,     Cyrillic_EF  ] };
120    key <AC02> { [     Ukrainian_i,     Ukrainian_I  ] };
121    key <AC03> { [     Cyrillic_ve,     Cyrillic_VE  ] };
122    key <AC04> { [      Cyrillic_a,     Cyrillic_A   ] };
123    key <AC05> { [     Cyrillic_pe,     Cyrillic_PE  ] };
124    key <AC06> { [     Cyrillic_er,     Cyrillic_ER  ] };
125    key <AC07> { [      Cyrillic_o,     Cyrillic_O   ] };
126    key <AC08> { [     Cyrillic_el,     Cyrillic_EL  ] };
127    key <AC09> { [     Cyrillic_de,     Cyrillic_DE  ] };
128    key <AC10> { [    Cyrillic_zhe,    Cyrillic_ZHE  ] };
129    key <AC11> { [    Ukrainian_ie,    Ukrainian_IE  ] };
130
131    key <LSGT> { [           slash,             bar  ] };
132    key <AB01> { [     Cyrillic_ya,     Cyrillic_YA  ] };
133    key <AB02> { [    Cyrillic_che,    Cyrillic_CHE  ] };
134    key <AB03> { [     Cyrillic_es,     Cyrillic_ES  ] };
135    key <AB04> { [     Cyrillic_em,     Cyrillic_EM  ] };
136    key <AB05> { [      Cyrillic_i,      Cyrillic_I  ] };
137    key <AB06> { [     Cyrillic_te,     Cyrillic_TE  ] };
138    key <AB07> {[Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
139    key <AB08> { [     Cyrillic_be,     Cyrillic_BE  ] };
140    key <AB09> { [     Cyrillic_yu,     Cyrillic_YU  ] };
141    key <AB10> { [           slash,        question  ] };
142};
143
144partial alphanumeric_keys
145xkb_symbols "winkeys" {
146
147    include "ua(legacy)"
148
149    name[Group1]= "Ukrainian (Windows)";
150
151    key <AE03> { [               3,      numerosign  ] };
152    key <AE04> { [               4,       semicolon  ] };
153    key <AE05> { [               5,         percent  ] };
154    key <AE06> { [               6,           colon  ] };
155    key <AE07> { [               7,        question  ] };
156    key <AE08> { [               8,        asterisk  ] };
157
158    key <AB10> { [          period,           comma  ] };
159};
160
161partial alphanumeric_keys
162xkb_symbols "typewriter" {
163
164    include "ua(legacy)"
165
166    name[Group1]= "Ukrainian (typewriter)";
167
168    key <TLDE> { [      apostrophe,        quotedbl  ] };
169    key <AE01> { [          exclam,               1  ] };
170    key <AE02> { [      numerosign,               2  ] };
171    key <AE03> { [           slash,               3  ] };
172    key <AE04> { [       semicolon,               4  ] };
173    key <AE05> { [           colon,               5  ] };
174    key <AE06> { [           comma,               6  ] };
175    key <AE07> { [          period,               7  ] };
176    key <AE08> { [      underscore,               8  ] };
177    key <AE09> { [        question,               9  ] };
178    key <AE10> { [         percent,               0  ] };
179
180    key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
181
182    key <AC02> { [      Cyrillic_i,      Cyrillic_I  ] };
183
184    key <AB05> { [     Ukrainian_i,     Ukrainian_I  ] };
185    key <AB10> { [    Ukrainian_yi,    Ukrainian_YI  ] };
186
187    key <BKSL> { [       parenleft,      parenright  ] };
188};
189
190partial alphanumeric_keys
191xkb_symbols "phonetic" {
192
193    include "ua(legacy)"
194
195    name[Group1]= "Ukrainian (phonetic)";
196
197    key <LatQ> { [ Cyrillic_ya,       Cyrillic_YA        ] };
198    key <LatW> { [ Cyrillic_ve,       Cyrillic_VE        ] };
199    key <LatE> { [ Cyrillic_ie,       Cyrillic_IE        ] };
200    key <LatR> { [ Cyrillic_er,       Cyrillic_ER        ] };
201    key <LatT> { [ Cyrillic_te,       Cyrillic_TE        ] };
202    key <LatY> { [ Cyrillic_i,        Cyrillic_I         ] };
203    key <LatU> { [ Cyrillic_u,        Cyrillic_U         ] };
204    key <LatI> { [ Ukrainian_i,       Ukrainian_I        ] };
205    key <LatO> { [ Cyrillic_o,        Cyrillic_O         ] };
206    key <LatP> { [ Cyrillic_pe,       Cyrillic_PE        ] };
207    key <AD11> { [ Cyrillic_sha,      Cyrillic_SHA       ] };
208    key <AD12> { [ Cyrillic_shcha,    Cyrillic_SHCHA     ] };
209
210    key <LatA> { [ Cyrillic_a,        Cyrillic_A         ] };
211    key <LatS> { [ Cyrillic_es,       Cyrillic_ES        ] };
212    key <LatD> { [ Cyrillic_de,       Cyrillic_DE        ] };
213    key <LatF> { [ Cyrillic_ef,       Cyrillic_EF        ] };
214    key <LatG> { [ Cyrillic_ghe,      Cyrillic_GHE       ] };
215    key <LatH> { [ Cyrillic_ha,       Cyrillic_HA        ] };
216    key <LatJ> { [ Cyrillic_shorti,   Cyrillic_SHORTI    ] };
217    key <LatK> { [ Cyrillic_ka,       Cyrillic_KA        ] };
218    key <LatL> { [ Cyrillic_el,       Cyrillic_EL        ] };
219    key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
220    key <AC11> { [ Cyrillic_che,      Cyrillic_CHE       ] };
221    key <BKSL> { [ Cyrillic_yu,       Cyrillic_YU        ] };
222
223    key <LatZ> { [ Cyrillic_ze,       Cyrillic_ZE        ] };
224    key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN  ] };
225    key <LatC> { [ Cyrillic_tse,      Cyrillic_TSE       ] };
226    key <LatV> { [ Cyrillic_zhe,      Cyrillic_ZHE       ] };
227    key <LatB> { [ Cyrillic_be,       Cyrillic_BE        ] };
228    key <LatN> { [ Cyrillic_en,       Cyrillic_EN        ] };
229    key <LatM> { [ Cyrillic_em,       Cyrillic_EM        ] };
230    key <AB08> { [ Ukrainian_yi,      Ukrainian_YI       ] };
231    key <AB09> { [ Ukrainian_ie,      Ukrainian_IE       ] };
232    key <AB10> { [ slash,             question           ] };
233};
234
235// Ukrainian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny).
236// Andrew Porokhnyak <aop@porokhnyak.org>
237partial alphanumeric_keys
238xkb_symbols "rstu" {
239
240    include "ua(legacy)"
241
242    name[Group1]= "Ukrainian (standard RSTU)";
243
244    key <TLDE> { [      apostrophe,        question  ] };
245    key <AE01> { [          exclam,               1  ] };
246    key <AE02> { [        quotedbl,               2  ] };
247    key <AE03> { [      numbersign,               3  ] };
248    key <AE04> { [       semicolon,               4  ] };
249    key <AE05> { [           colon,               5  ] };
250    key <AE06> { [           comma,               6  ] };
251    key <AE07> { [          period,               7  ] };
252    key <AE08> { [        asterisk,               8  ] };
253    key <AE09> { [       parenleft,               9  ] };
254    key <AE10> { [      parenright,               0  ] };
255
256    key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
257
258    key <AC02> { [      Cyrillic_i,      Cyrillic_I  ] };
259
260    key <AB05> { [     Ukrainian_i,     Ukrainian_I  ] };
261    key <AB10> { [    Ukrainian_yi,    Ukrainian_YI  ] };
262
263    key <BKSL> { [           slash,         percent  ] };
264};
265
266// Russian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny).
267// Andrew Porokhnyak <aop@porokhnyak.org>
268partial alphanumeric_keys
269xkb_symbols "rstu_ru" {
270
271    include "ru(common)"
272
273    name[Group1]= "Russian (Ukraine, standard RSTU)";
274
275    key <TLDE> { [      apostrophe,        question  ] };
276    key <AE01> { [          exclam,               1  ] };
277    key <AE02> { [        quotedbl,               2  ] };
278    key <AE03> { [      numbersign,               3  ] };
279    key <AE04> { [       semicolon,               4  ] };
280    key <AE05> { [           colon,               5  ] };
281    key <AE06> { [           comma,               6  ] };
282    key <AE07> { [          period,               7  ] };
283    key <AE08> { [        asterisk,               8  ] };
284    key <AE09> { [       parenleft,               9  ] };
285    key <AE10> { [      parenright,               0  ] };
286    key <BKSL> { [           slash,         percent  ] };
287
288    key.type[group1]="ALPHABETIC";
289
290    key <AB10> { [     Cyrillic_io,     Cyrillic_IO  ] };
291};
292
293// Homophonic keyboard layout (by Tomas Marko Miljenović),
294// based on the Ukrainian National Transliteration,
295// commonly used phonetic layouts for Mac and Win.
296partial alphanumeric_keys
297xkb_symbols "homophonic" {
298
299    include "ua(legacy)"
300
301    name[Group1]= "Ukrainian (homophonic)";
302
303    key <TLDE> { [        grave,        underscore       ] };
304    key <AE01> { [            1,            exclam       ] };
305    key <AE02> { [            2,                at       ] };
306    key <AE03> { [            3,         semicolon       ] };
307    key <AE04> { [            4,             colon       ] };
308    key <AE05> { [            5,           percent       ] };
309    key <AE06> { [            6,        apostrophe       ] };
310    key <AE07> { [            7,          quotedbl       ] };
311    key <AE08> { [            8,          asterisk       ] };
312    key <AE09> { [            9,         parenleft       ] };
313    key <AE10> { [            0,        parenright       ] };
314    key <AE11> { [ Ukrainian_ie,      Ukrainian_IE       ] };
315    key <AE12> { [ Ukrainian_yi,      Ukrainian_YI       ] };
316
317    key <LatQ> { [ Cyrillic_ya,       Cyrillic_YA        ] };
318    key <LatW> { [ Cyrillic_sha,      Cyrillic_SHA       ] };
319    key <LatE> { [ Cyrillic_ie,       Cyrillic_IE        ] };
320    key <LatR> { [ Cyrillic_er,       Cyrillic_ER        ] };
321    key <LatT> { [ Cyrillic_te,       Cyrillic_TE        ] };
322    key <LatY> { [ Cyrillic_i,        Cyrillic_I         ] };
323    key <LatU> { [ Cyrillic_u,        Cyrillic_U         ] };
324    key <LatI> { [ Ukrainian_i,       Ukrainian_I        ] };
325    key <LatO> { [ Cyrillic_o,        Cyrillic_O         ] };
326    key <LatP> { [ Cyrillic_pe,       Cyrillic_PE        ] };
327    key <AD11> { [ Cyrillic_yu,       Cyrillic_YU        ] };
328    key <AD12> { [ Cyrillic_shcha,    Cyrillic_SHCHA     ] };
329
330    key <LatA> { [ Cyrillic_a,        Cyrillic_A         ] };
331    key <LatS> { [ Cyrillic_es,       Cyrillic_ES        ] };
332    key <LatD> { [ Cyrillic_de,       Cyrillic_DE        ] };
333    key <LatF> { [ Cyrillic_ef,       Cyrillic_EF        ] };
334    key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
335    key <LatH> { [ Cyrillic_ghe,      Cyrillic_GHE       ] };
336    key <LatJ> { [ Cyrillic_shorti,   Cyrillic_SHORTI    ] };
337    key <LatK> { [ Cyrillic_ka,       Cyrillic_KA        ] };
338    key <LatL> { [ Cyrillic_el,       Cyrillic_EL        ] };
339    key <AC10> { [ Cyrillic_che,      Cyrillic_CHE       ] };
340    key <AC11> { [ Cyrillic_zhe,      Cyrillic_ZHE       ] };
341    key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN  ] };
342
343    key <LatZ> { [ Cyrillic_ze,       Cyrillic_ZE        ] };
344    key <LatX> { [ Cyrillic_ha,       Cyrillic_HA        ] };
345    key <LatC> { [ Cyrillic_tse,      Cyrillic_TSE       ] };
346    key <LatV> { [ Cyrillic_ve,       Cyrillic_VE        ] };
347    key <LatB> { [ Cyrillic_be,       Cyrillic_BE        ] };
348    key <LatN> { [ Cyrillic_en,       Cyrillic_EN        ] };
349    key <LatM> { [ Cyrillic_em,       Cyrillic_EM        ] };
350    key <AB08> { [ comma,             less               ] };
351    key <AB09> { [ period,            greater            ] };
352    key <AB10> { [ slash,             question           ] };
353};
354
355// Crimean Tatar (Crimean Turkish) layouts.
356// First released (by Ubuntu): 2009-02-24.
357// These layouts are not yet standard.  In particular, the mapping of
358// the letter 'x' might change in the future.  This letter is not used
359// in the current official alphabet, but is included in the layouts for
360// foreign words and for shortcuts.
361// Reşat SABIQ <tilde.birlik @ gmail . com>, 2009
362// Özgür Qarahan <qarahan @ gmail . com>, 2009
363
364// Crimean Tatar (Crimean Turkish) Q layout
365partial
366xkb_symbols "crh" {
367
368    include "tr(basic)"
369
370    name[Group1]="Crimean Tatar (Turkish Q)";
371
372    key <TLDE>  { [  quotedbl,  backslash,            less,          degree ] };
373    key <AE11>  { [         x,          X,        asterisk,        question ] };
374
375    key <AC04>  { [         f,          F,          iacute,          Iacute ] };
376    key <AC07>  { [         j,          J,          ibreve,          Ibreve ] };
377
378    key <AB02>  { [    ntilde,     Ntilde,  guillemotright,           greater ] };
379};
380
381// Crimean Tatar (Crimean Turkish) F layout
382partial
383xkb_symbols "crh_f" {
384
385    include "tr(f)"
386
387    name[Group1]="Crimean Tatar (Turkish F)";
388
389    key <TLDE>  { [      plus,   asterisk,       backslash,       plusminus ] };
390    key <AE11>  { [         x,          X,           slash,        question ] };
391
392    key <AD04>  { type[group1] = "FOUR_LEVEL_ALPHABETIC",
393                  [  idotless,          I,          iacute,          Iacute ] };
394
395    key <AC07>  { [         k,          K,          ibreve,          Ibreve ] };
396
397    key <BKSL>  { [    ntilde,     Ntilde,           grave,      dead_grave ] };
398};
399
400// Crimean Tatar (Crimean Turkish) Alt-Q layout
401partial
402xkb_symbols "crh_alt" {
403
404    include "tr(alt)"
405
406    name[Group1]="Crimean Tatar (Turkish Alt-Q)";
407
408    key <AC04>  { [         f,          F,          iacute,          Iacute ] };
409    key <AC07>  { [         j,          J,          ibreve,          Ibreve ] };
410
411    key <AB06>  { [         n,          N,          ntilde,          Ntilde ] };
412};
413
414// EXTRAS:
415
416partial alphanumeric_keys
417	xkb_symbols "sun_type6" {
418	include "sun_vndr/ua(sun_type6)"
419};
420