// $XFree86: xc/programs/xkbcomp/geometry/macintosh,v 1.3 2003/08/09 14:30:47 pascal Exp $
//
// Some modifications (<eqdar@castalie.org>) :
// - Added a <LSGT> key
// - Fixed the shape of the <RTRN> key
// - Moved <BKSL> to the 'AC' row
// - Added a special Macintosh sysctl key
// - Minor changes (Function keys shape, LED position...)

// Minor changes
// - Mail address above is no longer valid
// - Changed {L,R}MTA to {L,R}WIN, which are defined
// 2005/10 -- Simon Vallet <svallet@gmail.com>

default xkb_geometry "macintosh" {

    description= "Apple Extended Keyboard II";
    width = 475;
    height = 194;

    shape.cornerRadius= 1;
    shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
    shape "TLDE" { { [ 23,18] }, { [2,1], [ 21,17] } };
    shape "BKSP" { { [ 33,18] }, { [2,1], [ 31,17] } };
    shape "TAB"  { { [ 33,18] }, { [2,1], [ 31,17] } };
    shape "RTRN" { 
        { [0,0],[23,0],[23,37],[4,37],[4,18],[0,18] }, 
        { [2,1],[21,1],[21,36],[6,36],[6,17],[2,17] } };
    shape "CAPS" { { [ 37,18] }, { [2,1], [ 35,17] } };
    shape "LCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
    shape "LALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
    shape "LMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
    shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
    shape "RCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
    shape "RALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
    shape "RMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
    shape "RTSH" { { [ 47,18] }, { [2,1], [ 45,17] } };
    shape "SPCE" { { [123,18] }, { [2,1], [121,17] } };
    shape "KP0"  { { [ 37,18] }, { [2,1], [ 35,17] } };
    shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
    // Macintosh keyboards have a special sysctl key at the top right
    shape "AAPL" { 
        { [ 0,0], [ 18,0], [ 18,18], [ 0,18] },
        { [ 1,1], [ 17,1], [ 17,17], [ 1,17] },
        { [ 8,5], [ 8,12], [  2,9] } };

    shape "LEDS" { cornerRadius = 0, { [ 55,19] } };
    shape "LED"  { cornerRadius = 0, { [  8, 2] } };

    solid "LedPanel" {
	shape= "LEDS";
        top = 48;
        left = 378;
    };

    indicator.onColor= "green";
    indicator.offColor= "green30";
    indicator.top = 50;
    indicator.shape= "LED";
    indicator "NumLock"    { left = 381; };
    indicator "CapsLock"   { left = 398; };
    indicator "ScrollLock" { left = 415; };
    text.top= 55;
    text.color= "black";
    text "NumLockLabel"    { left = 381; text = "Num\nLock";    };
    text "CapsLockLabel"   { left = 398; text = "Caps\nLock";   };
    text "ScrollLockLabel" { left = 415; text = "Scroll\nLock"; };

    section.left= 19;
    row.left= 1;
    key.shape= "NORM";
    key.gap=  1;

    section "Function" {
        top = 48;
	row {
	    top= 1;
            keys { <ESC>, 
                   { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
                   { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
                   { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
                   { <PRSC>, 10 }, <SCLK>, <PAUS>,
                   // This is the sysctl key on macintosh keyboards
                   // keycode is 222 with a 4.21 kernel, which is <I5E>
                   { <I5E>, "AAPL", 67 }
	    };
	};
    }; // End of "Function" section

    section "Alpha" {
        top = 87;
	row {
	    top= 1;
            keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>,
                   <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
		   <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
	    };
	};
	row {
	    top= 20;
	    keys { { <TAB>, "TAB" },  <AD01>, <AD02>, <AD03>,
                   <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
                   <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
	    };
	};
	row {
	    top= 39;
	    keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
                   <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
                   <AC10>, <AC11>, <BKSL>
	    };
	};
	row {
	    top= 58;
            keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
                   <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
                   <AB09>, <AB10>, { <RTSH>, "RTSH" }
	    };
	};
	row {
	    top= 77;
	    keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
                   { <LWIN>, "LMTA" },
                   { <SPCE>, "SPCE" }, 
                   { <RWIN>, "RMTA" },
	           { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
	    };
	};
    }; // End of "Alpha" section

    section "Editing" {
        top = 87;
        left = 314;
	row {
	    top= 1;
	    keys { <INS>, <HOME>, <PGUP> };
	};
        row {
	    top= 20;
	    keys { <DELE>, <END>, <PGDN> };
	};
	row {
	    top= 58;
	    left= 20;
	    keys { <UP> };
	};
	row {
	    top= 77;
	    keys { <LEFT>, <DOWN>, <RGHT> };
	};
    }; // End of "Editing" section

    // Begin of "Keypad" section
    section "Keypad" {
        top = 87;
        left = 380;
	row {
	    top= 1;
            keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
	};
	row {
	    top= 20;
	    keys { <KP7>, <KP8>, <KP9>, <KPSU> };
	};
	row {
	    top= 39;
	    keys { <KP4>, <KP5>, <KP6>, <KPAD> };
	};
	row {
	    top= 58;
	    keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
	};
	row {
	    top= 77;
	    keys { { <KP0>, "KP0" },  <KPDL> };
	};
    }; // End of "Keypad" section

}; // End of "default" geometry


