Zelf een custom keyboard maken: de mogelijkheden van mechanische keyboards

  • Linda

Geschreven door Linda

Bij 10KB hebben we een hardware budget waar iedereen zelf mee mag bepalen welke spullen ervoor zorgen dat je meer van je werk kan genieten. Als non-developer hecht ik niet zo veel waarde aan een giga workstation of 35 computerschermen naast elkaar (en ik heb twee jaar terug al een prachtige laptop mogen aanschaffen). Als nerd hecht ik wel waarde aan technische gadgets en zo ontdekte ik een paar maanden geleden het ‘mechanische toetsenbord’.

De hobby die hieraan vooraf ging

Een tijdje geleden hadden we het tijdens de lunch over verschillende toetsenbordindelingen. Waar het grootste gedeelte van de wereld gebruik maakt van QWERTY, had Raymond zichzelf Colemak aangeleerd: een keyboard indeling waar letters die veel na elkaar gebruikt worden ook daadwerkelijk naast elkaar zitten. Ik besloot (als blind typend QWERTY gebruiker), om in mijn vrije uurtjes te oefenen met deze nieuwe lay-out. Conclusie: als je al blind kan typen, is het onnodig veel moeite om te switchen, maar toch denk ik niet dat ik nog terug wil naar QWERTY. Het ‘rollen’ van mijn vingers over de toetsen (waar Colemak bekend om staat) voelt een heel stuk prettiger. Bovendien zorgde deze eerste kennismaking ook voor het besef dat ik een indeling gewoon kan aanpassen naar wat ík prettig vind, in plaats van hoe het ‘hoort’. Kleine spoiler: van de originele Colemak lay-out is niet veel meer over.

Een Lily58 toetsenbord
Een Lily58 toetsenbord

Het toetsenbord zelf

Ik dacht altijd (net zoals 99% van de mensheid) dat een toetsenbord ‘gewoon’ een toetsenbord is. Binnen 10KB zag ik voor het eerst varianten op die normaal. Zo heeft Ted een Moonlander en Robin een Lily58. Beide zogenaamde ‘split keyboards’ die uit twee delen bestaan. Ideaal voor het ergonomisch plaatsen van beide helften voor je schouders en je hebt nog ruimte in het midden voor koffie en snacks. Dat leek me wel iets.

Zo veel opties

Hoeveel toetsen wil je eigenlijk op je toetsenbord? Wat voor indeling van de toetsen vind je belangrijk (ortho lineair of het standaard verspringende)? En dan is er ook nog zoiets als een ‘splayed’ keyboard waarbij toetsen in verschillende hoeken gedraaid zitten. Wil je dan Cherry MX red switches, Kailh choc browns of ga je voor een lineaire switch? RGB-lampjes onder je toetsen? Welke kleur toetsen wil je überhaupt? Allemaal vragen waar ik nog helemaal nooit in mijn leven van had gehoord of over had nagedacht. Weken van onderzoek tot in de late uurtjes volgden. Er is gelukkig een subReddit voor precies de keyboard-fanaten die deze vragen relevant vinden.

De fysieke lay-out

Na een aantal verschillende lay-outs uitgeprint te hebben (om te kijken wat goed bij mijn handen past), kwam ik er al redelijk snel achter dat mijn linker- en rechterhand er compleet anders uitzien. Zo is de wijsvinger van mijn rechterhand een stuk kleiner dan die van mijn linkerhand, terwijl de pink weer langer is dan haar linker zusje. Nu ik toch in de grootste nerd-hoek van het internet was beland in tijden, besloot ik door te pakken: dan ontwerp ik ook ‘gewoon’ mijn eigen printplaat.

PCB ontwerpen

Met YouTube kom je een heel eind en in een paar dagen leerde ik de basisbeginselen van KiCad (een tekenprogramma voor het maken van printplaten). Ik heb een aantal bestaande toetsenborden genomen ter inspiratie en vervolgens precies de aanpassingen gedaan die voor mijn handen ideaal leken. Het is een indeling geworden van 46 knoppen (23 aan elke hand) en ik hoop maar dat dat genoeg is (want waar laat je dan je nummers?). Het maakt de beide helften in ieder geval lekker compact.

De uiteindelijke printplaat, klaar voor de fabriek
De uiteindelijke printplaat, klaar voor de fabriek

Solderen

Dat had ik nog nooit gedaan. Gelukkig denkt de Pippi Langkous in mij dat dat helpend is voor ‘het dan wel kunnen’ en zo veranderde mijn woonkamer gedurende twee weken in een soldeerstation. De meest kleine ledjes, microcontrollers (nice!nano), switches (kailh choc brown), led displays (nice!view), reset knoppen, TRRS poorten en aan/uit schakelaars werden als waar monnikenwerk op de beide printplaatjes bevestigd.

Eerlijkheidshalve gebiedt het me wel te zeggen dat ik de ledjes inmiddels heb opgegeven. Na ze drie keer opnieuw te hebben gesoldeerd, pogingen gedaan ze te vervangen en vooral heel veel gehuild te hebben ben ik tot de conclusie gekomen dat “het niet hebben van ledjes beter is voor de batterijduur”. Dan weet je dat.

Forken, Clonen, Pushen en Flashen

Het hele idee van deze mechanische keyboards is dat je alles zelf kan bepalen en dat zo’n beetje elke functionaliteit programmeerbaar is. Daarvoor moet je een beetje programmeren en zorgen dat de juiste software op de microcontrollers komt te staan. In een online tutorial las ik dit:

Fork this repo on GitHub, clone it locally, trigger a build by pushing a change, download the artifact and flash the UF2 files.

Dit zijn de momenten dat ik intens dankbaar ben dat ik bij een softwarebedrijf werk. Flashen herken ik nog wel, maar ik kan me niet voorstellen dat ik daar hetzelfde mee bedoel als deze tutorial. Gelukkig begreep Rick meteen wat hier staat (en moest zelfs een beetje gniffelen), zodat een kwartier later mijn keyboard functioneel was. Flashen betekent blijkbaar overigens zoiets als ‘er een bestandje opzetten’, dus meer dan kabeltje aan het toetsenbord en documentje slepen was het ook niet.

Custom keymap

Sinds mijn Colemak-ontdekking keek ik het meest uit naar het ontwerpen en programmeren van de keymap. Dit soort keyboards werken met ‘layers’, waardoor de mogelijkheden verduizendvoudigd worden. Zo’n layer moet je een beetje hetzelfde zien als bijvoorbeeld de SHIFT-knop: normaal zijn alle letters kleine letters, maar als je de shift indrukt worden het kapitalen. Of bijvoorbeeld de CTRL-knop die van de ‘c’ een 'kopieer-knop' maakt. Naast layers kan je verschillende combinaties van knoppen een functie geven, kan je hele stukken tekst onder een knop zetten (bijvoorbeeld je e-mailadres) en is het mogelijk om knoppen dubbele functies te geven op basis van ‘kort indrukken’ of ‘ingedrukt houden’. Op Github zijn ontelbaar veel voorbeelden te vinden van wat voor slimmigheden mensen allemaal hebben bedacht. Als ‘een kenner’ dit leest die een goede tip voor me heeft, stuur me dan vooral een mailtje!

Een deel van de keymap code
Een deel van de keymap code

Af? En dan?

Dit hele project bestond uit veel wachten. Onderdelen komen zo’n beetje overal vandaan (al blijkt een van de meest bekende custom mechanische split keyboard winkels (splitkb) in Nederland te zitten) en kwamen dus afzonderlijk van elkaar binnen gedruppeld. Toen eindelijk de keycaps als laatste binnen kwamen was mijn nieuwe keyboard af. Ik ben super tevreden met het eindresultaat, maar kan er nog niet zoveel mee 🙈. Het is voornamelijk erg wennen aan de nieuwe locaties van de knoppen. Gedurende de afgelopen 20 jaar heb ik op een bepaalde manier getypt en spiergeheugen blijkt een ding. Ik begin momenteel mijn werkdag met het nieuwe keyboard, om na een half uurtje toch weer te switchen naar mijn ‘oude’ keyboard. Ik ben benieuwd hoe lang deze leerperiode duurt, al heb ik dit hele blog met het nieuwe keyboard getypt wat verrassend goed gaat. Een korte test op Monkeytype vertelt me dat ik inmiddels toch alweer met 56 woorden per minuut typ, dus dat gaat de goede kant op.

Update na een week

Blijkbaar is dat aanleren niet zo veel werk als ik van tevoren dacht. Inmiddels typ ik zonder problemen op het nieuwe toetsenbord en ben ik grotendeels gewend aan de locatie van de toetsen. Voor de symbolen heb ik een spiekbriefje gemaakt van de locaties, maar als locaties niet logisch voelen dan zijn ze eenvoudig aangepast. Het ontbreken van de rij met cijfers vind ik eigenlijk veel prettiger dan ik had verwacht. Ik heb nu gekozen voor een numpad onder een laag en dat voelt ook eigenlijk veel intuïtiever. Minpunt aan zo weinig knoppen: de pijltjestoetsen moeten ook onder een laag, waardoor je daarvoor standaard een combinatie van toetsen in moet drukken en daar ben ik nog niet echt aan gewend. Wat betreft de twee helften van het toetsenbord ben ik MEGA fan. Door mijn beide handen best ver uit elkaar te zetten, opent je borst en ga je automatisch rechtop zitten. De zogenaamde 'garnaal-houding' is daarmee verleden tijd. Ik ga wel nog kijken hoe ik mijn muisgebruik kan minimaliseren; het feit dat ik daar nu nog naar moet reiken voelt als een enorme inbreuk op mijn ritme (ach, je kan maar ergens last van hebben).

Linda
Is jouw keyboard ook 'anders'?

Stuur vooral een berichtje met specs en een foto! Ik vind het gaaf om de creaties van anderen te zien!