- why python?
- isn't is slow?
Remember that Python is a language spec, there are several implementations.
This project uses a particular implementation called CircuitPython ( https://en.wikipedia.org/wiki/CircuitPython), a derivative project from MicroPython ( https://fr.wikipedia.org/wiki/MicroPython), by the people at AdaFruit.
This implementation runs with a very different VM that can fit within 256k of code space and 16k of RAM.
So, while obviously you cannot expect anywhere near C level of perfs, this is way lighter than CPython.
The advantage is that you get the ease of Python to program your board, including the clean terce language, the memory management and the rich data structures. You can even have a live shell on some embeded hardwares! The whole dev process is so simple: code, copy your module, run.
Of course, some features of CPython are not available.
Without detracting from the code in the post, I recommend that anyone wanting to make and program their own keyboard should take a look at QMK, a widely supported keyboard firmware project that is FOSS: https://qmk.fm/
I've wanted to hardwire a keyboard, but a full-size one seems pretty intimidating.
https://en.wikipedia.org/wiki/Magnet_wire
The insulation melts away where it comes in contact with hot solder, so it's very easy to work with for hand-wiring projects.
[1]https://needgap.com/problems/96-one-hand-keyboard-keyboard-a...
Very handy when programming.
The hardware includes a QSPI flash which presents as an USB storage that stored Python source code, and you can modify Python directly.
BTW, It provides a new way to validate your hardware product ideas quickly.