// This section describes the geometry of the "Apple Pro" keyboard
// included with NewWorld desktop machines
//
// It adds four new keysyms, labeled SDDN, SDUP, SDNO, EJCT.
//
// 2005/10 -- Simon Vallet <svallet@gmail.com>

xkb_geometry "applepro" {

    description= "Apple Pro Keyboard";
    width = 455;
    height = 150;

    shape.cornerRadius= 1;
    shape "NORM" { { [ 18, 18] }, { [2, 1], [ 16, 15] } };
    shape "FUNC" { { [ 18, 21] }, { [2, 1], [ 16, 16] } };
    shape "BKSP" { { [ 38, 18] }, { [2, 1], [ 36, 15] } };
    shape "TAB"  { { [ 29, 18] }, { [2, 1], [ 26, 15] } };
    shape "LFSH" { { [ 28, 18] }, { [2, 1], [ 26, 15] } };
    shape "RTSH" { { [ 47, 18] }, { [2, 1], [ 45, 15] } };

    shape "RTRN" {
        { [0,0],[27,0],[27,37],[4,37],[4,18],[0,18] }, 
        { [2,1],[25,1],[25,34],[6,34],[6,15],[2,15] } };

    shape "CAPS" { { [ 32, 18] }, { [2, 1], [ 26, 15] } };
    shape "LCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
    shape "RCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
    shape "LALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
    shape "RALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
    shape "LMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
    shape "RMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
    shape "SPCE" { { [121, 20] }, { [3, 1], [118, 17] } };
    shape "BOTM" { { [ 18, 20] }, { [2, 1], [ 16, 17] } }; 

    shape "KP0"  { { [ 37, 20] }, { [2, 1], [ 35, 17] } };
    shape "KPEN" { { [ 18, 39] }, { [2, 1], [ 16, 36] } };

    section.left = 7;
    row.left = 1;
    key.gap =  1;
    key.shape = "NORM";

    section "Function" {
       key.shape = "FUNC";
        top = 26;
       row {
           top= 1;
            keys { <ESC>, 
                   { <FK01>, 14 }, <FK02>, <FK03>, <FK04>,
                   { <FK05>, 14 }, <FK06>, <FK07>, <FK08>,
                   { <FK09>, 14 }, <FK10>, <FK11>, <FK12>,
                   { <PRSC>, 11 }, <SCLK>, <PAUS>,
                  { <SDDN>, 11 }, <SDUP>, <SDNO>, <EJCT>
            };
       };
    }; // End of "Function" section


    section "Alpha" {
        top = 48;
       row {
           top= 1;
            keys { <TLDE>, <AE01>, <AE02>, <AE03>,
                   <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
                  <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
           };
       };
       row {
           top= 20;
           keys { { <TAB>, "TAB" },  <AD01>, <AD02>, <AD03>,
                   <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
                   <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
           };
       };
       row {
           top= 39;
           keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
                   <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
                   <AC10>, <AC11>, <BKSL>
           };
       };
       row {
           top= 58;
           keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
                   <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
                   <AB09>, <AB10>, { <RTSH>, "RTSH" }
           };
       };
       row {
           top= 77;
           keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
                       { <LWIN>, "LMTA" },
                       { <SPCE>, "SPCE" }, 
                       { <RWIN>, "RMTA" },
                       { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
           };
       };
    }; // End of "Alpha" section

    section "Editing" {
        top = 48;
        left = 303;
       row {
           top= 1;
           keys { <INS>, <HOME>, <PGUP> };
       };
        row {
           top= 20;
           keys { <DELE>, <END>, <PGDN> };
       };
       row {
           top= 58;
           left= 20;
           keys { <UP> };
       };
       row {
           top= 77;
           key.shape = "BOTM";
           keys { <LEFT>, <DOWN>, <RGHT> };
       };
    }; // End of "Editing" section

    // Begin of "Keypad" section
    section "Keypad" {
        top = 48;
        left = 370;
       row {
           top= 1;
            keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
       };
       row {
           top= 20;
           keys { <KP7>, <KP8>, <KP9>, <KPSU> };
       };
       row {
           top= 39;
           keys { <KP4>, <KP5>, <KP6>, <KPAD> };
       };
       row {
           top= 58;
           keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
       };
       row {
           top= 77;
           keys { { <KP0>, "KP0" },  { <KPDL>, "BOTM" } };
       };
    }; // End of "Keypad" section

}; // End of "applepro" geometry

