Close

On the subject of keyboards

A project log for VT-69 Handheld Terminal

It's a dumb terminal. You can connect a Raspberry Pi to it.

benchoffBenchoff 02/10/2019 at 18:513 Comments

The dumb badge requires a keyboard, and I'm doing this with a silicone keyboard like you'd find in a remote control or a ZX Spectrum. That's the easiest and cheapest way to put 100 buttons on something. But what is the layout going to look like? It's time for a review of existing terminal keyboards, how I made my keyboard, and a neat testing apparatus.

The VT-100

The original VT-100 keyboard. Actually, this is from a VT-102 sold by PsychSystems as an 'in office testing equipment for psychological measures'. Basically, someone under the care of a psychologist would answer questions like, 'do you feel like harming yourself or others' with the Yes and No buttons on the numeric pad. Disregard the numpad, and you have a bone-stock VT-100 keyboard.

Of note, you have a caps lock key, and it's closer to the home row than the Ctrl key. That's dumb; the caps and ctrl should be swapped. You've also got arrow keys, but not in the 'inverted-T' arrangement, because that hadn't been invented yet. The arrow arrangements also are not in the hjkl arrangement of the best text editor of all time. There's an L-shaped return, and the space bar is exceptionally long. Other than that, a pretty standard keyboard.

The ADM-3A

The ADM-3a is the most complex device you can build without a microprocessor. It is the height of TTL design. It's also brilliantly engineered on a single-sided, wave soldered PCB. Anyone who looks at an ADM-3a and remarks on its retro-looking enclosure is wrong; this is not a throw-back aesthetic. This is the pinnacle of designing things purely with logic chips. 

It's also the only keyboard I'm referencing that's not in my collection. There's some interesting stuff here; note the arrow keys on the hjkl buttons, that's where vi gets it. Note the colon available without the use of the shift, that's where vi gets it. NOTE THE LACK OF A CAPS LOCK IT'S GENIUS. 59 keys, and it's doing it all without a microprocessor.  What you're looking at is the why behind most console/terminal interfaces.

There are a few things I don't like. There's no dedicated button for controlling the terminal, as with the Set Up button on the VT-100. This is understandable; the ADM-3a was 'set up' with dip switches. It doesn't really work well with modern interfaces without alt or meta buttons, and the entire right side of the keyboard, from having the @ symbol next to \ and quotes on the 2, is weird from a modern user's perspective. Yes, the ADM-3a was the height of existing technology for 1976, but as we all know a technology is only perfected after it has been rendered obsolete. It's just too weird from a modern perspective. 

Trash-80 Model 100

Yes, the Trash-80 model 100 makes for a really great dumb terminal. Arrow keys are there if you look hard enough, in a similar location as the VT100 keyboard.. Control and caps lock are correct. This is a very compact keyboard, and if you replace the GRPH and CODE buttons with Alt and Meta buttons, you have something that would work well with modern interfaces.

DEC TC 200

The Trash-80 Model 100 is an awesome portable terminal, but it's not the most portable terminal. That would go to a rare DEC product, the TC 200. This thing is incredibly rare, and if you have one, I'll trade you a dumb badge for it.

For the keyboard, you've got your normal qwerty layout a control where it should be, and various dedicated buttons for how fast the display scrolls. Of course, the screen sucks. This is a novelty, but it does show what's possible when it comes to portable keyboards. You're looking at a chicklet keyboard like the old HP 12c scientific/financial calculators; not silicone, but plastic buttons on metal domes.

I have a feeling this keyboard would be useless in a modern context.

LK-201 / VT-220

The successor to the VT-100 keyboard, shipped on the VT-220. Note the arrow keys -- it's an inverted 'T' arrangement. This is the first keyboard to use the inverted T arrangement. History, right here. This is also remarkably similar to the Commodore 128 keyboard, because the Commodore 128 was designed on this keyboard. Interesting bit of history there,

Other items of note include function keys, and a numeric pad that's pretty similar to the a modern keyboard. This keyboard was released in 1983, the VT100 in 1978 or thereabouts; you're seeing the evolution of the modern keyboard happen right in front of your eyes.

LIBERTÉ, ÉGALITÉ, FRATERNITÉ, AZERTY

This is a callback to the best headline I've ever written. Seriously, look at this. You can't come up with a better headline than Liberte, egalite, fraternite, azerty..

Anyway, what we're looking at here is a Minitel terminal. Minitel was a weird French Internet of sorts rolled out by France Telecom in the early 80s. It required a Minitel Termianal, the keyboard you see here. It's AZERTY, but whatever. Some of the keyboards have the space button labeled as ESPACE. weird.

You've got control in the right space, and no numbers but a num pad. There are buttons cor dialing and connecting, and not a whole lot of punctuation. There are a lot of problems with this keyboard, but only because it was designed for one specific system. Here, we're getting into the crux of the matter. The modern Linux terminal -- and most terminal applications, for that matter -- are ultimately designed for VT-100, LK-201 , and to a lesser extent, ADM-3a style keyboards. These keyboards are in turn based on teletype keyboards. The modern computer keyboard is about 80 years of design debt, and we've just learned to deal with it. Is the modern keyboard the most efficient? No, but it's what we're used to.

Therefore, the best solution I can come up with for a keyboard design is simply to rip off the design of a VT-100. It provides everything you need, in a layout that looks familiar.

Handyer HIT5 Intelligent Terminal

Okay, now we're getting weird. The Handyer HIT5 has a silicone keyboard and a 240x64 pixel LCD, sufficient for 8 lines of 40 characters. Basically, this is what I want to build. It's a portable terminal meant for... I dunno, warehouse shit? You can put a barcode scanner on it. It'll send data to places. If the dumb badge is a product, this thing is what it's competing against. Whatever.

Anyway, what do we got here? A normal 4-row qwerty layout with numbers above. There's a stupid caps lock, but otherwise everything is remarkably square. Function keys intrude on the space bar, but the arrow keys are identical to the VT100. This isn't bad. This is a really, really good option. But I want something a little more unique. I'm torn between the efficient packing of the HIT5 and something slightly more vintage and exotic.

The Atari Portfolio

Disregarding the fact that this is a PC-compatible thing running DOS, this is probably the closest to what I'd like to build. This is a silicone keyboard, and unlike all the other silicone/membrane keyboards seen previously, the Enter key is an 'L' shape. I love that, I'm stealing it. There's a caps lock key, and it's more important than control. I hate that.

The keyboard is 63 keys, with alt, control, and a meta-ish button, and would work well as a modern keyboard. There is a lack of terminal-specific keys, like 'line' 'no scroll' and 'break', but this could be worked around. This is a viable layout for a terminal keyboard.

What I came up with

This is a bit of a mock up I came up with to plan everything out. It basically follows the layout of the VT-100 keyboard. The 'SET UP' button is moved down a bit, the caps and ctrl buttons are swapped as God intended, and it retains the arrow key layout of the original. Other than that, it's a VT100 keyboard.

By keeping the layout of the VT100 keyboard, I'm assured that *everything* terminal related will work with this keyboard. However, there could be a bit more planned for this project; I specifically envision using this project as the interface for a small Linux thing. At the very least, recognize that you can attach a Raspberry Pi Zero to this badge and have a fully functioning linux system for five dollars. This means extra keys are needed, specifically Alt and 'meta / windows / command' buttons. Adding buttons is easy, though, so here's something a little more final:

The addition of Meta (the same key as the Windows key or the option/command key on Mac) and an Alt key turn this into a small, usable keyboard. It also gives this keyboard 69 keys, which is great, because I was planning on calling this project the VT-69 (nice) anyway. Why am I calling it the VT-69? the VT-52 existed, and it's styled after the VT-100, and VT-420 was already taken.

The files are already out to the fab, but here's a render:

This was done in Fusion 360, by taking the original (made in Illustrator) design, exporting a DXF, and extruding everything to the right dimensions. Throw in some fillets, and I can send this off to a factory in China. Right now,

There was a problem with the first revision of this design. I wanted something that would have a maximum button area, with a minimal gap between the buttons. I had initially designed this with ~7mm buttons, with ~2mm in between each button. This is not enough for the silicone to work. After a little bit of back and forth, I got a note from the engineer telling me there needs to be 3.5mm pitch between buttons:

It's not really a problem to resize the keys and send them a new model, but it does mean the key legends will be smaller. 

Okay, so we need a prototype keyboard.

Assuming the silicone keyboard will work and everything will work as it should, I need a device to test this keyboard. For this, I whipped up a quick board in Eagle with touch pads I designed myself. Everything I've read about silicone keyboards is that the design of the touch pad isn't extremely critical, only that the carbon pill makes contact with two traces.

Thus, a keyboard layout and an X-Y matrix. No, there are no diodes, and therefore no NKRO. This keyboard is too small for touch typing anyway, and buying (and placing) 69 diodes would cost a god damned fortune. You get 2KRO with this board stop asking me about itThe micro at the top is a Teensy 3, simply because that's the board all the mechanical keyboard builders are using:

When designing a bunch of traces really, really close together, it's important to think about manufacturability. Most board houses default to 6mil trace and space. In other words, they're able to reliably lay down 6 mil wide traces with 6 mils in between each space. The carbon pill I'm using is 4mm in diameter, so 6/6 might be a bit overkill. To improve my yield, I'm using 10 mil trace and space for each pad:

The hope is that samples for this keyboard will be on my desk in a month or so. I'll be sending the prototype keyboard PCB off to a board house shortly. 

Cost and efficiency

Since I'm being completely open with the design of this project, I should mention how much this costs, and how efficient it is on a per-key basis.

The design costs for this silicone keyboard are:

Tooling $2219
Design cost $600
Bank Fee $58
TOTAL: $2877

This is simply for the tooling and design. Actually manufacturing the silicone keyboards will cost $1.30 at qty 1000. Since I'm making a thousand (why not, even though I'm not going to make a thousand for DefCon), my total cost for the silicone keyboards in this project will be $4177. How does that compare to using tact switches?

If I wanted to make a thousand keyboards, each with 69 keys, using tact switches, I would need to buy reels and reels of switches. The best price I've found for 4mm tact switches is $60 per reel of 4000, and this project would need 18 reels (at least that's what I would buy). 18 * $60 = $1080, or about a quarter of the cost of doing 1000 units with a silicone keyboard. No, it's not cheap, but it will look really good, the buttons will have legends on them, and I'm saving quite a bit of time during assembly. However, doing a production run of 1000 using silicone keyboards doesn't make any sense at all.

How many would I have to make before the silicone keyboard pays for itself? Assuming the $60 reel of 4000 tact switches ($0.015/switch), you will never save money with silicone keyboards if you're paying $1.30 for 69 buttons. The math just doesn't work. However, the quote for 5000 silicone keyboards is a unit price of $0.79, or $0.011/switch. Here, it gets a little better; 345,000 switches would cost $5175, and the tooling and molding of 5000 keyboards would cost $6827. Sure, the silicone keyboard saves a ton of assembly time and looks great, but it comes at a significant financial cost.

Bottom line, the break-even point where silicone keyboards are cheaper than standard tact switches is somewhere around 10,000 units. This doesn't factor in the 'soft' tasks of assembling the final unit, or running around a pick and place machine swapping reels, which would be in the silicone keyboard's favor. Still, silicone keyboards don't make sense for low-volume production.

Basically, this is the stupid way to do things from a financial standpoint. A silicone keyboard isn't going to make financial sense unless I'm making ten thousand of these things. I'm planning on shipping 100-150 at DefCon. This is what the kids call an 'oof'. But it'll look dope as hell.

Discussions

Elliot Williams wrote 02/21/2019 at 10:51 point

Pass the savings on to the consumer!  (For negative values of saving.)

  Are you sure? yes | no

Jan wrote 02/20/2019 at 20:24 point

I really like the "because I CAN mentality" here! Good vibes. Very interesting technical documentation as well!

  Are you sure? yes | no

Ted Yapo wrote 02/10/2019 at 19:17 point

+10 for the "meta" key

-1/2 for no "any" key

  Are you sure? yes | no