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.

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 :X

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.

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

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
openscad
Agrandir
openscad

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.

Vue de dessus
Agrandir
Vue de dessus
Vue arrière
Agrandir
Vue arrière

J'ai conçu la plaque du dessous avec Fusion 360. Le nid d'abeille est inspirée de mon clavier Agathe :

Vue de dessous
Agrandir
Vue de dessous

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 :

support externe
Agrandir
support externe

La voici imprimée en 3D avec les connecteurs montées, vu de devant et derrière :

support externe avec prises
Agrandir
support externe avec prises

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 :

dessus
Agrandir
dessus
dessous
Agrandir
dessous

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 ;
  • Appui long / appui court sur une touche pour faire Shift et espace ;
  • 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 8-).

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.

Disposition Colemak-mod DH
Agrandir
Disposition Colemak-mod DH

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 !

Colemak mod DH sur mon clavier Agathe
Agrandir
Colemak mod DH sur mon clavier Agathe

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 :

Layer de caractères spéciaux et accentués
Agrandir
Layer de caractères spéciaux et accentués
Layer de réglages des effets lumineux du rétro éclairage
Agrandir
Layer de réglages des effets lumineux du rétro éclairage

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 :

colemak mod dh avec accent français
Agrandir
colemak mod dh avec accent français

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.

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.

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 :

  • Tap dance : une pression : :-), deux pressions : ;-), trois pressions : :muscle:
  • 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 taper QMK_FIRMWARE.

Le code de cette disposition est disponible ici.

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 et GND ou VCC. 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 et A3.
  • Les LEDs RGB sont connectéees à A8 de chaque côté.
Diagramme de câblage
Agrandir
Diagramme de câblage

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).

Soudure et câblage à la main
Agrandir
Soudure et câblage à la main

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.

Vue de dessous
Agrandir
Vue de dessous

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 :

Cablâge des PCBs
Agrandir
Cablâge des PCBs

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.

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

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 :

Les fichiers se trouvent dans le dossier 3d-models/flactyl :

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.

paramètres d'impression
Agrandir
paramètres d'impression

Voici les paramètres que j'ai utilisés :

paramètres d'impression
Agrandir
paramètres d'impression
  • realisations/keyboards/dactyl
  • Dernière modification : 2024/10/06 20:51