xkb_geometry "macbook78" {

    description= "Apple Laptop 78-key (US)";
    width= 273;
    height= 110;

    shape.cornerRadius= 0;
    shape "ESC"  { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
    shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
    shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
    shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
    shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
    shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
    shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
    shape "BKSL" { { [ 17,18] }, cornerRadius=1, { [2,2], [17,16] } };
    shape "RTRN" { { [ 31,18] }, cornerRadius=1, { [2,2], [31,16] } };
    shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
    shape "LFSH" { { [ 40,18] }, cornerRadius=1, { [0,2], [ 38,16] } };
    shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
    shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
    shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
    shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };

    shape "LED"  { cornerRadius= 1, { [  2,  2 ] } };

    indicator.onColor= "green";
    indicator.offColor= "gray";
    indicator.shape= "LED";
    indicator "Num Lock"   { top=4; left= 119; };
    indicator "Caps Lock"  { top=53; left= 4; };

    section.left=0;
    row.left= 1;
    key.shape= "FUNC";
    key.gap= 1;
    section "Function" {
	top= 0;
	row {
	    top= 1;
	    keys {  {<ESC>, "ESC" },
		    <FK01>, <FK02>, <FK03>, <FK04>,
		    <FK05>, <FK06>, <FK07>, <FK08>,
		    <FK09>, <FK10>, <FK11>, <FK12>,
                    {<K6C>, "EJCT" }
	    };
	};
    }; // End of "Function" section

    key.shape= "NORM";
    section "Alpha" {
	top= 10;
	row {
	    top= 1;
	    keys { {<TLDE>, "DEGR"},
                   <AE01>, <AE02>, <AE03>, <AE04>,
		   <AE05>, <AE06>, <AE07>, <AE08>,
                   <AE09>, <AE10>, <AE11>, <AE12>,
		   { <BKSP>, "BKSP" }
	    };
	};
	row {
	    top= 20;
	    keys { { <TAB>, "TABK"},
		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, 
		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, 
		   <AD11>, <AD12>, 
                   { <BKSL>, "BKSL" }
	    };
	};
	row {
	    top= 39;
	    keys { { <CAPS>, "CAPS" },
		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, 
		   <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, 
		   <AC11>, 
                   { <RTRN>, "RTRN" }
	    };
        };
	row {
	    top= 58;
	    keys { { <LFSH>, "LFSH"},
		   <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, 
		   <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, 
		   { <RTSH>, "RTSH" }
	    };
	};
	row {
	    top= 77;
	    keys { {<FN>, "DEGR"}, 
                   <LCTL>, <LALT>, 
                   {<LMTA>, "APPL"},
                   {<SPCE>, "SPCE" }, 
                   {<RMTA>, "APPL"},
                   <KPEN>
	    };
	};

    }; // End of "Alpha" section

    key.shape= "ARRO";
    section "Editing" {
        top = 86;
        left = 217;
	row {
	    top= 1;
	    left= 19;
	    keys { <UP> };
	};
	row {
	    top= 10;
	    keys { <LEFT>, <DOWN>, <RGHT> };
	};
    }; // End of "Editing" section

    alias <AC00> = <CAPS>;
    alias <AA00> = <LCTL>;

};

xkb_geometry "macbook79" {

    description= "Apple Laptop 79-key (Intl)";
    width= 273;
    height= 110;

    shape.cornerRadius= 0;
    shape "ESC"  { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
    shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
    shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
    shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
    shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
    shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
    shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
    shape "RTRN" { { [ 0,0], [17,0], [17,37], [5,37], [5, 18], [0,18], [0,0] },
                   cornerRadius=1, 
	           { [ 2,2], [15,2], [15,35], [7,35], [7, 16], [2,16] } 
                 };
    shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
    shape "LFSH" { { [ 21,18] }, cornerRadius=1, { [0,2], [ 19,16] } };
    shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
    shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
    shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
    shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };

    shape "LED"  { cornerRadius= 1, { [  2,  2 ] } };

    indicator.onColor= "green";
    indicator.offColor= "gray";
    indicator.shape= "LED";
    indicator "Num Lock"   { top=4; left= 119; };
    indicator "Caps Lock"  { top=53; left= 4; };

    section.left=0;
    row.left= 1;
    key.shape= "FUNC";
    key.gap= 1;
    section "Function" {
	top= 0;
	row {
	    top= 1;
	    keys {  {<ESC>, "ESC" },
		    <FK01>, <FK02>, <FK03>, <FK04>,
		    <FK05>, <FK06>, <FK07>, <FK08>,
		    <FK09>, <FK10>, <FK11>, <FK12>,
                    {<K6C>, "EJCT" }
	    };
	};
    }; // End of "Function" section

    key.shape= "NORM";
    section "Alpha" {
	top= 10;
	row {
	    top= 1;
	    keys { {<TLDE>, "DEGR"},
                   <AE01>, <AE02>, <AE03>, <AE04>,
		   <AE05>, <AE06>, <AE07>, <AE08>,
                   <AE09>, <AE10>, <AE11>, <AE12>,
		   { <BKSP>, "BKSP" }
	    };
	};
	row {
	    top= 20;
	    keys { { <TAB>, "TABK"},
		   <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, 
		   <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, 
		   <AD11>, <AD12>, { <RTRN>, "RTRN" }
	    };
	};
	row {
	    top= 39;
	    keys { { <CAPS>, "CAPS" },
		   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, 
		   <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, 
		   <AC11>, <BKSL>
	    };
        };
	row {
	    top= 58;
	    keys { { <LFSH>, "LFSH"},
		   <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, 
		   <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
		   { <RTSH>, "RTSH" }
	    };
	};
	row {
	    top= 77;
	    keys { {<FN>, "DEGR"}, 
                   <LCTL>, <LALT>, 
                   {<LWIN>, "APPL"},
                   {<SPCE>, "SPCE" }, 
                   {<RALT>, "APPL"},
                   <KPEN>
	    };
	};

    }; // End of "Alpha" section

    key.shape= "ARRO";
    section "Editing" {
        top = 86;
        left = 217;
	row {
	    top= 1;
	    left= 19;
	    keys { <UP> };
	};
	row {
	    top= 10;
	    keys { <LEFT>, <DOWN>, <RGHT> };
	};
    }; // End of "Editing" section

    alias <AC00> = <CAPS>;
    alias <AA00> = <LCTL>;

}; // End of "default" geometry