Home | History | Annotate | Line # | Download | only in symbols
      1 // Based on http://www.sci.kz/~sairan/keyboard/kzkbd.html
      2 // Baurzhan Ismagulov <ibr (a] radix50.net>
      3 //
      4 
      5 // TODO:
      6 // 1. AltGr with TLDE and LSGT.
      7 // 2. Dead key for ruskaz and kazrus.
      8 // 3. Ctrl + <key>.
      9 // 4. Alt-Tab.
     10 
     11 // RST KazSSR 903-90
     12 // levels 3 and 4 are non-standard extensions
     13 default partial alphanumeric_keys
     14 xkb_symbols "basic" {
     15 
     16     name[Group1] = "Kazakh";
     17 
     18 key.type[group1] = "FOUR_LEVEL";
     19 
     20     key <TLDE> { [ parenleft,               parenright,              Cyrillic_io, Cyrillic_IO ] };
     21     key <AE01> { [ quotedbl,      exclam ] };
     22     key <AE06> { [ comma,                   semicolon ] };
     23     key <AE07> { [ period,                  colon ] };
     24     key <BKSL> { [ backslash,               slash ] };
     25     key <AB10> { [ numerosign,              question ] };
     26     key <LSGT> { [ less,                    greater,                 bar,         brokenbar ] };
     27 
     28 key.type[group1] = "ALPHABETIC";
     29 
     30     key <AE02> { [ Cyrillic_schwa,          Cyrillic_SCHWA ] };
     31     key <AE03> { [ Ukrainian_i,             Ukrainian_I ] };
     32     key <AE04> { [ Cyrillic_en_descender,   Cyrillic_EN_descender ] };
     33     key <AE05> { [ Cyrillic_ghe_bar,        Cyrillic_GHE_bar ] };
     34     key <AE08> { [ Cyrillic_u_straight,     Cyrillic_U_straight ] };
     35     key <AE09> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
     36     key <AE10> { [ Cyrillic_ka_descender,   Cyrillic_KA_descender ] };
     37     key <AE11> { [ Cyrillic_o_bar,          Cyrillic_O_bar ] };
     38     key <AE12> { [ Cyrillic_shha,           Cyrillic_SHHA ] };
     39 
     40     key <AD01> { [ Cyrillic_shorti,         Cyrillic_SHORTI ] };
     41     key <AD02> { [ Cyrillic_tse,            Cyrillic_TSE ] };
     42     key <AD03> { [ Cyrillic_u,              Cyrillic_U ] };
     43     key <AD04> { [ Cyrillic_ka,             Cyrillic_KA ] };
     44     key <AD05> { [ Cyrillic_ie,             Cyrillic_IE ] };
     45     key <AD06> { [ Cyrillic_en,             Cyrillic_EN ] };
     46     key <AD07> { [ Cyrillic_ghe,            Cyrillic_GHE ] };
     47     key <AD08> { [ Cyrillic_sha,            Cyrillic_SHA ] };
     48     key <AD09> { [ Cyrillic_shcha,          Cyrillic_SHCHA ] };
     49     key <AD10> { [ Cyrillic_ze,             Cyrillic_ZE ] };
     50     key <AD11> { [ Cyrillic_ha,             Cyrillic_HA ] };
     51     key <AD12> { [ Cyrillic_hardsign,       Cyrillic_HARDSIGN ] };
     52     key <AC01> { [ Cyrillic_ef,             Cyrillic_EF ] };
     53     key <AC02> { [ Cyrillic_yeru,           Cyrillic_YERU ] };
     54     key <AC03> { [ Cyrillic_ve,             Cyrillic_VE ] };
     55     key <AC04> { [ Cyrillic_a,              Cyrillic_A ] };
     56     key <AC05> { [ Cyrillic_pe,             Cyrillic_PE ] };
     57     key <AC06> { [ Cyrillic_er,             Cyrillic_ER ] };
     58     key <AC07> { [ Cyrillic_o,              Cyrillic_O ] };
     59     key <AC08> { [ Cyrillic_el,             Cyrillic_EL ] };
     60     key <AC09> { [ Cyrillic_de,             Cyrillic_DE ] };
     61     key <AC10> { [ Cyrillic_zhe,            Cyrillic_ZHE ] };
     62     key <AC11> { [ Cyrillic_e,              Cyrillic_E ] };
     63     key <AB01> { [ Cyrillic_ya,             Cyrillic_YA ] };
     64     key <AB02> { [ Cyrillic_che,            Cyrillic_CHE ] };
     65     key <AB03> { [ Cyrillic_es,             Cyrillic_ES ] };
     66     key <AB04> { [ Cyrillic_em,             Cyrillic_EM ] };
     67     key <AB06> { [ Cyrillic_te,             Cyrillic_TE ] };
     68     key <AB05> { [ Cyrillic_i,              Cyrillic_I ] };
     69     key <AB07> { [ Cyrillic_softsign,       Cyrillic_SOFTSIGN ] };
     70     key <AB08> { [ Cyrillic_be,             Cyrillic_BE ] };
     71     key <AB09> { [ Cyrillic_yu,             Cyrillic_YU ] };
     72 };
     73 
     74 // Kikkarin KZ1
     75 partial alphanumeric_keys
     76 xkb_symbols "ruskaz" {
     77 
     78     name[Group1] = "Russian (Kazakhstan, with Kazakh)";
     79 
     80 key.type[group1] = "FOUR_LEVEL";
     81 
     82     key	<AE01> { [ 1,                       exclam ] };
     83     key	<AE02> { [ 2,                       quotedbl,                at ] };
     84     key	<AE03> { [ 3,                       numerosign,              numbersign ] };
     85     key	<AE04> { [ 4,                       semicolon,               dollar ] };
     86     key	<AE05> { [ 5,                       percent ] };
     87     key	<AE06> { [ 6,                       colon,                   asciicircum ] };
     88     key	<AE07> { [ 7,                       question,                ampersand ] };
     89     key	<AE08> { [ 8,                       asterisk ] };
     90     key	<AE09> { [ 9,                       parenleft ] };
     91     key	<AE10> { [ 0,                       parenright ] };
     92     key	<AE11> { [ minus,                   underscore ] };
     93     key	<AE12> { [ equal,                   plus ] };
     94     key	<BKSL> { [ backslash,               slash,                   bar ] };
     95     key	<AB10> { [ period,                  comma,                   slash,                   question ] };
     96     key <LSGT> { [ less,                    greater,                 bar,                     brokenbar ] };
     97 
     98 key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
     99 
    100     key	<TLDE> { [ Cyrillic_io,             Cyrillic_IO ] };
    101     key	<AD01> { [ Cyrillic_shorti,         Cyrillic_SHORTI,         Cyrillic_u_straight_bar, Cyrillic_U_straight_bar ] };
    102     key	<AD02> { [ Cyrillic_tse,            Cyrillic_TSE ] };
    103     key	<AD03> { [ Cyrillic_u,              Cyrillic_U,              Cyrillic_u_straight,     Cyrillic_U_straight ] };
    104     key	<AD04> { [ Cyrillic_ka,             Cyrillic_KA,             Cyrillic_ka_descender,   Cyrillic_KA_descender ] };
    105     key	<AD05> { [ Cyrillic_ie,             Cyrillic_IE,             Cyrillic_io,             Cyrillic_IO ] };
    106     key	<AD06> { [ Cyrillic_en,             Cyrillic_EN,             Cyrillic_en_descender,   Cyrillic_EN_descender ] };
    107     key	<AD07> { [ Cyrillic_ghe,            Cyrillic_GHE,            Cyrillic_ghe_bar,        Cyrillic_GHE_bar ] };
    108     key	<AD08> { [ Cyrillic_sha,            Cyrillic_SHA ] };
    109     key	<AD09> { [ Cyrillic_shcha,          Cyrillic_SHCHA ] };
    110     key	<AD10> { [ Cyrillic_ze,             Cyrillic_ZE ] };
    111     key	<AD11> { [ Cyrillic_ha,             Cyrillic_HA,             Cyrillic_shha,           Cyrillic_SHHA ] };
    112     key	<AD12> { [ Cyrillic_hardsign,       Cyrillic_HARDSIGN ] };
    113     key	<AC01> { [ Cyrillic_ef,             Cyrillic_EF ] };
    114     key	<AC02> { [ Cyrillic_yeru,           Cyrillic_YERU ] };
    115     key	<AC03> { [ Cyrillic_ve,             Cyrillic_VE ] };
    116     key	<AC04> { [ Cyrillic_a,              Cyrillic_A,              Cyrillic_schwa,          Cyrillic_SCHWA ] };
    117     key	<AC05> { [ Cyrillic_pe,             Cyrillic_PE ] };
    118     key	<AC06> { [ Cyrillic_er,             Cyrillic_ER ] };
    119     key	<AC07> { [ Cyrillic_o,              Cyrillic_O,              Cyrillic_o_bar,          Cyrillic_O_bar ] };
    120     key	<AC08> { [ Cyrillic_el,             Cyrillic_EL ] };
    121     key	<AC09> { [ Cyrillic_de,             Cyrillic_DE ] };
    122     key	<AC10> { [ Cyrillic_zhe,            Cyrillic_ZHE ] };
    123     key	<AC11> { [ Cyrillic_e,              Cyrillic_E ] };
    124     key	<AB01> { [ Cyrillic_ya,             Cyrillic_YA ] };
    125     key	<AB02> { [ Cyrillic_che,            Cyrillic_CHE ] };
    126     key	<AB03> { [ Cyrillic_es,             Cyrillic_ES ] };
    127     key	<AB04> { [ Cyrillic_em,             Cyrillic_EM ] };
    128     key	<AB06> { [ Cyrillic_te,             Cyrillic_TE ] };
    129     key	<AB05> { [ Cyrillic_i,              Cyrillic_I,              Ukrainian_i,             Ukrainian_I ] };
    130     key	<AB07> { [ Cyrillic_softsign,       Cyrillic_SOFTSIGN ] };
    131     key	<AB08> { [ Cyrillic_be,             Cyrillic_BE ] };
    132     key	<AB09> { [ Cyrillic_yu,             Cyrillic_YU ] };
    133 };
    134 
    135 // Kikkarin KZ2
    136 partial alphanumeric_keys
    137 xkb_symbols "kazrus" {
    138 
    139     name[Group1] = "Kazakh (with Russian)";
    140 
    141 key.type[group1] = "FOUR_LEVEL";
    142 
    143     key	<AE01> { [ 1,                       exclam ] };
    144     key	<AE02> { [ 2,                       quotedbl,                at ] };
    145     key	<AE03> { [ 3,                       numerosign,              numbersign ] };
    146     key	<AE04> { [ 4,                       semicolon,               dollar ] };
    147     key	<AE05> { [ 5,                       percent ] };
    148     key	<AE06> { [ 6,                       colon,                   asciicircum ] };
    149     key	<AE07> { [ 7,                       question,                ampersand ] };
    150     key	<AE08> { [ 8,                       asterisk ] };
    151     key	<AE09> { [ 9,                       parenleft ] };
    152     key	<AE10> { [ 0,                       parenright ] };
    153     key	<AE11> { [ minus,                   underscore ] };
    154     key	<AE12> { [ equal,                   plus ] };
    155     key	<BKSL> { [ backslash,               slash,                   bar ] };
    156     key	<AB10> { [ period,                  comma,                   slash,                   question ] };
    157     key <LSGT> { [ less,                    greater,                 bar,                     brokenbar ] };
    158 
    159 key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
    160 
    161     key	<TLDE> { [ Cyrillic_io,             Cyrillic_IO ] };
    162     key	<AD01> { [ Cyrillic_shorti,         Cyrillic_SHORTI ] };
    163     key	<AD02> { [ Cyrillic_en_descender,   Cyrillic_EN_descender,   Cyrillic_tse,            Cyrillic_TSE ] };
    164     key	<AD03> { [ Cyrillic_u,              Cyrillic_U ] };
    165     key	<AD04> { [ Cyrillic_ka,             Cyrillic_KA,             Cyrillic_ka_descender,    Cyrillic_KA_descender ] };
    166     key	<AD05> { [ Cyrillic_ie,             Cyrillic_IE,             Cyrillic_io,             Cyrillic_IO ] };
    167     key	<AD06> { [ Cyrillic_en,             Cyrillic_EN ] };
    168     key	<AD07> { [ Cyrillic_ghe,            Cyrillic_GHE ] };
    169     key	<AD08> { [ Cyrillic_sha,            Cyrillic_SHA ] };
    170     key	<AD09> { [ Cyrillic_ghe_bar,        Cyrillic_GHE_bar,        Cyrillic_shcha,          Cyrillic_SHCHA ] };
    171     key	<AD10> { [ Cyrillic_ze,             Cyrillic_ZE ] };
    172     key	<AD11> { [ Cyrillic_ha,             Cyrillic_HA,             Cyrillic_shha,           Cyrillic_SHHA ] };
    173     key	<AD12> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, Cyrillic_hardsign,       Cyrillic_HARDSIGN ] };
    174     key	<AC01> { [ Cyrillic_o_bar,          Cyrillic_O_bar,          Cyrillic_ef,             Cyrillic_EF ] };
    175     key	<AC02> { [ Cyrillic_yeru,           Cyrillic_YERU ] };
    176     key	<AC03> { [ Cyrillic_ka_descender,   Cyrillic_KA_descender,   Cyrillic_ve,             Cyrillic_VE ] };
    177     key	<AC04> { [ Cyrillic_a,              Cyrillic_A ] };
    178     key	<AC05> { [ Cyrillic_pe,             Cyrillic_PE ] };
    179     key	<AC06> { [ Cyrillic_er,             Cyrillic_ER ] };
    180     key	<AC07> { [ Cyrillic_o,              Cyrillic_O ] };
    181     key	<AC08> { [ Cyrillic_el,             Cyrillic_EL ] };
    182     key	<AC09> { [ Cyrillic_de,             Cyrillic_DE ] };
    183     key	<AC10> { [ Cyrillic_zhe,            Cyrillic_ZHE ] };
    184     key	<AC11> { [ Cyrillic_schwa,          Cyrillic_SCHWA,          Cyrillic_e,              Cyrillic_E ] };
    185     key	<AB01> { [ Cyrillic_ya,             Cyrillic_YA ] };
    186     key	<AB02> { [ Ukrainian_i,             Ukrainian_I,             Cyrillic_che,            Cyrillic_CHE ] };
    187     key	<AB03> { [ Cyrillic_es,             Cyrillic_ES ] };
    188     key	<AB04> { [ Cyrillic_em,             Cyrillic_EM ] };
    189     key	<AB06> { [ Cyrillic_te,             Cyrillic_TE ] };
    190     key	<AB05> { [ Cyrillic_i,              Cyrillic_I ] };
    191     key	<AB07> { [ Cyrillic_u_straight,     Cyrillic_U_straight,     Cyrillic_softsign,       Cyrillic_SOFTSIGN ] };
    192     key	<AB08> { [ Cyrillic_be,             Cyrillic_BE ] };
    193     key	<AB09> { [ Cyrillic_yu,             Cyrillic_YU ] };
    194 };
    195 
    196 partial alphanumeric_keys
    197 xkb_symbols "olpc" {
    198 
    199 // Contact: Walter Bender <walter (a] laptop.org>
    200 
    201 // We moved the Cyrillic IO off of the Tilde Key as an Alt-GR character
    202 // and moved it onto the Backslash key, making Backslash and Bar available
    203 // through the Latin side of the keyboard.
    204 
    205    include "kz(basic)"
    206 
    207    key <TLDE> { [ parenleft,               parenright ] };
    208    key <BKSL> { [ Cyrillic_io,             Cyrillic_IO ] };
    209 
    210    include "group(olpc)"
    211 };
    212 
    213 partial alphanumeric_keys
    214 xkb_symbols "ext" {
    215 
    216 // Levels 3 and 4 represent main keyboard's numeric part of US layout,
    217 // parens are duplicated for consistency.
    218 
    219     include "kz(basic)"
    220     name[Group1] = "Kazakh (extended)";
    221 
    222 key.type[group1] = "FOUR_LEVEL_ALPHABETIC";
    223 
    224     key <TLDE> { [ Cyrillic_io,             Cyrillic_IO,             grave,  asciitilde ] };
    225     key <AE01> { [ quotedbl,                exclam,                  1,      exclam ] };
    226     key <AE02> { [ Cyrillic_schwa,          Cyrillic_SCHWA,          2,      at ] };
    227     key <AE03> { [ Ukrainian_i,             Ukrainian_I,             3,      numbersign ] };
    228     key <AE04> { [ Cyrillic_en_descender,   Cyrillic_EN_descender,   4,      dollar ] };
    229     key <AE05> { [ Cyrillic_ghe_bar,        Cyrillic_GHE_bar,        5,      percent ] };
    230     key <AE06> { [ comma,                   semicolon,               6,      asciicircum ] };
    231     key <AE07> { [ period,                  colon,                   7,      ampersand ] };
    232     key <AE08> { [ Cyrillic_u_straight,     Cyrillic_U_straight,     8,      asterisk ] };
    233     key <AE09> { [ Cyrillic_u_straight_bar, Cyrillic_U_straight_bar, 9,      parenleft ] };
    234     key <AE10> { [ Cyrillic_ka_descender,   Cyrillic_KA_descender,   0,      parenright ] };
    235     key <AE11> { [ Cyrillic_o_bar,          Cyrillic_O_bar,          minus,  underscore  ] };
    236     key <AE12> { [ Cyrillic_shha,           Cyrillic_SHHA,           equal,  plus ] };
    237     key <BKSL> { [ backslash,               slash,                   bar,    brokenbar ] };
    238     key <AD11> { [ Cyrillic_ha,             Cyrillic_HA,             bracketleft,  braceleft ] };
    239     key <AD12> { [ Cyrillic_hardsign,       Cyrillic_HARDSIGN,       bracketright, braceright ] };
    240     key <AC11> { [ Cyrillic_e,              Cyrillic_E,              apostrophe ] };
    241     key <AB08> { [ Cyrillic_be,             Cyrillic_BE,             less    ] };
    242     key <AB09> { [ Cyrillic_yu,             Cyrillic_YU,             greater ] };
    243 
    244    include "level3(ralt_switch)"
    245 };
    246 
    247 // Kazakh Latin (based on Kazakh alphabet version of 2018)
    248 // levels 3 and 4 are non-standard extensions
    249 partial alphanumeric_keys
    250 xkb_symbols "latin" {
    251 
    252 // Contact: Galym Kerimbekov <housegregory299 (a] gmail.com>
    253 
    254     name[Group1] = "Kazakh (Latin)";
    255 
    256 key.type[group1] = "FOUR_LEVEL";
    257 
    258     key <TLDE> { [ parenleft,               parenright ] };
    259     key <AE01> { [ quotedbl,                exclam ] };
    260     key <AE06> { [ comma,                   semicolon ] };
    261     key <AE07> { [ period,                  colon ] };
    262     key <BKSL> { [ backslash,               slash ] };
    263     key <AB10> { [ numerosign,              question ] };
    264     key <LSGT> { [ less,                    greater,                 bar,         brokenbar ] };
    265 
    266 key.type[group1] = "ALPHABETIC";
    267 
    268     key <AE02> { [ aacute,                  Aacute ] };
    269     key <AE03> { [ iacute,                  Iacute ] };
    270     key <AE04> { [ nacute,                  Nacute ] };
    271     key <AE05> { [ U01F5,                   U01F4 ] }; // gG with acute
    272     key <AE08> { [ uacute,                  Uacute ] };
    273     key <AE09> { [ yacute,                  Yacute ] };
    274     key <AE10> { [ oacute,                  Oacute ] }; 
    275     key <AE11> { [ sacute,                  Sacute ] }; 
    276     key <AE12> { [ cacute,                  Cacute ] }; 
    277 
    278     key <AD01> { [ q,                       Q ] };
    279     key <AD02> { [ w,                       W ] };
    280     key <AD03> { [ e,                       E ] };
    281     key <AD04> { [ r,                       R ] };
    282     key <AD05> { [ t,                       T ] };
    283     key <AD06> { [ y,                       Y ] };
    284     key <AD07> { [ u,                       U ] };
    285     key <AD08> { [ i,                       I ] };
    286     key <AD09> { [ o,                       O ] };
    287     key <AD10> { [ p,                       P ] };
    288     key <AC01> { [ a,                       A ] };
    289     key <AC02> { [ s,                       S ] };
    290     key <AC03> { [ d,                       D ] };
    291     key <AC04> { [ f,                       F ] };
    292     key <AC05> { [ g,                       G ] };
    293     key <AC06> { [ h,                       H ] };
    294     key <AC07> { [ j,                       J ] };
    295     key <AC08> { [ k,                       K ] };
    296     key <AC09> { [ l,                       L ] };
    297     key <AB01> { [ z,                       Z ] };
    298     key <AB02> { [ x,                       X ] };
    299     key <AB03> { [ c,                       C ] };
    300     key <AB04> { [ v,                       M ] };
    301     key <AB05> { [ b,                       B ] };
    302     key <AB06> { [ n,                       N ] };
    303     key <AB07> { [ m,                       M ] };
    304 };
    305