diff --git a/www/content/articles/analyseurs/bepo.png b/www/content/articles/analyse_et_optimisation/bepo.png similarity index 100% rename from www/content/articles/analyseurs/bepo.png rename to www/content/articles/analyse_et_optimisation/bepo.png diff --git a/www/content/articles/analyseurs/ergol.png b/www/content/articles/analyse_et_optimisation/ergol.png similarity index 100% rename from www/content/articles/analyseurs/ergol.png rename to www/content/articles/analyse_et_optimisation/ergol.png diff --git a/www/content/articles/analyse_et_optimisation/index.md b/www/content/articles/analyse_et_optimisation/index.md new file mode 100644 index 00000000..7e977d36 --- /dev/null +++ b/www/content/articles/analyse_et_optimisation/index.md @@ -0,0 +1,632 @@ ++++ +title = "Analyse et optimisation" +date = 2024-10-20T18:01:23+01:00 +author = "kaze" +tags = ["communauté", "technique", "outils"] ++++ + + + +Pour que chacun·e puisse comprendre en quoi Ergo‑L se distingue et quels sont +ses avantages et inconvénients sur les autres layouts, il était grand temps +d’écrire un article sur l’art délicat de l’analyse et de l’optimisation des +dispositions de clavier. + + + +:::{.highlight style="max-width: 32em;"} +- [Les fondamentaux] + - [la heatmap] + - [la charge des doigts] + - [les digrammes] + - [les trigrammes] +- [Critères d’évaluation] + - [métriques consensuelles] + - [SHU, same hand usage ?] + - [distance parcourue ?] + - [note globale ?] +- [Optimiser pour une note globale ?] + - [l’approche CarpalX] + - [l’approche Optimot] +- [Optimiser façon Ergonaute !] + - [la méthode] + - [les outils] + - [la communauté] +- [Les autres analyseurs] + - [CarpalX] + - [KLA (keyboard-layout-analyzer)] + - [Colemak-DH] + - [Oxeylyzer ❤️] + - [Kalamine 🚀] +- [Conclusion] +::: + + + +Les fondamentaux +-------------------------------------------------------------------------------- + +Quels sont les principales caractéristiques d’une bonne disposition de clavier ? + +### La heatmap + +L’optimisation la plus évidente pour une disposition de clavier consiste à +placer les touches les plus fréquemment utilisées aux meilleurs emplacements : + +- sur les 8 positions de repos +
([A]{.kbd}[S]{.kbd}[D]{.kbd}[F]{.kbd} et [J]{.kbd}[K]{.kbd}[L]{.kbd}[;]{.kbd} en Qwerty) +- sur les 4 positions des majeurs et annulaires de la rangée supérieure +
([W]{.kbd}[E]{.kbd} et [I]{.kbd}[O]{.kbd} en Qwerty) +- sur les 2 positions des index de la rangée inférieure +
([V]{.kbd} et [M]{.kbd} en Qwerty) + +Ces positions correspondent à celles notées 1 à 2 par le projet +[Workman](https://workmanlayout.org/#back-to-the-drawing-board). + +![Accessibilité des touches selon Workman.](workman_grid.png) + +On notera au passage que la question de l’accessibilité hors du pavé central de +3×10 touches ne s’est jamais posée chez Workman : le principe [1DFH][] va de soi +pour les dispositions anglo-saxones. + +### La charge des doigts + +Une autre optimisation de base consiste à équilibrer la charge de travail des +doigts : + +- les doigts forts (index, majeur) peuvent supporter plus de charge que les + auriculaires, qui sont déjà très sollicités avec [Entrée]{.kbd}, + [Backspace]{.kbd}, [Tab]{.kbd}, [Shift]{.kbd}… +- la charge est agravée par les extensions, i.e. les touches qui sont notées 3 + ou plus par le projet Workman (V. ci-dessus). + +On affiche en bleu la charge liée aux touches notées 1 à 2, en jaune celle des +touches notées 3, et en orange celles notées 4 ou plus — ce qui inclut les +touches trop excentrées pour être évaluées par Workman, et qui enfreignent le +principe [1DFH][] auquel nous autres Ergonautes sommes si attachés. + +![Charge des doigts d’Ergo‑L.](ergol.png) + +![Charge des doigts de Bépo.](bepo.png) + +### Les digrammes + +Un digramme est un enchainement de deux touches. +Tout digramme appartient à l’une des catégories suivantes : + +- alternance de mains : les touches sont sous deux mains différentes +- roulement : les touches sont sous deux doigts différents d’une même main + - roulement intérieur : les touches s’enchainent de l’auriculaire vers l’index + - roulement extérieur : les touches s’enchainent de l’index vers l’auriculaire +- digramme de même doigt (SFB) : deux touches différentes à enchainer avec le + même doigt (= le pire enchaïnement qui soit) +- répétition (SKB) : la même touche est pressée deux fois. + +Les roulements intérieurs sont considérés comme les enchainements les plus +confortables. Entre alternance de mains et roulements extérieurs, c’est plus une +question de préférence personnelle. On identifie aussi deux types de mauvais +roulements : + +- les roulements avec « ciseau », qui requièrent un changement de rangée + inconfortable, comme [C]{.kbd}[R]{.kbd} en Azerty ou Qwerty ; +- les roulements avec extension (LSB, lateral stretch bigrams), + qui incluent une touche d’une colonne excentrée ou de la rangée des chiffres. + +Le SFU est le principal indicateur du niveau d’optimisation d’une disposition de +clavier, et on peut être tenté de l’utiliser comme indicateur principal de la +qualité d’une disposition de clavier. Mais attention, un SFU très bas cache +parfois des défauts rédhibitoires ailleurs — notamment sur les ciseaux, les +extensions, ou la charge des doigts. + +### Les trigrammes + +Un trigramme est un enchainement de trois touches. + +Les critères alternance / roulement / même doigt s’appliquent toujours, mais on +ajoute encore la notion de « redirection » pour les trigrammes faits d’une même +main avec un changement de direction, comme [D]{.kbd}[S]{.kbd}[F]{.kbd} ou +[K]{.kbd}[J]{.kbd}[L]{.kbd} en Azerty ou Qwerty. + +La redirection est qualifiée de « mauvaise » quand elle ne fait pas intervenir +l’index. + + +Critères d’évaluation +-------------------------------------------------------------------------------- + +### Métriques consensuelles + +Un analyseur de disposition de clavier va, en tout premier lieu, fournir des +métriques sur les principaux critères : + +- la heatmap doit être centrée sur les positions confortables ; +- la charge des doigts doit être équilibrée et épargner les auriculaires ; +- le taux de SFB (= SFU, same finger usage) doit être le plus + bas possible ; +- le nombre de ciseaux et LSB (= lateral stretch bigrams) doit + être le plus bas possible ; +- le taux de mauvaises redirections doit être le plus bas possible. + +Le dernier point est moins souvent pris en considération, mais du point de vue +des Ergonautes c’est une grosse erreur que de le négliger. + +### SHU, same hand usage ? + +Le SHU mesure la répartition entre alternances de mains et roulements. + +À l’époque des machines à écrire mécaniques, le SHU devait être le plus bas +possible car les roulements coinçaient souvent les marteaux : Qwerty, et encore +plus Dvorak, ont été développés dans cet objectif. C’est aussi le cas de Bépo et +ses nombreuses variantes. + +Mais de nos jours, les claviers informatiques n’ayant pas de contrainte de ce +type, cette métrique du SHU n’est plus utilisée pour mesurer la qualité d’une +disposition — voire, elle est souvent utilisée dans l’autre sens : un SHU élevé +caractérise une disposition « rolly », i.e. privilégiant les roulements. C’est +le cas de la très grande majorité des dispositions modernes, dont Workman et +Ergo‑L. + +:::{.highlight lang="en"} +> In designing Workman, I preferred a high SHU (low alternation) over a low SHU +> (high alternation). I think high alternation is beneficial if you’re typing on +> mechanical typewriters but not necessarily on modern keyboards. […] + +> It is much more efficient to ride the momentum of a single arm or wrist stroke +> and type a combo rather than just one key. +::: +:::{style="text-align: right"} +— [Kevin DeLoach][kdeloach], disposition [Workman][] +::: + +C’est un constat qui est également partagé par bon nombre de Bépoètes. + +:::{.highlight} +> La frappe d’un roulement facile peut être plus rapide, plus confortable et +> moins sujette à la faute de frappe qu’une alternance de mains. +::: +:::{style="text-align: right"} +— extrait des notes de conception de [Béop][] +::: + +Et c’est un sujet qui a été longuement détaillé par [Nuclear-Squid][] dans sa +conférence  [Ergonomie clavier : l’ère post-Dvorak][cdl2023-slides]  +([vidéo][cdl2023-video]). + +Attention : les dispositions de clavier qui privilégient les roulements prennent +le risque d’avoir un taux élevé de mauvaises redirections. + +### Distance parcourue ? + +Une métrique originale consiste à mesurer la distance parcourue par les doigts +pendant la saisie d’un texte. Elle a été rendue populaire par CarpalX et KLA : +facile à calculer, c’est toujours amusant de savoir combien de kilomètres nos +doigts parcourent pour saisir un texte. :-) + +La communaté Ergonaute n’utilise pas cette métrique car elle n’est pertinente +que si l’on suppose que tous les déplacements de doigt se valent — ce qui est +évidemment faux (V. le § sur la [heatmap](#la-heatmap)). + +### Note globale ? + +Certains analyseurs de layout proposent une note globale, qui est une moyenne +pondérée de plusieurs critères plus objectifs. Si vous connaissez les critères +utilisés et êtes d’accord avec leur pondération, cette note globale peut donner +une évaluation générale appréciable lors des premières phases d’optimisation. + +Mais il y a deux choses importantes à garder à l’esprit : + +- une note globale ne rend pas compte des pires défauts de la disposition : ils + sont soit noyés dans la moyenne, soit complètement ignorés ; +- quelle que soit sa qualité, une note globale ne sera jamais une bonne cible + d’optimisation. + +:::{.highlight} +> Lorsqu'une métrique devient un objectif, elle cesse d'être une bonne métrique. +::: +:::{style="text-align: right"} +— [loi de Goodhart](https://fr.wikipedia.org/wiki/Loi_de_Goodhart) +::: + + +Optimiser pour une note globale ? +-------------------------------------------------------------------------------- + +Ça peut être contre-intuitif, mais optimiser pour une note globale est voué à +l’échec : chercher à atteindre la meilleure valeur va nécessairement dégrader +les métriques qui ne sont pas (ou pas suffisamment) prises en compte par la note +globale. + +Pour s’en convaincre, il y a deux exemples assez caricaturaux : CarpalX et +Optimot. + +### L’approche CarpalX + +S’il existait une note globale pertinente, n’importe quel développeur aurait pu +déterminer une disposition de clavier optimale pour un corpus donné en +appliquant un algorithme de [recuit simulé][]. + +C’est ce qu’a fait [CarpalX][], qui est le projet le plus ancien et le plus +connu dans le domaine. Sa note globale est un [score d’effort][CarpalX-effort] +qui est basé sur un modèle assez complexe prenant en compte de multiples +critères, notamment : + +- l’alternance des mains ; +- le SFU ; +- les roulements ; +- la réduction de la charge des auriculaires ; +- la limitations des enchainements complexes. + +CarpalX a ainsi abouti à la disposition [QFMLWY][], qui a le meilleur score +d’effort possible. Et la disposition [Qwerty-Flip][] a un score d’effort quasi +identique à Dvorak, alors qu’elle est très proche de Qwerty — et donc bien plus +simple à apprendre, tout en conservant les raccourcis clavier usuels. + +![Qwerty-Flip (illustration du site de l’auteur).](qwerty-flip.gif) + +Et pourtant, personne n’utilise ces dispositions. Pourquoi ? + +- soit c’est un simple manque de notoriété : elles sont très bonnes mais trop + peu connues ; +- soit le score d’effort est une métrique imparfaite, et un très bon score + d’effort peut masquer des défauts majeurs. + +Et de fait : le score d’effort accorde bien trop peu d’importance au SFU. Il +s’élève à 4.6 % pour QFMLWY, bien loin de Dvorak (2.7 %), Colemak (1.6 %) ou +Ergo‑L (1.2 %). Quant à Qwerty-Flip, son SFU est très logiquement le même que +celui de Qwerty, soit 5.7 %. Le résultat est constatable immédiatement, et ce +n’est là que le principal défaut de ces dispositions. + +:::{.highlight} +> The CarpalX layout seemed attractive due to its supposed scientific derivation. +> After getting up to 10 WPM, I think I preferred it to Dvorak. It seemed to +> have surprisingly high same finger usage — especially the right index. +::: +:::{style="text-align: right"} +— [u/fullyassociative] +::: + +La démarche de CarpalX est basée sur un [modèle d’effort][CarpalX-effort] très +précis, qui donne l’illusion qu’optimiser pour ce score d’effort aboutira de +façon scientique à la meilleure disposition possible ; et intuitivement, on a +envie d’y croire ! + +Mais en pratique, toutes les dispositions issues de ce type d’optimisation ont +des défauts rédhibitoires qui sont noyés dans la moyenne du score d’effort. Ce +score, aussi élaboré soitl-il, ne parvient pas à rendre compte de la qualité +d’une disposition. + +À l’usage, on a constaté que CarpalX trouvait rapidement des dispositions +correctes avec un SFU pas trop élevé et une bonne répartition de la charge des +doigts, puis qu’à chaque itération il proposait des dispositions marginalement +meilleures pour le score d’effort mais où le SFU se dégradait fortement. On +atteint là les limites de l’optimisation mono-critère. + +### L’approche Optimot + +S’il existait une note globale pertinente mais que vous n’aviez pas de +compétence en programmation, vous pourriez passer par un analyseur en ligne qui +1propose ce type d’évaluation et à force d’essais, vous obtiendriez une +disposition très bien notée pour votre langue cible — probablement le français, +si vous lisez cet article. + +C’est l’approche retenue par Optimot, une variante non-libre de Bépo. +Étonamment, l’analyseur retenu est [KLAnext][], qui est loin d’être le plus +abouti. Ayant optimisé sa disposition pour KLAnext, l’auteur d’Optimot peut +ainsi affirmer que sa disposition est la meilleure qui soit en français, puisque +c’est celle qui a la meilleure note sur KLAnext. + +Faisons abstraction du raisonnement circulaire et intéressons-nous à l’anglais : +Optimot a une meilleure note KLAnext en anglais que la plupart des dispositions +anglophones modernes. Comment est-ce possible ? Alors que c’est un domaine de +recherche très actif chez les anglo-saxons depuis deux décennies ? Et alors +qu’Optimot dédie beaucoup de bonnes touches aux lettres accentuées du français ? + +Là encore, deux hypothèses sont envisageables : + +- soit l’auteur d’Optimot a un esprit supérieur comme le monde n’en connait que + rarement — il y avait Einstein au XXe siècle, il y a lui au + XXIe ; +- soit il a mis en évidence sur une faille de la note globale KLAnext. + +Les habitué·e·s du salon et du forum Bépo le savent bien, la deuxième hypothèse +est vigoureusement rejetée par l’auteur d’Optimot. Ça fait partie de son +caractère légendaire, pour lequel il est soit adulé, soit détesté. + +Et pourtant, la note globale de KLAnext comporte des failles évidentes. + +- Elle *pénalise* les roulements, qui sont pourtant les meilleurs enchainements + possibles sur un clavier informatique : optimiser pour KLAnext suppose donc de + *casser* les roulements et ainsi de *dégrader* la disposition. +- Elle ne pénalise ni les extensions de doigts, ni les ciseaux : le `EN` + d’Ergo‑L et le `WH` de Bépo (DF et + ]. en Qwerty) ont la même pénalité, alors qu’il s’agit + respectivement du meilleur et du pire enchainement possible. +- Elle ne semble pas prendre en compte l’équilibre de la charge des doigts. + Optimot a une charge de plus de 11 % sur l’auticulaire droit en français, ce + qui est exceptionnellement élevé pour une disposition de clavier (ergonomique + ou non) et rédhibitoire pour nombre d’utilisateurices. + + + + + + + + + + +Contrairement au score d’effort de CarpalX, la note globale de KLAnext est très +simpliste : en comprendre les limites est assez trivial. Mieux vaut utiliser les +scores individuels fournis pour chaque métrique. + +Fun fact : [Erglace][] a une meilleure note qu’Optimot sur +KLAnext, même en français, alors qu’elle n’a pas du tout été optimisée pour +cette métrique. C’est purement un hasard, mais c’est l’occasion de rappeler que +si l’objectif est de faire une optimisation mono-critère, le tâtonnement humain +est bien plus hasardeux qu’un [algorithme adéquat][recuit simulé]. + + +Optimiser façon Ergonaute ! +-------------------------------------------------------------------------------- + +Comme on vient de le voir, ce n’est pas tant l’analyseur que son utilisation qui +est en cause : aucune note globale n’étant pertinente, vouloir évaluer ou +optimiser des dispositions à cette aune est voué à l’échec. Il faut procéder +autrement. + +### La méthode + +:::{.highlight} +> Quelle que soit la disposition de clavier, son pire défaut se ressentira +> toujours plus que ses meilleures qualités. +::: +:::{style="text-align: right"} +— crédo ergonaute +::: + +C’est l’approche que l’on propose sur notre [comparateur][] et qu’on a suivie +pendant toute la mise au point d’Ergo‑L. On a itéré comme suit : + +1. identifier le pire achoppement de la disposition (SFB, ciseau, redirection…) ; +2. améliorer notre analyseur pour qualifier et mesurer cet achoppement ; +3. trouver une modification du layout qui, sur la foi de l’analyseur, réduise + cet achoppement ; +4. utiliser ce layout jusqu’à détecter un autre achoppement (généralement moins grave) ; +5. `GOTO 1` + +On n’a donc jamais eu aucun usage d’une note globale. Au contraire, on regarde +toujours la pire note et les pires enchainements pour évaluer une disposition et +proposer des améliorations. + +Cela dit, il y a bien une métrique que l’on regarde plus que les autres, c’est +le SFU : ça donne assez rapidement une idée de la marge d’optimisation qui reste +possible. Pour autant, et même si on est très fier du SFU d’Ergo‑L en français +comme en anglais, ça n’est pas un objectif en soi : [Nuclear-Squid][] a même rejeté +des versions de développement d’Ergo‑L qui avaient des SFU incroyablement bas, +mais qui causaient d’autres problèmes plus sournois à l’usage. + +### Les outils + +Les itérations de développement ont été facilitées par : + +- [x‑keyboard][], pour tester nos layouts ; +- [kalamine][], pour générer et installer les pilotes ; +- [notre analyseur maison](/stats). + +On a développé notre propre analyseur pour trois raisons : + +- aucun analyseur existant ne prenait en compte les touches mortes, alors que + toutes les dispositions francophones en font usage — et c’est même un élément + fondamental d’Ergo‑L ; +- on a voulu mettre en lumière certains défauts de la disposition au fur et à + mesure de l’avancement du projet, et qui n’étaient pas toujours pris en compte + par les autres analyseurs : part des extensions dans la charge des doigts, + qualification des redirections, repérage des ciseaux… +- c’était simple et fun à faire. :-) + +Bien évidemment, on a vérifié que pour un même layout et un même corpus, notre +analyseur donnait les mêmes résultats que les analyseurs existants. Et bien sûr, +tout est disponible sous licence libre pour que chacun·e puisse étudier, +modifier, utiliser et rediffuser le tout comme bon lui semblera. + +### La communauté + +Faire une disposition de clavier pour soi-même est relativement aisé ; en faire +une qui convienne au plus grand nombre, c’est une autre histoire. + +En particulier, on a tou·te·s des niveaux de tolérance différents à certains +défauts de layout : pour moi les extensions d’auriculaires sont particulièrement +pénibles, alors que d’autres préfèrent ça plutôt que d’utiliser AltGr ; +certain·e·s s’accomodent bien des ciseaux (notamment les utilisateurices de +claviers 3D), d’autres pas du tout ; et les mauvaises redirection sont le point +le plus clivant : certain·e·s s’y font, mais beaucoup trouvent ça rédhibitoire à +l’usage. + +Pour prendre en compte toutes ses particularités, notre analyseur ne se contente +pas de mesurer chaque type d’achoppement mais les détaille en listant tous les +digrammes et trigrammes pouvant poser problème. Ça nous a fait gagner beaucoup +de temps en facilitant les échanges de la communauté Ergonaute pendant le +développement d’Ergo‑L. + + +Les autres analyseurs +-------------------------------------------------------------------------------- + +Notre analyseur n’est ni le premier, ni le dernier à être développé. Petit tour +d’horizon des autres analyseurs parmi les plus connus et les plus utiles. + +### CarpalX + +[CarpalX][] est un analyseur et optimiseur en Perl, proposé par [Martin +Krzywinski][] sous licence non-libre (CC-BY-NC-SA 4.0). Le [code +source][CarpalX-source] est disponible sur son site, la dernière modification +(version 0.12) remonte à 2015. + +CarpalX a un intérêt historique mais comme [mentionné plus +haut](#lapproche-carpalx), son score d’effort ne permet pas de fournir une +évaluation fiable. Loin s’en faut. Il a globalement été une perte de temps +pour le développement d’Ergo‑L. + +### KLA (keyboard-layout-analyzer) + +[KLA][] est un analyseur libre en PHP et JS, proposé par [Patrick +Gillespie][patorjk] sous licence libre (MIT). Le [code source][KLA-source] est +disponible sur github, la dernière modification remonte à 2019. + +[KLAnext][] est un fork non-libre de KLA par [Ian Douglas][]. Ce fork est +lui-même dérivé de [KLAtest][] ([source][KLAtest-source]) par [Xay Vong][], +a.k.a. “Shena’Fu” ou “Den”. Sans dépôt de code, difficile d’évaluer ce +qu’apporte KLAnext à l’original — mais comme évoqué plus haut, il ne nous semble +pas pertinent. C’est en référence aux failles de KLAnext que la plaisanterie +*« [Qwerty-Lafayette est le meilleur layout du monde !][lafayette_mldm] »* est +devenue récurrente dans la communauté ergonaute. :-) + +Plus intéressant, [SteveP][] a développé un [fork libre de KLA][KLA-SteveP] +([source][KLA-SteveP-source]) et détaille précisément les [corrections +apportées][KLA-SteveP-about] : + +- le calcul de distance parcourue est remplacé par une évaluation de *pénalité* + de distance, qui est pondérée par doigt pour prendre en compte la [loi de + Fitts][] — ça n’est pas aussi poussé que ce que proposent Workman ou + Colemak-DH, mais c’est déjà un progrès très significatif ; +- le SHU n’est plus du tout pris en compte dans le calcul de la note globale, si + bien que les roulements ne sont plus considérés comme une pénalité. Enfin ! + +On persiste à recommander d’ignorer la note globale de KLA, mais ce fork de +SteveP propose des métriques bien plus saines que KLAnext. À notre connaissance, +c’est la version de KLA la plus utilisée — à juste titre. Noter toutefois que +son développement s’est arrêté en mai 2021. + +### Colemak-DH + +[Colemak-DH][] est un projet qui a enthousiasmé beaucoup d’anglophones, à juste +titre : c’est une belle amélioration de Colemak, qui lui confère un beau +rééquilibrage de la charge des doigts, proche de celui de Workman (qui fait +office de référence dans ce domaine). + +Et comme c’est un projet d’ampleur, ses contributeurs — dont un certain SteveP — +ont développé [un analyseur][Colemak-DH-analyzer] qui reflète les choix de cette +disposition, notamment la recherche de bons roulements et d’une bonne +répartition de la charge des doigts. Le [code source][Colemak-DH-source] (JS) de +cet analyseur est disponible sous licence libre (CC0). + +C’est un analyseur plus complet que KLA, qu’il semble avoir remplacé — au moins +pour les développeurs qui y ont contribué. Le dernier commit remonte à juin +2022. + +### Oxeylyzer ❤️ + +[Oxey][] est un auteur de dispositions de clavier très reconnu, notamment pour +[Sturdy][] qui est d’une efficacité redoutable en anglais : un SFU très bas +(0.9 %), beaucoup de roulements, très peu de ciseaux. Du grand art ! + +Oxey propose aussi un analyseur très complet avec son [layout playground][], +dont le [code source][oxeylyzer] (Rust) est disponible sous licence libre +(Apache 2.0). Cet  Oxeylyzer  est à nos yeux le meilleur analyseur du moment : + +- des métriques précises, complètes et pertinentes : sa notion de  mauvaises + redirections , notamment, nous a été très utile ; +- facile à interpréter grâce aux codes de couleur (vert c’est bien, rouge c’est mal) ; +- pas de note globale (tant mieux !), mais efficace pour vite repérer les points + faibles d’une disposition ; +- très pratique pour tester des permutations de touches. + +Il est limité aux dispositions [1DFH][] (3×5 touches par main), ce qui nous +semble très pertinent mais ça serait un inconvénient pour des dispositions du +type Bépo. + +C’est vraiment la référence pour nous. On le recommande vivement ! Et le projet +est activement maintenu, le dernier commit datant de moins de 6 mois à l’heure +où j’écris ces lignes. + +### Kalamine 🚀 + +[Kalamine][] est avant tout le générateur de pilotes que l’on a développé pour +Qwerty-Lafayette et Ergo‑L ; mais au fil du temps il s’est transformé en outil +de mise au point tout-en-un pour les auteurs de disposition de clavier. +L’analyseur d’Ergo‑L vient ainsi d’être intégré à Kalamine, ce qui permet de +visualiser directement l’impact de chaque modification de layout. + +Le générateur est écrit en Python, l’analyseur en JavaScript, et le code source +est proposé sous licence libre (MIT). + +Il n’est pas encore au niveau d’Oxeylyzer mais il a pour nous des avantages +importants, notamment : + +- l’intégration de [x‑keyboard][] pour visualiser la disposition et tester + rapidement une modification sans avoir à l’installer ; +- et surtout, le support des touches mortes ! À notre connaissance, c’est le + seul analyseur qui dispose de cette fonctionnalité. + +On espère qu’en mettant notre analyseur maison à disposition dans Kalamine il +puisse servir à d’autres projets qu’Ergo‑L et les dispositions de la famille +Lafayette. Et il est toujours en développement actif, notamment pour les projets +Erglace et Hypergol. + + +Conclusion +-------------------------------------------------------------------------------- + +- il n’y a pas de mauvais analyseur, juste des mauvaises façons de s’en servir : +- il n’y a pas de bonne note globale, ni de bonne façon de s’en servir ; +- chaque métrique est importante, car on a tous nos préférences et nos ressentis. + +Un grand merci à [Nuclear-Squid][], non seulement pour avoir initié et dirigé le +projet Ergo‑L, mais plus prosaïquement pour sa contibution à la rédaction du +chapitre sur les autres analyseurs. Que le Grand Palmipède parsème son chemin de +pétales de roses. + +[1DFH]: /presentation/#dfh-1u-distance-from-home +[Erglace]: /erglace +[comparateur]: /alternatives/#tableau-comparatif +[cdl2023-slides]: /slides/capitoledulibre2023 +[cdl2023-video]: https://www.youtube.com/watch?v=96RikfmBY-U + +[x‑keyboard]: https://github.com/OneDeadKey/x-keyboard +[kalamine]: https://github.com/OneDeadKey/kalamine + +[Qwerty-Lafayette]: https://qwerty-lafayette.org +[lafayette_mldm]: https://mastodon.social/@fabi1cazenave/111806300874072301 +[Workman]: https://workmanlayout.org/#same-hand-utilization-shu +[Colemak-DH]: https://colemakmods.github.io/mod-dh +[Colemak-DH-analyzer]: https://colemakmods.github.io/mod-dh/analyze.html +[Colemak-DH-source]: https://github.com/ColemakMods/mod-dh/tree/gh-pages +[Oxey]: https://oxey.dev +[Sturdy]: https://oxey.dev/sturdy +[layout playground]: https://oxey.dev/playground/ +[Oxeylyzer]: https://github.com/O-X-E-Y/oxeylyzer +[Béop]: http://beop.free.fr/index.php/Main/Pourquoi#Roulements +[recuit simulé]: https://fr.wikipedia.org/wiki/Recuit_simulé +[CarpalX]: https://mk.bcgsc.ca/carpalx/ +[CarpalX-source]: https://mk.bcgsc.ca/carpalx/?download_carpalx +[CarpalX-effort]: https://mk.bcgsc.ca/carpalx/?typing_effort +[QFMLWY]: https://mk.bcgsc.ca/carpalx/?full_optimization +[Qwerty-Flip]: https://nick-gravgaard.com/qwerty-flip +[KLA]: https://patorjk.com/keyboard-layout-analyzer +[KLA-source]: https://github.com/patorjk/keyboard-layout-analyzer +[KLAnext]: https://klanext.keyboard-design.com +[KLAtest]: https://klatest.keyboard-design.com +[KLAtest-source]: https://bitbucket.org/Shenafu/keyboard-layout-analyzer +[KLA-SteveP]: https://stevep99.github.io/keyboard-layout-analyzer/ +[KLA-SteveP-about]: https://stevep99.github.io/keyboard-layout-analyzer/#/about +[KLA-SteveP-source]: https://github.com/stevep99/keyboard-layout-analyzer +[loi de Fitts]: https://fr.wikipedia.org/wiki/Loi_de_Fitts + +[Nuclear-Squid]: https://github.com/Nuclear-Squid +[kdeloach]: https://github.com/kdeloach +[patorjk]: https://patorjk.com/ +[SteveP]: https://github.com/stevep99 +[Martin Krzywinski]: https://mk.bcgsc.ca/ +[Xay Vong]: https://bitbucket.org/Shenafu +[Ian Douglas]: https://github.com/iandoug +[u/fullyassociative]: https://www.reddit.com/r/Colemak/comments/643uq4/tried_dvorak_carpalx_qgmlwy_and_now_colemak/ diff --git a/www/content/articles/analyseurs/klanext_layout.png b/www/content/articles/analyse_et_optimisation/klanext_layout.png similarity index 100% rename from www/content/articles/analyseurs/klanext_layout.png rename to www/content/articles/analyse_et_optimisation/klanext_layout.png diff --git a/www/content/articles/analyseurs/klanext_score.png b/www/content/articles/analyse_et_optimisation/klanext_score.png similarity index 100% rename from www/content/articles/analyseurs/klanext_score.png rename to www/content/articles/analyse_et_optimisation/klanext_score.png diff --git a/www/content/articles/analyse_et_optimisation/qwerty-flip.gif b/www/content/articles/analyse_et_optimisation/qwerty-flip.gif new file mode 100644 index 00000000..bdf869ef Binary files /dev/null and b/www/content/articles/analyse_et_optimisation/qwerty-flip.gif differ diff --git a/www/content/articles/analyseurs/workman_ansi.png b/www/content/articles/analyse_et_optimisation/workman_ansi.png similarity index 100% rename from www/content/articles/analyseurs/workman_ansi.png rename to www/content/articles/analyse_et_optimisation/workman_ansi.png diff --git a/www/content/articles/analyseurs/workman_grid.png b/www/content/articles/analyse_et_optimisation/workman_grid.png similarity index 100% rename from www/content/articles/analyseurs/workman_grid.png rename to www/content/articles/analyse_et_optimisation/workman_grid.png diff --git a/www/content/articles/analyseurs/_index.md b/www/content/articles/analyseurs/_index.md deleted file mode 100644 index 1598860a..00000000 --- a/www/content/articles/analyseurs/_index.md +++ /dev/null @@ -1,363 +0,0 @@ -+++ -title = "Analyser une disposition de clavier" -date = 2024-07-13T08:01:23+01:00 -author = "kaze" -tags = ["communauté", "technique", "outils"] -+++ - - - -Pour que chacun·e puisse comprendre en quoi Ergo‑L se distingue, quels sont les -avantages et inconvénients des autres layouts, et surtout, pourquoi -[Qwerty-Lafayette][] est le meilleur layout du monde, il était grand temps d’écrire -un article sur l’art délicat de l’analyse et de l’optimisation des dispositions -de clavier. - - - - -Les fondamentaux --------------------------------------------------------------------------------- - -Quels sont les principales caractéristiques d’une bonne disposition de clavier ? - -### La heatmap - -L’optimisation la plus évidente pour une disposition de clavier consiste à -placer les touches les plus fréquemment utilisées aux meilleurs emplacements : - -- sur les 8 positions de repos -
([A]{.kbd}[S]{.kbd}[D]{.kbd}[F]{.kbd} et [J]{.kbd}[K]{.kbd}[L]{.kbd}[;]{.kbd} en Qwerty) -- sur les 4 positions des majeurs et annulaires de la rangée supérieure -
([W]{.kbd}[E]{.kbd} et [I]{.kbd}[O]{.kbd} en Qwerty) -- sur les 2 positions des index de la rangée inférieure -
([V]{.kbd} et [M]{.kbd} en Qwerty) - -Ces positions correspondent à celles notées 1 à 2 par le projet -[Workman](https://workmanlayout.org/#back-to-the-drawing-board). - -![Accessibilité des touches selon Workman.](workman_ansi.png) - -On notera au passage que la question de l’accessibilité hors du pavé central de -3×10 touches ne s’est jamais posée chez Workman. - -### La charge des doigts - -Une autre optimisation de base consiste à équilibrer la charge de travail des -doigts : - -- les doigts forts (index, majeur) peuvent supporter plus de charge que les - auriculaires, qui sont déjà très sollicités avec [Entrée]{.kbd}, - [Backspace]{.kbd}, [Tab]{.kbd}, [Shift]{.kbd}… -- la charge est agravée par les extensions, i.e. les touches qui sont notées 3 - ou plus par le projet Workman (V. ci-dessus). - -On affiche en bleu la charge liée aux touches notées 1 à 2, en jaune celle des -touches notées 3, et en orange celles notées 4 ou plus — ce qui inclut les -touches trop excentrées pour être évaluées par Workman, et qui enfreignent le -principe [1DFH][] auquel nous autres Ergonautes sommes si attachés. - -![Charge des doigts d’Ergo‑L.](ergol.png) - -![Charge des doigts de Bépo.](bepo.png) - -### Les digrammes - -Un digramme est un enchainement de deux touches. -Tout digramme appartient à l’une des catégories suivantes : - -- alternance de mains : les touches sont sous deux mains différentes -- roulement : les touches sont sous deux doigts différents d’une même main - - roulement intérieur : les touches s’enchainent de l’auriculaire vers l’index - - roulement extérieur : les touches s’enchainent de l’index vers l’auriculaire -- digramme de même doigt (SFB) : deux touches différentes à enchainer avec le - même doigt (= le pire enchaïnement qui soit) -- répétition (SKB) : la même touche est pressée deux fois. - -Les roulements intérieurs sont considérés comme les enchainements les plus -confortables. Entre alternance de mains et roulements extérieurs, c’est plus une -question de préférence personnelle. On identifie aussi deux types de mauvais -roulements : - -- les roulements avec « ciseau », qui requièrent un changement de rangée - inconfortable, comme [C]{.kbd}[R]{.kbd} en Azerty ou Qwerty ; -- les roulements avec extension, qui incluent une touche notée 4 ou plus. - -Les SFB sont les pires enchainements qui soient : une bonne optimisation -cherchera à en avoir le moins possible, et fera en sorte de ne pas avoir de SFB -ou SKB sous des auriclaires. - -### Les trigrammes - -Un trigramme est un enchainement de trois touches. -Les critères alternance / roulement / même doigt s’appliquent toujours, mais on -ajoute encore la notion de « redirection » pour les trigrammes faits d’une même -main avec un changement de direction, comme [D]{.kbd}[S]{.kbd}[F]{.kbd} ou -[K]{.kbd}[J]{.kbd}[L]{.kbd} en Azerty ou Qwerty. - -La redirection est qualifiée de « mauvaise » quand elle ne fait pas intervenir -l’index. - - -Critères d’évaluation --------------------------------------------------------------------------------- - -### Métriques consensuelles - -Un analyseur de disposition de clavier va, en tout premier lieu, fournir des -métriques sur les principaux critères : - -- la heatmap doit être centrée sur les positions confortables ; -- la charge des doigts doit être équilibrée et épargner les auriculaires ; -- le taux de SFB (= SFU, same finger usage) doit être le plus bas possible ; -- le taux de mauvaises redirections doit être le plus bas possible. - -Le dernier point est moins souvent pris en considération, mais du point de vue -des Ergonautes c’est une grosse erreur que de le négliger. - -### SHU, same hand usage ? - -Le SHU mesure la répartition entre alternances de mains et roulements. - -À l’époque des machines à écrire mécaniques, le SHU devait être le plus bas -possible car les roulements coinçaient souvent les marteaux : Qwerty, et encore -plus Dvorak, ont été développés dans cet objectif. C’est aussi le cas de Bépo et -ses nombreuses variantes. - -Mais de nos jours, les claviers informatiques n’ayant pas de contrainte de ce -type, cette métrique du SHU n’est plus utilisée pour mesurer la qualité d’une -disposition — voire, elle est souvent utilisée dans l’autre sens : un SHU élevé -caractérise une disposition « rolly », i.e. privilégiant les roulements. C’est -le cas de la très grande majorité des dispositions modernes, dont Workman et -Ergo‑L. - -:::{.highlight lang="en"} -> In designing Workman, I preferred a high SHU (low alternation) over a low SHU -> (high alternation). I think high alternation is beneficial if you’re typing on -> mechanical typewriters but not necessarily on modern keyboards. […] - -> It is much more efficient to ride the momentum of a single arm or wrist stroke -> and type a combo rather than just one key. -::: -:::{style="text-align: right"} -— [kdeloach][], [Workman Keyboard Layout][] -::: - -Attention : les dispositions de clavier qui privilégient les roulements prennent -le risque d’avoir un taux élevé de mauvaises redirections. - -### Distance parcourue ? - -Une métrique originale consiste à mesurer la distance parcourue par les doigts -pendant la saisie d’un texte. Elle a été rendue populaire par CarpalX et KLA : -facile à calculer, c’est toujours amusant de savoir combien de kilomètres nos -doigts parcourent pour saisir un texte. :-) - -La communaté Ergonaute n’utilise pas cette métrique car elle n’est pertinente -que si l’on suppose que tous les déplacements de doigt se valent — ce qui est -évidemment faux (V. le § sur la [heatmap](#la-heatmap)). - -### Note globale ? - -Certains analyseurs de layout proposent une note globale, qui est une moyenne -pondérée de plusieurs critères plus objectifs. Si vous connaissez les critères -utilisés et êtes d’accord avec leur pondération, cette note globale peut donner -une évaluation générale appréciable lors des premières phases d’optimisation. - -Mais il y a deux choses importantes à garder à l’esprit : - -- une note globale ne rend pas compte des pires défauts de la disposition : ils - sont soit noyés dans la moyenne, soit complètement ignorés ; -- quelle que soit sa qualité, une note globale ne sera jamais une bonne cible - d’optimisation. - -:::{.highlight} -> Lorsqu'une métrique devient un objectif, elle cesse d'être une bonne métrique. -::: -:::{style="text-align: right"} -— [loi de Goodhart](https://fr.wikipedia.org/wiki/Loi_de_Goodhart) -::: - - -Optimiser pour une note globale ? --------------------------------------------------------------------------------- - -### Le piège (sournois) - -S’il existait une note globale pertinente, n’importe qui avec des connaissances -basiques en développement logiciel aurait pu déterminer une disposition de -clavier optimale pour un corpus donné en appliquant un algorithme de [recuit -simulé][]. C’est ce qu’a fait [CarpalX][], qui est le projet le plus ancien et -le plus connu dans le domaine… et qui a abouti à des dispositions comme -[QFMLWY][] que personne n’utilise — et pour cause : CarpalX réussit bien à -proposer des dispositions ayant la meilleure note globale pour un corpus donné, -mais cette note étant trop peu pertinente, les dispositions obtenues n’ont pas -grand intérêt. - -S’il existait une note globale pertinente mais que vous n’avez pas de compétence -en programmation, vous pourriez passer par un analyseur en ligne comme -[KLAnext][] qui propose ce type d’évaluation, et à force d’essais vous -obtiendriez une disposition très bien notée pour votre langue cible — -probablement le français, si vous lisez cet article. Vous pourriez alors amender -votre layout pour améliorer sa note en anglais, jusqu’à obtenir assez facilement -une note comparable aux meilleurs projets anglophones du moment : Colemak, -MTGAP, Sturdy… À ce stade, deux conclusions sont possibles : - -- soit vous êtes un esprit supérieur comme le monde n’en connait que rarement — - il y avait Einstein au XXe siècle, il y a vous au XXIe ; -- soit vous êtes tombé sur une faille de l’analyseur, et sans le savoir, vous - avez optimisé pour cette faille. - -Toute note globale étant imparfaite, optimiser pour une note globale va -**forcément** vous faire tomber dans ce travers. Pire, optimiser pour une note -globale peut vous faire perdre de vue certains critères importants : par -exemple, la note d’effort de CarpalX ne tient pas compte du SFU, et la note -globale de KLAnext ne tient pas compte de la heatmap (en plus de *pénaliser* les -roulements, mais c’est une autre histoire). - -### *« [Qwerty-Lafayette][] est le meilleur layout du monde ! »* - -C’est un plaisanterie récurrente de la communauté Ergonaute, en référence à ce -travers de note globale après que j’ai passé 10 minutes à jouer avec [KLAnext][] -et obtenu ce layout : - -![Score record obtenu sur KLAnext…](klanext_score.png) - -![… avec un Qwerty partiel inutilisable.](klanext_layout.png) - -Ici je prends l’exemple de KLAnext avec un layout [volontairement -ridicule](https://mastodon.social/@fabi1cazenave/111806300874072301), mais c’est -vrai avec tous les analyseurs si on se contente d’optimiser pour un seul critère -— y compris celui qu’on a développé pour Ergo‑L. Ce n’est pas l’analyseur qui -est en cause, c’est son utilisation : aucune note globale n’étant pertinente, -vouloir évaluer ou classer des dispositions à cette aune est voué à l’échec. - - -Optimiser façon Ergonaute ! --------------------------------------------------------------------------------- - -### La méthode - -Le crédo des Ergonautes est que **quel que soit le layout, son pire défaut se -ressentira toujours plus que ses meilleures qualités**. C’est l’approche que -l’on propose sur notre [comparateur](/alternatives/#tableau-comparatif) et qu’on -a suivie pendant toute la mise au point d’Ergo‑L, où on a itéré comme suit : - -1. identifier le pire achoppement de la disposition (SFU, ciseau, redirection…) ; -2. améliorer notre analyseur pour qualifier et mesurer cet achoppement ; -3. trouver une modification du layout qui, sur la foi de l’analyseur, réduise - cet achoppement ; -4. utiliser ce layout jusqu’à détecter un autre achoppement (généralement moins grave) ; -5. `GOTO 1` - -On n’a donc jamais eu aucun usage d’une note globale. Au contraire, on regarde -toujours la pire note et les pires enchainements pour évaluer une disposition et -proposer des améliorations. - -Cela dit, il y a bien une métrique que l’on regarde plus que les autres, c’est -le SFU : ça donne assez rapidement une idée de la marge d’optimisation qui reste -possible. Pour autant, et même si on est très fier du SFU d’Ergo‑L en français -comme en anglais, ça n’est pas un objectif en soi : [Nuclear-Squid][] a même rejeté -des versions de développement d’Ergo‑L qui avaient des SFU incroyablement bas, -mais qui causaient d’autres problèmes plus sournois à l’usage. - -### Les outils - -Les itérations de développement ont été facilitées par : - -- [x‑keyboard][], pour tester nos layouts ; -- [kalamine][], pour générer et installer les pilotes ; -- [notre analyseur maison](/stats). - -On a développé notre propre analyseur pour trois raisons : - -- aucun analyseur existant ne prenait en compte les touches mortes, alors que - toutes les dispositions francophones en font usage — et c’est même un élément - fondamental d’Ergo‑L ; -- on a voulu mettre en lumière certains défauts de la disposition au fur et à - mesure de l’avancement du projet, et qui n’étaient pas toujours pris en compte - par les autres analyseurs : part des extensions dans la charge des doigts, - qualification des redirections, repérage des ciseaux… -- c’était simple et fun à faire. :-) - -Bien évidemment, on a vérifié que pour un même layout et un même corpus, notre -analyseur donnait les mêmes résultats que les analyseurs existants. Et bien sûr, -tout est disponible sous licence libre pour que chacun·e puisse étudier, -modifier, utiliser et rediffuser le tout comme bon lui semblera. - -### La communauté - -Faire une disposition de clavier pour soi-même est relativement aisé ; en faire -une qui convienne au plus grand nombre, c’est une autre histoire. - -En particulier, on a tou·te·s des niveaux de tolérance différents à certains -défauts de layout : pour moi les extensions d’auriculaires sont particulièrement -pénibles, alors que d’autres préfèrent ça plutôt que d’utiliser AltGr ; -certain·e·s s’accomodent bien des ciseaux (notamment les utilisateurices de -claviers 3D), d’autres pas du tout ; et les mauvaises redirection sont le point -le plus clivant : certain·e·s s’y font, mais beaucoup trouvent ça rédhibitoire à -l’usage. - -Pour prendre en compte toutes ses particularités, notre analyseur ne se contente -pas de mesurer chaque type d’achoppement mais les détaille en listant tous les -digrammes et trigrammes pouvant poser problème. Ça nous a fait gagner beaucoup -de temps en facilitant les échanges de la communauté Ergonaute pendant le -développement d’Ergo‑L. - - -Les autres analyseurs --------------------------------------------------------------------------------- - -Notre analyseur n’est ni le premier, ni le dernier à être développé. Petit tour -d’horizons des autres analyseurs parmi les plus connus et les plus utiles. - -### CarpalX - -TODO - -### KLA, KLAnext - -TODO - -### Colemak-DH - -TODO - -### Sturdy - -TODO - - -Conclusion --------------------------------------------------------------------------------- - -- il n’y a pas de mauvais analyseur, juste des mauvaises façons de s’en servir : -- il n’y a pas de bonne note globale, ni de bonne façon de s’en servir ; -- chaque métrique est importante, car on a tous nos préférences et nos ressentis. - -Un grand merci à [Nuclear-Squid][], non seulement pour avoir initié et dirigé le -projet Ergo‑L, mais plus prosaïquement pour sa contibution à la rédaction du -chapitre sur les autres analyseurs. Que le Grand Palmipède parsème son chemin de -pétales de roses. - -[1DFH]: /presentation/#dfh-1u-distance-from-home -[Qwerty-Lafayette]: https://qwerty-lafayette.org -[Nuclear-Squid]: https://github.com/Nuclear-Squid -[kdeloach]: https://github.com/kdeloach -[Workman Keyboard Layout]: https://workmanlayout.org/#same-hand-utilization-shu -[recuit simulé]: https://fr.wikipedia.org/wiki/Recuit_simulé -[CarpalX]: https://mk.bcgsc.ca/carpalx/ -[QFMLWY]: https://mk.bcgsc.ca/carpalx/?full_optimization -[KLAnext]: https://klanext.keyboard-design.com -[x‑keyboard]: https://github.com/OneDeadKey/x-keyboard -[kalamine]: https://github.com/OneDeadKey/kalamine