Recyclage d'un ancien clavier mécanique en Ergodox

Un clavier ergonomique, opensource et mécanique, que demande le peuple ?

Voici un article sur ce qui m'a occupé pendant un weekend, et qui continuera sans doute à m'occuper pendant un moment étant donné le nombre de possibilités, j'ai nommé l'Ergodox !

C'est quoi un ErgoDox ?

L'ErgoDox est un clavier mécanique composée de deux « claviers » distincts : un pour la main gauche et un autre pour la main droite. Les deux éléments sont reliés entre eux par un câble jack. Cela permet de placer le clavier gauche/droit dans l'alignement des bras, plutôt qu'au centre du bureau.

Photo de mon ErgoDox une fois en place

Le résultat de tout le travail détaillé dans cet article : l'ErgoDox !

Ce clavier peut être vendu déjà monté par divers vendeurs, mais là où le concept de l'ErgoDox est intéressant c'est qu'il est entièrement open-source. Cela signifie que les schémas, les plans des circuits imprimés, ainsi que le logiciel pilotant le clavier sont accessibles et modifiables.

Cela signifie également que des vendeurs se sont spécialisés dans la vente du clavier en pièces détachées, afin de pouvoir laisser à l'utilisateur final le choix de tous les composants qu'il souhaite pour assembler son clavier selon ses besoins.

Cela tombe bien, car je souhaite recycler un clavier mécanique acheté en 2012 et qui commence à montrer des signes de fatigue (quelques touches qui tombent en panne et qu'il faut changer). On va réutiliser les touches de ce clavier plutôt que de les commander neuves, et potentiellement économiser environ 60€ de switchs neufs. On peut voir cette opération de recyclage comme un petit geste pour la planète, en évitant de jeter des composants qui fonctionnent encore correctement.

Commande du matériel nécessaire

Qui dit matériel de niche, dit marché de niche.

FalbaTech (et non pas FablabTech) est un revendeur basé en Pologne qui fourni de nombreux composants orientés autour de claviers comme l'ErgoDox et d'autres, basés sur le même concept.

Commande FalbaTech
ProduitPrix
ErgoDox Partially assembled with electronics + cable€94.00
ErgoDox Standard PVC Case (Aluminium Plate)€51.00
DSA KeyCaps (left & right keyboards) 76 key€60.00
Total€205.00

Celui-ci vous offre les frais de ports si vous commandez pour plus de 200 € de matériel. Bien que dans mon cas je sois déjà en possesion des switch mécaniques, on arrive effectivement à cette somme en commandant les éléments restants.

J'ai fait le choix de commander un PCB déjà finalisé, c'est à dire qu'il contient la carte Teensy (qui doit à elle seule coûter une vingtaine d'euros) et que les nombreuses diodes qu'il faut souder pour chaque touche sont déjà en place, ainsi que d'autres composants qu'il aurait sinon fallu commander séparément.

C'est pour cela que l'on arrive à 94€ pour les deux PCB, car il faut compter la main d'œuvre et également le test pour vérifier que tous les principaux composants fonctionnent. C'est du temps que je n'aurai pas à passer en plus au niveau de l'assemblage, et c'est le secret qui m'a permis d'assembler le clavier en un seul weekend.

Le payement et PayPal

Faites attention lors de l'achat à bien sélectionner le paiement par PayPal plutôt que par virement banquaire, qui est également proposé. Cela permettra de limiter les arnaques de et profiter de l'assurance de votre carte banquaire ainsi celle de PayPal en cas de litige. Vous ne voulez sans doute pas vous casser la tête à ajouter un IBAN sur votre banque puis attendre 48h avant de pouvoir effectuer le payement, sans aucune garantie en cas de non livraison.

Petit hic avec le paiement par PayPal, celui-ci semble ne plus proposer de payer par son service sans créer un compte à la même occasion. La création de celui-ci va demander une confirmation par mail après le payement, et non avant. Cela peut nous permettre, par déduction, de ne pas poursuivre la création si on ne clique pas sur le lien de confirmation. Mais cela n'est évidemment pas mentionné. Cette manipulation a tout d'un dark UX pattern, bien expliqué dans Les Fourberies du Dark UX sur le FramaBlog.

