# 5. Customizing Keyboard Layout with ZMK

### 5.1 🌀ZMK Firmware

**Firmware:** Firmware is software installed on microcontrollers to make your keyboard work.

**ZMK Firmware:** ZMK firmware is also known as just ZMK. It is a keyboard firmware similar to QMK, which is what your keyboard initially came with. ZMK and QMK are nearly identical for most users. The main difference being: If you want Bluetooth, use ZMK. If you want wired, use QMK.

{% hint style="warning" %}
Swap in bluetooth compatible microcontrollers before following this section. See [7.1 Swapping Microcontrollers: Bluetooth](/swapping-microcontrollers/bluetooth.md) before continuing below. Bluetooth compatible microcontrollers include nice!nano, Pro Micro nRF52840, SuperMini nRF52840 BLE, among many others.
{% endhint %}

### 5.2 📶Adding Bluetooth Functionality: Default Keyboard Layout

* This adds the default QWERTY layout seen in the [1. Introduction](/introduction.md).
* This process takes about 10 minutes.

1. Download the firmware zip file for your keyboard below.

{% tabs %}
{% tab title="Size Large (6 Key Thumb Cluster)" %}
{% file src="/files/7hkUIpIeoKAM4g1eAMGA" %}
Zip file that contains firmware files for the size large keyboard
{% endfile %}
{% endtab %}

{% tab title="Size Medium (5 Key Thumb Cluster)" %}
{% file src="/files/WCl1W0RkzEpEmgdRwvp6" %}
Zip file that contains firmware files for the size medium keyboard
{% endfile %}
{% endtab %}

{% tab title="Size Small (3 Key Thumb Cluster)" %}
{% file src="/files/Rj1TyKWozl5mVShiAwjJ" %}
Zip file that contains firmware files for the size small keyboard
{% endfile %}
{% endtab %}
{% endtabs %}

2. Extract the zip file. You'll see 3 files. You'll use these files later.
   1. settings\_reset-nice\_nano\_v2-zmk.uf2
   2. dactyl\_manuform\_5x6\_left-nice\_nano\_v2-zmk.uf2
   3. dactyl\_manuform\_5x6\_right-nice\_nano\_v2-zmk.uf2
3. Plug the left piece of the keyboard to the computer. Make sure the two keyboard pieces are not connected to one another.
4. Click the reset switch twice. The reset switch is shown in the image below.

<figure><img src="/files/bwOWcmc6Vd6qzZbKzC1J" alt="" width="375"><figcaption><p>Figure 5.1 The green arrow indicates the reset switch. <br>The blue arrow indicates the socket connecting the two pieces of the keyboard.</p></figcaption></figure>

5. You should see that your computer has detected a new USB device called `NICE!NANO`. Open this in file explorer. Ignore the files that are in there.

<figure><img src="/files/7QVsxDlISVAQtlDgn11Y" alt="Dactyl Manuform ZMK Tutorial for Customizing Keyboard Layout" width="563"><figcaption><p>Figure 5.2 You should see <code>NICE!NANO</code> show up as a USB device.</p></figcaption></figure>

6. Drag the `settings_reset-nice_nano_v2-zmk.uf2` file into file explorer. After a few seconds, the USB device should disconnect itself. A pop up notification may show up saying "Error while copying "dactyl\_manuform\_5x6\_left-nice\_nano\_v2-zmk.uf2". This is not an actual error.

<figure><img src="/files/DQPpLxETWKElE1fs0rUQ" alt="Dactyl Manuform ZMK Tutorial - Error while copying dactyl manuform" width="563"><figcaption><p>Figure 5.3 This prompt is not an error.</p></figcaption></figure>

7. Click the reset switch twice again.
8. Open up the USB device again.
9. Drag the `dactyl_manuform_5x6_left-nice_nano_v2-zmk.uf2` file into the file explorer.&#x20;
10. Repeat the above steps for the right side of the keyboard. Use `dactyl_manuform_5x6_right-nice_nano_v2-zmk.uf2` for the last step.
11. Charge the battery for each keyboard by separately connecting each piece to the computer. Then make sure the on/off switch is **not** pressed down. The keyboard is ON when the switch is **not** pressed down. The keyboard is OFF when the switch is pressed down.

<div><figure><img src="/files/yuEUGhDTJftXsmOWADDX" alt="Dactyl Manuform ZMK Tutorial - Adding a battery" width="375"><figcaption><p>Figure 5.4 The green arrow points to the on/off switch.</p></figcaption></figure> <figure><img src="/files/SNVJTW8TThHsQjq5mlJu" alt="" width="550"><figcaption><p>Figure 5.5 The red arrow shows the OFF position. The switch is pressed down.<br>The green arrow shows the ON position. The switch is <strong>not</strong> pressed down.</p></figcaption></figure></div>

12. If you are using the default 110mAh battery that came with the keyboard, it will take about 1 hour to fully charge the keyboards. This will last 1 - 2 weeks for the left side of the keyboard, and 3 months for the right side of the keyboard. The reason the left side of the keyboard has a shorter battery life is because it needs to maintain two Bluetooth connections concurrently, one with the computer and another with the right piece of the keyboard.
13. Once you are done charging, test the keyboard by turning on Bluetooth on your computer. You should see a Bluetooth device called `TAIKO-DACTYL-L`. Connect to the device and it should start working. You will not see  `TAIKO-DACTY-R` because the left piece of the keyboard connects to the right piece automatically.

### 5.3 📶Adding Bluetooth Functionality: Custom Keyboard Layout

* This adds your own custom keymap.
* It uses the ZMK CLI tool.
* This process may take 30 minutes or longer depending on how familiar you are with programming.

1. Navigate to <https://github.com/taikohub/zmk-config> and fork the repository.
2. Clone the forked repository to your local machine.

```bash
# replace yourusername with your Github username
git clone https://github.com/yourusername/zmk-config.git
```

3. Git checkout the branch that matches your keyboard size.

```bash
# Size large (6 keyed-thumb cluster)
git checkout large

# Size medium (5 keyed-thumb cluster)
git checkout medium

# Size small (3 keyed-thumb cluster)
git checkout small
```

4. Open the `config/dactyl_manuform_5x6.keymap` to edit the keyboard layout.

```bash
cd zmk-config

# Use your preferred code editor to open the file
code config/dactyl_manuform_5x6.keymap
```

5. Once you are done, commit and push the change.

```bash
git commit -m "Update keymap"
git push
```

6. Go to your Github repo and check the Actions tab. You should see a new workflow run. Once the workflow is complete, you should see a new firmware file in the "Artifacts" section. Download the `firmware.zip` file.
7. Extract the `firmware.zip` file. You'll see 3 files. You'll use these files later.
   1. settings\_reset-nice\_nano\_v2-zmk.uf2
   2. dactyl\_manuform\_5x6\_left-nice\_nano\_v2-zmk.uf2
   3. dactyl\_manuform\_5x6\_right-nice\_nano\_v2-zmk.uf2
8. Plug the left piece of the keyboard to the computer. Make sure the two keyboard pieces are not connected to one another.
9. Click the reset switch twice. The reset switch is shown in the image below.

<figure><img src="/files/bwOWcmc6Vd6qzZbKzC1J" alt="" width="375"><figcaption><p>Figure 5.1 The green arrow indicates the reset switch. <br>The blue arrow indicates the socket connecting the two pieces of the keyboard.</p></figcaption></figure>

5. You should see that your computer has detected a new USB device called `NICE!NANO`. Open this in file explorer. Ignore the files that are in there.

<figure><img src="/files/7QVsxDlISVAQtlDgn11Y" alt="Dactyl Manuform ZMK Tutorial for Customizing Keyboard Layout" width="563"><figcaption><p>Figure 5.2 You should see <code>NICE!NANO</code> show up as a USB device.</p></figcaption></figure>

6. Drag the `settings_reset-nice_nano_v2-zmk.uf2` file into file explorer. After a few seconds, the USB device should disconnect itself. A pop up notification may show up saying "Error while copying "dactyl\_manuform\_5x6\_left-nice\_nano\_v2-zmk.uf2". This is not an actual error.

<figure><img src="/files/DQPpLxETWKElE1fs0rUQ" alt="Dactyl Manuform ZMK Tutorial - Error while copying dactyl manuform" width="563"><figcaption><p>Figure 5.3 This prompt is not an error.</p></figcaption></figure>

7. Click the reset switch twice again.
8. Open up the USB device again.
9. Drag the `dactyl_manuform_5x6_left-nice_nano_v2-zmk.uf2` file into the file explorer.&#x20;
10. Repeat the above steps for the right side of the keyboard. Use `dactyl_manuform_5x6_right-nice_nano_v2-zmk.uf2` for the last step.
11. Charge the battery for each keyboard by separately connecting each piece to the computer. Then make sure the on/off switch is **not** pressed down. The keyboard is ON when the switch is **not** pressed down. The keyboard is OFF when the switch is pressed down.

<div><figure><img src="/files/yuEUGhDTJftXsmOWADDX" alt="Dactyl Manuform ZMK Tutorial - Adding a battery" width="375"><figcaption><p>Figure 5.4 The green arrow points to the on/off switch.</p></figcaption></figure> <figure><img src="/files/SNVJTW8TThHsQjq5mlJu" alt="" width="550"><figcaption><p>Figure 5.5 The red arrow shows the OFF position. The switch is pressed down.<br>The green arrow shows the ON position. The switch is <strong>not</strong> pressed down.</p></figcaption></figure></div>

12. If you are using the default 110mAh battery that came with the keyboard, it will take about 1 hour to fully charge the keyboards. This will last 1 - 2 weeks for the left side of the keyboard, and 3 months for the right side of the keyboard. The reason the left side of the keyboard has a shorter battery life is because it needs to maintain two Bluetooth connections concurrently, one with the computer and another with the right piece of the keyboard.
13. Once you are done charging, test the keyboard by turning on Bluetooth on your computer. You should see a Bluetooth device called `TAIKO-DACTYL-L`. Connect to the device and it should start working. You will not see  `TAIKO-DACTY-R` because the left piece of the keyboard connects to the right piece automatically.


---

# 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.taikohub.com/customizing-keyboard-layout-with-zmk.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.
