Clackety Keyboards Powered by Python
Go to file
John Morrison 4d297e6ab2 Typos
2022-04-18 13:28:26 +00:00
.github/workflows chore: remove long-broken and unused-ish Deploy stage from CI 2021-09-13 21:37:37 -07:00
boards expose keypad options through scanner init 2022-04-11 18:26:43 -07:00
docs implements scanner with rotaryio 2022-04-17 18:33:34 -07:00
hardware ptBR translations: hardware/README-ptBR.md 2021-10-05 01:39:05 -03:00
kmk Typos 2022-04-18 13:28:26 +00:00
tests fix late release of oneshot keys 2022-04-17 18:33:24 -07:00
user_keymaps update docs and examples 2022-04-09 14:40:40 -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 Ignore mac specific files 2022-03-03 20:17:16 -08: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 Allow passing user-defined MPY_SOURCES and MPY_CROSS to make 2022-03-31 16:14:17 -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 Typos 2022-04-18 13:28:26 +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

GitHubGitHub contributorsDiscordLines of codeGitHub issuesGitHub closed issues

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

KMK is currently looking for maintainers. If you like keyboards and/or Python, and ideally have contributed to KMK in the past, and are interested in (co-)maintaining KMK, comment on the relevant GitHub issue or drop by the Matrix channel below.

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.

Features

Getting Started

Our getting started guide can be found here

The KMK Team

KMK was originally authored by @klardotsh and @kdb424 over the winter of 2018-19, and has been contributed to by numerous others since. 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. A list of KMK's contributors can be found on GitHub.

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.

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.