Building 3D printed ergonomic handwired mechanical keyboards for fun and profit (Dactyl-ManuForm 4x5 build log)
Table of Contents
Many months ago, I stumbled upon a video about a weird keyboard. I found it really intriguing and it was also by the same person who introduced me to Colemak-DH.
So I started falling down the rabbit hole and decided I wanted to try one of these keyboards for myself. Because of this, I also ended up falling down the 3D printing rabbit hole, as I’d like to have more autonomy and freedom to print other things in the future, instead of always having to order from some print-on-demand service.
After many hours of tinkering, watching and reading build logs, I finally did it: I managed to make a working keyboard. And then I made another one, to sell to someone else. So now I’m writing this post to explain the build process, with some level of detail, because many things weren’t so obvious to me when starting out.
Bill of materials (BOM) #
Costs as of July 2024.
Conservative estimate of total cost, including tools: 500€
However, many people will already have some of the tools, can have them borrowed from friends or relatives or use external services.
Conservative cost estimate of keyboard components using a 3D print-on-demand service: 110€
And if you end up building more keyboards in the future (which is quite likely, to be honest), the cost of the tools, the 3D printer, and buying the components in bulk will bring the cost per keyboard even lower. If you’re looking for inspiration for other keyboards, I’d suggest looking into: Dactyl CC, Dactyl Cygnus, and the Lil Chonky Bois.
Disclaimer: Many of the following links are affiliate links. This means I’ll get a small commission if you make a purchase through them, at no extra cost to you.
If ordering from outside the EU, my preference has been to order from AliExpress. Most of their shipping methods, either Choice or AliExpress Standard Shipping, have arrived quickly (within 2 to 3 weeks, sometimes even less), without issues and most importantly: without getting stuck in customs. In AliExpress, you pay VAT upfront (for items up to 150€), the shipping company deals with customs and it arrives seamlessly at your door.
This has been my experience ordering to Portugal, your mileage may vary.
Option 1: Buy a 3D printer #
Name | Cost | Link |
---|---|---|
3D Printer - Bambu Lab A1 Mini | €205,69 + shipping | https://eu.store.bambulab.com/en-pt/products/a1-mini?variant=49060349804892 |
3D Printing Filament - Sunlu PETG Black 1kg | €27,65 | https://s.click.aliexpress.com/e/_DD2Vdqb |
Cost estimate: ~ €250
Although you’ll have to buy a whole spool, the keyboard will only consume around 250g of filament.
You could use the rest to try out more regular 3D printing or perhaps organize your drawers with Gridfinity.
Option 2: Use a 3D printing service #
Name | Cost | Link |
---|---|---|
Craftcloud | €28,68 production + shipping | https://craftcloud3d.com/ |
Cost estimate: ~ €50
Don’t forget to keep the file units as Millimeters (mm). I’d suggest Black PETG, standard finish, 20% infill.
Keyboard components #
Name | Quantity | Cost | Link |
---|---|---|---|
1N4148 diodes | 46 | €4,60 | https://s.click.aliexpress.com/e/_DBS1c95 |
Pro Micro ATmega32U4 USB-C | 2 | €4,96 | https://s.click.aliexpress.com/e/_DDfEUHN |
TRRS connectors (PJ-320A) | 2 | €1,69 | https://s.click.aliexpress.com/e/_DdfzXq3 |
TRRS cable | 1 | €1,60 | Metal: https://s.click.aliexpress.com/e/_DFRVdDt |
€1,06 | Rubber: https://s.click.aliexpress.com/e/_DDRIyGL | ||
USB-C to USB-A cable | 1 | €3,04 | https://s.click.aliexpress.com/e/_Dem1Kkj |
Rubber feet | 8 | €1,42 | https://s.click.aliexpress.com/e/_DCM0Lm7 |
Heat set inserts (M3 x D5.0 x L4.0) | 10 | €7,14 | https://s.click.aliexpress.com/e/_DDSI2rp |
M3 screws (M3 x 8mm) | 10 | €1,96 | https://s.click.aliexpress.com/e/_DlJDnIb |
Mechanical key switches | 46 | €8,98 | Outemu Silent Cream Yellow: https://s.click.aliexpress.com/e/_DEA3oMF |
€12,96 | Gateron Milky Yellow Pro: https://s.click.aliexpress.com/e/_DBGXWp9 | ||
XDA keycap set | 1 | €13,43 | https://s.click.aliexpress.com/e/_DkeXiUT |
Copper wire from old Ethernet cable | free |
Cost estimate: ~ €60
You’ll need one diode per switch.
When looking for TRRS cables, you should just be able to look for 3.5 mm AUX/JACK cables with 4 poles, male on both ends. I believe you really need 4 poles. I tested plugging in the keyboard with a 3 pole cable and it didn’t work.
I also think you have to use a USB-C to USB-A cable to plug in the keyboard. I recall reading somewhere else that a USB-C to USB-C cable won’t work with these Pro Micros.
My choice of switches are the Outemu Silent Cream Yellows. These are tactile silent switches that feel even better than my Topre keyboard, in my opinion. I think many people want to get into mechanical keyboards but don’t necessarily want to buy into the super loud switches, especially in a work setting, where it would be inappropriate.
If you are looking for a more conventional choice of switches, I’d suggest the Gateron Milky Yellow Pros.
The keycap set should ideally have a profile where all keys are the same height. Most commonly these are either XDA or DSA. This is because the curvature of the keyboard will already take care of making it easier for the fingers to reach, no additional help from the keycap profiles is needed. This being said, I’ve seen lots of people online using more regular OEM/Cherry/SA profiles and they also seem to work fine.
I used copper wire from an old ethernet cable (with broken clips, so it wasn’t really useful anymore) for wiring the rows and columns to the Pro Micros. You could also buy some thin copper wire.
Tools #
Name | Cost | Link |
---|---|---|
PINECIL V2 | €65 | https://pine64eu.com/product/pinecil-smart-mini-portable-soldering-iron/ |
(Optional) PINEPOWER 65W | €65 | https://pine64eu.com/product/pinepower-65w-gan-portable-power-supply/ |
(Optional) Silicone USB-C to USB-C cable | €9,50 | https://pine64eu.com/product/usb-type-c-to-usb-type-c-silicone-power-charging-cable-1-5-meter/ |
Lead-free solder (0.5 mm) | €4,50 | https://s.click.aliexpress.com/e/_DeT4LSj |
Silicone soldering mat | €2,88 | https://s.click.aliexpress.com/e/_DeifegF |
Soldering helping hands | €5,37 | https://s.click.aliexpress.com/e/_DCFOrET |
Soldering cleaning ball | €1,88 | https://s.click.aliexpress.com/e/_DmVfY03 |
Soldering iron stand | €1,85 | https://s.click.aliexpress.com/e/_DeQo8S7 |
Nippers | €2,12 | https://s.click.aliexpress.com/e/_DemJUUB |
Tweezers | €1,24 | https://s.click.aliexpress.com/e/_DlmSuej |
(Optional) Deburring tool | €10,35 | https://s.click.aliexpress.com/e/_DBMOt3D |
(Optional) Desoldering pump | €6,86 | https://s.click.aliexpress.com/e/_Ddp6FeJ |
Cost estimate: ~180 €
Feel free to choose another soldering iron, although I’d skip the cheap 10€ ones on AliExpress, as I had a pretty bad experience with them. From my research, the PINECIL V2 seemed to be one of the best value for the money.
The PINEPOWER is optional, I tested the PINECIL with a regular ThinkPad 65W USB-C charger and it worked fine. I ended up buying the PINEPOWER anyway as it came with many international plugs, so it has become my travel charger. If you’re looking for a cheaper charger, I’d suggest some other GaN charger from Ugreen, Baseus or Essager or even a regular USB-C laptop charger.
The silicone USB-C cable is also much softer and flexible, and I believe also more heat resistant for when I’m soldering.
I prefer using a lead-free solder for peace of mind, as normal solder has lead which is toxic. If you do use normal lead solder, make sure to wash your hands properly afterwards. I also find it helpful to use the thinnest solder wire possible, especially when starting out.
Also, be sure to be in a well ventilated room when soldering. Even the lead-free solder lets out rosin flux fumes, which are harmful to breathe in. Ideally, have a ventilator pulling out the fumes, have the window open and hold your breath while the fumes are coming out.
Soldering helping hands are useful for soldering the wires to the Pro Micro and to the TRRS connector but they are not strictly necessary.
A deburring tool is specially helpful to remove brims from printed parts, if you use that option to increase bed adhesion.
Extracting copper wire from Ethernet cables #
Here’s a small video on how to get copper wire from an old ethernet cable.
3D printed parts #
STLs #
STLs are types of files which hold 3D objects, like JPEG and PNG hold 2D images. These files will then be processed by a slicer, which will translate the 3D object into the sequence of instructions that the printer will do to produce it. If using a print-on-demand-service, you’ll provide them with the STL files.
The STL files for the Dactyl ManuForm can be generated on the Dactyl Keyboard Configurator website.
And here are the links for the parts that I’ll be using in this log (a regular Dactyl ManuForm 4x5):
- Top Left
- Top Right
- Bottom Left
- Bottom Right
- Pro Micro Holder (download only the
promicroholder.stl
file)
Click the “Download Model” button to download each STL file.
All files will be downloaded as model.stl
so it can be useful to rename each one accordingly (e.g. top_left.stl
).
The holder should be printed twice: once normally and once mirrored, so the holes for the TRRS socket are both turned inside in both halfs. For example, to mirror the object on Orca Slicer, right-click the object > mirror > X axis (and check that it mirrored as you expected).
In general, I can recommend using Orca Slicer as a slicer software. It’s generally easy to use and has good defaults.
However, I do change some of the defaults to the following:
- 3 wall loops
- Supports:
- Tree Organic Supports
- On build plate only
- Walls printing order: inner/outer/inner
- Wall generator: Arachne
- Don’t slow down for overhangs
And I also go through the Orca calibration steps for every new filament.
Finally, on my Qidi printer, I also set up custom G-code for “heat soaking”, so that the adaptive mesh calibration is more accurate and results in better first layers.
Option 1: Print them yourself #
3D printer #
As I said before, I ended up buying a 3D printer for this project.
In my research, I concluded that for this type of project I was better off with an FDM 3D printer instead of resin. Resin seems more appropriate for small and high resolution prints, like printing pieces for board games. It also seems that many resins used for this are actually poisonous/toxic, so I’d like to avoid that as well.
In the FDM 3D printing scene, it seemed that Klipper firmware support for high-speed printing was an increasingly important aspect. I can’t imagine how long it would take to print these keyboards on a more old-school style printer such as an Ender 3, as in my “fast” printer they still take more than 6 hours to print.
The one I went with was a Qidi Tech X-Smart 3 3D printer, for which I paid around 350€. It has klipper support, and its firmware is open-source.
It also has an enclosure, which allows it to print more advanced materials which require a higher and stable chamber temperature, like ABS and ASA. However, because these filaments let out bad smelling fumes at best, and toxic gases at worst, I’d like to avoid them, as I use my printer in my bedroom.
Along with having an enclosure, it also has a Core XY design, instead of the usual bed slinger design. This supposedly means that it can more easily print tall complex designs, without tripping over the print. By comparison, bed slingers work by moving the print around, which can shake it if it’s tall and flexible, which can result in worse quality or failed prints. However, all I’m really printing is small objects and these keyboards, which are not very tall, so a bed slinger would work fine.
I’d read on many forums that Qidi’s customer support was excellent, so that was also a factor in my decision.
But if I were deciding to buy a 3D printer now, I’d buy the Bambu Lab A1 Mini instead. As of July 2024, it costs just over 200€, which is a ridiculous deal.
Because I only print PLA and PETG, I always have to keep the door open and top cover off of my Qidi printer open anyway, so I would gladly give the Core XY and enclosure up for full auto-calibration (including Z-offset and flow rate) and much more silent operation instead.
However, I should note that many are suspicious of Bambu Lab’s practices when it comes to open-source and transparency. Although they do respect the GPL license in projects like PrusaSlicer, they prefer to keep all components they can proprietary, like the printer connectivity module and the printer’s firmware. To their defense, they claim to be doing this to avoid their competition straight up just copying their work in the usual race to the bottom, which I can understand.
Filament #
As for choice of filament, I would mostly suggest keeping to PLA and perhaps PETG.
In the context of making custom keyboards, I don’t think printing with more advanced filaments like ABS, ASA or Nylon is worth it. This is due to the difficulty of printing these filaments and also the nasty fumes they let out when printing, which are especially worrying in a more hobbyist/home setting.
PLA is the starting filament of choice for beginners and for good reason, as it’s one of the most forgiving when printing. Although it’s technically a bioplastic, I don’t that’s very relevant as it only seems to be compostable under industrial conditions.
If it’s not annealed, PLA can soften significantly at 50°C to 60°C.
PETG is petroplastic that’s similar to the PET that’s used in water bottles and can be more appropriate for functional prints than PLA. However, it’s also harder and slower to print. In general, it’s more goopy and ductile and PLA.
In terms of pricing, they’re pretty close and around 20€/kg or sometimes less if ordering in bulk.
também existem umas versões chamadas pla+ ou pla pro que supostamente têm melhores qualidades que pla normal mas nunca experimentei
pla, se nao for annealed, amolece a 50-60 graus (por exemplo, se ficar num carro fechado ao sol)
recomendaria petg
(comentar que li que a sunlu é quem produz os filamentos vendidos com a marca bambu lab e também faz marca branca (whitelabel) para umas outras marcas)
For filament, I went with a local Portuguese brand that was on sale. I bought 10 spools of 1KG White PETG, for 13€ per spool. I later came to realise that this was a bit much and it also was a real pain to start printing decently, as the preset profiles really weren’t working well with this filament.
If I were choosing something else, I’d (sunlu petg aliexpress ou site deles, se tiver promocao (por aliexpress com affiliate no BOM))
- gryoid infill, especialmente importante para petg (para o nozzle nao cruzar/tropecer no que ja esta impresso)
- 15% infill parece chegar
- petg (é mais ductil que pla; pla pode rachar se cair ao chao; pla deforma-se a cerca de 50 graus celsius)
- 3 walls (isto é mais importante que infill para dar forca; tambem fica mais clean)
- tree/organic supports (mais faceis de tirar e menos filamento)
- deixo ligados os rabbit hears/brims (automaticos) do orca-slicer se ele achar que vai ajudar com bed adhesion; depois tiro com uma deburring tool (por como opcional no BoM)
(falar do printing on demand) (1kg deve chegar para um teclado) #
tenho comecado a ter algumas dores de pulso e nos dedos
ja aprendi colemak-dh
nao foi trivial aprender a fazer o teclado, portanto pretendo reunir neste post o maximo que consigo e que me lembro, para ser mais facil para quem queira experimentar
Option 2: 3D print-on-demand #
(simular custos com os paremetros que eu disse)
imprimir #
ou comprar impressora para isto, como eu fiz, ou mandar imprimir (link)
eu tenho uma qidi x-smart 3 mas recomendaria uma bambu lab a1 mini, extraordinário bang for buck, especialmente se for só para imprimir pla e petg
imprimi em petg porque pla pode amolecer se levar com sol direto e pode partir quando cai ao chão; petg é um bocado mais chato de imprimir mas é mais robusto para estas coisas
(tucab petg? sunlu petg (affiliate?)?)
tenho impresso só com 20% infill e gryoid infill, 3 walls/perimeters
fotos das partes sem nada
switches #
outemu silent cream yellow sao excelentes silenciosos
quero silenciosos depois de muita experiencia
muitas vezes o teclado faz barulho e estamos de fones, as vezes noise cancelling; chateia quem nos rodeia, nao quero
foto dos switches nas cenas; foto da orientacao dos switches visto de dentro (de um, so para ver se é de pernas para o ar)
é preciso um bocado de força mas convém que eles fiquem bem postos
dobrar diodes #
fotos/videos
não esquecer que o diode não é simétrico, todo o objetivo é só deixar passar corrente para um dos lados
na dobra, parte preta para baixo e vermelha para cima
(vídeo)
fazer isto para todos os diodes, no meu caso, x46
(affiliate link para diodes e para tweezers?; ter seccao no bill of materials chamado tools: tweezers, pliers)
cortar diodes #
(foto)
cuidado com a vista que as pernas podem saltar para os olhos
(foto)
(affiliate link pliers)
fazer as rows ao soldar diodes à perna mais alta #
uso um pinecil v2, estava com dificuldade a usar um ferro genérico mas provavelmente foi skill issue: ter sempre um bocado de solda na ponta do ferro senão a oxidação não deixa derretar a solda/passar o calor; ou seja, esfregar com esponja/palha de aço/papel molhado e por logo um bocado de solda na ponta
por aquela foto guideline soldar (encontrar: reddit? https://www.gaudi.ch/OpenTheremin/index.php/28-faqs/current-users/192-soldering-joint-quality-chart)
eu faço rows de fora para dentro
ter desenho das rows e das columns; fazer no paint.net se for preciso (ver inspiracao de outros guias)
(video a soldar ao switch)
procurar logo posicionar o diode de modo a que a perna chegue ao proximo diode
(video a soldar uns aos outros)
não ligo o último switch dado que quero ligar lá um fio que depois vai ligar ao pro micro
dizer que descarno assim porque assim nao corto nem parto fios com a tesoura
(video a ligar parte final a fio - ter parte de descarnar fio antes desta parte; talvez na “preparacao”, junto ao imprimi r)
(tapete de soldar tambem e ferramenta)
fios #
descarnei cabos ethernet antigos, funciona bem que chegue
enrolo onde quero soldar e deixo que o ferro derreta o plastico para expor o metal, que fica soldado
holder #
falar dos holders que ja experimentei
imprimir um mirrored
(…)
- tenho de partir holder e por com cola quente
- deixo parte de cima das tampas como parte de baixo dos teclados para ficar mais clean
- bill of materials de tudo, affiliate aliexpress
- mostrar eu a descarnar cabo ethernet (agarrar um com clips partidos da sala)
- mostrar mesmo tudo tudo, inclusive eu a soldar; tirar foto a todos os passos, há muita que pode não parecer óbvia
- não esquecer de fazer metadata cleaner de tudo; também tirar o audio de todos os videos
- comprei solda sem chumbo no ali; cuidado para nao respirar o <nome do gás> que sai da solda que faz mal, procurar ventilar o quarto onde se está a soldar
- cuidado que lado em que se poe o diode é diferente de cada lado
- ter diagram de wiring (teclados e pro micro)
- por soldering helping hands no bill of materials
- por link para o pro micro holder que funcionou melhor para mim ate agora
- idealmente modificar esse para realmente caber lá o pro micro (entrada usb-c + pro micro sem ter de cortar)
- fixo com cola quente na mesma; ligo os cabos trrs e usb-c para ficar alinhado quando estou a colar
- é preciso imprimir um normal e um mirrored (trrs para dentro)
- cuidado para ligar trrs antes de ligar o usb-c senao pode dar curto-circuito, pelo que li (mas ainda nao me aconteceu nada de mal)
- cuidado ao derreter o isolamento para nao derreter o que toca nos diodes, levantar depois de soldar (fazer video)
- heat set inserts
- cuidado para nao queimar depois de por
- procurar que fiquem rasos e sem estar protruding
- (video de por um + fotos finais)
- ligar pro micro
- ter diagram de rows, colunas, pro micro e trrs
- soldering helping hands dao jeito
- testar sozinho (qmk flash, por comandos (especialmente cena das metades))
- explicar como ligar qmk em nixos, que é fazer qmk setup e depois qmk flash (…)
- qmk tester site (mostrar no video)
- mostrar como fazer reset: fazer video de ligar, fazer comando, fazer reset, ver no stie
- ligar trrs
- testar o conjunto
- por no holder
- cortar holder
- cola quente
- fechar tampa com parafusos
- rubber feet nas tampas
- tirar audio dos videos; acelerar/cortar video do qmk
- vender sempre os teclados com via, inclusive ja este (aparentemente da para por via em tudo o que suporta qmk; assim nao tenho de distribuir o meu qmk diferente e o pessoal nao tem de dar flash e etc, e so ir ao site do via)
- por no anuncio do olx e depois no etsy que tem pro micro como microcontrolador
- incluir video no fim do blog post de eu a escrever neste teclado no monkey type em colemak dh
- para fazer flash do teclado sem o abrir para tocar no pro micro, e preciso ativar no keyboard.json o bootmagic, que vem desligado por defaultt (sugiro ligar); assim, depois de flashar cada um individualmente uma vez (para definir handedness e ligar o bootmagic), basta ter os dois ligados por trrs, fazer o flash no terminal sem a parte do left/right e ligar o esquerdo enquanto se carrega na tecla superior esquerda (neste caso, provavelmente a letra q) ja com o qmk flash a espera do reset; ele assim vai fazer reset e fazer flash a ambas as partes sem ter de o abrir
da para fazer flash do teclado sem o abrir para tocar no pro micro; e ligar ao usb-c ao ficar a carregar a tecla do canto superior esquerdo (com os dois ligados?) -> nao funcionou de todo, tive de abrir; na realidade, mostrar no blog post como por logo com via
- isto porque o bootmagic esta desligado na config default do dactyl, bem podre: https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/dactyl_manuform/4x5/keyboard.json#L18
- sugerir por isto a true para nao terem de estar sempre a abrir o teclado (experimentar)
- isto porque o bootmagic esta desligado na config default do dactyl, bem podre: https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/dactyl_manuform/4x5/keyboard.json#L18
- no bom tambem por:
- solder sucker
- heat set inserts
- parafusos
- rubber feet
- cola quente
- trrs socket
- trrs cable
- usb-c cable
- pro micro
- diodes
- fio (cabos ethernet)
- switches
- caps
- impressora 3d + filamento
antes de vender, falta:
- (done) por as caps
- (done) flashar vial (e talvez comentar isso no post)
- (done) fotos finais
- (done) video de mim a teclar no monkeytype em colemak-dh (neste video posso deixar o som ligado, cuidado para nao haver nada sensivel (avioes, passwords -> rever com atencao antes de publicar; todos os outros, tirar audio; tirar metadados em todos, naturalmente))
- por as definicoes de menos input lag; ter seccao sobre isso no post e fazer a tangente de que input lag está pior que o apple ii (dizer que xorg tem menos input lag por poder nao ter vsync se nao usar compositor; que uso st para ter menos input lag; portanto tambem quero ter o qmk a fazer o minimo de input lag (link post do gajo do i3))
como criar suporte para via: https://www.youtube.com/watch?v=7d5yzBOup9U
- duplicar default keymap para um chamado via
- mudar/criar rules.mk
nao quero via, vial é mais fixe: https://www.youtube.com/watch?v=O8pdUPqPG3k (provavelmente vou ter de seguir este guia se quiser criar suporte para dactyl_cc ou lil chonky bois; manteria um fork do repo na minha conta)
- vial.rocks webui
- fork com mais features e melhor em geral
- mais just works, auto-detects (via falha muito no detect; mais facil de dar setup de raiz (via tem cenas de vendor id, product id, etc.)); unico maior problema do vial é ser um repo diferente do upstream qmk
- é fazer clone do vial-qmk repo (em vez do qmk upstream)
- make git-submodules
- ir a diretoria do teclado, duplicar default keymap para vial
- criar vial.json nesse novo keymap
-
boilerplate
{ "matrix": { "rows": 0, "cols": 0 }, "layouts": { "keymap": } }
preencher numero de rows, numeros de columns e layout do http://www.keyboard-layout-editor.com/ dentro de [] no keymap -> ver se ha forma de automatizar isto a partir do info.json do teclado que ja vem no qmk
- usar o keyboard-layout-editor https://get.vial.today/docs/porting-to-via.html ; isto e candidato ainda melhor a fazer um programa para resolver; pegar no layout do qmk e transformar para este formato com common lisp; para ja vou pegar no dactyl manuform 5x6 e ajustar; talvez contribuir o do 4x5
na realidade, descomplicar; peguei no do 5x6 (https://github.com/vial-kb/vial-qmk/blob/vial/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/vial.json) e ajustei manualmente:
(atualizar este json quando funcionar)
{ "lighting": "none", "matrix": {"rows": 10, "cols": 5}, "layouts": { "keymap": [ ["0,0","0,1","0,2","0,3","0,4"], ["1,0","1,1","1,2","1,3","1,4"], ["2,0","2,1","2,2","2,3","2,4"], [{"x": 10, "y": -3}, "5,4","5,3","5,2","5,1","5,0"], [{"x": 10}, "6,4","6,3","6,2","6,1","6,0"], [{"x": 10}, "7,4","7,3","7,2","7,1","7,0"], [{"x": 1 }, "3,1", "3,2"], [{"x": 3 }, "3,3", "3,4"], [{"x": 5 }, "4,4", "4,3"], [{"x": 5 }, "4,2", "4,1"], [{"x": 12, "y": -4 }, "8,2", "8,1"], [{"x": 10 }, "8,4", "8,3"], [{"x": 8 }, "9,3", "9,4"], [{"x": 8 }, "9,1", "9,2"] ] } }
- usar o keyboard-layout-editor https://get.vial.today/docs/porting-to-via.html ; isto e candidato ainda melhor a fazer um programa para resolver; pegar no layout do qmk e transformar para este formato com common lisp; para ja vou pegar no dactyl manuform 5x6 e ajustar; talvez contribuir o do 4x5
na realidade, descomplicar; peguei no do 5x6 (https://github.com/vial-kb/vial-qmk/blob/vial/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/vial.json) e ajustei manualmente:
-
(aparentemente rows e cols e ao contrario)
esta a chorar que chamo 4,5 mas e max 10,5
-
no rules.mk desse keymap:
LTO_ENABLE = yes VIA_ENABLE = yes VIAL_ENABLE = yes
(alias, por o resto das opcoes que tambem tenho, especialmente o bootmagic (e o resto para caber))
LTO_ENABLE é util para evitar memory issues (falta de memoria) em pro micros
-
editar keymap.c, tirar quaisquer referencias ao tap dance nativo do qmk (nao se aplica a mim neste caso)
-
setup config.h
python3 util/vial_generate_keyboard_uid.py
- copiar o output para o config.h (debaixo do pragma once)
- definir teclas de unlock para mexer em coisas perigosas: (duas primeiras teclas da esquerda da primeira linha de cima)
#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } #define VIAL_UNLOCK_COMBO_COLS { 0, 1 }
-
finalmente
qmk flash -kb handwired/dactyl_manuform/4x5 -km vial
(ter o teclado desligado; ligar ambas as partes com trrs; ligar cabo usb-c enquanto clico na teclado do canto superior esquerdo da metade esquerda (boot magic))- tive de por mais opcoes no rules.mk para o firmware ficar mais pequeno, nao estava a caber
-
experimentar a webui no vial.rocks (tem de ser em chromium-based, firefox nao da)
References #
- complete idiot’s guide