1// Belarusian standard keyboard, by Alexander Mikhailian <mikhailian@altern.org>.
2// Reworked to use Russian keymap as base and winkeys by default,
3// by Paul Lubetsky <vegeek@gmail.com>, see https://bugs.freedesktop.org/23604.
4
5// Added Belarusian-Russian and Russian-Belarusian variants,
6// by Pavel Senchanka <pavel.senchanka@gmail.com>
7
8default partial alphanumeric_keys
9xkb_symbols "basic" {
10	include "ru(winkeys)"
11	name[Group1]= "Belarusian";
12
13	key <AD09> {[  Byelorussian_shortu,  Byelorussian_SHORTU  ]};
14	key <AD12> {[  apostrophe,           apostrophe           ]};
15	key <AB05> {[  Ukrainian_i,          Ukrainian_I          ]};
16};
17
18partial alphanumeric_keys
19xkb_symbols "legacy" {
20	include "by(basic)"
21	name[Group1]= "Belarusian (legacy)";
22
23	key <AE03> {[          3,  numbersign  ]};
24	key <AE04> {[          4,    asterisk  ]};
25	key <AE05> {[          5,       colon  ]};
26	key <AE06> {[          6,       comma  ]};
27	key <AE07> {[          7,      period  ]};
28	key <AE08> {[          8,   semicolon  ]};
29	key <AB10> {[      slash,    question  ]};
30	key <BKSL> {[  backslash,         bar  ]};
31};
32
33partial alphanumeric_keys
34xkb_symbols "latin" {
35	include "latin"
36	name[Group1]= "Belarusian (Latin)";
37
38	key <AD02> {[    w,    W,    scaron,    Scaron    ]};
39	key <AD07> {[    u,    U,    ubreve,    Ubreve    ]};
40	key <AC02> {[    s,    S,    sacute,    Sacute    ]};
41	key <AC09> {[    l,    L,    lstroke,   Lstroke   ]};
42	key <AB01> {[    z,    Z,    zacute,    Zacute    ]};
43	key <AB02> {[    x,    X,    zcaron,    Zcaron    ]};
44	key <AB03> {[    c,    C,    cacute,    Cacute    ]};
45	key <AB04> {[    v,    V,    ccaron,    Ccaron    ]};
46	key <AB06> {[    n,    N,    nacute,    Nacute    ]};
47
48	include "level3(ralt_switch)"
49};
50
51// Russian layout with Belarusian symbols on third level.
52partial alphanumeric_keys
53xkb_symbols "ru" {
54	include "ru(winkeys)"
55	name[Group1]= "Russian (Belarus)";
56
57	key <AB05> {[ Cyrillic_i,        Cyrillic_I,        Ukrainian_i,         Ukrainian_I         ]};
58	key <AD09> {[ Cyrillic_shcha,    Cyrillic_SHCHA,    Byelorussian_shortu, Byelorussian_SHORTU ]};
59	key <AD12> {[ Cyrillic_hardsign, Cyrillic_HARDSIGN, U2019,               apostrophe          ]};
60
61	include "level3(ralt_switch)"
62};
63
64// Belarusian layout extended with other East Slavic symbols (Russian, Ukrainian).
65partial alphanumeric_keys
66xkb_symbols "intl" {
67	include "by(basic)"
68	name[Group1]= "Belarusian (intl.)";
69
70	// Russian
71	key <AB05> {[ Ukrainian_i,         Ukrainian_I,         Cyrillic_i,        Cyrillic_I        ]};
72	key <AD09> {[ Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_shcha,    Cyrillic_SHCHA    ]};
73	key <AD12> {[ U2019,               apostrophe,          Cyrillic_hardsign, Cyrillic_HARDSIGN ]};
74
75	// Ukrainian (Yi is usually on <AD12>, but it is already taken in our case).
76	key <AC11> {[ Cyrillic_e,  Cyrillic_E,  Ukrainian_ie, Ukrainian_IE ]};
77	key <AD11> {[ Cyrillic_ha, Cyrillic_HA, Ukrainian_yi, Ukrainian_YI ]};
78	key <BKSL> {[ backslash,   bar,  Ukrainian_ghe_with_upturn,  Ukrainian_GHE_WITH_UPTURN ]};
79
80	include "level3(ralt_switch)"
81};
82
83partial alphanumeric_keys
84xkb_symbols "phonetic" {
85	include "ru(phonetic)"
86	name[Group1]= "Belarusian (phonetic)";
87
88	// Mostly same as good old YAWERTY layout, but with correct
89	// Belarusian i and ў (u-short) instead of щ (shcha). We also
90	// keep originals on level3 just in case.
91	key <AD12> {[ Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_shcha, Cyrillic_SHCHA ]};
92	key <LatI> {[ Ukrainian_i, Ukrainian_I, Cyrillic_i, Cyrillic_I ]};
93
94	// Lets also add level3+u to enable another way to input u-short
95	key <LatU> {[ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]};
96
97	// Since we already enable level3 lets also do alternative
98	// means for io and hardsign.
99	key <LatE> {[ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ]};
100	key <LatX> {[ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ]};
101
102	include "level3(ralt_switch)"
103};
104