From dda756f811ae89dad7c27f683e242a3ce4297816 Mon Sep 17 00:00:00 2001 From: Gerry Agbobada Date: Tue, 26 Sep 2023 21:59:13 +0200 Subject: [PATCH] Switch to colemak-dh-fr keyboard layout --- .../plasma-workspace/env/setkeymap.sh | 4 +- home/dot_config/xkb/rules/evdev.lst | 5 +- home/dot_config/xkb/rules/evdev.xml | 19 +- home/dot_config/xkb/symbols/fr | 194 +++--------------- 4 files changed, 47 insertions(+), 175 deletions(-) diff --git a/home/dot_config/plasma-workspace/env/setkeymap.sh b/home/dot_config/plasma-workspace/env/setkeymap.sh index 61144ec..f180ab7 100644 --- a/home/dot_config/plasma-workspace/env/setkeymap.sh +++ b/home/dot_config/plasma-workspace/env/setkeymap.sh @@ -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 diff --git a/home/dot_config/xkb/rules/evdev.lst b/home/dot_config/xkb/rules/evdev.lst index 22bbaf5..ca4c2b2 100644 --- a/home/dot_config/xkb/rules/evdev.lst +++ b/home/dot_config/xkb/rules/evdev.lst @@ -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) diff --git a/home/dot_config/xkb/rules/evdev.xml b/home/dot_config/xkb/rules/evdev.xml index 9ff4275..d92c1b3 100644 --- a/home/dot_config/xkb/rules/evdev.xml +++ b/home/dot_config/xkb/rules/evdev.xml @@ -18,16 +18,23 @@ - optimot_cinq_ergo - optimot_ergo - French (Optimot Ergo 1.5) + colemak_dh + colemak_dh + French (Colemak-DH) - ergol_six - ergol_six - French (Ergo-L 0.6) + colemak_dh_iso + colemak_dh_iso + French (Colemak-DH ISO) + + + + + colemak_dh_ortho + colemak_dh_ortho + French (Colemak-DH Ortholinear) diff --git a/home/dot_config/xkb/symbols/fr b/home/dot_config/xkb/symbols/fr index fdd914a..60857ae 100644 --- a/home/dot_config/xkb/symbols/fr +++ b/home/dot_config/xkb/symbols/fr @@ -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 { [ o, O, ocircumflex, Ocircumflex ] }; + key { [ y, Y, ecircumflex, Ecircumflex ] }; + key { [ semicolon, colon, ucircumflex, Ucircumflex ] }; - key { type[group1] = "FOUR_LEVEL", [ dollar, EuroSign, dead_currency, copyright ] }; // $ € ¤ © - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 1, leftdoublequotemark, onequarter ] }; // « 1 “ ¼ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 2, rightdoublequotemark, onehalf ] }; // » 2 ” ½ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 3, doublelowquotemark, threequarters ] }; // " 3 „ ¾ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 4, U2011, onethird ] }; // - 4 ‑ ⅓ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 5, plusminus, twothirds ] }; // + 5 ± ⅔ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 6, multiply, U273B ] }; // * 6 × ✻ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 7, backslash, division ] }; // / 7 \ ÷ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ equal, 8, notequal, U2248 ] }; // = 8 ≠ ≈ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 9, bracketleft, minutes ] }; // ( 9 [ ′ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 0, bracketright, seconds ] }; // ) 0 ] ″ - key { type[group1] = "FOUR_LEVEL", [ at, underscore, U2212, ordfeminine ] }; // @ _ − ª - key { type[group1] = "FOUR_LEVEL", [ numbersign, percent, degree, masculine ] }; // # % ° º - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, less, U2A7D ] }; // à À < ⩽ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j, J, greater, U2A7E ] }; // j J > ⩾ - key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, U274F ] }; // é É ´ ❏ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, emdash, U2756 ] }; // b B — ❖ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, leftsinglequotemark, U2726 ] }; // f F ‘ ✦ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d, D, braceleft, dagger ] }; // d D { † - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, braceright, doubledagger ] }; // l L } ‡ - key { type[group1] = "FOUR_LEVEL", [ apostrophe, question, rightsinglequotemark, questiondown ] }; // ' ? ’ ¿ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering, U2E2E ] }; // q Q ˚ ⸮ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, bar, registered ] }; // x X | ® - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, dead_horn, U1F12F ] }; // ç Ç ̛ 🄯 - key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, twosubscript, section ] }; // i I ₂ § - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, twosuperior, paragraph ] }; // e E ² ¶ - key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù - key { type[group1] = "FOUR_LEVEL", [ comma, semicolon, endash, checkmark ] }; // , ; – ✓ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, grave, U2605 ] }; // p P ` ★ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t, T, ampersand, U2B05 ] }; // t T & ⬅ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, infinity, U2B07 ] }; // s S ∞ ⬇ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, Lcaron, U2B06 ] }; // r R Ľ ⬆ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n, N, dead_tilde, U27A1 ] }; // n N ~ ➡ - key { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, dead_diaeresis, exclamdown ] }; // ^ ! ¨ ¡ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z, Z, rightarrow, trademark ] }; // z Z → ™ - key { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ ecircumflex, Ecircumflex, oslash, Oslash ] }; // ê Ê ø Ø - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, dead_longsolidusoverlay, U2388 ] }; // k K ̸ ⎈ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, dead_abovedot, U2325 ] }; // y Y ˙ ⌥ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, U2318 ] }; // è È ` ⌘ - key { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … · - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, U2022, ballotcross ] }; // w W • ✗ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, mu, U2723 ] }; // g G µ ✣ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, dead_cedilla, U2660 ] }; // c C ¸ ♠ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, heart ] }; // m M ¯ ♥ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dead_breve, diamond ] }; // h H ˘ ♦ - key { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V, dead_caron, club ] }; // v V ˇ ♣ - key { type[group1] = "FOUR_LEVEL", [ space, U202F, nobreakspace, hyphen ] }; //     ­ + key { [ a, A, agrave, Agrave ] }; + key { [ i, I, egrave, Egrave ] }; + key { [ 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 { [ 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 {[ 1 , exclam , notsign , U201E , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 1 ! ¬ „ - key {[ 2 , at , guillemotleft , U201C , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 2 @ « “ - key {[ 3 , numbersign , guillemotright , U201D , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 3 # » ” - key {[ 4 , dollar , sterling , cent , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 4 $ £ ¢ - key {[ 5 , percent , EuroSign , U2030 , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 5 % € ‰ - key {[ 6 , asciicircum , yen , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 6 ^ ¥ - key {[ 7 , ampersand , currency , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 7 & ¤ - key {[ 8 , asterisk , section , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 8 * § - key {[ 9 , parenleft , paragraph , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 9 ( ¶ - key {[ 0 , parenright , degree , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // 0 ) ° + key { [ backslash, bar, asciitilde, brokenbar] }; - // Letters, first row - key {[ q , Q , ae , AE , 1 , VoidSymbol , VoidSymbol, VoidSymbol]}; // q Q æ Æ 1 - key {[ c , C , ccedilla , Ccedilla , bracketleft , VoidSymbol , VoidSymbol, VoidSymbol]}; // c C ç Ç [ - key {[ o , O , oe , OE , bracketright , VoidSymbol , VoidSymbol, VoidSymbol]}; // o O œ Œ ] - key {[ p , P , ocircumflex , Ocircumflex , dollar , VoidSymbol , VoidSymbol, VoidSymbol]}; // p P ô Ô $ - key {[ w , W , VoidSymbol , VoidSymbol , percent , U2030 , VoidSymbol, VoidSymbol]}; // w W % ‰ - key {[ j , J , VoidSymbol , VoidSymbol , asciicircum , dead_circumflex , VoidSymbol, VoidSymbol]}; // j J ^ ^ - key {[ m , M , mu , VoidSymbol , ampersand , VoidSymbol , VoidSymbol, VoidSymbol]}; // m M µ & - key {[ d , D , VoidSymbol , VoidSymbol , asterisk , multiply , VoidSymbol, VoidSymbol]}; // d D * × - key {[ ISO_Level3_Latch, dead_diaeresis , grave , VoidSymbol , apostrophe , dead_acute , VoidSymbol, VoidSymbol]}; // ` ¨ ` ' ´ - key {[ f , F , VoidSymbol , VoidSymbol , 0 , VoidSymbol , VoidSymbol, VoidSymbol]}; // f F 0 + include "level3(ralt_switch)" +}; - // Letters, second row - key {[ a , A , agrave , Agrave , braceleft , VoidSymbol , VoidSymbol, VoidSymbol]}; // a A à À { - key {[ s , S , eacute , Eacute , parenleft , U207D , VoidSymbol, VoidSymbol]}; // s S é É ( ⁽ - key {[ e , E , egrave , Egrave , parenright , U207E , VoidSymbol, VoidSymbol]}; // e E è È ) ⁾ - key {[ n , N , ecircumflex , Ecircumflex , braceright , VoidSymbol , VoidSymbol, VoidSymbol]}; // n N ê Ê } - key {[ comma , semicolon , periodcentered , U2022 , equal , notequal , VoidSymbol, VoidSymbol]}; // , ; · • = ≠ - key {[ l , L , VoidSymbol , VoidSymbol , plus , plusminus , VoidSymbol, VoidSymbol]}; // l L + ± - key {[ r , R , VoidSymbol , VoidSymbol , minus , emdash , VoidSymbol, VoidSymbol]}; // r R - — - key {[ t , T , icircumflex , Icircumflex , less , lessthanequal , VoidSymbol, VoidSymbol]}; // t T î Î < ≤ - key {[ i , I , ucircumflex , Ucircumflex , greater , greaterthanequal, VoidSymbol, VoidSymbol]}; // i I û Û > ≥ - key {[ u , U , ugrave , Ugrave , quotedbl , dead_diaeresis , VoidSymbol, VoidSymbol]}; // u U ù Ù " ¨ +partial alphanumeric_keys +xkb_symbols "colemak_dh_ortho" { - // Letters, third row - key {[ z , Z , acircumflex , Acircumflex , asciitilde , dead_tilde , VoidSymbol, VoidSymbol]}; // z Z â  ~ ~ - key {[ x , X , ssharp , U1E9E , grave , dead_grave , VoidSymbol, VoidSymbol]}; // x X ß ẞ ` ` - key {[ minus , question , emdash , VoidSymbol , bar , brokenbar , VoidSymbol, VoidSymbol]}; // - ? — | ¦ - key {[ v , V , ubreve , Ubreve , underscore , endash , VoidSymbol, VoidSymbol]}; // v V ŭ Ŭ _ – - key {[ b , B , VoidSymbol , VoidSymbol , slash , division , VoidSymbol, VoidSymbol]}; // b B / ÷ - key {[ period , colon , ellipsis , VoidSymbol , backslash , VoidSymbol , VoidSymbol, VoidSymbol]}; // . : … backslash - key {[ h , H , VoidSymbol , VoidSymbol , at , VoidSymbol , VoidSymbol, VoidSymbol]}; // h H @ - key {[ g , G , VoidSymbol , VoidSymbol , numbersign , dead_cedilla , VoidSymbol, VoidSymbol]}; // g G # ¸ - key {[ y , Y , VoidSymbol , VoidSymbol , exclam , notsign , VoidSymbol, VoidSymbol]}; // y Y ! ¬ - key {[ k , K , VoidSymbol , VoidSymbol , question , VoidSymbol , VoidSymbol, VoidSymbol]}; // k K ? + include "fr(colemak_dh)" + name[Group1]= "French (Colemak-DH Ortholinear)"; - // Pinky keys - key {[ slash , underscore , division , endash , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // / _ ÷ – - key {[ equal , plus , notequal , plusminus , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // = + ≠ ± - key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // - key {[ bracketleft , braceleft , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // [ { - key {[ bracketright , braceright , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // ] } - key {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // ' " - key {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // - key {[ grave , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // ` ~ - key {[ backslash , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // \ | - key {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol, VoidSymbol]}; // < > + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ v, V, oe, OE ] }; - // Space bar - key {[ space , U202F , U2019 , U2019 ],[ space , nobreakspace ]}; //   ’ ’ }; - -// vim: ft=xkb:fdm=indent:ts=2:nowrap -- 2.45.2