// Keyboard layouts for Serbia. // Derived from "Danube" D.2 from 2003-05-12, // which is available at http://srpski.org/dunav/. // // Original authors: // Danilo Segan (Данило Шеган) // Chusslove Illich (Часлав Илић) default partial alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Serbian"; include "rs(cyrlevel3)" include "rs(common)" include "rs(cyralpha)" include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "latin" { name[Group1]= "Serbian (Latin)"; include "latin(type3)" include "rs(latalpha)" include "rs(latlevel3)" include "rs(common)" include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "yz" { include "rs(basic)" name[Group1]= "Serbian (Cyrillic, ZE and ZHE swapped)"; key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // y key { [ Cyrillic_ze, Cyrillic_ZE ] }; // z }; hidden partial alphanumeric_keys xkb_symbols "common" { // "Common" keys: keys that are the same // for both latin and cyrillic keyboards. key { [ grave, asciitilde ] }; key { [ 1, exclam ] }; key { [ 2, quotedbl ] }; key { [ 3, numbersign ] }; key { [ 4, dollar ] }; key { [ 5, percent ] }; key { [ 6, ampersand ] }; key { [ 7, slash ] }; key { [ 8, parenleft ] }; key { [ 9, parenright ] }; key { [ 0, equal ] }; key { [ apostrophe, question ] }; key { [ plus, asterisk ] }; key { [ comma, semicolon ] }; key { [ period, colon ] }; key { [ minus, underscore ] }; include "kpdl(comma)" }; hidden partial alphanumeric_keys xkb_symbols "cyralpha" { key { [ Cyrillic_lje, Cyrillic_LJE ] }; // q key { [ Cyrillic_nje, Cyrillic_NJE ] }; // w key { [ Cyrillic_ie, Cyrillic_IE ] }; // e key { [ Cyrillic_er, Cyrillic_ER ] }; // r key { [ Cyrillic_te, Cyrillic_TE ] }; // t key { [ Cyrillic_ze, Cyrillic_ZE ] }; // y key { [ Cyrillic_u, Cyrillic_U ] }; // u key { [ Cyrillic_i, Cyrillic_I ] }; // i key { [ Cyrillic_o, Cyrillic_O ] }; // o key { [ Cyrillic_pe, Cyrillic_PE ] }; // p key { [ Cyrillic_sha, Cyrillic_SHA ] }; // [ { key { [ Serbian_dje, Serbian_DJE ] }; // ] } key { [ Cyrillic_a, Cyrillic_A ] }; // a key { [ Cyrillic_es, Cyrillic_ES ] }; // s key { [ Cyrillic_de, Cyrillic_DE ] }; // d key { [ Cyrillic_ef, Cyrillic_EF ] }; // f key { [ Cyrillic_ghe, Cyrillic_GHE ] }; // g key { [ Cyrillic_ha, Cyrillic_HA ] }; // h key { [ Cyrillic_je, Cyrillic_JE ] }; // j key { [ Cyrillic_ka, Cyrillic_KA ] }; // k key { [ Cyrillic_el, Cyrillic_EL ] }; // l key { [ Cyrillic_che, Cyrillic_CHE ] }; // ; : key { [ Serbian_tshe, Serbian_TSHE ] }; // ' " key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // \ | key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; // z key { [ Cyrillic_dzhe, Cyrillic_DZHE ] }; // x key { [ Cyrillic_tse, Cyrillic_TSE ] }; // c key { [ Cyrillic_ve, Cyrillic_VE ] }; // v key { [ Cyrillic_be, Cyrillic_BE ] }; // b key { [ Cyrillic_en, Cyrillic_EN ] }; // n key { [ Cyrillic_em, Cyrillic_EM ] }; // m }; hidden partial alphanumeric_keys xkb_symbols "latalpha" { key { [ scaron, Scaron ] }; // [ { key { [ dstroke, Dstroke ] }; // ] } key { [ ccaron, Ccaron ] }; // ; : key { [ cacute, Cacute ] }; // ' " key { [ zcaron, Zcaron ] }; // \ | }; hidden partial alphanumeric_keys xkb_symbols "twoletter" { // Letters which are written in latin transcription with two characters. key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", [ U01C9, U01C8, any, U01C7 ] }; // lj Lj . LJ key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", [ U01CC, U01CB, any, U01CA ] }; // nj Nj . NJ key { type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC", [ U01C6, U01C5, any, U01C4 ] }; // dž Dž . DŽ // Also replace letter Y with Zcaron, since Y is of no use any longer. key { [ zcaron, Zcaron ] }; }; hidden partial alphanumeric_keys xkb_symbols "latlevel3" { key { [ any, any, notsign, notsign ] }; // ` ~ key { [ any, any, dead_tilde, asciitilde ] }; // 1 ! key { [ any, any, dead_caron, caron ] }; // 2 @ key { [ any, any, dead_circumflex, asciicircum ] }; // 3 # key { [ any, any, dead_breve, breve ] }; // 4 $ key { [ any, any, dead_abovering, degree ] }; // 5 % key { [ any, any, dead_ogonek, ogonek ] }; // 6 ^ key { [ any, any, dead_grave, grave ] }; // 7 & key { [ any, any, dead_abovedot, abovedot ] }; // 8 * key { [ any, any, dead_acute, apostrophe ] }; // 9 ( key { [ any, any, dead_doubleacute, doubleacute ] }; // 0 ) key { [ any, any, dead_diaeresis, diaeresis ] }; // - _ key { [ any, any, dead_cedilla, cedilla ] }; // = + key { [ any, any, backslash, Greek_OMEGA ] }; // q key { [ any, any, bar, Lstroke ] }; // w key { [ any, any, EuroSign, EuroSign ] }; // e key { [ any, any, paragraph, registered ] }; // r key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", [ any, any, tslash, Tslash ] }; // t key { [ any, any, leftarrow, yen ] }; // y key { [ any, any, downarrow, uparrow ] }; // u key { [ any, any, rightarrow, idotless ] }; // i key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", [ any, any, oslash, Oslash ] }; // o key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", [ any, any, thorn, THORN ] }; // p key { [ any, any, division, dead_abovering ] }; // [ key { [ any, any, multiply, dead_macron ] }; // ] key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", [ any, any, ae, AE ] }; // a key { [ any, any, doublelowquotemark, guillemotright ] }; // s key { [ any, any, leftdoublequotemark, guillemotleft ] }; // d key { [ any, any, bracketleft, ordfeminine ] }; // f key { [ any, any, bracketright, ENG ] }; // g key { type[Group1] = "FOUR_LEVEL_ALPHABETIC", [ any, any, hstroke, Hstroke ] }; // h key { [ any, any, lstroke, ampersand ] }; // k key { [ any, any, lstroke, Lstroke ] }; // l key { [ any, any, dead_acute, dead_doubleacute ] }; // ; key { [ any, any, ssharp, dead_caron ] }; // ' key { [ any, any, currency, dead_breve ] }; // \ key { [ any, any, leftsinglequotemark, guillemotright ] }; // z key { [ any, any, rightsinglequotemark,guillemotleft ] }; // x key { [ any, any, cent, copyright ] }; // c key { [ any, any, at, grave ] }; // v key { [ any, any, braceleft, apostrophe ] }; // b key { [ any, any, braceright, acute ] }; // n key { [ any, any, section, masculine ] }; // m key { [ any, any, less, multiply ] }; // , < key { [ any, any, greater, division ] }; // . > key { [ any, any, emdash, endash ] }; // / ? }; hidden partial alphanumeric_keys xkb_symbols "cyrlevel3" { key { [ any, any, degree, notsign ] }; // ` ~ key { [ any, any, dead_circumflex ] }; // 3 # key { [ any, any, dead_grave ] }; // 7 & key { [ any, any, dead_doublegrave ] }; // 8 * key { [ any, any, dead_acute ] }; // 9 ( key { [ any, any, dead_invertedbreve ] }; // 0 ) key { [ any, any, dead_macron ] }; // - _ key { [ any, any, backslash ] }; // q key { [ any, any, bar ] }; // w key { [ any, any, EuroSign, sterling ] }; // e key { [ any, any, paragraph, registered ] }; // r key { [ any, any, ellipsis ] }; // t key { [ any, any, leftarrow, yen ] }; // y key { [ any, any, downarrow, uparrow ] }; // u key { [ any, any, rightarrow ] }; // i key { [ any, any, section ] }; // o key { [ any, any, division ] }; // [ key { [ any, any, multiply ] }; // ] key { [ any, any, doublelowquotemark, guillemotright ] }; // s key { [ any, any, leftdoublequotemark, guillemotleft ] }; // d key { [ any, any, bracketleft ] }; // f key { [ any, any, bracketright ] }; // g key { [ any, any, currency ] }; // \ key { [ any, any, leftsinglequotemark ] }; // z key { [ any, any, rightsinglequotemark ] }; // x key { [ any, any, cent, copyright ] }; // c key { [ any, any, at ] }; // v key { [ any, any, braceleft ] }; // b key { [ any, any, braceright ] }; // n key { [ any, any, asciicircum ] }; // m key { [ any, any, less ] }; // , < key { [ any, any, greater ] }; // . > key { [ any, any, emdash, endash ] }; // / ? }; partial alphanumeric_keys xkb_symbols "latinunicode" { // This mapping supports the Unicode characters 0x1c4-0x1cc (dz, lj, and nj // as single character). You get the title form with AltGr+Shift. include "rs(latin)" name[Group1]= "Serbian (Latin, Unicode)"; include "rs(twoletter)" }; partial alphanumeric_keys xkb_symbols "latinyz" { // For those who insist on using "english-position" Z and Y. include "rs(latin)" name[Group1]= "Serbian (Latin, QWERTY)"; key { [ y, Y ] }; // y key { [ z, Z ] }; // z }; partial alphanumeric_keys xkb_symbols "latinunicodeyz" { // Unicode, ZHE and Z swapped. include "rs(latinunicode)" name[Group1]= "Serbian (Latin, Unicode, QWERTY)"; key { [ zcaron, Zcaron ] }; // y key { [ z, Z ] }; // z }; xkb_symbols "alternatequotes" { // Another acceptable »pair of quotes« for Serbian. include "rs(basic)" name[Group1]= "Serbian (Cyrillic, with guillemets)"; key { [ any, any, guillemotright ] }; // s key { [ any, any, guillemotleft ] }; // d }; xkb_symbols "latinalternatequotes" { // Another acceptable »pair of quotes« for Serbian. include "rs(latin)" name[Group1]= "Serbian (Latin, with guillemets)"; key { [ any, any, guillemotright ] }; // s key { [ any, any, guillemotleft ] }; // d }; xkb_symbols "rue" { // Layout for Pannonian Rusyn (spoken mainly in Serbia and Croatia // by the Rusyn people), based on Serbian Cyrillic layout. // Authors: // Ljubomir J. Papuga (Любомир Я. Папуґа) // Mihajlo Hornjak include "rs(basic)" name[Group1]= "Pannonian Rusyn"; key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; // ` key { [ Cyrillic_ya, Cyrillic_YA ] }; // q key { [ Ukrainian_ie, Ukrainian_IE ] }; // w key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; // ] key { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; // g key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; // j key { [ Cyrillic_ghe, Cyrillic_GHE ] }; // ' key { [ Cyrillic_yu, Cyrillic_YU ] }; // z key { [ Ukrainian_yi, Ukrainian_YI ] }; // x }; // EXTRAS: xkb_symbols "combiningkeys" { // Raw combining characters instead of dead keys, // especially good for post-accenting texts. include "rs(basic)" name[Group1]= "Serbian (combining accents instead of dead keys)"; key { [ any, any, U0302, dead_circumflex ] }; // 3, U0302 = COMBINING CIRCUMFLEX ACCENT key { [ any, any, U0300 ] }; // 7, U0300 = COMBINING GRAVE ACCENT key { [ any, any, U030F ] }; // 8, U030F = COMBINING DOUBLE GRAVE ACCENT key { [ any, any, U0301 ] }; // 9, U0301 = COMBINING ACUTE ACCENT key { [ any, any, U0311 ] }; // 0, U0311 = COMBINING INVERTED BREVE key { [ any, any, U0304 ] }; // -, U0304 = COMBINING MACRON };