// $XFree86: xc/programs/xkbcomp/symbols/pc/ogham,v 1.3 2002/12/31 02:07:04 dawes Exp $
//
// Ogham keyboard map for XFree86
//
// Seamus O Ciardhuain <seoc@cnds.ucd.ie> (17 December 2002)
//
// Ogham keyboard layout as recommended in I.S. 434:1999.
// Suitable for multi-layout xkbcomp.
// Character names are given as in the Unicode standard,
// range U+1680 to U+169F.


default partial alphanumeric_keys
xkb_symbols "basic" {

    name[Group1] = "Ogham";

    key.type[Group1] = "ONE_LEVEL";

    key <LSGT> { type[Group1]="TWO_LEVEL",
                 [ 0x100169B, 0x100169C ] };
                 // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK

    key <BKSL> { [ 0x1001680 ] }; // OGHAM SPACE MARK

    key <TLDE> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK

    key <SPCE> { [ space ] };

    //
    // Top Row QWERTYUIOP
    //
    key <AD01> { [ 0x100168A ] };  // OGHAM LETTER CEIRT
    key <AD02> { [ 0x1001695 ] };  // OGHAM LETTER EABHADH
    key <AD03> { [ 0x1001693 ] };  // OGHAM LETTER EADHADH
    key <AD04> { [ 0x100168F ] };  // OGHAM LETTER RUIS
    key <AD05> { [ 0x1001688 ] };  // OGHAM LETTER TINNE
    key <AD06> { [ 0x1001698 ] };  // OGHAM LETTER IFIN
    key <AD07> { [ 0x1001692 ] };  // OGHAM LETTER UR
    key <AD08> { [ 0x1001694 ] };  // OGHAM LETTER IODHADH
    key <AD09> { [ 0x1001691 ] };  // OGHAM LETTER ONN
    key <AD10> { [ 0x100169A ] };  // OGHAM LETTER PEITH

    //
    // Middle Row ASDFGHJKL
    //
    key <AC01> { [ 0x1001690 ] };  // OGHAM LETTER AILM
    key <AC02> { [ 0x1001684 ] };  // OGHAM LETTER SAIL
    key <AC03> { [ 0x1001687 ] };  // OGHAM LETTER DAIR
    key <AC04> { [ 0x1001683 ] };  // OGHAM LETTER FEARN
    key <AC05> { [ 0x100168C ] };  // OGHAM LETTER GORT
    key <AC06> { [ 0x1001686 ] };  // OGHAM LETTER UATH
    key <AC07> { [ 0x1001697 ] };  // OGHAM LETTER UILLEANN
    key <AC08> { [ 0x1001696 ] };  // OGHAM LETTER OR
    key <AC09> { [ 0x1001682 ] };  // OGHAM LETTER LUIS

    //
    // Bottom Row ZXCVBNM
    //
    key <AB01> { [ 0x100168E ] };  // OGHAM LETTER STRAIF
    key <AB02> { [ 0x1001699 ] };  // OGHAM LETTER EAMHANCHOLL
    key <AB03> { [ 0x1001689 ] };  // OGHAM LETTER COLL
    key <AB04> { [ 0x100168D ] };  // OGHAM LETTER NGEADAL
    key <AB05> { [ 0x1001681 ] };  // OGHAM LETTER BEITH
    key <AB06> { [ 0x1001685 ] };  // OGHAM LETTER NION
    key <AB07> { [ 0x100168B ] };  // OGHAM LETTER MUIN

    // As an extension because <BKSL> and <LSGT> may not be
    // available or sensible. These are also a bit more
    // intuitive on a standard Irish keyboard.
    key <AB08> { [ 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
    key <AB09> { [ 0x100169B ] }; // OGHAM FEATHER MARK
    key <AB10> { [ 0x1001680 ] }; // OGHAM SPACE MARK

    key <RWIN>  { type[Group1]="TWO_LEVEL", [ Multi_key, ISO_Next_Group ]  };

};

partial alphanumeric_keys
xkb_symbols "laptop" {
    // For laptops which don't have the RWIN key but are otherwise
    // the same as 105-key layouts.
    include "ogham(basic)"
    key <MENU>  { type[Group1]="TWO_LEVEL", [ Multi_key, ISO_Next_Group ]  };
};


partial alphanumeric_keys
xkb_symbols "is434" {

    // This has the full layout of IS434 with an Irish QWERTY keyboard,
    // and the Ogham characters accessed when CAPS LOCK is on.

    name[Group1] = "Ogham (IS434)";

    key.type[Group1] = "THREE_LEVEL";

    key <LSGT> { type[Group1] = "FOUR_LEVEL_ALPHABETIC",
                 [ backslash, bar, 0x100169B, 0x100169C ] };
                 // OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK

    key <BKSL> { [ numbersign, asciitilde, 0x1001680 ] }; // OGHAM SPACE MARK
    key <TLDE> { [      grave,    notsign, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
    key <SPCE> { [      space,      space,     space ] };

    //
    // Numeric row
    //
    key <AE01> { type[Group1]="TWO_LEVEL", [     1,      exclam            ] };
    key <AE02> { type[Group1]="TWO_LEVEL", [     2,    quotedbl            ] };
    key <AE03> { type[Group1]="TWO_LEVEL", [     3,    sterling            ] };
    key <AE04> {                           [     4,      dollar,  EuroSign ] };
    key <AE05> { type[Group1]="TWO_LEVEL", [     5,     percent            ] };
    key <AE06> { type[Group1]="TWO_LEVEL", [     6, asciicircum            ] };
    key <AE07> {                           [     7,   ampersand, 0x100204A ] }; // Tironian Et
    key <AE08> { type[Group1]="TWO_LEVEL", [     8,    asterisk            ] };
    key <AE09> { type[Group1]="TWO_LEVEL", [     9,   parenleft            ] };
    key <AE10> { type[Group1]="TWO_LEVEL", [     0,  parenright            ] };
    key <AE11> { type[Group1]="TWO_LEVEL", [ minus,  underscore            ] };
    key <AE12> { type[Group1]="TWO_LEVEL", [ equal,        plus            ] };

    //
    // Top Row QWERTYUIOP
    //
    key <AD01> { [ q, Q, 0x100168A ] };  // OGHAM LETTER CEIRT
    key <AD02> { [ w, W, 0x1001695 ] };  // OGHAM LETTER EABHADH
    key <AD03> { [ e, E, 0x1001693 ] };  // OGHAM LETTER EADHADH
    key <AD04> { [ r, R, 0x100168F ] };  // OGHAM LETTER RUIS
    key <AD05> { [ t, T, 0x1001688 ] };  // OGHAM LETTER TINNE
    key <AD06> { [ y, Y, 0x1001698 ] };  // OGHAM LETTER IFIN
    key <AD07> { [ u, U, 0x1001692 ] };  // OGHAM LETTER UR
    key <AD08> { [ i, I, 0x1001694 ] };  // OGHAM LETTER IODHADH
    key <AD09> { [ o, O, 0x1001691 ] };  // OGHAM LETTER ONN
    key <AD10> { [ p, P, 0x100169A ] };  // OGHAM LETTER PEITH

    //
    // Middle Row ASDFGHJKL
    //
    key <AC01> { [ a, A, 0x1001690 ] };  // OGHAM LETTER AILM
    key <AC02> { [ s, S, 0x1001684 ] };  // OGHAM LETTER SAIL
    key <AC03> { [ d, D, 0x1001687 ] };  // OGHAM LETTER DAIR
    key <AC04> { [ f, F, 0x1001683 ] };  // OGHAM LETTER FEARN
    key <AC05> { [ g, G, 0x100168C ] };  // OGHAM LETTER GORT
    key <AC06> { [ h, H, 0x1001686 ] };  // OGHAM LETTER UATH
    key <AC07> { [ j, J, 0x1001697 ] };  // OGHAM LETTER UILLEANN
    key <AC08> { [ k, K, 0x1001696 ] };  // OGHAM LETTER OR
    key <AC09> { [ l, L, 0x1001682 ] };  // OGHAM LETTER LUIS

    //
    // Bottom Row ZXCVBNM
    //
    key <AB01> { [ z, Z, 0x100168E ] };  // OGHAM LETTER STRAIF
    key <AB02> { [ x, X, 0x1001699 ] };  // OGHAM LETTER EAMHANCHOLL
    key <AB03> { [ c, C, 0x1001689 ] };  // OGHAM LETTER COLL
    key <AB04> { [ v, V, 0x100168D ] };  // OGHAM LETTER NGEADAL
    key <AB05> { [ b, B, 0x1001681 ] };  // OGHAM LETTER BEITH
    key <AB06> { [ n, N, 0x1001685 ] };  // OGHAM LETTER NION
    key <AB07> { [ m, M, 0x100168B ] };  // OGHAM LETTER MUIN

    // As an extension because <BKSL> and <LSGT> may not be
    // available or sensible. These are also a bit more
    // intuitive on a standard Irish keyboard.
    key <AB08> { [  comma,     less, 0x100169C ] }; // OGHAM REVERSED FEATHER MARK
    key <AB09> { [ period,  greater, 0x100169B ] }; // OGHAM FEATHER MARK
    key <AB10> { [  slash, question, 0x1001680 ] }; // OGHAM SPACE MARK

    // The standard says the Ogham characters should be accessed when
    // Caps Lock is down; not clear if this means it should lock but
    // seems logical.

    key <CAPS>  { type[Group1] = "ONE_LEVEL", [ ISO_Level3_Lock ] };

    // Also allow access to Ogham characters using RALT for convenience
    key <RALT>  { type[Group1] = "ONE_LEVEL", [ ISO_Level3_Shift ] };

    modifier_map Mod5  { ISO_Level3_Shift, ISO_Level3_Lock };

    // Redefine Scroll Lock as locking shift in case that's needed.
    // Also overcomes annoying use of Scroll Lock LED inherited from
    // US symbols but not relevant here since we're not changing group.
    key <SCLK> {type[Group1] = "ONE_LEVEL", [ Shift_Lock ] };
    modifier_map Shift { Shift_Lock }; 

    key <RWIN>  { type[Group1]="TWO_LEVEL", [ Multi_key, ISO_Next_Group ]  };
};

partial alphanumeric_keys
xkb_symbols "IS434" {
    // just has uppercase in the name
    include "ogham(is434)"
};

partial alphanumeric_keys
xkb_symbols "is434laptop" {
    // For laptops which don't have the RWIN key but are otherwise
    // the same as 105-key layouts.
    include "ogham(is434)"
    key <MENU>  { type[Group1]="TWO_LEVEL", [ Multi_key, ISO_Next_Group ]  };
};

partial alphanumeric_keys
xkb_symbols "IS434laptop" {
    // just has uppercase in the name
    include "ogham(is434)"
    key <MENU>  { type[Group1]="TWO_LEVEL", [ Multi_key, ISO_Next_Group ]  };
};
