Clackety Keyboards Powered by Python
Go to file
2021-06-20 13:55:18 -07:00
.github/workflows fix(ci): bump flake8 to get fix for PyCQA/pyflakes#367; per-file-ignore ext is now redundant; linter back online in CI 2021-06-20 13:14:41 -07:00
boards fix(irisr2): get out of SOFT_SERIAL_PIN's way 2021-06-20 13:55:18 -07:00
docs feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
hardware Update README.md 2018-12-04 16:44:13 -08:00
kmk feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
user_keymaps feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
util Run black against source tree 2019-07-24 23:03:13 -07:00
.dockerignore Some backports from work on #46 to greatly speed up Circle builds 2018-10-11 17:50:39 -07:00
.gitignore [ble] Add support to change ble name from KMKKeyboard.go 2020-09-29 09:35:00 -07:00
.s3cfg Full deployment workflow: push finished assets to DigitalOcean Spaces (cdn.kmkfw.io) 2019-07-24 21:25:10 -07:00
boot.py feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
Dockerfile Full deployment workflow: push finished assets to DigitalOcean Spaces (cdn.kmkfw.io) 2019-07-24 21:25:10 -07:00
LICENSE.md Remove unused kmk.string (originally from micropython-lib) 2018-12-29 15:42:56 -08:00
Makefile feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
Pipfile fix(ci): bump flake8 to get fix for PyCQA/pyflakes#367; per-file-ignore ext is now redundant; linter back online in CI 2021-06-20 13:14:41 -07:00
Pipfile.lock fix(ci): bump flake8 to get fix for PyCQA/pyflakes#367; per-file-ignore ext is now redundant; linter back online in CI 2021-06-20 13:14:41 -07:00
pyproject.toml feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
README.md feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00
setup.cfg feat(extensions): most of the extensions implementation, by kdb424 2021-06-20 13:55:16 -07:00

KMK: Clackety Keyboards Powered by Python

KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in CircuitPython. KMK is currently in public beta, however should handle almost all workflows without major issues.

You can always find the latest releases on our CDN, in compiled and optimized and raw, hackable text file forms. These follow the master branch here on GitHub.

If you need support with KMK or just want to say hi, find us in #kmkfw:klar.sh on Matrix. This channel is bridged to Discord here for convenience.

If you ask for help on chat or open a bug report, if possible please give us your commit SHA, found by running from kmk.consts import KMK_RELEASE; print(KMK_RELEASE) in the REPL on your controller.

Features

Getting Started

Our getting started guide can be found here

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 mind. KMK's contributors and other helpers are listed alphabetically by username below (we'll try to keep this up to date!):

While Adafruit employees and affiliates are included in the above list 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.

Code Style

KMK uses Black with a Python 3.6 target and, (controversially?) 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).

All software in this repository is licensed under the GNU Public License, verison 3. All documentation and hardware designs are licensed under the Creative Commons Attribution-ShareAlike 4.0 license. Contributions to this repository must use these licenses unless otherwise agreed to by the Core team.