Skip to content

Instantly share code, notes, and snippets.

@sutnistj
Last active February 23, 2026 23:30
Show Gist options
  • Select an option

  • Save sutnistj/02475df146fb94dac5d8284a50333ff1 to your computer and use it in GitHub Desktop.

Select an option

Save sutnistj/02475df146fb94dac5d8284a50333ff1 to your computer and use it in GitHub Desktop.
ua keyboard
partial alphanumeric_keys modifier_keys
xkb_symbols "l_jurid" {
include "ua(legacy)"
name[Group1]= "Ukrainian (L)";
// key <LSGT> { [ ] };
key <BKSL> { [ backslash, bar, brokenbar ] };
key <CAPS> {
type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Multi_key, Caps_Lock ],
actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
};
key <SPCE> { [ space, signifblank, nobreakspace, U2009 ] };
// U2009 THIN SPACE
key <TLDE> { [ grave, asciitilde, U033E ] };
// U033E COMBINING VERTICAL TILDE
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign, numerosign, section ] };
key <AE04> { [ 4, dollar, dead_currency, cent ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore, U2212 ] };
// U2212 MINUS SIGN
key <AE12> { [ equal, plus, U031F ] };
// U031F COMBINING PLUS SIGN BELOW
key <LatQ> { [ q, Q ] };
key <LatW> { [ w, W ] };
key <LatE> { [ e, E, UFE0E, UFE0F ] };
// UFE0E VARIATION SELECTOR-15
// UFE0F VARIATION SELECTOR-16
key <LatR> { [ r, R, dead_abovering, dead_belowring ] };
key <LatT> { [ t, T, dead_tilde, dead_belowtilde ] };
key <LatY> { [ y, Y ] };
key <LatU> { [ u, U ] };
key <LatI> { [ i, I ] };
key <LatO> { [ o, O, dead_ogonek, U25CC ] };
// U25CC DOTTED CIRCLE
key <LatP> { [ p, P ] };
key <AD11> { [ bracketleft, braceleft, U0319, U031E ] };
// U0319 COMBINING RIGHT TACK BELOW
// U031E COMBINING DOWN TACK BELOW
key <AD12> { [ bracketright, braceright, U0318, U031D ] };
// U0318 COMBINING LEFT TACK BELOW
// U031D COMBINING UP TACK BELOW
key <LatA> { [ a, A, dead_acute, dead_doubleacute ] };
key <LatS> { [ s, S, dead_circumflex, dead_belowcircumflex ] };
key <LatD> { [ d, D, dead_diaeresis, dead_belowdiaeresis ] };
key <LatF> { [ f, F, U2044 ] };
// U2044 FRACTION SLASH
key <LatG> { [ g, G, dead_grave, dead_doublegrave ] };
key <LatH> { [ h, H, dead_hook, dead_horn ] };
key <LatJ> { [ j, J, U200C, U200D ] };
// U200C ZERO WIDTH NON-JOINER
// U200D ZERO WIDTH JOINER
key <LatK> { [ k, K, dead_caron ] };
key <LatL> { [ l, L ] };
key <AC10> { [ semicolon, colon, U02D0 ] };
// U02D0 MODIFIER LETTER TRIANGULAR COLON
key <AC11> { [ apostrophe, quotedbl, U02BC, U0484 ] };
// U02BC MODIFIER LETTER APOSTROPHE
// U0484 COMBINING CYRILLIC PALATALIZATION
key <LatZ> { [ z, Z, U0292, U01B7 ] };
// U0292 LATIN SMALL LETTER EZH
// U01B7 LATIN CAPITAL LETTER EZH
key <LatX> { [ x, X ] };
key <LatC> { [ c, C, dead_cedilla ] };
key <LatV> { [ v, V, dead_invertedbreve, U032F ] };
// U032F COMBINING INVERTED BREVE BELOW
key <LatB> { [ b, B, dead_breve, dead_belowbreve ] };
key <LatN> { [ n, N ] };
key <LatM> { [ m, M, dead_macron, dead_belowmacron ] };
key <AB08> { [ comma, less, dead_abovecomma, dead_belowcomma ] };
key <AB09> { [ period, greater, dead_abovedot, dead_belowdot ] };
key <AB10> { [ slash, question, dead_stroke ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "k_jurid" {
include "ua(l_jurid)"
name[Group1]= "Ukrainian (K)";
key <LatQ> { [ U0491, U0490 ] };
// U0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
// U0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
key <LatW> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
key <LatP> { [ Cyrillic_pe, Cyrillic_PE, U0484 ] };
key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
key <LatG> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] };
key <LatJ> { [ Cyrillic_je, Cyrillic_JE ] };
key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
key <LatC> { [ Cyrillic_sha, Cyrillic_SHA ] };
key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
};
partial alphanumeric_keys
xkb_symbols "g_jurid" {
include "ua(l_jurid)"
name[Group1]= "Ukrainian (G)";
key <LatQ> {[ U03D9, U03D8 ]}; // ϙ Ϙ
key <LatW> {[ Greek_omega, Greek_OMEGA ]};
key <AD03> {[ Greek_epsilon, Greek_EPSILON ]};
key <AD04> {[ Greek_rho, Greek_RHO ]};
key <AD05> {[ Greek_tau, Greek_TAU ]};
key <LatY> {[ Greek_eta, Greek_ETA ]};
key <AD07> {[ Greek_upsilon, Greek_UPSILON ]};
key <AD08> {[ Greek_iota, Greek_IOTA ]};
key <AD09> {[ Greek_omicron, Greek_OMICRON ]};
key <AD10> {[ Greek_pi, Greek_PI ]};
key <LatA> {[ Greek_alpha, Greek_ALPHA ]};
key <AC02> {[ Greek_sigma, Greek_SIGMA ]};
key <AC03> {[ Greek_delta, Greek_DELTA ]};
key <AC04> {[ Greek_phi, Greek_PHI ]};
key <AC05> {[ Greek_gamma, Greek_GAMMA ]};
key <AC06> {[ U0371, U0370 ]}; // ͱ Ͱ
key <AC07> {[ U03F3, U037F ]}; // ϳ Ϳ
key <AC08> {[ Greek_kappa, Greek_KAPPA ]};
key <AC09> {[ Greek_lamda, Greek_LAMDA ]};
key <LatZ> {[ Greek_zeta, Greek_ZETA ]};
key <AB02> {[ Greek_chi, Greek_CHI ]};
key <AB03> {[ U03FB, U03FA ]}; // ϻ Ϻ
key <AB04> {[ U03DD, U03DC ]}; // ϝ Ϝ
key <AB05> {[ Greek_beta, Greek_BETA ]};
key <AB06> {[ Greek_nu, Greek_NU ]};
key <AB07> {[ Greek_mu, Greek_MU ]};
};
default partial alphanumeric_keys
xkb_symbols "s_jurid" {
include "ua(l_jurid)"
name[Group1]= "Ukrainian (S)";
key <LatQ> { [ U1045C ] };
// U1045C SHAVIAN LETTER GAG
key <LatW> { [ U2027 ] };
// U2027 HYPHENATION POINT
key <LatE> { [ U10467 ] };
// U10467 SHAVIAN LETTER EGG
key <LatR> { [ U1046E ] };
// U1046E SHAVIAN LETTER ROAR
key <LatT> { [ U10451 ] };
// U10451 SHAVIAN LETTER TOT
key <LatY> { [ U10466 ] };
// U10466 SHAVIAN LETTER IF
key <LatU> { [ U1046B ] };
// U1046B SHAVIAN LETTER WOOL
key <LatI> { [ U10470 ] };
// U10470 SHAVIAN LETTER EAT
key <LatO> { [ U10474 ] };
// U10474 SHAVIAN LETTER OAK
key <LatP> { [ U10450 ] };
// U10450 SHAVIAN LETTER PEEP
key <LatA> { [ U1046A ] };
// U1046A SHAVIAN LETTER ON
key <LatS> { [ U10455, U10454 ] };
// U10455 SHAVIAN LETTER SO
// U10454 SHAVIAN LETTER THIGH
key <LatD> { [ U1045B ] };
// U1045B SHAVIAN LETTER DEAD
key <LatF> { [ U10453 ] };
// U10453 SHAVIAN LETTER FEE
key <LatG> { [ U10460, U10461 ] };
// U10460 SHAVIAN LETTER MEASURE
// U10461 SHAVIAN LETTER JUDGE
key <LatH> { [ U10463 ] };
// U10463 SHAVIAN LETTER HA-HA
key <LatJ> { [ U10458 ] };
// U10458 SHAVIAN LETTER YEA
key <LatK> { [ U10452 ] };
// U10452 SHAVIAN LETTER KICK
key <LatL> { [ U10464 ] };
// U10464 SHAVIAN LETTER LOLL
key <LatZ> { [ U1045F, U1045E ] };
// U1045F SHAVIAN LETTER ZOO
// U1045E SHAVIAN LETTER THEY
key <LatX> { [ U10459 ] };
// U10459 SHAVIAN LETTER HUNG
key <LatC> { [ U10456, U10457 ] };
// U10456 SHAVIAN LETTER SURE
// U10457 SHAVIAN LETTER CHURCH
key <LatV> { [ U10462 ] };
// U10462 SHAVIAN LETTER WOE
key <LatB> { [ U1045A ] };
// U1045A SHAVIAN LETTER BIB
key <LatN> { [ U1046F ] };
// U1046F SHAVIAN LETTER NUN
key <LatM> { [ U10465 ] };
// U10465 SHAVIAN LETTER MIME
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment