Bouw je eigen keyboard - Stap 3: Firmware

Laatst bijwerkt op zondag 8 september 2024.

Er zijn veel verschillende tools voor het maken van een keyboard firmware. De meest bekende is QMK, maar zelf ben ik hier geen fan van omdat het erg complex is. Ik gebruik zelf liever KMK. Dit is een keyboard firmware library op basis van CircuitPython. Het is makkelijker te begrijpen en te gebruiken dan QMK, wat in C geschreven is.

De voornaamste reden om KMK te gebruiken is voor mij dat je gebruik kan maken van POG. POG is een UI tool waarmee je je firmware kan maken. Je kan hiermee je toetsenbord layout maken en de firmware genereren. Hierdoor hoef je zelf geen code te schrijven.

Microcontroller aan je PC aansluiten

Om de firmware op je microcontroller te zetten, moet je deze aansluiten op je PC. Als je de microcontroller aansluit, moet je hem in bootloader mode zetten. Dit kan je doen door de reset knop in te drukken en vast te houden terwijl je de USB-C kabel aansluit. Als je de reset knop loslaat, zou de microcontroller in bootloader mode moeten staan. Dit kan verschillen per microcontroller, dus kijk even in de documentatie van je microcontroller.

CircuitPython installeren

Om KMK / POG te kunnen gebruiken, moet je CircuitPython op je microcontroller installeren. Dit kan je doen door de laatste versie van CircuitPython te downloaden van de CircuitPython website. Pak het bestand uit en kopieer de bestanden naar de microcontroller. Als je dit gedaan hebt, zou je een USB drive moeten zien met de naam CIRCUITPY.

POG installeren

POG moet je downloaden van deze site: POG. Hier wordt je door gelinkt naar de laatste versie van POG (Als je recent naar schrijven op deze pagina komt, zie je mogelijk een bekende naam bij de release notes staan). Download de juiste versie voor je besturingssysteem en installeer het programma.

Firmware maken

Jan Lunge, degene die POG heeft bedacht, heeft een tutorial gemaakt over hoe je POG kan gebruiken. Hierin legt hij uit hoe je een layout kan maken en hoe je de firmware kan genereren. Ik raad aan om deze tutorial te volgen.

Het is een redelijk simpel proces. Wanneer je POG opstart, wordt je gevraagd om een nieuw toetsenbord aan te maken. Klik op de knop en selecteer de drive van je microcontroller.

POG

Vervolgens kan je POG KMK automatisch laten installeren. Dit zorgt ervoor dat je altijd de juiste versie van KMK hebt die getest is met POG.

KMK installeren

Daarna wordt je gevraagd om een naam te kiezen voor je toetsenbord. Alleen de naam is hier belangrijk, de rest is optioneel.

Toetsenbord naam

Nu kan moet je je matrix definiëren. Als je een gesplitst toetsenbord maakt, moet je hier bij Keyboard Type dat aangeven. Je hoeft dan ook maar een helft aan te geven voor de matrix width. POG verdubbelt dit dan voor je.

Matrix definiëren

In de volgende stap moet je aangeven welke pins je hebt gebruikt voor je kolommen en rijen. Dit is waar je matrix schema van pas komt. Ook moet je je Diode Direction aangeven. Dit is de kant waar de streepjes van de diodes naartoe wijzen. COL2ROW gebruik je als je diodes van de kolommen naar de rijen lopen. ROW2COL gebruik je als je diodes van de rijen naar de kolommen lopen. Het streepje van de diode wijst de kant aan.

Kolommen en rijen

Dan kom je aan bij het meest ideale deel van POG: coord mapper. Hiermee wordt je layout gegenereerd door het indrukken van de toetsen op je toetsenbord. Eerst druk je op de grote “Flash coordmap finder to keyboard” knop. Hiermee wordt je toetsenbord in een soort test mode gezet. Druk nu op elke toets op je toetsenbord. Wanneer je nu op een knop drukt, vult POG het coordinaat in. Het kan zijn dat je de kabel van je toetsenbord er even uit moet trekken en weer in stoppen voor het werkt. Begin met de linker toets van de bovenste rij. Als je hier op drukt, verschijnt er als het goed is “000” in het invoerveld. Het exacte getal maakt minder uit, zolang er maar 3 cijfers verschijnen. Druk nu op de volgende toets en ga door tot je alle toetsen in de rij hebt gehad. De laatste toets in de rij druk je 2x in, zodat de cursor naar de volgende rij gaat. Als een knop niks invult, is die waarschijnlijk niet goed vast gesoldeerd en moet je kijken waar de fout zit.

Coord mapper

Zodra elke toets is geregistreerd, druk je op Next om naar de Layout editor te gaan. Hier kan je je coordmap omzetten naar een layout die meer lijkt op je daadwerkelijke toetsenbord. Dit is allemaal puur visueel, dus je kan deze stap overslaan, of helemaal los gaan met je layout.

Layout editor

Als je klaar bent met je layout, druk je op Finish Setup. Dan kom je uit bij de Keymap Editor. Hier kan je je toetsen programmeren. Door lagen toe te voegen, kan je met dezelfde knop meerdere functies hebben. Dit is handig voor bijvoorbeeld een numpad laag of een media laag. Vergeet niet op de Save knop te drukken als je klaar bent.

Keymap editor

Nu is je toetsenbord eigenlijk al klaar, maar er is nog een ding dat we moeten aanpassen. Als je je toetsenbord aansluit op je PC, wordt deze herkend als een USB drive. Dit is niet handig, want je wilt dat je toetsenbord als toetsenbord herkend wordt. Dit kan je op de standaard KMK methode doen, met een boot.py bestand, maar POG heeft hier een eigen manier voor.

Er is namelijk een customkey functie genaamd ToggleDrive. Deze voeg je toe aan je keymap, en zodra je een keer op die knop drukt, wordt je toetsenbord niet meer als USB drive herkend. Als je nog een keer op die knop drukt, wordt je toetsenbord weer als USB drive herkend. Dit is nodig omdat je anders je firmware niet kan updaten.

Om deze toe te voegen, klik je op een lege plek in je keymap, en vervolgens onder “Keycode Options for Selected Key(s)” selecteer je Custom. Nu vul je hier customkeys.ToggleDrive in.

ToggleDrive

Gefeliciteerd! Je hebt nu je eigen toetsenbord gemaakt. Als je nog vragen hebt, kan je altijd terecht op de POG Discord.