Imported from GitHub: niw/mfk60 · commit 9b48f0a · license MIT
Description
60% ANSI Layout Split Keyboard. mfk60 is My First Keyboard, 60%.
README
mfk60
60% ANSI Layout Split Keyboard. mfk60 is My First Keyboard, 60%.

- A split keyboard that has 60% ANSI Layout.
- Swappable Gateron Low-Profile MX keycap compatible switches.
- Thin design as MacBook Pro.
- USB-C interface.
- Fully customizable with QMK firmware and VIA configuration.
Overview
mfk60 is built with 4 layered boards, the top plate, middle plate, primary PCB where the entire circuit exists, and bottom plate.
Each board is designed in separated KiCad project due to limitation of KiCad which project can have only one board design. Each layer board design contains both left and right designs.
sym-lib-table,fp-lib-tableare shared for additional symbol and footprint for all PCBs.Librarycontains additional symbols and footprints to KiCad.mfk60.kicad_*is the primary PCB of the keyboard.mfk60_*_plate.kicad_*are the each board layered with the primary PCB.bincontains tooling scripts.mfk60_keyboard-layout.jsonis key layout file for Keyboard Layout Editor.
Photos

Build
Since mfk60 is built with multiple KiCad projects, there are tooling scripts to make the process easier.
Overview
mfk60_keyboard-layout.jsonto set the key layout.make apply_layoutto apply the key layout to the primary PCB.bin/prepare_plate_board.pyto sync the primary PCB and other layered board.make panelizeto produce panelized boards that has frame and mouse bites.- Produce Gerber files and BOM manually from KiCad projects for each board.
Prerequisite
The board and tooling scripts are implemented by using KiCad 7.0.10 on macOS.
Please use KiCad 7.0.10 (or later, which is not tested.)
It should work on the other platform, however, you may need to use
KICAD_PYTHON_PATH to set where KiCad python exists
if it's not macOS or KiCad is installed on the different path
as like following.
env KICAD_PYTHON_PATH=/path/to/kicad/python bin/python.sh bin/update_plate_board.py
Each board is using symbols and footprints served from
KiKit, which is referenced from
.venv library installation.
Thus, to open these PCB files, first need to install KiKit library.
To install KiKit, simply run bin/kikit.sh.
Set key layout
Edit key layout on Keyboard Layout Editor,
export the layout to mfk60_keyboard-layout.json then
use apply_layout goal to sync mfk60_keyboard-layout.json
to the primary PCB.
make apply_layout
Of course, it will invalidate existing PCB design, thus changing key layout causes A LOT of work downstream.
Sync layered boards
To sync Edge Cut and footprint positioning between the primary PCB and
the layered boards, use bin/update_plate_board.py with bin/python.sh.
bin/python.sh bin/update_plate_board.py
Add frame and panelize
To produce final panelized projects with frame, use panelize make goal.
make panelize
This goal produces mfk60*_panelized.kicad_* files.
It adds frame, mouse bites and moves JLCJLCJLCJLC text onto the frame,
where is replaced with order number by JLCPCB.
Panelized projects are final data that can be used to produce production Gerber data. Recommend to use Fabrication Toolkit for JLCPCB but not limited ot it.
KiKit
Due to multiple reasons as described below, this project is using
forked version of KiKit.
bin/kikit.sh is automatically installs forked version of it in .venv,
therefore it's opaque to you.
KiCad and Python Bindings
As of day this document is written, KiCad 7.0.10 and prior version has a not well-known "behavior" (or simply say, a bug) in its Python binding generated by Swig.
Due to this issue, released KiKit will not work properly and may crash. The forked version of it contains a workaround for this behavior.
Multiple Polygons
Each layered board has both left and right ones, therefore each outline is represented as multiple polygons. However, original KiKit is not considering such multi polygon design and failed to extract interior polygons which causes an error while panelizing such data.
Firmware
Use forked QMK branch where contains the keyboard configuration.
qmk compile -kb niw/mfk60 -km default
It also works with VIA. Use via keymap and load
via.json
for a draft definition in design tab enabled in settings.
qmk compile -kb niw/mfk60 -km via
No comments yet. Be the first to ask about this board.