Keyboard Firmware Comparison
Keyboard Firmware Frameworks
Framework | Language | Wireless | Rotary Encoder | Display | Notes |
---|---|---|---|---|---|
QMK | C | no | yes | yes | |
TMK | C | no | ? | ? | Mostly defunct. QMK built on top of this. |
ZMK | C | yes | yes | 🚧 | Very cool, but this will be difficult to customize. |
KMK Homepage | CircuitPython | yes | yes | yes |
QMK
QMK QMK is the most general-purpose option, it has a lot of development effort behind it, including that which was spent on its TMK core, and is very stable and feature rich. QMK is strictly a wired keyboard firmware only. It is pre-compiled and flashed to the microcontroller.
QMK will not allow you to add additional functionality to your microcontroller, such as adding a sensor without forking the software and customizing it significantly.
TMK
TMK TMK is the predecessor to QMK, and is mostly defunct. QMK was built on top of TMK.
ZMK
ZMK ZMK is a new firmware that is built on top of the Zephyr RTOS. It is designed to be more modular and easier to customize than QMK. It is also designed to be wireless from the ground up.
However like QMK, ZMK is pre-compiled and flashed to the microcontroller. It is not designed to be easily extensible.
KMK
KMK Homepage KMK is a new firmware that is built on top of CircuitPython. It is designed to be more modular and easier to customize than QMK. It is also designed to be wireless from the ground up.
KMK is designed to be easily extensible, and you can add additional functionality to your microcontroller without forking the software and customizing it significantly by using the extensions feature.
One of the downsides of using CircuitPython instead of a pre-compiled firmware (like the C based frameworks or Arduino) is that it is slower and uses more memory. This could result in a noticeable delay in the keyboard response time, and could also limit the number of features you can add to your keyboard.
Configuration GUI's
ESP32 Specific Firmware
ESP32-BLE-Keyboard is a firmware that allows you to use an ESP32 microcontroller as a Bluetooth Low Energy (BLE) keyboard. It is built on top of the ESP-IDF framework, which is the official development framework for the ESP32 microcontroller.
This is a great option if you want maximum flexibility and control over your keyboard, as you can add additional functionality to your keyboard by writing additional arduino code.
Here are some examples of custom esp32 keyboards that have been built using ESP32-BLE-Keyboard library:
00Keyboard Sanctuary built on top of ESP32-BLE-Keyboard
Arduino Keyboard Libraries
[arduino usb keyboard]https://www.arduino.cc/reference/en/language/functions/usb/keyboard/
CircuitPython Keyboard libraries
Comments
Recent Work
Basalt
basalt.softwareFree desktop AI Chat client, designed for developers and businesses. Unlocks advanced model settings only available in the API. Includes quality of life features like custom syntax highlighting.
BidBear
bidbear.ioBidbear is a report automation tool. It downloads Amazon Seller and Advertising reports, daily, to a private database. It then merges and formats the data into beautiful, on demand, exportable performance reports.