This keyboard has been designed as a standalone numpad with an extra top row to be used as a macro pad or media pad, as such, it can be configured in different ways when building it.
Here is the list of supported variations:
- Optional encoder on the top left key
- Optional encoder on the top right key
- The top two center keys can be replaced by a 0.91" OLED screen
This allows for a number of configuration on the extra top row that can be used for a number of things. Each of these variations are supported in the Vial firmware under the Layout
tab. See Vial Layout Options for more details.
Example #1 |
Example #2 |
Example #3 |
Example #4 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
This PCB can also be built as a wireless keyboard using a nice!nano microcontroller. See Wireless Support for more details on how to achieve this.
Front | Back |
---|---|
The PCB has been designed in KiCad EDA 8.0 using the kicad-lkbd
libraries and kbplacer
.
You can preview the project files using KiCanvas directly in your browser and download the latest fabrication files for JLCPCB from the latest release.
The exported schematic is also available under output/schematics
.
Parameters | Value |
---|---|
Base Material | FR4 |
Layers | 2 |
Dimensions | 76.2 × 119.06 mm |
PCB Thickness | 1.6 mm |
PCB Color 1 | Black |
Silkscreen | White |
Surface Finish 2 | Lead Free HASL or ENIG |
Copper Weight | 1 oz |
Via Covering | Tented |
Min Via Hole Size | 0.3 mm |
Board Outline Tolerance | ± 0.2 mm |
The following JCLPCB specific options are used to serialize PCBs on order. An 8 × 8 mm silkscreen square was added to the PCB to allow for a 2D barcode to be added.
Parameters | Value |
---|---|
Mark on PCB | 2D barcode (Serial Number) |
- Printing | 2D barcode & Number |
- Code Type | Data Matrix Code |
- Prefix | LKBD_LK23M_v100 |
- Unique Number | Remove |
- Incrementing Number | YYMM01 (e.g.: 250300 ) |
- 2D Barcode Size | 8 × 8 mm |
- 2D Barcode Position | Specify Position |
Serial numbers are based on the current date using the YYMM01
format for its incrementing numbers. Orders in February 2025 would start then start it at 250300
, making the final serial LKBD_LK23M_v100_250300
.
Plate (Silk) | Bottom (Silk) | Plate (ENIG) | Bottom (ENIG) |
---|---|---|---|
The FR4 case has also been designed in KiCad EDA 8.0 and consist of two PCBs, one for the switch plate and one for the bottom plate. It is available in two variations: silk
and enig
. The only difference between the two is how the decorative pattern is shown, the silk
variant sets it up as part of the silkscreen while the enig
variant shows it as solder mask.
The enig
version is only suitable when using an immersion based surface finish such as "ENIG" and shouldn't be ordered with any "HASL" surface finish, use the silk
variant instead. Otherwise, use the same parameters present in PCB Order to order the plate and bottom PCB. For JLCPCB orders, you can select "Remove Mark" for the "Mark on PCB" option as there is no need to serialize the case itself. You can find their respective fabrication files in output/case/silk/fabrication/jlcpcb
and output/case/enig/fabrication/jlcpcb
.
If you prefer to fabricate them by any other mean (such as laser cut acrylic), you can download their board outlines as DXF
in output/case/dxf
.
Part | Ref. | Quantity | Optional | Remarks |
---|---|---|---|---|
PCB | LK23M PCB | 1 | ❌ | See PCB section on how to order it. |
Top Plate | FR4 Top Plate | 1 | ✅ | Optional if using an alternative case. |
Bottom Plate | FR4 Bottom Plate | 1 | ✅ | Optional if using an alternative case. |
Case Screws | M2 × 4 mm Low Profile Socket Head Screw (Hex) | 8 | ✅ | Optional if using an alternative case. Low profile hex head screws are recommended, but any head type should be compatible. Screws up to 8 mm in length should work. |
Case Standoffs | M2 × 12 mm Brass Hex Standoff | 4 | ✅ | Optional if using an alternative case. Longer / shorter standoff could work depending on how the controller is mounted and if using a battery. |
Pro Micro Controller | Arduino Pro Micro 5V, Adafruit KB2040 or nice!nano | 1 | ❌ | Supports various Pro Micro style controller (including RP2040 based ones) as well as the nice!nano for wireless builds. 3 |
MCU Socket | DIP-24 Round Socket (Wide, 15.24 mm) | 1 | ✅ | Recommended to socket the controller, can be omitted if soldered directly. Compatibles pins are required such as dismantled LED strip male adapters. |
Reset Push Button | DIP 2pin Momentary Push Button (6 × 3.5 mm) (THT) | 1 | ✅ | Used as a reset switch, can be omitted if you flash the controller before installing it or if the controller can be put in bootloader mode from any other means. |
1N418 Diodes | 1N4148W T4 SOD-323 (SMD) or 1N4148 DO-35 (THT) | 21-23 | ❌ | Only 21 diodes are needed if the OLED screen is installed. |
Kailh Hot-Swap Sockets | CPG151101S11-16 (SMD) | 19 | ✅ | The top 4 keys can not be made hot-swappable due to size constraint and need to be soldered directly. All switches can be soldered directly to the PCB if preferred. |
Key Switches | Any Cherry MX Compatible Switch | 19-23 | ❌ | Amount depends on the variant built, a two encoder OLED setup would require 2 EC12 encoder and 19 MX switches, while the key switches only variant needs 23. |
2U Stabilizer | Any standard 2U PCB mounted MX stabilizer | 1 | ✅ | Recommended for Enter key stability. |
Rotary Encoder(s) | Any EC11 / EC12 style 5-pin Encoder | 0-2 | ✅ | Optional, can be installed in place of the top left and/or top right most switches. |
100nF Capacitor(s) | 1206 SMD Ceramic Capacitor (SMD) or 104 Ceramic Disk Capacitor (5 × 2.5mm) (THT) | 0-4 | ✅ | Two recommended per encoder for noise filtering. |
0.91" OLED Display | SSD1306 0.91" 128X32 OLED I²C Display Module | 0-1 | ✅ | Optional, replace the top middle two switches. |
Power Slide Switch | PCM12SMTR (SMD) or MSK-12C02 (SMD) | 1 | ✅ | Only required for battery powered wireless builds. 3 |
Battery Connector | JST-PH 2pin right-angle Male Connector | 1 | ✅ | Only needed for battery powered wireless builds if the battery is not soldered directly to the board (recommended). 3 |
3.7V Li-Po Battery | 603449 (1100 mAh) or 503450 (1000 mAh) 3.7V Li-Po Battery | 1 | ✅ | Only required for battery powered wireless builds, any 3.7 V (1 Cell) Li-Po battery slimmer than 8 mm with a JST-PH connector should work. 3 |
Firmware has been built using the vial
fork of QMK.
Default | Disable Left Encoder | Disable Right Encoder | OLED Screen in Center |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Each of these options can be combined to match the physical layout of your build.
To add wireless support to this keyboard, you will need a controller that provides power input and a charging circuit between the top RAW and GND such as the nice!nano
.
The PCB itself provides a way to attach a JST-PH connector as well as a slide switch for power management. This slide switch must be set to ON for the charging circuit to work.
This hasn't been extensively tested yet and should be considered experimental (no wireless firmware will be provided for now). The feature was added to the PCB as way for us to prototype a potential wireless keyboard.
This design is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
You are free to use, share, and adapt the design for non-commercial purposes, provided that:
- Attribution: Proper credit must be given, a link to the license provided, and any changes indicated.
- NonCommercial: The material cannot be used for commercial purposes without prior approval.
- ShareAlike: Any derivative works must be distributed under the same license.
If you are a retailer or business interested in selling this design or products derived from it, I am open to granting commercial licenses on a case-by-case basis. Please feel free to contact me to discuss terms.
Footnotes
-
You can select any PCB color you want but some manufacturers such as JLCPCB may charge you more for uncommon combos (such as Blue PCB + ENIG Surface Finish). ↩
-
The "HASL (with lead)" option is extremely discouraged due to the risk of lead poisoning. We strongly recommend paying the premium for the "Lead Free HASL" option. ↩
-
See Wireless Support for more details. ↩ ↩2 ↩3 ↩4