Utilisateur:Kaze

De Disposition de clavier bépo

Je suis développeur, j'utilise quotidiennement l'anglais, le français et l'allemand (dans cet ordre), je ne suis donc pas forcément un bon client pour le Bépo.

J'utilise plusieurs layouts : qwerty-intl, dvorak-us, et même azerty quand je suis en clientèle. Sur mon poste perso j'utilise mes propres layouts qwerty et dvorak internationalisés. Je m'intéresse au Bépo autant pour la démarche de conception et d'optimisation que pour le layout lui-même, que j'adopterai peut-être quand il sera finalisé.

Je travaille (entre autres) pour TypeMatrix™, j'ai notamment contribué à la conception du 2030-USB. Je suis en train de faire un tutoriel d'apprentissage du clavier en XUL sous licence GPL, compatible avec les leçons de KTouch, et qui supporte le Bépo.


Modifications suggérées pour la disposition actuelle

Le schéma ci-dessous n'est pas un schéma TypeMatrix, mais une représentation de l'affectation des touches selon les méthodes de dactylographie courantes - à chaque colonne correspond un doigt et un seul. Les touches qui sont représentées en pointillés sont les deux touches « Europe » :

  • {Ç} (alias Europe-1 ou <BKSL>) est disjointe du reste du clavier car sa position dépend du type de clavier : pc104, pc105, TypeMatrix…
  • {◻} (alias Europe-2 ou <LSGT>) n'existe que sur les claviers de type pc105.

La couche AltGr n'est pas représentée car je la réserve systématiquement aux symboles tels que <>{}[]/\|¦„“”«», et ce, indépendamment de la disposition utilisée.

╭─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────╮
│ #   │ │ "   │ «   │ »   │ (   │ )   │ │ _   │ +   │ -   │ /   │ *   │ │ @   │ µ   │
│ $   │ │ 1   │ 2 < │ 3 > │ 4 [ │ 5 ] │ │ 6   │ 7   │ 8   │ 9   │ 0   │ │ =   │ %   │
╰─────╯ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┤
        │ B   │ É   │ P   │ O   │ È   │ │ !   │ V   │ D   │ L   │ J   │ │ Z   │ W   │
        │     │     │     │     │     │ │ ^   │     │     │     │     │ │     │     │
        ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────╯
        │ A   │ U   │ I   │ E   │ ;   │ │ C   │ T   │ S   │ R   │ N   │ │ M   │ ╭-----╮
        │     │     │     │     │ ,   │ │     │     │     │     │     │ │     │ ¦ Ç   ¦
╭-----╮ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ╰─────╯ ¦     ¦
¦ Ê   ¦ │ X   │ Y   │ À   │ :   │ K   │ │ ?   │ Q   │ G   │ H   │ F   │         ╰-----╯
¦     ¦ │     │     │     │ . { │   } │ │ '   │     │     │     │     │
╰-----╯ ╰─────┴─────┴─────┴─────┴─────╯ ╰─────┴─────┴─────┴─────┴─────╯
                  ╭───────┬─────────────────────────┬───────╮
                  │  Alt  │                         │ AltGr │
                  │       │                         │       │
                  ╰───────┴─────────────────────────┴───────╯


Inversion ?/; pour une meilleure cohérence de la ponctuation :

  • le point-virgule au-dessus de la virgule, les deux points au-dessus du point ;
  • ./:/,/; sous la main gauche, !/? sous la main droite ; les ponctuations courantes restent avec les voyelles sous la main gauche, comme sur le Dvorak ;
  • les deux caractères « ? » et « ; » ont sensiblement la même fréquence en français, il n'y a donc pas de raison ergonomique de mettre « ? » en Maj+{,}.

C'est essentiellement pour la cohérence générale que je propose cette inversion : c'est une amélioration adoptée par tous les layouts QWERTY/QWERTZ européens sur leur ancêtre américain.


Les chiffres en accès direct : inutile de reprendre les pires défauts de l'AZERTY…

  • ça facilite l'insertion d'espaces insécables avec les guillemets « » ;
  • on n'utilise que très rarement plusieurs caractères tels que "<>()_+-/* à la suite, contrairement aux chiffres ;
  • dans le cadre d'une utilisation professionnelle, et contrairement à une discussion type IRC, on a très souvent recours aux nombres pour exprimer des quantités, des montants ou des dates - et dans ce cadre-là, l'utilisation du ShiftLock est malpratique ;
  • l'utilisation du pavé numérique est fortement déconseilée à ceux qui utilisent la souris de la main droite (soit la quasi-totalité des utilisateurs), car cause de positionnement dyssymétrique ; mais si les chiffres ne sont pas en accès direct, difficile de s'en passer !

Ce point a déjà largement été débattu ; plutôt que de militer pour mettre les chiffres en accès direct, je propose d'utiliser la touche CapsLock pour changer :

  • CapsLock On => chiffres en accès direct
  • CapsLock Off => chiffres sur la couche Maj

…et dans les deux cas, CapsLock ne sert plus à mettre quoi que ce soit en majuscules. Avec ça on peut se faire référencer par CapsOff.org. ;-)


Fichier xkb

key <TLDE> { type[group1] = "FOUR_LEVEL"               , [ dollar         , numbersign  , section             , paragraph            ] }; // $ # § ¶
key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl       , 1           , emdash              , VoidSymbol           ] }; // " 1 —
key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft  , 2           , less                , lessthanequal        ] }; // « 2 < =
key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright , 3           , greater             , greaterthanequal     ] }; // » 3 > =
key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft      , 4           , bracketleft         , leftdoublequotemark  ] }; // ( 4 [ “
key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright     , 5           , bracketright        , rightdoublequotemark ] }; // ) 5 ] ”
key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at             , 6           , VoidSymbol          , VoidSymbol           ] }; // @ 6
key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus           , 7           , plusminus           , degree               ] }; // + 7 ± °
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus          , 8           , endash              , minutes              ] }; // - 8 – '
key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash          , 9           , division            , seconds              ] }; // / 9 ÷ ?
key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk       , 0           , multiply            , VoidSymbol           ] }; // * 0 ×
key <AE11> { type[group1] = "THREE_LEVEL"              , [ equal          , asciicircum , notsign                                    ] }; // = ` ¬
key <AE12> { type[group1] = "THREE_LEVEL"              , [ percent        , grave       , U2030                                      ] }; // % µ ‰

key <AD01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ b              , B           , bar                 , brokenbar        , b              , B         ] }; // b B | ¦
key <AD02> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ eacute         , Eacute      , dead_acute          , dead_doubleacute , eacute         , Eacute    ] }; // é É ´ ?
key <AD03> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ p              , P           , ampersand           , VoidSymbol       , p              , P         ] }; // p P &
key <AD04> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ o              , O           , oe                  , OE               , o              , O         ] }; // o O œ Œ
key <AD05> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ egrave         , Egrave      , dead_grave          , grave            , egrave         , Egrave    ] }; // è È ` `
key <AD06> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ dead_circumflex, exclam      , dead_caron          , exclamdown       , dead_circumflex, exclam    ] }; // ^ ! ? ¡
key <AD07> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ v              , V           , VoidSymbol          , VoidSymbol       , v              , V         ] }; // v V
key <AD08> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ d              , D           , eth                 , ETH              , d              , D         ] }; // d D ð Ð
key <AD09> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ l              , L           , UFE63               , VoidSymbol       , l              , L         ] }; // l L /
key <AD10> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ j              , J           , U0133               , U0132            , j              , J         ] }; // j J ? ?
key <AD11> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ z              , Z           , schwa               , SCHWA            , z              , Z         ] }; // z Z ? ?
key <AD12> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ w              , W           , dead_breve          , VoidSymbol       , w              , W         ] }; // w W ?

key <AC01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ a              , A           , ae                  , AE               , a              , A         ] }; // a A æ Æ
key <AC02> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ u              , U           , ugrave              , Ugrave           , u              , U         ] }; // u U ù Ù
key <AC03> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ i              , I           , dead_diaeresis      , dead_abovedot    , i              , I         ] }; // i I ¨ ?
key <AC04> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ e              , E           , EuroSign            , UFE67            , e              , E         ] }; // e E € ¤
key <AC05> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ comma          , semicolon   , leftsinglequotemark , VoidSymbol       , comma          , semicolon ] }; // , ; ‘
key <AC06> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ c              , C           , copyright           , VoidSymbol       , c              , C         ] }; // c C ©
key <AC07> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ t              , T           , thorn               , THORN            , t              , T         ] }; // t T þ Þ
key <AC08> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ s              , S           , ssharp              , VoidSymbol       , s              , S         ] }; // s S ß
key <AC09> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ r              , R           , registered          , VoidSymbol       , r              , R         ] }; // r R ®
key <AC10> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ n              , N           , ntilde              , Ntilde           , n              , N         ] }; // n N ñ Ñ
key <AC11> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ m              , M           , dead_macron         , masculine        , m              , M         ] }; // m M ¯ º
key <BKSL> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ ccedilla       , Ccedilla    , dead_cedilla        , VoidSymbol       , ccedilla       , Ccedilla  ] }; // ç Ç ¸

key <LSGT> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ ecircumflex    , Ecircumflex , slash               , VoidSymbol       , ecircumflex    ,Ecircumflex] }; // ê Ê /
key <AB01> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ x              , X           , backslash           , VoidSymbol       , x              , X         ] }; // x X \
key <AB02> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ y              , Y           , braceleft           , VoidSymbol       , y              , Y         ] }; // y Y {
key <AB03> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ agrave         , Agrave      , braceright          , VoidSymbol       , agrave         , Agrabe    ] }; // à À }
key <AB04> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ period         , colon       , ellipsis            , periodcentered   , period         , colon     ] }; // . : … ·
key <AB05> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ k              , K           , asciitilde          , dead_tilde       , k              , K         ] }; // k K ~ ~
key <AB06> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ apostrophe     , question    , rightsinglequotemark, questiondown     , apostrophe     , question  ] }; // ' ? ’ ¿
key <AB07> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ q              , Q           , dead_abovering      , VoidSymbol       , q              , Q         ] }; // q Q °
key <AB08> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ g              , G           , mu                  , VoidSymbol       , g              , G         ] }; // g G µ 
key <AB09> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ h              , H           , dagger              , doubledagger     , h              , H         ] }; // h H † ‡
key <AB10> { type[group1] = "FOUR_LEVEL_PLUS_LOCK", [ f              , F           , dead_ogonek         , ordfeminine      , f              , F         ] }; // f F ? ª

key <SPCE> { type[group1] = "FOUR_LEVEL"          , [ space          , nobreakspace, underscore          , U202F             ] };


Ce qui me saoule dans le Bépo…

…c'est que des lettres sont placées hors des deux zones principales de frappe : je trouve que {Z}, {W} et {Ç} sont particulièrement inconfortables.

Le Bépo reste cohérent avec son objectif — le français et rien d'autre — dans la mesure où W et Z sont très rares en français ; c'est essentiellement pour le développement et pour d'autres langues (anglais / allemand) que la position de W et Z me gêne. Ce n'est donc pas une critique du Bépo, mais plutôt le constat qu'en l'état, il est peu adapté à mon utilisation.

Pour ceux que ça intéresse, je propose une piste pour remettre toutes les lettres dans les zones principale de frappe : utiliser une touche morte pour À/È/Ç. C'est pas simple, ça suppose de grosses modifs, à chacun de voir si le jeu en vaudrait la chandelle. (Mise à jour : je me suis rendu compte après coup que c'est exactement ce qu'a fait Francis Leboutte pour sa dispo Dvorak-fr… et il a raison !)

Pour les autres, je les laisse méditer sur une citation honteusement extraite du canal IRC (2008/05/08) :

(20:51:11) ***labnico a mal aux auriculaires, surtout le droit, depuis qu'il est en bépo


Variante « Bépo-intl »

Un aperçu de ce que je teste en ce moment :

╭─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────┬─────╮ ╭─────┬─────╮
│ #   │ │ "   │ «   │ »   │ (   │ )   │ │ +   │ <   │ >   │ /   │ *   │ │ @   │ µ   │
│ $   │ │ 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   │ ╭-----╮
        │     │   ^¨ │     │ ,   │ │     │     │     │     │     │ │     │ ¦ Ç   ¦
╭-----╮ ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤ ╰─────╯ ¦     ¦
¦ Ê   ¦ │ X   │ Y   │ Z   │ :   │ K   │ │ ?   │ Q   │ G   │ H   │ F   │         ╰-----╯
¦     ¦ │     │     │     │ .   │     │ │ '   │     │     │     │     │
╰-----╯ ╰─────┴─────┴─────┴─────┴─────╯ ╰─────┴─────┴─────┴─────┴─────╯
                  ╭───────┬─────────────────────────┬───────╮
                  │  Alt  │                         │ AltGr │
                  │       │                         │       │
                  ╰───────┴─────────────────────────┴───────╯

C'est moins « élégant » qu'une dispo sans lettre hors des pavés principaux, mais en pratique ça résoud déjà l'essentiel des reproches que je fais au Bépo, sans trop casser la disposition existante.

Pour le bla-bla, voir la page Bépo-international.