Mechanical keyboards are the in thing right now and building your own is at least two extra levels of nerd cred. This project, entered in the Hackaday Prize, is a DIY keyboard unlike you’ve ever seen. It is a fundamental shift in the ideas of how a computer keyboard can work. It’s a double action keyboard. Press a key lightly, and one character will show up on the screen. Press hard, and a different character will show up on the screen. You’ve never seen anything like this before.
[Jaakob] designed this keyboard so that each keycap would have two switches underneath. He did this by taking regular ‘ol Cherry MX switches and modifying them so the ‘plunger’ would stick out of the bottom of the switch when it was fully depressed. These Cherry switches were mounted to a piece of perfboard, and a small tact switch soldered underneath. It’s an idea similar to what’s found in touch-sensitive MIDI controllers or the other type of keyboard. The difference here is that instead of using two switches to sense how hard a key is being pressed, it maps to two different functions.
Once [Jaakob] figured out how to put two switches under one keycap, he wired up a matrix, attached a Teensy, and took a crack at the firmware. The build isn’t quite done yet, but this is one of the most innovative DIY keyboards we’ve seen in recent memory. There’s a lot of potential here, and this method of ganging two switches together still allows for the fantastic clack and great feel of a mechanical switch.
31 thoughts on “Hackaday Prize Entry: A Double Action Keyboard”
this would be awesome for capitalization
I’M TOO ANGRY TO TYPE MY PASSWORD RIGHT NOW
which is an unintended but brilliant feature, no more rage posting or over excited impulse buying.
I AM NOT YELLING BUT INSTEAD I AM FURIOUSLY TYPING IN ORDER TO CONVEY MY E-RAGE.
That username gives this comment a feeling of serious authenticity.
Finally. Writing a rant in all caps can be satisfying !
been wanting to place a force sensor beneath a keyswitch or membrane switch so i could have analog control with my wasd keys. expose it as a 2 axis joystick or mouse. be really useful for games and such. of course i dont think i could afford the bom on this kind of build.
You could start small and make a ‘numpad’ version. :)
not need to use force sensor, just use qaopm :)
Emacs users could map the second level to Ctrl, and then they wouldn’t suffer so much carpal tunnel. Or they could just learn Vim.
Snark aside — this is cool.
Could be useful in games for the WASD keys pres light for walk and press hard for run or modifiers for MMORPGs or real time strategies.
Nobody ever considers ergonomics though.
And when they do it’s all cargo-cult science and guesswork.
When I read “double action” I was wondering how the keys would work on the pull stroke.
Same here. I was thinking it was going to be some insanely difficult to master wacky chording keyboard where pressing a key entered one letter and releasing it entered a different one.
I thought he replaced every key with a double throw push switch like the shift key on the c64. it would work, although every key would take two presses to reset.
That is a horrifying thought for me!
Man it would be expensive, but what a frustrating prank!
I like this; ideas…
A full click of the backspace key to erase a whole word at a time.
Full click of the escape key closes all tabs.
Lots of macros.
Chording. Firing off macros. As you suggest, it wouldn’t need to be every key to be useful.
They don’t make e’m like this anymore. +1
I don’t think that they EVER made them like this! +1!
I mentioned a variation on this idea the other day, except I suggested touch sensing for one level and press for the other, but the idea of one key two actions is the same and I doubt I was being original either. In fact this guys project would be older than my posting, look at all that work! Personally I like another person’s suggestion of foot pedals for modifier keys, a bit like playing an organ. It has the additional benefit of getting your legs moving, which is a great idea for people who otherwise don’t get enough exercise because they are in front of a keyboard for so many hours each day.
I gotta say, I’m a bit bewildered by this obsession with noisy mechanical key switches. I far prefer my keys to be quiet, the quieter the better. Rubber membrane key switches are reliable, and more importantly, quiet.
That said, this is a pretty cool mod, and I can see many potential uses for it.
My hatred for rubber keys goes all the way back to my first tv remote with its progressively degrading rubber buttons that force me to press harder over time in order to make the circuit. You can still see that effect on cheap rubber dome keyboards when you press slowly and lightly until the key is full pressed and no action is performed.
I like the mechanical key switches for their feel. I don’t care about the noise, because my brain just automatically tunes it out. It would probably annoy me if someone else next to me was using a noisy keyboard, though.
“It’s an idea similar to what’s found in touch-sensitive MIDI controllers or the other type of keyboard. The difference here is that instead of using two switches to sense how hard a key is being pressed, it maps to two different functions.”
ITYM ‘velocity-sensitive MIDI controllers’ and ‘how quickly a key is being pressed’, no? I don’t see a lot of keyboards (either/any kind) but they did exactly this sort of thing on a homebrew AXiS49 work-alike isomorphic keyboard which you are probably already including in that reference: http://www.youtube.com/watch?v=KfjEYu79J-4
I would think being pressure sensitive is way easier than trying to be velocity sensitive in that way because it takes a bit more force to trigger those tactile switches underneath than it would to just move the keycap at lower speeds. So it raises the lower limit on the physical velocity to get mapped to MIDI’s lowest velocity (0x01). Probably the usual thing to do in firmware is just count down and wait for the second signal and send a note anyway with that lowest velocity when time runs out– so that everything physically slower, or you not even hitting both, just gets clamped to that. (I guess– didn’t ask.) And of course I don’t know if it turned out to be a real issue for them. And of course in that kind of keyboard I’d really want to use dozens of my favorite dual photointerruptors (who saw that coming?) for watching the plungers, take the springs’ force out of the equation, freely choose whatever spring resistance felt right, and pay lots for it :D
It finally returns to me there *are* force & pressure sensitive MIDI things but that’s channel pressure and aftertouch so it would require some kind of analog sensor, not merely two switches.
(also of course something just like this could still be mapped to any parameter or trigger anything by “normal” vs. “more” force, not necessarily analog)
I think I gotta try putting a piezo or two in my keyboard and see how far I get with just that.
Problem: keys directly above the piezo hit harder (and I’m too lazy to counter this in software). Maybe measuring a bit further off the actual keys helps.
With that sorted out I guess it’s not too hard to hit above the hardest hits I use in normal typing.
One could map two different code pages for typing bilingual text, or two different keyboard layouts for programming/documentation.
The venerable Apple /// did this with its cursor keys. Press them as usual, and they move the cursor, and auto-repeat if held down. Press a bit harder, and there’s a slight click and the auto-repeat speeds up. It’s quite subtle. Only the four cursor direction keys did this. Remember that this was in the days when we only had cursor keys to move the cursor around when editing — no mouse!
That one feature of the Apple /// was what got me started with my computer collection. I just had to get one to try out the two-speed auto-repeat!
Please be kind and respectful to help make the comments section excellent. (Comment Policy)