Utilisateur:Laurent

De Disposition de clavier francophone et ergonomique bépo

Après avoir été développeur, je suis administrateur système sous Unix (uniquement GNU/Linux depuis quelques années) et Windows (accessoirement des années d’administration système Windows (c’est contradictoire) et l’évolution de celui-ci m’en ont dégoûté).

Mes usages principaux du clavier :

  • le français,
  • l’informatique (notamment shell, Perl),
  • l’espéranto,
  • l’anglais.

Lors de la conception du Bépo, j’ai milité pour la sauvegarde des caractères utilisés en informatique… avec un succès mitigé.



AltGr symétrique, place des chiffres… et du reste

Motivation

Ça y est, le bépo 1.0 est figé, sans AltGr symétrique et sans les avantages que cela pourrait apporter. Hors,

  • la « ligne des chiffres » n’est pas spécialement pratique pour entrer des nombres;
  • certaines lettres sont placées sur des touches inutilisables ([*] et [$]);
  • la disposition pourrait être plus pratique pour l’informatique.

Réflexion

En plaçant les chiffres dans une disposition de type pavé numérique en AltGr, on pourrait à la fois faciliter la frappe des nombres et libérer des positions intéressantes pour des lettres, certaines libérant à leur tour des positions intéressantes en AltGr pour des signes.

Exemple de disposition : ma variante

┏━━━━┱────┬────┬────┬────┬────┬────┰────┬────┬────┬────┬────┬────┲━━━━━━━━┓
┃Alt ┃ § →│ W ⇒│ « ¯│ » Ñ│ “ „│ ” Þ┃ Ù ˘│ Ç °│ – ′│ — ″│ µ ˙│ ‰ ®┃        ┃
┃Comp┃ # ʒ│ w ij│ - │ ' ñ│ " ð│ ` þ┃ ù ŭ│ ç 8│ ( 9│ ) ,│ ¨ .│ % =┃   ⌫    ┃
┣━━━━┻━━┱─┴──┬─┴──┬─┴──┬─┴──┬─┴──┰─┸──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┺━━┳━━━━━┫
┃   ⇤   ┃ B ʼ│ É Æ│ O Œ│ P ˚│ È ẞ┃ ! ˇ│ V ±│ D ᵈ│ L ᵉ│ J ˝│ Z º│ × †┃     ┃
┃   ⇥   ┃ b |│ é æ│ o œ│ p &│ è ß┃ ˆ ¡│ v +│ d 4│ l 5│ j 6│ z 7│ ´ *┃     ┃
┣━━━━━━━┻┱───┴┬───┴┬───┴┬───┴┬───┸┰───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┺┓ ↲  ┃
┃        ┃ A ≤│ U ≃│ E ¤│ I ≥│ ; /┃ C ©│ T –│ S ˢ│ R ʳ│ N ᵒ│ F ª│ ÷ ‡┃    ┃
┃  CAPS  ┃ a <│ u =│ e €│ i >│ , /┃ c @│ t -│ s 0│ r 1│ n 2│ f 3│ ` /┃    ┃
┣━━━━━┳━━┹─┬──┴─┬──┴─┬──┴─┯━─┴─┬──┸─┰──┴─┯━─┴─┬──┴─┬──┴─┬──┴─┲━━┷━━━━┻━━━━┫
┃     ┃ Ê  │ À ℃│ Y ≠│ X •│ : ·│ K ˜┃ ? ‘│ Q ˛│ G ¸│ H ,│ M .┃            ┃
┃  ⇧  ┃ ê *│ à \│ y {│ x }│ . …│ k ~┃ ’ ¿│ q [│ g ]│ h ^│ m $┃     ⇧      ┃
┣━━━━━┻┳━━━┷━━┳━┷━━━━┷┱───┴────┴────┸────┴───┲┷━━━━┷━┳━━┷━━━┳┻━━━━━┳━━━━━━┫
┃      ┃      ┃       ┃ Insécable  Ins. fine ┃       ┃ WinD ┃ Menu ┃      ┃
┃ Ctrl ┃ Alt  ┃ AltGr ┃ Espace        _      ┃ AltGr ┃ Menu ┃ WinG ┃ Ctrl ┃
┗━━━━━━┻━━━━━━┻━━━━━━━┹──────────────────────┺━━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛

Plus de détails ici ou sur son site.

Caractères utilisés en informatique

N’hésitez pas à me faire part des manques de cette rubrique (je ne connais pas tout et j’ai aussi probablement oublié des choses que je connais) dans ma page de discussion.

  •  ; : séparateur d’instructions dans de nombreux langages (C/C++, Perl, shell)
  • , : séparateur pour les arguments d’une fonction dans de nombreux langages, séparateur d’éléments de liste en Perl
  • ' : constantes caractères en C/C++; chaînes de caractères en shell, Perl...; italique et gras en Wiki
  • " : chaînes de caractères dans la plupart des langages (C/C++, shell, Perl...)
  • # : commentaires en shell, Perl… et dans la plupart des fichiers de configuration sous Unix
  • $ : préfixe d’une variable en shell et en Perl, borne dans les expressions rationnelles
  • ^ : borne d’une expression rationnelle
  • ~ : accès au répertoire utilisateur sous Unix et dans les URL
  • @ : adresses de courriel, préfixe d’un tableau en Perl
  •  : : suffixe du protocole dans les URL, partie de l’opérateur ternaire en C/C++, terminateur des instructions conditionnelles et de boucles en Python
  •  ? : joker en shell; expressions rationnelles; préfixe les paramètres d’une requète de type get dans les URL, partie de l’opérateur ternaire en C/C++
  •  % : opérateur modulo, préfixe d’un tableau associatif en Perl
  • ( et ) : paramètres de fonctions dans la plupart des langages de programmation, définition de priorités dans une expression, listes en Lisp et en Perl; expressions rationnelles
  • { et } : blocs de commandes en C/C++, Perl, shell...; indices des tableaux associatifs en Perl
  • [ et ] : indices des tableaux dans de nombreux langages de programmation; expressions rationnelles
  • < et >: éléments HTML et XML, redirection des entrées/sorties en shell, comparaison numérique en programmation
  • = : affectation et comparaison (doublé ou accompagné d’un autre signe dans l’un des deux cas) dans de nombreux langages
  • - : options des commandes en shell Unix, opérateur moins
  • + : addition; expressions rationnelles
  • * : multiplication dans la plupart des langages; joker en shell; expressions rationnelles; éléments de liste en Wiki
  • / : séparateur des éléments de chemin sous Unix et dans les URL, options de commandes en DOS, division dans la plupart des langages, délimiteur habituel des expressions rationnelles en Perl
  • \ : séparateur des éléments de chemin sous DOS; caractères spéciaux dans les chaînes de caractères en C/C++, Perl...; désactivation de l’interprétation d’un caractère spécial dans les expressions rationnelles et en shell; catégories dans les expressions rationnelles Perl
  •  ! : négation logique dans certains langages;
  • & : lancement d’une commande en tâche de fond en shell, “et” arithmétique et/ou logique dans de nombreux langages
  • | : chaînage de deux commandes (la sortie de la première étant l’entrée de la seconde) en shell, “ou” arithmétique et/ou logique dans de nombreux langages
  • ` : exécute une commande et retourne sa sortie en shell et en Perl;
  • . : accès aux membres d’une structure, ou aux méthodes ou attributs d’un objet en C/C++, concaténation en Perl
  • _ : sert de séparateur dans les noms de variables ou de constantes

Accessibilité des caractères utilisés en informatique

AZERTY (pour référence)

  • 11 en accès direct : & " ' ( _ ) , ; : ! <
  • 4 en accès direct sur des touches mal placées : - = $ *
  • 8 accessibles avec un modificateur : ~ # { [ % > ? . /
  • 1 accessible avec un modificateur sur une touche mal placée : |
  • 7 accessibles avec un modificateur uniquement du mauvais côté : ` \ ^ @ ] + }

BÉPO 0.6.4 (et 0.6.5)

  • 11 en accès direct : " ( ) + - / * = , . '
  • 3 en accès direct sur des touches mal placées : % $ _
  • 16 accessibles avec un modificateur : < > [ ] @ | & ` ! ? ~ \ { : } ;
  • 1 accessible avec un modificateur sur une touche mal placée : #
  • 0 accessible avec un modificateur uniquement du mauvais côté

On constate une amélioration par rapport à l’AZERTY, grâce au placement préférentiel du côté opposé à AltGr.

« et » en accès indirect mais directement avec espace insécable

L'argument le plus fort contre < et > en accès direct (fortement souhaitable pour taper du HTML ou du XML), c'est que si « et » étaient en AltGr, leur enchaînement avec l'espace insécable serait pénible. Pourquoi ne pas tout simplement les coupler avec l'espace insécable ? AltGr-[2] serait plus léger que Maj-Espace [2] !

Ci-dessous deux solutions pour Xorg :

  • Une solution globale qui n'impacte que les cartes clavier qui l'utilisent explicitement

Dans le fichier xkb :

    key <AE02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ less,    2, Ufbcb, twosuperior   ] }; // < 2 « ²
    key <AE03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ greater, 3, Ufbcc, threesuperior ] }; // > 3 » ³

Dans le fichier Compose général :

<Ufbcb> : "« "
<Ufbcc> : " »"
  • Une solution simple au niveau utilisateur qui fonctionne pour toutes les cartes clavier

Comme fichier .XCompose de l'utilisateur :

include "%L"
<guillemotleft> : "« "
<guillemotright> : " »"

ATTENTION : si vous faites un copier-coller, vous aurez certainement intérêt à remettre des espaces insécables “à la main”, parce qu'il est possible que votre navigateur les remplace par des espaces normales.

Reste la question, quand le clavier “bépo” sera inclus dans les distributions, de savoir si la modification a sa place dans le Compose général ou si le clavier devrait être lié à un Compose spécifique, ce qui serait moins simple. Dans la mesure où c'est une séquence typique en typographie française, je pense que ça aurait aussi bien sa place dans le Compose général que les digraphes arabes ou kurdes (il y en a dans le Compose général de ma distribution). À charge pour les claviers français (“bépo” ou pas) de l'utiliser, les autres l'ignorant simplement.

Sous Windows, dans la mesure où le pilote clavier est monolithique, ça ne doit pas poser de problème.

Pour l’espéranto

ˆ mort + v → ŭ

Solution pour Xorg et sur le compte utilisateur : créer un fichier .XCompose avec comme contenu :

include "%L"
<dead_circumflex> <v> : "ŭ" U016D
<dead_circumflex> <V> : "Ŭ" U016C

Liens