While most people may think that a keyboard is just a board with keys, those who read Hackaday will no doubt know that there’s an infinite variety of beautiful designs to suit any use case. [Peng Zhihui] is the latest to impress us with an excellent custom keyboard that packs several unusual features (video in Chinese, with English subtitles, embedded below). What started out as a simple lockdown project turned into what [Zhihui] imagines to be the ultimate keyboard for his daily tasks. At first glance it might look like just another custom keyboard with mechanical switches, but when you look inside you’ll find it full of clever design tricks and neat features.
When he started on the design of the main key area, [Zhihui] could have used any of the open-source keyboard frameworks. Instead, he decided to do everything himself in order to obtain maximum performance and configurability. This went all the way down to the readout circuitry: rather than wiring the switches in a matrix, as most keyboards do, he used a set of shift registers. This enables the main ARM controller to read out every key separately, eliminating ghosting and allowing any number of keys to be pressed simultaneously. The shift registers are driven by a 4 MHz SPI clock, which means that a full scan of all keys takes just 40 microseconds.
That is brilliant, but what makes this project really interesting is an extension module on the left side of the keyboard that turns it into what [Zhihui] calls a “smart keyboard”. The bottom part of this module has an E-ink display that can show a variety of useful information: current memory usage, email notifications or simply the weather forecast.
Next to the big E-ink screen is a tiny OLED display that works in tandem with a haptic feedback knob. Based on a brushless DC motor, this knob can be configured in various ways to perform several different tasks. It can be set to friction-less spinning mode, which is useful for quickly scrolling through long documents. It can become a multi-level switch to enable or disable features, or a volume knob with virtual end stops. There’s even an option to use it as a physical indicator for things like the current CPU usage.
The keyboard also houses a USB hub to attach other gadgets, as well as a lithium battery to power the haptic knob, since it uses more power than a standard USB 2.0 port can deliver. There’s even a little capacitive touch strip below the space bar, which allows you to use one of your thumbs to switch between different tabs or to use quick copy/paste functions.
If all of this sounds like your idea of a perfect keyboard, then you’ll be pleased to hear that [Zhihui] plans to open-source all hardware and software designs once he’s cleaned up his code. Until that time, you may want to read up on the working principle of a haptic smart knob, or find out what’s the most efficient way to read out a certain number of buttons with a microcontroller.
Can’t a matrix with diodes have an arbitrary number of keys pressed at once, without ghosting?
Yes.
It can, but it needs to use a specific USB protocol to handle more than 6 keys at once.
That is cool, because it is a left-handed design! .-)
Olaf
I ASSumed they put the knob on the left hand side because their right hand was presumably mouse-occupied. Not sure which is correct though.
You made a great design, with a perfect opportunity to expand in the future and adapt to various markets. I like the way you think about human interaction and improvement of productivity.
Not to dismiss this but what we really need is a custom keyboard with e-ink key caps.
Are you thinking keycaps that you take off to update the legend or the near impossible task of wiring up every key to the PCB at the base and the moving part?
Not sure I really see the point either way, its cool sure but it shouldn’t matter what the key has printed on it, as you should know your native keyboard layout well enough to use even an entirely blank keyboard well enough really…
The former doesn’t make sense, why not just use relegendable keycaps with a piece of paper in this case, rather than e-paper? You’d also be removing the e-paper display to update them externally? Am I misinterpreting what you’re saying, because this makes zero sense and would be overcomplicated at the very least.
As for the latter, display keys have existed for awhile now. Razer’s old Switchblade stuff, Art.Lebedev’s Optimus products, etc. Products like the Stream Deck and Loupedeck/Stream Controller aren’t comparable. There’s also been other concepts, and even DIY solutions that I believe have been promoted on here. Wires aren’t entirely an issue, there’s ways around it, Scissor switches with some slack wire are pretty much the best solution, adapting Asus’ ROG RX switches would probably be the optimal format as there’s a hollow stem with a keycap interface that isn’t based on the stem. There’s also the fact that there’s display modules that work over UART/I2C/SPI, but the problem is that most of these are breakout modules that aren’t compact, ideally the board wouldn’t extend beyond the display.
As for the second half of your comment, I think you’re missing the point. The point isn’t to display just your typical native language legend, the point is to display more than that. Take a look at Art.Lebedev’s Optimus Maximus, Optimus Popularus, and Optimus Aux for examples of what this would be like. For a good analogy, look at your phone’s keyboard, how you have your native language legend, how you can switch between languages, how you can long-press for accents and alternative characters, how you have multiple number and symbol legends, how you have emoji, emoticon, etc. legends. The point is expandability within a single device, this can include the previous plus macros, functional macros, macros for platform-based emotes with their relevant PNG such as how Twitch and Discord handle custom emotes, macros for alt-code symbols, unicode symbols, etc. If you’ve never seen how deep the macro game gets, just look at some of former Linus Tech Tips’ Taran Van Hemert’s multi-keyboard setups, he has some content on LTT about keybaords and his ridiculous amounts of macros; and while his use case seems a bit overboard, this is actually fairly common to have a spare full keyboard remapped as a full macro keyboard, but the point of this argument is that all of these macro functions can be consolidated into a singular device that’s easy to read with digital relegending. If you’ve ever been in a field of work or study that’s symbol-heavy, like maths and sciences, and the specific program you’re working within doesn’t have clickable symbols, you’d understand how annoying memorizing alt-codes or having a massive unsearchable cheat sheet of copyable symbols can be. And while the Stream Deck and Loupedeck/Stream Controller aren’t comparable via mechanical design, they are comparable within functional design, as they provide on-the-fly macros that have a relevant display component, so that you’re not memorizing what macro you have per blank key per function layer.
E-paper however currently has a ton of downsides. The only benefit is power consumption as it has a powerless static state. Problem is that you need to be in a lit environment to make use of this, otherwise you need an edge-lit display as they’re a reflective display; and edge-lighting isn’t that great, but there’s not real alternatives like higher reflectivity pigments, transparent pigments with a way to pipe the light to them from a PCB-based LED, etc. But the largest issue is the component needed for an e-paper key, the size and aspect ratio seemingly do not exist in the wild, short of being a full-sized company that can tap into the custom supply chain, assuming a manufacturer can even produce these; which is why these kinds of projects and products always use LCD and OLED panels, the supply chain is there even for the non-commercial market.
Though, I have hopes for mLED or μLED. They’ll have the density and color to be comparable to OLED, they should also be able to have a static state that doesn’t utilize high refresh rates when not being used as an active display which would peg them somewhere between OLED and e-paper. But one benefit I’m hoping for is easy scalability of these displays, I would imagine there’d be a point where they’d be akin to perfboard, just snip to the size of the project, without major repercussions as long as the array wires are still intact; and more scalability on the manufacturing side of things. Give it another decade’s time and we should be seeing small μLED units, assuming that the panel manufacturers don’t abandon the technology before then.
Digital relegending is an interesting rabbit hole to go down. I’d suggest you look into it more, as your surface value assumptions of it don’t actually match the legitimacy of the technology.
Yes I’ve seen keys with screens in, and can see how it may be useful (If I had to label myself as anything it would be as a mathematician).
But its a very tricky thing to actually make work, and make work with e-ink as a ‘keycap’ rather than an integral part of the key I’d say is currently entirely impossible – at least when you define keycap and key sizes as something very much in the normal size range.
Where putting a few electrodes in a jig that allow you to feed the pretty damn high voltages e-ink requires through the keycap to change the display off the keyboard seems very much actually possible and beats slips of paper for highly repeatable position and easy of change.
I don’t oppose the idea of active displays in a key, just the idea you can do it as a keycap – it may become possible, but right now it doesn’t seem at all plausible, keycaps are too damn thin and small!
I like that he added a tooltip on the tab key to explain what it does
Everybody knows what the Tab key does. You press it when you want a diet pop!
B^)
It’s beautiful, the question nows is how useful are these screen and nob…
The scanning matrix has nothing to do with the USB protocol. The reason for the shift registers is to lower the number of PCB tracks that have to go through each individual row (because of the slotting)
I love the way he says “Well that’s it for my first try”. I am just a little bit an awe at the finished product.
He should see my first tries.
Hey, looks great! For a first concept, the integration looks really solid.
If you should plan to use a rotary haptic feedback actuator in one of your next projects again, we might have an alterative technology for you to generate more intricate haptic force feedback on a smaller footprint. For our HAPTICORE haptic technology, we use MR Fluid (a smart material consisting of ultra-fine iron particles that change their rheological state when a magnetic field is applied) instead of a motor. This allows us to generate much more precise ticks and barriers, but also speed adaptive & directional feedback.
So feel free to check out http://www.xeeltech.com/hapticore and let us know if you are planning a new project. 😉 Looking forward to hearing from you.
Those prices seem like its unlikely to ever be put in a keyboard.
Hey, thanks for your comment. You’re probably referring to our Eval Kits, which are designed to make integration easier for our business customers. However, our haptic actuators are already available in consumer products, e.g. in RAZER’s Naga V2 Pro, allowing you to adjust the haptic feedback of the scroll wheel to your preferences. https://www.razer.com/de-de/gaming-mice/razer-naga-v2-pro