With hackers and makers building custom computing devices that don’t necessarily follow conventional design paradigms, there’s been a growing demand for smaller and smaller keyboards. Many of the cyberdecks we’ve seen over the last couple of years have used so-called 60% or even 40% keyboards, and there’s been a trend towards repurposing BlackBerry keyboards for wearables and other pocket-sized gadgets. But what if you need something even smaller?
Enter this incredibly diminutive keyboard created by [TEC.IST]. With 59 keys crammed into an area scarcely larger than three US pennies, it may well be the smallest keyboard ever made. The PCB has been designed to mount directly onto the back of a Raspberry Pi Pico, which is running some CircuitPython code to read the switch matrix and act as a standard USB Human Interface Device. The board design files as well as the source code for the Pico have been released on the project’s Hackaday.io page, giving you everything you need to spin up your own teeny tiny input device.
Of course, you probably won’t be breaking any speed records when banging out text on this thing. We know from past Hackaday badges that an array of microswitches make for a functional, if somewhat unpleasant, method of text entry.
So HE’s the one that bought all the damn B3U-1000Ps.
Aww, cmon, there are subs for this part! I love this form factor for buttons!
only one alt not for me and whole french, chech , polish etc
ALTGR MUST be on keyboard!
I don’t know anything about ALTGR but I would do a lot for a keyboard with an actual dedicated Compose Key in a comfortable to use location.
All my keyboards come with one. Its located directly above the left shift key. Unfortunately its often misconfigured as a sort of shift toggle, really annoying when you hit it by accident.
https://en.wikipedia.org/wiki/AltGr_key please this is altGR for many languages support
first link
Pressing [Ctrl] + [Alt] replaces [AltGr] :)
i like chocolate layout , simple and usefull
You think about this? https://klawiatura.files.wordpress.com/2020/12/kl.jpg
No one is ever thinking about that ‘layout’.
A technical accomplishment for sure but one should consider if smaller is better. There is actually some research in this department: https://web.archive.org/web/20070303133526/http://www-static.cc.gatech.edu/fac/Thad.Starner/p/030_10_MTE/mini-qwerty-chi05.pdf
Wow! Thanks for noticing the research!
You are going to need to keycaps for sure.
That would be a perfect way to update Derek to a smartphone!
https://www.youtube.com/watch?v=vurEe3-xgNw
This is so tiny, it’s probably completely useless.
A simple solution would be to use a chorded keyboard. A Braille keyboard to be exact. That’s seven keys, including spacebar. Add Shift, Ctrl, Alt, Enter and Backspace and you end up with 12-key multi-function keyboard that can be used for many different projects. On a side note I learned to read Braille by hand in six months. After another six months I forgot most of it.
morse code is fastes than t3 or other dictuionary input typing solutions. but many people no need this
M5 has/had such a tiny keyboard for their M5stickC https://shop.m5stack.com/products/cardkb-hat of course i bought one just to have it ;) Together they make a cool mini cyberdeck, shame that the battery doesn’t last very long.
I just bought a Blackberry Q10 keyboard, just to have it. I might even wire it up later.
A chord keyboard would make more sense!
Agreed, it could be as small and used without looking!
I’m looking for a method of reading 80+ switches closed simultaneously, to control as many neopixels as there are switches. Scanning or polling the switch matrix to setup an array controlling the neopixels would work. If it needs an Arduino or RPi reading the switches and another controlling the neopixels, that would work, if they can communicate over a simple cable.
True NKRO like that will require N inputs – a switch matrix won’t get you there. On the upside, there are high pin count (e.g. 42) I2C and SPI I/O expanders. Most of which have programmable pull-ups included. So, for ~80 keys, you’ll need ~2 expanders ICs. Pretty straightforward solution, really.
An FPGA is also an surprisingly cost-effective option for 80+ keys – and they have other advantages, such as highly customizable debounce – but they’re almost certainly overkill for a low performance keyboard.
With a diode per switch a switch matrix will absolutely give you true NKRO. You don’t need an input per switch, that’s just madness. You put a diode between either the rows or the columns and your switches, that means adjacent pressed keys don’t conduct during incorrect parts of the scan.
Hey, Shannon – I appreciate your reply, and I concur. I see now that I fell victim to having both too much and too little experience.
In a previous (commercial) design, I had the need to handle a great multitude of discrete inputs, with a heterogeneous mix of characteristics and moderate speed (high kHz * n inputs) – a situation that genuinely called for dedicated hardware to handle well. And so, that was top of mind.
However, although I was familiar with the diode matrix scheme on an academic level, I’ve never actually designed/built a keyboard per se. So, yeah, . Clearly both the requirements and the solution are much simpler.
For _completeness alone_, I’ll mention that the design/s of “madness” (totally agree) do have the benefit of particularly low latency – since most, if not all of the ICs mentioned are able to fire interrupts on level change. Some even have programmable, per-key debounce. (I thought that was completely common sense and yet cool when I first noticed that available option.) How important these features are, vs active scanning and debounce, naturally depends on the application.
Obviously this is just one of a zillion pages on the subject, but I found it to be succinct and helpful when trying to rejigger my thoughts on keyboard matrices:
http://blog.komar.be/how-to-make-a-keyboard-the-matrix/
Again, thanks for the feedback and the recommendation. Cheers.
This is super cool. I can’t wait to see someone make a DIY Nokia N900 type thing…