Settings

Theme

Show HN: Threeboard – a full-size mechanical USB keyboard with only three keys

github.com

92 points by taylorconor 4 years ago · 39 comments

Reader

stavros 4 years ago

Here's my 5-key equivalent https://www.stavros.io/posts/keyyyyyyyys/

  • Xevi 4 years ago

    I've actually thought about creating something like this. It looks pretty good for combating RSI. Because it would allow you to have your arms in any position. However, I think it would be necessary to have two of them, one in each hand. And maybe a small trackball on one of them. It would probably also help to have straps on them that wrap around your hand, so you didn't need to grip them to keep them from falling to the floor.

    • stavros 4 years ago

      Yes, all these are good additions if you intend to use the keyboard for actual text entry, agreed.

  • gigaflop 4 years ago

    Haven't I seen you in ai03's Discord channel? I would have gone by a different name in there (this was from before the name change of the server, I think), but your handle is very familiar.

oneoff786 4 years ago

You know people who use the DSA layout type 30% faster than the standard ASD.

  • darknavi 4 years ago

    I can't stand when I sit down at a co-workers desk to help them and they configured a DSA layout!

    • alexvoda 4 years ago

      I my day we used the

      A

      S

      D

      layout.

      It used to be all about vertical scaling. Now everyone is going horizontal.

MikeTheGreat 4 years ago

I saw your answer to 'how to get into hardware design'. If you're willing to answer noobie questions I've got another one for you :)

I put together an ErgoDox by following the directions (and by soldering. Lots of soldering :) ) but I don't really understand how the circuits work.

In particular I'd like to put together a keyboard that connects the switches using wires instead of a PCB, but I don't know why there's all the ICs here and there, or what they're doing, or even where to find a circuit diagram of the ErgoDox, nor how to analyze those circuits.

Could you recommend a good 'next step' for getting more familiar with the various parts that go into something like an ErgoDox?

I'm enough of a noob that I'm not going to be surprised if you just link me back to your repo here (in which case I apologize in advance) :)

  • taylorconorOP 4 years ago

    I tried to give a bit of an overview of this in the 'hardware design' section of the documentation [0]. It has some external links to further documentation and tutorials in it too. But the learning curve is very steep.

    I'd maybe suggest looking for an electrical engineering intro book or course at a level you feel comfortable with, just to get an idea of the basics.

    For the ErgoDox keyboard, the schematic is actually available on their own repo [1], but it's going to look quite intimidating initially. But I found a pretty great looking article explaining the electrical design of the ErgoDox that you might find useful [2]. The ErgoDox actually looks very similar electrically to the threeboard, it uses the same MCU (atmega32u4), but of course has the extra complexity of communicating with the other half of the keyboard over the 3.5mm connector.

    [0]: https://github.com/taylorconor/threeboard/blob/master/docume... [1]: https://github.com/zsa/docs/blob/master/ErgoDox%20EZ%20Schem... [2]: https://kandepet.com/dissecting-the-ergodox-the-ergonomic-pr...

    • MikeTheGreat 4 years ago

      Thank you for sharing the [2] link - I think that's what I'm looking for. I read through the 'big' ideas (like how the keypress matrix works, etc) but I wasn't clear on why there's like 3-6 other ICs / components in the ErgoDox too - stuff like "Why is this resistor here?".

      I was thinking of trying to make a keyboard that used a much cheaper CPU (like one of those $1-2 ones from China, or the Pico Pi) and realized that if I swap out that out that I'd have no idea where to put resistors, or why :)

      I'm definitely going to look through your stuff too - a 3 key keyboard might be a much easier way to start, actually :)

  • jrockway 4 years ago

    You don't need a PCB. The Ergodox uses two ICs. One is the microcontroller; it is a mini computer that reads the state of the keys (which ones are pressed right now) and emits the relevant USB messages so your computer interprets those as keystrokes. The other is an i2c i/o expander that reads the keys for the other hand exactly like the microcontroller does. (The microcontroller periodically asks it to scan the matrix on its behalf.) It exists so that only four wires need to span the gap between the two hands, instead of one wire for each row and column. You could, of course, just treat both halves as one keyboard and run the matrix wires between the two sides, and omit the i/o expander. It's basically an optimization for split keyboards. (I have built ergonomic keyboards before, and just make it one big thing instead of two halves. Simpler. But takes up more desk space and is less flexible.)

    Each key also has a diode which might look like an IC. This is to prevent "ghosting", where pressing a certain combination of keys looks identical to pressing another combination of keys. The lowest of low-cost keyboards don't include this, because if you only press one key at a time, ghosting can't happen. (Most people don't press more than one key at once, except for modifiers like Shift + letter. They work around this by handling modifiers specifically, often not including them as part of the matrix.) Here's an explanation: https://deskthority.net/wiki/Rollover,_blocking_and_ghosting

    The search term you want for building a keyboard without a PCB is "handwiring". Here are some guides: https://geekhack.org/index.php?topic=87689.0 https://matt3o.com/hand-wiring-a-custom-keyboard/

    I thought I had some better resources in my bookmarks, but I don't.

  • gigaflop 4 years ago

    Here's a keyboard PCB I designed a while ago: https://imgur.com/gallery/lZglox7

    I followed the ai03 tutorials (https://wiki.ai03.com/books/pcb-design/page/pcb-guide-part-1...) to design the MCU area of this (The 32u4 and supporting hardware), but if you look at the traces, you can see that the switch matrix is dumb-as-bricks and can easily be replaced with some kind of handwiring.

    Don't try to replicate the diode banks if you want sane wiring. The linked tutorial assumes someone is designing for function instead of form.

  • arnado 4 years ago

    I actually built my first mechanical keyboard hand wired, it helped understand the basics of how it all worked.

    I don't remember if it was this exact guide, but I'm pretty sure I was following Matt3o's guide when I did it: https://matt3o.com/hand-wiring-a-custom-keyboard/

    edit: it may have actually been this one: https://deskthority.net/viewtopic.php?f=7&t=6050&start=

  • cellularmitosis 4 years ago

    Search for a 6-key handwired tutorial, like this one: https://medium.com/cracked-the-code/a-complete-guide-to-buil...

    The only parts you need are switches, wires, diodes, and a Pro Micro clone from eBay.

    I recommend 6-key because they are supported out of the box by QMK and there are plenty of tutorials.

    It looks like the tutorial I linked to above doesn’t actually explain how the matrix / diodes work, so you’ll want to google for an explainer.

    Happy hacking!

sxv 4 years ago

I did some back of the envelope calculations for fun. A 5-key setup would allow one-hit triggers of:

abcdefghijklmnopqrstuvwxyz and space, period, apostrophe, enter.

Then add a "shift" key and you add one-hit triggers of A-Z, backspace, question mark, tab, esc.

Then you could get 60 additional output values with double-tap shift and hold + key (30) and double-tap shift and release + key (30).

csdvrx 4 years ago

Alternatively, get a 4-key board off amazon, popular for playing OSU

Example: https://www.amazon.com/4-Key-Programmable-Mechanical-Keyboar...

  • taylorconorOP 4 years ago

    These kinds of things are distinctly different, assigning macros or keycodes to specific keys. The threeboard is not a macropad, it's a fully-functional keyboard that can type anything, it just requires specifying the keycode to type or programming in macros to type words/sentences.

    • csdvrx 4 years ago

      That's wrong. The 4 key OSU keyboard is a 4 key keyboard emitting keycodes. I know because I have one (!!)

      Some of them even use QMK so you can assign anything you want.

      • taylorconorOP 4 years ago

        My point is that they're macro pads where you can assign keycodes or keycode combinations to specific keys. The threeboard is itself capable of determining which keycodes to send and is not limited by what it's been programmed to do. So it's fully-functional in the sense that you can use it to type anything, it'd just take a really long time and make you very unhappy!

xcambar 4 years ago

Well executed, usable strictly speaking but practically useless. Perfect!

1MachineElf 4 years ago

I love small keyboards, but with only 3 keys, you may as well just send ASCII codes. Nitpick aside, this does appear to be a quality project. :) A design document, user manual, and graphical simulator are lacking in many other niche keyboard projects.

  • taylorconorOP 4 years ago

    It does just send ASCII codes (well, USB keycodes)! It's not supposed to be practical, just to be technically interesting and useful to learn from!

empressplay 4 years ago

How about a two-key version that uses morse code? one key for dash, the other for dot. Or maybe the third key on the threeboard could be space / stop? (one press for space, two presses for stop?) Could be neat for kids to learn morse code

couchand 4 years ago

Very interested to see that the simulator is built with simavr, a project I've been hacking around with a lot recently. As I understand it, enabling this kind of application is exactly the vision simavr was built with.

Good work!

sc__ 4 years ago

Cool! Can you recommend any reading resources for getting into hardware design?

ljm 4 years ago

I wonder if I can program my novelty Stack Overflow ctrl-v/ctrl-c threeboard to work this way.

friendlydog 4 years ago

It seems the A key takes the brunt of the typing, did that factor into your design?

  • taylorconorOP 4 years ago

    Yes the A key is the most frequently used, as it increments the USB keycode in all layers. An alternative would be a mode that allows setting individual bits in the keycode byte, but that's still quite arduous.

axiosgunnar 4 years ago

Now use that to code Brainfuck

_benj 4 years ago

But, is it clicky enough? ;)

  • taylorconorOP 4 years ago

    Put whatever switches you want on it and it can be!

    • _benj 4 years ago

      On a more serious note, that’s a really cool project!

      As it happens, I spent quite a bit of time last night learning about the qmk firmware and was looking around for a “keyboard development board”…

      Do you think that you’d aim to grow the firmware to support bigger boards?

      • taylorconorOP 4 years ago

        For me personally, no. But I think the threeboard firmware is small enough right now that it's very readable and understandable, so it could make a good starting point to fork and adapt to different boards!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection