AltGr symétrique

De Disposition de clavier bépo
Attention

Attention, cette page n'a pas été retravaillée et résulte de différents copier/coller bruts en provenance des anciens wiki et de la liste de diffusion.

Sur un clavier, la touche clavier bépoAltGr (pour Alternate Graphics, mais souvent prononcé « alt grade » pour d'obscures raisons) est une touche de modification (un « modificateur ») qui rend accessibles différents signes. Ces signes étaient à l’origine des symboles graphiques, d’où le nom de la touche. C'est également un raccourci de la combinaison clavier bépoCtrl+clavier bépoAlt.

Résumé du problème : ergonomie, exhaustivité

D'un point de vue ergonomique, il est préférable que les modificateurs soient symétriques — c'est-à-dire présents sur les deux cotés du clavier et avec un comportement rigoureusement identique — car tout appui sur deux touches en simultané (combinaison) devrait impliquer l'utilisation des deux mains, afin d'éviter une contorsion du poignet. Seules quelques rares combinaisons sont biomécaniquement heureuses (clavier bépoAlt+clavier bépoTab par exemple). La touche clavier bépoMaj est depuis longtemps symétrique sur la très grande majorité des claviers disponibles et ne pose donc pas de problème ; de même pour la touche clavier bépoCtrl. Ce n'est par contre pas le cas de la touche clavier bépoAltGr, puisque sur la partie gauche du clavier, on trouve en vis-à-vis la touche clavier bépoAlt, laquelle se comporte de façon totalement différente.

Une première idée serait de supprimer la touche clavier bépoAltGr, de créer au passage un clavier bépoAlt symétrique, et de déporter ailleurs les symboles anciennement accessibles par clavier bépoAltGr ; mais on se rend vite compte que la touche clavier bépoAltGr répond à un besoin réel : sur un clavier classique, elle est tout de même utilisée pour taper plus d'une quinzaine de symboles ! On peut donc difficilement s'en passer sans devoir abandonner certains caractères spéciaux (souvent nécessaires aux programmeurs, mais pas seulement).

On notera que la solution qu'a adopté F. Leboutte pour sa disposition Dvorak-fr est l'utilisation d'une touche morte universelle. En pratique, la touche morte « accent grave » est associée à tous les caractères particuliers. Par exemple, un appui sur la touche accent grave suivi de C donnera Ç. Cette solution a l'avantage d'être relativement simple et ergonomique (si ce n'est la perte du vitesse inhérente à l'utilisation d'une touche morte), mais elle présente un gros problème : elle n'est pas portable. Ajoutons que, non content de ralentir la frappe par le doublement des appuis nécessaires, la touche morte choisie n’est pas un modèle d’accessibilité.

Examen détaillé du problème

Par Thomas Tempé.

Tout d'abord, accordons-nous pour dire que le fait d'avoir une seule touche Alt est anti-ergonomique. De façon générale, l'appui sur deux touches différentes pour réaliser une combinaison [Modificateur]+[Touche] n'est réellement confortable que si on a le choix du placement des mains. Comme la seconde [Touche] de la combinaison est fixée d'avance et peut se trouver n'importe où sur le clavier, il est pratique de pouvoir utiliser à loisir la main gauche ou la main droite pour le modificateur, selon la main qui accède à la touche de la combinaison.

Par ailleurs, on distinguera les modificateurs des touches mortes :

  • un modificateur est utilisé en combinaison avec une ou plusieurs touches ; on garde appuyé le modificateur, et le caractère désiré est composé quand une autre touche est appuyée ;
  • une touche morte agit comme une bascule temporaire : on appuie sur la touche morte, on relâche, puis on appuie sur une autre touche, qui compose un caractère différent de celui habituellement accessible.

Situation sur les claviers actuels

Sur le clavier AZERTY, deux modificateurs ne sont pas dédoublés de façon symétrique :

  • Alt, qui n'est qu'à gauche du clavier ;
  • AltGr, qui n'est qu'à droite.

Alt Gr est un modificateur réservé au « sous-système clavier » tandis que Alt est typiquement réservé aux applications : pas question d'y toucher. C'est donc sur AltGr que se déporte le problème de la symétrie et l'accessibilité, auquel vient se greffer la contrainte d'exhaustivité des caractères.

