SolidWorks keypad
Nine keys for the left hand, so the right hand never leaves the mouse
Nine buttons for my left hand that press the keys I use most in my design software, so my right hand never leaves the mouse. Set aside half finished.
| Board | WeAct ESP32-C3 dev board, native USB |
|---|---|
| Keys | Nine momentary switches on GPIO 0–8, internal pull-ups, 50 ms debounce |
| Layout | ESC · TAB · SHIFT · CTRL · ALT · ENTER · SPACE · L · DELETE |
| Firmware | Arduino core with TinyUSB in USB-OTG mode; builds in the Arduino IDE or PlatformIO |
The idea
CAD work is one hand on the mouse and the other hand hunting for keys. The keys I actually need in SolidWorks are a short list: escape, tab, the three modifiers, enter, space, the line tool, delete. A nine-key pad under the left hand covers all of them without looking down.
The ESP32-C3 has native USB, so it can be a real HID keyboard with no extra chip. The firmware is small: scan nine pins, debounce them, and send a key press. The modifiers are the one bit of subtlety: shift, control and alt stay held while the physical switch is held, so SHIFT + L gives an uppercase L and CTRL + L does what control-L does, while the other six keys send a single press and release.
Where it stopped
The firmware works on the bench: plug it in, it enumerates as a keyboard, the keys do what the table says. What it never got was a body. The plan was a printed case with proper mechanical switches and keycaps, and that plan ran into the usual problem: a bare board with jumper wires already does the job well enough that the case never became urgent, and then I stopped using SolidWorks as often.
It’s on the shelf, working, ugly, and waiting for the next CAD-heavy project to make me finish it.
If I pick it up again
Print the case I already drew, add a rotary encoder for zoom, and make the layout configurable from the computer instead of recompiling.