[Gosse Adema] has been poking a Microsoft Natural Elite for the last 20 years, and the curvy old girl is about to give out. Looks like he got bit pretty hard by the DIY mechanical keyboard bug in his quest to replace her. Luckily for us, he documented his build.
Where do we start? A first keeb is decently-sized undertaking, but [Gosse] turned it up a notch and made it as low-profile as he could — it’s 2cm thick with the keycaps on. This ultimately meant designing the board such that the anti-ghosting diodes sit inside a cutout underneath their respective switches, which are low-profile Cherry MX Reds. There is no Eagle template for those yet, so [Gosse] whipped one up and milled a prototype PCB before deciding to go the fab route.
The Raspberry Pi Zero W that controls this keeb lives in a separate controller box in the name of slimness. If you are as-yet unimpressed by this build for some reason, [Gosse] even rolled his own firmware, which he explains as part of this epic journey. Seems the only thing he didn’t do was mold his own keycaps, but not everyone wants to type on blanks. We wonder if [Gosse] is aware of the terrifically low-slung Kailh choc switches, although prefab keycap options for those are even more limited.
Speaking of, here’s a tasty choc-filled game pad.
Dude! That’s almost commercial quality! I love seeing DIY projects like this that become real usable things, not just junk bin filler.
I’m still using two Microsoft Natural Keyboard Pros and they must be almost 20 years old now. I’ve thought about creating my own ergonomic keyboard but the biggest issue has always been the keycaps. I like the arrangement on the Microsoft ergonomic keyboards and the keys aren’t in straight rows. Unfortunately that means the keycaps aren’t square/rectangular like the regular keycap sets you can buy.
I love that the angle can be adjusted just by moving the halves, or put together seamlessly to form a more traditional layout.
Using a RPi0 to handle keystates is like using an upside down helicopter turbine to cut grass. The most weirdest thing though, is that using an RPi0 is probably 5x cheaper to use than to implement a singular microcontroller on there.
If he would have just checked around the mechanical keyboard community he could have had something much more like the ms natural with way less work and heartache. This project is way overbuilt and underbuilt at the same time. QMK has 100% of the features he wants and requires a pro-micro
OTOH I had 3 old Pi sitting doing nothing. One is now my DHCP server mostly just to get IPv6 on my LAN bc the old DSL router wasn’t properly upgradable and I’m trying to find a use for the other 2.
Also a pandaboard, a beagleboard, an OpenPandora and a GPD Win 1st gen that are also begging to do something useful again.
I’m sure lots HaD readers have a lot of overkill otherwise-e-waste-might-as-well-use-it laying around.
I always wanted to have the frogpad witch is sold out since several years, but hey, when I look at this…. why not build one….
witch = wich
wich = which
which = sandwich
damnitch
Why is it controlled by a pi? Not meant as a criticism, just never seen that before. Wondering what the calculus is.
And I guess a follow-up: Does the keyboard take time to boot?
Looking in the article, he’s using Raspbian on the Pi so it does take time to boot. The Pi zeros have OTG-USB support and can be configured as a usb gadget. Most of the time you see tutorials on how to use that to get serial or ethernet connections to it but setting it up to appear as a keyboard is possible too. He should just get a Teensy and one of the keyboard firmwares for that.
Does the Teensy still have a binary blob for a bootloader? If so, I suggest going with Arduino Due or Arduino Leonardo/Pro Micro.
Could you elaborate on that? Are you concerned about say a keylogger hidden in that binary blob?
Yeah, teensies is what I’ve always used. Was wondering if there were any novel functionalities making use of a keyboard running linux. Like it would be cool if the HDMI port was exposed or even if it had a built-in screen (maybe on the third module where the pi is) and you could have a KVM switch built-in that swapped between the connected computer and the internal one, so you could have a small linux computer for doing small tasks like web browsing without tasking your main computer with it.. I dunno.
Well I was thinking of doing something similar. Though I was going to read all the HID inputs with a teensy as its good for ‘realtime’ and use the Pi Zero W as both the onboard computer with a little screen for things like remote controlling media PC, ssh and other such small terminal stuff and also to use the Pi Zero to convert it to a bluetooth keyboard/joystick/mouse combo device.
Still reading and testing the bluetooth stuff as Bluez documentation sucks. Its basically read though all the source code and the bluetooth SIG documentation to figure out how it should be working…
There are binary size limitations with (for example) qmk firmwares in teensy micros, a pi would have vastly more space available and not require any custom boards.
I love these builds but I’m always disappointed when they include a Pi Zero. Why? There are so many micro-controllers which have a USB interface and code ready to go – why develop with something as over-priced, complex as the Pi? Especially as the solution has custom PCBs in there already?? He could have saved himself the external device, kept it to two parts and put a simple connective cable between the one with the micro controller and the daughter keyboard half.
A really excellent quality build spoiled, imho, by the use of a part which is better suited to other applications.
sometimes you just use the hammer you have, even if its not the best hammer for the job.
And sometimes there is method to the ‘madness’ not readily apparent. Could be he has a use in mind that wants the computing power of a Pi as well.
Why use a pi zero? Why not? Is not using devices in unique ways the foundation on which this blog was built? There might be “better” options out there, but getting caught up on the “best” way to do things is boring. I much rather read about people using devices in interesting ways than a endless stream of promicro keyboards with different physical layouts. Give me the odd ducks.
It looks nice, but a separate control box really kills it for me. I handwired a variant on the medidox layout using chocs, doesn’t have a separate ‘control box’, and it’s 14mm high. One of my kids seems to have absconded with the left side though…
This needs to exist as a real product.
Enhancements would be linking one side to the other side instead of both to the control box, and embedding the logic there – you don’t need a Pi for this surely, and STM32 or similar should suffice?
There are various keyboards pretty close to this. I like the Quefrency ( https://keeb.io/products/quefrency-60-65-split-staggered-keyboard?variant=16032981385310 ) which is a kitset with options for extra columns on the left and right.
There is a while rabbit hole of split ergonomic keyboards. http://keeb.io and http://gboards.ca are two places I’m familiar with.
Yep, lots of room to explore if you want to venture further away from the MS Natural. My personal progression has been MS Natural (several versions) -> VE.A clone -> Redox -> CRKBD.
OP is interesting to me in that it’s the first time I’ve seen the new low profile MX switches used. If they had a tactile version I’d be keen to try a board out with them.
While I question the use of a Raspberry Pi, it’d be cool if, when not connected to another computer the keyboard acted as an input for the Pi. Add a screen and your keyboard is a computer.
Pi zeros are $5 a pop at Microcenter, I’ve got more sitting around on my bench than I know what to do with.
I realize not everybody has that option, and while I agree it’s overkill, I can see how I might make the same decision myself.
Welcome to 2020, when your keyboard takes longer to boot than your computer….
…but both are so fast that it doesn’t matter.
Even my 15 year old netbook boots much faster than a Raspberry Pi, I’d need to wait for the keyboard to boot up to be able to login.