Dans les faits, la création d'un compte ne semble pas obligatoire pour que le paiement au vendeur soit effectif, mais tout vous fait croire que ça l'est afin de vous avoir. On se sent vraiment pris pour un mouton une fois que l'on comprends un peu mieux la combine, et qu'il est déjà trop tard.

Réception du colis

Le clavier étant facilement transportable car coupé en deux, cela signifie également que le transport est facilité. Le colis rentre facilement dans la boite aux lettres, évitant un aller-retour au service de poste.

Les différentes parties de l'ErgoDox reçues

En déballant le contenu du paquet, on tombe sur les différentes parties du clavier à assembler.

Tout est bien emballé, et quelques vis et autres éléments de fixation sont fournis en plus en cas de perte. Ils seront utilisés car certains éléments seront effectivement perdus lors du montage.

Récupération des switchs mécaniques

Le donateur

Notre donateur pour la greffe est un clavier Razer BlackWidow premier du nom, à l'époque où le tout plein de LEDs RGB derrière les touches n'était pas à la mode.

Clavier Razer BlackWidow

Le donateur : un clavier Razer BlackWidow de 6 ans d'âge.

Celui-ci se présente comme un simple clavier mécanique aux switchs bleus, acheté dans un magasin Fnac en 2012, pour préparer le passage du Bac comme il se doit à grands coups de Battlefield 3 et autres outils de révision similaires.

Bonne surprise lors du premier démontage pour échanger deux touches (l'une usée et l'autre peu utilisée) il y a un an, puisque les switchs utilisés sont du Cherry MX Blue véritable et non une copie bas de gamme que l'on retrouve de plus en plus dans les claviers mécaniques à bas coût.

Switch Cherry MX Blue sur le clavier Razer BlackWidow

On enlève la touche, et on trouve bien du switch Cherry MX Blue.

Une fois le plastique recouvrant le clavier BlackWidow enlevé plus ou moins habilement (en cassant celui-ci à plusieurs points à cause des fixations par clips), on peut désolidariser le circuit imprimé du reste de la carcasse afin de se concentrer sur les soudures à l'arrière.

Dessoudage : le matériel

On peut préparer le simili-établi afin de pouvoir dessouder confortablement les nombreux switchs du circuit.

Configuration pour le dessoudage des switchs

La petite configuration pour le dessoudage des switchs.

Pour cela, le matériel que j'utilise est le suivant :

  • Un poste à souder chinois 852D+ qui m'accompagne dans mes nombreux hacks depuis quelque temps et dont je suis très content.
  • Une bobine d'étain SnPb avec flux de 1mm de diamètre qui suffit pour faire de la soudure et dessoudure de composants traversants.
  • Un dévidoir à soudure (horrible) assemblé avec de la récupération. Le tout repose sur un pied qui est une section de mini-poutre en acier, lui donnant suffisamment de poids pour le pas bouger quand on tire sur le fil.
  • Une pompe à dessouder manuelle réparée de nombreuses fois à coup de colle cyano étant donné qu'elle se démembre régulièrement, mais qui en dehors de ça fonctionne bien.
  • Une « éponge » en cuivre permettant de bien nettoyer la panne du fer à souder. Vraiment indispensable, fonctionne bien mieux que l'éponge intégrée au support du fer.
  • Un ventilateur d'aspiration alimenté sur le secteur, permettant grâce à sa forte puissance d'aspirer les fumées du flux contenu dans la soudure afin d'éviter de l'avoir directement sous les narines.

Trouver la bonne technique

On est obligé de faire monter la température du fer à souder au delà des 450°C afin de pouvoir avoir suffisamment de chaleur pour dessouder confortablement et rapidement (important, si on compte le nombre de switchs à récupérer).

Station à souder 852D+

Ma super station à souder montée en température pour faciliter le dessoudage.

J'ai essayé de la descendre à 400°C mais la chaleur se transmet beaucoup moins vite et ne se répartit pas correctement sur toute la soudure, empêchant l'aspiration de la totalité de l'étain à l'aide de la pompe à dessouder.

Dans les faits la panne du fer, la station, et les switchs dessoudés ne semblent pas souffrir de cette haute température qui est bien pratique, c'est donc celle que j'ai choisi de conserver pour récupérer à la chaine tous les switchs.

Cependant la température ne fait pas tout, il faut trouver la bonne technique afin de répartir correctement la chaleur sur toute la soudure pour pouvoir libérer [1] les pattes du switch.

J'ai trouvé qu'en frottant la panne de part et d'autre de la soudure, tout en rajoutant de l'étain neuf avec du flux, l'aspiration ne se passe pas trop mal. Cette découverte a été faite au prix d'environ 10 switchs, qui auront péri amputés de leurs papattes lors de la recherche de la bonne technique. Paix à leur âme.

[1]DÉLIVRÉÉÉÉE ! Désolé.
Aspiration de la soudure autour des pattes du switch

Trouver la bonne technique pour aspirer l'étain n'est pas évidente, mais on y arrive.

Une fois les deux pattes libres, il faut déclipser le switch de la mount plate. Au début j'utilise un petit tournevis plat afin de soulever un clip qui retient le switch sur la plaque, puis pousse avec un gros tournevis cruciforme le clip rond noir qui maintient l'élément au circuit imprimé et que l'on peut voir entre les deux pattes.

Après quelques essais, il s'avère que simplement pousser sur le clip du PCB suffit à faire sortir le switch pour le faire tomber sur la table. Le clip de maintient sur la plaque ne semble pas être endommagé suite à cette extraction un peu plus barbare, qui sera utilisée pour le reste du clavier.

Le clavier donateur partiellement dessoudé

La méthode une fois rodée, un peu de patience sera nécessaire pour tout enlever.

L'ajout d'étain frais et plombé est indispensable, l'étain utilisé sur le clavier possédant un point de fusion trop haut pour être atteignable rapidement. L'âge ayant peut-être joué aussi. De manière générale, j'ajoute toujours de la soudure par dessus un truc que je veux dessouder. Cela permet au moins de profiter du flux contenu dans le fil d'étain pour liquéfier plus facilement le tout.

Toute la soudure aspirée

Toute la soudure aspirée lors de l'opération de récupération.

Une certaine quantité de soudure neuve sera consommée par l'opération. Le faible coût de celle-ci et le fait que la (trop grosse ?) bobine achetée il y a des années soit encore quasiment pleine — malgré des hacks à ne plus en finir — fait que ce n'est pas très important.

J'ai également essayé de dessouder les switchs à l'air chaud, mais celui-ci fait fondre le clip de fixation rond qui assure le maintient au circuit imprimé. Ce n'est donc pas une méthode qui fonctionne dans ce cas.

Assemblage de l'Ergodox

Maintenant les switchs récupérés, nous sommes en possession de tous les éléments nous permettant d'assembler notre ErgoDox.

Greffe des switchs

Cette partie sera plus simple que la précédente, étant donné que souder des composants demande moins de travail que de les dessouder. De plus, l'ErgoDox étant un clavier compact, il dispose de moins de touches qu'un clavier classique. Et donc encore moins de touches si on prend également en compte le pavé numérique.

Cela nous permet de nous consituer une petite réserve de switchs Cherry MX Blue au cas où un des switchs de l'ErgoDox deviendrait défaillant. Là où sur le BlackWidow je devais échanger les touches usées avec des touches peu utilisées comme « arrêt défilement » ou « impr. écran », je vais pouvoir ici jeter la touche morte et la remplacer par une de rechange, parmis celles qu'il me reste en stock.

Montage des switchs sur la plaque d'aluminium

Montage des switchs « plate-mount » sur la plaque d'aluminium.

