New local geometry.
authorFabien Ninoles <fabien@tzone.org>
Sun, 26 Oct 2014 15:43:07 -0400
changeset 6 8daa0d8b9a0e
parent 5 0b45eff23094
child 7 03125e413ae3
New local geometry.
xkb/Makefile
xkb/geometry/trulyergonomic
xkb/symbols/fr_alt
xkb/symbols/prog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xkb/Makefile	Sun Oct 26 15:43:07 2014 -0400
@@ -0,0 +1,16 @@
+all: bepo.xkb bepo.ps
+
+%.xkm: %.xkb
+	xkbcomp $< $@
+
+%.ps: %.xkm
+	xkbprint -color $< -o $@
+
+pc105.xkb: symbols/prog
+	setxkbmap -model pc105 -layout prog -variant bepo -print | xkbcomp -xkb -a -I. - $@
+
+local.xkb: symbols/prog geometry/trulyergonomic geometry/local
+	setxkbmap -geometry "local(ted209)" -layout prog -variant bepo -print | xkbcomp -xkb -a -I. - $@
+
+trulyergonomic.xkb: symbols/prog geometry/trulyergonomic geometry/local
+	setxkbmap -geometry "trulyergonomic" -layout prog -variant bepo -print | xkbcomp -xkb -a -I. - $@
--- a/xkb/geometry/trulyergonomic	Sun Oct 26 15:42:51 2014 -0400
+++ b/xkb/geometry/trulyergonomic	Sun Oct 26 15:43:07 2014 -0400
@@ -1,23 +1,29 @@
 // -*- indent-tabs-mode: nil -*-
 
 // Created by Fabien Ninoles <fabien (at) tzone (dot) org>
+// Notes: I have both a different layout and custom firmware
+// for my keyboard.  Some keycodes are probably not the same
+// as the actual firmware.
 
-// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
-// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
-// Fn           = <I120>;
-// Calc         = <I148>;
-// WWW          = <I158>;
-// CycleWindows = <I162>;
-// Mail         = <I163>;
-// PlayPause    = <I172>;
-// Desktop      = <I243>;
-
-xkb_geometry "teckD209" {
+default xkb_geometry "teckD209" {
     description = "Truly Ergonomic D209";
 
+    include "trulyergonomic(base)"
+    include "trulyergonomic(leftalpha)"
+    include "trulyergonomic(rightalpha)"
+    key.color = "grey10";
+    include "trulyergonomic(centralcolumn)"
+    include "trulyergonomic(rightcross)"
+    include "trulyergonomic(leftcross)"
+    include "trulyergonomic(leftcolumn)"
+    include "trulyergonomic(rightcolumn)"
+    include "trulyergonomic(function)"
+}; // geometry teckD209
+
+partial hidden xkb_geometry "base" {
     // Keyboard total size :
     width  = 308;
-    height = 150;
+    height = 155;
     // Background / foreground colours
     baseColor  = "white";
     labelColor = "black";
@@ -25,13 +31,17 @@
     // Key shapes: base key = 16 mm each side
     shape "NORM" { cornerRadius=1, { [17,    17]   }, { [2,   2], [15,   15] }};
     shape "DBLA" { cornerRadius=1, { [35,    17]   }, { [2,   2], [33,   15] }};
+    
+    key.shape = "NORM";
+    key.gap = 0.5;
 
+};
+
+partial hidden xkb_geometry "function" {
     section "Function" {
         left = 5;
         top  = 5;
         key.gap = 0.5;
-        key.color = "grey10";
-        key.shape = "NORM";
         row {
             keys { 
               <ESC>,
@@ -45,22 +55,22 @@
             top = 17.5;
             left = 111;
             keys { <CAPS>, 
-                   <DELE>, // modified from <FN>
+                   <FN>,
                    <NMLK> };
         };
     };
+};
+
+partial hidden xkb_geometry "leftalpha" {
     section "LeftAlpha" {
         left = 39;
         top  = 45;
         key.gap = 0.5;
-        key.color = "grey10";
-        key.shape = "NORM";
         row {
             top  = 0;
             left = -35;
             keys { 
-              <AD12>, // modified from ?
-              <TLDE>,
+              <TAB>, <TLDE>,
               <AE01>, <AE02>, <AE03>, <AE04>, <AE05>
             };
         };
@@ -68,8 +78,7 @@
             left = -35;
             top  = 17.5;
             keys { 
-                   <ESC>, // modified from <BKSL>
-                   <BKSL>, // modified from <AB10>
+                   <BKSL>, <AB10>,
                    <AD01>, <AD02>, <AD03>, <AD04>, <AD05>
                  };
         };
@@ -82,12 +91,13 @@
             keys { <AB01>, <AB02>, <AB03>, <AC04>, <AC05> };
         };
    };
+};
+
+partial hidden xkb_geometry "rightalpha" {
     section "RightAlpha" {
         left = 161.5;
         top  = 45;
         key.gap = 0.5;
-        key.color = "grey10";
-        key.shape = "NORM";
         row {
             top  = 0;
             keys { 
@@ -99,8 +109,7 @@
             top  = 17.5;
             keys { 
                    <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
-                   <AC11>, // modified from <AD11>
-                   <AD11>  // modified from <AD12>
+                   <AD11>, <AD12>
                  };
         };
         row {
@@ -112,89 +121,92 @@
             keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10> };
         };
    };
-    section "LeftColumn" {
-        left = 4;
-        top  = 80;
-        key.gap = 0.5;
-        key.color = "grey20";
-        key.shape = "DBLA";
-        row { 
-          vertical = true;
-          keys { <LFSH>, <LCTL> };
-        };
-        row {
-          top = 35;
-          key.shape = "NORM";
-          keys { <FN>, <LALT> };
-        };
-    };
+};
+
+partial hidden xkb_geometry "centralcolumn" {
    section "CentralColumn" {
       top = 45;
       left = 126.5;
+      key.gap = 0.5;
       key.shape = "DBLA";
-      key.color = "grey20";
       // Central section
       row {
           vertical = true;
           keys { 
             <LWIN>, 
-            <RALT>, // modified from <DELE>
+            <DELE>,
             <TAB>,            
             <BKSP>
           };
       };
       row {
           top  = 70;
-          left = -35;
+          left = -36;
           keys { <SPCE>, <RTRN>, <SPCE> };
         };
    };
+};
+
+partial hidden xkb_geometry "leftcolumn" {
+    section "LeftColumn" {
+        left = 4;
+        top  = 80;
+        key.gap = 0.5;
+        row { 
+          key.shape = "DBLA";
+          vertical = true;
+          keys { <LFSH>, <LCTL> };
+        };
+        row {
+          top = 35;
+          keys { <FN>, <LALT> };
+        };
+    };
+};
+
+partial hidden xkb_geometry "rightcolumn" {
     section "RightColumn" {
         left = 250;
         top  = 80;
         key.gap = 0.5;
-        key.color = "grey20";
-        key.shape = "DBLA";
         row { 
+          key.shape = "DBLA";
           vertical = true;
           keys { <RTSH>, <RCTL> }; 
         };
         row {
           top = 35;
-          key.shape = "NORM";
           keys { <RALT>, <FN> };
        };
    };
+};
+
+partial hidden xkb_geometry "leftcross" {
    section "LeftCross" {
         left = 39;
         top  = 115;
         key.gap = 0.5;
-        key.color = "grey20";
-        key.shape = "NORM";
-        // Cross section
         row {
             top  = 8;
             keys { 
-              <AB03>,  // modified from <HOME>
-              { <AD07>, gap = 17.5 } // modified from <END>
+              <HOME>, { <END>, gap = 17.5 }
             };
         };
         row {
             left = 17.5;
             vertical = true;
             keys { 
-              <AC06>, // modified from <PGUP>
-              <AD11>  // modified from <PGDN>
-            }; 
+              <PGUP>, <PGDN>
+            };
         };
    };
+};
+
+partial hidden xkb_geometry "rightcross" {
    section "RightCross" {
-        left = 196.5;
+        left = 197;
         top  = 115;
         key.gap = 0.5;
-        key.color = "grey20";
-        key.shape = "NORM";
-        // Cross section
         row {
             top  = 8;
             keys { <LEFT>, { <RGHT>, gap = 17.5 } };
@@ -205,4 +217,4 @@
             keys { <UP>, <DOWN> };
         };
    };
-}; // geometry teckD209
+};
\ No newline at end of file
--- a/xkb/symbols/fr_alt	Sun Oct 26 15:42:51 2014 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-partial alphanumeric_keys
-xkb_symbols "bepo_prog"
-{
-    // J'aime bépo !
-
-    include "fr(bepo)"
-
-    // Actuellement, la plupart des programmes supporte KP_Decimal
-    // correctement (',' dans Gnumeric, Calc, GNUCash, '.' ailleurs,
-    // comme sous emacs.
-
-    include "kpdl(kposs)"
-
-    name[Group1] = "France - Bepo, ergonomic, Dvorak way, Programmer enhanced";
-
-    // échange w, ¤, et ^... Ça permet d'avoir le ê proche, et comme
-    // j'utilise rarement le €, c'est pas trop cher payé (désolé pour
-    // les amis européens).  Dites-vous qu'il est maintenant aussi
-    // loin que le $ l'est pour moi :).  Le point d'exclamation
-    // pourrait être mieux placé toutefois.
-
-    key <AD06> { [w, W, exclam, exclamdown ] }; // w W ! ¡
-    key <AC04> { [e, E, dead_circumflex, dead_breve ] }; // e E ^ ̆
-    key <AD12> { [ EuroSign, dead_currency ] }; // € ¤
-
-    // Windows n'aime pas les non-espaces blancs sur la barre
-    // d'espacement, sauf avec le shift.  C'est faisable de le forcer,
-    // mais PortableApps à fixer Win-Space comme clé d'activation.
-    // J'ai donc pris sur moi de le changer par shift-space pour le
-    // souligné, et ça me plaît beaucoup comme changement.
-
-    key <SPCE> { [ space, underscore, nobreakspace, U202F ] }; // ␣ _ (espace insécable) (espace insécable fin)
-
-    // Tous les claviers que j'utilise ont un clavier numérique,
-    // généralement intégré avec une touche d'accès.  Je l'utilise
-    // donc exclusivement, ce qui me libère mes clés pour d'autres
-    // caractères.
-
-    key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        quotedbl, leftsinglequotemark, emdash, doublelowquotemark   ] }; // " ` — „
-    key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            less,    bracketleft,    lessthanequal, leftdoublequotemark  ] }; // < [ ≤ “
-    key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [         greater,   bracketright, greaterthanequal, rightdoublequotemark ] }; // > ] ≥ ”
-    key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       parenleft,      braceleft                                         ] }; // ( {
-    key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [      parenright,     braceright                                         ] }; // ) }
-    key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [              at,  guillemotleft,      asciicircum                       ] }; // @ « ^
-    key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            plus, guillemotright,        plusminus,        notsign       ] }; // + » ± ¬
-    key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           minus,     underscore,            U2212,     onequarter       ] }; // -   − ¼
-    key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           slash,      backslash,         division,        onehalf       ] }; // / \ ÷ ½
-    key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        asterisk, rightsinglequotemark,         multiply,  threequarters       ] }; // * ' × ¾
-
-};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xkb/symbols/prog	Sun Oct 26 15:43:07 2014 -0400
@@ -0,0 +1,44 @@
+default alphanumeric_keys
+xkb_symbols "bepo"
+{
+    // J'aime bépo !
+
+    include "fr(bepo)"
+
+    name[Group1] = "France - Bepo, ergonomic, Dvorak way, Programmer enhanced";
+
+    // échange w, ¤, et ^... Ça permet d'avoir le ê proche, et comme
+    // j'utilise rarement le €, c'est pas trop cher payé (désolé pour
+    // les amis européens).  Dites-vous qu'il est maintenant aussi
+    // loin que le $ l'est pour moi :).  Le point d'exclamation
+    // pourrait être mieux placé toutefois.
+
+    key <AD06> { [w, W, exclam, exclamdown ] }; // w W ! ¡
+    key <AC04> { [e, E, dead_circumflex, dead_breve ] }; // e E ^ ̆
+    key <AD12> { [ EuroSign, dead_currency ] }; // € ¤
+
+    // Windows n'aime pas les non-espaces blancs sur la barre
+    // d'espacement, sauf avec le shift.  C'est faisable de le forcer,
+    // mais PortableApps à fixer Win-Space comme clé d'activation.
+    // J'ai donc pris sur moi de le changer par shift-space pour le
+    // souligné, et ça me plaît beaucoup comme changement.
+
+    key <SPCE> { [ space, underscore, nobreakspace, U202F ] }; // ␣ _ (espace insécable) (espace insécable fin)
+
+    // Tous les claviers que j'utilise ont un clavier numérique,
+    // généralement intégré avec une touche d'accès.  Je l'utilise
+    // donc exclusivement, ce qui me libère mes clés pour d'autres
+    // caractères.
+
+    key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        quotedbl, leftsinglequotemark, emdash, doublelowquotemark   ] }; // " ` — „
+    key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            less,    bracketleft,    lessthanequal, leftdoublequotemark  ] }; // < [ ≤ “
+    key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [         greater,   bracketright, greaterthanequal, rightdoublequotemark ] }; // > ] ≥ ”
+    key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [       parenleft,      braceleft                                         ] }; // ( {
+    key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [      parenright,     braceright                                         ] }; // ) }
+    key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [              at,  guillemotleft,      asciicircum                       ] }; // @ « ^
+    key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [            plus, guillemotright,        plusminus,        notsign       ] }; // + » ± ¬
+    key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           minus,     underscore,            U2212,     onequarter       ] }; // -   − ¼
+    key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [           slash,      backslash,         division,        onehalf       ] }; // / \ ÷ ½
+    key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [        asterisk, rightsinglequotemark,         multiply,  threequarters       ] }; // * ' × ¾
+
+};