Have you ever thought about technologies that,
were they invented today, would be laughed at? Stairs are like that, I think. A big hole in
the floor, that you just need to not fall down? Without even a safety railing in front of it?
There is NO WAY building codes would allow that if it wasn’t already such an established idea.
Or gasoline for general purpose energy storage. A flammable, explosive, toxic material
that anyone can just go buy in volume and splash around however they want? It’s kind of
ridiculous, actually, when you think about it. And keyboards. Imagine needing to put data into
a computer, and deciding that the solution was a special peripheral with A HUNDRED AND FOUR
BUTTONS ON IT. And that everyone just needed to practice until they could operate it at the
rate of many dozens of keypresses a minute. Not specialists, everyone. There is something…
charmingly naive about the whole concept. Anyway, I’ve been using this 1990 Model M
keyboard for decades, ever since I dug it out of the massive keyboard bin at the old Boeing
Surplus retail store. I haven’t felt much of a desire to get into the modern mechanical keyboard
scene as a result. Why mess with perfection? It would need to be something very
special indeed to get me to take the leap. So that conversation with my manager that led
to the Pocket Typewriter, see previous video? When he started to describe that, my
brain immediately jumped to the idea of a keyboard based on old letterpress type cases. Typesetting even just a page of
text needs a whole bunch of type, and each one needs a place to live. Type
cases solve that problem by presenting a bunch of shallow compartments, one for
each character you might want to type. Traditionally, majuscule characters went up
here, and miniscule down here. You might know those better as upper case and lower case.
These are, in fact, the cases in question. With industrialization in the 19th century,
plus growing literacy and thus demand for reading materials, these type cases became more
standardized. One particularly popular option was the “California case”, and then the slightly
smaller version the “Two-thirds California case”. So, the obvious question is:
why not turn it into a keyboard? I mean, other than the fact that this would
be a lengthy and expensive process to make something of negative practical
utility. Other than that. Why not? It started with the circuit. Most keyboards use
a switch matrix, and so does mine. Basically, there are far too many keys (N) to hook each one
up to a separate IO line on a microcontroller. Instead, arrange the switches into a grid.
Each column and each row is hooked up to its own IO line, needing only, in the best
case scenario, two square root of N lines. In a tight loop, have the microcontroller test
each row to see if it is connected to each column. If it is, that key is being pressed. Easy! It’s a bit more complicated in practice. Like
hooking up any switch to a microcontroller, you need to add pull up or pull down resistors to
make sure you get a defined result when the switch is open. In this case, I was using a Teensy, so
I could rely on its builtin pull up resistors. It also gets more complicated when you consider
what happens when multiple keys are pushed at the same time. If it’s just, say, these two,
it still works fine. The microcontroller can tell that each is pushed correctly as it scans.
But what if this third switch is pushed as well? Now, as the scan comes through, it detects
all *four* of these switches as being pushed, because they’re all electrically
connected. This is called a “ghost key” effect, and something needs to
be done to stop it from happening. Luckily, there is an easy answer: add a diode
to each switch. These act as check valves, allowing current to flow in one
direction but not the other. Now when these three switches are pushed, the
microcontroller won’t see the ghost key, because the current can’t flow
“backwards” into the other switches. And that’s it! It’s a big circuit,
but not a complicated one. It ended up being 144 switches in a matrix
of 9 rows and 16 columns. The matrix layout could have been done more efficiently, but
I had enough IO lines to not worry about it. Next up: making a PCB. Yes, you could just
manually wire a matrix directly onto the switches, and it works fine. But I really love the
elegance of a printed circuit board. Plus, I’d never had a PCB this big fabbed,
so it seemed like a fun opportunity. Switches on the front, and surface mount
diodes on the back. These could have been through-hole easily enough, but I got a lot
of practice with SMD during my Eurorack phase, and I do love how… tiny they are. They’re so cute! Another thing I had never done with a PCB
is try my hand at silkscreen art. They’ve all been fairly utilitarian before. But
a project like this deserves better! Since I’m still on a Penrose Tiling kick
after my art installation this summer, I wanted to do a gradient of one that
fades out towards the top of the board. Turns out doing halftone dots in Inkscape
is actually pretty easy, and then I used the svg2shenzhen plugin to get it into a format
that KiCAD can handle. That’s the same process I used for adding logos and version numbers
to my boards anyway, so it was easy enough. Speaking of, I figured this board would need
a bit of context for future archeologists. So that’s the brains of the thing. What about the
body? I could have machined something, but I liked the idea of a wood case, being more true to the
source inspiration. I exported the User.Eco1 layer from KiCAD, which the switch footprints helpfully
included to show where the holes need to be cut for plate mounted switches. With this in Inkscape,
I could design a stack of laser-cut sheets around it. One thin aluminum, for the switch plate, the
rest in bamboo plywood. By stacking 3 layers of the 3/16” plywood, I’d get pretty much the perfect
offset for the board with 2mm spacers under it. I actually ordered a small test plate and PCB
first, to make sure all the dimensions were good. This was going to be pricey enough
I wanted to get it right the first try! This also gave me a nice little test bed when
thinking about the last big problem: keycaps. These are the heart of the mechanical keyboard
world. Keycaps are separate from the switches, allowing a huge amount of customization. (And there are dozens of switch types to choose
from as well, of course.) There are some really amazing keycap sets available, which I’ve always
admired. Though the vast majority are always out of stock, it seems? But unfortunately, I wouldn’t
be able to take advantage of this resource anyway. See, the Two Thirds is a very
silly keyboard, because, obviously, the original two thirds cases weren’t designed
to be keyboards. They were designed to hold type. And the thing about type is that you don’t
need the same number of each kind. You need a whole lot more e’s than you need k’s.
So the compartments are sized accordingly, being roughly in proportion to the frequency of
use in the English language for that character. The layout is also informed by this -- notice how
all the big compartments are towards the center, keeping them in easy reach for
faster, more efficient typesetting. (And, yes, efficiency in typesetting was a very
big deal. You only have to stare, slack-jawed, at the overwhelming mechanical complexity of
a Linotype machine to be convinced of that.) What this meant for my keyboard is that
I needed a lot of 2x2 unit keycaps, and one 2x3 keycap for the lowercase e. This
is a problem because keyboard hardware isn’t designed for that. Long keys like shift and
space have metal rods under them that let them operate using a single switch without
binding. These are called stabilizers, or stabs if you’re trying to sound a bit too
cool, and they’re a standard part of a mechanical keyboard. But there isn’t an equivalent system
for stabilizing keys that are tall AND wide. You do occasionally see 2x2 keycaps in point of
sale systems, and I’ve heard rumors of a 2x3. I believe these just work by pushing down on
multiple switches, which isn’t supposed to be the best feel for typing. I got these these
2x2 caps for testing, and they worked okay. Each of my larger keys would have a switch at each
corner, and that would have to be good enough. But no one printing custom keycap sets include
2x2 keycaps as an option, much less 2x3. The only commercially available option I
could find were those 2x2 caps that let you insert a slip of paper to label them
for a point of sale system. Pretty ugly, and it didn’t solve the 2x3 problem anyway.
I wasn’t going to be able to buy my keycaps. That left 3D printing as the only option. I found
some models on Shapeways and had a couple printed as a test. And they worked, though the texture
wasn’t exactly amazing. But each one cost about $10. A rough estimate of the total cost for
a full set was quickly approaching a grand. Now, I like a good quixotic project as
much as the next crazed YouTube maker, but even if I could find a good bulk discount,
I couldn’t spend anywhere near that much. So I thought about it. I’ve never
had a 3D printer myself because, well, I’m a materials snob. That’s why I got
into machining! I don’t like holding plastic, and extrusion printed plastic even less so. I was
happy to outsource the occasional job to Shapeways and focus on building a shop where I could
build things using proper materials: metal. But over the last few years, I’ve been
getting curious about resin SLA printers. The results looked… pretty
nice, actually. For plastic. And the speed of printing was impressive too,
since they expose an entire layer at once. Having print time scale by the maximum
height instead of volume is impressive. So it occurred to me that a printer had to be
less than what I was looking at in printing costs, and then I’d have a printer and experience at the
end of the process. And, yeah, it was cheaper. *Way* cheaper. I picked up this Anycubic Photon
M3 for under $300! When did they get so cheap? It arrived and I started printing. And
printing, and printing. I needed 86 keys, and the success rates started out fairly
low. But I got better over time, learning the intricacies of support placement and FEP
cleaning and platen leveling and everything else. Eventually I got kicked out of the
dining room and set up out in the garage. I also switched to the Chitubox app for doing
the supports and slicing, and I found its output printed a lot more reliably without having to
go in and add a million extra supports manually. Let’s talk about the key layout. I wanted it
to be as faithful as possible to the original Two Thirds, but it still needed to be at
least somewhat functional as a keyboard, which meant a lot of keys for things
like enter, control, alt, escape, etc. Luckily, the original layout had some blanks,
and some compartments that wouldn’t be relevant anyway. A lot of typesetting is stacking up
spacers of various thickness to make each row the exact same width, because they need to be
clamped very tightly into the chase for printing. I’d need *a* space key, but not different size
spaces, so all these were free to be repurposed. I also didn’t need all these ligatures.
These are combinations of characters that, traditionally, get merged together into a
single piece of type if they come up next to each other in the text being typeset, to
make the result prettier and easier to read. You may have noticed keyboards don’t have
these, and that’s because that’s the job of the word processor or layout engine, in modern
thinking. But ligatures are really cool, so I decided to keep the ff and fi ones. The others
could be used for more practical keys, though. In the end, I settled on this layout,
with the understanding that I would inevitably end up spending a lot of time
hacking the code to add key combinations for other characters as I realized
I just couldn’t live without them. Now I needed the actual STL files of these 86
keycaps to be printed. I found some models for 1x1 and 1x2 keycaps, and they were even in the
DSA style that I admired. Opening them in Blender, I was able to duplicate and flip and merge them
together to form the 2x2 and 2x3 caps that I would also need. It took some experimentation, but I
think the final results came out pretty good. Then it was just a process of bringing in
the outline of every glyph, turning that into an extruded solid, and differencing out
that shape from the front of each key cap. It was one of those annoying things that
probably would have been faster to automate, but maybe not so you keep doing it,
until you start to question yourself, but then sunk cost fallacy kicks in and
you just keep doing it. Yeah, one of those. 86 times anything takes a long time. I ended up using my standard Courier New Bold for
the glyphs, after trying a couple typewriter fonts and thinking they just didn’t look as good. The
fi ligature posed a bit of a problem -- Courier does have an ff glyph, but not one for fi. So
I got to design my own, which was pretty fun. With the keycaps coming along nicely,
it was time to start assembly. The laser cut pieces had arrived
and looked good. Smelled good, too! I cleaned them up at the shop, sanding
everything to be smooth and even. The PCBs arrived, and I thought
they looked pretty sweet. Please admire them now, because absolutely none
of them will be visible in the final product! Soldering on all 144 diodes filled up a very
pleasant evening. I solder SMD manually; first tinning the pads and then going
back with tweezers for each component. I then got the Teensy added on and
started testing. The results at first were a bit chaotic, and I was worried I
had messed up the PCB design. But after tweaking the matrix scanning code I got it
mostly working, except for two problems. 2 of the rows weren’t registering at all,
despite having good continuity. And one of the columns would register a bunch of imaginary
keystrokes whenever I touched any of its contacts. The first of these wasn’t quite my fault --
turns out the footprint for the Teensy I was using had its pins in the wrong order,
pushing two row lines onto non-IO pins. (But I really should have noticed that.) The
other one turned out to be because I had put that column line onto the pin with the builtin
LED on the Teensy. That one is definitely on me. The fixes were simple enough, just cutting the
traces and soldering on jumpers, but still. Blah. With all the keys registering properly, it
wasn’t hard to add a little lookup table for the different keycodes into the program,
and have it start working as a USB keyboard. This meant I couldn’t put off one of the last
technical challenges any longer -- how do you make a ligature key work on a USB keyboard? Those
characters exist in unicode, but keyboards don’t use unicode. They send keycodes, and the OS has to
decide what to do with them. I didn’t particularly want to write a custom device driver for this
thing, but luckily Windows offers a convenient workaround. Going way back to ye olde DOS days,
you’ve been able to input arbitrary characters through the use of “alt codes”. Hold down alt,
enter the code for the character you want on the keypad -- yes, it has to be on the keypad --
and release alt. Boom. I was able to use this to send 64256 and 64257, unicode for the ff and fi
glyphs. It has trouble in a lot of applications, which want to interpret these as emojis or
other symbols, but at least it works in wordpad. To fully assemble the keyboard, I needed to carve
out a little notch to make room for the Teensy, and cut openings for the USB cable to
reach it. I could have included this last part in the laser cut design, but
I wanted to see it all together first. All that was left was waiting for the keycaps,
which needed one last processing step. The glyphs were pretty low contrast, being debossed into
the surface. Real high quality keycaps are made “double shot”, that is, during injection molding,
there is a second step injecting a different color of plastic to form the label. Cheaper ones just
print on the surface, but that wears off faster. As a kid I had once hand painted a keyboard,
inspired by Hackers, so I know all too well how quickly it gets grotty. I wanted
something more like double-shot if possible. Sadly, multi-color resin printing isn’t
really a thing, so that wasn’t an option. I found a video of someone doing exactly that
with epoxy putty as a manual second-shot process, and the results looked pretty good. So I tried
it myself -- and the results *were* pretty good! Doing it for all 86 keys took a while, but
any process that I can do in the warmth of the kitchen, hanging out with the rest of
the household isn’t really all that bad. The key to cleaning them off after the putty
had been smeared in was to use some isopropyl alcohol on a paper towel. Your results might
vary though -- the video I got the idea from had problems with the inlay shrinking
as it cured, which I didn’t see at all. All that was left was a quick sanding to
smooth out the support bumps on the backs of the keys, and it was finally time for assembly. Any concerns I had about parts being too
wobbly quickly disappeared as the stackup grew. The case is held together with screw posts,
because I like the look of them. The screw heads are on the back side, so I didn’t have to
worry about getting them all lined up nicely. The keycaps went on fairly well, though I did
have to clean some up with an x-acto. They’re definitely more fragile than real injection
molded ones, so be a bit gentle with them. With that done… all that was left was
final assembly and the keyboard was done. And what a lovely, ridiculous beast it is! It
masses almost 2 kilograms, took about 2 months total to finish, and definitely cost far too much,
but I’m not going to add it all up to find out. Since we want to be properly scientific, here is the control test of me
typing on my normal keyboard first. I’m not a great typist, never having really
learned touch typing properly, but I get the job done. And here I am doing the same test at the
beginning of the week on the Two Thirds keyboard. Yeah. Back to hunt and peck. But
I’d be just as bad on Dvorak. The real question is what is it
like after getting used to it? To give it a fair shake, I promised
myself I would use it for a full week. The week was… challenging. I spent less time on
social media, which is probably for the best. But I did grow rather fond of the Two Thirds.
It has a lot of character, which I don’t think I’ve ever said about a keyboard before. I even
got to use the ligature keys a couple of times! It was really interesting, feeling deep down
the truth of the character frequencies in just how much faster I learned the position
of the large keys. And treating upper and lower case as fundamentally distinct really
made me question my typographic assumptions. The Latin alphabet, it turns out, has
far, far more than just 26 letters. And, for science, here is the same typing
test, taken at the end of the week. So… I got better? At least a bit?
That’s some actual touch-typing, there! As interesting as this has been, though,
I think I’m switching back to my Model M. Though maybe I finally give Dvorak a try. See you next time!