Concrètement, sur un clavier AZERTY, on peut obtenir un symbole :

  • en appuyant directement sur la touche (48 symboles) ;
  • avec Shift (48 symboles) ;
  • avec Alt Gr (14 symboles écris sur les touches d'un clavier classique) ;
  • avec Alt Gr + Shift.

Les claviers AZERTY français ont une touche supplémentaire [> <] en bas à gauche que les claviers QWERTY US n'ont pas (47 touches) et qui travaille avec AltGr. Tout ça ramène donc à 15 le nombre de symboles à supprimer sur un clavier classique si on souhaite se passer de Alt Gr. Comme on souhaite également conserver les symboles en question, il faut leur associer un autre moyen de composition.

Sauf à supprimer 13 voire 15 symboles, on n'arrivera pas à tout faire tenir sur le clavier. Voyons ce que je n'utilise jamais : §, µ, ?, £, ²… On est loin du compte, et j'en connais déjà qui vont râler. On peut aussi décider que les symboles ^, `, ~, qui existent à la fois en touche morte et en non-morte, seront obtenus uniquement avec une touche morte, ce qui libère de la place. Cela ramène le compte à 8, pour mon usage personnel. Au-delà, c'est les programmeurs qui vont râler.

Conflit avec la locale

En termes d'ergonomie, la meilleure solution pour saisir plus de symboles est probablement d'avoir une touche morte. C'est la solution adoptée par Francis Leboutte. Francis redéfinit les caractère recombinants. Par exemple, accent grave mort + K donne $.

Le problème de cette solution est qu'elle entre en conflit avec la locale. La locale est un ensemble de paramètres du système qui spécifie quelle langue est utilisée, le format de la date, de l'heure, des unités monétaires, l'encodage des caractères par défaut, ou encore l'ordre alphabétique des lettres (qui peut ne pas être le même selon les régions). Les caractères recombinants sont donnés une fois pour toutes dans la locale et dans notre cas, c'est la langue française qui veut que, pour la locale du français, apostrophe mort + c donne ç, et ce sur tout type de clavier (ie. même sur un clavier QWERTY). Il n'en sera pas de même en vietnamien, qui a évidemment une locale différente.

Forcer une nouvelle logique de caractère recombinant pose dès lors problème, car elle joue contre la normalisation et la portabilité de la disposition de clavier ainsi créée. On ne peut pas raisonnablement modifier la locale :

  • déjà parce qu'il n'y a pas de manière simple de changer les caractères recombinants au sein d'une locale ;
  • parce qu'ensuite, changer de locale quand on change de clavier ou d'ordinateur est inadmissible ;
  • et parce qu'il est impensable de créer une nouvelle locale pour chaque clavier possible et imaginable (il y a déjà une locale différente pour chaque combinaison (pays, langue) possible !).

Création d'une touche morte

On peut alors se demander s'il est possible d'avoir un comportement similaire à celui des touches mortes sans passer par la locale et la destruction des caractères recombinants usuels. Il semblerait que c'est ce qu'a fait Francis Leboutte ; mais pour ça, il a utilisé un driver clavier shareware, ce qui est loin de la solution « propre » à laquelle on aspire. Je ne connais pas super bien Windows, mais j'imagine que le système de locales est le même que sous GNU/Linux (duquel je m'inspire pour parler ici). Sous XFree, le système XKB est particulièrement avancé, et permet de changer de mode de composition pour le prochain appui de touche, selon l'action précédente ; je ne me suis pas penché plus sur la question.

Le problème, c'est qu'on ne peut pas toujours compter sur ce genre de richesse fonctionnelle extrême. XKB est vraiment très poussé, et doit même permettre, je crois, de saisir du japonais (hiraganas et katakanas) sans avoir recours à un InputServer externe. Mais il n'est actif que si le serveur X.Org l'est, ce qui peut ne pas être le cas. Par exemple, dans la console Linux (tty), sauf erreur de ma part, ce genre de choses est impossible. Il doit en être de même dans la plupart des environnements (sauf peut-être la nouvelle console Hurd, qui utilise XKB). Souhaite t-on mettre les utilisateurs concernés de coté ?

Autres pistes

