💾 Archived View for lord.re › posts › 39-clavier-handmade › index.gmi captured on 2023-04-19 at 23:58:48. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-06-03)
-=-=-=-=-=-=-
-------------------------------------------------
[01/08/2015] - ~15mins - #hardware #software #libre #diy
-------------------------------------------------
~~Cet article est le premier d'une série concernant l'élaboration de mon nouveau joujou.~~
J'y aborderai la réflexion, l'élaboration et tout le toutim à propos de mon projet clavièreux.
A y est \o/ ! Mon clavier fonctionne.
Ceci est le premier texte non ircien écrit avec MON clavier.
Et quand je dis MON clavier, je parle de celui que j'ai construit avec mes petites mimines ! Celui que j'ai rêvé et pensé durant quelques mois.
C'est le bout du voyage (ou bien une des premières étapes si ça se trouve).
Et du coup voilà le journal de bord.
Mais carrément ! Étudier le fonctionnement de l'outil que l'on utilise le plus toute la journée.
Réfléchir aux défauts et améliorations que l'on peut apporter à un clavier.
Optimiser ! Technologiquement les claviers sont archaïques et mal pensés.
Le placement des touches est optimisé pour les machines à écrire, mêmes les claviers tactiles de nos chers smartphones et tablettes.
C'est une aberration totale.
Ils sont tout le temps négligés par les utilisateurs mais aussi les constructeurs.
Jusqu'à il y a peu, on ne trouvait plus que des claviers bas de gamme sans mécanismes mécaniques (au profit de dôme en gomme à la qualité pitoyable, aux sensations désagréables et à la robustesse plus qu'àléatoire).
Les claviers des années 80 était autrement plus solide et au confort de frappe bien meilleur que les actuels.
Mais les gamers ont été flairé par les marketeux et les constructeurs de périphériques ont su qu'il y avait de la maille à se faire.
Et là résurgence des claviers mécaniques dans les périphériques haut de gamme.
Cela dit ce matos est souvent assez jacky et jamais ergonomique.
Il existe des tas de claviers ergonomiques avec des approches différentes mais c'est souvent hors de prix et il y a toujours des ptits détails qui me chagrinent.
Depuis quelques années maintenant j'ai un Typematrix 2030 sur lequel *je tape en bépo*.
Oui c'est un peu hipster.
En attendant je tape bien mieux en ayant réappris à écrire.
Je ne regarde plus du tout le clavier et je bouge bien moins les bras (combiné à l'utilisation de logiciel privilégiant l'utilisation du clavier).
À long terme, je pense éviter ou du moins réduire les TMS que l'on retrouve assez courrament chez les personnes tapant de longues heures au clavier.
Je pensais avoir atteint le stade ultime du fétichiste du clavier mais c'était sans compter les Internets !
J'ai découvert que j'avais à peine atteint le stade de l'intéressé.
J'ai découvert qu'il existe une belle communauté d'adorateurs de claviers présentant des modèles exotiques tels que le
, les
, les ptits
, le
, les kinesis, le truly ergonomic… bref pas mal de trucs à étudier/éplucher.
Mais il y a encore un stade plus avancé !
Celui des Radins.
Enfin radins… celui où tu connais suffisamment l'offre existante et où tu rêves du clavier ultime à force d'en voir pleins.
Le stade du YAKAFOKON !
Et par chance il existe là aussi une belle communauté de DIY de clavier.
Pas mal de récit de construction, de boutique proposant des pièces/accessoires des forums où ça cause retour d'expériences et firmware opensource.
Bref on ne se sent pas seul dans la nature.
Donc j'ai craqué et *j'ai décidé de me lancer et de faire mon propre clavier*.
- adapté au bépo
- de taille réduite car j'aime les ptits claviers (c'est mignon, n'est-il pas ?)
- des touches au feeling au poil (des cherry mx brown !)
- un truc pas trop moche
- pas trop haut pour pas se casser le poignet
Bref le cahier des charges se construit assez vite.
Le layout c'est l'agencement des touches.
Vous connaissez probablement l'azerty et le qwerty.
Vous avez peut-être déjà entendu parlé du bépo.
Pour les malheureux qui découvrent seulement maintenant il s'agit d'un agencement pensé pour écrire du français en abandonnant l'héritage obsolète de l'azerty.
Saviez-vous que l'azerty est disposé comme tel afin de ralentir la frappe pour éviter que les branches métalliques des machines à écrire s'entremêlent.
C'est dire si c'est pertinent de le transposer sur les claviers d'ordinateurs (pire encore sur les appareils tactiles).
Bref, le bépo fait fi de ça et se base sur une étude statistique des lettres les plus fréquemment utilisées en français.
Mon clavier précédent utilisait cette disposition et me convenait presque.
Je suis donc repartit de l'agencement bépo du Typematrix 2030 tout en retouchant quelques détails.
Mais au-delà de la disposition bépo, j'ai aussi choisi de sacrifier de nombreuses touches.
- J'ai dégagé les touches F1, FX…
- j'ai viré les touches multimédia
- plus de touches systèmes (pause, hibernation, printscreen, calculette…).
Une fois ce ménage fait, *je me retrouve avec 65 touches*.
Un clavier traditionnel en possède environ 105.
J'ai largement pompé l'idée de Typematrix de mettre les touches backspace, delete, enter… au milieu des lettres.
Pile entre les deux mains.
Quand vous faites une espace (oui j'utilise cette tournure juste pour me la péter et montrer que je sais qu'en typographie c'est féminin) on a pas vraiment besoin d'une touche énorme si l'on ne bouge pas les mains.
Pour gagner un peu de place j'ai aussi sacrifié les touches home/end/pageUp/pageDwn (mais pas tant que ça) mais bon elles servent peu et la plupart des logiciels que j'utilise ont une autre touche produisant le même résultat.
Bon j'obtiens une matrice de 13 colonnes sur 5 rangées.
Toutes les touches sont carrés et bien rangées de manière orthogonale.
La quinconce de nos chers claviers est également une relique datant des machines à écrire.
Ça n'a plus lieu d'être et en plus ça simplifiera le boulot par la suite.
Ça peut paraître bête mais n'étant pas un hacker de renom, j'ai quasiment jamais soudé, j'ai presque pas de matos de bricolage et j'ai jamais conçu d'objets toussa…
Bref plein de trucs à apprendre \o/
Bon bon je sais qu'il va me falloir plein de touches, surement des composants électroniques, une belle plaque en alu (bha ouai c'est beau et frais) et bha heuu c'est tout ?
Ça a l'air simple.
Donc je me renseigne plus précisément je farfouine.
Bref des diodes pas chères ça se trouve par centaine sur Ebay à des prix défiant toute concurrence.
Cool.
Pour les touches, il existe wasd keyboard qui est une boutique étasunienne qui propose de tout.
Pour les switchs, je savais que je voulais du cherry mx brown parceque c'est très solide.
Ça fait un léger bruit très charmant, le touché est léger avec une légère tension au début.
Par contre ces bébettes ça revient cher.
Par chance sur un forum de fanas de clavier, il y a ptit gars bien sympa qui propose des tarifs miraculeux si l'on est prêt à attendre un peu et si l'on a un minimum confiance envers le gonze.
Hop c'est commandé.
Maintenant il me faut les caps.
C'est le dessus des touches.
Le plastic que vous actionnez du bout de vos gracieux petits doigts.
Et là surprise !
On oublie vite le petit détail qui tue.
Le bépo c'est gentil mais c'est exotique même dans la communauté DIY du clavier.
Bref trouver des caps kivonbien ça sera impossible ou bien TRÈS cher.
Wasd keyboard propose tout ce qu'il faut.
C'est pas trop cher si vous êtes prêt à sacrifier le marquage.
Par contre attention : chaque rangée de lettre à un profil différent.
Qui plus est il faut deux touches avec de petits ergots sur la <abbr title="l'emplacement de base où les doigts doivent se reposer">homerow</abbr>.
Du coup *il faut bien compter et ne rien oublier !*
Par contre on peut se faire plaisir niveau coloris et ça c'est bien marrant.
On peut même pousser plus loin en choisissant des textures de touches malheureusement c'est très vite prohibitif (ça sera pour une upgrade plus tard ^__^ ).
Il me manque par contre un peu d'étain pour les soudures.
Facile et pas cher sur Ebay.
Maintenant passons au contrôleur.
C'est la bébette qui permettra à votre clavier d'être compris par l'ordinateur et aussi d'interprêter les touches.
Bref la pièce maîtresse.
Il en existe tout pleins plus ou moins généraliste.
En bon noob, j'ai suivi les tutos et *me suis donc orienté vers le Teensy2*.
- C'est tout pitit.
- C'est pas cher.
- Ça fait ce que je veux
- C'est proche de l'Arduino donc potentiellement pas mal extensible.
Par contre j'ai fait la connerie d'en prendre qu'un.
J'ai commandé ces ptits trucs chez
une boite allemande qui livre vite.
Me manque plus que la plaque d'alu.
Dur de trouver de l'aluminium usinable en petite quantité.
Au final j'ai trouvé
pour une onzaine d'euros.
Voilà plus qu'à attendre les livreurs.
Bon le moment à la fois redouté et attendu.
Les travaux manuels.
Direction le fablab local.
Discutage, réflêchissage, reality-checkage.
Verdict ?
Bha le monde pratique diffère un peu du monde réel.
1mm dans le logiciel de dessin où on peut zoomer/dézoomer à volonté ne ressemble pas vraiment à un millimètre en vrai.
Le mini prototype de 4 touches pourra en attester.
Bon j'exagère à peine mais dans les logiciels de dessins on a vite tendance à perdre de vue l'échelle de ce que l'on bidouille.
J'ai pu me rendre compte qu'on ne peut pas forcément faire tout ce qu'on veut aussi facilement que ce qu'on pense.
Toutes les découpeuses lasers ne peuvent pas découper tous les matériaux.
Certaines matières se plient plus ou moins au cahier des charges.
Et surtout si l'on utilise une découpe à base de fraiseuse, on doit absolument prendre en compte la forme de l'outil.
Bha ouai c'est tout bête mais comment faire un carré parfait avec un outil rond qui tourne ?
{{< img src="usinage.thumb.jpg" link="usinage.jpg" alt="photographie de la plaque d'alu se faisant découper par un fôret" title="On est encore à l'étape où il faut imaginer" >}}
Là où le laser fait des découpes miraculeuses, là fraise ne peut pas travailler les angles de la même façon.
Et puis, une fois tous ces petits trous bien percés et agencés, je me suis rendu compte que les outils avaient des marges de fonctionnement différentes de ce que je m'attendais.
J'ai dû m'armer d'une jolie petite lime et ajuster une cinquantaine de carré.
C'est en forgeant qu'on devient forgeron.
Après deux bonnes aprems d'essais et compagnie, *j'ai enfin ma jolie plaque d'alu avec toutes ses ptites touches enfichées \o/*.
L'étape suivante est la réalisation du PCB.
Non je déconne.
Le PCB c'est bien trop pro pour un projet DIY suivant la méthode de la Rache.
Du coup, c'est handwiring de haute volée.
Le handwiring c'est la soudure "dans le vide", à la main, des différents composants.
Direction ce coup-ci le hackerspace local.
On va se dérouiller du fer à souder.
Il y a 65 diodes à souder à l'arrière des touches.
{{< img src="handwiring.thumb.jpg" link="handwiring.jpg" alt="Photo du handwiring terminé" title="Une fois fini ça doit ressembler à ça." >}}
Il faut faire une matrice : il faut relier les lignes de touches ainsi que les colonnes avec une diode entre chacune.
{{< img src="diodes.thumb.jpg" link="diodes.jpg" alt="Photographie des diodes en cours de pose" title="Voilà sur chaque touche une diode soudée.">}}
Ce faisant, le contrôleur pourra distinguer chacune des touches sans craindre le terrible NKRO (le bip immonde que produit votre ordinateur quand vous lui pressez trop de touches à la fois).
{{< img src="isoler-pour-bypass.thumb.jpg" link="isoler-pour-bypass.jpg" alt="photographie du dessous avec de l'isolant pour éviter que la matrice ne court-circuite" title="Un peu d'isolant (du scotch orange fait l'affaire) pour pas péter la matrice.">}}
Un peu d'isolant par-ci par-là pour pas que les colonnes et les lignes ne se touchent.
Il ne reste plus qu'à relier tout ce petit monde au Teensy (le contrôleur) en essayant de pas déborder et de le cramer (ouai c'est balot).
{{< img src="teensy.thumb.jpg" link="teensy.jpg" alt="Photo du fameu Teensy relié à sa matrice" title="Et là le Teensy relie le tout" >}}
Si vous êtes consciencieux, vous vérifierez qu'il n'y a pas de court-circuit et que bien entendu tout est bien soudé avec un multimètre (la Rache n'approuve pas ces précautions).
Bon si toutes les étapes précédentes se sont bien déroulés, il ne vous faut plus qu'un outil et non des moindres : l'Ordinateur.
Profitez des derniers instants à utiliser votre clavier actuel car d'un instant à l'autre votre nouveau clavier risque de tomber en marche !
Bon bon bon.
Trouvons un firmware…
Guy Teub en propose un pas mal du tout :
.
- Opensource
- plein de features intéressantes
- plein d'exemples de personnalisation
- une bonne doc
- parfaitement compatible avec le teensy
Un truc pour compiler … … hmmm pas envie de dégueulasser ma bonne Gentoo.
Go go chrooto-debian !
L'IDE Arduino avec le plugin Teensy.
Et GCC avec support AVR.
Au final l'IDE Arduino ne sert pas mais bon pas bien grave.
Il contient le petit soft tout mignonet pour uploader son binaire dans le controlleur.
Après suivage de tuto, semi-arrachage de cheveux et lecture de doc (sisi jvous jure !), à deux doigts d'abandonner pour la soirée, *ça y est !*
Le firmware a réussi à se faire compiler sans cracher plein d'erreurs étranges !
Bon bien entendu c'est loin d'être fonctionnel mais ça y est le Teensy parle HID (le protocole des périphs utilisateurs), et peut même afficher des caractères étranges.
Une bonne dose de peaufinage et quinze minutes après le Saint Graal : *le clavier écrit en bépo*.
Hop on pousse l'ancien clavier hors de portée, on tente d'écrire une phrase, deux, trois et paf un article interminable sur le site.
Le tout entremêlé de procrastination sur IRC.
Bref il marche déjà suffisamment bien.
Et je sais pas si c'est le fait de plancher dessus depuis quelque temps mais j'arrive déjà à écrire pas trop mal !
{{< highlight C "linenos=table" >}}
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/ 0: BÉPO /
KEYMAP(GRV, 1, 2, 3, 4, 5, FN2, 6, 7, 8, 9, 0,MINS, \
EQL, Q, W, E, R, T,RSFT, Y, U, I, O, P,LBRC, \
TAB, A, S, D, F, G, DEL, H, J, K, L,SCLN,QUOT, \
LSFT, Z, X, C, V, B,BSPC, N, M,COMM, DOT,SLSH,RBRC, \
LCTL,RGUI, BSLS, LGUI, LALT, SPC,RALT, ENT,LEFT, UP,DOWN,RGHT,FN1),
/ 1: Fn0 /
KEYMAP(TRNS, F1, F2, F3, F4, F5, ESC, F6, F7, F8, F9, F10, F11, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,MPRV,MPLY,MNXT,TRNS,TRNS,TRNS,TRNS,TRNS, \
TRNS,TRNS,TRNS,TRNS,TRNS,VOLD,MUTE,VOLU,HOME,PGUP,PGDN, END,TRNS),
/ 2: Fn0 test /
KEYMAP( NO, A, B, C, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, \
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO),
};
const uint16_t PROGMEM fn_actions[] = {
[0] = ACTION_LAYER_TAP_KEY(1, KC_ESC), // Vers Fn1
[1] = ACTION_LAYER_TAP_KEY(1, KC_ESC), // Vers Fn1
[2] = ACTION_MODS_KEY(MOD_LSFT, KC_INS), // Coller
[3] = ACTION_MODS_KEY(MOD_LSFT | MOD_LCTL | MOD_LALT | MOD_LGUI, KC_NO),
};
{{< / highlight >}}
Le truc juste au dessus est ce qu'il faut modifier pour bouger une touche, rien de bien méchant.
Bon la touche Fn marche pas, la touche coller non plus mais c'est pas vraiment innatendu en fait.
En moins de quatre heures le firmware est en place et l'ancien clavier ne sert plus qu'à décorer.
Je peux utiliser le nouveau pour trifouiller le firmware.
Après farfouinage dans les différents fichiers source en C, je trouve l'option à décommenter pour les touches Fn.
Voilà le dernier truc qui me manquait.
Ce qui est cool avec un firmware trifouillable c'est que l'on bouge les touches à sa guise.
En une semaine j'ai déjà déplacé une dizaine de touches.
C'est d'une simplicité enfantine une fois que c'est assimilé, ça se fait en deux minutes montre en main.
Techniquement parlant c'est plus simple que prévu.
En gros en dehors de la phase de planification.
C'était torché en 4 aprems et une bonne soirée.
Maîtriser un logiciel de dessin est pas indispensable.
J'ai commencé en m'entêtant sur FreeCAD (parceque vu qu'il y a Free c'est surement bien), mais j'ai déchanté à cause des bugs, des problèmes de performances.
Je me suis retrouvé au fablab à bosser sur SketchUp qui est moins Free mais qui fonctionne très bien est intuitif et qui exporte dans le bon format toussa toussa.
Pour la partie usinage, j'ai été pas mal épaulé au
.
N'ayant jamais fait ce genre de truc je m'en suis globalement bien tiré avec un résultat pile comme je l'envisageais.
Il a juste fallu jouer un peu de la lime mais une bonne demi-heure à limer ça ne fait pas de mal.
La partie soudure a été un peu longue mais à deux c'est assez fun et à trois autour d'un apéro dans le jardin c'est encore plus drôle (hein unréal).
C'est un peu galère si on a pas de matos bien adapté, particulièrement pour souder sur le controlleur et qu'on est en plus un peu tremblottant et peu soigneux.
La partie firmware est effrayante.
Je suis pas du tout codeur, surtout en C, mais au final, je suis parti d'un truc opensource assez populaire et vraiment excellent techniquement.
Il a quelques features bien sympatoche comme par-exemple la magic key qui permet de passer en mode debug sur le clavier et obtenir des infos sympatoches.
Il permet également de faire des macros (typiquement pour les touches copier/coller).
Il possède aussi un système de tapkey : lorsque vous maintenez enfoncé une touche, le résultat obtenu sera différent que si vous appuyez brièvement sur celle-ci.
Dans mon cas, la touche Fn2 (parceque ouai vous pouvez avoir plusieurs touches Fn) produit la touche échap.
C'est un gain d'une touche, ce qui est appréciable, car je vise un clavier "minimaliste".
La killer feature du firmware est le système de layer.
Vous pouvez définir plusieurs keymaps différents qui se superposent et passer de l'un à l'autre via les touches Fn.
Bref c'est génial et super flexible.
C'est fun.
{{< img src="vs-typematrix.thumb.jpg" link="vs-typematrix.jpg" alt="photo avec le clavier et aussi un typematrix 2030" title="Il est plus petit mais un peu plus haut que le Typematrix" >}}
C'est un peu cher comme clavier mais comme passe-temps utile c'est trèèèèès rentable.
Plein de gens prêts à filer des coups de mains.
Et puis c'est le seul moyen d'avoir le clavier ultime.
Le seul moyen d'avoir le clavier qui ne plaît qu'à vous et qui fait ce que vous voulez comme voulez.
Bref c'est le pied !
J'ai envie d'en faire un autre !
Pour l'instant j'ai pas trop de point à améliorer en dehors de l'esthétique et encore.
{{< img src="glamour-shot.thumb.jpg" link="glamour-shot.jpg" alt="Photo plus récente avec de légères modifications des touches" title="Après quelques années d'utilisation il est toujours aussi flamboyant" >}}
Si vous voulez des conseils, des infos, des coups de mimines n'hésitez pas ;-)
------------------------------------
------------------------------------
[01/08/2015] [hardware software libre diy]
------------------------------------