1// Irish keyboard map 2 3// Support for Irish (old and new orthography) and English 4// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (19 December 2002) 5 6// The general idea is to provide the characters in ISO 8859-1, 7// ISO 8859-15, ISO 8859-14, CP1252 and "Extended Latin-8". 8// However, not all are accessible directly because there aren't 9// enough keys; some need deadkeys to access them, others the 10// "Multi_key" compose sequences. 11 12// Designed to be similar to the layouts used on Windows 13// and the Macintosh. 14 15// Everything is in Group 1 to be compatible with the 16// multi-layout keyboard support in XFree86 4.3. 17 18// The basic layout is a modern keyboard, but dotted consonants are 19// accessible using a deadkey (AltGr+H or AltGr+W). 20// If a proper Clo Gaelach keyboard is needed, then use the layout 21// defined below as ie(CloGaelach), which gives dotted consonants 22// without use of a deadkey. 23 24 25default partial alphanumeric_keys 26xkb_symbols "basic" { 27 28 // Modern keyboard for Irish and English 29 // - acute-accented vowels as AltGr+vowel and AltGr+Shift+vowel 30 // - euro currency sign as AltGr+4 31 // - Comhartha Agus (Tironian Sign Et) as AltGr+Shift+7 32 // - non-breaking space as AltGr+Space and AltGr+Shift+Space 33 // - matches hardware (keys and engraved symbols) for Irish keyboards 34 35 name[Group1] = "Irish"; 36 37 // 38 // Numeric row `1234567890-= 39 // 40 key <TLDE> { [ grave, notsign, brokenbar, NoSymbol ] }; 41 key <AE01> { [ 1, exclam, exclamdown, onesuperior ] }; 42 key <AE02> { [ 2, quotedbl, trademark, twosuperior ] }; 43 key <AE03> { [ 3, sterling, copyright, threesuperior ] }; 44 key <AE04> { [ 4, dollar, EuroSign, cent ] }; 45 key <AE05> { [ 5, percent, section, dagger ] }; 46 key <AE06> { [ 6, asciicircum, dead_circumflex, 0x1002030 ] }; 47 // per thousand 48 key <AE07> { [ 7, ampersand, paragraph, 0x100204A ] }; 49 // Tironian Et 50 key <AE08> { [ 8, asterisk, dead_diaeresis, enfilledcircbullet ] }; 51 key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] }; 52 key <AE10> { [ 0, parenright, masculine, degree ] }; 53 key <AE11> { [ minus, underscore, endash, emdash ] }; 54 key <AE12> { [ equal, plus, notequal, plusminus ] }; 55 56 // 57 // QWERTYUIOP[] 58 // 59 key <AD01> { [ q, Q, oe, OE ] }; 60 key <AD02> { [ w, W, dead_abovedot, dead_abovedot ] }; 61 key <AD03> { [ e, E, eacute, Eacute ] }; 62 key <AD04> { [ r, R, registered, 0x1002030 ] }; 63 // per thousand 64 key <AD05> { [ t, T, thorn, THORN ] }; 65 key <AD06> { [ y, Y, yen, mu ] }; 66 key <AD07> { [ u, U, uacute, Uacute ] }; 67 key <AD08> { [ i, I, iacute, Iacute ] }; 68 key <AD09> { [ o, O, oacute, Oacute ] }; 69 key <AD10> { [ p, P, singlelowquotemark, NoSymbol ] }; 70 key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] }; 71 key <AD12> { [ bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] }; 72 73 // 74 // ASDFGHJKL;'# 75 // 76 key <AC01> { [ a, A, aacute, Aacute ] }; 77 key <AC02> { [ s, S, ssharp, NoSymbol ] }; 78 key <AC03> { [ d, D, eth, ETH ] }; 79 key <AC04> { [ f, F, 0x1000192, NoSymbol ] }; 80 // f with hook 81 key <AC05> { [ g, G, copyright, NoSymbol ] }; 82 key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] }; 83 key <AC07> { [ j, J, idotless, onequarter ] }; 84 key <AC08> { [ k, K, dead_abovering, onehalf ] }; 85 key <AC09> { [ l, L, acute, threequarters ] }; 86 key <AC10> { [ semicolon, colon, ellipsis, doubledagger ] }; 87 key <AC11> { [ apostrophe, at, ae, AE ] }; 88 key <BKSL> { [ numbersign, asciitilde, guillemotleft, guillemotright ] }; 89 90 91 // 92 // \ZXCVBNM,./ 93 // 94 key <LSGT> { [ backslash, bar, dead_grave, dead_acute ] }; 95 key <AB01> { [ z, Z, leftanglebracket, rightanglebracket ] }; 96 key <AB02> { [ x, X, multiply, approximate ] }; 97 key <AB03> { [ c, C, dead_cedilla, cedilla ] }; 98 key <AB04> { [ v, V, dead_caron, NoSymbol ] }; 99 key <AB05> { [ b, B, diaeresis, NoSymbol ] }; 100 key <AB06> { [ n, N, dead_tilde, NoSymbol ] }; 101 key <AB07> { [ m, M, macron, NoSymbol ] }; 102 key <AB08> { [ comma, less, lessthanequal, doublelowquotemark ] }; 103 key <AB09> { [ period, greater, greaterthanequal, singlelowquotemark ] }; 104 key <AB10> { [ slash, question, division, questiondown ] }; 105 106 107 key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; 108 109 include "level3(ralt_switch)" 110 111 // NB: putting Shift+<RALT> as Multi_key gives odd behaviour since the 112 // order of pressing keys affects the result. 113 114 include "compose(rwin)" 115}; 116 117partial alphanumeric_keys 118xkb_symbols "CloGaelach" { 119 120 // Adds support for Clo Gaelach (old orthography for Irish). 121 // Changes from "basic": 122 // - dotted consonants as AltGr+consonant or AltGr+Shift+consonant (TPSDFGCBM) 123 // - long lowercase r as AltGr+R 124 // - long lowercase s as AltGr+Z 125 // - long lowercase s dotted as AltGr+Shift+Z 126 // - some symbols moved around to retain them 127 // - several characters unlikely to be used are lost 128 // The long letters are needed only where the font provides 129 // both the long and short forms as different glyphs. 130 131 include "ie(basic)" 132 133 name[Group1] = "CloGaelach"; 134 135 key <TLDE> { [ grave, notsign, brokenbar, ssharp ] }; 136 key <AD04> { [ r, R, 0x100027C, registered ] }; 137 // long r 138 key <AD05> { [ t, T, tabovedot, Tabovedot ] }; 139 key <AD10> { [ p, P, pabovedot, Pabovedot ] }; 140 141 key <AC02> { [ s, S, sabovedot, Sabovedot ] }; 142 key <AC03> { [ d, D, dabovedot, Dabovedot ] }; 143 key <AC04> { [ f, F, fabovedot, Fabovedot ] }; 144 key <AC05> { [ g, G, gabovedot, Gabovedot ] }; 145 146 key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] }; 147 // long s, long s dot 148 key <AB03> { [ c, C, cabovedot, Cabovedot ] }; 149 key <AB05> { [ b, B, babovedot, Babovedot ] }; 150 key <AB07> { [ m, M, mabovedot, Mabovedot ] }; 151 152 key <LSGT> { [ backslash, bar, dead_grave, dead_cedilla ] }; 153}; 154 155partial alphanumeric_keys 156xkb_symbols "UnicodeExpert" { 157 158// This should eventually be a "Unicode Expert" layout like the Mac one. 159 160 name[Group1] = "Irish (UnicodeExpert)"; 161 162 // 163 // Numeric row `1234567890-= 164 // 165 key <TLDE> { [ grave, notsign, 0x10000A6, 0x10000A6 ] }; 166 // broken bar 167 key <AE01> { [ 1, exclam, NoSymbol, NoSymbol ] }; 168 key <AE02> { [ 2, quotedbl, dead_doubleacute, dead_doubleacute ] }; 169 key <AE03> { [ 3, sterling, NoSymbol, NoSymbol ] }; 170 key <AE04> { [ 4, dollar, EuroSign, EuroSign ] }; 171 key <AE05> { [ 5, percent, NoSymbol, NoSymbol ] }; 172 key <AE06> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; 173 key <AE07> { [ 7, ampersand, 0x100204A, 0x100204A ] }; 174 // Tironian Et 175 key <AE08> { [ 8, asterisk, dead_abovering, dead_abovering ] }; 176 key <AE09> { [ 9, parenleft, dead_breve, dead_breve ] }; 177 key <AE10> { [ 0, parenright, dead_ogonek, dead_ogonek ] }; 178 key <AE11> { [ minus, underscore, dead_macron, dead_macron ] }; 179 key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] }; 180 181 // 182 // QWERTYUIOP[] 183 // 184 key <AD01> { [ q, Q, NoSymbol, NoSymbol ] }; 185 key <AD02> { [ w, W, NoSymbol, NoSymbol ] }; 186 key <AD03> { [ e, E, eacute, Eacute ] }; 187 key <AD04> { [ r, R, 0x100027C, 0x100027C ] }; 188 // long r 189 key <AD05> { [ t, T, NoSymbol, NoSymbol ] }; 190 key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; 191 key <AD07> { [ u, U, uacute, Uacute ] }; 192 key <AD08> { [ i, I, iacute, Iacute ] }; 193 key <AD09> { [ o, O, oacute, Oacute ] }; 194 key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; 195 key <AD11> { [ bracketleft, braceleft, dead_hook, dead_hook ] }; 196 key <AD12> { [ bracketright, braceright, dead_horn, dead_horn ] }; 197 198 // 199 // ASDFGHJKL;'# 200 // 201 key <AC01> { [ a, A, aacute, Aacute ] }; 202 key <AC02> { [ s, S, NoSymbol, NoSymbol ] }; 203 key <AC03> { [ d, D, NoSymbol, NoSymbol ] }; 204 key <AC04> { [ f, F, NoSymbol, NoSymbol ] }; 205 key <AC05> { [ g, G, NoSymbol, NoSymbol ] }; 206 key <AC06> { [ h, H, dead_abovedot, dead_abovedot ] }; 207 key <AC07> { [ j, J, NoSymbol, NoSymbol ] }; 208 key <AC08> { [ k, K, NoSymbol, NoSymbol ] }; 209 key <AC09> { [ l, L, NoSymbol, NoSymbol ] }; 210 key <AC10> { [ semicolon, colon, dead_diaeresis, dead_diaeresis ] }; 211 key <AC11> { [ apostrophe, at, dead_acute, dead_acute ] }; 212 key <BKSL> { [ numbersign, asciitilde, dead_tilde, dead_tilde ] }; 213 214 // 215 // \ZXCVBNM,./ 216 // 217 key <LSGT> { [ backslash, bar, dead_grave, dead_grave ] }; 218 key <AB01> { [ z, Z, 0x100017F, 0x1001E9B ] }; 219 // long s, long s dot 220 key <AB02> { [ x, X, NoSymbol, NoSymbol ] }; 221 key <AB03> { [ c, C, NoSymbol, NoSymbol ] }; 222 key <AB04> { [ v, V, dead_caron, dead_caron ] }; 223 key <AB05> { [ b, B, NoSymbol, NoSymbol ] }; 224 key <AB06> { [ n, N, NoSymbol, NoSymbol ] }; 225 key <AB07> { [ m, M, NoSymbol, NoSymbol ] }; 226 key <AB08> { [ comma, less, dead_cedilla, dead_cedilla ] }; 227 key <AB09> { [ period, greater, dead_abovedot, dead_abovedot ] }; 228 key <AB10> { [ slash, question, dead_belowdot, dead_belowdot ] }; 229 230 key <SPCE> { [ space, space, space, nobreakspace ] }; 231 232 include "level3(ralt_switch)" 233 234 include "compose(rwin)" 235}; 236 237// 238// Ogham keyboard map for XFree86 239// 240// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (17 December 2002) 241// 242// Ogham keyboard layout as recommended in I.S. 434:1999. 243// Suitable for multi-layout xkbcomp. 244// Character names are given as in the Unicode standard, 245// range U+1680 to U+169F. 246 247partial alphanumeric_keys 248xkb_symbols "ogam" { 249 250 name[Group1] = "Ogham"; 251 252 key.type[Group1] = "ONE_LEVEL"; 253 254 key <LSGT> { type[Group1]="TWO_LEVEL", 255 [ 0x100169B, 0x100169C ] }; 256 // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK 257 258 key <BKSL> { [ 0x1001680 ] }; // OGHAM SPACE MARK 259 260 key <TLDE> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK 261 262 key <SPCE> { [ space ] }; 263 264 // 265 // Top Row QWERTYUIOP 266 // 267 key <AD01> { [ 0x100168A ] }; // OGHAM LETTER CEIRT 268 key <AD02> { [ 0x1001695 ] }; // OGHAM LETTER EABHADH 269 key <AD03> { [ 0x1001693 ] }; // OGHAM LETTER EADHADH 270 key <AD04> { [ 0x100168F ] }; // OGHAM LETTER RUIS 271 key <AD05> { [ 0x1001688 ] }; // OGHAM LETTER TINNE 272 key <AD06> { [ 0x1001698 ] }; // OGHAM LETTER IFIN 273 key <AD07> { [ 0x1001692 ] }; // OGHAM LETTER UR 274 key <AD08> { [ 0x1001694 ] }; // OGHAM LETTER IODHADH 275 key <AD09> { [ 0x1001691 ] }; // OGHAM LETTER ONN 276 key <AD10> { [ 0x100169A ] }; // OGHAM LETTER PEITH 277 278 // 279 // Middle Row ASDFGHJKL 280 // 281 key <AC01> { [ 0x1001690 ] }; // OGHAM LETTER AILM 282 key <AC02> { [ 0x1001684 ] }; // OGHAM LETTER SAIL 283 key <AC03> { [ 0x1001687 ] }; // OGHAM LETTER DAIR 284 key <AC04> { [ 0x1001683 ] }; // OGHAM LETTER FEARN 285 key <AC05> { [ 0x100168C ] }; // OGHAM LETTER GORT 286 key <AC06> { [ 0x1001686 ] }; // OGHAM LETTER UATH 287 key <AC07> { [ 0x1001697 ] }; // OGHAM LETTER UILLEANN 288 key <AC08> { [ 0x1001696 ] }; // OGHAM LETTER OR 289 key <AC09> { [ 0x1001682 ] }; // OGHAM LETTER LUIS 290 291 // 292 // Bottom Row ZXCVBNM 293 // 294 key <AB01> { [ 0x100168E ] }; // OGHAM LETTER STRAIF 295 key <AB02> { [ 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL 296 key <AB03> { [ 0x1001689 ] }; // OGHAM LETTER COLL 297 key <AB04> { [ 0x100168D ] }; // OGHAM LETTER NGEADAL 298 key <AB05> { [ 0x1001681 ] }; // OGHAM LETTER BEITH 299 key <AB06> { [ 0x1001685 ] }; // OGHAM LETTER NION 300 key <AB07> { [ 0x100168B ] }; // OGHAM LETTER MUIN 301 302 // As an extension because <BKSL> and <LSGT> may not be 303 // available or sensible. These are also a bit more 304 // intuitive on a standard Irish keyboard. 305 key <AB08> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK 306 key <AB09> { [ 0x100169B ] }; // OGHAM FEATHER MARK 307 key <AB10> { [ 0x1001680 ] }; // OGHAM SPACE MARK 308 309 include "compose(rwin)" 310}; 311 312partial alphanumeric_keys 313xkb_symbols "ogam_is434" { 314 315 // This has the full layout of IS434 with an Irish QWERTY keyboard, 316 // and the Ogham characters accessed when CAPS LOCK is on. 317 318 name[Group1] = "Ogham (IS434)"; 319 320 key.type[Group1] = "THREE_LEVEL"; 321 322 key <LSGT> { type[Group1] = "FOUR_LEVEL_ALPHABETIC", 323 [ backslash, bar, 0x100169B, 0x100169C ] }; 324 // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK 325 326 key <BKSL> { [ numbersign, asciitilde, 0x1001680 ] }; // OGHAM SPACE MARK 327 key <TLDE> { [ grave, notsign, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK 328 key <SPCE> { [ space, space, space ] }; 329 330 // 331 // Numeric row 332 // 333 key <AE01> { type[Group1]="TWO_LEVEL", [ 1, exclam ] }; 334 key <AE02> { type[Group1]="TWO_LEVEL", [ 2, quotedbl ] }; 335 key <AE03> { type[Group1]="TWO_LEVEL", [ 3, sterling ] }; 336 key <AE04> { [ 4, dollar, EuroSign ] }; 337 key <AE05> { type[Group1]="TWO_LEVEL", [ 5, percent ] }; 338 key <AE06> { type[Group1]="TWO_LEVEL", [ 6, asciicircum ] }; 339 key <AE07> { [ 7, ampersand, 0x100204A ] }; // Tironian Et 340 key <AE08> { type[Group1]="TWO_LEVEL", [ 8, asterisk ] }; 341 key <AE09> { type[Group1]="TWO_LEVEL", [ 9, parenleft ] }; 342 key <AE10> { type[Group1]="TWO_LEVEL", [ 0, parenright ] }; 343 key <AE11> { type[Group1]="TWO_LEVEL", [ minus, underscore ] }; 344 key <AE12> { type[Group1]="TWO_LEVEL", [ equal, plus ] }; 345 346 // 347 // Top Row QWERTYUIOP 348 // 349 key <AD01> { [ q, Q, 0x100168A ] }; // OGHAM LETTER CEIRT 350 key <AD02> { [ w, W, 0x1001695 ] }; // OGHAM LETTER EABHADH 351 key <AD03> { [ e, E, 0x1001693 ] }; // OGHAM LETTER EADHADH 352 key <AD04> { [ r, R, 0x100168F ] }; // OGHAM LETTER RUIS 353 key <AD05> { [ t, T, 0x1001688 ] }; // OGHAM LETTER TINNE 354 key <AD06> { [ y, Y, 0x1001698 ] }; // OGHAM LETTER IFIN 355 key <AD07> { [ u, U, 0x1001692 ] }; // OGHAM LETTER UR 356 key <AD08> { [ i, I, 0x1001694 ] }; // OGHAM LETTER IODHADH 357 key <AD09> { [ o, O, 0x1001691 ] }; // OGHAM LETTER ONN 358 key <AD10> { [ p, P, 0x100169A ] }; // OGHAM LETTER PEITH 359 360 // 361 // Middle Row ASDFGHJKL 362 // 363 key <AC01> { [ a, A, 0x1001690 ] }; // OGHAM LETTER AILM 364 key <AC02> { [ s, S, 0x1001684 ] }; // OGHAM LETTER SAIL 365 key <AC03> { [ d, D, 0x1001687 ] }; // OGHAM LETTER DAIR 366 key <AC04> { [ f, F, 0x1001683 ] }; // OGHAM LETTER FEARN 367 key <AC05> { [ g, G, 0x100168C ] }; // OGHAM LETTER GORT 368 key <AC06> { [ h, H, 0x1001686 ] }; // OGHAM LETTER UATH 369 key <AC07> { [ j, J, 0x1001697 ] }; // OGHAM LETTER UILLEANN 370 key <AC08> { [ k, K, 0x1001696 ] }; // OGHAM LETTER OR 371 key <AC09> { [ l, L, 0x1001682 ] }; // OGHAM LETTER LUIS 372 373 // 374 // Bottom Row ZXCVBNM 375 // 376 key <AB01> { [ z, Z, 0x100168E ] }; // OGHAM LETTER STRAIF 377 key <AB02> { [ x, X, 0x1001699 ] }; // OGHAM LETTER EAMHANCHOLL 378 key <AB03> { [ c, C, 0x1001689 ] }; // OGHAM LETTER COLL 379 key <AB04> { [ v, V, 0x100168D ] }; // OGHAM LETTER NGEADAL 380 key <AB05> { [ b, B, 0x1001681 ] }; // OGHAM LETTER BEITH 381 key <AB06> { [ n, N, 0x1001685 ] }; // OGHAM LETTER NION 382 key <AB07> { [ m, M, 0x100168B ] }; // OGHAM LETTER MUIN 383 384 // As an extension because <BKSL> and <LSGT> may not be 385 // available or sensible. These are also a bit more 386 // intuitive on a standard Irish keyboard. 387 key <AB08> { [ comma, less, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK 388 key <AB09> { [ period, greater, 0x100169B ] }; // OGHAM FEATHER MARK 389 key <AB10> { [ slash, question, 0x1001680 ] }; // OGHAM SPACE MARK 390 391 // The standard says the Ogham characters should be accessed when 392 // Caps Lock is down; not clear if this means it should lock but 393 // seems logical. 394 395 key <CAPS> { type[Group1] = "ONE_LEVEL", [ ISO_Level3_Lock ] }; 396 397 // Also allow access to Ogham characters using RALT for convenience 398 include "level3(ralt_switch)" 399 400 // Redefine Scroll Lock as locking shift in case that's needed. 401 // Also overcomes annoying use of Scroll Lock LED inherited from 402 // US symbols but not relevant here since we're not changing group. 403 key <SCLK> {type[Group1] = "ONE_LEVEL", [ Shift_Lock ] }; 404 modifier_map Shift { Shift_Lock }; 405 406 include "compose(rwin)" 407}; 408