Monday, August 2, 2021

Bad Keyboard Switch Designs & Quirky Keys of the Past

Having good switches in today's keyboards is taken for granted.  Except for laptops, any computer can be blessed by a keyboard with mechanical switches or good rubber dome switches.  In the old days of computing this was not always the case.  There were many fine keyswitch designs back in the day, IBM buckling spring, Alps switches, leaf spring switches, hall effect, beam spring, magnetic reed.  But this blog post is not about them.  The 70s and 80s also had many bad keyswitch designs too, so let's identify some of them and where they reared their ugly heads.

Additionally, some keyboard had keys which functioned unusually given the keyboards of today.  We'll take a look at some of those as well.

Bad Keyswitch Designs

Stackpole Switch Grid

Systems : Early TRS Model 80s, TI-99/4A

The Stackpole is one of the earlier bad switch designs you will find, but it is extremely insidious.  Stackpole switches work by pushing a pair of contact arms together.  The end of each contact has curved fingers which are supposed to make electrical contact with its counterpart when the switch pushes a box around the arms downward.  The main problem is that these switches are stiff, offer no feedback and either boxes break or the finger contacts get bent out of shape. And because the keyboard is set into a grid, you can only replace the guts of a key, you cannot replace a broken key with another one.

Membrane Keyboards

Systems : Atari 400, Sinclair ZX-80, ZX-81, Timex Sinclair 1000

These membranes are flat and offer no feedback.  Pushing a "key" makes contact between two otherwise separated electrical contacts. Hitting your finger on them is like hitting your finger on hard plastic or something really squishy.  Typing anything on them is a slow and laborious process.  Most systems which came with a membrane keyboard had 3rd party keyboard replacement upgrades available. You should be able to find replacement modern keyboard and membranes for worn out Sinclair computers.

Foam and Foil

Systems : Franklin Ace 1000, Compaq Portable PC

Foam and foil keys are deceptive.  The keyboards in which they are used generally look premium but will not feel very premium if you have to use one.  The switches in these systems generally have springs around sliders underneath the keycap and a PCB with the key traces laid out.  Their weakness comes with foam and foil contact on the bottom part of the keystem.  The foil makes the contact between the two pads on the PCB representing each key, but the foil has a tendency to tear off or fall off the foam and the foam tends to deteriorate after prolonged use.  Fortunately TexElec offers good quality replacement capacitive pads for some of the more commonly encountered switches.


Systems : ZX Specrum, Timex Sinclair 1500, TI-99, IBM PCjr. (First Keyboard), TRS-80 Color Computer

The chicklet style keyboard is an abomination to type on, only one small step about membrane keyboards.  It is always hunt and peck on the chicklets, and sometimes the key labels are not very clear to make out.  The ZX Spectrum actually used hotkeys for BASIC commands to spare the user from having to type LOAD or PRINT every time they needed to enter a command. The chicklet keys either use hard plastic, which makes them painful to type on, or rubber which makes everything soft and squishy.  The second keyboard used by the IBM PCjr. eschewed the chicklets for sculpted keys but those keys still push down on a very stiff rubber dome mat.

Mitsumi Hybrid Switches

Systems : Commodore VIC-20 & Commodore 64

The keyboards on the Commodore VIC-20 and Commodore 64 have switches with a sliding keystem, a spring underneath the keycap, a PCB with contact pads for a keyboard matrix and carbon pad on the bottom of the keystem when pressed down, makes contact between the two pads for a key on the PCB.  The result is essentially almost the same as foam and foil, these keys are very susceptible to uneven wear on the carbon pads even if the PCB is clean.

Futaba Simplified Linear/MR-6C series & Futaba low profile/ML series

Systems : BBC Micro, Acorn Electron

The Futaba switches' main issue is that the keys squeak when pressed.  You'll seriously be tempted tp spray some WD-40 in them, but I would suggest looking for a more subtle lubrication solution.  The low profile keys are also a very short travel.

Apple Hairpin Switches

Systems : Apple //c (non-memory expansion //c)

Apple's keyswitches, prior to its embrace of the rubber dome and the scissor switch, were pretty good most of the time, but this Apple-patented design should have been left on paper.  The hairpin switches are stiff and scratchy, with very variable tactility across different keys.  The travel distance is shorter than you'd expect.  They do improve if the spill mat underneath is removed but the keyboard is no match for the Alps keyboard switches found on the Memory Expansion //c or //c Plus.
Weird Keys

Apple II & II+

The keyboards which came with the Apple II and II+ have some unusual keys, at least by modern standards.  The first is the "REPT" key, which stands for repeat.  In these keyboards, you can hold down a key for as long as you want and only one character will appear on the screen.  If you want to repeat that character, then you hold down the REPT key.

Another unusual customer is the Reset key.  The Reset key had a special function and was not decoded by the keyboard controller.  The Reset key originally was required to be pressed before the Apple II would boot to the system language monitor.  Pressing the key thereafter would result in a warm reboot, which was not appreciated when it was hit by accident and caused an unsaved BASIC program to disappear.  Eventually a spring was fitted underneath the key to make it more difficult to press and there was a switch to require the Control key to be pressed in conjunction with the Reset key for it to do anything.  Finally the Applesoft BASIC ROMs and the Language Card had an Autoboot ROM for the Integer BASIC ROM making pressing the Reset key to get to a prompt unnecessary.

The Apple II & II+ is also unusual, by modern standards, in that the shift key only works to type the alternate character on keys with two characters printed on them.  This was confined to the number, arithmetic and punctuation keys on the Apple II and II+ for the most part.  The Apple II and II+ did not support lowercase letters.  Both shift keys function identically and cannot be told apart, and the system cannot determine whether they are pressed down at all.  When 80-column cards became popular, they did support lowercase letters, but in order for the 80-column card and the programs which supported them to know that the shift key was pressed, a wire needed to be connected from the keyboard to the 3rd button input on the Game I/O socket.  This became famous as the shift-key mod.

Apple IIe, //c and //GS

The Apple IIe and IIc ditched the weirdness of the REPT key and enforced Ctrl+Reset, and their keyboard decoder ROMs and built-in 80-column circuitry could generate lowercase characters directly. There is still an option to enable the shift-key mod for older software via a jumper on the board, and depending on your motherboard revision the option could be automatically enabled. They added the Open Apple and Closed Apple keys, but these are not treated as keyboard keys at all by the system.  They are the same as pressing the 1st and 2nd button inputs on the Game I/O socket, respectively.  The built-in BASIC of the Apple //e does not recognize lower case characters, but the BASIC of the Enhanced Apple //e does not suffer from this limitation. The Apple //GS uses the Apple Desktop Bus instead of a direct connection to the keyboard controller, so it has to simulate the effect of pressing the Open and Closed Apple keys with the Open Apple and Option keys.  The large key with the triangle on it is the Reset key, but like the other keys the ADB controller has to tell the system that this key is pressed in combination with the others before the reset function is activated.

Atari 8-bit Keyboards

The Atari has five "function keys", Help, Start, Select, Option and Reset.  What the first four do is dependent on the program.  Reset sends a 6502 NMI to the system, and what the system chooses to do with it is up to the program.

Commodore VIC-20 and Commodore 64

The Commodore VIC-20 and Commodore 64 has many keys that are unusual by modern standards and some may have special functions in BASIC but not generally acknowledged as such by programs.  Two keys are unusual in their hardware functions.

The shift keys each produce unique codes, unlike other keyboards of this vintage.  Shift lock is a latching key and functions identically to the left shift key being held down.  This means that, unlike an Apple II or IBM PC Caps Lock, Commodore BASIC will display the secondary character of the number, punctuation and math keys.  What another program may do with Shift Lock is up to it.

RESTORE is unique in that it is not tied to the keyboard decoder (one of the VIA or CIA chips) at all.  Pressing the RESTORE key invokes the 6510's Non-maskable Interrupt.  In BASIC, pressing RESTORE and RUN/STOP will effect a warm reset.

The Commodore 64 joystick ports share the I/O lines of the keyboard and for Joystick 1, the system cannot tell the difference if it or a key on the keyboard has been pressed.  Because of this, pressing directionals or the fire button may show up as keyboard key presses, especially in BASIC.  For this reason, joystick port 2 was generally used as "the" joystick port, especially in Europe.

IBM 84 & 101 Key Keyboards

The 83-key IBM PC keyboard did not have any weird keys, all keys send a make and a break scan code from the keyboard controller inside the keyboard to the ports on the system intended to read the keyboard.  From there a program can read the "raw" scancode from the port directly, or in the vast majority of cases, read the key from the BIOS key reading routine.  The Ctrl+Alt+Del key function is implemented in the BIOS and programs do not have to respect it (and some do not.)

Things changed when the IBM PC AT was released with a keyboard with the "84th key", System Request.  This key does nothing most of the time, it was originally intended for use with multi-tasking operating systems and choosing between operating systems.  While the keyboard controller sends it as a scan code, it is handled by a special BIOS routine and is normally not visible to programs unless they have specific support for it.  

The pause/break key is also a bit weird in function.  This key does not send a break code on certain key sets, so it is not possible to determine whether it has been held down.  It is essentially a toggle switch whose state is determined by whether it had been previously pressed or not.

Tandy 1000 Keyboard

The unique Tandy 1000 keyboard has a few weird keys.  The F11 and F12 keys use scancodes that are unique and not replicated by an IBM 101-key keyboard.  That means that software has to have specific support for those keys, which outside Tandy's Deskmate is not common.  

The Hold key on a Tandy 1000 often freaks newcomers to the system out because it acts as a pause key, but one that functions far more often than the Pause key found on the IBM keyboards.  People may hit the Hold key accidentally because they missed one of the commonly used keys around it.  When the Hold key is it, it may seem like your system or your program has crashed because no other keyswill respond.  Pressing the Hold key again will unpause the program.

While the Hold key is annoying, the Print key near it can ruin your day.  Pressing the Print key sends the screen buffer to the printer, which is handy if you want to print what is on a DOS text-mode screen.  When Tandys were actively used for productivity the effect was merely annoying in that it would waste paper of the attached printer if hit unintentionally.  However, the routine expects some kind of response from the printer, and if there is no printer attached the system will hang until it gets something.  On an IBM PC, the Print Screen key must be pressed alongside the Control key to produce the same effect, which is much less likely to happen accidentally.  There are small TSRs like XPRT which can restore the IBM behavior on a Tandy 1000.  


  1. I don't know if this is a universal comment, but I use an M0116, Apple's compact ADB keyboard from 1997–1990, and it's designed to have a latching caps lock key that sends make and break to indicate latched state. But the actual implementation seems to be a software implementation of make/break independent of the latch, with the keydown that triggers that occurring slightly before the latch takes hold.

    So if you accidentally brush the key you can cause a caps lock down event without the key actually being down. After which you can either latch it in order to send a caps lock up message to the computer, or just carefully depress it a little and then release it.

    It's a hassle since it's in the bottom left of the keyboard, below shift and to the lefty of option. Which is a prime spot for an accidental brushing.

  2. Very interesting, especially with my first experience with a keyboard being with a 101-key board on my 286 back in 1988. The C64 is probably the strangest of the keyboards I've personally encountered. With its graphical characters, just two arrow keys, function keys, the shift lock physically latching down, and the whole thing requiring so much force to press the keys that the concept of touch typing was more alien than a xenomorph.

    As a side note: none of the images in the post seem to be showing.


  3. Other than using a TRS-80 Model III at school a few times, my first computing experience was with the Coco and its horrific chicklet keyboard. Typing speed was painfully slow. As a general metric, it would take me an hour to type one page of program listings from a magazine. I had to decide if the game would provide enough fun to justify the time spent entering it!

    As for weird keys, the Coco had a CLEAR key that would clear the screen. It was difficult to hit accidently, but the unwitting user could it it at any input prompt and wipe-out the screen. There were ways to disable it in software, but I never understood its original purpose.