@@ 58,3 58,131 @@ xkb_symbols "optimot_cinq_ergo" {
include "level3(ralt_switch)"
};
+
+ // Base layer + dead key
+ // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
+ // │ ┆ ~ │ ┃ ! │ │ @ │ │ # │ │ $ │ │ % │ ┃ ^ │ │ & │ │ * │ │ ( │ │ ) │ ┃ _ │ ┆ + ┃ ┃
+ // │ ┆ ` │ ┃ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │ ┃ 6 │ │ 7 │ │ 8 │ │ 9 │ │ 0 │ ┃ / │ ┆ = ┃ ⌫ ┃
+ // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
+ // ┃ ┃ ┃ Q │ │ C │ │ O │ │ P │ │ W │ ┃ J │ │ M │ │ D │ │*¨ │ │ F │ ┃ { │ ┆ } ┃ ┃
+ // ┃ ↹ ┃ ┃ │ │ │ │ │ │ │ │ │ ┃ │ │ │ │ │ │** │ │ │ ┃ [ │ ┆ ] ┃ ┃
+ // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃
+ // ┃ ┃ ┃ A │ │ S │ │ E │ │ N │ │ ; │ ┃ L │ │ R │ │ T │ │ I │ │ U │ ┃ " │ ┆ | ┃ ┃
+ // ┃ ⇬ ┃ ┃ │ │ │ │ │ │ │ │ , │ ┃ │ │ │ │ │ │ │ │ │ ┃ ' │ ┆ \ ┃ ┃
+ // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
+ // ┃ ┃ ┆ > │ ┃ Z │ │ X │ │ ? │ │ V │ │ B │ ┃ : │ │ H │ │ G │ │ Y │ │ K ┃ ┃
+ // ┃ ⇧ ┃ ┆ < │ ┃ │ │ │ │ - │ │ │ │ │ ┃ . │ │ │ │ │ │ │ │ ┃ ⇧ ┃
+ // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
+ // ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
+ // ┃ Ctrl ┃ super ┃ Alt ┃ ␣ ┃ AltGr ┃ super ┃ menu ┃ Ctrl ┃
+ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+ // AltGr layer
+ // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
+ // │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // │ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ⌫ ┃
+ // ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
+ // ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // ┃ ↹ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃
+ // ┃ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // ┃ ⇬ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
+ // ┃ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ┃
+ // ┃ ⇧ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ⇧ ┃
+ // ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
+ // ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
+ // ┃ Ctrl ┃ super ┃ Alt ┃ ␣ ┃ AltGr ┃ super ┃ menu ┃ Ctrl ┃
+ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "ergol_six" {
+ include "pc"
+
+ // The “OneDeadKey” is an ISO_Level3_Latch, i.e. a “dead AltGr” key.
+ // This is the only way to have a multi-purpose dead key with XKB.
+
+ // The real AltGr key should be an ISO_Level5_Switch; however,
+ // ISO_Level5_Switch does not work as expected when applying this layout
+ // with xkbcomp, so let’s use two groups instead and make the AltGr key a
+ // group selector.
+
+ name[group1]= "French (Ergo-L 0.6)";
+ name[group2]= "AltGr";
+
+ key.type[group1] = "FOUR_LEVEL";
+ key.type[group2] = "TWO_LEVEL";
+
+ // Digits
+ key <AE01> {[ U2503 , U2503 , 1 , exclam ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ 1 !
+ key <AE02> {[ vertconnector , vertconnector , 2 , at ],[ VoidSymbol , VoidSymbol ]}; // │ │ 2 @
+ key <AE03> {[ vertconnector , vertconnector , 3 , numbersign ],[ VoidSymbol , VoidSymbol ]}; // │ │ 3 #
+ key <AE04> {[ vertconnector , vertconnector , 4 , dollar ],[ VoidSymbol , VoidSymbol ]}; // │ │ 4 $
+ key <AE05> {[ vertconnector , vertconnector , 5 , percent ],[ VoidSymbol , VoidSymbol ]}; // │ │ 5 %
+ key <AE06> {[ U2503 , U2503 , 6 , asciicircum ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ 6 ^
+ key <AE07> {[ vertconnector , vertconnector , 7 , ampersand ],[ VoidSymbol , VoidSymbol ]}; // │ │ 7 &
+ key <AE08> {[ vertconnector , vertconnector , 8 , asterisk ],[ VoidSymbol , VoidSymbol ]}; // │ │ 8 *
+ key <AE09> {[ vertconnector , vertconnector , 9 , parenleft ],[ VoidSymbol , VoidSymbol ]}; // │ │ 9 (
+ key <AE10> {[ vertconnector , vertconnector , 0 , parenright ],[ VoidSymbol , VoidSymbol ]}; // │ │ 0 )
+
+ // Letters, first row
+ key <AD01> {[ U2503 , U2503 , VoidSymbol , Q ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ Q
+ key <AD02> {[ vertconnector , vertconnector , VoidSymbol , C ],[ VoidSymbol , VoidSymbol ]}; // │ │ C
+ key <AD03> {[ vertconnector , vertconnector , VoidSymbol , O ],[ VoidSymbol , VoidSymbol ]}; // │ │ O
+ key <AD04> {[ vertconnector , vertconnector , VoidSymbol , P ],[ VoidSymbol , VoidSymbol ]}; // │ │ P
+ key <AD05> {[ vertconnector , vertconnector , VoidSymbol , W ],[ VoidSymbol , VoidSymbol ]}; // │ │ W
+ key <AD06> {[ U2503 , U2503 , VoidSymbol , J ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ J
+ key <AD07> {[ vertconnector , vertconnector , VoidSymbol , M ],[ VoidSymbol , VoidSymbol ]}; // │ │ M
+ key <AD08> {[ vertconnector , vertconnector , VoidSymbol , D ],[ VoidSymbol , VoidSymbol ]}; // │ │ D
+ key <AD09> {[ vertconnector , vertconnector , ISO_Level3_Latch, dead_diaeresis ],[ VoidSymbol , VoidSymbol ]}; // │ │ ' ¨
+ key <AD10> {[ vertconnector , vertconnector , VoidSymbol , F ],[ VoidSymbol , VoidSymbol ]}; // │ │ F
+
+ // Letters, second row
+ key <AC01> {[ U2503 , U2503 , VoidSymbol , A ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ A
+ key <AC02> {[ vertconnector , vertconnector , VoidSymbol , S ],[ VoidSymbol , VoidSymbol ]}; // │ │ S
+ key <AC03> {[ vertconnector , vertconnector , VoidSymbol , E ],[ VoidSymbol , VoidSymbol ]}; // │ │ E
+ key <AC04> {[ vertconnector , vertconnector , VoidSymbol , N ],[ VoidSymbol , VoidSymbol ]}; // │ │ N
+ key <AC05> {[ vertconnector , vertconnector , comma , semicolon ],[ VoidSymbol , VoidSymbol ]}; // │ │ , ;
+ key <AC06> {[ U2503 , U2503 , VoidSymbol , L ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ L
+ key <AC07> {[ vertconnector , vertconnector , VoidSymbol , R ],[ VoidSymbol , VoidSymbol ]}; // │ │ R
+ key <AC08> {[ vertconnector , vertconnector , VoidSymbol , T ],[ VoidSymbol , VoidSymbol ]}; // │ │ T
+ key <AC09> {[ vertconnector , vertconnector , VoidSymbol , I ],[ VoidSymbol , VoidSymbol ]}; // │ │ I
+ key <AC10> {[ vertconnector , vertconnector , VoidSymbol , U ],[ VoidSymbol , VoidSymbol ]}; // │ │ U
+
+ // Letters, third row
+ key <AB01> {[ U2503 , U2503 , VoidSymbol , Z ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ Z
+ key <AB02> {[ vertconnector , vertconnector , VoidSymbol , X ],[ VoidSymbol , VoidSymbol ]}; // │ │ X
+ key <AB03> {[ vertconnector , vertconnector , minus , question ],[ VoidSymbol , VoidSymbol ]}; // │ │ - ?
+ key <AB04> {[ vertconnector , vertconnector , VoidSymbol , V ],[ VoidSymbol , VoidSymbol ]}; // │ │ V
+ key <AB05> {[ vertconnector , vertconnector , VoidSymbol , B ],[ VoidSymbol , VoidSymbol ]}; // │ │ B
+ key <AB06> {[ U2503 , U2503 , period , colon ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ . :
+ key <AB07> {[ vertconnector , vertconnector , VoidSymbol , H ],[ VoidSymbol , VoidSymbol ]}; // │ │ H
+ key <AB08> {[ vertconnector , vertconnector , VoidSymbol , G ],[ VoidSymbol , VoidSymbol ]}; // │ │ G
+ key <AB09> {[ vertconnector , vertconnector , VoidSymbol , Y ],[ VoidSymbol , VoidSymbol ]}; // │ │ Y
+ key <AB10> {[ vertconnector , vertconnector , VoidSymbol , K ],[ VoidSymbol , VoidSymbol ]}; // │ │ K
+
+ // Pinky keys
+ key <AE11> {[ U2503 , U2503 , slash , underscore ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ / _
+ key <AE12> {[ U2506 , U2506 , equal , plus ],[ VoidSymbol , VoidSymbol ]}; // ┆ ┆ = +
+ key <AE13> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ],[ VoidSymbol , VoidSymbol ]}; //
+ key <AD11> {[ U2503 , U2503 , bracketleft , braceleft ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ [ {
+ key <AD12> {[ U2506 , U2506 , bracketright , braceright ],[ VoidSymbol , VoidSymbol ]}; // ┆ ┆ ] }
+ key <AC11> {[ U2503 , U2503 , apostrophe , quotedbl ],[ VoidSymbol , VoidSymbol ]}; // ┃ ┃ ' "
+ key <AB11> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ],[ VoidSymbol , VoidSymbol ]}; //
+ key <TLDE> {[ U2506 , U2506 , grave , asciitilde ],[ VoidSymbol , VoidSymbol ]}; // ┆ ┆ ` ~
+ key <BKSL> {[ U2506 , U2506 , backslash , bar ],[ VoidSymbol , VoidSymbol ]}; // ┆ ┆ \ |
+ key <LSGT> {[ U2506 , U2506 , less , greater ],[ VoidSymbol , VoidSymbol ]}; // ┆ ┆ < >
+
+ // Space bar
+ key <SPCE> {[ space , U202F , U2019 , U2019 ],[ space , nobreakspace ]}; // ’ ’
+
+ // AltGr
+ // Note: the `ISO_Level5_Latch` here is meaningless but helps with Chromium.
+ key <RALT> {
+ type = "TWO_LEVEL",
+ symbols = [ ISO_Level5_Latch, ISO_Level5_Latch ],
+ actions = [ SetGroup(group=2), SetGroup(group=2) ]
+ };
+};
+
+// vim: ft=xkb:fdm=indent:ts=2:nowrap