Skip to main content

Keyboard Firmware Comparison

Keyboard Firmware Frameworks

FrameworkLanguageWirelessRotary EncoderDisplayNotes
QMKCnoyesyes
TMKCno??Mostly defunct. QMK built on top of this.
ZMKCyesyes🚧Very cool, but this will be difficult to customize.
KMK HomepageCircuitPythonyesyesyes

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

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

Learn More

BidBear

bidbear.io

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

Learn More