A complete guide to building a hand-wired keyboard (2020)(crackedthecode.co) |
A complete guide to building a hand-wired keyboard (2020)(crackedthecode.co) |
If you can do CAD you can probably also design a PCB with a socket for some kind of general purpose MCU or even one of ready-made keyboard controllers.
Through-hole soldering is IMO actually simpler than making these "spiders" (that's how in my country we call circuits with self-supported wire to wire joints, usually with at least some components hanging in air by their leads).
"Spiders" are prone to breaking with any repeatable mechanical strain. In case of this keyboard, what I am seeing is the plastic board will flex and will put repeatable strain on the wires, possibly leading to malfunction at some point. PCB would be much more reliable (if done correctly) as it would take most or all of the load from the joints.
A thicker PCB board would actually be more stiff than the plastic board you have here. Not only materials of PCBs tend to be very tough, the PCB, being below the level of the switches, would need much less cutouts that are weakening your plastic mounting board.
Stiffness of the board the switches are mounted to is important not just for the reliability, but also for the overall feel of the mechanical keyboard. This "feel" is mainly affected by the switches, the stiffness of the board, and the acoustics of the enclosure.
And lastly, as an amateur EE I find "spiders" appealing (if done nicely, artfully). But if you want to showoff for the larger audience that just "don't get it", a custom PCB would immediately score more points.
I've found the happy medium with single-switch PCBs ("Amoeba" is a popular one), which are fast and easy to wire up. Most notably you don't have to do the painstaking row wire stripping -- just use a plain wire from one PCB to the next in the key matrix (or an insulated wire if you have to traverse other components, which still only requires two stripped ends).
I have a few pictures floating around from my build(s) if that interests anyone.
The main idea was to get a keyboard with built in steno and ability to get programmed any way I want. It would also have a small built in OLED display to aid some of the functionality.
Another idea was to have built in mouse (trackpoint + keys that can be used as mouse keys).
If you really want to do it without a chinese PCB manufacturer, you can do it on a perf board ( https://en.wikipedia.org/wiki/Perfboard ). If you have more GPIOs than keys (eg when building a very cheap steam deck with 9/12 keys), you don't even need any kind of "matrix" multiplexing, and you can just connect the keys to individual gpio pins. If you take a better microcontroller than a teensy, you also get bluetooth (and wifi) capabilities, like with eg. esp32 (~$5 on aliexpress).
But either way, doing fun electronics, be it on a pcb or when soldering "in the air" is a lot better waste of money and time than many other things most people do.
Ultimately it's probably better to have a triple-layer for the keyboard from what I can see. The faceplate that the switches are mounted on, the PCB and then the back plate. Could probably sandwich it all together easily.
There's nothing wrong with dead bug though but on this scale and reliability requirements and mechanical stress, it's the wrong solution for the problem.
"Dead bug" is referring to mounting chips on their back with wires connected to leads going in all directions. Hence "dead" -- live bugs don't usually spend time laying on their backs. When you see it you immediately know why it is called "dead bug"...
Here, this is how it looks like: http://dangerousprototypes.com/blog/2012/11/15/fine-pitch-bg...
This technique is usually used to connect to leads of packages that usually have their leads hidden on the bottom of the package (for example BGA). These packages usually require a PCB made for them or some kind of adapter. They also require a bit more complex soldering process that might be just out of reach of an enthusiast (like good hot air station or reflow oven, etc.) If you find yourself with a component you want to quickly test and don't have an adapter... you improvise and this may result in a dead bug. I did it a lot of times myself.
This technique is also sometimes used in production where they have an existing through hole board (or other board that is incompatible with the process required to mount the component). Sometimes it is easier to just "dead bug" the component than redesign entire board for the new process.
I fried many of them, because my soldering skills were not that good, I did not read the data sheet and so my iron was too hot and I soldered them for too long. Plus by using short wires, all the heat transferred into that fragile glass body.
I think the only thing I would do differently now is to dump QMK and use KMK instead as it's Circuit Python based which means that the firmware can be created and edited directly with your favourite IDE (QMK requires installing all sorts of extra software and compiling etc). If the Microcontroller ever dies on this board I will definitely swap it out for a CircuitPython compatible alternative!
I buy the Logitech ergonomic mice and keyboards and call it a day, because they save my wrists but aren't crazy, are easy to buy off the shelf, and integrate well together. For example, I use two different mice and a keyboard across two computers with a single USB receiver with just a simple KVM built-in to my monitor.
In my personal experience with computers, the keyboard is the least limiting factor with regards to my interaction.
So I started to actually create my own. And I want it to be programmable. And movable, as in you can move the key around, enlarge or shrink them. And when I say I want them programmable I meant to pull a little gizmo out of it, hook it up to a separate power source and load preset or connect to computer and use an app to make the keys look different.
So far my idea is to have each key include a magnet, an ESP32 chip and a small LED screen on top of it. The controller to all those 110+ ESP32 chips will be a RPi CM4 module, which will also be the USB connection for the PC. That's one iteration because this way I can actually have a click-clack mechanical one. The other iteration is to just have a big ass touch screen and the RPI underneath to just play that as an app that simulates the keyboard. Prettier, way more customizable as key positions/size go but no click-clack sound/feeling.
I'm $2000 in my research hole for this with nothing to show up for but is fun. Probably next year I'll finish it :)
However, I would love to have your software-defined visually configurable keyboard as a second one on my table and every app using it as a sorg of a "toolbar" / command palette. This was what Apple tried sort of (it would have been nice idea if they didn't sacrifice a real keys row for it). To me it sounds like an additional display with touch support can do the job.
The "keep hands on home row" is the motivation behind omitting the "unnecessary" keys, at least for the keyboards which use a small spacebar and give the thumbs more keys to use.
With those small 36-key keyboards, your hands pretty much have nowhere to go except to remain on home row.
> as many keys as possible
I once saw someone made a keyboard with 450 keys. https://relivesight.com/projects/433/
I switched to a OLKB Preonic over a year ago and haven't looked back.
After you get used to the smaller factor and non staggered keys format you realize how ridiculously and unnecessarily huge and clunky traditional keyboards are, even laptop keyboards.
It's like traveling with a 65 liters bag for years before you learn you can just carry a 40L and travel with less crap and much lighter.
It took me a couple of months to come up with the layout that worked for me (and even today I still optimizing it), but once I figured it out the typing experience became just such much better.
The QMK configuration tool makes the process of configuring the layout painless and super quick, so you just need the patience to try and iterate.
I ended up getting the keychron v6, it's wired but fine. Their wireless keyboards are apparently a bit buggy, not sure if the new ones still are.
QMK is an absolute treasure. You can use your web UI to setup custom keymaps and stuff using the chrome USB feature. But I may have went off the rails, as it's pretty simple to completely customise your keyboard with layers etc if you know a bit of C.
Warning; this is a gateway into a land of a obsession. :-)
What I've seen happen though is that especially on linux you need two-modifier combos (ctrl-shift/ctrl-alt) to perform what you could have done with a single Fn keystroke. Or burn a few extra keys and increase complexity with layers. I went this route a decade ago, and I'm not a fan personally. Removing the Fn row saves 2cm of vertical space from your desk. I see it as completely pointless, even if you never use the Fn keys.
And I don't buy the "reduced finger travel" argument either. Holding the modifiers in weird positions to access an extra layer is usually worse than a more spacious keyboard where your hands can be kept further apart and require less chording.
But yeah... I commented on another thread on keyboards, and the current keyboard craze is mostly about customization and looks, and very little about the actual typing experience IMHO (there are exceptions of course..).
The number pad is another example of this. Typing numbers is massively more comfortable (and quicker too) on the number pad than it is with the row of numbers just below the F-keys.
The amount of desk space people save is so negligible, particularly when people who buy these keyboards typically work in “paperless” offices, that I never understood the appeal.
I guess it boils down to people wanting their keyboards to look pretty rather than being actually useful.
People don't need a keypad because they have the digits row. But there are languages (in Europe) which reuse the digits row for extra letters (which don't even fit there) so you have to press shift to enter a digit (yes, you can't enter such a letter in capital without using CapsLock), unless you have a kaypad.
People don't need F-keys (so these can be reused for multimedia controls) because they are not techies. Insert for the same reason.
People don't use Delete/Home/End/PgUp/PgDn because they are completely uneducated about the basics of using a computer and use mouse/touchpad, arrows and backspace instead. Believe it or not, I've met people who don't even know Ctrl+C/V (let alone Ctrl+X or Ctrl+Z) and would always use the right-click menu (which even requires an additional keyboard key to be held pressed on a Mac) to copy/paste anything.
This said, compact keyboards target anglophone non-techie users (or hardcore VIM fans who have ways to do everything without leaving the home row).
Lol right. And I add a shift layer to the fn row as well, to add more fn keys. Sadly a lot of apps won’t support fn20+ but u find more utility binding them to hand crafted actions anyway
What's weird about home row or thumb mods?
I started out with a moonlander, which had a lot of keys (36 each hand) but to be honest, I'm trying to minimise as much as possible, and remove keys from it. That way I'm fully constrained to the home row.
Also, layers are amazing and sounds like something you might want to look into. Hold 'a' and use hjkl for media keys, etc. It's all very flexible
1. Keyboard elitism
Until as late as the early 2000s, there was a lot of elitism in programming circles about how using the mouse was something only "lusers" did. Keyboarding was supposedly faster than mousing (even though programmers do a lot more thinking than either keyboarding or mousing) and was the mark of an expert user. These communities would often shill certain keyboards, like the IBM Model M, or the Happy Hacking Keyboard (HHKB) because of their resilience and the feedback one felt from clacking the keys.
2. Customizing/Hacking
Not much has to be said here. Hackers have been customizing their setups for as long as setups could be customized. The ability to program custom keyboard layouts and make custom keyboard firmware is as iconic hacking as it gets.
3. Setup as identity culture
From the late 2000s, Unix Porn and a lot of other "setup porn" stuff became very popular. People would make cool setups that they really identified with and so setting up your keyboard to express your personal identity became a bit of a hacker rite of passage.
While keyboard culture may have started with these ingredients, it's definitely its own thing these days. I'm not in it myself but I like watching it from the sidelines and it's really cool to see what people come up with. Cool layouts, custom firmware, colored keys, experimenting with different layouts. It's just like trying to get the perfect emacs config: more bikeshedding than productivity hack, but I mean it's a hobby, and a fun enriching one at that.
As you say the more practical thing is to just buy an ergo keyboard that works with your wrists/shoulders/neck and call it a day. I have a Model M from when I was an impressionable teen who thought owning a Model M and not using the mouse was the be-all-end-all of being a power computer user, but I mostly use a Kinesis Ergo for my day-to-day computing needs. I'm at a (hybrid) startup these days and we don't really have a dedicated office to store stuff in so I bring an HHKB in to the office because of its portability. I use trackballs for my mousing. That's about it. Holding my arms, wrists, and back in ergo positions is much more important to me than any keyboard really. Though really rock climbing has been the single thing that helped my wrists beat RSI where nothing else really could.
You can see my first build (blue) in several of these pictures following similar advice to OP's guide (looping diodes, etc), with one modification where I used copper tape for the columns instead of wires.
Then the first picture you can see how much cleaner the single-switch PCB ends up, and I can assure it was far easier to solder / strip / assemble.
The languages appears to be Czech/Slovak. It would be more useful to mention this, than to repeat the basic point in four or five comments.
I was just discussing this yesterday with a friend. It's funny how rare and technical it is to understand layers when everyone uses layers every day - shift + 3 does not render 3, but #. But we don't talk about it that way.
The thing I like the most about it is that I don't have to manually install and managed various tool chains and it's a lot more flexible than the Arduino ide.
In ~2000 I started suffering from tendonitis and my coding job became very painful, I tried kind of the 'easy onramp' ergo options at the time, namely the ms 'natural'. It did not help. Eventually someone pointed me at the kinesis advantage (then essential) and I bought one. After some struggle coming to terms with thumb keys and wells and ortholinerness I switched to it for all tasks except for gaming and my symptoms basically disapeared.
About 10 years back I was in a job that was potentially going to cause me to travel a lot, at that point I had already modded my kinesis advange keyboards with custom controllers and wanted to try and build something that travelled better, was smaller, while still not fucking up my wrists.
I built a lot of keyboards trying to shrink my luggage. I went ortho and built a split preonic, uncomfortable, then I went down the road that leads to corne/iris/etc (thumb keys, vertically aligned but not horizontally aligned). More comfortable but the thing i always ran into when removing keys. Overhead, you have to remember what layer and key you put xyz rarely used symbol on (and when you are a software engineer that's a lot of the symbols).. at the end of the road I built a very low profile board based on the dactyl with the same number of keys as the kinesis advantage minus the f-key chicklets. Reducing the number of layers i have to remember to 1 that only contains the grave and the fkeys.
Then covid hit and I didn't have to travel anywhere. I take my dactyl when I go see my parents, and unloaded most of my other boards for cheap. (i kept a 65 that I play games with)
Right.
The benefits of reducing hand travel / stretching come at the cost of additional complexity. Not everyone will be comfortable with that complexity.
I find the complexity acceptable; and in many ways more coherent than traditional layouts. e.g. I'd keep slash and backslash (/\) adjacent (or otherwise paired); a question mark (?) is frequent enough even in prose; so, pipe (|) remains paired to backslash. -- But, yeah, it can be annoying for keys which are used very infrequently.
There are (roughly) two families of "smaller keyboards".
Those with a big spacebar, and those with multiple thumbkeys.
Big-spacebar-small-keyboards are like laptop keyboards.
Whereas, for other kinds of small keyboards (such as the moonlander or planck) which provide thumbkeys, I'd say the emphasis is more about "bringing the full functionality of the keyboard to within easy reach of the hands" rather than "remove keys for whatever reason".
On traditional keyboards, the thumbs only get to use 1 key. A big spacebar is such an odd and inefficient use of keyboard real estate.
Whereas, with 2-3 keys each, the thumbs can be put to good use. e.g. It's much more comfortable to press backspace with the thumb, than to move your hand (or reach with the pinky finger).
e.g. At home, I only very occasionally enter numbers. I very frequently use my mouse, and have large monitors. So I sacrifice slightly less convenient number entry for slightly more room for my mouse(pad) all the time.
At work, I have a full-size keyboard and I spend a higher proportion of my time typing and entering numbers.
I agree entering numbers is better on a keypad though.
I rarely type numbers and find that the "top row" number keys are adequate for when I need to.
Let alone than with the row of numbers holding a Shift pressed (some languages require this because they remap the row for extra letters).
Plus I’ve been using keyboards longer than a lot of (probably most) developers on here have been alive and I haven’t ever found using the number pad to be even remotely an effort.
And all the digits are right there, not at some opposite ends, e.g., UIO789 JKL456 M,.123 on a qwerty
Ultimately there’s going to be a lot of personal habit baked into these preferences and we are talking about micro-optimisations at best anyway. Which I why I think it’s probably better to just agree to disagree.
And the mistake in your first response with the numbers on the opposite ends isn't about "personal habit"
The ironic thing is this conversation of ours would have cost us more energy than what would have been saved from a lifetime of any of your keyboard optimisations. Which is why I roll my eyes when people try to intellectualise their keyboard preferences as some kind of revolutionary time and effort saver.