~gagbo/cz-dotfiles

dda756f811ae89dad7c27f683e242a3ce4297816 — Gerry Agbobada 5 months ago 975472e
Switch to colemak-dh-fr keyboard layout
M home/dot_config/plasma-workspace/env/setkeymap.sh => home/dot_config/plasma-workspace/env/setkeymap.sh +2 -2
@@ 1,7 1,7 @@
export QT_LOGGING_RULES="kwin_*.debug=true"
export XKB_LOG_VERBOSITY=10
export KWIN_XKB_DEFAULT_KEYMAP=yes
export XKB_DEFAULT_LAYOUT=fr,fr,us
export XKB_DEFAULT_VARIANT=optimot_cinq_ergo,ergol_six,altgr-intl
export XKB_DEFAULT_LAYOUT=fr,us
export XKB_DEFAULT_VARIANT=colemak_dh_matrix,altgr-intl
export XKB_DEFAULT_OPTIONS=grp:ctrls_toggle,ctrl:nocaps,shift:both_capslock
export XKB_CONTEXT_NO_SECURE_GETENV=yes

M home/dot_config/xkb/rules/evdev.lst => home/dot_config/xkb/rules/evdev.lst +3 -2
@@ 1,3 1,4 @@
! variant
optimot_cinq_ergo fr: French (Optimot Ergo 1.5)
ergol_six         fr: French (Ergo-L 0.6)
colemak_dh       fr: French (Colemak-DH)
colemak_dh_iso   fr: French (Colemak-DH ISO)
colemak_dh_ortho fr: French (Colemak-DH Ortholinear)

M home/dot_config/xkb/rules/evdev.xml => home/dot_config/xkb/rules/evdev.xml +13 -6
@@ 18,16 18,23 @@
        <variantList>
          <variant>
            <configItem>
              <name>optimot_cinq_ergo</name>
              <shortDescription>optimot_ergo</shortDescription>
              <description>French (Optimot Ergo 1.5)</description>
              <name>colemak_dh</name>
              <shortDescription>colemak_dh</shortDescription>
              <description>French (Colemak-DH)</description>
            </configItem>
          </variant>
          <variant>
            <configItem>
              <name>ergol_six</name>
              <shortDescription>ergol_six</shortDescription>
              <description>French (Ergo-L 0.6)</description>
              <name>colemak_dh_iso</name>
              <shortDescription>colemak_dh_iso</shortDescription>
              <description>French (Colemak-DH ISO)</description>
            </configItem>
          </variant>
          <variant>
            <configItem>
              <name>colemak_dh_ortho</name>
              <shortDescription>colemak_dh_ortho</shortDescription>
              <description>French (Colemak-DH Ortholinear)</description>
            </configItem>
          </variant>
        </variantList>