Nous revoilà donc au point de départ :

  • on a besoin de AltGr ;
  • on ne peut pas utiliser AltGr tout en conservant un clavier ergonomique, du point de vue de la symétrie des combinaisons (sauf à retoucher la disposition physique et le nombre des touches, mais c'est là le travail des concepteurs de claviers, et une voie fermée à court et moyen terme).

Toute solution — autant que je puisse dire — n'est que magouille.

Une autre voie pourrait être explorée : que se passe-t-il si on remplace une autre touche, par exemple sous la main gauche, par un AltGr, mais en ne permettant de combinaisons qu'avec des touches se trouvant sous la main droite ? On pourrait à cet effet résoudre le problème du CapsLock et l'utiliser à cette fin. On trouvera largement de la place pour les 15 symboles les plus fréquemment utilisés sous la main droite.

C'est une proposition de solution, mais je ne sais pas à quel point elle est réaliste. Il faut noter que la plupart des claviers du monde changent simplement la disposition des lettres et caractères spéciaux, mais que les touches périphériques (espace, contrôle, etc...) changent très peu. De plus, rien ne dit qu'on trouvera un CapsLock sur tous les claviers.

On peut aussi vouloir utiliser une autre touche, voire deux (une sous chaque main), comme AltGr, par exemple le "<" et le "!" du clavier AZERTY. Mais encore une fois, on viole la distinction « touche de symbole/touche de contrôle. »

Deux dispositions fr-dvorak-bépo ?

Suite à la discussion précédente sur l'opportunité d'un choix entre deux (mauvaises) solutions, une nouvelle proposition est faite.

Comme les deux choix présentent des propriétés mutuellement exclusives, on peut imaginer spécifier deux claviers, un « ergonomique » et un « propre » :

  • fr-dvorak-bépo ergonomique : Alt devient AltGr gauche, CapsLock devient Alt, ² devient CapsLock ;
  • fr-dvorak-bépo propre : on ne touche pas à Alt et CapsLock. Ils restent où ils sont, aussi mal fichus que sur n'importe quel clavier AZERTY.

Le Dvorak-Fr propre servira de référence, le ergonomique sera proposé par défaut (sauf sous Windows, où on sera probablement obligés de rester « propre »)

Idée pas conne.
  • L'emploi moins rare (et plus réfléchi) de touches mortes devrait faire augmenter la gamme des caractères possibles, et donc faire disparaître les cas où la touche "compose" est nécessaire. Il est clair que cette touche coûte très cher à la saisie, la faire disparaître serait révélateur d'une conception plus riche du keymap (on fait tendre le nombre d'exceptions vers 0).
Entièrement d'accord avec ce point, ce qui supprimerait donc le débat sur un duo Alt/AltGr versus deux Alt. Une touche serait représenté ainsi :
[@______
| 2   4 |
| 1   3 |
-------@]

1: touche à vide
2: Shift + touche / Shift touche
3: Touche morte1 + touche / touche morte1 touche
4: Touche morte2 + touche / touche morte2 touche
On aurait donc AltGr = Alt.
D'ailleurs à ce sujet, je pense que les symboles utilisés en programmation (par exemple « { } [ ] » ) arriveront probablement en AltGr, et donc on pourrait mettre par exemple les [ et { en AltGr, et les } et ] associés en AltGr+Shift. Ceci bien évidemment sous réserve qu'il n'y ait pas de place ailleurs (par exemple en accès direct ou Shift, éventuellement à la place de )º =+ de l'AZERTY, à condition que les chiffres soit tassés à gauche).

Alt et AltGr symétriques

La notion de modificateur symétrique est portable pour sous Windows. J'ai testé hier avec les logiciels KeyTweak (modification de la bdd) et Autohotkey sous Windows XP et Vista (voir outils).

J'ai d'abord essayé la proposition d'Aragorn c'est-à-dire :

  • AltGr symétrique (Right Alt devient un Right AltGr)
  • ² devient l'Alt

Et me suis rendu compte que les raccourcis Alt+touche côté gauche sont un poil acrobatique, par contre le Alt+tab coule de source (on peut changer d'application avec un doigt !!)

D'où l'idée d'avoir un Alt symétrique, soit :

  • pour un clavier 102 touches : un deuxième Alt en haut sur la touche à côté de backspace (il faudrait alors replacer % et µ ailleurs sur le layout)
  • pour un clavier 105 touches : en remplacant les deux touches Win droite et gauche par des Alt (la touche ² pouvant faire office de touche Win vu elle est utilisé dans certains logiciels aujourd'hui)

Il reste à vérifier la portabilité sous Mac… -- A2

De la touche « Super »

La touche Super est la touche sur laquelle il est souvent dessiné le logo windows. Ce que je dis ici s’applique aussi à la touche « menu ». De plus en plus nous imaginons l’utiliser pour avoir un AltGr Symétrique sans ne rien perdre d’autre. J’ajoute deux points :

  • Ces touches bougent beaucoup, elles ne sont pas placées sur tous les claviers, en particulier les portables ;
  • sous linux, elle sert de plus en plus : nombre des effets de compiz-fusion[1] se font à l’aide de ce modificateur.

Il est donc compliqué de faire reposer l’ergonomie du clavier sur une touche qu’on est pas certain de retrouver sous ses doigts, ou qui peut-être utilisée pour autre chose.

Liens et références

  1. Des images partout sur youtube et sur le blog dédié.