Artisan Numérique

/vintage/vim/ Histoire de claviers

Si on est un peu curieux, un clavier est une chose assez étrange. Pourquoi en effet les touches sont organisées ainsi ? D'où vient ce CapsLock et à quoi sert-il. Pourquoi sous VIM un tel usage de la touche ESC qui pourtant n'est pas, et de loin, la plus accessible. Comme souvent, la réponse est dans l'histoire, et pas forcement des plus jeunes.

Dans une première version de cet article j'abordais, pour introduire mon propos, la rigolote histoire de relation entre la largeur du cul d'un cheval de guerre romain et celle de la navette spatiale. À l'évidence ce qui voulait être drôle ne devrait pas l'être et m'a amené nombre de sourcilleux m'expliquant très doctement l'inexactitude du raisonnement. Sachant que toute forme de rigorisme me fatigue, j'ai décidé de supprimer cette partie ennuyeuse et sans intérêt de toute façon. J'en ai profité pour ajouter pas mal d'infos sur le cœur du sujet.

L'héritage Remington

Pour commencer simple, nous allons commencer par étudier l'origine de cette étrange disposition des touches sur un clavier acheté au 21ième siècle. L'explication de l'organisation AZERTY, ou plutôt QWERTY, remonte à 1868, par un brevet déposé par la société Remington (oui oui, le fabriquant d'armes...). Le but de cette disposition révolutionnaire était d'empêcher les touches de leurs nouvelles machines à écrire... de se bloquer.

En effet, sur ces machines, lorsque l'on appuyait sur une lettre, un marteau au bout d'une tige était propulsé vers le papier. Entre le marteau et le papier se trouvait le ruban encré, et la lettre était imprimée. Le soucis est que plus on tapait vite, plus les chances étaient grandes que les tiges ne s'emmêlent et bloquent ainsi la machine.

La disposition QWERTY était simplement conçue pour diminuer ce risque à un taux acceptable et ainsi accélérer la frappe. Il va sans dire que sur nos claviers modernes, cette disposition produit l'effet juste inverse (enfin pour ceux qui tapent avec tous les doigts, pas comme moi ;-). .

Les aspects mécaniques de ces machines à écrire sont encore bien présents dans notre quotidien. Par exemple sur chaque marteau il y avait la lettre minuscule et la majuscule. Pour écrire en majuscule on appuyait sur une touche Shift (qui veut dire "Déplacer") qui remontait tout le bloc de marteaux de sorte à ce que ce soit la majuscule qui soit frappée. Et comme c'était assez lourd et donc pénible comme opération, il y avait la touche ShiftLock qui bloquait les marteaux en position haute. Voilà donc l'origine de nos Shift et CapsLock.

Mais ce n'est pas tout. Nos marteaux ne pouvant pas bouger latéralement le papier était pris dans un rouleau permettant de le faire bouger de verticalement. Le rouleau était quant à lui monté sur un chariot mobile sur l'axe vertical. Ainsi à chaque lettre tapée, le chariot reculait d'un caractère sur la gauche laissant ainsi aux marteaux la place pour imprimer le suivant. Lorsque l'on voulait terminer une ligne, on utilisait alors la touche return qui effectuait deux opérations. Tout d'abord un "Carriage Return", c'est à dire le retour du chariot à sa position initiale, et enfin un "Line Feed", c'est à dire la rotation du rouleau d'une hauteur de caractère.

Outre le sens originel de la touche Return, l'informaticien comprend aussi l'origine des codes ASCII 13 (ou \r) signifiant "Carriage Return" ainsi que le code ASCII 10 (ou \n) signifiant "Line Feed", deux codes constamment utilisé dans les applications en ligne de commande. Vous comprenez aussi pourquoi Windows s'acharne à mettre un \r\n à la fin de chaque ligne de ses fichiers texte, encore un tribut à la machine à écrire :-)

Du papier à l'écran

Mais d'une manière générale c'est tout le principe d'affichage d'une console qui puise son fonctionnement dans celui des machines à écrire. Et c'est assez logique car avant l'apparition des écrans cathodiques, les terminaux des premiers ordinateurs n'était rien d'autre que des machines à écrire automatisées, des imprimantes en quelque sorte. L'exécution d'un programme impliquait donc la production d'un flot lettre sur du papier qui se déroulait au fur et à mesure du traitement. Le système émettait pour cela une suite de commande de contrôle indiquant la lettre à imprimer, les retours chariot, les line-feeds, etc.

Il est donc assez logique que les premiers terminaux "écran" aient repris nombre de concepts existants par simple besoin de compatibilité et d'hétérogénéité de parc. Le terminal tel que nous le connaissons est donc une rationnalisation informatique du principe du traitement du papier dans une machine à écrire.

L'ADM 3A

Maintenant la Remington n'explique évidemment pas tout. Les vimmers curieux peuvent par exemple se demander pourquoi leur éditeur préféré fait un un tel usage de la touche ESC alors que sur tous les claviers de la terre c'est la touche de loin la plus chiante à obtenir ? Ou encore pourquoi la religion du HJKL pour se déplacer au lieu des touches de directions standards ?

Pour comprendre cela, il faut remonter à l'origine de VIM, à savoir VI développé par Bill Joy en 1976. A cette époque la micro-informatique était encore un projet dans le cerveau de Wozniak, et tout le monde travaillait sur des "terminaux", des ensembles écran/clavier, qui communiquaient avec un serveur (mainframe) par liaison série (RS232).

Bill Joy utilisait un terminal très populaire à l'époque, l'ADM-3A. Ce monstre de puissance sorti en 1975, était équipé d'un écran à phosphore ambre, blanc ou vert, capable d'afficher 12 lignes de 40 caractères majuscules. Les versions suivantes sont montées à 20 lignes en ajoutant les caractères minuscules. En réalité cette résolution était surtout limitée par le prix de la mémoire, la bestiole coutait tout de même $1195 (je vous laisse actualiser :). Plus tard, des cartes électroniques permirent même un début de graphisme en émulant le célèbre Tektronik 4014.

Comme vous pouvez le voir, le clavier de l'ADM-3A comprenait deux caractéristiques assez singulières. Tout d'abord la touche ESC placée juste à gauche de la ligne QWERTY. En gros là où aujourd'hui nous avons notre touche Tabulation. Premier mystère, sur l'ADM cette touche était donc l'une des plus accessibles.

Ensuite, le clavier de l'ADM-3A ne disposant pas de touches de direction, celle-ci étaient simplement sérigraphiées sur les touches... HJKL, voilà pour le second mystère.

Sur ce clavier nous notons aussi que les caractères ~, |, @, etc, sont elles aussi très faciles à obtenir. Bref, tout ce qui fait le quotidien de quelqu'un qui travaille aujourd'hui en ligne de commande.

Conclusion

Ce type d'histoire, outre améliorer notre culture générale et ainsi briller dans les réunions de nerds, permet surtout de remettre en cause des modèles ancien en se demandant s'ils sont encore judicieux.

Il existe par exemple des alternatives à la disposition QWERTY/AZERTY qui ont leurs adeptes. La plus connue est sûrement celle issue des travaux d'Augus Dvorak (1930). Cette disposition existe en standard dans toute distribution GNU/Linux depuis 2008.

Pour les vimmers aussi cela permet de changer deux trois choses. Il est par exemple très facile de mimer la disposition du clavier de l'ADM 3A pour ceux que cela intéresse) en assignant le comportement de la touche ESC à la touche TAB, celui de la touche tab à la touche CapsLock, puis enfin celui de CapsLock, pour ceux qui l'utilise, à l'ancienne touche ESC.

Transposé en une configuration pour XmodMap cela nous donne :

remove Lock = Caps_Lock
keysym Tab = Escape
keysym Caps_Lock = Tab
keysym Escape = Caps_Lock
add Lock = Caps_Lock
mon_adm3a.xmodmap

Que vous chargerez par un xmodmap mon_adm3a.xmodmap. Vous aurez ainsi un clavier presque similaire à cela Bill Joy :-) Enjoy ;-)