# QMK & ZMK Firmware Options

When building or customizing a mechanical keyboard, especially a split or wireless one, you'll likely run into two popular firmware options: **QMK** and **ZMK**. Both are powerful, community-driven platforms — but each has its strengths and ideal use cases.

***

## QMK Quick Overview

**QMK (Quantum Mechanical Keyboard)** is a firmware based on the AVR (and now ARM) toolchain and has become the gold standard for wired custom keyboards.

### QMK Strengths

* **Very mature** and battle-tested code
* Rich feature set: tap dance, macros, combos, layers, OLED support
* **VIA and Vial support** for GUI-based key remapping
* Huge community and documentation

### QMK  Weaknesses

* **Wired only** (Bluetooth support extremely limited)
* Requires `qmk_firmware` repo and local toolchain to compile using CLI tools
* AVR and ARM chip support, but some newer boards need custom setup

***

## ZMK Quick Overview

**ZMK (ZMK Firmware)** is a newer firmware designed from the ground up for **Bluetooth (wireless)** keyboards, built on the Zephyr RTOS.

### ZMK Strength

* **Native Bluetooth support**
* Built for modern MCUs like nRF52840, RP2040, etc.
* Supports split wireless keyboards with per-half communication
* Keymaps written in **Kconfig-style `.keymap` files**
* GitHub Actions support for firmware builds (ZMK Config)

### ZMK Weaknesses

* Fewer “power user” features (e.g., no tap dance or dynamic macros… yet)
* OLED bug where screens can freeze after keyboard wakes up from sleep
* Smaller ecosystem and community
* Slightly steeper learning curve if coming from QMK
* Limited GUI configurability (ZMK  Studio has limited capabilities)

***

## Feature Comparison Table

| Feature                | **QMK**          | **ZMK**                  |
| ---------------------- | ---------------- | ------------------------ |
| Wired support          | ✅ Yes            | ✅ Yes                    |
| Bluetooth support      | ⚠️ Limited       | ✅ Yes                    |
| Split keyboard support | ✅ Yes (wired)    | ✅ Yes (wired + wireless) |
| GUI Configuration      | ✅ Yes - Via/Vial | ⚠️ Limited - ZMK Studio  |
| OLED/display support   | ✅ Extensive      | ⚠️ Limited               |
| Macros & Tap Dance     | ✅ Rich support   | **❌** Limited/None       |
| Power management       | ⚠️ Basic         | ✅ Advanced               |
| Build workflow         | Command line     | GitHub CI/Web            |
| MCU Support            | AVR/ARM          | ARM (nRF/RP2040/etc)     |

***

## What does Turkeyboards use?

* All our Wired Keyborads are powered by QMK and are compatible with Vial for easy GUI configuration management.
* All our Wireless Keyborads are powered by ZMK and are compatible with ZMK Studio for easy configuration management.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.turkeyboards.com/turkeyboards-docs/buyers-guide/qmk-and-zmk-firmware-options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
