Marius Penz

Anleitung zum Eigenbau der Tastatur "Dactyl Manuform 5x7"

DM_final

1. Warum das Ganze?

Beginnen wir mit der Frage aller Fragen: Warum? Warum dieses Projekt? Die kurze Antwort lautet, weil wir viel auf Tastaturen schreiben (müssen) und wir dies so effizient und so gesund wie möglich tun wollen. "Moment mal! Wurden unsere ganz normalen, modernen Tastaturen nicht genau zu diesem Zweck entwickelt?" könnte man nun fragen. Tja, entwickelt schon, doch wie bei vielen Artefakten, die "historisch gewachsen" sind - Stichwort "Pfadabhängigkeit" - sind viele Eigenschaften des heutigen Produkts nur dadurch zu erklären, dass "es eben schon immer so war." An sich ist das auch nichts Schlechtes, doch tragisch wird es, sobald es einen wissenschaftlichen Konsens darüber gibt, dass eine Alternative eindeutig besser wäre, wenn aber diese Verbesserung aus Gründen der Gewohnheit nicht umgesetzt wird. Und welche Dinge sind jetzt bei "normalen" Tastaturen aus wissenschaftlicher Sicht eindeutig suboptimal? Die Antwort auf diese Frage ist gleichzeitig die lange Antwort auf unsere Sinnfrage und wird in Form der folgenden Tabelle gegeben:

Problem einer "normalen" Tastatur Lösung
Versetzt angeordnete Zeilen → unnatürliche, anstrengende Fingerbewegung von der Ruheposition in die oberen und unteren Zeilen Gerade übereinander angeordnete Zeilen → ortholineares Layout
Identisch angeordnete Spalten → wegen verschiedener Fingerlängen verkrampfte Ruhe- und Tipp-Position Entsprechend der Fingerlänge zueinander versetzte Spalten → columnar staggered
Ein einziger Tastenblock → Arme unnatürlich nach innen gekehrt, Handgelenke ungesund abgewinkelt Eine Tastaturhälfte pro Hand → gerade Handgelenke, offene Körperhaltung dank split keyboard
Tasten liegen auf gleicher Höhe nebeneinander auf der Tastatur → entspricht nicht der natürlichen Greiffunktion unserer Finger, weite Wege zwischen Tasten Kuhlenförmig ausgehöhlte Tastatur-Form → Verkürzte Wege zwischen Tasten, verbesserte Winkel beim Tastendruck
Tastatur liegt glatt auf Ablagefläche → Elle und Speiche sowie Handgelenk sind unnatürlich angeordnet Bereich der Daumen und Zeigefinger ist angehoben → tented keyboard für natürliche "Händeschüttel-Haltung"
Fest verbaute Schalter (switches) → unflexibel Freie Wahl der Schalter (switches) → Anpressdruck und -weg für beste Ergonomie wählbar
Beide Daumen teilen sich die Leertaste → Zwei der stärksten Finger werden viel zu wenig genutzt Eigener Daumen-Tastenblock, passend abgewinkelt, damit natürlich statt seitlich eindrückbar
Zwang zum QWERTY-Layout wegen fehlender Programmierbarkeit und bedruckter, individuell geformter Tastenkappen → ineffizientes, unergonomisches Layout Volle Flexibilität → QWERTY oder jedes andere, individuell optimierte Layout nutzbar

Natürlich wiegen nicht alle dieser Probleme gleich schwer, doch unser großes Glück ist es, dass wir uns weitere Abwägungen und Einzelentscheidungen sparen können, da es eine Vielzahl von Tastaturen gibt, die gleich alle Probleme auf einmal lösen. Die Frage, die sich uns an dieser Stelle vermutlich aufdrängt, lautet nun: Und warum nicht einfach eine solche Tastatur kaufen? Tatsächlich gibt es sogenannte ergonomische Tastaturen in einer schier unermesslichen Vielzahl von Ausführungen, selbst das Durchscrollen einer Liste geteilter Tastaturen, immerhin der seltensten Untergattung, kann schon ermüden. Wird man mit einem solchen Modell wunschlos glücklich, so ist das natürlich die einfachste und schnellste Lösung. Allerdings wollen wir uns auch die zweieinhalb Gründe ansehen, die dagegen sprechen. Erstens erfüllt (Stand 2024) kein einziges der kommerziellen Modelle alle obigen Anforderungen zugleich. Zweitens hat jeder Mensch individuelle Hände und Finger, sodass es einigermaßen unwahrscheinlich ist, dass ein auf statistischen Mittelwerten basierendes Massenprodukt genau die eigenen Maße trifft. Drittens lassen sich - sofern man das Projekt nicht als Arbeit, sondern als Hobby betrachtet - mehrere Hundert Euro sparen. Und nicht zuletzt: Wo bleibt beim simplen Kauf bloß der Spaß? :D Verstehen wir nun den Reiz einer selbst gebauten Tastatur, um in Zukunft so effizient und so gesund wie nur möglich schreiben zu können, so beginnen wir jetzt mit den konkreten Vorbereitungen.

2. Vorbereitung

Wenig überraschend besteht der erste Schritt unserer Vorbereitungen in der Auswahl unseres zu bauenden Modells. Etwas überraschender dürfte jedoch die schier unendliche Anzahl der für den Eigenbau zur Verfügung stehenden Varianten sein. Um die Dokumentation Dutzender Recherchestunden im Universum der 3D-druckbaren Tastaturen rabiat abzukürzen, sei an dieser Stelle schlicht und einfach verraten, dass die "Dactyl Manuform" das für unsere Zwecke ideale Modell ist. Auf Github hat diese Tastatur (Stand 2024) bereits eine neunjährige und turbulente Entwicklungsgeschichte hinter sich. Die ursprüngliche Dactyl wurde von Matt Adereth entwickelt. Zur Einstimmung in das Thema ist einer seiner Talks hier zu finden. Tom Shorts Weiterentwicklung, vor allem die Optimierung des Daumenclusters, mündete in der Dactyl Manuform, einem Fork, der auf Github immerhin 1200 Stars sammeln konnte. Nun handelt es sich bei der Dactyl Manuform um eine Art Open-Source-Baukasten für selbstständig 3D-druckbare Tastaturen. Das bedeutet: Dank der soganannten Parametrisierung lassen sich weite Teile des Modells individuell anpassen - sogar solch fundamentale Dinge wie die Spalten- und Reihenanzahl. Für maximale Flexibilität und zudem höchste Kompatibilität mit sämtlichen ErgoDox-Modellen empfiehlt sich die Verwendung des 5x7er-Modells. Von Leo Lou stammt die aktuellste und zugleich durchdachteste Weiterentwicklung genau dieser Version. Sie ist hier zu finden und wird im Folgenden verwendet.

