Utilisateur:Kaze/Bépo-intl

De Disposition de clavier francophone et ergonomique bépo

Le Bépo ne me convenant pas pour la prog, l'anglais ou l'allemand, je teste quelques modifs.

Problème constaté

  • le W est très mal placé sur la disposition Bépo : ce n'est pas gênant pour le français, mais c'est rédhibitoire pour la prog, l'anglais ou l'allemand ;
  • le Z, très courant en allemand, est lui aussi mal placé sur la disposition courante ;
  • les digrammes </ et />, très courants de nos jours (HTML/XML), sont particulièrement pénibles — ce qui est d'autant plus regrettable qu'ils sont très faciles sur un clavier Qwerty standard.

En l'état, je trouve le Bépo moins adapté à la prog que l'antique Qwerty ou même l'Azerty (moyennant une petite adaptation de la couche AltGr pour avoir les accolades et les crochets sous la main gauche).

Par ailleurs, je doute fortement qu'une disposition ergonomique limitée au français puisse susciter un engouement général. Développer une disposition de clavier c'est bien, mais c'est encore mieux si elle peut être largement utilisée.

Vers un « Bépo-international » : Bépow!

Principe

Pour rendre le Bépo plus polyvalent sans casser toute la disposition :

  • on remplace l'accent circonflexe mort par un accent grave mort, ce qui permet de caser W et Z sous la main gauche ;
  • l'accent circonflexe mort prend la place de « Ù » en AltGr+{U}, le hatchek passe en Shift+AltGr+{U} ;
  • plutôt que de laisser W et Z en double, les accents morts ^ˇ¨˙ sont dupliqués en [^] et [$].
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ #  │ 1 „│ 2 ”│ 3 ”│ 4  │ 5  ║ 6  │ 7  │ 8  │ 9  │ 0  │ ^  │ `  ║        ║
│ $  │ " —│ « <│ » >│ ( [│ ) ]║ @  │ +  │ -  │ /  │ *  │ =  │ %  ║ <--    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║  |<-  ║ B  │ É  │ P  │ O  │ W  ║ !  │ V  │ D  │ L  │ J  │ ˇ˙  ║   | ║
║  ->|  ║   |│    │   &│   œ│   ˘`  │    │    │    │    │ ^¨  ║ <-' ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║ A  │ U  │ I  │ E  │ ;  ║ C  │ T  │ S  │ R  │ N  │ M  │ Ç  ║    ║
║  CAPS  ║   æ│   ^¨│   €│ ,  ║    │    │    │    │    │    │    ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║   ^  ║  Ê │ Z  │ Y  │ X  │ :  │ K  ║ ?  │ Q  │ G  │ H  │ F  ║     ^     ║
║   |  ║   /│   \│   {│   }│ . …│   ~║ '  │    │    │    │    ║     |     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦═════╣
║       ║      ║     ║ Espace insécable          ║     ║      ║     ║     ║
║ Ctrl  ║ WinG ║ Alt ║ Espace            _       ║AltGr║ WinD ║WinM ║Ctrl ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩═════╝

C'est le minimum pour utiliser le fr-dvorak-bépo en anglais ou en allemand.

Fichier XKB

On peut se créer très facilement une telle variante Bépo-intl en ajoutant une section dans le fichier xkb :

// fr-dvorak-bepo-intl
partial alphanumeric_keys
xkb_symbols "bepo-intl" {
    include "fr(bepo)"

    // guillemets
    key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl       , 1 , emdash  , doublelowquotemark   ] }; // " 1 — „
    key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft  , 2 , less    , leftdoublequotemark  ] }; // « 2 < “
    key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright , 3 , greater , rightdoublequotemark ] }; // » 3 > ”

    // accents morts : circonflexe et grave
    key <AD06> { type[group1] = "FOUR_LEVEL", [ dead_grave , exclam   , VoidSymbol          , exclamdown           ] }; // ` !   ¡
    key <AC02> { type[group1] = "FOUR_LEVEL", [ u          , U        , dead_circumflex     , dead_caron           ] }; // u U ^  

    // accents morts en double sous {W} et {Z}
    key <AD11> { type[group1] = "FOUR_LEVEL", [ dead_circumflex , dead_caron    , schwa        , SCHWA             ] }; // ^ ˇ ə Ə 
    key <AD12> { type[group1] = "FOUR_LEVEL", [ dead_diaeresis  , dead_abovedot , dead_breve   , VoidSymbol        ] }; // ¨ ¨ ¨ 

    // W et Z sous la main gauche
    key <AD05> { type[group1] = "FOUR_LEVEL", [ w          , W        , dead_breve          , VoidSymbol           ] }; // w W ˘    
    key <AB01> { type[group1] = "FOUR_LEVEL", [ z          , Z        , backslash          , VoidSymbol ] }; // z Z \
};

La disposition est alors activée comme suit :

setxkbmap fr -variant bepo-intl

Fichier xmodmap

Pour ceux qui préfèrent ce format, enregistrer le fichier suivant sous le nom bepow.map (par exemple) :

! accents morts : circonflexe et grave
keycode 29 = dead_grave exclam VoidSymbol exclamdown VoidSymbol exclamdown
keycode 39 = u U dead_circumflex dead_caron dead_circumflex dead_caron

! accents morts en double sous {W} et {Z}
keycode 34 = dead_circumflex dead_caron
keycode 35 = dead_diaeresis  dead_abovedot

! W et Z sous la main gauche
keycode 28 = w W dead_breve VoidSymbol dead_breve VoidSymbol
keycode 54 = z Z braceright VoidSymbol braceright VoidSymbol

La disposition est alors activée comme suit :

setxkbmap fr -variant bepo
xmodmap bepow.map

Avantages

  • bien meilleure compatibilité avec l'anglais, l'allemand et la prog ;
  • meilleur équilibre de la charge des doigts en français (réduction de la charge de l'index gauche) ;
  • le digramme « où » est facilité ;
  • deux places en AltGr+{W} et AltGr+{!}, et on pourrait aussi utiliser [^$] pour d'autres caractères ;
  • meilleure cohérence des diacritiques.

Inconvénient

  • légère perte d'efficacité pour le français puisque « È » et « À » requièrent désormais une touche morte.

Je pense que c'est très largement compensé par le gain de polyvalence… mais tout dépend évidemment de l'usage de chacun.

Variante « développeur »

Principe

Sur la base de la version initiale :

  • on passe les crochets en AltGr+{U/I} ;
  • les crochets < > remplacent les guillemets « » :
    • ça facilite beaucoup les digrammes </ et /> ;
    • c'est plus cohérent : tous les guillemets typographiques passent en AltGr ;
    • ça ne gêne pas au quotidien, puisque les traitements de texte savent remplacer le guillemet droit (") par la version typographique correspondant à la langue du document — en ajoutant l'espace insécable si besoin est ;
  • il reste deux places libres supplémentaires en AltGr+{4-5}.
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ #  │ 1 „│ 2 ”│ 3 ”│ 4  │ 5  ║ 6  │ 7  │ 8  │ 9  │ 0  │ ^  │ `  ║        ║
│ $  │ " —│ < «> »│ (  │ )  ║ @  │ +  │ -  │ /  │ *  │ =  │ %  ║ <--    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║  |<-  ║ B  │ É  │ P  │ O  │ W  ║ !  │ V  │ D  │ L  │ J  │ ˇ˙  ║   | ║
║  ->|  ║   |│   ´│   &│   œ│    ║ `  │    │    │    │    │ ^¨  ║ <-' ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║ A  │ U  │ I  │ E  │ ;  ║ C  │ T  │ S  │ R  │ N  │ M  │ Ç  ║    ║
║  CAPS  ║   æ│   []│   €│ ,  ║    │    │    │    │    │    │    ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║   ^  ║  Ê │ Z  │ Y  │ X  │ :  │ K  ║ ?  │ Q  │ G  │ H  │ F  ║     ^     ║
║   |  ║   /│   \│   {│   }│ . …│   ~║ '  │    │    │    │    ║     |     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦═════╣
║       ║      ║     ║ Espace insécable          ║     ║      ║     ║     ║
║ Ctrl  ║ WinG ║ Alt ║ Espace            _       ║AltGr║ WinD ║WinM ║Ctrl ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩═════╝

Fichier XKB

// fr-dvorak-bepo-intl-dev
partial alphanumeric_keys
xkb_symbols "bepo-intl-dev" {

    include "fr(bepo)"

    name[Group1]= "French (Bepow, ergonomic, Dvorak way)";

    // chevrons et guillemets
    key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl  , 1 , emdash        , doublelowquotemark   ] }; // " 1 — „
    key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ less      , 2 , guillemotleft , leftdoublequotemark  ] }; // < 2 « “
    key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ greater  , 3 , guillemotright , rightdoublequotemark ] }; // > 3 » ”

    // accent grave mort
    key <AD06> { type[group1] = "FOUR_LEVEL", [ dead_grave , exclam   , VoidSymbol           , exclamdown           ] }; // ` !   ¡

    // crochets
    key <AC02> { type[group1] = "FOUR_LEVEL", [ u          , U        , bracketleft          , VoidSymbol           ] }; // u U [
    key <AC03> { type[group1] = "FOUR_LEVEL", [ i          , I        , bracketright         , VoidSymbol           ] }; // u U [

    // accents morts en double sous {W} et {Z}
    key <AD11> { type[group1] = "FOUR_LEVEL", [ dead_circumflex , dead_caron    , schwa      , SCHWA                ] }; // ^ ˇ ə Ə
    key <AD12> { type[group1] = "FOUR_LEVEL", [ dead_diaeresis  , dead_abovedot , dead_breve , VoidSymbol           ] }; // ¨ ˇ ˘

    // W et Z sous la main gauche
    key <AD05> { type[group1] = "FOUR_LEVEL", [ w          , W        , dead_breve           , VoidSymbol           ] }; // w W ˘
    key <AB01> { type[group1] = "FOUR_LEVEL", [ z          , Z        , backslash            , VoidSymbol           ] }; // z Z \
};

La disposition est alors activée comme suit :

setxkbmap fr -variant bepo-intl-dev

Avantages

  • les crochets [] gagnent beaucoup en accessibilité (programmation, wiki…) ;
  • les accents circonflexe et tréma sont plus faciles à utiliser, non seulement pour le français, mais aussi pour l'allemand (umlauts).

Inconvénients

Je cherche encore… Ce n'est pas parfait mais c'est une amélioration très nette pour la prog, l'anglais, l'allemand, ou l'édition de wikis, sans gros impact sur le français — voire même, je le trouve plus confortable pour le français, car j'ai horreur d'utiliser AltGr pour les caractères accentués (ù) ou les diacritiques morts : mon pouce n'est pas assez rapide pour lâcher AltGr à temps quand je tape vite.

Bref, ça rend le bépo compatible avec mon utilisation.

Variante « traducteur », sans {Ç} ni {Ê}

Principe

  • Ç passe en AltGr+{,} pour libérer une touche à droite et contribuer à alléger la charge de l'auriculaire ;
  • {Ê} est remplacé par une touche AltGr mort (◻), afin d'accéder plus facilement aux caractères spéciaux de la moitié droite du clavier :
    • ça ne symétrise pas les modifieurs, mais ça reste bien plus agréable pour accéder à la couche AltGr de la moitié droite du clavier ;
    • c'est applicable proprement sous toutes les plate-formes, contrairement au fait de redéfinir une touche Win ou Alt en AltGr : sous Windows™ et MacOS c'est une touche morte comme une autre, sous Linux cela correspond à ISO_Level3_Latch ;
    • Shift+{◻} pourrait être utilisé pour Compose (à vérifier) ;
  • les guillemets anglais de second niveau passent en Shift+AltGr+[4-5] ;
  • ¡¿ passent en AltGr+{!?}, c'est plus simple qu'en Shift+AltGr.
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ #  │ 1 │ 2 │ 3 │ 4 │ 5 ║ 6  │ 7  │ 8  │ 9  │ 0  │ ^  │ `  ║        ║
│ $  │ " —│ « <│ » >│ ( [│ ) ]║ @  │ +  │ -  │ /  │ *  │ =  │ %  ║ <--    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║  |<-  ║ B  │ É  │ P  │ O  │ W  ║ !  │ V  │ D  │ L  │ J  │    │    ║   | ║
║  ->|  ║   |│    │   &│   œ│    ║ ` ¡│    │    │    │    │    │    ║ <-' ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║ A  │ U  │ I  │ E  │ ;  ║ C  │ T  │ S  │ R  │ N  │ M  │    ║    ║
║  CAPS  ║   æ│   ^¨│   €│ , ç║    │    │    │    │    │    │    ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║   ^  ║    │ Z  │ Y  │ X  │ :  │ K  ║ ?  │ Q  │ G  │ H  │ F  ║     ^     ║
║   |  ║   │   \│   {│   }│ . …│   ~║ ' ¿│    │    │    │    ║     |     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦═════╣
║       ║      ║     ║ Espace insécable          ║     ║      ║     ║     ║
║ Ctrl  ║ WinG ║ Alt ║ Espace            _       ║AltGr║ WinD ║WinM ║Ctrl ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩═════╝

Avantages

  • encore plus polyvalent pour les langues étrangères :
    • les trois touches libres à droite peuvent contenir 6 symboles ou diacritiques morts, 12 avec AltGr ;
    • les caractères en AltGr + [main droite] sont accessibles via la touche AltGr morte ;
  • sur un clavier pc104, « Ç » est plus facile d'accès ;
  • réduction (sensible ?) de la charge des auriculaires en français, « Ê » et « Ç » n'étant plus sur ces doigts-là.

Inconvénients

  • perte d'efficacité pour le français, « Ê » et « Ç » n'étant plus accessible directement ;
  • AltGr pour les caractères accentués français (Ç), c'est nul.

L'accent circonflexe mort pourrait aussi être placé en AltGr+{E} afin de faciliter « ê » sur les claviers pc104, mais il faudrait alors faire « € » avec la touche monétaire morte.

Par souci de cohérence, « Ç » pourrait être en AltGr+{C} plutôt qu'en AltGr+{,}, puisqu'on dispose désormais d'une touche AltGr morte (du moins, sur les claviers pc104) ; le principal défaut serait que les digrammes « aç » comporteraient une répétition de l'auriculaire gauche.

Version Némolivier (chiffres en direct, « - » plus accessible) 

Sur la même base de travail, la version de NémOlivier, avec le xkb ici.

 ╭─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────╮
 │ # ¶ │ │ " „ │ < “ │ >  ”│ (   │ )   │ │ [   │ ] ¼ │ / ½ │ * ¾ │ = ¬ │ │ °   │ `   │
 │ $ – │ │ 1 @ │ 2 « │ 3  »│ 4   │ 5   │ │ 6 ^ │ 7   │ 8 ÷ │ 9 × │ 0 ≠ │ │ + ± │ % ‰ │
 ╰─────╯ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┤
         │ B   │ É   │ P § │ O Œ │ W   │ │ ! ¡ │ V   │ D   │ L   │ J   │ │ K   │comp.│
         │   | │   ´ │   & │     │   ˘ │ │ ` ˇ │     │     │   / │     │ │     │'   │
         ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────╯
         │ A Æ │ U ˙ │ I ˇ │ E ¤ │ ; Ç │ │ C   │ T   │ S   │ R ™ │ N º │ │ M   │ ╭-----╮
         │     │   ¨ │   ^ │   € │ ,   │ │   © │   þ │   ß │   ® │   ~ │ │     │ ¦ ç  ¦
 ╭-----╮ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ╰─────╯ ¦Esc     ¦
 ¦ Ê   ¦ │ Z   │ Y ‘ │ X ’ │ :   │ —   │ │ ? ¿ │ Q   │ G   │ H   │ F   │         ╰-----╯
 ¦     ¦ │   \ │   { │   } │ . … │ - ~ │ │ ’ ' │   ° │   µ │     │     │
 ╰-----╯ ╰─────┴─────┴─────┴─────┴─────╯ ╰─────┴─────┴─────┴─────┴─────╯
                   ╭───────┬─────────────────────────┬───────╮
                   │  Alt  │                         │ AltGr │
                   │       │                    _    │       │
                   ╰───────┴─────────────────────────┴───────╯
 

Des chiffres

Selon le corpus de Thomas Tempé (1 616 343 caractères) :

  • à : 7449
  • è : 4160
  • ù : 890

=> total « accent grave mort » : 12 499, c'est-à-dire entre la fréquence de « G » et « H ».

Sur ce corpus, l'utilisation d'une touche morte augmente donc le nombre de frappes de 0,72 %. Cela me parait parfaitement acceptable, surtout si l'accent grave mort est bien placé : de ce coté-là, il serait intéressant de placer cet accent mort en [O] ou [P], comme le suggère Nbrodu en page de discussion.

Conclusion

Les suggestions ci-dessus ne sont pas « clés en main », il faudrait les évaluer et les affiner.

Quoiqu'il en soit, il n'y pas de solution miracle qui améliorerait à la fois le français, la prog et les autres langues. Je crois qu'il faut donc accepter une légère perte de performance pour le français afin de gagner en polyvalence, toute la question étant de trouver le bon compromis.