Dactyl-manuform
05/2022 : J'ai fabriqué un clavier méchanique split basé sur le modèle Dactyl manuform cablé à la main avec 7×4 touches et 5 touches par pouce ainsi qu'une version applatie pour le transporter.
Voici les caractéristiques :
- Firmware écrit avec QMK
- Microcontrôleur STM32F401 (également connu sous le nom de BlackPill)
- 1 ou 2 encodeurs rotatifs
- Boîtier imprimé en 3D
- Switch changeable à chaud
- Connecteur magnétique USB-C
- Keycaps en format 1 U uniquement
- LED RGB de chaque côté
L'ensemble des ressources de cette page est disponible sur mon gitlab.
Clavier split
Un clavier split est constitué de 2 moitiés : 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. Cette disposition permet aux mains d'être plus écartées qu'un clavier classique afin d'avoir les épaules plus ouvertes et une position plus confortable. Cela implique par contre qu'il n'est plus possible de taper des touches avec la main opposée
D'un point de vue électronique, il existe plusieurs méthodes pour relier les 2 mains dont une qui consiste notamment à utiliser 1 microcontrôleur dans chaque main et de les synchroniser pour que l'appui sur une touche de la main droite puis être combiné avec la main gauche comme shift + A. Une alternative consiste à avoir un seul microcontrôleur et une nappe de fils pour relier les 2 moitiés : plus simple à construire mais moins joli.
Généralement, ce type de clavier s'accompagne avec des touches supplémentaires au niveau des pouces afin de déporter les touches se trouvant sur les extrémités des lignes au centre. Contrairement aux autres doigts, les pouces se déplacent plus facilement et dans de de nombreuses directions. Ainsi, il est fréquent de trouver les touches shift, ctrl ou d'autres à des positions différentes d'un clavier traditionel.
Boitiers
J'ai travaillé sur 2 boîtiers avec des formes légèrements différentes mais disposant du même nombre de touches et de la même electronique :
- l'original Dactyl : haut et ergonomique
- le Flactyl : peu épais et transportable
Dactyl
Ce boitier est ergonomique : il permet d'avoir les mains incurvées dans une position moins plate que les claviers traditionnels. L'important volume intérieur offre un espace de stockage des composants confortables.
Le modèle au format scad
du boîtier a été produit à l'aide d'un générateur web hébergé sur ce site et avec l'aide de cette documentation pour voir l'effet de chaque réglage.
À partir des fichiers modèles scad
générés précédemment, j'ai réalisé les modifications suivantes :
- déplacé tous les inserts de vis à l'intérieur du boîtier pour les cacher
- ajouté des inserts de vis au niveau de la partie fine du boîtier
- élargit le trou rectangulaire pour le support externe à l'arrière
J'ai utilisé Ultimaker Cura pour “slicer” le modèle. Je l'ai imprimé avec une hauteur de couche de 0.28 mm avec un support 'support tree' et un brim. Le temps d'impression était d'environ 18 heures sur une Creality Ender 3.
J'ai conçu la plaque du dessous avec Fusion 360. Le nid d'abeille est inspirée de mon clavier Agathe :
Le modèle 3D du boitier original est conçu pour recevoir une pièce pour tenir le microcontrôleur et la prise TRSS. Je voulais utiliser une connecteur RJ11 à la place du TRSS et un connecteur magnétique à la place : j'ai re-dessiné une pièce correspondant à mes besoins :
La voici imprimée en 3D avec les connecteurs montées, vu de devant et derrière :
Flactyl
Le Dactyl est un clavier portable mais ne rentre pas facilement dans un sac. J'ai donc créé une variante presque plate : même microcontrôleur, même disposition, même câblage et même firmware. Je l'ai nommé Flactyl : c'est un Dactyl plat. Un seule différence au niveau de l'électronique est qu'il comporte un plus grand nombre de LED en dessous.
Le design est basé sur le design Reredox.
Voici quelques photos :
Disposition des touches
QMK est le firmware que j'utilise sur mes claviers. Il est disponible pour plusieurs types de microcontrôleurs et offre de nombreuses fonctionnalités que nous n'avons pas sur un clavier traditionnel :
- Layers : activation d'une nouvelle disposition de touches ;
- Tap dance : une pression sur une touche envoie les 3 caractères d'un smiley :
:-)
, deux pressions :;-)
, trois pressions ::muscle:
… - Leader key : l'appui sur une touche spécifique puis une autre perment de faire des combos personnalisés comme envoyer
Merci d'avance et bonne journée
, phrase que j'utilise beaucoup dans mes mails ; - Gestion de LEDs RGB sous le clavier pour faire joli ou afficher une couleur lorsqu'un combo est inconnu ;
- Prise en charge des boutons rotatif pour ajuster le volume sonore, par exemple. En appuyant sur shift, la luminosité de l'écran est ajustée ;
- détection de l'OS afin d'ajuster la disposition des touches mac ou linux ;
- Et bien d'autres…
Pour faire un mapping complet, il faut écrire un tableau associant une switch et l'envoi d'un code USB spécifique à l'ordinateur. Il est possible d'aller plus loin en surchargeant des fonctions pour implémenter des comportements personnalisés : par exemple, 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 de la main sur le clavier.
Le clavier contient alors tous les raccourcis et n'est pas dépendant de l'ordinateur ni d'un logiciel particulier .
Colemak mod DH
J'ai changé la disposition des touches de base pour passer d'Azerty à 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.
L'image ci-dessous illustre les changements de disposition des touches : toutes les lettres ont changé de place mais leur position est plus ergonomique.
Je n'ai pas choisi la disposition Bépo car elle requiert des keycaps spécifiques introuvables ou hors de prix. De plus, les personnes autour de moi utilisaient Colemak et m'ont incité à tester cette disposition. Le travail d'apprentissage étant tellement important, il n'est pas envisageable de tester plusieurs dispositions.
J'opte également pour des reposes poignets 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 d'accepter, pendant plusieurs mois, de taper très doucement. J'ai mis 2 ans à m'adapter et à retrouver pratiquement une vitesse de frappe équivalente à celle sur un Azerty. Le code reste encore compliqué à taper, notamment à cause de la ligne des chiffres et symboles qui est complètement revue.
Clavier ansi
La première mise en œuvre de la disposition Colemak mod-DH a été réalisée sur mon clavier Agathe. J'ai d'abord écrit des gammes sur le site https://www.colemak.academy/ pour apprendre la position des lettres par cœur, puis petit à petit, j'ai commencé à taper des mots, puis des phrases. Pendant plusieurs mois, j'avais deux claviers : un Azerty normal et cet Agathe. Je consacrais entre 10 et 30 minutes par jour à m'entraîner. Puis un matin, je me suis rendu compte que j'avais oublié de changer de clavier et que j'avais commencé la journée avec l'Agathe : c'est alors que j'ai compris que l'utilisation du Colemak était sur la bonne voie !
J'ai ensuite testé progressivement les fonctionnalités de QMK, en commençant par les layers : suite à un appui maintenu sur une touche, différents caractères sont disponibles, comme lorsque alt-gr est utilisé. Sauf que désormais, c'est moi qui choisis la disposition de ces touches secondaires. J'ai créé deux layers en plus de la disposition de base afin d'avoir les caractères spéciaux et accentués, ainsi qu'un réglage des effets lumineux du rétroéclairage des LEDs sous le clavier :
Claviers split
Fort de mon expérience sur mon clavier Agathe, j'ai adapté la disposition COLEMAK mod DH adaptée aux langues anglophones afin d'ajouter un accès direct aux caractères accentués les plus utilisés, comme é ou à. Je les ai placés à la place de y et w. Ces derniers ont été décalés là où il restait de la place.
L'intéret des claviers splits est le nombre de touches à chaque pouce : 5 pour les Dactyl. En mappant les touches les plus fréquentes sur ces 2 doigts, cela permet de réduire les contorsions de la main pour faire un Ctrl + C, par exemple. Sur la main droite, j'ai notamment mis les touches Entrée, Space / shift et [, et sur la gauche Backspace, Space / shift et ]. Ces changements de disposition ont été durs à apprendre, néanmoins, j'apprécie beaucoup de pouvoir taper backspace et entrée sans déplacer les mains.
J'ai plusieurs layers permettant d'activer des caractères utilisés en code plus facile : lorsque j'appuie sur ? et sur F, cela me donne $
. Ainsi, pour écrire ${}
, le pouce de la main droite est sur le ? et je “roule” avec le majeur et index de la main gauche pour appuyer successivement sur F, P et B.
De la même manière, les touches de navigation sont placées sur N, E, I et U. Pour les activer, le pouce droit appuie sur la touche Nav.
Voici ma disposition actuelle :
Remarques : les couleurs correspondent aux couleurs des keycaps que j'utilise ; elles n'ont pas de signification particulière.
Mais pourquoi les codes de touches Azerty ?
Ce clavier est destiné à être utilisé en remplacement d'un clavier Azerty sur des ordinateurs français sans aucune modification du côté du système d'exploitation.
J'utilise un MacBook avec un clavier Azerty intégré. MacOS ne permet pas d'avoir une disposition de touches différentes par clavier connecté, il faut aller dans Préférences Système
> Clavier
> Méthodes de saisie
et ajouter Français - PC
. A chaque changement de clavier, il faut refaire cette manipulation… Dommage que macOS ne puisse pas gérer une disposition par clavier.
Ainsi, ce clavier se comporte comme n'importe quel clavier Azerty Mac afin de ne nécessiter aucun changement côté OS.
Mais pourquoi les codes de touches Azerty ⁉️
Ce clavier est destiné à être utilisé en remplacement d'un clavier Azerty sur des ordinateurs français sans aucune modification du côté du système d'exploitation.
J'utilise un MacBook avec un clavier Azerty intégré. MacOS ne permet pas d'avoir une disposition de touches différentes par clavier connecté, il faut aller dans Préférences Système
> Clavier
> Méthodes de saisie
et ajouter Français - PC
. A chaque changement de clavier, il faut refaire cette manipulation… Dommage que macOS ne puisse pas gérer une disposition par clavier.
Ainsi, ce clavier se comporte comme n'importe quel clavier Azerty Mac afin de ne nécessiter aucun changement côté OS.
Fonctionnalités
Le firmware que j'utilise est QMK : il offre de nombreuses fonctionnalités d'association d'un caractère à une touche phusique mais également de “layer”, de faire des actions différentes sur des appuis courts et longs, de gérer des encodeurs rotatifs…
Exemple d'utilisation de cette disposition :
- L'encodeur rotatif est utilisé pour ajuster le volume sonore et, combiné avec shift, il ajuste la luminosité de l'écran
- Capsword : une version surchargée de
capslock
: les lettres deviennent des majuscules, les - des _, la fonctionnalité se désactive automatiquement soit au bout d'un temps ou à l'appuis de la touche espace par exemple. Très pratique pour taperQMK_FIRMWARE
.
Le code de cette disposition est disponible ici.
Électronique
Le microcontrôleur utilisé est STM32F401, le brochage peut être trouvé ici, mais toutes les broches ne sont pas utilisables. La documentation QMK l'explique ici.
Le branchement des lignes et les colonnes est réalisé afin de maximiser l'espace disponible à l'intérieur du boîtier. Tous les câbles sont situés aussi loin que possible de la plaque arrière. Voici le brochage utilisé :
- Droit :
- Colonnes :
B12
,B13
,B14
,B15
,A15
,B3
,B4
- Rangées :
B9
,B8
,B7
,B6
,B5
- Gauche :
- Colonnes :
A4
,A5
,A6
,A7
,B0
,B1
,B10
- Rangées :
C13
,C14
,C15
,A0
,A1
- Le firmware a besoin de savoir de quel coté se trouve quelles touches : pour déterminer le côté est réalisé a l'aide d'une résistance de 1 kΩ entre
A13
etGND
ouVCC
. Si elle est connectée àVCC
, c'est le côté gauche, sinon c'est le côté droit. - La communication entre les deux moitiés se fait via une communication série en full duplex| avec les broches
A2
etA3
. - Les LEDs RGB sont connectéees à
A8
de chaque côté.
Le cablâge a été entièrement réalisé à la main, il faut compter 4 heures par main : collage des supports hotswap à la colle chaude puis soudure des fils entre les supports. Cette opération est chronophage, mais pas difficile. Voici un guide que j'ai suivi (lien direct vers le schéma de câblage).
Pour le flactyl, j'ai utilisé un PCB par touche Altena PCB : c'est un socket Kailh monté sur un PCB avec une LED par touche. Ce PCB permet de gagner du temps de montage car les colonnes, ou les lignes, sont déjà reliés ensemble. Cela permet également d'avoir une réalisation plus propre et surtout de pouvoir transférer l'intégralité du cablâge d'un boitier à un autre. J'ai effectué cette transplantation 2 fois au cours du design du boitier.
Le cluster de pouce et les dernières touches en bas des 2 colonnes centrales sont câblés en une seule ilgne. Sur la photo ci-dessous, les lignes rouges montrent les connexions avec les colonnes et les jaunes indiquent une coupure dans le PCB :
LEDs
Les LEDs sont utilisées pour afficher l'état du clavier. Elles sont situées de chaque côté : soit sur la touche du bas de la colonne intérieure de chaque main pour le dactyl ou sur le dessous pour le flactyl.
Voici les fonctionnalités :
- La couleur change à chaque pression de touche dans la gamme de couleurs arc-en-ciel.
- En appuyant sur une touche ou une combinaison invalide, elles clignotent en rouge.
- En changeant la disposition à l'aide de la touche
Fn
, les LEDs sont blanches pour le layer_MACOS
et bleues pour le layer_PC
. - Lorsque la fonctionnalitée Caps Word est utilisée, elles sont jaunes tant qu'elle est activée.
BOM
Voici la liste des composants :
- 68 * Interrupteurs Cherry MX, 34 touches par main
- 68 * Sockets PCB à changement à chaud
- 68 * Keycaps 1 U, je recommande XDA ou DSA pour faciliter le déplacement des keycaps
- 68 * Diodes 1N4148
- 10 * Inserts de vis M3
- 10 * Vis M3x16
- 5 * Vis M3x6 (Flactyl uniquement)
- 2 * Cartes de développement STM32F401CCU6 3.0
- 2 * Résistances 1 kΩ
- 2 * Connecteurs téléphoniques RJ11 femelles
- 2 * Breakout board USB-C
- 2 * LED RGB SK6812
- 1 * Câble téléphonique RJ11 mâle à RJ11 mâle en spirale (Dactyl uniquement)
- 1 * Câble TRRS mâle à mâle (Flactyl uniquement)
- 1 * Câble USB-C mâle à mâle
- 1 ou 2 * Encodeur EC11 avec bouton
Pièces imprimées en 3D
Dactyl
Les fichiers Stl et 3mf pour le boîtier Dactyl sont disponibles dans le dossier 3d-models/dactyl. Les modèles donnés sont pour la main droite, faire une symétrie horizontale pour imprimer la main gauche. Voici la liste d'impression :
- 1 * Moitié droite
- 2 * Plaque inférieure, j'ai conçu 2 versions de la plaque inférieure :
- Une simple avec des trous en nid d'abeille, imprimer la plaque inférieure droite
- Une améliorée avec un pad pour un repose-poignet, connecté au clavier pour assurer la distance entre les 2 parties. Pour chaque main, les 3 pièces suivantes doivent être imprimées :
- 1 * Connecteur
Flactyl
Les fichiers se trouvent dans le dossier 3d-models/flactyl :
- 1 * Moitié droite, appliquer une symétrie horizontale pour le côté gauche
Paramètres d'impression
Pour le *Dactyl*, j'ai mis paramétré une hauteur de couche de 0.32 mm avec 3 murs. La pièce est orientée avec les touches vers le haut afin d'avoir le meilleur état de surface sur la face visible mais des supports sont alors nécessaires. J'ai choisi les 'supports arborescents' dans Cura car ils sont faciles à enlever.
Voici les paramètres que j'ai utilisés :
Liens utiles
- realisations/keyboards/dactyl
- Dernière modification : 2024/10/06 20:51