The Expletive Keyboard
A month or two ago, I was browsing Instagram and saw the post in the screenshot. It was what appeared to be a photoshopped keyboard that only contained the letters necessary to tell someone off. I thought it was funny and decided to build a real, functional version. This is the result!
It does, indeed, work. Plug it into a computer's USB port and it will show up like any other keyboard. Other than the important letters, there is also a space key, a backspace key, and an enter key. The enter is actually a "+" meant for the numpad, which I used because I design the case with the wrong measurement for a normal enter key (2u instead of 2.25u).
Supplies
This will work with any Cherry MX-compatible key switches. I used:
- 10x Cherry MX key switches (Amazon link)
- Key cap stabilizers (Amazon link)
- Key caps (Amazon link)
- Raspberry Pi Pico development board (Amazon link)
The key caps for this project are tricky. Most key caps are shaped depending on the row each key sits in. So your "Y" key is shaped differently than your "K" key. This is a problem, since the keys won't be in normal locations here. For this reason, you need uniform key caps. Both XDA and DSA profile key caps are uniform. Furthermore, because this keyboard required two "U" keys and key cap sets only come with one, I found a set where the numpad asterisk was the same color as the alphanumeric keys.
Also keep in mind that key switches are either PCB-mount or plate-mount. You need plate-mount switches for this project. The same goes for the stabilizers.
Case Design
I designed the enclosure in Autodesk Fusion 360. The top plate, where the key switches mount, is integrated into the enclosure. The biggest challenge here was the shape of each key switch hole and its spacing, along with the holes for the stabilizers. You can find more information about those at the following links:
https://null-src.com/posts/keyboard-design-cheatsheet/post.php
https://geekhack.org/index.php?topic=64287.0
https://switchandclick.com/stabilizer-guide/
https://user-images.githubusercontent.com/13644/66226900-eb1e3e00-e6a9-11e9-80fa-fce8996ba06b.png
In my case, the switch holes are just square and that worked fine.
3D Printing
I printed the main part of the enclosure (top.stl) using an UNIZ IBEE MSLA resin 3D printing, to ensure that it was smooth and free of layer lines. The bottom (bottom.stl) I printed on a standard FFF 3D printer to save resin.
You can print both using either type of printer.
Insert the Key Switches and Stabilizers
This step is pretty straightforward. First, put in your stabilizers. Each stabilizer has five pieces: the metal rod, two bases (purple here), and two moving bits (green here). It helps to assemble them first, then push them into place.
After that, you can pop in the key switches. I inserted them all with the "Cherry MX" logos towards the top.
Wiring
I essentially just copied the wiring here: https://www.hackster.io/Mukesh_Sankhla/pico-keypad-ea42a8
One pin of each key switch will go to the Raspberry Pi Pico's 3v3 pin. I used a single stripped wire for all of those pins.
Then each key switch's second pin will connect individually to a GPIO pin on the PICO. I used the following pins:
- GP2 (backspace)
- GP3 (K)
- GP4 (C)
- GP6 (U)
- GP7 (F)
- GP8 (Y)
- GP10 (O)
- GP11 (U)
- GP12 (enter)
- GP13 (space)
Program the Pico
For detailed instructions, check here: https://www.hackster.io/Mukesh_Sankhla/pico-keypad-ea42a8
But these are the basic steps:
- Copy the CircuitPython UF2 file onto the Pico drive
- Copy the Adafruit_HID library folder into the Pico's lib folder
- Copy the code.py file from here onto the root of the Pico drive
Downloads
Assemble the Keyboard
Once you verify that the keyboard is working properly, you can assemble everything.
Start by pressing all of the key caps into place.
Then cover the Pico's pins in electrical tape to protect. I didn't bother to design a proper mount, so the Pico is loose inside of the enclosure.
Finally, use 4 M3x8 screws to attached the bottom cover, taking care to feed the Pico's USB cable through the slot.
If you want, you can use paint to fill in the logo like I did.
And you're done! Now you've got a keyboard that only has the letters that you really need.