Unhappy Hacking Keyboard

Why have a Happy Hacking Keyboard when you can have an Unhappy Hacking Keyboard. Real programmers only need a 1 and 0 key.

Similar projects worth following
A familiar product to anyone who browses online mechanical keyboard shops is a Cherry MX switch pack. Ten bucks gets you one each of a Cherry MX black, brown, blue, and red switches. The intent is to try out each switch before you commit to buying an entire keyboard fitted with them.

Of course, it would be nice to have those switches actually do something, and real hackers only need a 1 and 0 key...


...because real programmers only need a one and a zero. And a space. A return key as well, I guess.

  • 4 × Cherry MX switches Any colour you like
  • 1 × Lasercut acrylic plates See the github \hardware\plates folder

  • Boards Arrived & Assembled

    Benchoff06/19/2014 at 03:47 5 comments

    That is the current state of the Unhappy Hacking Keyboard. More pics:

    I have two copies of this board soldered up with the requisite USB hardware. For some reason, Cherry Black switches are out of stock everywhere, and I can't seem to get a Cherry MX Blue/Brown/Black/Red switch sampler pack. That's sort of a bummer, seeing as how a switch sampler pack is the entire purpose of this device. Mouser did have a bunch of blues, so clack clack clack.

    The only thing left to do is to get the USB keypad working. I have everything compiling and supposedly enumerating on my Windows 8 box. I'm getting a 'Device Descriptor Request Failed' error in the Device Manager, though. This is good news because I'm probably not fucking up the V-USB code too much. I'll update the project when the entire thing works.

  • A description, a board, and a repo

    Benchoff05/29/2014 at 09:44 0 comments

    The point of this project is to do something useful with those Cherry MX switch sampler packs you can pick up at places that sell mechanical keyboards. The idea behind these sampler packs being that you can try out each of the different 'flavors' of Cherry switches without committing to buying a whole keyboard loaded down with one type of switch. It's a neat idea, but why not make something useful with those switches?

    A Brainfuck keyboard would require at least five keys, so I'll have to settle with my version of a 'true programmers' keyboard. There's a 1 key, a 0 key, return, and a space bar. That's all you need. Oh, and it'll actually be a working keyboard.

    There's the board. I'm using an ATtiny85 with V-USB to create a USB keyboard. No switch matrix, just simple pullups on each of the switches. Standard V-USB schematic with zeners and such.

    The switches will be mounted to an acrylic or delrin plate unless I can find someone to cut some 16 gauge stainless for me. Switches will be soldered onto the board. it should look pretty nice when it's all put together. So far, the plastic plates are ordered, the PCB is heading for fab, and I'm here dicking around looking for some nice keycaps for this thing. If anyone has any suggestions, drop a note.

View all 2 project logs

Enjoy this project?



mightymightyDR wrote 10/03/2021 at 01:41 point

I just built this and tested all the hardware to be soldered correctly.  I can't get it to enumerate either.  Read the logs and it never said the OP got it to work, anyone able to get it to enumerate? thanks!

  Are you sure? yes | no

AbundanceOfPotentialUses wrote 12/15/2021 at 15:38 point

Try changing the frequency in usbconfig.h to 16.5MHz, currently it seems to be set to 16MHz which requires a crystal.

  Are you sure? yes | no

uggima wrote 11/13/2020 at 11:04 point

Nice to see V-usb in use still, and yes it will run on 85, you can use the polling signal (iirc 100hz?) from usb when connected to tune the internal RC oscillator up to 12mhz which will be fine (unless the chip's temp goes up 15c)

  Are you sure? yes | no

danielcanaday wrote 11/10/2020 at 21:56 point

From the V-USB documentation, "Runs on any AVR microcontroller with at least 2 kB of Flash memory, 128 bytes RAM and a clock rate of at least 12 MHz." Unless you have some trickery I'm not sure how this will run with the ATTINY85's 8 MHz internal clock.

edit: Just looked into this, looks like the system clock can be configured using the internal PLL for Fast Peripheral Clock Generation. 16MHz should be possible. Although you may want to measure the actual F_CPU using an O'scope and update the define. Timing is everything with USB peripherals.

  Are you sure? yes | no

Mark Jeronimus wrote 04/02/2019 at 17:25 point

Excuse me, but Real Programmers... uhm, lets not get into that rabbit hole.

  Are you sure? yes | no

Dylan Brophy wrote 07/08/2017 at 14:18 point

The only thing this need is LEDs in the Cherry MX switches for a backlight.  It should be controlled by a secret key combination(s)

  Are you sure? yes | no

Dr. Cockroach wrote 02/12/2017 at 01:32 point

This is an idea that could well be used on my little? project :-) Nice job.

  Are you sure? yes | no

Stephen wrote 06/13/2016 at 08:09 point


  Are you sure? yes | no

Stephen wrote 06/13/2016 at 08:09 point

Hahahahahahahhaha snort, spit, choke, hahahahahahaha!

  Are you sure? yes | no

Alvaro Barcellos wrote 06/10/2016 at 20:29 point

As space is just another ascii character, i will sugest to substitute it with a backspace, for correct any bit errors.

  Are you sure? yes | no

Benchoff wrote 06/10/2016 at 20:42 point

real programmers don't make missteakes

  Are you sure? yes | no

Alvaro Barcellos wrote 06/13/2016 at 14:35 point

I know, I used tame card punchers.

  Are you sure? yes | no

Terry Daniels wrote 06/11/2016 at 21:42 point

Isn't backspace also an ascii character? I guess it really just depends on whether you'd use space or backspace more?

  Are you sure? yes | no

John Boyd wrote 12/22/2015 at 03:31 point

Just curious, did the firmware work as it is on GitHub? I compiled/programmed the firmware using WinAVR successfully, however the device does not enumerate over USB when I plug it into my PC. It shows up as an unknown device because "USB descriptor failed". 

It has been years since I've programmed an AVR, so I was curious if there are any blatant 'gotchas' with an AVR VUSB implementation you know of.

  Are you sure? yes | no

John Boyd wrote 12/22/2015 at 03:35 point

Do fuses need to be set perhaps?

  Are you sure? yes | no

danielcanaday wrote 11/10/2020 at 21:43 point

This. if you haven't already you must set the fuse to disable reset. This will require HV programming. 

  Are you sure? yes | no

uggima wrote 11/13/2020 at 11:16 point

Ah as far as i remember doesn't need reset disabled, but depending on which setup your using like the two diode version used here is a bit flakey at times. Have had retail boards based on it just not work for 3 months then randomly decide to start working again (digispark). Found USBlyzer somewhat useful to get some more info than window's "don't know what that thing you plugged in is"

  Are you sure? yes | no

Kenneth Trussell wrote 11/18/2015 at 21:49 point

For 3 years, I have been teaching CS classes at a college as an adjunct prof. We cover binary number systems pretty extensively. After that part of the class, I always have drawings for "binary" prizes, such as a coffee mug with the "There are only 10 people in the world..." saying, a binary wall clock, a binary watch, etc. This keyboard would be a great addition to the prize pool!

  Are you sure? yes | no

Harrison Kyle VE2HKW wrote 02/19/2015 at 03:48 point

Not only for "programmers" this could also be used for morse code "keying". I once came across this keyboard for an android that only had dot and dash. You could always get the period and hyphen key instead of a zero and a one. Just a though.

  Are you sure? yes | no

steeven wrote 02/19/2015 at 00:09 point

I know you made this for programmers but I know alot of people that would find this very useful to play a rhythm game called osu! ( the game requires to keys to click and mechanical switches are a must)

  Are you sure? yes | no

IT-Wizard wrote 08/02/2014 at 16:37 point
Funny ! :o)

  Are you sure? yes | no

davedarko wrote 05/29/2014 at 06:48 point
Nice "recycling"-project! But is there a reason why there are no vcc and gnd connections on your pcb image?

  Are you sure? yes | no

Benchoff wrote 05/29/2014 at 07:24 point
The gnd and vcc are polygons in the board. you can see the dotted outline, but when they're rendered, you can't see much else.

  Are you sure? yes | no

davedarko wrote 05/29/2014 at 07:26 point
ah, ok.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates