19184b9c8Smrg//
29184b9c8Smrg//Copyright 1996, 1998  The Open Group
39184b9c8Smrg//
49184b9c8Smrg//Permission to use, copy, modify, distribute, and sell this software and its
59184b9c8Smrg//documentation for any purpose is hereby granted without fee, provided that
69184b9c8Smrg//the above copyright notice appear in all copies and that both that
79184b9c8Smrg//copyright notice and this permission notice appear in supporting
89184b9c8Smrg//documentation.
99184b9c8Smrg//
109184b9c8Smrg//The above copyright notice and this permission notice shall be
119184b9c8Smrg//included in all copies or substantial portions of the Software.
129184b9c8Smrg//
139184b9c8Smrg//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
149184b9c8Smrg//EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
159184b9c8Smrg//MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
169184b9c8Smrg//IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
179184b9c8Smrg//OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
189184b9c8Smrg//ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
199184b9c8Smrg//OTHER DEALINGS IN THE SOFTWARE.
209184b9c8Smrg//
219184b9c8Smrg//Except as contained in this notice, the name of The Open Group shall
229184b9c8Smrg//not be used in advertising or otherwise to promote the sale, use or
239184b9c8Smrg//other dealings in this Software without prior written authorization
249184b9c8Smrg//from The Open Group.
259184b9c8Smrg//
269184b9c8Smrg
279184b9c8Smrg
289184b9c8Smrg
299184b9c8Smrg// modified from /usr/share/X11/xkb/geometry/pc(pc104)
309184b9c8Smrg//
319184b9c8Smrg// The Apex 300 (Apex RAW) has 21 additional keys and
329184b9c8Smrg// <RWIN> is replaced by a hardware <FN> key.  These
339184b9c8Smrg// additions to the basic PC104 layout are shown in red.
349184b9c8Smrg//
359184b9c8Smrg// Currently the kernel doesn't initialize these keys; a userspace
369184b9c8Smrg// tool is needed (apexctl: https://github.com/tuxmark5/ApexCtl).
379184b9c8Smrg// With this tool or a proper driver, the extra keys (except FN)
389184b9c8Smrg// can be assigned keycodes via udev-hwdb.
399184b9c8Smrg//
409184b9c8Smrg// FIXME: Keycodes shown here should be changed to match
419184b9c8Smrg//        kernel defaults when a driver is developed.
429184b9c8Smrg//
439184b9c8Smrg// The additional keys are in 4 groups:
449184b9c8Smrg// 1)  L1-L2 left of Escape (column)         <I156>,<I157>
459184b9c8Smrg// 2)  M1-M12 above F1-F12 (row)             <FK13>-<FK24>
469184b9c8Smrg// 3)  MX1-MX5 left of alpha keys (column)   <I171>-<I175>
479184b9c8Smrg// 4)  LeftUp, RightUp with regular arrows   <I160>,<I159>
489184b9c8Smrg//
499184b9c8Smrg// Known <FN> key functions:
509184b9c8Smrg// <FN>+<F5> = kbd backlight step dimmer (NoSymbol)
519184b9c8Smrg// <FN>+<F6> = kbd backlight step brighter (NoSymbol)
529184b9c8Smrg// <FN>+<F7> = <I173> (AudioPrev)
539184b9c8Smrg// <FN>+<F8> = <I172> (AudioPlay, AudioPause)
549184b9c8Smrg// <FN>+<F9> = <I171> (AudioNext)
559184b9c8Smrg// <FN>+<F10> = <MUTE> (AudioMute)
569184b9c8Smrg// <FN>+<F10> = <VOL+> (VolumeUp)
579184b9c8Smrg// <FN>+<F11> = <VOL-> (VolumeDown)
589184b9c8Smrg//
599184b9c8Smrg// And yes, the spacebar really is that ridiculous.
609184b9c8Smrg//
619184b9c8Smrg// 2017.April
629184b9c8Smrg//
639184b9c8Smrgdefault xkb_geometry "apex300" {
649184b9c8Smrg
659184b9c8Smrg    description= "SteelSeries Apex 300 (Apex RAW)";
669184b9c8Smrg    width= 450;
679184b9c8Smrg    height= 150;
689184b9c8Smrg
699184b9c8Smrg    shape.cornerRadius= 1;
709184b9c8Smrg    shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
719184b9c8Smrg    shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
729184b9c8Smrg    shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
739184b9c8Smrg    shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
749184b9c8Smrg    shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
759184b9c8Smrg    shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
769184b9c8Smrg    shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
779184b9c8Smrg    shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
789184b9c8Smrg    shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
799184b9c8Smrg    shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
809184b9c8Smrg    shape "SPCE" { { [113,37] }, { [2,1], [111,35] } };
819184b9c8Smrg    shape "KP0"  { { [ 37,18] }, { [2,1], [ 35,16] } };
829184b9c8Smrg    shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
839184b9c8Smrg    shape "MKEY" { { [  18,8] }, { [2,1], [  16,7] } };
849184b9c8Smrg    shape "ESCA" { { [ 18,28] }, { [2,1], [ 16,27] } };
859184b9c8Smrg    shape "LKEY" { { [ 18,14] }, { [2,1], [ 16,13] } };
869184b9c8Smrg    shape "LEDS" { cornerRadius= 0, { [ 54,  6 ] } };
879184b9c8Smrg    shape "LED"  { cornerRadius= 0, { [  4,  1 ] } };
889184b9c8Smrg
899184b9c8Smrg
909184b9c8Smrg    solid "LedPanel" {
919184b9c8Smrg        shape= "LEDS";
929184b9c8Smrg        top=  2;
939184b9c8Smrg        left= 315;
949184b9c8Smrg        color= "grey10";
959184b9c8Smrg    };
969184b9c8Smrg
979184b9c8Smrg
989184b9c8Smrg    indicator.onColor= "red";
999184b9c8Smrg    indicator.offColor= "red";
1009184b9c8Smrg    indicator.top= 7;
1019184b9c8Smrg    indicator.shape= "LED";
1029184b9c8Smrg    indicator "Num Lock"     { left= 321; };
1039184b9c8Smrg    indicator "Caps Lock"    { left= 340; };
1049184b9c8Smrg    indicator "Scroll Lock"  { left= 359; };
1059184b9c8Smrg    text.top= 2;
1069184b9c8Smrg    text.color= "black";
1079184b9c8Smrg    text "NumLockLabel"      { left= 322; text="N"; };
1089184b9c8Smrg    text "CapsLockLabel"     { left= 341; text="C"; };
1099184b9c8Smrg    text "ScrollLockLabel"   { left= 360; text="S"; };
1109184b9c8Smrg    text "SteelSeriesLogo"   { top=  10; left= 400; text="SteelSeries"; };
1119184b9c8Smrg    text "FNLogoKeyLabel"    { top= 130; left= 248; text="FN"; };
1129184b9c8Smrg
1139184b9c8Smrg    key.shape= "NORM";
1149184b9c8Smrg    key.gap=  1;
1159184b9c8Smrg    key.color= "grey10";
1169184b9c8Smrg
1179184b9c8Smrg
1189184b9c8Smrg    section "Lkeys" {
1199184b9c8Smrg        key.shape= "LKEY";
1209184b9c8Smrg        key.color= "red";
1219184b9c8Smrg        row { top= 1;  keys { <I156> }; };
1229184b9c8Smrg        row { top= 15; keys { <I157> }; };
1239184b9c8Smrg    }; // end of "Lkeys" section
1249184b9c8Smrg
1259184b9c8Smrg
1269184b9c8Smrg    section "MXkeys" {
1279184b9c8Smrg        key.shape= "NORM";
1289184b9c8Smrg        key.color= "red";
1299184b9c8Smrg        row { top= 35;  keys { <I171> }; }; // 40 59 78 97 116
1309184b9c8Smrg        row { top= 54;  keys { <I172> }; }; // 35 54 73 92 111
1319184b9c8Smrg        row { top= 73;  keys { <I173> }; };
1329184b9c8Smrg        row { top= 92;  keys { <I174> }; };
1339184b9c8Smrg        row { top=111;  keys { <I175> }; };
1349184b9c8Smrg    }; // end of "MXkeys" section
1359184b9c8Smrg
1369184b9c8Smrg
1379184b9c8Smrg    section "Escape" {
1389184b9c8Smrg        left= 23;
1399184b9c8Smrg        key.shape= "ESCA";
1409184b9c8Smrg        key.color= "grey30";
1419184b9c8Smrg        row { top=  1;  keys { <ESC> }; };
1429184b9c8Smrg    }; // end of "Escape" section
1439184b9c8Smrg
1449184b9c8Smrg
1459184b9c8Smrg    section "Mkeys" {
1469184b9c8Smrg        left= 61;
1479184b9c8Smrg        key.color= "red";
1489184b9c8Smrg        key.shape= "MKEY";
1499184b9c8Smrg        row { top=  1;
1509184b9c8Smrg              keys { <FK13>,       <FK14>, <FK15>, <FK16>,
1519184b9c8Smrg                   { <FK17>, 11 }, <FK18>, <FK19>, <FK20>,
1529184b9c8Smrg                   { <FK21>, 11 }, <FK22>, <FK23>, <FK24> }; };
1539184b9c8Smrg    }; // end of "Mkeys" section
1549184b9c8Smrg
1559184b9c8Smrg
1569184b9c8Smrg    section "Function" {
1579184b9c8Smrg        left= 61;
1589184b9c8Smrg        key.color= "grey30";
1599184b9c8Smrg        row { top= 10;
1609184b9c8Smrg              keys { <FK01>,       <FK02>, <FK03>, <FK04>,
1619184b9c8Smrg                   { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
1629184b9c8Smrg                   { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
1639184b9c8Smrg                   { <PRSC>,  5 }, <SCLK>, <PAUS> }; };
1649184b9c8Smrg    }; // end of "Function" section
1659184b9c8Smrg
1669184b9c8Smrg
1679184b9c8Smrg    section "Alpha" {
1689184b9c8Smrg        top= 35;
1699184b9c8Smrg        left= 23;
1709184b9c8Smrg        key.color= "grey10";
1719184b9c8Smrg        row { keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
1729184b9c8Smrg                     <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
1739184b9c8Smrg                     <AE10>, <AE11>, <AE12>,
1749184b9c8Smrg                   { <BKSP>, "BKSP", color="grey30" } }; };
1759184b9c8Smrg        row { top= 19;
1769184b9c8Smrg              keys { { <TAB>, "TABK", color="grey30" },
1779184b9c8Smrg                      <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
1789184b9c8Smrg                      <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
1799184b9c8Smrg                      <AD11>, <AD12>, { <BKSL>, "BKSL" } }; };
1809184b9c8Smrg        row { top= 38;
1819184b9c8Smrg              keys { { <CAPS>, "CAPS", color="grey30" },
1829184b9c8Smrg                       <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
1839184b9c8Smrg                       <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
1849184b9c8Smrg                       <AC11>, { <RTRN>, "RTRN", color="grey30" } }; };
1859184b9c8Smrg        row { top= 57;
1869184b9c8Smrg              keys { { <LFSH>, "LFSH", color="grey30" },
1879184b9c8Smrg                       <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
1889184b9c8Smrg                       <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
1899184b9c8Smrg                     { <RTSH>, "RTSH", color="grey30" } }; };
1909184b9c8Smrg        row { top= 76;
1919184b9c8Smrg              key.shape= "SMOD";
1929184b9c8Smrg              key.color= "grey30";
1939184b9c8Smrg              keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>, { <SPCE>, "SPCE" },
1949184b9c8Smrg                       <RALT>, { <I248>, color="red" }, <MENU>, <RCTL> }; };
1959184b9c8Smrg    }; // end of "Alpha" section
1969184b9c8Smrg
1979184b9c8Smrg
1989184b9c8Smrg    section "Editing" {
1999184b9c8Smrg        top= 35;
2009184b9c8Smrg        left= 313;
2019184b9c8Smrg        key.color= "grey30";
2029184b9c8Smrg        row {           keys {    <INS>, <HOME>, <PGUP> }; };
2039184b9c8Smrg        row { top= 19;  keys {   <DELE>,  <END>, <PGDN> }; };
2049184b9c8Smrg        row { top= 57;  keys { { <I160>, color="red" }, <UP>, { <I159>, color="red" } }; };
2059184b9c8Smrg        row { top= 76;  keys {   <LEFT>, <DOWN>, <RGHT> }; };
2069184b9c8Smrg    }; // end of "Editing" section
2079184b9c8Smrg
2089184b9c8Smrg
2099184b9c8Smrg    section "Keypad" {
2109184b9c8Smrg        top= 35;
2119184b9c8Smrg        left= 373;
2129184b9c8Smrg        key.color= "grey10";
2139184b9c8Smrg        row {           keys {  <NMLK>, <KPDV>,  <KPMU>,   <KPSU>           }; };
2149184b9c8Smrg        row { top= 19;  keys {   <KP7>,  <KP8>,   <KP9>, { <KPAD>, "KPAD" } }; };
2159184b9c8Smrg        row { top= 38;  keys {   <KP4>,  <KP5>,   <KP6>                     }; };
2169184b9c8Smrg        row { top= 57;  keys {   <KP1>,  <KP2>,   <KP3>, { <KPEN>, "KPAD" } }; };
2179184b9c8Smrg        row { top= 76;  keys { { <KP0>, "KP0" }, <KPDL>                     }; };
2189184b9c8Smrg    }; // end of "Keypad" section
2199184b9c8Smrg
2209184b9c8Smrg    alias <AC00> = <CAPS>;
2219184b9c8Smrg    alias <AA00> = <LCTL>;
2229184b9c8Smrg
2239184b9c8Smrg}; // end of "apex300" geometry
224