Für den Bau dieses Modells sind Ressourcen aus vier Kategorien nötig: Zeit, Software, Werkzeuge und Verbrauchsmaterial.
So viel vorweg: Die Zeit ist der einzige Faktor, der das Gelingen des Projekts ernsthaft gefährden kann. Für die folgenden Schätzungen gehen wir von keinerlei Erfahrung aus - alle Tätigkeiten sind also komplettes Neuland. Geübte Bastler können die Zeitangaben daher sicher deutlich unterbieten. Wer lediglich eine voll funktionsfähige Tastatur bauen möchte und dafür dieser Anleitung 1:1 folgt, sollte mit etwa 20 bis 30 Stunden reiner Arbeitszeit rechnen. Wer gerne tiefer in die Materie eintauchen und die Konzepte hinter dem Bau verstehen möchte, kann diese Schätzung locker verdoppeln.
Sämtliche Software, die wir für dieses Projekt brauchen, lässt sich einfach und völlig kostenlos auf Windows-Rechnern installieren und ist zumeist sogar Open Source.
Einige wenige Werkzeuge sind für den Bau zwingend nötig:

Wärmstens zu empfehlen sind zudem: Den 3D-Drucker benötigt man für zwei in wenigen Minuten druckbare und für zwei über Nacht zu druckende Teile. Hier empfiehlt es sich gegebenenfalls, bei Familie, Freunden oder offenen Werkstätten Benutzungsrechte zu erbitten. Doch Vorsicht, dass die Geräuschkulisse während der beiden langen Druck-Sessions nicht zum Problem wird. Apropos Vorsicht: Gelötet werden sollte wegen der giftigen Dämpfe nur unter einem Abzug, in gut durchlüfteten Räumen oder im Freien, also auf Terrasse, Balkon o. ä.
Die Kosten für das Verbrauchsmaterial sollten sich (Stand 2024) auf um die 100 € belaufen. Sie verteilen sich wie folgt:

Teile Geschätzte Kosten
< 500 g PLA-Filament < 10 €
80x switches 40 €
Lötzinn < 5 €
80x 1N 4148 Schalt-Dioden 4 €
2x ProMicro-Controller < 10 €
Isolierter Draht oder isoliertes Kabel (wenige cm) aus fast jedem Altkabel recycelbar
1x Flachbandkabel (< 60 cm) 4 €
2x 3,5 mm Klinkenbuchsen 3 €
1x 4poliges 3,5 mm Klinkenkabel (so lang wie eigene Schulterbreite) 3 €
1x USB-C-Kabel (für Anschluss an PC) 4 €
80x Tastenkappen 25 €

Prinzipiell lassen sich natürlich auch die Tastenkappen (keycaps) selbst 3D-drucken. Andererseits sind die Kosten für höchst präzise gefertigte Tastenkappen aus hochwertigstem Material verkraftbar, sodass es hier kein "richtig" oder "falsch" gibt. Da unsere Tastatur 37 Tasten pro Seite hat, benötigen wir von allen Bauteilen 74 Stück, sodass wir dank unserer Bestellmengen von 80 Stück etwas Raum für Fehler haben. So auch bei den Schaltern (switches), deren Auswahl wie die der Tastenkappen ein ganz eigenes Universum ist. Da beide Themengebiete umfassend dokumentiert sind und wir für unsere Tastatur diesbezüglich völlig freie Wahl haben, wird hier nicht weiter darauf eingegangen. Persönlich kann ich die Langlebigkeit von Cherry-Schaltern bestätigen und festhalten, dass die Art des Schalters, also die Entscheidung zwischen taktil, linear und clicky, reine Geschmackssache ist. Allerdings sollten wir zusätzlich den Geräuschpegel, den Auslösedruck und den Auslöseweg beachten. Ergonomisch ideal ist es, wenn wir uns mit den Schaltern wohl fühlen. Der Auslösedruck ist meist dann ideal, wenn er so leicht wie möglich ist, jedoch schwer genug, damit wir uns sicher sein können, keine Fehleingaben zu machen und die Tasten nicht ständig versehentlich bis zum Boden durchzudrücken (sogenannter "bottom-out"). Eine Einführung in das Thema der Schalter und Tastenkappen findet sich hier.

3. Digitale Modellierung

Bevor wir unseren digitalen Workflow einrichten, besorgen wir uns die nötigen Rohdaten. Dafür besuchen wir Github. Dort klicken wir auf den grünen "Code"-Button und wählen "Download ZIP". Anschließend entpacken wir das Archiv an einen Ort unserer Wahl. Diese Daten werden wir nun mit folgendem "unheiligen Quartett" in ein druckbares 3D-Modell verwandeln:
Workflow
Prinzipiell werden wir also Clojure-Code nutzen, um mittels Leiningen OpenSCAD-Projektdateien zu erzeugen, welche wir dann als STL-Dateien exportieren und in G-Code umwandeln. Beginnen wir direkt mit dem Download aller nötigen Programme.
Zuerst laden wir uns die aktuelle OpenJDK herunter und installieren sie.
Anschließend besuchen wir wieder Github. Dort klicken wir in "Releases" auf die neuste Version und laden uns die Datei "clojure.msi" herunter, die wir installieren.
Nun besuchen wir die Seite von Leiningen, wo wir auf den Link "lein.bat" einen Rechtsklick machen, um "Ziel speichern unter" zu wählen. Nach dem Download fügen wir diese "lein.bat" unserem Systempfad hinzu, indem wir die Windows-Taste drücken, "Umgebungsvariablen" eingeben, auf "Umgebungsvariablen bearbeiten" klicken, dann auf den Tab "Erweitert" gehen und dort ganz unten auf "Umgebungsvariablen" klicken. Im neuen Fenster, im Bereich "Systemvariablen" klicken wir auf den Eintrag "Path" und dann auf "Bearbeiten". Nun klicken wir auf „Neu“, geben den Pfad ein, in welchem wir unsere "lein.bat" gespeichert haben, und bestätigen mehrmals mit "OK".
Jetzt machen wir einen Rechtsklick auf unser Windows-Symbol ganz unten links in der Taskleiste und wählen den Eintrag "Terminal (Administrator)". In das geöffnete Terminal geben wir "lein self-install" ein und drücken Enter, um das Leiningen-Installationsskript auszuführen.
Nachdem der Vorgang abgeschlossen ist, besuchen wir die Homepage von OpenSCAD, laden uns das Programm herunter und installieren es.

