MCPcopy Index your code
hub / github.com/KMKfw/kmk_firmware

github.com/KMKfw/kmk_firmware @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,450 symbols 5,010 edges 310 files 112 documented · 8%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

KMK: Clackety Keyboards Powered by Python

GitHub GitHub contributors Lines of code GitHub issues GitHub closed issues

KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in CircuitPython.

Status

KMK is no longer actively maintained and on limited life support. Issues and pull requests will not be addressed for the time being. Volunteers for taking on the project can voice their interest in the Zulip Chat.

Support

For asynchronous support and chatter about KMK, join our Zulip community!

If you ask for help in chat or open a bug report, if possible make sure your copy of KMK is up-to-date. In particular, swing by the Zulip chat before opening a GitHub Issue about configuration, documentation, etc. concerns.

The former Matrix and Discord rooms once linked to in this README are no longer officially supported, please do not use them!

Features

Getting Started

KMK requires CircuitPython version 8.0 or higher. Our getting started guide can be found here.

Contributing

Please have a look at the contributing document, where you can find details about the workflow and code style. If you have specific questions feel free to ask in the KMK development stream on Zulip.

License, Copyright, and Legal

All software in this repository is licensed under the GNU Public License, version 3. All documentation and hardware designs are licensed under the Creative Commons Attribution-ShareAlike 4.0 license.

Due to ethical and legal concerns, any works derived from GitHub Copilot or similar artificial intelligence tooling are unacceptable for inclusion in any first-party KMK repository or other code collection. We further recommend not using GitHub Copilot while developing anything KMK-related, regardless of intent to submit upstream.

Core symbols most depended-on inside this repo

go
called by 81
kmk/kmk_keyboard.py
make_key
called by 71
kmk/keys.py
MN
called by 40
user_keymaps/ZFR_KBD/RP2.65-F.py
ticks_ms
called by 37
tests/mocks.py
make_argumented_key
called by 31
kmk/keys.py
move
called by 30
kmk/keys.py
get
called by 26
kmk/keys.py
debug_error
called by 19
kmk/kmk_keyboard.py

Shape

Method 1,100
Class 267
Function 83

Languages

Python100%

Modules by API surface

kmk/hid.py66 symbols
kmk/extensions/rgb.py56 symbols
kmk/keys.py54 symbols
tests/test_kmk_keys.py49 symbols
kmk/modules/pimoroni_trackball.py40 symbols
kmk/extensions/led.py36 symbols
kmk/modules/macros.py35 symbols
kmk/kmk_keyboard.py34 symbols
tests/test_macros.py33 symbols
kmk/modules/encoder.py32 symbols
kmk/modules/combos.py31 symbols
kmk/modules/mouse_keys.py28 symbols

For agents

$ claude mcp add kmk_firmware \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact