Toggle navigation
Heuristic42
Blog
Opengl
Meta
Rendering
1
created
May 30 at 5:22
Calling Babel from Django for React+JSX
Sharing my frustrations so you can enjoy them too... :) As...
–
pknowles
edited
May 22 at 18:57
Microsoft Natural Ergonomic 4000 Replacement
![my old natural 4k][1] **They stopped making it!** I'm ac...
–
pknowles
comment
May 22 at 16:00
Prime Mover - Processor (final problem) [Spoilers!]
this should be fixed now
–
pknowles
edited
May 18 at 22:15
Clip Space
Clip space is a linearly dependent vector space between eye s...
–
pknowles
created
May 18 at 21:56
Clip Space
Clip space is a linearly dependent vector space between eye s...
–
pknowles
edited
May 18 at 19:50
Vector Spaces
A number of vector spaces are discussed below and widely used...
–
pknowles
edited
May 18 at 19:43
Projection Matrix
A projection is fundamental to [cameras](/8/rendering/cameras...
–
pknowles
edited
May 18 at 18:32
Matrices
Matrices are 2D arrays of numbers, grouped as such to enable ...
–
pknowles
edited
May 14 at 21:47
DerBard: Custom Split Mechanical Keyboard Prototype
In my last post I talked about a [MS Natural 4K replacement](...
–
pknowles
created
May 14 at 21:46
Matching complex shapes for a custom keyboard in Fusion360
For my [custom mechanical keyboard](/blog/55/derbard-custom-s...
–
pknowles
comment
May 8 at 0:32
Matrices
[deleted]
–
anonymous
comment
May 7 at 23:30
Microsoft Natural Ergonomic 4000 Replacement
Yes indeed :). Thanks for the reminder. I found some time to ...
–
pknowles
created
May 7 at 23:27
DerBard: Custom Split Mechanical Keyboard Prototype
In my last post I talked about a [MS Natural 4K replacement](...
–
pknowles
created
May 7 at 22:32
Anatomy of a custom keyboard
This is my quick summary and background before talking detail...
–
pknowles
comment
Apr 28 at 10:29
Microsoft Natural Ergonomic 4000 Replacement
Any update on this? I'm in the same boat as you are, have bee...
–
anonymous
comment
Mar 5 at 8:16
Matrices
[deleted]
–
anonymous
comment
Jan 4 at 16:45
Microsoft Natural Ergonomic 4000 Replacement
I currently have 3 or 4 Ergo 4Ks and use one almost every day...
–
anonymous
comment
Oct 28 '22
Microsoft Natural Ergonomic 4000 Replacement
Interesting about the Microsoft Ergonomic board! Wish they we...
–
anonymous
comment
Oct 27 '22
Microsoft Natural Ergonomic 4000 Replacement
I'm in the same boat as you. I have 3 Microsoft Ergo 4000s l...
–
anonymous
created
Oct 2 '22
Microsoft Natural Ergonomic 4000 Replacement
![my old natural 4k][1] **They stopped making it!** I'm ac...
–
pknowles
created
Sep 30 '22
PIP and the user directory
This is a quick note about python + pip best practices: ***ne...
–
pknowles
created
Jan 17 '22
Starting KDE plasma wayland with Fedora 35 and nvidia drivers
A quick bit of background: X11 is a compositor and Wayland is...
–
pknowles
comment
Jan 5 '22
Making a real EMF Reader
Wow, It is that famous Ghost buster, isn’t it?. Very unique,...
–
anonymous
edited
Jan 3 '22
Making a real EMF Reader
The game **phasmophobia** by [Kinetic Games](https://kineticg...
–
pknowles
…
View All
Log in
DerBard: Custom Split Mechanical Keyboard Prototype
leave this field blank to prove your humanity
Article title
*
Article revisions must have a non-empty title
Article body
*
In my last post I talked about a [MS Natural 4K replacement](/blog/54/microsoft-natural-ergonomic-4000-replacement/). I eventually decided I was going to build one from "scratch". And here it is in all its glory. I call it "DerBard" and I'm typing this post with it now. ![DerBard Cover Image][1] It's an ergonomic split 65 key keyboard with inbuilt palmrests, backwards tilt and per-key RGB lighting. It's a dream for typing text. Probably because it was designed to match the raised MS Natural 4K that I already love. The left thumb cluster is plain bad and needs redesigning. The redesign is on the right. It's fully programmable with an Arduino ATmega32u4 (Elite-C V4 board), runs QMK, has a 128x32 pixel display, buzzer and animated indicator LEDs that I use to show what layer is active. I'm recycling switches and keycaps from an off-the-shelf board with some clickeys for the modifiers on the thumb clusters. It took 150 hours to design, 3D print, assemble and program... just the left half. The right half took another 80 hours for a project total of 230 hours. Nearly 6 working weeks but spread out from July 2022 to April 2023. The majority of the time by far was design in Fusion360. The following is the story, mistakes and lots of learning along the way. I'd like to showcase the work, because it took ages. Maybe it helps someone else out there doing something similar. A few things set this apart from other designs I've seen: 1. I attempted to match the shape of the MS Natural 4K by scanning it. <img src="https://img.heuristic42.com/img/d0dbb0dc35c3.jpg" width="180" /> 3. The board is not flat and I used 1x1 PCBs mounted in a 3D printed plate to do it. <img src="https://lh3.googleusercontent.com/pw/AJFCJaWckgdZQH9ipQ49A1F3YNJvoal3xo6G-07DEJZlJaWQDpbAhmFwAZksot5Fgac5_uzKO7U8SncZ8oZR8yDjjbpAM-TPytXqDcwkmdGCd2XLVmHMOLq6tNKQUmaqFa_V0GzevoS-k1SH_aP5XIT__uNZ-Q=w2584-h1946-s-no" width="180" /> 4. The right hand half uses a GPIO extender instead of a second microcontroller. 5. Per-key RGB. Not practical, but it was fun. **Table of contents** - [Custom Keyboard Background](#custom-keyboard-background) - [Design](#design) - [Mounting the switches](#mounting-the-switches) - [Shape](#shape) - [Modelling](#modelling) - [Assembly](#assembly) - [Software](#software) # Custom Keyboard Background This is my quick summary and background of custom mechanical keyboards before talking keyboard details. It was so quick I had to split it out to a separate page: [**Anatomy of a custom keyboard**](/blog/56/anatomy-of-a-custom-keyboard/) # Design These were my broad stroke starting points: - [How do I mount the keys?](#mounting-the-switches) - [What shape will the keyboard have?](#shape) - [What shape will the keyboard have?](#shape) ## Mounting the switches By now I'd been browsing [r/MechanicalKeyboards/](https://www.reddit.com/r/MechanicalKeyboards/) for some time and could see I had some options. It seemed like most people were buying PCBs and plates from [keeb.io](https://keeb.io/collections/split-keyboards). PCBs didn't work for me as the whole point of this project was not to make a non-flat [MS Natural 4K replacement](/blog/54/microsoft-natural-ergonomic-4000-replacement/). Actually there is one caveat here --- keycaps come in different heights (e.g. you'll find function keys at the top are often taller) and a coleague at work showed me you can get a good curve even by gluing on some Lego shims. I was rather inspired by [Dactyl](https://github.com/adereth/dactyl-keyboard) in how a whole board could be 3D printed minus wiring the switches to a microcontroller. I highly recommend the [talk](https://www.youtube.com/watch?v=uk3A41U0iO4). Many people don't even bother with a flexible PCB and solder diodes and wires directly to the switches. One rather eye-catching project was a [Dactyl Manuform with hot-swappable sockets](https://arnmk.com/building-a-dactyl-manuform-with-hot-swappable-sockets/). This is where I *thought* I'd start. I recently bought a CR-10 printer and started learning Fusion360. My plan was to design a keyboard just like dactyl in that the shape could be quite organic. The starting point for designing a switch mount was [this video](https://www.youtube.com/watch?v=scoX8NZv4MI) by Bastard Keyboards. The reminder to print test pieces along the way is a great tip! [RGB lighting](/blog/56/anatomy-of-a-custom-keyboard/#lighting) is just a gimmick and doesn't really make you type faster. I'm kidding, of course my eyes got the better of me. I'll have some of that! I eventually stumbled upon 1x1 NeoKey PCBs. ![NeoKey PCBs][2] Pre-assembled socket + diode + RGB LED PCBs with convenient connections to adjacent ones. Not super cheap mind you, but convenient enough for what I'm getting. I found you can buy them in [5x5 snap-apart grids](https://www.adafruit.com/product/5157). Three sets for $90 + postage and that's just the start. Fair warning: you don't want to run the LEDs at full power unless you have a 20% size keyboard.  I spent quite some time figuring out the design for the individual key holders. I'll probably write a separate post just for those. There's actually two parts. The top is thick, simple and does the job of actually holding the key. The PCBs sit just underneath. There's space for the wiring between them. The tricky bit is the only space between the PCBs is at their corners. I designed some posts that: - Are only loosely connected at the tip so the whole holder can be printed in one go and snapped apart - Hold the PCBs in place with a friction fit while I solder them --- the primary purpose - Align the bottom of the key holders - Keep the top in rigid contact with the bottom and transfers force --- the PCBs are actually floating - Are replaced by a few screws in key locations to stop the top falling off  After trying them out I'm pretty happy with the result. That said, there probably isn't any other way to work with the PCBs. After printing both sides a few posts did break at the wrong place, but they were easy enough to glue back. ## Shape Again, I'm making a [MS Natural 4K replacement](/blog/54/microsoft-natural-ergonomic-4000-replacement/), so I need to hammer down the shape of the keys. ![My old MS Natural 4K][3] Naturally I took my years of keyboard design and human physiology experience and... lol, I don't have any of that. So I found this photogrammetry software, [Meshroom](https://alicevision.org/#meshroom). Just with my phone I took some photos of my old natural 4k and used Meshroom to create a 3D model of it. The ease of use of this software out of the box is just incredible. Drag in the images, click go and wait. It's even textured so you can see where I've worn through the palmrests. Actually this was quite helpful later. ![Photogrammetry Capture][4] Getting this into Fusion360 was a story in itself. See [Matching complex shapes for a custom keyboard in Fusion360](https://www.heuristic42.com/blog/57/matching-complex-shapes-for-a-custom-keyboard-in-fusion360/). <img src="https://lh3.googleusercontent.com/pw/AJFCJaVOrYpa8VJIo1lL_s2YwdqufXVYpcrlI9RbBNc6V3zk5nKgHrgWGF7bDCVt9QuJ9SCrrGkk-Pola8xusndCd8HuQJry2zqpabYnRNvVljkBPSkYz8Gvmjm3siG8aaLGCUCubMgEXGTkxrFu8_xHWNobcw=w1721-h1359-s-no" height="250" /> <img src="https://lh3.googleusercontent.com/pw/AJFCJaXond_oitAMh7OjcQGhGj9uGgwboZdXgrXR6ZYhwbSF7PgpJtRDvVTZ4gZV8MlD6OylTp-JLIzKBmcoZkYS2BT97yaeOs2_uFdS4hiWikLoZsOjKjF3uzz6nwW_2aRYoTlijcHwKTfib2_f53fH20RxdQ=w1808-h1146-s-no" height="250" /> Finally I had the main board layout designed. I did manually tweak the orientation of the key holders, smoothing the transitions between each one. It was quite important to create some fake switch and keycap geometry to verify they had clearance. Joining the individual key holders wasn't so straight forward. I tried two ways: 1. I made each holder over-sized and then boolean unioned them together. Some geometry did interfere, so I went back in the timeline to before the union and subtraced extrusions from the top faces of each key holder from the neighboring keys. The mesh geometry looked a little messy but it wasn't really a problem after printing. 2. For the right half I tried under-sizing the key holders and lofting them together. Don't do this. Fusion360 can't take it and would freeze for 10s of seconds if you sneezed or looked at it funny. Lofts also fail if the start/end doesn't face each other perfectly and it's much more fiddly. (Enough writing for the day. To be continued...) # Modelling TODO # Assembly TODO # Software TODO [1]: https://img.heuristic42.com/img/63ca4e6ab5e4.jpg [2]: https://img.heuristic42.com/img/aa3cf8699a7e.jpg [3]: https://img.heuristic42.com/img/86b71fbeecb5.jpg [4]: https://img.heuristic42.com/img/d0dbb0dc35c3.jpg
Toggle Preview
Edit message
*
A description of the changes made
Discard Draft
Save Draft
leave this field blank to prove your humanity
×
Flag
the thing you clicked
for moderator attention.
Reason choice:
Spam, promoting, advertising without disclosure
Rude, inappropriate, generally offensive
Too arrogant or demeaning to others
Other
Reason:
The reason for raising the flag
×
Error
Error failed to load