Clackety Keyboards Powered by Python
Go to file
2022-10-28 23:06:08 +00:00
.github/workflows chore: remove long-broken and unused-ish Deploy stage from CI 2021-09-13 21:37:37 -07:00
boards Quick fixup links on documentations for the boards 2022-10-25 01:24:49 -07:00
docs remove not-implemented keycodes from docs 2022-10-27 19:59:29 -07:00
hardware add backtick quotes for code snippets 2022-04-25 16:53:22 +00:00
kmk implement multiple-choice for holdtap repeat 2022-10-14 08:25:44 -07:00
tests implement multiple-choice for holdtap repeat 2022-10-14 08:25:44 -07:00
user_keymaps Move keymap to proper spot 2022-08-17 12:04:37 -07:00
util Reimplemented as a util script with std lib only. 2022-08-31 18:16:49 -07:00
.dockerignore Some backports from work on #46 to greatly speed up Circle builds 2018-10-11 17:50:39 -07:00
.gitignore dstore gitignore 2022-09-15 20:35:54 -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
build_kmkpython_release.sh feat(kmkpy): make dist -> uf2 files for each supported NRF board, with KMK bundled 2021-06-20 13:55:18 -07:00
Dockerfile feat(kmkpy): make dist -> uf2 files for each supported NRF board, with KMK bundled 2021-06-20 13:55:18 -07:00
kmkpython_ref.tsv update kmkpython and hack fix bug 2021-06-20 13:55:18 -07:00
LICENSE.md Remove unused kmk.string (originally from micropython-lib) 2018-12-29 15:42:56 -08:00
Makefile add unittest directory to the fix-isort target 2022-10-14 08:28:00 -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 Bump ipython from 7.24.1 to 7.31.1 2022-01-25 10:55:24 -08:00
pyproject.toml Typos 2022-04-18 13:28:26 +00:00
README.md readme: remove authorship and maintainer list blurb 2022-10-28 23:06:08 +00:00
setup.cfg fix(lint): lint all the things; be more flexible in boards dir 2021-06-20 13:59:59 -07:00

KMK: Clackety Keyboards Powered by Python

GitHub GitHub contributors Discord Lines of code GitHub issues GitHub closed issues

Documentation available at 📖 kmkfw.io.

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

Synchronous chatter about KMK is available in the official Matrix room, #kmkfw:klar.sh. (Note: the KMK chat room is not a bug tracker, and it is not necessarily monitored by the maintainer crew, though we may lurk there sometimes.) This channel is bridged to Discord here for convenience.

Features

Getting Started

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

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).

Tests

Unit tests within the tests folder mock various CircuitPython modules to allow them to be executed in a desktop development environment.

Execute tests using the command python -m unittest.

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. Contributions to this repository must use these licenses unless otherwise agreed to by the Core team.

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.