- Modifié
N’étant pas satisfait par les variantes pour programmeur que j’ai vu jusqu’à présent, je propose ma variante pour GNU/Linux, basée sur une touche modificatrice de niveaux 5.
Je l’ai disposée à 2 endroits : <CAPS> et <MENU>.
Pour obtenir l’effet du verrou majuscule, on appuie simultanément sur les 2 Shifts :
— « ; » : permet de fermer facilement les blocs « { } », « [ ] » et « ( ) » ;
— « / » : pour fermer les balises « < > » ;
— « ~ » : pour les chemins absolus partant du répertoire personnel « ~/ » et « ~/. » ;
— « = » : pour instancier les variables avec les guillemets « " " » et « ' ' ».
De plus, avec le petit doigt de la main gauche sur <CAPS>, on peut atteindre aisément « { } », « [ ] » et « ( ) » avec l’index et le majeur, le « ; » avec l’annulaire, et avec la main droite « / », « " »…
Et voilà le bloc de code à placer dans /usr/share/X11/xkb/symbols/fr :
Je l’ai disposée à 2 endroits : <CAPS> et <MENU>.
include "level5(modifier_mapping)"
key <CAPS> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level5_Shift ] };
key <MENU> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level5_Shift ] };
Mais vous pouvez les disposer ailleurs bien sur…Pour obtenir l’effet du verrou majuscule, on appuie simultanément sur les 2 Shifts :
include "shift(both_capslock)"
Voilà le tableau du niveau 5 :┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
│ │ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
│ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ ┃ ⌫ ┃
┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
┃ ┃ @ │ [ │ ] │ \ │ % │ ^ │ | │ = │ + │ ? │ - │ ┃ ┃
┃ ↹ ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃
┃ ┃ ; │ { │ } │ , │ # │ & │ " │ < │ > │ ' │ ` │ ┃ ┃
┃ Mod 5 ┃ │ │ │ │ │ │ │ │ │ │ │ ┃ ┃
┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
┃ ┃ │ : │ ( │ ) │ _ │ * │ ~ │ / │ . │ $ │ ! ┃ ┃
┃ ⇧ ┃ │ │ │ │ │ │ │ │ │ │ ┃ ⇧ ┃
┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┃ Ctrl ┃ Super ┃ Alt ┃ ┃ AltGr ┃ Super ┃ Mod 5 ┃ Ctrl ┃
┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
Justifications de l’emplacement de certains symboles les uns par rapport aux autres :— « ; » : permet de fermer facilement les blocs « { } », « [ ] » et « ( ) » ;
— « / » : pour fermer les balises « < > » ;
— « ~ » : pour les chemins absolus partant du répertoire personnel « ~/ » et « ~/. » ;
— « = » : pour instancier les variables avec les guillemets « " " » et « ' ' ».
De plus, avec le petit doigt de la main gauche sur <CAPS>, on peut atteindre aisément « { } », « [ ] » et « ( ) » avec l’index et le majeur, le « ; » avec l’annulaire, et avec la main droite « / », « " »…
Et voilà le bloc de code à placer dans /usr/share/X11/xkb/symbols/fr :
partial alphanumeric_keys modifier_keys
xkb_symbols "bepo5" {
name[Group1]= "French (Bepo Prog Level5)";
key.type[Group1] = "EIGHT_LEVEL";
// First row
key <TLDE> { [ dollar, numbersign, endash, paragraph, NoSymbol ] };
key <AE01> { [ quotedbl, 1, emdash, doublelowquotemark, 1 ] };
key <AE02> { [ guillemotleft, 2, less, leftdoublequotemark, 2 ] };
key <AE03> { [ guillemotright, 3, greater, rightdoublequotemark, 3 ] };
key <AE04> { [ parenleft, 4, bracketleft, lessthanequal, 4 ] };
key <AE05> { [ parenright, 5, bracketright, greaterthanequal, 5 ] };
key <AE06> { [ at, 6, asciicircum, NoSymbol, 6 ] };
key <AE07> { [ plus, 7, plusminus, notsign, 7 ] };
key <AE08> { [ minus, 8, U2212, onequarter, 8 ] };
key <AE09> { [ slash, 9, division, onehalf, 9 ] };
key <AE10> { [ asterisk, 0, multiply, threequarters, 0 ] };
key <AE11> { [ equal, degree, notequal, minutes, NoSymbol ] };
key <AE12> { [ percent, grave, U2030, seconds, NoSymbol ] };
// Second row
key <AD01> { [ b, B, bar, brokenbar, at ] };
key <AD02> { [ eacute, Eacute, dead_acute, dead_doubleacute, bracketleft ] };
key <AD03> { [ p, P, ampersand, section, bracketright ] };
key <AD04> { [ o, O, oe, OE, backslash ] };
key <AD05> { [ egrave, Egrave, dead_grave, grave, percent ] };
key <AD06> { [ dead_circumflex, exclam, exclamdown, NoSymbol, asciicircum ] };
key <AD07> { [ v, V, dead_caron, NoSymbol, bar ] };
key <AD08> { [ d, D, eth, ETH, equal ] };
key <AD09> { [ l, L, dead_stroke, NoSymbol, plus ] };
key <AD10> { [ j, J, U0133, U0132, question ] };
key <AD11> { [ z, Z, schwa, SCHWA, NoSymbol ] };
key <AD12> { [ w, W, dead_breve, NoSymbol, NoSymbol ] };
// Third row
key <AC01> { [ a, A, ae, AE, semicolon ] };
key <AC02> { [ u, U, ugrave, Ugrave, braceleft ] };
key <AC03> { [ i, I, dead_diaeresis, dead_abovedot, braceright ] };
key <AC04> { [ e, E, EuroSign, dead_currency, comma ] };
key <AC05> { [ comma, semicolon, rightsinglequotemark, dead_horn, numbersign ] };
key <AC06> { [ c, C, copyright, U017F, ampersand ] };
key <AC07> { [ t, T, thorn, THORN, quotedbl ] };
key <AC08> { [ s, S, ssharp, U1E9E, less ] };
key <AC09> { [ r, R, registered, trademark, greater ] };
key <AC10> { [ n, N, dead_tilde, NoSymbol, apostrophe ] };
key <AC11> { [ m, M, dead_macron, masculine, grave ] };
key <BKSL> { [ ccedilla, Ccedilla, dead_cedilla, dead_belowcomma, NoSymbol ] };
// Fourth row
key <LSGT> { [ ecircumflex, Ecircumflex, slash, NoSymbol, NoSymbol ] };
key <AB01> { [ agrave, Agrave, backslash, NoSymbol, colon ] };
key <AB02> { [ y, Y, braceleft, leftsinglequotemark, parenleft ] };
key <AB03> { [ x, X, braceright, rightsinglequotemark, parenright ] };
key <AB04> { [ period, colon, ellipsis, periodcentered, underscore ] };
key <AB05> { [ k, K, asciitilde, NoSymbol, asterisk ] };
key <AB06> { [ apostrophe, question, questiondown, dead_hook, asciitilde ] };
key <AB07> { [ q, Q, dead_abovering, dead_belowdot, slash ] };
key <AB08> { [ g, G, dead_greek, NoSymbol, period ] };
key <AB09> { [ h, H, dagger, doubledagger, dollar ] };
key <AB10> { [ f, F, dead_ogonek, ordfeminine, exclam ] };
key <SPCE> { [ space, nobreakspace, underscore, U202F, space ] };
include "shift(both_capslock)"
include "level3(ralt_switch)"
include "level5(modifier_mapping)"
key <CAPS> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level5_Shift ] };
key <MENU> { type[Group1]="ONE_LEVEL", symbols[Group1] = [ ISO_Level5_Shift ] };
};
Pour l’utiliser :
setxkbmap fr -variant bepo5
J’attends des retours pour éventuellement changer l’emplacement des symboles…