Damit sind alle Programme unseres Modellierungsworkflows installiert. Nun öffnen wir den Explorer, navigieren in den Ordner, in welchen wir unsere Rohdaten von Github entpackt hatten, klicken oben im Explorer in dessen Navigationsleiste, geben "cmd" (ohne Anführungszeichen) ein und bestätigen mit Enter. In das Kommandozeilenfenster geben wir "lein generate" (ohne Anführungszeichen) ein und drücken Enter. Wir warten, bis der Vorgang abgeschlossen ist und öffnen dann das Programm OpenSCAD. Dort öffnen wir die Datei "right.scad" oder "left.scad". Beide wurden dank des Kommandozeilenbefehls in unserem Github-Rohdatenordner, genauer gesagt in dessen Unterordner "things", generiert. Nun sehen wir unser Modell in OpenSCAD und können dort auch alle Änderungen, die wir nun daran vornehmen werden, beinahe live beobachten:
Regenbogenkabel
Um das Modell zu ändern, verwenden wir als potenten und völlig kostenlosen Code-Editor VSCode. Wir laden das Programm herunter und installieren es. Dann navigieren wir in den entpackten Ordner mit den Github-Inhalten, gehen in die Tiefen des Ordners "src" und finden dort das "dactyl.clj"-File. Dieses öffnen wir einfach in VSCode und können dort alles verstellen, was wir wollen. Dies ist der Teil des Projekts, der Parametrisierung genannt wird. Beispielsweise sollten wir sicherstellen, dass rows auf 5 und columns auf 7 gesetzt sind, dass die Wanddicke 5 mm beträgt, dass 1u-Tasten verwendet werden, dass eine extra row außen und innen hinzugefügt wird, dass das cf-Daumen-cluster verwendet wird und dass der Spaltenversatz für unsere Finger optimiert ist. Zum Abschätzen dieser Werte können wir unsere Hand über das in OpenSCAD auf dem Bildschirm sichtbare Modell legen und prüfen, was wir ändern müssten, damit die Finger bequem auf der Grundreihe der Tasten liegen. Dann speichern wir die Änderungen in VSCode, wechseln zur noch immer offenen Kommandozeile und führen erneut das "lein generate"-Kommando aus. Nach kurzer Zeit sollte sich die Ansicht in OpenSCAD automatisch ändern, weil zwar neue .scad-Dateien erzeugt wurden, OpenSCAD aber die gleichnamigen Dateien überwacht. Diesen Workflow können wir nun so lange wiederholen, bis wir mit unserem Modell zufrieden sind. Sobald wir zufrieden sind, müssen wir unser Modell in OpenSCAD rendern und als STL-Datei exportieren - natürlich sowohl die rechte als auch separat die linke Seite. Diese beiden STL-Dateien sind unser Zwischenergebnis.

Eine zu unserem Modell passende Halterung für den Microcontroller und die Klinkenbuchsen hat Mark Hooper entworfen. Daher besuchen wir diese Seite und klicken auf "Download raw file". Das heruntergeladene STL-File müssen wir vor dem Druck jedoch noch etwas anpassen. Dafür verwenden wir Autodesk Fusion. Auf der verlinkten Seite scrollen wir etwas nach unten, laden uns die Version für Privatanwender herunter und installieren diese. Dann öffnen wir sie und importieren das heruntergeladene STL-File. Als erstes gehen wir im Bereich "Volumenkörper" auf "Einfügen" und auf "Netz einfügen". Dann klicken wir im Bereich "Netz" auf "Ändern" und wählen "Netz konvertieren". Nun bereinigen wir das Modell, indem wir so lange je das größte Dreieck pro Fläche wählen und per Entf-Taste löschen, bis nur noch saubere Flächen übrig sind. Um den späteren Druck zu erleichtern, können wir das Modell jetzt so hinlegen, dass die flache Seite unten ist. Je nachdem, wie wir zuvor die Wanddicke des Tastatur-Modells geändert haben, müssen wir auch die Breite des Flansches dieser Halterung anpassen. Im Ausgangszustand sind die Wände der Tastatur und des Flansches auf 2 mm Dicke ausgelegt. Da wir die Wanddicke auf 5 mm erhöht haben, müssen wir also auch den Flansch um 3 mm verbreitern:
Modell
Wir tun dies, indem wir die entsprechende Fläche per Klick auswählen, im Bereich "Volumenkörper" auf "Drücken/Ziehen" klicken und den dann erscheinenden Pfeil per Maus verziehen. Des Weiteren sollten wir nach demselben Prinzip das Loch für den USB-C-Stecker um 2 mm nach oben und 1 mm nach unten vergrößern. Zudem empfiehlt es sich, die Länge der Microcontroller-Halterung um einen und die Länge der Klinkenbuchsenhalterung um 2 mm zu verlängern. Abschließend spiegeln wir das Modell vertikal, indem wir im Bereich "Volumenkörper" auf "Erstellen" und dann auf "Spiegeln" klicken. Nun gehen wir auf "Datei", "Exportieren" und wählen "STL".
All diese Arbeiten an der Halterung dürften insgesamt etwa 20 Minuten dauern. Wer sich diese Zeit sparen möchte, findet hier eine bereits auf 5 mm Wanddicke optimierte Datei. Im nächsten Schritt werden wir unsere drei STL-Dateien in Code umwandeln, der direkt von einem 3D-Drucker verstanden wird.

