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