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