The Lancer is a 36-key ortholinear keyboard with a light split and a focus on compact footprint and portability. It is a direct successor to la_nc, and is very much inspired by other keyboards like Planck, Lumberjack and Lesovoz.
- Width of just 11U, the smallest possible with 10 columns and a top-mounted Pro Micro
- More focused thumb row, featuring 6 easily accessible keys
- Powered by a Pro Micro or any other compatible MCU board
- Hotswap sockets in south-facing orientation
- Integrated battery support with a power switch
- Native 3-wire SPI for nice!view support without any bodge wires
- Backwards compatible with oldschool SSD1306 OLEDs (4 leftmost pins of the SPI header)
Item | Count | Notes |
---|---|---|
PCB | 1x | Gerber file |
Top plate | 1x | Gerber for FR4, dxf for other materials |
Bottom plate | 1x | Gerber for FR4, dxf for other materials |
Pro Micro | 1x | other boards with compatible pinout also work |
SMD Diodes | 36x | 1N4148W SOD123 |
MX Hotswap sockets | 36x | Kailh or Gateron |
Tactile button | 1x | 3x6mm 2-pin button |
M2 screws | 16x | M2x4 or M2x5, head diameter <5mm |
M2 standoffs | 8x | 8mm recommended1 |
MX-style switches | 36x | 3-pin or 5-pin |
1U MX keycaps | 36x |
For wireless operation:
Item | Count | Notes |
---|---|---|
Wireless Pro Micro | 1x | nice!nano, nrfmicro, etc. |
Rechargeable battery | 1x | 3.7V two-wire battery (eg. 350926) |
7-pin SPDT switch | 1x | MSK-12C02 or compatible |
Optionally:
Item | Count | Notes |
---|---|---|
Pro Micro socket | 1-2x | either 1x 24-pin wide or 2x 12-pin single-row |
Screen | 1x | either nice!view or SSD1306 128x32 OLED |
Screen socket | 1x | 5-pin |
Screen cover | 1x | dxf file (coming soon) |
Required:
- Soldering iron/station (+ solder, flux, etc.)
- Screwdriver for the screws
- Side cutters (regular wire cutters will do in a pinch)
Optional (but very recommended):
- Tweezers (preferably reverse ones, for placing diodes & sockets)
- Breadboard (for aligning ProMicro pins)
- Tape (for holding components in place)
Safety measures:
- Fan (for blowing solder fumes away from your face)
- Eye protection (for trimming pins)
Upload the PCB gerber file to a PCB manufacturer site like JLCPCB or PCBWay. You can keep settings at default and just pick the color.
If you want FR4 plates, upload top plate and bottom plate gerbers in the same fashion. If you want plastic or metal plates, use top plate and bottom plate dxf files for cutting.
Here is a WIP build guide in english. Feel free to submit better photos or translations!
Lancer supports all 3 major firmwares: QMK, ZMK and KMK.
Lancer support in QMK and KMK has been merged into their respective official repositories.
ZMK is user config repository only. Merging into official ZMK repository is currently not planned.
The keyboard ID is subrezon/lancer
in QMK.
Here is an example of flashing the keyboard with the default firmware using the QMK CLI:
qmk flash -kb subrezon/lancer -km default
If you're unsure what to do with this information, check out the QMK Documentation for information on how to get started with QMK.
- I currently do not offer VIA support.
- QMK currently does not support nice!view E-Ink screens.
- If you want to use an SSD1306 OLED, read this to make it work. The default firmware does not feature any screen support.
- The default firmware is set up for oldschool atmega32u4-based Pro Micros with the caterina bootloader. If you're using an STM or RP2040-based board, you will need to set CONVERT_TO accordingly in your keymap's rules.mk file. Read this for further information.
You can use this ZMK user config repository to build ZMK firmware for Lancer. You can:
- Download pre-built firmware from that repository. It is configured for nice!nano v2 and uses the default keymap.
- If you wish to change the keymap and/or use an MCU board other than nice!nano v2, fork that repository and edit the files to suit your needs. The keymap is under
config/boards/shields/lancer/lancer.keymap
. - If you already have a ZMK user config repository, you may integrate the contents of that repository into your own. Copy the
config/boards/shields/lancer
directory into your repository, then edit your build.yaml to include Lancer:
---
include:
- board: your_other_board
shield: your_other_shield
- board: nice_nano_v2
shield: lancer
If you are using an MCU board other than nice!nano v2, change the nice_nano_v2
board identifier to whatever your board's identifier is. You can find supported boards and their respective identifiers here.
If you're new to ZMK, check out the ZMK documentation on how to get started.
Note: I might get around to get Lancer officially supported in ZMK main repo, but I feel like Lancer would need to become at least moderately popular first to justify the work. A public user config repo will do for now.
To install KMK firmware on your Lancer, follow these steps:
- Download the latest release of CircuitPython for your MCU board.
- Connect your MCU board to the computer and put it into flashing mode, usually by double-tapping RESET (non-RP2040), or holding BOOT and pressing RESET (RP2040)
- A USB storage device will appear. Copy the
adafruit-circuitpython-*.uf2
you just downloaded onto it and wait. The board will reboot and appear again as a USB storage device namedCIRCUITPY
. - Download or clone the KMK Firmware Repository. Copy the
kmk
folder and theboot.py
file onto the MCU.- If you use a nice!nano or another MCU board with only 1MB of flash, you will need to compile the firmware first.
- Delete the
code.py
file, and copymain.py
andkb.py
from theboards/subrezon/lancer
folder.
The kb.py
file has been set up for nice!nano v2. If you have another MCU board - open the kb.py
folder and look at line 5. It says:
from kmk.quickpin.pro_micro.nice_nano import pinout as pins
Change nice_nano
to match your MCU board. These ones are supported.
If yours isn't in the list, you will have to edit the board's pinout yourself.
- The two southmost screws were placed below the middle of switches 4 and 7 of the third row. Unless you're using screws with very small screw heads, they need to be unscrewed before pulling out those two switches. Fixing this would be a plate layout change, so this will likely never be fixed to maintain compatibility between plate/PCB revisions.
- v1.1: first minor revision (latest version, not tested yet)
- Screen socket moved 1.27mm to the south to make installing a battery underneath the MCU board easier. Hopefully 1.27mm is enough, otherwise it will be move even further away in the next revision.
- North-facing footprints in thumb cluster, most people install their thumb keycaps upside down, so to maintain south-facingness switches had to be turned 180 degrees as well.
- Added "ON" and "OFF" silkscreening on the PCB's top side to indicate how the power switch operates.
- v1.0: initial release version (tested, verified working)
- Acrylic screen cover
- Soldered PCB option
- 3D-printable case options
- ai03 - for the MX_V2 footprint library
- The fabulous mechanical keyboard community - for, well, everything!
This hardware is licensed under the MIT License. You may use it in any way you want.
Footnotes
-
8mm is recommended and will result in equal spacing between top plate, PCB and bottom plate. 7mm can be used for the lowest possible profile, however it is only compatible with Kailh sockets - Gateron sockets slightly thicker. ↩