Skip to content

Instantly share code, notes, and snippets.

@Blayung
Last active October 13, 2025 22:59
Show Gist options
  • Select an option

  • Save Blayung/a5e20a19b1cd20e47e6b76df4e000382 to your computer and use it in GitHub Desktop.

Select an option

Save Blayung/a5e20a19b1cd20e47e6b76df4e000382 to your computer and use it in GitHub Desktop.
My custom X11 keyboard layout with support for latin (polish, german, english) and cyrillic (russian, ukrainian, serbian, belarussian) writing, based on qwerty. To be put in /usr/share/xkeyboard-config-2/symbols
default partial alphanumeric_keys
xkb_symbols "basic" {
include "latin"
name[1] = "Latin";
key <TLDE> { [ grave, asciitilde, doublelowquotemark, rightdoublequotemark ] };
key <AE01> { [ 1, exclam, notequal, exclamdown ] };
key <AE02> { [ 2, at, twosuperior, questiondown ] };
key <AE04> { [ 4, dollar, EuroSign, sterling ] };
key <AE05> { [ 5, percent, ellipsis, permille ] };
key <AE06> { [ 6, asciicircum, onehalf, logicaland ] };
key <AE07> { [ 7, ampersand, section, U2248 ] };
key <AE08> { [ 8, asterisk, U221A, threequarters ] };
key <AE09> { [ 9, parenleft, guillemotleft, plusminus ] };
key <AE10> { [ 0, parenright, guillemotright, degree ] };
key <AE11> { [ minus, underscore, endash, emdash ] };
key <AD01> { [ q, Q, Greek_pi, Greek_OMEGA ] };
key <AD03> { [ e, E, eogonek, Eogonek ] };
key <AD04> { [ r, R, copyright, registered ] };
key <AD05> { [ t, T, ssharp, trademark ] };
key <AD06> { [ y, Y, adiaeresis, Adiaeresis ] };
key <AD09> { [ o, O, oacute, Oacute ] };
key <AC01> { [ a, A, aogonek, Aogonek ] };
key <AC02> { [ s, S, sacute, Sacute ] };
key <AC05> { [ g, G, odiaeresis, Odiaeresis ] };
key <AC06> { [ h, H, udiaeresis, Udiaeresis ] };
key <AC07> { [ j, J, schwa, SCHWA ] };
key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
key <AB02> { [ x, X, zacute, Zacute ] };
key <AB03> { [ c, C, cacute, Cacute ] };
key <AB06> { [ n, N, nacute, Nacute ] };
key <AB07> { [ m, M, mu, infinity ] };
key <AB08> { [ comma, less, lessthanequal, multiply ] };
key <AB09> { [ period, greater, greaterthanequal, division ] };
key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "cyrillic" {
include "latin"
name[2] = "Cyrillic";
key <TLDE> { [ grave, asciitilde, guillemotleft, guillemotright ] };
key <AD01> { [ Cyrillic_sha, Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] };
key <AD02> { [ Cyrillic_ve, Cyrillic_VE ] };
key <AD03> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_e, Cyrillic_E ] };
key <AD04> { [ Cyrillic_er, Cyrillic_ER, Ukrainian_ie, Ukrainian_IE ] };
key <AD05> { [ Cyrillic_te, Cyrillic_TE, Serbian_tshe, Serbian_TSHE ] };
key <AD06> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_yi, Ukrainian_YI ] };
key <AD07> { [ Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] };
key <AD08> { [ Cyrillic_i, Cyrillic_I, Cyrillic_shorti, Cyrillic_SHORTI ] };
key <AD09> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
key <AD10> { [ Cyrillic_pe, Cyrillic_PE ] };
key <AC01> { [ Cyrillic_a, Cyrillic_A, Cyrillic_ya, Cyrillic_YA ] };
key <AC02> { [ Cyrillic_es, Cyrillic_ES, U0467, U0466 ] };
key <AC03> { [ Cyrillic_de, Cyrillic_DE, Serbian_dje, Serbian_DJE ] };
key <AC04> { [ Cyrillic_ef, Cyrillic_EF, U046B, U046A ] };
key <AC05> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_with_upturn ] };
key <AC06> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_je, Cyrillic_JE ] };
key <AC07> { [ Cyrillic_che, Cyrillic_CHE, Ukrainian_i, Ukrainian_I ] };
key <AC08> { [ Cyrillic_ka, Cyrillic_KA, Byelorussian_shortu, Byelorussian_SHORTU ] };
key <AC09> { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE ] };
key <AB01> { [ Cyrillic_ze, Cyrillic_ZE, U0469, U0468 ] };
key <AB02> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
key <AB03> { [ Cyrillic_tse, Cyrillic_TSE, U046D, U046C ] };
key <AB04> { [ Cyrillic_zhe, Cyrillic_ZHE, Cyrillic_dzhe, Cyrillic_DZHE ] };
key <AB05> { [ Cyrillic_be, Cyrillic_BE ] };
key <AB06> { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE ] };
key <AB07> { [ Cyrillic_em, Cyrillic_EM ] };
include "level3(ralt_switch)"
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment