Keyboards : et toi comment tu tapes ?

Nicolas FABRE
YounitedTech
Published in
15 min readJul 7, 2022
Reviung 41

Aujourd’hui on va parler d’un outil que vous utilisez tous les jours, qui est devenu incontournable dans nos sociétés numériques mais très sous-estimé : le clavier.

Qu’est-ce qu’un clavier ?

Commençons par un rappel historique et technique.

Le clavier est une interface humain-machine qui permet la saisie de caractères avec une ou plusieurs touches correspondant à des lettres, symboles ou actions.

  • Les premiers claviers sont apparus comme moyen de faciliter l’écriture, ce sont les premières machines à écrire au 18eme et 19eme siècles. (premier brevet 1714 Henry Mill — Angleterre)
  • Lorsque les premiers ordinateurs arrivent, la saisie de texte devient très vite un des usages principaux pour interagir avec les systèmes d’exploitation alors en ligne de commande (vers 1960). On réemploie alors le principe existant du clavier des machines à écrire.
  • Fin des années 70 les fabricants commencent à décliner les claviers en fonction des langues des zones géographiques.
  • Dans les années 80 le Personal Computer commence à envahir les bureaux et les habitations.

Mais alors comment ça marche un clavier ?

En principe c’est très simple, on presse une ou plusieurs touches et le clavier envoie un signal à l’ordinateur pour lui dire ce qu’il doit faire.

Simple n’est-ce pas ? A un détail près, un clavier classique c’est 104 touches pour la norme ANSI-INCITS 154–1988, utilisée principalement aux Etats-Unis, ou 105 touches pour la norme ISO/IEC 9995–2 (initié par l’AFNOR en 1984) et surtout un interrupteur par touche.

Pour ne pas avoir 105 fils dans un câble reliant l’ordinateur au clavier ceux-ci sont conçu sous forme de matrice représentant les lignes et les colonnes.

Et pour ceux qui se souviennent de leurs cours d’électronique vous aurez remarqué le principal problème de cette matrice, le courant peut remonter d’une ligne à une autre si deux touches sont pressées en même temps.

La solution est simplement d’ajouter des diodes bloquant le sens du courant dans une seul direction, ligne vers colonne ou colonne vers lignes. On parle alors de matrice de diodes.

Les claviers intègrent un microcontrôleur qui va alors “scanner” la matrice. En alimentant une colonne (sortie) on peut savoir quelle touche est pressée sur la ligne correspondante (entrée). En scannant la matrice plusieurs fois par seconde il devient très facile de suivre les touches pressées par l’utilisateur.

L’avantage d’une matrice se retrouve aussi dans l’optimisation des entrées/sorties du microcontrôleur.

Prenons les cas d’un clavier de 84 touches, celui-ci peut être représenté sous la forme d’une matrice 14x6 ou de 12x7.

Dans le premier cas nous avons alors 14 colonnes et 6 lignes soient 20 entrées/sorties à gérer, pour la seconde matrice nous avons 12 colonnes et 7 lignes soit 19 entrées/sorties.

Il devient alors intéressant de pouvoir libérer une entrée/sortie pour ajouter une fonctionnalité comme un rétroéclairage RGB.

Les LED RGB SK6812MINI-E par exemple sont montées en série ce qui permet de n’utiliser qu’un seul port I/O avec un bus de données sur 24bit.

Les interrupteurs eux existent principalement sous trois formes :

  • un “dôme” de caoutchouc avec une pastille conductrice vient fermer un circuit sous la pression.
  • les interrupteurs mécaniques où une pièce de plastique vient déplacer un contacteur en métal.
  • les interrupteurs optiques, plus rares, ou la pièce mécanique en plastique vient ici bloquer un signal lumineux. Ces interrupteurs sont caractérisés par un temps de réponse plus faible.

La différence entre ces solutions se fera sur le confort de frappe (la force nécessaire, la sensation linéaire ou pas, le son avec les interrupteurs ‘clicky’ et leur bruit reconnaissable dans les open spaces).

Le principe lui restera le même, lorsque l’on appuie sur la touche un mouvement vertical vers le bas va actionner un contact qui envoie un signal et la référence dans le domaine reste la marque allemande Cherry avec ses Cherry MX.

Fonctionnement interne de switches de type Cherry MX

Et justement il reste un point de fonctionnement à expliquer : comment l’information des touches pressées est transmise du clavier vers l’hôte.

Là rien de bien compliqué non plus, les interfaces humain-machine (ou Human Interface Devices HID sous classe des Physical Interface Devices PID) sont des types de périphériques faisant partie intégrante de la spécification USB.

L’hôte initie la conversation avec le périphérique qui en retour lui transmet des données. Dans le cas des HID, ces données suivent un codage bien précis définit dans les HID Usage Tables que l’on peut retrouver sur le site de l’USB Implementers Forum

Pour les plus curieux, le youtubeur Ben Eater a fait une très bonne vidéo expliquant plus en détail le protocole USB pour les claviers avec en bonus un rappel sur le protocole pour les claviers PS/2 (attention ça peut être assez technique).

Se réapproprier nos outils de production…

Je suis en vieux joueur de World of Warcraft (depuis 17 ans) et depuis plusieurs années j’utilise en pad pour ne pas avoir mal au poignet et mieux gérer mes raccourcis.

Fin 2019 j’ai commencé à me demander si je ne pourrais aussi améliorer l’utilisation du clavier au quotidien et plus particulièrement pour coder.

Peu de temps après un certain virus a libéré beaucoup de temps dans mon agenda et j’ai commencé à creuser le sujet sans savoir jusqu’où cela allait m’emmener.

level 1 : faire ses courses

Le point de départ sera toujours de savoir ce que l’on cherche à améliorer :

  • avoir plus facilement accès à des caractères spéciaux
  • optimiser l’espace en supprimant des touches inutiles ou au contraire ajouter des touches paramétrables
  • rendre la frappe plus confortable
  • réduire des douleurs avec une position plus ergonomique

Pour la saisie de code je me suis vite rendu compte que l’AZERTY n’est pas le mieux adapté, les caractères spéciaux demandent plus de combinaison de touches, certaines demandant parfois une certaine flexibilité des doigts.

D’un autre coté le QWERTY n’est pas fait pour utiliser des accents mais c’est la disposition de touche la plus courante donc celle que presque tous les claviers du marché utilisent par défaut.

AZERTY
QWERTY

L’une des premières choses que j’ai constatées c’est que le marché grand public des claviers s’ouvre de plus en plus à des modèles non standard.

De plus, plusieurs grandes marques comme Razer, propose désormais des claviers avec des touches différentes, à membrane ou mécanique, plus ou moins dures. Mais récemment sont apparu des claviers grand public de format plus petits tel le TKL (Ten Key Less), un clavier classique auquel on a retiré le pavé numérique.

Claviers Razer

Enfin quand on aime son clavier et qu’on l’utilise tous les jours on peut aussi vouloir changer la couleur ou la forme des touches.

Les rendre plus transparentes pour laisser passer la lumière ou changer de matière pour un toucher différent. Par exemple les deux principales matières, l’ABS (Acrylonitrile Butadiene Styrene) ou le PBT (Poly Butylène Téréphtalate) ont des coûts, une durabilité et des choix de teintes différents.

Touches de clavier Boba Fett

Bref rien qu’en ouvrant son portefeuille on a accès à un très grand nombre d’options qui couvriront la plupart de vos besoins mais… et si on passait au niveau suivant ?

level 2 : software

Vous avez réussi à trouver le clavier au bon format, avec les bons switches et les touches qui vous plaisent.

Mais parfois un layout classique n’est pas suffisant pour obtenir une disposition de touche adaptée à nos besoins.

Avec le temps, de nombreuses personnes se sont penchées sur la question et en plus des dispositions de touches propres à chaque pays, plusieurs idées ont été explorées.

Soit des évolutions de formats existants :

  • nouvelle version de l’Azerty mise au point par l’AFNOR, également appelée Azerty+, qui est disponible à la fois en clavier physique (commercialisé par LDLC par le passé) ou sous forme de drivers
  • le Qwerty international qui reprend la disposition de touche du Qwerty mais rend certaines touches mortes (‘ “ `) afin de les utiliser en combinaisons des autres touches pour former les caractères accentués.
AZERTY AFNOR
QWERTY Internationnal

Soit avec des dispositions non conventionnelles :

  • le Dvorak, mis au point dans les années 30 pour la saisie de l’anglais puis décliné dans des variantes locales
  • le Bépo, sorti en 2003 pour améliorer la saisie du français et des langages de programmation.
DVORAK
BÉPO

Quel que soit celle qui vous convient le mieux, changer de disposition de touches est extrêmement simple (qui n’a jamais fait cette blague de passer le clavier d’un collègue en cyrillique…) et surtout cela ne vous coutera rien.

Mais le monde des claviers mécanique est ainsi fait et la recherche de la solution parfaite est sans fin.

level 3 : hardware

Lorsque l’on a fait le tour des clavier présents dans le commerce force est de constater que la forme change peu, un rectangle d’une centaine de touches alignées par lignes.

Comparer à la forme d’une main on peut légitimement se demander si on ne peut pas faire mieux.

Ergonomie de la main

L’utilisation régulière d’un clavier peut provoquer des douleurs et même de l’arthrose (une dégradation du cartilage articulaire) au niveau des doigts et poignets.

Nos doigts sont aussi faits pour se plier sur un seul axe longitudinal et leur mobilité latérale est assez réduite. Vous pouvez faire le test sur votre clavier, pour atteindre certaines touches toute votre main va se déplacer et pas seulement votre doigt.

Et c’est justement la question que des milliers de makers se pose.

Est alors apparu le mouvement des Custom Mecanical Keyboards, le but est simple : repenser la forme et les usages des claviers.

Macropad
Numpad (Dumbpad)

Evidemment quand on décide de fabriquer son propre clavier le choix des composants se pose rapidement et ça peut être un problème.

En premier les switches qui, en fonction de vos préférences (taille de switch, mécanisme, force des ressorts, lubrification, amortisseur de frappe), peuvent donner le vertige avec plusieurs dizaines de références différentes.

Ensuite les différents profils de touches qui impactent la sensation de frappe et, en fonction de la matière utilisée, le son.

On peut vouloir des touches plus hautes ou légèrement courbées pour plus de confort si le clavier est incliné ou utilisé avec un repose poignet.

Enfin les microcontrôleurs, comme l’Arduino Pro Micro (architecture ARM basé sur ATmega32U4) dont le faible prix a fait de lui le composant de base pour un grand nombre de claviers, il est aussi facilement programmable en C++.

S’en est suivi une longue série de microcontrôleurs avec chacun sa spécificité :

  • les feathers souvent basé sur un processeur ATmega et embarquant nativement le support du Bluetooth
  • le Proton-C de QMK embarquant une processeur ARM Cortex
  • le dernier en date le Raspberry Pi Pico, lui aussi en ARM Cortex mais surtout avec un prix extrêmement faible (environ 5€) et supportant le Python.

Mais ces micro contrôleurs ont un nombre d’entrées/sorties limité ce qui contraint la taille des claviers et le nombre maximal des touches adressable sur une matrice de diodes (pour un Arduino Pro Micro à 18 I/O le maximum étant de 9×9=81).

Apparaissent alors de nouveaux formats, car oui pour les claviers la taille ça compte et c’est même un des principaux critères.

Vous pouvez par exemple suivre ce diagramme pour déterminer la taille qui vous convient.

Keyboard chart

Bon ok, c’est un peu dense alors on va se limiter aux formats les plus populaires :

- le classique 100%, ou full size, pas besoin de le présenter.

- le 80%, ou TKL pour Ten Key Less, dont on a déjà parlé est un clavier classique sans pavé numérique.

- le 75% est assez proche du 80% mais certaines touches comme Insert ou Impression écran sont supprimées car peu utilisées au quotidien.

- le 60%, qui est certainement le plus populaire, va lui retirer les touches directionnelles et les touches de fonctions.

- le 40% enfin, adopte un format ultra compact en supprimant les touches numériques.

Quelques exemples de claviers mécaniques custom :

75%
60% inversé
40%

Mais alors comment garder un clavier fonctionnel avec si peu de touches ? La magie vient du firmware qui va piloter le microcontrôleur, comme QMK un firmware Open Source en C++ (oui les mêmes qui sont derrière le microcontrôleur Proton-C).

Le firmware va nous permettre de rendre paramétrable chaque touche du clavier, ajouter des couches permettant d’accéder à toutes les caractères de la disposition choisie dans le système d’exploitation, mais aussi d’offrir de nouvelles fonctions.

Par exemple, pourquoi ne pas avoir une combinaison de touches saisissant automatiquement votre email ou lançant la compilation de notre code ? Ou encore, rester appuyé 1 seconde sur la touche C pour faire un copier ? Ou même afficher sur l’écran du clavier des statistiques sur votre vitesse de frappe.

La liberté est totale.

Une autre particularité des microcontrôleurs est de pouvoir communiquer, avec le protocole I2C par exemple.

Pourquoi ne pas ajouter un écran ? un buzzer ? un trackball ? un retour haptique ?

Buzzer / Oled / Traball / Haptic

L’ensemble des composants électroniques de la scène maker est accessible pour n’importe quel projet.

Un microcontrôleur peut aussi communiquer avec un autre microcontrôleur et il devient possible de combiner deux claviers pour obtenir un “split” keyboard.

C’est le premier pas dans le vaste univers des “ergo” où la priorité devient le confort avec la recherche de la meilleure position des mains et des doigts.

Sinc

Puis on abandonne les touches alignées par lignes pour les replacer en colonne dans l’axe des doigts et on offre au pouce un peu plus de possibilités

Ergodash (https://github.com/omkbd/ErgoDash)

Encore une fois un choix infini est à notre portée, sous forme de claviers préassemblés comme les Ducky ou Ergodox mais aussi sous forme de kits à assembler soi-même comme chez Keebio.

Ducky
Ergodox
Sinc en kit

L’Open Source a fortement poussé l’émergence de l’Open Hardware qui rend accessible les fichiers de conception de circuits imprimés ou du boitier pour les modifier ou les faire fabriquer s’ils ne sont pas disponibles.

Enfin, tant qu’à modifier un clavier existant pourquoi ne pas passer au niveau suivant ?

level 4 : from scratch

Car ce n’est pas si compliqué que ça, de concevoir son propre clavier.

Le handwiring : approche assez minimaliste qui ne se préoccupe que de la position des switches.

On vient alors fabriquer seulement le support des switches, pas de circuit imprimé, tout est câblé à la main (d’où le nom).

Simple et rapide pour faire du prototypage mais aussi efficace pour débuter ou limiter les coûts de fabrication.

Clavier câblé à la main

S’il vous reste des notions d’électronique du collège, fabriquer votre propre circuit ne sera pas bien dur non plus. Internet regorge de tutoriels sur la prise en main de Kicad (logiciel Open Source pour la conception du circuit imprimé), l’utilisation d’un microcontrôleur type Arduino nous évitant les soudures les plus délicates.

Kicad

Avec un peu de dextérité vous pouvez aussi vous passer de microcontrôleur externe et souder le processeur directement sur le circuit imprimé.

C’est une approche plus délicate mais qui permet de faire des claviers plus fins et avec plus de fonctionnalités. En effet la plupart des microcontrôleurs n’exploitent pas toutes les entrées/sorties du processeur embarqué.

C’est par exemple le cas avec un Arduino Pro Micro qui dispose de 18 entrées/sorties alors que le processeur ATmega32U4 qu’il embarque propose jusqu’à 26 entrées/sorties programmables.

Pour le boitier il est très simple de faire un “sandwich”, un clavier fait avec trois couches de circuit imprimé

Il est tout aussi simple de lancer Fusion360 pour concevoir un boitier destiné à l’impression 3D.

Fusion 360

Pour les plus accroc au code il est aussi possible de concevoir son propre firmware. Des librairies sont disponibles dans presque tous les langages et c’est ainsi qu’on se retrouve avec KMK, un équivalent en Python du firmware QMK conçu pour fonctionner avec Circuit Python sur un Raspberry Pico, ou encore diverses expérimentations de firmwares en Rust.

Mais il reste le dernier niveau, le boss final du clavier custom : le Dactyl Manuform.

Dactyl Manuform

Ce niveau de customisation abandonne complètement l’idée du clavier à plat pour rechercher la forme la plus ergonomique possible.

On parle ici de makers faisant imprimer en 3D des boitiers ajustés spécialement pour la taille de leurs mains. Et il n’est pas rare d’y trouver des switches avec des forces d’activation différentes selon les touches.

Bref on se trouve dans la personnalisation la plus poussée mais étonnamment pas la plus inabordable depuis la démocratisation des imprimantes 3D.

Et moi dans tout ça ?

Pour ma part l’approche que j’ai choisie pour mon clavier est de concevoir mon propre circuit.

Je voulais un format compact mais conserver les touches de fonction, j’ai donc opté pour un format 75%.

Au total le clavier contient 84 touches, soit une matrice de 6x14 ou 7x12 avec un encodeur rotatif pour gérer le volume et un écran oled.

Je suis alors parti sur un contrôleur Elite-C avec 24 ports déntrée/sortie de chez Keebio.

J’aussi décidé d’utiliser le firmware QMK qui regrouppe toutes les fonctionnalités que je souhaitais et reste assez facile à utilisé tout en étant très activement maintenu.

Le tout a été conçu avec Kicad.

Circuit imprimé dans Kicad

J’ai utilisé un script Python qui me permet d’automatiser la génération de trois circuits imprimés différents à partir d’un même design sous Kicad :

  • premier circuit, pour positionner les switches (top plate)
  • second circuit, le clavier à proprement parler (middle)
  • troisième circuit, le dos du clavier arborant une estampe d’Hokusaï

Les trois parties sont maintenues dans un châssis imprimé en 3D conçu sous Fusion 360.

Kanagawa
Kanagawa

Bien qu’encore “amateur”, ce clavier représente un peu plus de 200 heures de travail et le coût des composants avoisine les 250€ pour un modèle unique et bien entendu en OpenHarware.

Références

Dispositions de touches

1. ISO vs ANSI https://en.wikipedia.org/wiki/Keyboard_layout

2. AZERTY https://fr.wikipedia.org/wiki/AZERTY

3. QWERTY https://fr.wikipedia.org/wiki/QWERTY

4. AZERTY+ https://fr.wikipedia.org/wiki/AZERTY#Version_de_la_norme_Afnor

5. QWERTY international https://fr.wikipedia.org/wiki/QWERTY#Variantes_internationales

6. DVORAK https://fr.wikipedia.org/wiki/Disposition_Dvorak

7. BÉPO https://fr.wikipedia.org/wiki/B%C3%A9po

Exemples de claviers

1. macropad https://www.thingiverse.com/thing:3562600

2. dumbpad https://github.com/imchipwood/dumbpad

3. Clavier 75% https://www.reddit.com/r/MechanicalKeyboards/comments/i40tr3/n7584_75_layout_through_hole_keyboard/

4. Clavier 60% https://keeb.io/products/wtf60-mirrored-60-keyboard-pcb

5. Clavier 40% https://keeb.io/products/dsp40-40-staggered-or-ortholinear-keyboard

6. Clavier full size spitted https://keeb.io/collections/pre-built-keyboards/products/kbo-5000-keyboard-pre-built

7. Ergodash https://github.com/omkbd/ErgoDash

8. Ducky https://www.duckychannel.com.tw/en

9. Ergodox https://ergodox-ez.com/

10. PCB pour clavier Sinc https://keeb.io/collections/sinc/products/sinc-split-staggered-75-keyboard

11. Clavier câblé à la main (handwired) https://deskthority.net/viewtopic.php?t=14224

12. Dactyl Manuform https://www.reddit.com/r/MechanicalKeyboards/comments/dkih5b/my_dactyl_manuform_mini_with_only_one_teensy_for/

13. Clavier Razer https://www.razer.com/fr-fr/pc/gaming-keyboards-and-keypads

--

--