Custom Mechanical Keyboards

[Wyager] was shopping around for a mechanical keyboard, and after noticing custom PCB manufacturing had come down in price so much, he decided to build his own. The end result is a keyboard that’s so elegant in its design, that it could, with a little work, become a very interesting Kickstarter project.

The design had three requirements: cheap, mechanical switches, and extremely customizable. The cheap requirement was solved by splitting the keyboard into two parts with a master/slave arrangement. The boards are connected by a 1/8″ TRRS jack conveying an I2C bus. Since both boards are identical except for the code running on the Teensy dev boards, [Wyager] saved a bit of cash by using two of the three PCBs that came with his OSHPark order.

The mechanical switches – Cherry MX Blues – are rather expensive parts for a failed project. For fear of failure, [Wyager] first ordered a PCB containing the footprint of only one key. With the footprint correct, he graduated to a 2×2 matrix. Once that was verified, the 6×5 matrix was ordered. Everything worked perfectly the first time, something we can’t say about many of our projects.

The code, board files, and schematics are available over on the github

29 thoughts on “Custom Mechanical Keyboards

    1. I wanted to try a non-staggered layout for a change. It’s nice! Some people really like it, some people are too put off by it.

    2. Why would anybody want to copy Victorian mumbo jumbo that was designed to screw with everything including something as simple as a grid.

      1. The “slow typists down on purpose” thing has been exposed as probably-a-myth, which is about as mythical as you can be. Though nobody seems to have a proper explanation otherwise either. Somebody should write a book…

        In tests, though, the Dvorak “ergonomic” layout is no faster, for typists trained on it, than QWERTY is for the complement.

        I used to be a super-fast typist at one point. It’s all muscle memory, can’t really say that the QWERTY layout has any particular niggles.

        1. As an amateur guitarist, I’m used to dealing with fingerpicking patterns in my playing. Touch-typing Qwerty reveals similar patterns once you’ve reached a certain level of competence; sometimes when I’m typing (particularly when I’m writing fiction or a even a long article) I feel almost as if I’m “playing” the keys instead of just typing.

          I’ve heard pianist friends say the same too, and I’d imagine for them it’s even an even closer feeling.

        2. Sorry I don’t have any references to give you, but I once did find an explanation that made sense:
          With the traditional style of typewriter, where the typebars are arranged in an arc at whose center is the target of the typebars (i.e., the point where they strike the ribbon and paper), all of the typebars naturally have motions that converge at that point. They have to, for characters to be printed at the same point no matter what character they are.
          This means that the typebars follow arcs that overlap each other, and the closer two typebars are to each other, the more their arcs overlap, and thus the greater time is required for one typebar to get out of the way of the next one. So the object of the QWERTY layout was to maximize the distance between adjacent letters when typing common English words, thereby minimizing the chance of typebar collisions at any given typing speed. So this was NOT designed to slow down typists, but to INCREASE their speed by minimizing interference between typebars.

          1. @Galane: sure IBM invented the Selectric, in 1961. If you want your mind to be blown, though, look up Blickensderfer. He invented a typewriter in 1892 — that’s EIGHTEEN 92 — that featured interchangeable type cylinders that had four rows of type that rotated and shifted much like the Selectric. This allowed his machine to use different alphabets and even multiple keyboard arrangements simply by swapping the type cylinder, and it was available in both QWERTY and “DHIATENSOR” formats. There was even an electric version introduced in 1902. Seriously – look it up!

  1. I think the code is actually the same on both keyboards (except keymapping)… it’s just smart enough to know whether it’s connected to i2c (as a slave) or USB (as a device with its own i2c slave)

    1. Correct. It’s the exact same code (except key mappings). The keyboard auto-detects whether it’s a master or slave.

    1. Sometimes it’s fun to do these things your own way. :)

      Having said that, if you want to do one of these yourself, ergodox is a good place to start. More generally, if you’re interested in building your own mechanical keyboard, take a look at http://deskthority.net/ or http://geekhack.org/ , which are both rather helpful. Right now I’m building a basic variant of the Phantom design.

      I like keyboards as simple DIY electronics projects, since they’re not particularly fiddly, you can reuse a lot of other people’s work if you’re not confident, yet you can still make meaningful customisations, and at the end of it you have something you use every day.

  2. Making sure the design fits correctly the first time is something anybody can do. First of all, get samples of all the non-standard components you’re going to use. Then print out the board on a piece of paper, and put the components on there to check they fit. If you’re using connectors, also plug in the mating parts because they can be wider. For double sided boards, print out both sides, and glue them together with a bit of cardboard inbetween. Make the holes a little bigger than the actual pins so they fit with some room, instead of snugly.

  3. “Again, much to my surprise, the whole thing worked perfectly the first time I tried it!”

    If that’s indeed a surprise, you took a big risk. Instead of first soldering the whole design, start with the power, check that, then add the controller, check again, then simulate the switches by using a wire/tweezers on the board, then add a switch and test it, then slowly add more switches.

  4. I want a USB version of the Focus Electronic Co. Ltd. KeyPro FK9000. It has 12 programmable function keys in two columns on the left end, programmable directly on the keyboard, no software on the PC. It has a NiCd battery (easily replaceable) that charges from the keyboard port (AT or with an adapter PS/2) to hold the PF key functions.

    The numpad also doubles as a six function calculator with four function memory and dedicated LCD display. Sadly, it does not communicate with the computer. Being able to send the display contents to the host would’ve been extra useful.

    That’s not all. It has a 9 key arrow grid with diagonals, surrounding a key labeled Turbo, in red.

    It has almost my favorite key layout. Reverse L shaped Enter with big wide Backspace above it. The only part off is the \ key is at the right end of the right Shift instead of down between the right Alt and Ctrl where it should be. In *that* location is the Prog key.

    Between the left Crtl and Alt is a mysterious, unmarked key which mysteriously does nothing at all. Doesn’t generate a scan code or anything… that can be detected through the cable.

    At the top is a tilting holder into which strips of thin cardboard may be inserted. The keyboard came with several, displaying commands for common programs like MS Wode 5.0, Lotus 1-2-3 R3.1, Wordperfect 5.1, Wordstar 4.0, dBASE IV, and blank ones to make your own.

    The commands are color coded. Blue at the bottom for plain F key commands, then red for Ctrl, next green for Shift and on top black for Alt.

    The keys are delightfully springy and clicky, but not as loud as the IBM M’s twangy buckling spring type.

    For a USB version I’d make just a few changes. Replace the mysterious key with the Prog key, itself replaced with the backslash key. Stretch the right shift into the space vacated by backslash. Give it a USB interface and give it a way to transmit the contents of the calculator display to the host. Might even add a USB (3.0?) hub with a port on each end.

    What wouldn’t I do? NO Win-keys! Most useless additions ever to keyboards and the death knell to my favorite key layout. Since the Win-key advent there have been zero keyboards made with the reverse L Enter, big right shift *and* big backspace. The Win-keys also ate away at the spacebar, typically shortening it to place the right Alt where I used to hit the spacebar with my right thumb.

    With Win-keys the backslash is always the one that gets moved around, either cutting off the top of the Enter (where I want to strike it) or replacing the end of Backspace I always want to hit, or chopping off the right end of the right Shift, yup, that’s where I learned umpty years ago to hit *that* key. The FK 9000 is guilty of that sin, its only unpardonable fault.

    I wonder if I could get anywhere with a Kickstarter to produce an enhanced/improved version of the FK 9000? Can any manufacturer make a keyboard without the Win-keys?

    1. Actually, there are newer keyboards with reverse L enter, big rigth shift and big backspace, they are just quite rare.

        1. Yeah, I’d love to have a USB keyboard with what is for me the perfect arrangement of the right end of the board.

          It’s not like it’s impossible for that design to co-exist with the Win-keys. Simply replace the right Win-key with the menu key and replace *that* key with the backslash key. Thus the sizes and shapes of the backspace, enter and shift can be made proper.

      1. The Prog key (positioned where backslash should be) isn’t remapable. Its function is internal to the keyboard. And of course the calculator would still not be able to send data to the computer.

    1. I’ve got two of these planned, although for different applications. One is more of a shortcut keyboard for PowerPoint to be used at an A/V desk. The normal keyboard will be in front of the computer, while a second keyboard with just keys used for presentations (pg up/down, F5, B, W) will sit in front of the Audio mixer. That way if the video guy is not there, one person can pull double duty at one desk.

      The other is a custom joystick for use with my CAD program. It uses arrow keys along with +/- and shift / Ctrl modifiers to move around in 3D space. I think joystick buttons mapped to keystrokes would be al lot easier to use.

  5. Somewhere I have an old Saitek external keypad that is programmable via the PS/2 port (but sadly only on 9x based Windows, likely by toggling the lock LED signals) or via its own built in barcode scanner. Use the overlay designer software to redefine its keys and design custom graphics. Print, insert the sheet under the clear overlay then slide the scanner lever back and forth.

    They did a second version which used USB and omitted the built in scanner.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s