The voidPointer is a 65% fully wireless keyboard, born from a love for the classic aesthetics of the Discipline V2, but redesigned from the ground up for a modern, cable-free setup.
It's a project that celebrates the beauty of exposed through-hole components and the freedom of Bluetooth connectivity with ZMK.
This is a WIP, so continue carefully. Also, I have changed the layout to only be ANSI because it creates various errors on KiCad with holes overlaping vias. Changing it back to ISO would require you to insert the missing switches and holes, and also routing these pads into the existing rows and columns.
- 100% Wireless: Bluetooth Low Energy (BLE) connectivity with ZMK firmware.
- Battery Efficiency: Designed for months of use on a single charge (no LEDs).
- nRF52840 Microcontroller: Uses the
nice!nano v2(or a compatible module) as its brain. - 65% Layout: A compact and popular layout, based on the Discipline.
- THT (Through-Hole) Aesthetics: Maintains the iconic design with visible
1N4148diodes. - Hotswap (Optional): The PCB is designed for soldering, but can be easily converted to hotswap using Mill-Max sockets (
7305or0305). - Robust Firmware: Runs the powerful ZMK Firmware, enabling layers, macros, and multi-device support.
This project is a remix and a tribute to the incredible work of coseyfannitutti. While the original Discipline is a masterpiece of wired design, the voidPointer adapts that philosophy to the wireless world.
The name voidPointer is a play on the C language, referencing a generic pointer that can point to "anything" — or, in this case, a pointer to nothing (void), celebrating the absence of wires.
This is not an exhaustive list, but it covers the main components.
| Component | Quantity | Specification (Example) |
|---|---|---|
| Custom PCB | 1 | voidPointer (Gerber files in the JLCPCB-supported format in the /production directory) |
| Microcontroller | 1 | nice!nano v2 or SuperMini nRF52840 |
| Sockets for Micro | 2 | Male/Female Pin Headers (2x12) or Mill-Max Sockets |
| Diodes | ~68 | 1N4148 (Through-Hole THT) |
| Power Switch | 1 | Slider Switch (ex: SS-12D00) |
| Battery Connector | 1 | JST-PH 2-Pin (Horizontal) |
| Capacitor (Filter) | 1 | 100nF (0.1µF) - THT Ceramic (Ex: 104) or SMD (0805) |
| Capacitor (Reservoir) | 1 | 10µF - THT Ceramic or SMD (1206) |
| Battery | 1 | LiPo (ex: 1200-2000mAh) with JST-PH connector |
| Switches | ~68 | MX-Style (3 or 5 pin) |
| Hotswap Sockets | ~136 | (Optional) Mill-Max 7305 or 0305 |
| Stabilizers | 4 | PCB Mount (2u x3, 6.25u x1) |
| Case Hardware | ~12 | M2 Screws and Standoffs |
This keyboard is designed for the ZMK Firmware.
The firmware files (keymap, overlay, and config) for this project are not in this repository. They live in a separate repository, as is the ZMK standard.
➡️ You can find my ZMK configuration here: Config Repository
- Download the latest
.uf2file from my config repository (in the "Actions" tab). - Connect the microcontroller to the computer via USB.
- Press the reset button twice quickly (On the current version, this must be done by shorting the GND and RST pins on the micro).
- A "pen drive" (mass storage device) named
NICENANO(or similar) will appear on your computer. - Drag and drop the
.uf2file onto this "pen drive". - The device will automatically reboot with the new firmware.
- Fabricate the PCB: Upload the ZIP file from the
/productiondirectory to a PCB manufacturer (like JLCPCB, PCBWay, etc.). - PCB Assembly:
- Soldering Order (IMPORTANT): Solder components from the lowest to the highest profile.
-
- Diodes (Be careful with orientation! The black band must match the marking on the PCB).
-
- Capacitors, Power Switch, JST Connector.
-
- (Optional) Mill-Max Hotswap Sockets (Be patient!).
-
- Microcontroller Sockets.
-
- Install the Stabilizers.
- Final Assembly:
- Fit the plate.
- Insert the switches (if hotswap) or solder them (if solder).
- Assemble the case sandwich with the screws and standoffs.
- Connect the battery.
- Fit the microcontroller into its sockets.
- Put on the keycaps.
- This project is a direct derivative of the Discipline and owes all its credit to coseyfannitutti.
- To the entire ZMK Firmware team and community.
Creative Commons Attribution-NonCommercial 4.0 International License
