This Binary Keyboard Is For ASCII Purists

So, you’re a keyboard enthusiast. The ‘board that came from Dell, HP, or whoever made your computer is just not for you. You have an ancient IBM, a decal-free Das Keyboard, or another similarly esoteric text input device. Your typing can be heard three blocks away as the unmistakable clack of bent-spring switches reverberates around you, but you don’t care because you’re in the Zone.

No keyboard can be as high-end as the one you already have, your position in the hierarchy of text entry is assured. But then along comes [Chris Johnston] with his project, and suddenly your desktop looks very cluttered. It’s a binary keypad with only a 0 key, a 1 key, and an OLED display. All input is as a series of binary bytes, so as a hardcore binary typist you’ll need to know your ASCII.

Behind the keys is an Arduino Pro Micro acting in USB HID mode, and running the code you can download from the GitHub link above. It’s a gloriously pointless input device, but we’re sure you’ll agree it has something of the 00110001 00110011 00110011 00110111 about it.

If you think you may have seen this before on Hackaday then you’re not quite right. We have had a binary keypad in the past, but that one had a return key and thus had three keys. This one’s a 2-key ‘board for binary purists.

[via /r/mechanicalkeyboards/]

48 thoughts on “This Binary Keyboard Is For ASCII Purists

    1. Interesting you say that! However, viewed as a state machine, eventhough you only have two input states, you need an additional state to move to the next character; hence a minimum of 2 buttons. I imagine this could be down using a single key and a timer for each character?

        1. Well, that is not the problem. Just a press for 1 and no press 0 will suffice. The trouble is, how does it know which bit you are entering it for? In this implementation, 10 is 1 , 01 is 0 and 00 is move cursor….Anyway you like, you need 3 states, long press = 1, short press =0, even shorter = next? ;)

        2. Very interesting! Morse would work because its no longer a digital system (2 levels of press duration) but in any digital implementation you would again, need a minimum of 3 states !

          1. No, Morse is digital. Digital signals have discrete time and discrete amplitude… in the case of Morse, the signal is either present or absent, and the time unit is the length of a “dit”. A “dah” is 3 “dits” long, the gap between individual “dahs” and “dits” is one “dit” long, the gap between letters is one “dah” long (3 “dits”), the gap between words is at least two “dahs” long (6+ “dits”).

            It forms a variable length binary stream, no different to Varicode used in PSK31.

          2. Oh ofcouse, silly me. Having multiple but finite states in a unit (or otherwise) time doesnt make it analog. Thanks for the concise description on Morse!

    2. Just have a touch sensor channel so touching it is 0 and pressing it gives you 1, the rest just requires the interface focus to cycle through all of the address, data and command register bits in sequence. You can also do tree navigation, and if the tree is adaptive really speed up complex input.

    3. If you think like a PC/microprocessor/sequential logic, then you shall use one key as you said, but combined with a free running clock (for the sampling time). Now it is not only more realistic and complex, but also anxious. :D

    4. I once made a 1 button keyboard.

      It used something like i2c where the keyboard was the master and the human was the slave (the way it should be ;) ).
      An LED would be the clock signal for the human and a single button would be the input from the human.

      It was pretty terrible though, I kept missing a lot of the keys at speeds that still weren’t close to practical :p

  1. I don’t get the 0x31333333 and he is entering the binary in the wrong order or it’s displayed in the wrong order.

    It should be entered Most Significant Bit (MSB) first and displayed left to right – Most Significant Bit to Least Significant Bit (LSB).

    Excellent project all the same!

    All the keys on the keyboard would wear out at roughly the same time and be easy to replace. Maximum keyboard longevity efficiency. Unfortunately, I can’t say the same for your finger joints.

    1. I suffered a little bitlexia reading the hex which is actually 0x 31 33 33 37 which in ASCII is 1337 which is leet for ieet. I still don’t get it lol. Perhaps it was meant to be 0x 6C 33 33 37 ? or is leet sometimes spelt 1337 ?

  2. I just open my hand, the butterfly flaps once. disturbance ripples outwards, disturbing eddies in the upper atmosphere, forming pockets of high pressure air, that act as lenses to cosmic rays, focusing them onto the storage media to flip the bit required….


    1. That reminds me of the early day BASIC computers that had BASIC keywords on each key. It would me much faster to enter programs that way after about 50 years of practice.

        1. I was thinking of the ZX80 and ZX81. I don’t know if they were also made by Timex or if one is a clone of the other.

          I have a CPC6128 and I recently discovered that there was another brand the same PC has made under.

  3. More than a decade ago a fellow from Ohio set sail on a bicycle and made a living selling what he did and saw. He build a keyboard into his handlebar grips ad typed as he pedaled. Maybe this was along the lines you’ve described. You might locate him by googling “winnabiko”. Not sure of the spelling. Fun stuff.

      1. I looked up ly2kw on qrz. He is loaded down. I’ve done a lot of bicycle mobile, both CW and SSB, both QRP 40m and 20m. I used a straight key fabricated from a surplus micro switch fastened to the handlebar. (you can take a squint at in at ( But I usually stopped to do CW. Dallas, Texas roads require 100% attention. Thanks for the things to think about.

    1. No Steve Roberts had a chord keyboard on his bicycle, a series of switches for entering each ascii character as binary. The idea preceded him, and in the late seventies one company offered commercial chord keyboard.


  4. What about unicode support? Do I have to remember the multi-byte sequences needed for box characters (█▓▒░)? ☺
    (And do I have to remember the smiley code too, or is there a macro to type it by holding both buttons down?)

  5. “You have an ancient IBM, a decal-free Das Keyboard…” Actually, yeah I have both of these (well, a Unicomp). The binary keyboard has MX Clears so it isn’t quite as loud.

    I never expected this project to gain this much attention lol.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.