4. 3D-Druck

Um die Modelle der beiden Tastaturhälften und der Halterung für den Microcontroller druckbar zu machen, konvertieren wir nun die STL-Dateien in sogenannten G-Code. Vereinfacht ausgedrückt ist G-Code eine Sprache, die dem 3D-Drucker haarklein erklärt, in welcher Reihenfolge er seinen Druckkopf an welche Positionen bringen und was er dort jeweils tun soll. Zur Erstellung von G-Code aus 3D-Modellen, dem sogenannten "sclicing", gibt es eine Vielzahl von Open-Source-Programmen. Besonders, aber nicht nur, wenn man mit Prusa-Druckern arbeitet, empfiehlt sich die Verwendung von PrusaSlicer. Nach dem Download und der Installation des Programms öffnen wir es und klicken auf "Datei" und "STL-Datei öffnen". Für einen erfolgreichen Druck ist es sehr wichtig, nun die passenden Einstellungen zu wählen. Für unser Projekt bietet die Genaugkeitsstufe "0.2 mm Speed" eine völlig ausreichende Qualität und ermöglicht eine vergleichsweise kurze Druckzeit. Das Infill sollte auf 30% gestellt und der Haken bei "Rand" sollte aktiviert werden. Beim Druck der beiden Tastaturhälften muss bei "Stützen" unbedingt "Überall" ausgewählt werden. Natürlich müssen auch das Filament und das 3D-Drucker-Modell korrekt gewählt werden:
Prusa_case

Prusa_inlay
Abschließend können wir uns eine Vorschau des benötigten Materials und der Druckzeit ansehen und den G-Code per Klick auf den gleichnamigen Button exportieren. Danach ziehen wir die frisch erstellte Datei auf einen USB-Stick, stecken diesen in den 3D-Drucker und beginnen mit dem Druck. Während die erste Schicht gedruckt wird, prüfen wir regelmäßig den Fortschritt:
erste_schicht
Denn nur so können wir bei eventuellen, durch falsche Einstellungen ausgelösten Druckfehlern schnell eingreifen. Zur Orientierung: Mit einem Original Prusa MK3 dauert der Druck einer Tastaturhälfte starke 21 Stunden, mit einem Prusa MK4S nur noch 9 Stunden. Verbraucht werden dabei etwa 190 g PLA-Filament:
druck_fertig

Der Druck der Halterung für den Microcontroller benötigt nur ca. eine Viertelstunde und unter 4 g PLA-Filament.
druck_inlay_fertig
Sobald wir unser Modell wahrhaftig in den Händen halten, können wir damit beginnen, das mitgedruckte Stützmaterial zu entfernen. Dafür brauchen wir eine Feinmechanikerzange und etwas Geduld. Wir drehen die Tastaturhälften um, sodass der mit Stützmaterial gefüllte innere Hohlraum nach oben zeigt und bohren mit unserer Zange in das weiche Stützmaterial in der Mitte. Dann packen wir wahllos einige Schichten und wenden die Jahrmillionen alte Jagdstrategie des Krokodils an: Wir packen kräftig zu und drehen die Zange, um das Material so effizient wie möglich abzureißen:
entkern_star
Hierbei können wir uns austoben, solange wir darauf achten, nicht das deutlich härtere (weil massive) Material der eigentlichen Tastatur zu packen. Idealerweise arbeiten wir erst grob vor, indem wir die großen Portionen ausreißen und entfernen danach die kleineren Stücke direkt am Raster der Öffnungen:
entkern_mid
In ca. 3 Stunden dürften so die beiden Hälften von Stützmaterial befreit sein.

Wenn wir eine Tastatur mit glatter Oberfläche haben wollen, können wir die Tastaturhälften nun mithilfe von Schleifpapier in verschiedenen Körnungen und viel Geduld abschmirgeln. Kommentieren wir die Rillenästhetik des 3D-Drucks jedoch mit den Worten "Its not a bug, its a feature", so können wir uns diesen Schritt sparen.

5. Elektrotechnik

Die elektrotechnischen Arbeiten an unserer Tastatur beginnen wir mit einem ebenso simplen wie befriedigenden Schritt, nämlich dem Einsetzen der 76 Schalter (switches) in die entsprechenden Löcher unserer beiden Tastaturhälften:
switches Dabei müssen wir lediglich auf das typische Klicken achten, das die switches beim richtigen Einrasten von sich geben.

