KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in CircuitPython.
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!
- Fully configured through a single, easy to understand Python file that lives on a "flash-drive"-esque space on your microcontroller - edit on the go without DFU or other devtooling available!
- Single-piece or two-piece split keyboards are supported
- Chainable
keys such as
KC.LWIN(KC.L)
to lock the screen on a Windows PC - Built-in Unicode macros, including emojis
- RGB underglow and LED backlights
- One key can turn into many more based on how many times you tap it
- Bluetooth HID and split keyboards. No more wires.
KMK requires CircuitPython version 7.0 or higher. Our getting started guide can be found here.
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.
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.