Claviers mécaniques
10/2020 Je me suis lancé dans la fabrication DIY de claviers mécaniques ⌨️ personnalisés. Du choix de la disposition des touches à la modélisation et à l'impression 3D du boîtier, en passant par le câblage et l'utilisation de micro-contrôleurs 📟, voici comment faire des choses réellement utiles .
J'ai d'abord commencé avec un clavier au format TKL acheté, “normal” sans pavé numérique, pour un bureau assis debout où la plateforme recevant le clavier + souris était étroite. Je n'ai pratiquement eu aucun changement sur les touches car j'utilisais peu le pavé numérique. Aussi, j'ai gagné de la place pour le déplacement de la souris.
Macro pad
Avant de me lancer dans la fabrication d'un clavier complet, j'ai commencé avec des macros pads : ce sont des mini claviers avec un quelques touches pour lancer ou arrêter la lecture de la musique, basculer l'affichage sur mon switch KVM, ou avec des dérivés de potentiomètres pour régler le volume ou même la luminosité de l'écran.
Batpad
Ma première réalisation est le batpad : ce macro pad m'a permis de comprendre le fonctionnement de QMK pour le firmware, de déssiner et imprimer un petit boitier en 3D, de souder quelques switchs à un Atmega 32u4
, micro-controlleur utilisé dans quelques modèles d'Arduinos.
Pavé numérique
Ne plus avoir de pavé numérique était bien au début mais me manquait parfois, j'ai alors fabriqué un avec un boitier imprimé en 3d et avec un micro-controlleur Atmega 32u4
. Habituellement, le pavé est situé à droite, je l'ai placé à gauche de mon clavier afin que la main droite se déplace moins pour aller chercher la souris et pour augmenter l'utilisation de la main gauche pour “décharger” la droite.
Pour câbler ce type de pavé, chaque switch n'est pas relié directement aux pins du micro-controlleur car le nombre de pin ne serait pas suffisant : il faut autant de pins que d'interrupteur et une masse soit 18 pins au total pour ce pavé numérique. La solution consiste à câbler une matrice composée de lignes et de colonnes. Puis coté firmware, il faut envoyer du courant dans chaque colonne et lire s'il y a une ligne qui reçoit du courant. Si c'est le cas, alors l'interrupteur qui se trouve à la croise de la ligne et colonne a été appuyé. La doc de QMK décrit plus en détail cette mise en oeuvre.
Single Key
J'ai découvert qu'il était possible de faire encore plus simple : un PCB qui à la forme d'un connecteur USB et sur lequel un Atmega 32u4
est soudé. J'ai collé un switch sur le dessus à la colle chaude, l'ai cablé entre 2 pin et flashé avec QMK.
Au premier appui sur le bouton, une succession de touche est envoyée comme Je suis un robot O_O
. Un 2e appui rapide envoie une autre chaine de caractère. Inutile, donc indispensable !
Claviers alphanumériques
Agathe
Au grés de discussions entre collègues, je me suis lancé dans la modélisation d'un boitier en 3D pour un clavier custom avec une forme ergonomique : le Agathe. louckousse a dessiné sous Kicad le circuit électronique, aka le PCB, et nous l'avons fait fabriquer sur chez JLCPCB : il est basé sur un (encore !!) un Atmega 32u4
avec un connecteur USB-C et un rétro-éclairage avec des LEDs placées sur l'envers du clavier.
La disposition des touches du clavier sépare bien la droite et la gauche, introduit 2 touches espaces et réduit encore le nombre de touche par rapport à un TKL où le bloc de 6 touches Page Up, Page Down, Insert… est supprimé. C'est l'occasion d'enrichir mes connaissances sur QMK pour faire un mapping complet avec un rétro-éclairage sous le clavier. Ce firmware offre de nombreuses fonctionnalités que nous n'avons pas sur un clavier traditionnel :
- appui long / appui court sur une touche pour faire Shift et espace ;
- 'tap dance' : l'équivalent du simple clic ou double clic avec des variations supplémentaires ;
- 'leader key' : l'appuie sur une touche spécifique puis une autre perment de faire des actions personnalisées comme envoyer d'un seul coup
Merci d'avance et bonne journée
, phrase que j'utilise beaucoup dans mes mails ; - gestion de LEDs RGB pour faire joli ou afficher un retour du clavier lorsqu'un ordre est pris en compte ou pas ;
- bien d'autres…
Le clavier contient alors tous les raccourcis et n'est pas dépendant de l'ordinateur ni d'un logiciel particulier. De plus, certains n'étant pas facile à taper peuvent être alors déplacés afin d'être plus accessibles. Ainsi, j'ai remplacé Alt + Tab pour basculer d'une fenètre à l'autre par Ctrl + T : . Cela permet de limiter les déplacements des doigts ou main sur le clavier.
Par contre, il faut faire un peu de C++
mais pas de manière compliquée : pas de classe, ni de pointeur et encore moins de gestion de mémoire .
J'en profite également pour changer la disposition des touches pour passer en colemak mod-dh : les lettres les plus fréquentes sont disposées sur la ligne du milieu du clavier afin que les doigts se déplacent le moins possible. Cela permet de réduire la tension sur les mains. J'opte également pour des reposes poignets un peu plus haut que traditionnellement afin que mes mains “volent” au dessus du clavier. C'est le début du “touch typing” : pratique consistant à ne pas regarder le clavier, à bien utiliser tous les doigts de chaque main et ne pas taper des touches destinées à la main gauche avec la main droite.
Ce changement de disposition nécessite de réapprendre à taper et à accepter pendant plusieurs mois à taper très doucement. J'ai mis 2 ans à m'adapter et à retrouver pratiquement une vitesse de frappe comme sur un Azerty. Le code reste encore compliqué à taper, notamment à cause de la ligne des chiffres et symboles qui est complètement revue.
Dactyl / Flactyl
La forme de l'Agathe ne me convenait que moyennement : je voulais pouvoir écarter d'avantage les mains afin d'ouvrir les épaules. C'est là que rentrent dans la partie les claviers 'split' : un demi clavier par main qu'il est possible de positionner comme on le souhaite sur le bureau. Un fil relie les 2 mains pour les synchoniser. Plusieurs formes d'alignement des touches sont disponibles : toutes les touches sont alignées sous forme de tableau, ou bien chaque colonne est suit la longueur des doigts afin de mieux s'ajuster à la position naturelle de la main. De plus, le pouce est généralement pas suffisement exploité : ce doigt a des degrés de déplacements bien supérieurs aux autres, il est alors possible de lui affecter des touches qui sont habituellement mal placées et souvent utilisées : Shift, Control ou même { .
Il existe un projet permettant de générer un modèle en 3D de Dactyl : il est de forme ergonomique très incliné reprenant la forme inverse de la main au repos.
J'ai utilisé un micro-controlleur STM32F401
aka “black pill” : beaucoup plus de flash et de ram que les Atmega32u4
et beaucoup moins cher.
Ce modèle est cablé à la main sans circuit imprimé, les switchs sont “hotspawables”, c'est à dire qu'il est possible de les changer pour en mettre avec un ressort plus fort, un modèle clicky etc… J'utilise des switchs silent red : linéaire, souple et silencieux.
Il faut compter 24h d'impression pour une moitiée et 1 après midi de cablâge / soudure etc…
Le firmware est toujours basé sur QMK, la disposition que j'ai choisie est Colemak-mod DH avec une variante pour avoir les accents les plus utilisés, à
é
, directement accessible. L'ensemble des sources de ce projet sont sur mon gitlab.
Ce clavier est volumineux et ne rentre pas facilement dans un sac à dos. J'ai alors repris un design d'un autre modèle et l'ai adapté afin d'avoir la même disposition mais plat : je l'ai appelé Flactyl. Il est cablé rigoureusement pareil que le Dactyl afin de partager la même expérience utilisateur avec le même firmware.