rs revision 0412cded
1// Bosnian, Croatian, Serbian and Slovenian XKB keyboard mapping
2// (derived from "Danube" D.2)
3//
4// Danube D.2 from 2003-05-12 is available at http://srpski.org/dunav/
5//
6// Original authors:
7//  Danilo Segan (Данило Шеган) <danilo@kvota.net>
8//  Chusslove Illich (Часлав Илић) <chaslav@sezampro.yu>
9//
10// Danilo Segan <danilo@kvota.net>:
11// - Modified for inclusion in XFree86
12// - Further modifications on 2005-08-18 to support Bosnian, Croatian
13//   and Slovenian in xkeyboard-config
14//  
15
16default partial alphanumeric_keys
17xkb_symbols "basic" {
18
19  name[Group1]= "Serbian";
20
21  include "rs(cyrlevel3)"
22  include "rs(common)"
23  include "rs(cyralpha)"
24  include "level3(ralt_switch)"
25};
26
27
28partial alphanumeric_keys
29xkb_symbols "latin" {
30
31  name[Group1]= "Serbian (Latin)";
32
33  include "latin(type3)"
34  include "rs(latalpha)"
35  include "rs(latlevel3)"
36  include "rs(common)"
37  include "level3(ralt_switch)"
38};
39
40
41partial alphanumeric_keys
42xkb_symbols "yz" {
43  // Cyrillic_zhe and Cyrillic_ze swapped.
44
45  name[Group1]= "Serbian (Cyrillic, Z and ZHE swapped)";
46
47  include "rs(basic)"
48
49  key <AD06> {   [ Cyrillic_zhe,        Cyrillic_ZHE,   any,any ]   }; // y
50  key <AB01> {   [ Cyrillic_ze,         Cyrillic_ZE,    any,any ]   }; // z
51};
52
53partial hidden alphanumeric_keys
54xkb_symbols "common" {
55  // "Common" keys: keys which are same for both latin and cyrillic keyboards
56
57  key.type[Group1] = "FOUR_LEVEL";
58
59  key <TLDE> {   [ quoteleft,           asciitilde,    any,any ]   }; //
60  key <AE01> {   [ 1,                   exclam,        any,any ]   }; //
61  key <AE02> {   [ 2,                   quotedbl,      any,any ]   }; //
62  key <AE03> {   [ 3,                   numbersign,    any,any ]   }; //
63  key <AE04> {   [ 4,                   dollar,        any,any ]   }; //
64  key <AE05> {   [ 5,                   percent,       any,any ]   }; //
65  key <AE06> {   [ 6,                   ampersand,     any,any ]   }; //
66  key <AE07> {   [ 7,                   slash,         any,any ]   }; //
67  key <AE08> {   [ 8,                   parenleft,     any,any ]   }; //
68  key <AE09> {   [ 9,                   parenright,    any,any ]   }; //
69  key <AE10> {   [ 0,                   equal,         any,any ]   }; //
70  key <AE11> {   [ apostrophe,          question,      any,any ]   }; //
71  key <AE12> {   [ plus,                asterisk,      any,any ]   }; //
72
73  key <AB08> {   [ comma,               semicolon,     any,any ]   }; //
74  key <AB09> {   [ period,              colon,         any,any ]   }; //
75  key <AB10> {   [ minus,               underscore,    any,any ]   }; //
76
77  include "kpdl(comma)"
78};
79
80partial hidden alphanumeric_keys
81xkb_symbols "cyralpha" {
82
83  key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
84
85  key <AD01> {   [ Cyrillic_lje,        Cyrillic_LJE,   any,any ]   }; // q
86  key <AD02> {   [ Cyrillic_nje,        Cyrillic_NJE,   any,any ]   }; // w
87  key <AD03> {   [ Cyrillic_ie,         Cyrillic_IE,    any,any ]   }; // e
88  key <AD04> {   [ Cyrillic_er,         Cyrillic_ER,    any,any ]   }; // r
89  key <AD05> {   [ Cyrillic_te,         Cyrillic_TE,    any,any ]   }; // t
90  key <AD06> {   [ Cyrillic_ze,         Cyrillic_ZE,    any,any ]   }; // y
91  key <AD07> {   [ Cyrillic_u,          Cyrillic_U,     any,any ]   }; // u
92  key <AD08> {   [ Cyrillic_i,          Cyrillic_I,     any,any ]   }; // i
93  key <AD09> {   [ Cyrillic_o,          Cyrillic_O,     any,any ]   }; // o
94  key <AD10> {   [ Cyrillic_pe,         Cyrillic_PE,    any,any ]   }; // p
95  key <AD11> {   [ Cyrillic_sha,        Cyrillic_SHA,   any,any ]   }; // [ {
96  key <AD12> {   [ Serbian_dje,         Serbian_DJE,    any,any ]   }; // ] }
97
98  key <AC01> {   [ Cyrillic_a,          Cyrillic_A,     any,any ]   }; // a
99  key <AC02> {   [ Cyrillic_es,         Cyrillic_ES,    any,any ]   }; // s
100  key <AC03> {   [ Cyrillic_de,         Cyrillic_DE,    any,any ]   }; // d
101  key <AC04> {   [ Cyrillic_ef,         Cyrillic_EF,    any,any ]   }; // f
102  key <AC05> {   [ Cyrillic_ghe,        Cyrillic_GHE,   any,any ]   }; // g
103  key <AC06> {   [ Cyrillic_ha,         Cyrillic_HA,    any,any ]   }; // h
104  key <AC07> {   [ Cyrillic_je,         Cyrillic_JE,    any,any ]   }; // j
105  key <AC08> {   [ Cyrillic_ka,         Cyrillic_KA,    any,any ]   }; // k
106  key <AC09> {   [ Cyrillic_el,         Cyrillic_EL,    any,any ]   }; // l
107  key <AC10> {   [ Cyrillic_che,        Cyrillic_CHE,   any,any ]   }; // ; :
108  key <AC11> {   [ Serbian_tshe,        Serbian_TSHE,   any,any ]   }; // ' "
109  key <BKSL> {   [ Cyrillic_zhe,        Cyrillic_ZHE,   any,any ]   }; // \ |
110
111  key <AB01> {   [ Cyrillic_zhe,        Cyrillic_ZHE,   any,any ]   }; // z
112  key <AB02> {   [ Cyrillic_dzhe,       Cyrillic_DZHE,  any,any ]   }; // x
113  key <AB03> {   [ Cyrillic_tse,        Cyrillic_TSE,   any,any ]   }; // c
114  key <AB04> {   [ Cyrillic_ve,         Cyrillic_VE,    any,any ]   }; // v
115  key <AB05> {   [ Cyrillic_be,         Cyrillic_BE,    any,any ]   }; // b
116  key <AB06> {   [ Cyrillic_en,         Cyrillic_EN,    any,any ]   }; // n
117  key <AB07> {   [ Cyrillic_em,         Cyrillic_EM,    any,any ]   }; // m
118};
119
120
121partial hidden alphanumeric_keys
122xkb_symbols "latalpha" {
123
124  key.type[Group1] = "FOUR_LEVEL_ALPHABETIC";
125
126  key <AD11> {   [ scaron,              Scaron,        any,any ]   }; //
127  key <AD12> {   [ dstroke,             Dstroke,       any,any ]   }; //
128
129  key <AC10> {   [ ccaron,              Ccaron,        any,any ]   }; //
130  key <AC11> {   [ cacute,              Cacute,        any,any ]   }; //
131  key <BKSL> {   [ zcaron,              Zcaron,        any,any ]   }; //
132
133};
134
135partial hidden alphanumeric_keys
136xkb_symbols "twoletter" {
137  // These are letters which are written in latin transcription with two-characters.
138
139  key <AD01> {   type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
140                 [ U1C9,                U1C8,         any,   U1C7 ]   }; // q
141  key <AD02> {   type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
142                 [ U1CC,                U1CB,         any,   U1CA ]   }; // w
143  key <AB02> {   type[Group1] = "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC",
144                 [ U1C6,                U1C5,         any,   U1C4 ]   }; // x
145
146  // Also replace letter Y with Zcaron, since Y is of no use any longer
147  key <AB01> {   [ zcaron,              Zcaron,        any,any ]   }; //
148};
149
150partial hidden alphanumeric_keys
151xkb_symbols "latlevel3" {
152  key <TLDE> {   [ any,any,     notsign,             notsign     ]   }; // ` ~
153  key <AE01> {   [ any,any,     dead_tilde,          asciitilde  ]   }; // 1 !
154  key <AE02> {   [ any,any,     dead_caron,          caron 	 ]   }; // 2 @
155  key <AE03> {   [ any,any,     dead_circumflex,     asciicircum ]   }; // 3 #
156  key <AE04> {   [ any,any,     dead_breve,          breve 	 ]   }; // 4 $
157  key <AE05> {   [ any,any,     dead_abovering,      degree	 ]   }; // 5 %
158  key <AE06> {   [ any,any,     dead_ogonek,         ogonek	 ]   }; // 6 ^
159  key <AE07> {   [ any,any,     dead_grave,          grave 	 ]   }; // 7 &
160  key <AE08> {   [ any,any,     dead_abovedot,       abovedot 	 ]   }; // 8 *
161  key <AE09> {   [ any,any,     dead_acute,          apostrophe  ]   }; // 9 (
162  key <AE10> {   [ any,any,     dead_doubleacute,    doubleacute ]   }; // 0 )
163  key <AE11> {   [ any,any,     dead_diaeresis,      diaeresis 	 ]   }; // - _
164  key <AE12> {   [ any,any,     dead_cedilla,        cedilla 	 ]   }; // = +
165
166  key <AD01> {   [ any,any,     backslash,           Greek_OMEGA ]   }; // q
167  key <AD02> {   [ any,any,     bar,                 Lstroke 	 ]   }; // w
168  key <AD03> {   [ any,any,     EuroSign,            EuroSign 	 ]   }; // e
169  key <AD04> {   [ any,any,     paragraph,           registered  ]   }; // r
170  key <AD05> {   [ any,any,     tslash,              Tslash 	 ]   }; // t // ALPHABETIC
171  key <AD06> {   [ any,any,     leftarrow,           yen 	 ]   }; // y
172  key <AD07> {   [ any,any,     downarrow,           uparrow 	 ]   }; // u
173  key <AD08> {   [ any,any,     rightarrow,          idotless 	 ]   }; // i
174  key <AD09> {   [ any,any,     oslash,              Ooblique 	 ]   }; // o // ALPHABETIC
175  key <AD10> {   [ any,any,     thorn,               THORN 	 ]   }; // p // ALPHABETIC
176  key <AD11> {   [ any,any,     division,            dead_abovering ]   }; // [
177  key <AD12> {   [ any,any,     multiply,            dead_macron ]   }; // ]
178
179  key <AC01> {   [ any,any,     ae,            	     AE               ]   }; // a // ALPHABETIC
180  key <AC02> {   [ any,any,     doublelowquotemark,  guillemotright   ]   }; // s
181  key <AC03> {   [ any,any,     leftdoublequotemark, guillemotleft    ]   }; // d
182  key <AC04> {   [ any,any,     bracketleft,         ordfeminine      ]   }; // f
183  key <AC05> {   [ any,any,     bracketright,        ENG 	      ]   }; // g
184  key <AC06> {   [ any,any,     hstroke,             Hstroke 	      ]   }; // h // ALPHABETIC
185  key <AC07> {   [ any,any,     NoSymbol,            NoSymbol 	      ]   }; // j
186  key <AC08> {   [ any,any,     lstroke,             ampersand 	      ]   }; // k
187  key <AC09> {   [ any,any,     lstroke,             Lstroke 	      ]   }; // l
188  key <AC10> {   [ any,any,     dead_acute,          dead_doubleacute ]   }; // ;
189  key <AC11> {   [ any,any,     ssharp,              dead_caron       ]   }; // '
190  key <BKSL> {   [ any,any,     currency,            dead_breve       ]   }; // \
191
192  key <AB01> {   [ any,any,     leftsinglequotemark, guillemotright   ]   }; // z
193  key <AB02> {   [ any,any,     rightsinglequotemark,guillemotleft    ]   }; // x
194  key <AB03> {   [ any,any,     cent,                copyright 	      ]   }; // c
195  key <AB04> {   [ any,any,     at,                  grave 	      ]   }; // v
196  key <AB05> {   [ any,any,     braceleft,           apostrophe       ]   }; // b
197  key <AB06> {   [ any,any,     braceright,          braceright       ]   }; // n
198  key <AB07> {   [ any,any,     asciicircum,         masculine 	      ]   }; // m
199  key <AB08> {   [ any,any,     less,                multiply 	      ]   }; // , <
200  key <AB09> {   [ any,any,     greater,             division 	      ]   }; // . >
201  key <AB10> {   [ any,any,     emdash,              endash   	      ]   }; // / ?
202
203};
204
205partial hidden alphanumeric_keys
206xkb_symbols "cyrlevel3" {
207  key <TLDE> {   [ any,any,     degree,              notsign          ]   }; // ` ~
208  key <AE03> {   [ any,any,     dead_circumflex,     NoSymbol         ]   }; // 3 #
209  key <AE07> {   [ any,any,     dead_grave,          NoSymbol         ]   }; // 7 &
210  key <AE08> {   [ any,any,     dead_doublegrave,    NoSymbol         ]   }; // 8 *
211  key <AE09> {   [ any,any,     dead_acute,          NoSymbol         ]   }; // 9 (
212  key <AE10> {   [ any,any,     dead_invertedbreve,  NoSymbol         ]   }; // 0 )
213  key <AE11> {   [ any,any,     dead_macron,         NoSymbol         ]   }; // - _
214
215  key <AD01> {   [ any,any,     backslash,           NoSymbol         ]   }; // q
216  key <AD02> {   [ any,any,     bar,                 NoSymbol         ]   }; // w
217  key <AD03> {   [ any,any,     EuroSign,            sterling         ]   }; // e
218  key <AD04> {   [ any,any,     paragraph,           registered       ]   }; // r
219  key <AD05> {   [ any,any,     ellipsis,            NoSymbol         ]   }; // t // ALPHABETIC
220  key <AD06> {   [ any,any,     leftarrow,           yen              ]   }; // y
221  key <AD07> {   [ any,any,     downarrow,           uparrow          ]   }; // u
222  key <AD08> {   [ any,any,     rightarrow,          NoSymbol         ]   }; // i
223  key <AD09> {   [ any,any,     section,             NoSymbol         ]   }; // o // ALPHABETIC
224  key <AD11> {   [ any,any,     division,            NoSymbol         ]   }; // [
225  key <AD12> {   [ any,any,     multiply,            NoSymbol         ]   }; // ]
226
227  key <AC02> {   [ any,any,     doublelowquotemark,  guillemotright   ]   }; // s
228  key <AC03> {   [ any,any,     leftdoublequotemark, guillemotleft    ]   }; // d
229  key <AC04> {   [ any,any,     bracketleft,         NoSymbol         ]   }; // f
230  key <AC05> {   [ any,any,     bracketright,        NoSymbol         ]   }; // g
231  key <BKSL> {   [ any,any,     currency,            NoSymbol         ]   }; // \
232
233  key <AB01> {   [ any,any,     leftsinglequotemark, NoSymbol         ]   }; // z
234  key <AB02> {   [ any,any,     rightsinglequotemark,NoSymbol         ]   }; // x
235  key <AB03> {   [ any,any,     cent,                copyright        ]   }; // c
236  key <AB04> {   [ any,any,     at,                  NoSymbol         ]   }; // v
237  key <AB05> {   [ any,any,     braceleft,           NoSymbol         ]   }; // b
238  key <AB06> {   [ any,any,     braceright,          NoSymbol         ]   }; // n
239  key <AB07> {   [ any,any,     asciicircum,         NoSymbol         ]   }; // m
240  key <AB08> {   [ any,any,     less,                NoSymbol         ]   }; // , <
241  key <AB09> {   [ any,any,     greater,             NoSymbol         ]   }; // . >
242  key <AB10> {   [ any,any,     emdash,              endash           ]   }; // / ?
243};
244
245partial alphanumeric_keys
246xkb_symbols "latinunicode" {
247  // This mapping supports the Unicode characters 0x1c4-0x1cc (dz, lj, and nj
248  // as single character). You get the title form with AltGr+Shift.
249
250  name[Group1]= "Serbian (Latin Unicode)";
251
252  include "rs(latin)"
253  include "rs(twoletter)"
254};
255
256partial alphanumeric_keys
257xkb_symbols "latinyz" {
258  // For those who insist on using "english-position" Z and Y.
259
260  name[Group1]= "Serbian (Latin qwerty)";
261
262  include "rs(latin)"
263
264  key <AD06> {   [ y,                   Y,             any,any ]   }; // y
265  key <AB01> {   [ z,                   Z,             any,any ]   }; // z
266};
267
268partial alphanumeric_keys
269xkb_symbols "latinunicodeyz" {
270  // Unicode, ZHE and Z swapped.
271
272  name[Group1]= "Serbian (Latin Unicode qwerty)";
273
274  include "rs(latinunicode)"
275
276  key <AD06> {   [ zcaron,              Zcaron,        any,any ]   }; // y
277  key <AB01> {   [ z,                   Z,             any,any ]   }; // z
278};
279
280xkb_symbols "alternatequotes" {
281  // Another acceptable »pair of quotes« for Serbian 
282
283  name[Group1]= "Serbian (Cyrillic with guillemets)";
284
285  include "rs(basic)"
286
287  key <AC02> {   [ any,any,     guillemotright, NoSymbol ]   }; // s
288  key <AC03> {   [ any,any,     guillemotleft,  NoSymbol ]   }; // d
289};
290
291xkb_symbols "latinalternatequotes" {
292  // Another acceptable »pair of quotes« for Serbian 
293
294  name[Group1]= "Serbian (Latin with guillemets)";
295
296  include "rs(latin)"
297
298  key <AC02> {   [ any,any,     guillemotright, NoSymbol ]   }; // s
299  key <AC03> {   [ any,any,     guillemotleft,  NoSymbol ]   }; // d
300};
301
302xkb_symbols "rue" {
303  // Homophonic layout for Pannonian Rusyn (spoken mainly in Serbia and
304  // Croatia by the Rusyn people), based on Ukrainian homophonic.
305  // Author: Ljubomir J. Papuga (Любомир Я. Папуґа) <papuga.rs@gmail.com>
306
307  name[Group1]= "Pannonian Rusyn (homophonic)";
308
309  include "ua(homophonic)"
310
311  key <TLDE> { [ grave, asciitilde ] };
312  key <AE03> { [ 3, doublelowquotemark ] };
313  key <AE04> { [ 4, rightdoublequotemark ] };
314  key <AE07> { [ 7, EuroSign ] };
315  key <AE11> { [ 0x002D, emdash ] };
316  key <AE12> { [ equal, plus ] };
317
318  key <AD02> { [ Ukrainian_ie, Ukrainian_IE ] };
319  key <AD06> { [ Cyrillic_yu, Cyrillic_YU ] };
320  key <AD08> { [ Cyrillic_i, Cyrillic_I ] };
321  key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
322  key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
323
324  key <LSGT> { [ Ukrainian_yi, Ukrainian_YI ] };
325  key <AB08> { [ comma, semicolon ] };
326  key <AB09> { [ period, colon ] };
327};
328
329// EXTRAS:
330
331xkb_symbols "combiningkeys" {
332  // Raw combining characters instead of dead keys,
333  // especially good for post-accenting texts.
334
335  name[Group1]= "Serbian (combining accents instead of dead keys)";
336
337  include "rs(basic)"
338
339  key <AE03> {   [ any,any,     U0302, dead_circumflex    ]   }; // 3, U0302 = COMBINING CIRCUMFLEX ACCENT
340  key <AE07> {   [ any,any,     U0300, NoSymbol           ]   }; // 7, U0300 = COMBINING GRAVE ACCENT
341  key <AE08> {   [ any,any,     U030F, NoSymbol           ]   }; // 8, U030F = COMBINING DOUBLE GRAVE ACCENT
342  key <AE09> {   [ any,any,     U0301, NoSymbol           ]   }; // 9, U0301 = COMBINING ACUTE ACCENT
343  key <AE10> {   [ any,any,     U0311, NoSymbol           ]   }; // 0, U0311 = COMBINING INVERTED BREVE
344  key <AE11> {   [ any,any,     U0304, NoSymbol           ]   }; // -, U0304 = COMBINING MACRON
345};
346