💾 Archived View for lord.re › posts › 39-clavier-handmade › index.gmi captured on 2024-08-18 at 17:41:30. 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.
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).
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.
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.
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 Datahand [1], les chording keyboards [2], les ptits Ducky [3], le pok3r [4], 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.
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.
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.
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 homerow.
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 Watterott [5] 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é mon bonheur chez Leroy Merlin [6] pour une onzaine d'euros.
Voilà plus qu'à attendre les livreurs.
Bon le moment à la fois redouté et attendu.
Les travaux manuels.
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*.
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 ?
{{}}
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*.
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.
Du coup, c'est handwiring de haute volée.
Le handwiring c'est la soudure "dans le vide", à la main, des différents composants.
On va se dérouiller du fer à souder.
{{}}
Il faut faire une matrice : *il faut relier les lignes de touches ainsi que les colonnes avec une diode entre chacune*.
{{}}
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).
{{}}
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).
{{}}
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.
Bon bon bon.
Trouvons un firmware…
Guy Teub en propose un pas mal du tout : TMK [7].
- 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.
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 !**
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 !
{{}}
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),
};
{{}}
Le truc juste au dessus est ce qu'il faut modifier pour bouger une touche, rien de bien méchant.
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.
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.
En gros en dehors de la phase de planification.
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.
Pour la partie usinage, j'ai été pas mal épaulé au LabSUD [8].
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.
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".
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.
{{}}
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.
{{}}
Si vous voulez des conseils, des infos, des coups de mimines n'hésitez pas ;-)
[1] Datahand (https://en.wikipedia.org/wiki/DataHand)
[2] chording keyboards (https://en.wikipedia.org/wiki/Chorded_keyboard)
[3] Ducky (http://www.duckychannel.com.tw/en/keyboard.html)
[4] pok3r (https://www.candykeys.com/pok3r/)
[5] Watterott (http://www.watterott.com/)
[7] TMK (https://github.com/tmk/tmk_keyboard)
[8] LabSUD (https://www.labsud.org/)
------------------------------------
------------------------------------
[01/08/2015] - #hardware #software #libre #diy
------------------------------------