M home/dot_config/xkb/symbols/fr => home/dot_config/xkb/symbols/fr +29 -165
@@ 1,181 1,45 @@
partial alphanumeric_keys modifier_keys
xkb_symbols "optimot_cinq_ergo" {
partial alphanumeric_keys
xkb_symbols "colemak_dh" {

	name[Group1]= "French (Optimot Ergo 1.5)";
    include "us(colemak_dh)"
    name[Group1]= "French (Colemak-DH)";

    include "fr(basic)"
	include "pc(pc105)"
    key <AD08> { [            o,            O,     ocircumflex,      Ocircumflex ] };
    key <AD09> { [            y,            Y,     ecircumflex,      Ecircumflex ] };
    key <AD10> { [    semicolon,        colon,     ucircumflex,      Ucircumflex ] };

	key <TLDE> { type[group1] = "FOUR_LEVEL", [ dollar, EuroSign, dead_currency, copyright ] }; // $ € ¤ ©
	key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 1, leftdoublequotemark, onequarter  ] }; // « 1 “ ¼
	key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 2, rightdoublequotemark, onehalf ] }; // » 2 ” ½
	key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 3, doublelowquotemark, threequarters ] }; // " 3 „ ¾
	key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 4, U2011, onethird ] }; // - 4 ‑ ⅓
	key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 5, plusminus, twothirds ] }; // + 5 ± ⅔
	key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 6, multiply, U273B ] }; // * 6 × ✻
	key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 7, backslash, division ] }; // / 7 \ ÷
	key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 8, notequal, U2248 ] }; // = 8 ≠ ≈
	key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 9, bracketleft, minutes ] }; // ( 9 [ ′
	key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 0, bracketright, seconds ] }; // ) 0 ] ″
	key <AE11> { type[group1] = "FOUR_LEVEL", [ at, underscore, U2212, ordfeminine ] }; // @ _ − ª
	key <AE12> { type[group1] = "FOUR_LEVEL", [ numbersign, percent, degree, masculine ] }; // # % ° º
	key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, less, U2A7D ] }; // à À < ⩽
	key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, greater, U2A7E ] }; // j J > ⩾
	key <AD03> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ
	key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, U274F ] }; // é É ´ ❏
	key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, emdash, U2756 ] }; // b B — ❖
	key <AD06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, leftsinglequotemark, U2726 ] }; // f F ‘ ✦
	key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, braceleft, dagger ] }; // d D { †
	key <AD08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, braceright, doubledagger ] }; // l L } ‡
	key <AD09> { type[group1] = "FOUR_LEVEL", [ apostrophe, question, rightsinglequotemark, questiondown ] }; // ' ? ’ ¿
	key <AD10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, U2E2E ] }; // q Q ˚ ⸮
	key <AD11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, bar, registered ] }; // x X | ®
	key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, dead_horn, U1F12F ] }; // ç Ç ̛ 🄯
	key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ
	key <AC02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, twosubscript, section ] }; // i I ₂ §
	key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, twosuperior, paragraph ] }; // e E ² ¶
	key <AC04> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù
	key <AC05> { type[group1] = "FOUR_LEVEL", [ comma, semicolon, endash, checkmark ] }; // , ; – ✓
	key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, grave, U2605 ] }; // p P ` ★
	key <AC07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, ampersand, U2B05 ] }; // t T & ⬅
	key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, infinity, U2B07 ] }; // s S ∞ ⬇
	key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, Lcaron, U2B06 ] }; // r R Ľ ⬆
	key <AC10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U27A1 ] }; // n N ~ ➡
	key <AC11> { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, dead_diaeresis, exclamdown ] }; // ^ ! ¨ ¡
	key <BKSL> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, rightarrow, trademark ] }; // z Z → ™
	key <LSGT> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ ecircumflex, Ecircumflex, oslash, Oslash ] }; // ê Ê ø Ø
	key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, dead_longsolidusoverlay, U2388 ] }; // k K ̸ ⎈
	key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, dead_abovedot, U2325 ] }; // y Y ˙ ⌥
	key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, U2318 ] }; // è È ` ⌘
	key <AB04> { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … ·
	key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U2022, ballotcross ] }; // w W • ✗
	key <AB06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, mu, U2723 ] }; // g G µ ✣
	key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, U2660 ] }; // c C ¸ ♠
	key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, heart ] }; // m M ¯ ♥
	key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_breve, diamond ] }; // h H ˘ ♦
	key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, club ] }; // v V ˇ ♣
	key <SPCE> { type[group1] = "FOUR_LEVEL", [ space, U202F, nobreakspace, hyphen ] }; //       ­
    key <AC01> { [            a,            A,          agrave,           Agrave ] };
    key <AC09> { [            i,            I,          egrave,           Egrave ] };
    key <AC10> { [            u,            U,          ugrave,           Ugrave ] };

	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(pc105)"

  // 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.
    key <SPCE> { [        space,        space,    nobreakspace,     nobreakspace ] };

  // 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.

  // _However_ however, this is Wayland, so we try
	include "level5(ralt_switch)"
    include "level3(ralt_switch)"
};

  name[group1]= "French (Ergo-L 0.6)";