Nun geht es an die Lötarbeiten. Wer noch nie gelötet hat, wird möglicherweise das ein oder andere Youtube-Tutorial zu dem Thema hilfreich finden. Sehr empfehlenswert ist auch dieses Video von Mark Hooper, das genau unser Tastaturprojekt auf Englisch beschreibt. Ab Minute 13 und 40 Sekunden beginnt der Elektrotechnik-Teil.
Damit wir nicht den Überblick über dieses doch recht lange Kapitel verlieren, unterteilen wir es in vier Arbeitsschritte: Das Verlöten der Zeilen mit Dioden, das Verlöten der Spalten mit isoliertem Draht, die Verbindung von Microcontrollern und Klinkenbuchsen sowie der Anschluss von Zeilen und Spalten an den Microcontroller.
Bevor wir nun den Lötkolben auspacken, bereiten wir unsere Dioden vom Typ 1N 4148 vor, indem wir die Seite des roten Körpers, also der Anode, durch Abklipsen mit einer Zange oder Schere etwas einkürzen. Dann biegen wir den Draht an beiden Enden der Dioden stark um, also jeweils zurück in Richtung der Diode, sodass kleine Haken entstehen. Wenn wir diesen Prozess für alle 76 Dioden abgeschlossen haben, kippen wir die Tastaturhälfte, an der wir zuerst arbeiten möchten, so um, dass uns die Höhlung mit den Pins der switches anschaut. Dann präparieren wir die oberste Reihe unserer Tastaturhälfte: Wir legen den Drahthaken an der gekürzten Seite des roten Körpers, also an der Seite der Anode, um den jeweils rechten Pin eines jeden switches. Die korrekte Ausrichtung der Diode ist hierbei extrem wichtig. Denn in unserem Modell darf der Strom nur von den Spalten zu den Zeilen fließen, was zu den Dioden passen muss, die Strom nur von der Anode in Richtung Kathode durchlassen. Die Wahl hingegen, ob wir uns an den rechten oder linken Pin des switches einhaken, muss nur für alle switches einheitlich getroffen werden, ist aber im Prinzip willkürlich, weil die switches selbst keine Dioden enthalten, den Strom also in beide Richtungen durchlassen, sodass wir diesbezüglich nichts falsch machen können. Klar ist jedoch, dass die restliche Diode samt Draht vertikal nach unten schauen sollte. Diese Stellung fixieren wir, indem wir den Draht auf der unteren, also der Kathoden-Seite der Diode mit etwas Knete am Tastaturgehäuse festmachen:
dioden
Ist die erste Reihe vorbereitet, schalten wir den Lötkolben ein und warten, bis er aufgeheizt ist. Die Zieltemperatur unterscheidet sich je nach Gerät, Spitze und Lötzinn. Der Bereich dürfte meist um die 350 Grad sein. Hierzu nochmal ein Wort der Warnung: Von nun an müssen wir unbedingt auf ausreichende Belüftung achten, da auch bleifreies Lötzinn giftige Dämpfe abgibt. Jetzt führen wir Lötkolben und Lötzinn an den Bereich, an dem der Drahthaken der ersten Diode den Pin des ersten switches berührt und verlöten diese Verbindung. Dies wiederholen wir für die gesamte Reihe. Dann biegen wir die noch freien, nach unten zeigenden Drahtenden der Dioden etwa rechtwinklig um, sodass wir sie an den Draht der nächsten Diode einhaken können. Wenn möglich entfernen wir dabei die Knete. Sollte ein Abstand zwischen zwei switches so groß sein, dass wir ihn nicht mit dem Draht einer einzigen Diode überbrücken können, können wir beide benachbarten Drähte auch aufeinanderzubiegen und ineinanderhaken. Sobald die ganze Reihe miteinander verhakt ist, verlöten wir auch diese Verbindungen. Damit ist die erste Reihe abgeschlossen und wir wiederholen denselben Vorgang für alle weiteren Reihen:
reihen_fertig
Gerade in den unteren Bereichen der Tastatur, insbesondere beim Daumencluster, ist es nicht ganz offensichtlich, welche Tasten zu welchen Reihen gehören. Daher erweist sich die Grafik von Mark Hooper als sehr nützlich, in der die erste Zahl stets die Reihe und die zweite Zahl die Spalte angibt:
ReihenSpalten Je nach Vorliebe können wir entweder stets direkt beide Tastaturhälften bearbeiten oder das gesamte Elektrotechnik-Kapitel erst für die eine Hälfte abschließen und danach für die andere Hälfte wiederholen. Als völlig ungeübter Löter brauchte ich für die Zeilen der ersten Tastaturhälfte etwa 2 Stunden und 40 Minuten, für die zweite Hälfte nur noch 1 Stunde und 25 Minuten.

Nun sind wir bereit für den zweiten Schritt der Lötarbeiten: das Verbinden der Spalten. Während die äußeren Spalten noch recht selbsterklärend sind, müssen wir bei den inneren Spalten gut darauf aufpassen, auch die korrekten Daumentasten anzuschließen. Dafür werfen wir wieder einen Blick auf die obige Grafik von Mark Hooper. Damit die Spalten nur indirekt über die switches und nicht versehentlich direkten Kontakt mit den Zeilen haben, müssen wir für die Spalten isolierte Kupferkabel oder besser -drähte verwenden. Daher messen wir erst einmal großzügig ab, wieviel Kabel oder Draht wir zur Verbindung aller switches in der ersten Spalte benötigen. Sicherheitshalber schneiden wir unseren Draht 5 cm länger ab, als wir gemessen haben. Dann nehmen wir unsere Abisolierzange zur Hand, setzen sie ca. 5 cm vor dem Ende des Drahtes an und entfernen so die ersten 5 cm Isolierung. Die übrige Isolierung auf dem Draht müssen wir nun in Sektionen zerteilen, die den Abständen zwischen den switches in unserer Spalte entsprechen. Das heißt, wir legen die Stelle, wo nach den 5 cm des nun unisolierten Drahtes unsere Isolation beginnt, an den Pin des ersten switches in unserer Spalte, messen den Abstand zum Pin des zweiten switches und kneifen dort, kurz bevor der Draht den Pin des zweiten switches berührt, mit der Abisolierzange sachte so weit in unseren Draht, dass ein Stück verschiebbarer Isolation entsteht. Dieses bewegliche Stück schieben wir jedoch nur minimal in Richtung des Drahtendes und erzeugen mit dem obigen Verfahren so lange weitere bewegliche Isolationsstücke, bis wir für alle Abstände zwischen den Pins unserer Spalte eines haben:
spalte_1
Jetzt sind wir bereit für eine etwas nervenzehrende Arbeit: Wir bilden ganz zu Beginn des Drahtes, an der Seite, an welcher die ersten 5 cm nun nicht mehr isoliert sind, einen Haken. Diesen Haken legen wir um den linken Pin des obersten switches in unserer Spalte. Dann schieben wir unser erstes bewegliches Isolationsstück so weit in Richtung des umschlungenen ersten Pins, dass es diesen beinahe berührt. Dadurch sollte der Draht in der Nähe des linken Pins des zweiten switches in unserer Spalte von seiner Isolation befreit worden sein. Den freien Draht schlingen wir nun per Hand oder Pinzette einmal straff komplett um den linken Pin des zweiten switches. Sobald die Konstruktion stabil ist, schieben wir unser zweites bewegliches Isolationsstück nach, bis es beinahe die Umschlingung des zweiten Pins berührt. Jetzt können wir den linken Pin unseres dritten switches in der Spalte mit dem frisch von der Isolation befreiten Stück Draht umschlingen und so weiter. Sobald wir die linken Pins aller switches in der Spalte umschlungen haben, verlöten wir die Verbindungen. Dasselbe Prinzip wenden wir für alle weiteren Spalten an. Mit diesem Verfahren eine Tastaturhälfte zu bearbeiten, dürfte uns starke 2 Stunden kosten.
spalten

Nachdem wir die Tastenmatrix endlich fertiggestellt haben, müssen wir sie noch mit dem Microcontroller verbinden. Bevor wir jedoch beginnen, einen Microcontroller zu verlöten, sollten wir unbedingt seine prinzipielle Funktionsfähigkeit testen. Dafür schließen wir ihn einfach direkt per USB-Kabel an den Computer an und achten darauf, ob wir den charakteristischen Ton für angeschlossene USB-Geräte hören. Auch das Abstecken des Microcontrollers sollte den typischen Ton für getrennte USB-Geräte erzeugen. Tatsächlich hatte sich bei mir persönlich herausgestellt, dass einer der beiden Microcontroller vollständig defekt war. Durch das frühzeitige Prüfen sparen wir uns also viel vergebliche Lötarbeit.
Apropos Lötarbeit: Als erstes sollten wir nun unseren Microcontroller mit einer Klinkenbuchse verlöten. Dazu verwenden wir drei isolierte Drähte oder Kabel. Um deren Länge bestimmen zu können, legen wir den Microcontroller und die Klinkenbuchse probehalber in unsere Halterung. Wir schneiden die drei Drähte großzügig so zu, dass sie die folgenden Verbindungen ermöglichen:
mc_klinke Dann nehmen wir Microcontroller und Klinkenbuchse wieder aus ihren Halterungen, um Beschädigungen des Plastiks zu vermeiden, und spannen den Microcontroller stattdessen in unsere "3. Hand" ein. Nun nutzen wir die Abisolierzange, um die Isolierung jeweils an den Enden der drei Drähte zu entfernen. Dann löten wir die Enden der Drähte an die Pins "GND", "VCC" und "3" des Microcontrollers. Abschließend löten wir die anderen Enden an beliebige Kontakte der Klinkenbuchse. Wichtig ist aber, dass wir die Verbindung zwischen Microcontroller und Klinkenbuchse für beide Tastaturhälften exakt identisch gestalten, also beispielsweise jeweils den vordersten Klinkenkontakt mit "GND", den zweitvordersten mit "Pin 3" und den dritten mit "VCC" verbinden. Die Lötarbeiten an der Klinkenbuchse dürften uns etwa 30 Minuten kosten.

In einem letzten Arbeitsschritt müssen wir jetzt noch jede Zeile und jede Spalte unserer Tastenmatrix mit dem dafür vorgesehenen Pin des Microcontrollers verbinden. Daher werfen wir als erstes einen Blick auf den passenden Schaltplan von Mark Hooper:
Schaltplan_Hooper Allerdings müssen wir beachten, dass dieser Schaltplan - genau wie die vorige Grafik von Mark Hooper - die Sicht auf die Tastatur von oben darstellt. Da wir beim Arbeiten allerdings von unten in die Tastatur schauen, brauchen wir unsere volle Konzentration und müssen gut aufpassen, um keine Übertragungsfehler zu machen. Um einen gewissen Grad an Übersichtlichkeit zu wahren, werden wir für den Anschluss der Zeilen und der Spalten an den Microcontroller je einen Strang Regenbogenkabel verwenden. Als erstes müssen wir die benötigten Kabellängen abmessen. Dafür stellen wir uns vor, wo der Microcontroller in der Tastaturhälfte sitzen wird und messen dann für das eine Regenbogenkabel großzügig die Abstände zu allen Zeilen, für das andere Regenbogenkabel die Abstände zu allen Spalten. An welcher genauen Stelle wir die Enden der Regenbogenkabel an die Zeilen und Spalten löten, ist dabei völlig uns überlassen. Allerdings empfiehlt es sich, die Kabel so zu verlegen, dass sie später möglichst leicht reparierbar sind und dass durch ihre Länge genügend Spielraum besteht, um den Microcontroller später noch leicht abklappen bzw. herumdrehen zu können, falls wir noch einmal seine Vorderseite erreichen müssen, um dort Lötstellen zu reparieren. An den jeweils passenden Stellen zwicken wir die Stränge der Regenbogenkabel direkt ab. Dann schälen wir mit der Abisolierzange jeweils beide Enden der Kabel ab:
Regenbogenkabel
Nun löten wir nacheinander die Enden der beiden Regenbogenkabel, an denen die Stränge alle noch ca. dieselbe Länge haben, an die im obigen Schaltplan bezeichneten Pins des Microcontrollers. Der Microcontroller sollte dabei nach wie vor in der "3. Hand" fixiert sein. Dabei gibt es zwei Ansätze, um uns die Arbeit zu erleichtern: Entweder wir löten die Enden der Regenbogenkabel abwechselnd von oben und von unten an den Microcontroller oder wir verwenden die meist mitgelieferten Stäbchen. In letzterem Fall löten wir diese erst selbst an den Microcontroller und löten dann die Enden der Regenbogenkabel, die wir zu Haken formen, abwechselnd eher höher und eher tiefer an die Stäbchen:
Regenbogen
Auf jeden Fall beachten wir aber die Farbcodierung und die Pinbelegung aus dem Schaltplan von Mark Hooper. Sobald der Microcontroller mit den Regenbogenkabeln verbunden ist, setzen wir ihn und auch unsere Klinkenbuchse in die passenden Stellen unserer Halterung ein und installieren die Halterung in unserer Tastaturhälfte. Jetzt können wir - mit stetem Blick auf den Schaltplan und höchster Konzentration - die Kabelenden der Regenbogenkabel an die jeweils korrekten Zeilen und Spalten unserer Tastenmatrix löten:
ende

6. Programmierung

