2019-07-18 06:41:17 +02:00
|
|
|
# KMK: Clackety Keyboards Powered by Python
|
2021-08-14 04:48:38 +02:00
|
|
|
![GitHub](
|
|
|
|
https://img.shields.io/github/license/KMKfw/kmk_firmware
|
|
|
|
)![GitHub contributors](
|
|
|
|
https://img.shields.io/github/contributors/KMKfw/kmk_firmware
|
|
|
|
)![Discord](
|
|
|
|
https://img.shields.io/discord/493256121075761173?logo=Discord
|
|
|
|
)![Lines of code](https://img.shields.io/tokei/lines/github/KMKfw/kmk_firmware
|
|
|
|
)![GitHub issues](https://img.shields.io/github/issues-raw/KMKfw/kmk_firmware
|
|
|
|
)![GitHub closed issues](https://img.shields.io/github/issues-closed/KMKfw/kmk_firmware)
|
2021-08-14 03:09:08 +02:00
|
|
|
|
2019-07-18 06:41:17 +02:00
|
|
|
|
|
|
|
KMK is a feature-rich and beginner-friendly firmware for computer keyboards
|
|
|
|
written and configured in
|
|
|
|
[CircuitPython](https://github.com/adafruit/circuitpython). **KMK is currently
|
2021-07-06 21:53:34 +02:00
|
|
|
in public beta, however should handle most workflows without major issues**.
|
|
|
|
|
|
|
|
<!--
|
|
|
|
@klardotsh 06 July 2021: commented for now because CDN builds have been broken
|
|
|
|
for ages and folks are (reasonably) getting confused.
|
2019-07-18 06:41:17 +02:00
|
|
|
|
2019-07-25 06:04:15 +02:00
|
|
|
You can always find the latest releases on our CDN, in [compiled and
|
|
|
|
optimized](https://cdn.kmkfw.io/kmk-latest.zip) and [raw, hackable text
|
|
|
|
file](https://cdn.kmkfw.io/kmk-latest.unoptimized.zip) forms. These follow the
|
|
|
|
`master` branch here on GitHub.
|
2021-07-06 21:53:34 +02:00
|
|
|
-->
|
2019-07-25 06:04:15 +02:00
|
|
|
|
2019-07-18 06:41:17 +02:00
|
|
|
> If you need support with KMK or just want to say hi, find us in
|
2020-03-30 06:48:23 +02:00
|
|
|
> [#kmkfw:klar.sh on Matrix](https://matrix.to/#/#kmkfw:klar.sh). This channel
|
|
|
|
> is bridged to Discord
|
|
|
|
> [here](https://discordapp.com/widget?id=493256121075761173&theme=dark) for
|
|
|
|
> convenience.
|
2019-07-18 06:41:17 +02:00
|
|
|
|
|
|
|
## Features
|
|
|
|
|
2019-07-25 06:16:26 +02:00
|
|
|
- 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](https://github.com/KMKfw/kmk_firmware/blob/master/docs/split_keyboards.md)
|
|
|
|
are supported
|
|
|
|
- [Chainable
|
|
|
|
keys](https://github.com/KMKfw/kmk_firmware/blob/master/docs/keys.md) such as
|
|
|
|
`KC.LWIN(KC.L)` to lock the screen on a Windows PC
|
|
|
|
- [Built-in unicode macros, including
|
|
|
|
emojis](https://github.com/KMKfw/kmk_firmware/blob/master/docs/sequences.md)
|
|
|
|
- [RGB underglow](https://github.com/KMKfw/kmk_firmware/blob/master/docs/rgb.md)
|
|
|
|
and [LED
|
|
|
|
backlights](https://github.com/KMKfw/kmk_firmware/blob/master/docs/led.md)
|
|
|
|
- One key can turn into many more based on [how many times you tap
|
|
|
|
it](https://github.com/KMKfw/kmk_firmware/blob/master/docs/tapdance.md)
|
2020-10-21 21:19:42 +02:00
|
|
|
- Bluetooth HID and split keyboards. No more wires.
|
2019-07-18 06:41:17 +02:00
|
|
|
|
|
|
|
## Getting Started
|
2021-07-06 21:53:34 +02:00
|
|
|
|
|
|
|
Our getting started guide can be found
|
|
|
|
[here](https://github.com/KMKfw/kmk_firmware/blob/master/docs/Getting_Started.md)
|
2019-07-18 06:41:17 +02:00
|
|
|
|
|
|
|
## The KMK Team
|
|
|
|
|
|
|
|
KMK is primarily written and maintained by @klardotsh and @kdb424, but
|
|
|
|
contributions are welcome from all, whether it's in the form of code,
|
|
|
|
documentation, hardware designs, feature ideas, or anything else that comes to
|
2021-07-06 21:53:34 +02:00
|
|
|
mind. A list of KMK's contributors can be found [on
|
|
|
|
GitHub](https://github.com/KMKfw/kmk_firmware/graphs/contributors).
|
2018-10-25 23:57:02 +02:00
|
|
|
|
2021-07-06 21:53:34 +02:00
|
|
|
> While Adafruit employees and affiliates are occasionally found in the commit
|
|
|
|
> log and their help has been crucial to KMK's success, KMK is not an official
|
|
|
|
> Adafruit project, and the Core team is not compensated by Adafruit for its
|
|
|
|
> development.
|
2018-08-30 22:31:02 +02:00
|
|
|
|
2019-07-25 07:56:10 +02:00
|
|
|
## Code Style
|
|
|
|
|
|
|
|
KMK uses [Black](https://github.com/psf/black) with a Python 3.6 target and,
|
|
|
|
[(controversially?)](https://github.com/psf/black/issues/594) single quotes.
|
|
|
|
Further code styling is enforced with isort and flake8 with several plugins.
|
|
|
|
`make fix-isort fix-formatting` before a commit is a good idea, and CI will fail
|
|
|
|
if inbound code does not adhere to these formatting rules. Some exceptions are
|
|
|
|
found in `setup.cfg` loosening the rules in isolated cases, notably
|
|
|
|
`user_keymaps` (which is *also* not subject to Black formatting for reasons
|
|
|
|
documented in `pyproject.toml`).
|
|
|
|
|
2018-08-30 22:31:02 +02:00
|
|
|
## License, Copyright, and Legal
|
|
|
|
|
2019-07-18 06:41:17 +02:00
|
|
|
All software in this repository is licensed under the [GNU Public License,
|
|
|
|
verison 3](https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)).
|
|
|
|
All documentation and hardware designs are licensed under the [Creative Commons
|
|
|
|
Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
|
|
|
|
license. Contributions to this repository must use these licenses unless
|
|
|
|
otherwise agreed to by the Core team.
|