partial alphanumeric_keys
xkb_symbols "colemak_dh_iso" {

  key.type[group1] = "EIGHT_LEVEL";
    include "fr(colemak_dh)"
    name[Group1]= "French (Colemak-DH ISO)";

  // Digits
  key <AE01> {[ 1               , exclam          , notsign         , U201E           , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 1 ! ¬ „
  key <AE02> {[ 2               , at              , guillemotleft   , U201C           , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 2 @ « “
  key <AE03> {[ 3               , numbersign      , guillemotright  , U201D           , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 3 # » ”
  key <AE04> {[ 4               , dollar          , sterling        , cent            , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 4 $ £ ¢
  key <AE05> {[ 5               , percent         , EuroSign        , U2030           , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 5 % € ‰
  key <AE06> {[ 6               , asciicircum     , yen             , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 6 ^ ¥
  key <AE07> {[ 7               , ampersand       , currency        , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 7 & ¤
  key <AE08> {[ 8               , asterisk        , section         , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 8 * §
  key <AE09> {[ 9               , parenleft       , paragraph       , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 9 ( ¶
  key <AE10> {[ 0               , parenright      , degree          , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // 0 ) °
    key <AB05> { [ backslash, bar, asciitilde, brokenbar] };

  // Letters, first row
  key <AD01> {[ q               , Q               , ae              , AE              , 1               , VoidSymbol      , VoidSymbol, VoidSymbol]}; // q Q æ Æ 1
  key <AD02> {[ c               , C               , ccedilla        , Ccedilla        , bracketleft     , VoidSymbol      , VoidSymbol, VoidSymbol]}; // c C ç Ç [
  key <AD03> {[ o               , O               , oe              , OE              , bracketright    , VoidSymbol      , VoidSymbol, VoidSymbol]}; // o O œ Œ ]
  key <AD04> {[ p               , P               , ocircumflex     , Ocircumflex     , dollar          , VoidSymbol      , VoidSymbol, VoidSymbol]}; // p P ô Ô $
  key <AD05> {[ w               , W               , VoidSymbol      , VoidSymbol      , percent         , U2030           , VoidSymbol, VoidSymbol]}; // w W     % ‰
  key <AD06> {[ j               , J               , VoidSymbol      , VoidSymbol      , asciicircum     , dead_circumflex , VoidSymbol, VoidSymbol]}; // j J     ^ ^
  key <AD07> {[ m               , M               , mu              , VoidSymbol      , ampersand       , VoidSymbol      , VoidSymbol, VoidSymbol]}; // m M µ   &
  key <AD08> {[ d               , D               , VoidSymbol      , VoidSymbol      , asterisk        , multiply        , VoidSymbol, VoidSymbol]}; // d D     * ×
  key <AD09> {[ ISO_Level3_Latch, dead_diaeresis  , grave           , VoidSymbol      , apostrophe      , dead_acute      , VoidSymbol, VoidSymbol]}; // ` ¨ `   ' ´
  key <AD10> {[ f               , F               , VoidSymbol      , VoidSymbol      , 0               , VoidSymbol      , VoidSymbol, VoidSymbol]}; // f F     0
    include "level3(ralt_switch)"
};

  // Letters, second row
  key <AC01> {[ a               , A               , agrave          , Agrave          , braceleft       , VoidSymbol      , VoidSymbol, VoidSymbol]}; // a A à À {
  key <AC02> {[ s               , S               , eacute          , Eacute          , parenleft       , U207D           , VoidSymbol, VoidSymbol]}; // s S é É ( ⁽
  key <AC03> {[ e               , E               , egrave          , Egrave          , parenright      , U207E           , VoidSymbol, VoidSymbol]}; // e E è È ) ⁾
  key <AC04> {[ n               , N               , ecircumflex     , Ecircumflex     , braceright      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // n N ê Ê }
  key <AC05> {[ comma           , semicolon       , periodcentered  , U2022           , equal           , notequal        , VoidSymbol, VoidSymbol]}; // , ; · • = ≠
  key <AC06> {[ l               , L               , VoidSymbol      , VoidSymbol      , plus            , plusminus       , VoidSymbol, VoidSymbol]}; // l L     + ±
  key <AC07> {[ r               , R               , VoidSymbol      , VoidSymbol      , minus           , emdash          , VoidSymbol, VoidSymbol]}; // r R     - —
  key <AC08> {[ t               , T               , icircumflex     , Icircumflex     , less            , lessthanequal   , VoidSymbol, VoidSymbol]}; // t T î Î < ≤
  key <AC09> {[ i               , I               , ucircumflex     , Ucircumflex     , greater         , greaterthanequal, VoidSymbol, VoidSymbol]}; // i I û Û > ≥
  key <AC10> {[ u               , U               , ugrave          , Ugrave          , quotedbl        , dead_diaeresis  , VoidSymbol, VoidSymbol]}; // u U ù Ù " ¨
partial alphanumeric_keys
xkb_symbols "colemak_dh_ortho" {

  // Letters, third row
  key <AB01> {[ z               , Z               , acircumflex     , Acircumflex     , asciitilde      , dead_tilde      , VoidSymbol, VoidSymbol]}; // z Z â Â ~ ~
  key <AB02> {[ x               , X               , ssharp          , U1E9E           , grave           , dead_grave      , VoidSymbol, VoidSymbol]}; // x X ß ẞ ` `
  key <AB03> {[ minus           , question        , emdash          , VoidSymbol      , bar             , brokenbar       , VoidSymbol, VoidSymbol]}; // - ? —   | ¦
  key <AB04> {[ v               , V               , ubreve          , Ubreve          , underscore      , endash          , VoidSymbol, VoidSymbol]}; // v V ŭ Ŭ _ –
  key <AB05> {[ b               , B               , VoidSymbol      , VoidSymbol      , slash           , division        , VoidSymbol, VoidSymbol]}; // b B     / ÷
  key <AB06> {[ period          , colon           , ellipsis        , VoidSymbol      , backslash       , VoidSymbol      , VoidSymbol, VoidSymbol]}; // . : …   backslash
  key <AB07> {[ h               , H               , VoidSymbol      , VoidSymbol      , at              , VoidSymbol      , VoidSymbol, VoidSymbol]}; // h H     @
  key <AB08> {[ g               , G               , VoidSymbol      , VoidSymbol      , numbersign      , dead_cedilla    , VoidSymbol, VoidSymbol]}; // g G     # ¸
  key <AB09> {[ y               , Y               , VoidSymbol      , VoidSymbol      , exclam          , notsign         , VoidSymbol, VoidSymbol]}; // y Y     ! ¬
  key <AB10> {[ k               , K               , VoidSymbol      , VoidSymbol      , question        , VoidSymbol      , VoidSymbol, VoidSymbol]}; // k K     ?
    include "fr(colemak_dh)"
    name[Group1]= "French (Colemak-DH Ortholinear)";

  // Pinky keys
  key <AE11> {[ slash           , underscore      , division        , endash          , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // / _ ÷ –
  key <AE12> {[ equal           , plus            , notequal        , plusminus       , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // = + ≠ ±
  key <AE13> {[ VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; //
  key <AD11> {[ bracketleft     , braceleft       , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // [ {
  key <AD12> {[ bracketright    , braceright      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // ] }
  key <AC11> {[ apostrophe      , quotedbl        , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // ' "
  key <AB11> {[ VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; //
  key <TLDE> {[ grave           , asciitilde      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // ` ~
  key <BKSL> {[ backslash       , bar             , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // \ |
  key <LSGT> {[ less            , greater         , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol, VoidSymbol]}; // < >
    key <AB01> { [            z,            Z,              ae,               AE ] };
    key <AB02> { [            x,            X, dead_circumflex,       asciitilde ] };
    key <AB03> { [            c,            C,        ccedilla,         Ccedilla ] };
    key <AB04> { [            d,            D,  dead_diaeresis,       asciitilde ] };
    key <AB05> { [            v,            V,              oe,               OE ] };

  // Space bar
  key <SPCE> {[ space           , U202F           , U2019           , U2019           ],[ space           , nobreakspace    ]}; //     ’ ’
};

// vim: ft=xkb:fdm=indent:ts=2:nowrap