Die Arbeit an der Hardware haben wir nun abgeschlossen. Jetzt müssen wir nur noch die Software aufspielen, was zwar ein sehr kleinschrittiger Prozess ist, uns insgesamt aber nicht länger als 20 Minuten kosten dürfte.
Als erstes testen wir, ob die Verkabelung der beiden Hälften prinzipiell funktioniert. Dafür verbinden wir erst die beiden Hälften der Tastatur über das Klinkenkabel miteinander und verbinden danach den Microcontroller der linke Hälfte per USB-Kabel mit unserem Computer. Diese Reihenfoge ist wichtig, denn es gilt stets: Solange die Tastatur über USB mit dem Computer oder einer anderen Stromquelle verbunden ist, dürfen wir die Klinkenverbindungen nicht manipulieren, weil wir andernfalls einen Kurzschluss oder Schlimmeres riskieren. Das Klinkenkabel darf also nur im ausgeschalteten Zustand der Tastatur angeschlossen oder abgesteckt werden. Sobald die Tastatur am PC angeschlossen ist, sehen wir vorsichtig nach, ob die grünen LEDs an beiden Microcontrollern leuchten. Andernfalls müssen wir die interne Verkabelung noch einmal überprüfen. Werden die beiden Seiten hingegen mit Strom versorgt, trennen wir erst das USB-Kabel vom PC und dann das Klinkenkabel zwischen den beiden Tastaturhälften. Um das zukünftige An- und Abstecken des Klinkenkabels stressfreier zu gestalten, bietet es sich an, die Klinkenbuchsen nun mit Kunststoffkleber in ihrer Halterung zu fixieren. Danach können wir mit der Einrichtung der Software beginnen.

Die nächsten Schritte folgen der offiziellen QMK-Dokumentation. Zuerst laden wir uns die QMK_MSYS.exe herunter und installieren das Programm. Danach laden wir uns MSYS2 herunter und installieren es.
Nach abgeschlossener Installation öffnen wir das MSYS2 MINGW64-Terminal per Klick auf das gleichnamige Programm im Windows-Startmenü. Wir tippen den Befehl "pacman -Syu" (ohne Anführungszeichen) ein und bestätigen mit Enter.
Nachdem der Vorgang abgeschlossen ist, schließen wir das MSYS2 MINGW64-Terminal und öffnen es erneut per Klick auf das Programm im Windows-Startmenü. Nun tippen wir den Befehl "pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk" (ohne Anführungszeichen) ein und bestätigen wieder mit Enter.
Sobald die Installation fertig ist, tippen wir "qmk setup" (ohne Anführungszeichen) und bestätigen mit Enter. Etwaige Nachfragen bei den Installationen beantworten wir stets mit "y".
Im Laufe dieses Vorgangs wird ein Ordner namens "keyboards" im Pfad C:/Users/[Nutzername]/qmk_firmware erstellt. Per Windows-Explorer navigieren wir nun zu diesem Ordner und öffnen einen seiner Unterordner, nämlich "handwired" und dort wiederum "dactyl_manuform". Dieser Ordner enthält alle Dateien, die wir im Folgenden brauchen. Zuerst öffnen wir die Datei "config.h" mit VSCode und fügen unter den bestehenden "define"-Zeilen diese drei neuen Zeilen Code ein:
#define USE_SERIAL
#define MASTER_LEFT
#define SPLIT_USB_DETECT
Dann speichern wir die Datei und schließen VSCode. Zurück in der Anzeige des Ordners "dactyl_manuform" im Windows-Explorer öffnen wir nun den Unterordner "5x7", navigieren in dessen Unterordner namens "keymaps" und wiederum in dessen Unterordner namens "default". Dort angekommen, öffnen wir die Datei "keymap.c" mit VSCode. Nun können wir unsere Tastenbelegung frei definieren.
Da wir hierfür jedoch die Tastencodes, also die etwas spezielleren Bezeichnungen der einzelnen Tasten verwenden und folglich erst einmal kennen müssen, behelfen wir uns mit einem Trick: Wir öffnen den grafischen QMK Configurator. Auf der Seite klicken wir oben rechts auf das Zahnrad und stellen die Sprache sowie vor allem das Systemlayout auf Deutsch um. Nun erstellen wir unsere Wunsch-Tastenbelegung, indem wir auf der Seite erst in der oberen Tastatur auf die zu belegende Taste klicken und dann auf der unteren Tastatur die gewünschte Taste wählen. Besonders praktisch ist, dass wir so bis zu 15 Ebenen definieren können.

Wenn wir mit unseren Optimierungen vor absolut gar nichts Halt machen möchten, wäre jetzt auch der Moment gekommen, sich vom QWERTY-Layout zu verabschieden. Warum es effizientere und ergonomischere Alternativen gibt, wird beispielsweise in der Neo-Welt sehr schön erklärt. Als kleiner Teaser sei hier lediglich verraten, dass ein optimales Schreiberlebnis nie das Ziel des QWERTY-Layouts war. Zu Zeiten von dessen Entwicklung war dies auch absolut nachvollziehbar. Denn die Priorität Nr. 1 war es damals, zu verhindern, dass sich die Hebel mechanischer Schreibmaschinen ineinander verhaken und so das gesamte Gerät ruinieren. Inwiefern die Nutzung des QWERTY-Layouts mit den heutigen elektrischen Tastaturen noch sinnvoll ist, darf nun jeder selbst entscheiden.
Die hier verlinkte Tastenbelegung ist indes nicht nur auf generelle Effizienz und Ergonomie, sondern sogar perfekt auf unser konkretes Tastatur-Modell optimiert und somit für uns unfassbar nahe am theoretischen Optimum. Dass man dies auch in der Praxis deutlich merkt, kann ich persönlich aufgrund meiner über fünfjährigen Schreiberfahrung mit dieser Belegung bestätigen. Da wir mit unserer Dactyl Manuform den Luxus von mindestens zwei bequemen Daumentasten pro Seite haben, können wir nicht nur Shift, sondern auch die Leertasten auf die Daumen legen. Wen die häufige Alternierung zwischen dem "i" auf dem Ringfinger und dem "e" auf dem Mittelfinger derselben Hand stört, kann das "i" auch anstatt einer der Leertasten auf eine der Daumentasten legen. Wem die Umstellung auf ein neues Layout hingegen als viel zu aufwendig erscheint, kann aber auch nicht widersprochen werden. Denn der Zeitaufwand zum Umlernen ist beträchtlich und die Vorteile eines alternativen Layouts sind nicht so dramatisch wie die einer hardware-seitig optimierten Tastatur.

Sobald wir nun unser Layout auf die ein oder andere Weise erstellt haben, klicken wir auf den grünen Button "QMK Keymap als JSON exportieren". Wenn wir nun genau dieses heruntergeladene JSON öffnen und seinen Inhalt mit unserer grafischen Ansicht im Browser vergleichen, können wir erkennen, welchen Tasten welche Tastencodes zugeordnet sind. Für einfache Buchstabentasten können wir alternativ auch nur im Online-Konfigurator über die Tasten hovern und so die Tastencodes ablesen. Die in Erfahrung gebrachten Tastencodes können wir nun in die Datei "keymap.c" übertragen. Sobald wir damit fertig sind, speichern wir die Datei und schließen VSCode.
Jetzt verbinden wir den Microcontroller der rechten Tastaturhälfte per USB-Kabel mit dem PC, ohne jedoch die beiden Tastaturhälften mittels Klinkenkabel miteinander zu verbinden. Dann öffnen wir wieder das MSYS2 MINGW64-Terminal, geben den Befehl "qmk flash -kb handwired/dactyl_manuform/5x7 -km default -bl avrdude-split-right" (ohne Anführungszeichen) ein und bestätigen mit Enter. Da uns nun keine (vollständige) Tastatur mehr zur Verfügung steht, müssen wir diese Eingaben mit der Windows-Bildschirmtastatur machen. Sobald wir dazu aufgefordert werden, den Microcontroller zu resetten, drehen wir die rechte Tastaturhälfte vorsichtig um, sodass uns wir auf die offene Seite der Tastatur und die Unterseite des Microcontrollers schauen. Dann berühren wir mit einer Büroklammer oder ähnlichem gleichzeitig den zweit- und drittobersten Kontakt der linken Seite des Microcontrollers. Nun sollte der Flash-Vorgang starten. Tut sich auch einige Sekunden später noch nichts, müssen wir nochmal mit der Büroklammer ans Werk gehen.
Sobald der Vorgang des Flashens abgeschlossen ist, schließen wir das MSYS2 MINGW64-Terminal, ziehen das USB-Kabel von der rechten Tastaturhälfte ab und stecken es in die linke Tastaturhälfte. Das Klinkenkabel verwenden wir noch immer nicht. Stattdessen starten wir wieder das MSYS2 MINGW64-Terminal, geben den Befehl "qmk flash -kb handwired/dactyl_manuform/5x7 -km default -bl avrdude-split-left" (ohne Anführungszeichen) ein und bestätigen mit Enter. Auf Nachfrage resetten wir wieder den Microcontroller, indem wir die Büroklammer an den zweit- und drittobersten Kontakt der linken Seite des Microcontrollers halten. Sobald auch das Flashen der linken Tastaturhälfte abgeschlossen ist, schließen wir das MSYS2 MINGW64-Terminal, trennen das USB-Kabel vom PC, verbinden die beiden Tastaturhälften per Klinkenkabel miteinander und verbinden die linke Tastaturhälfte wieder per USB-Kabel mit dem PC. Damit ist das erstmalige Flashen abgeschlossen und endlich sollte alles wie geplant funktionieren. Die beschriebene Konfiguration mit der linken Seite als "Master", der am PC hängt und der rechten Seite als nur indirekt mit dem PC verbundenen "Slave" könnte bei Bedarf auch umgekehrt werden, worauf wir an dieser Stelle jedoch verzichten. Für alle zukünftigen Flash-Vorgänge können wir nun die linke Tastaturhälfte per USB-Kabel mit dem PC und per Klinkenkabel mit der rechten Hälfte verbunden lassen und müssen dann nur einmalig den Befehl "qmk flash -kb handwired/dactyl_manuform/5x7 -km default -bl avrdude-split-left" (ohne Anführungszeichen) eingeben, um beide Hälften zugleich zu flashen.

7. Fertigstellung

Für den abschließenden Funktionstest jeder einzelnen Taste nutzen wir diese Website.
Respekt an alle, die auf Anhieb vollkommen fehlerfrei gelötet haben. Ich persönlich musste an nicht weniger als fünf Stellen nachlöten, weil teils Tasten, teils auch ganze Reihen oder Zeilen nicht erkannt wurden.
Sobald alles wie geplant funkioniert, ist es endlich Zeit, die Tastenkappen aufzusetzen. Wenn wir asymmetrische Kappen haben, müssen wir auf deren Ausrichtung achten, während wir symmetrische Kappen wie XDA einfach aufsetzen können. Hier ein grafischer Überblick über die gängigsten Tastenkappen-Profile von hirosarts.com:
Tastenkappenprofile
Die Tastatur selbst ist hiermit fertig. Wenn wir die Hände bei der Benutzung über der Tastatur schweben lassen, können wir nun direkt loslegen.
DM_final
Legen wir unsere Hände jedoch gern auf der Tastatur selbst oder auch auf der Fläche direkt vor ihr ab, sollten wir uns vor unserer ersten längeren Benutzung unbedingt noch um Handballenablagen kümmern. Denn dank der 3D-Form hat die Tastatur trotz aller Optimierungen zwangsläufig eine Höhe, die zum sehr ungesunden Abwinkeln unserer Handgelenke nach oben führt, falls wir sie ohne Handballenablagen benutzen sollten. Stattdessen möchten wir jedoch, dass unsere Hände leicht von oben - wie in eine Schüssel - in die Kuhlen der Tastatur hineinfallen. Ob wir die Handballenablagen nun ebenfalls 3D-drucken, kaufen oder aus beliebigen anderen Materialien zusammenbasteln, ist dabei völlig unserer Kreativität überlassen. Hier lauert also schon das nächste Projekt... :D