On commence par monter les switchs sur la plaque de support. Il est important ici d'avoir commandé une configuration comportant une plaque de fixation, car il existe également des configurations un peu moins chères où les switchs reposeront mécaniquement sur le PCB plutôt que sur une plaque dédiée.

Étant donné que les switchs du BlackWidow étaient de type « plate-mount », j'ai donc pris soin de prendre une configuration avec une plaque en aluminium usinée afin de pouvoir correctement fixer les switchs.

Attention au sens de montage des éléments sur la plaque. Il faut constamment se référer au PCB pour savoir dans laquelle des quatre orientations possible le positionner. Fait amusant, sur le BlackWidow, ceux-ci étaient montés à l'envers, avec une orientation sud, ce qui faisait que l'inscription « Cherry » étaient tête bêche. Ici on les oriente nord pour la plupart (mais pas tous !), ce qui rend plutôt bien, avec les inscriptions dans le bon sens.

Il faut également faire attention à vérifier que toutes les pattes des switchs sont bien droites lors du montage de ceux-ci sur la plaque, car quand on va ajouter le PCB sous la plaque, il faut que tout soit bien aligné.

Assemblage du PCB avec la plaque de fixation

Une fois tous les switchs positionnés, c'est l'heure de vérité, il faut que tout soit aligné !

Une fois le PCB ajouté, plus qu'à appuyer un peu partout sur la plaque pour faire rentrer toutes les pattes et tous les clips de fixation des switchs. L'important est que le tout soit bien solidaire et que toutes les pattes dépassent à l'arrière pour pouvoir enchaîner sur la soudure.

On commence à tout souder, et parfois on se rend compte que l'une des pattes d'un des interrupteurs n'est pas passée et s'est tordue contre le PCB. Rien de bien grave, on peut pousser sur le clip à l'arrière du PCB afin de le démonter, puis de remettre la patte droite avant de le réinsérer dans son emplacement.

Test du clavier partiellement assemblé

Une fois la moitié de clavier soudée, la tentation est trop forte, il faut tester ça  !

On peut tenter de tester notre moité de clavier, afin de vérifier que tout va plus ou moins correctement avant d'assembler l'autre côté. Fait bizarre, brancher la partie droite en USB ne suffit pas pour pouvoir avoir une sortie en appuyant sur les touches, bien qu'elle soit correctement détectée sous Linux. C'est en branchant la partie gauche, pas encore montée, que le clavier s'anime et que les touches à droite affichent bien des caractères à l'écran.

Moitié de clavier montée, moitié de clavier OK ! C'est un test rassurant, on peut répéter toutes les opérations précédentes pour la partie de gauche.

Finalisation de l'assemblage

Il ne reste plus qu'à ajouter le couvercle en PVC recouvrant notre assemblage, de le visser, et enfin de poser délicatement un à un les keycaps sur les touches.

Montage des touches par dessus les switchs

Montage des touches par dessus les switchs, le tout dans le boîtier assemblé.

Ces keycaps sont beaucoup moins épais que ceux qui étaient utilisés sur le BlackWidow, donnant une sensation de frappe plus agréable et limitant l'altitude des touches par rapport aux poignets.

La forme des touches est incurvée pour pouvor épouser la forme du bout des doigts, c'est plus agréable que la surface plate dont était faits les keycaps du BlackWidow, qui avaient tendance à faire un peu glisser les doigts sur la touche d'à côté.

Ça respire la qualité, et on se dit que ça valait sans doute les 60€.

Ah oui, j'allais oublier, il n'y a rien d'écrit dessus car je frappe à l'aveugle depuis quelques années maintenant grâce à l'apprentissage du bépo. Il faut également garder en tête que vu que le clavier est entièrement programmable, on risque de se retrouver avec les marquages ne reflétant plus la réalité en cas de changements de la position des touches.

Programmation du clavier

C'est de la programmation dont nous allons maintenant parler, car l'assemblage est terminé !

Premiers pas avec le firmware QMK

Plusieurs firmwares semblent être disponible pour remplacer le contenu de notre Teensy par un programme un peu plus customisé. J'ai pour ma part retenu QMK qui est codé en C, plutôt que de devoir passer par un configurateur en interface graphique, ou pire, web. Celui-ci intègre également une disposition bépo inspirée de celle du TypeMatrix 2030, clavier que j'utilisais jusqu'à présent pour les longues sessions de programmation et/ou d'écriture.

On commence par cloner le dépôt git :

$ git clone https://github.com/qmk/qmk_firmware.git

Au niveau des dépendances Archlinux, j'ai trouvé qu'il fallait installer les paquets suivants pour pouvoir arriver à compiler et installer le firmware :

$ pacman -S avr-gcc avr-libc teensy-loader-cli

L'ensemble du code s'axe autour de claviers, de dispositions, de Makefiles et de fichiers README. Le code et l'architecture sont très bien documentés. On comprend assez facilement avec le code ainsi que la documentation en ligne de QMK qu'il suffit de taper la commande suivante pour compiler et flasher notre clavier :

$ make ergodox_ez:bepo_tm_style:teensy
QMK Firmware 0.6.309
Making ergodox_ez with keymap bepo_tm_style and target teensy

avr-gcc (GCC) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text    data     bss     dec     hex filename
      0   29244       0   29244    723c .build/ergodox_ez_bepo_tm_style.hex

Compiling: keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c                                      [OK]
Compiling: tmk_core/common/command.c                                                                [OK]
Linking: .build/ergodox_ez_bepo_tm_style.elf                                                        [OK]
Creating load file for flashing: .build/ergodox_ez_bepo_tm_style.hex                                [OK]
Copying ergodox_ez_bepo_tm_style.hex to qmk_firmware folder                                         [OK]
Checking file size of ergodox_ez_bepo_tm_style.hex                                                  [OK]
 * The firmware size is fine - 29238/32256 (3018 bytes free)
Teensy Loader, Command Line, Version 2.0
Read ".build/ergodox_ez_bepo_tm_style.hex": 29238 bytes, 90.6% usage
Waiting for Teensy device...
 (hint: press the reset button)

Le clavier se nomme ergodox_ez dans le logiciel, clavier qui est en fait une variante un peu plus avancée de l'ErgoDox, mais cela ne posera aucun problème dans les faits.

Comme nous l'explique l'indication dans le terminal, il suffit ensuite d'appuyer sur le bouton de reset du clavier avec un crayon ou autre objet pointu. Le clavier redémarre, le nouveau logiciel est installé, puis celui-ci redémarre à nouveau, clignote, et notre nouvelle disposition est installée.

L'opération prend moins de 10 secondes. Une fois que tout fonctionne, on peut commencer à utiliser le clavier avec la disposition bépo plutôt que celle d'origine.

Quelques adaptations

Le clavier s'avère être agréable à utiliser, bien que nécessitant un temps d'apprentissage pour cette toute nouvelle disposition de touches. Cependant, à l'usage, certains placements de touches sont problématiques et vont devoir être retravaillés afin d'éviter des erreurs de frappes liées à quelques fonctionnalités du clavier.

Disposition ergodox_tm

La configuration bepo_tm_style disponible dans QMK.

La touche échap n'est pas instantanée car si on reste appuyé dessus alors elle se comporte comme la touche Fn. Étant donné que la touche Fn est déjà bien accessible avec le pouce gauche, rendre Échap en touche directe me permettra d'éviter la latence et les mauvaises manipulations lors de l'utilisation de Vim.

La touche espace se comporte comme la touche AltGr si on reste appuyé un peu longtemps dessus. Il arrive souvent que la touche espace ne soit pas encore complètement remontée lorsque l'appui sur la prochaine touche est lancé. Sur un clavier classique, pas de soucis, car c'est l'ordre d'appui des touches qui compte. Mais avec ce système de rester appuyer sur la touche espace, c'est l'ordre de relâche qui rentre en jeu. Si on ne relâche pas la touche espace suffisamment vite, et que l'on appuie sur la touche B, alors cela sera interprété comme un AltGr+B, soit "|" en bépo.

Quand on tape un peu trop vite on ne relâche pas forcément une touche avant d'appuyer sur la prochaine. Cela poserait un problème sur une machine à écrire, mais on ne doit pas avoir cette contrainte sur notre clavier flambant neuf. Heureusement, la touche Alt est dupliquée entre la main gauche et la main droite. Il suffit de remplacer la touche Alt de la main droite par AltGr, et le tour est joué.

Ces modifications sont reflétées dans le petit patch suivant appliqué dans le dépôt de qmk_firmware.

Subject: [PATCH] ergodox_ez: bepo_tm_style: change problematic keys

- Change space keys to always output a space, because the misstypes by
  pressing the space key a little bit too long happen too often.

- Replace the right hand "Alt" key with "AltGr" so that we can output
  special characters using this key instead of pressing the space key too
  long.

- Replace the hybrid "Esc" key that will behave like "Fn" on a long press
  as a pure "Esc" key, so that we can change modes in Vim on key press,
  rather than on key release.

---
 keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
index b9c65944f..b56adc5ea 100755
--- a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_TAB,   BP_B,    BP_ECUT, BP_P,    BP_O,    BP_EGRV, KC_BSPC,
     KC_LSFT,  BP_A,    BP_U,    BP_I,    BP_E,    BP_COMM,
     KC_LCTRL, BP_AGRV, BP_Y,    BP_X,    BP_DOT,  BP_K,    KC_ENT,
-    ESC_FN,   BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT,
+    KC_ESC,   BP_ECRC, KC_LGUI, KC_LALT, KC_SPC,
                                                           TT(SWAP), KC_MNXT,
                                                                     KC_MPLY,
                                                   TT(FN), TT(NUMS), KC_MPRV,
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         KC_BSPC, BP_DCRC, BP_V,     BP_D,    BP_L,        BP_J,    BP_Z,
                  BP_C,    BP_T,     BP_S,    BP_R,        BP_N,    M_RSFT,
         KC_ENT,  BP_APOS, BP_Q,     BP_G,    BP_H,        BP_F,    W_RCTL,
-                          SPC_RALT, KC_LALT, TT(SYSLEDS), BP_CCED, PERC_FN,
+                          KC_SPC,   KC_RALT, TT(SYSLEDS), BP_CCED, PERC_FN,
     KC_LEFT, KC_RIGHT,
     KC_UP,
     KC_DOWN, TD(TAP_MACRO), TT(MOUSE)),
--
2.21.0

Modifier l'attribution des touches se révèle être un jeu d'enfant. C'est aussi quand on en vient à faire ce genre de modifications que l'on se dit que l'on a bien fait de prendre des touches sans aucun marquage, afin de ne pas rendre le marquage obsolète trop rapidement au fur et à mesure des évolutions que l'on apportera au clavier.

Conclusion

Je pense avoir fait le tour concernant la construction et la programmation de ce tout nouveau clavier qui m'accompagnera comme son prédécesseur mécanique pendant de nombreuses années.

À l'usage, je suis pour l'instant satisfait de celui-ci. L'utilisation de repose poignets s'avère vite indispensable étant donné que le clavier n'est pas incliné et que les poignets doivent donc se tordre vers le haut pour accéder aux touches. En installant un repose poignet devant chaque clavier, le poignet est au niveau des touches, et peut donc rester à plat, ce qui s'avère définitivement plus agréable.

Cet article trouvera certainement son originalité dans le fait d'avoir recyclé un clavier mécanique existant plutôt que d'avoir monté un ErgoDox de toutes pièces, ce qui est le chemin que l'on recontre le plus souvent sur les internets (quand il n'est pas acheté déjà tout monté).

On verra si celui-ci me motivera à écrire plus d'articles, en tout cas rédiger celui-ci avec ce même clavier fut un plaisir.

À la prochaine !

Une question ou remarque ? N'hésitez pas à me contacter en envoyant un mail à microjoe, suivi d'un arobase, puis encore microjoe et enfin un « point org ».