Supported keyboards and keymap formats

daken parses major keymap formats from ZMK and QMK in the browser. This page summarizes what's supported and how to use it with your own board.

ZMK vs QMK at a glance

AspectZMKQMK
TargetMostly wireless (nRF52)Mostly wired
Keymap syntaxDTS (Devicetree)C header / JSON
Config file.keymapkeymap.c / keymap.json

ZMK .keymap

.keymap is DTS (Devicetree Source). daken runs a lightweight DTS parser to read the keymap node and layers, then converts bindings into its internal schema.

config/<board>.keymap   # e.g. config/corne.keymap

QMK keymap.json

Export from QMK Configurator or grab keymap.json from your qmk_firmware tree. daken normalizes the keycode strings and renders them just like ZMK.

keyboards/<board>/keymaps/<you>/keymap.json

Only have a QMK keymap.c?

daken reads keymap.json only — C sources are not supported. Two ways to get JSON:

  • QMK CLI: run qmk c2json keymap.c (fastest if you already have a QMK dev environment)
  • QMK Configurator: rebuild your keymap on config.qmk.fm and hit Export. No setup required, but you transfer the keymap by hand

Supported bindings

Common bindings are rendered in a readable form: kp, mt, lt, mo, to, and trans / none. Anything else (such as Bluetooth bt bindings) is shown as its raw behavior name and parameters, so nothing in your keymap disappears from view. See the glossary for what each binding means.

Physical layouts

  • JSON upload: load a layout JSON extracted from ZMK matrix_transform or QMK info.json for any board.
  • Without a layout JSON, daken shows the base layer on a standard keyboard.

Expected structure:

{
  "keyboard": "my_board",
  "layouts": {
    "LAYOUT": {
      "layout": [
        { "x": 0, "y": 0.25 },
        { "x": 1, "y": 0.125, "w": 1, "h": 1 },
        ...
      ]
    }
  }
}

x / y are key-unit coordinates, w / h (default 1) are key size, and r is rotation. With multiple variants, the first one is used. The i-th key in the array maps to the i-th binding in your keymap — if the order differs, keys will appear in the wrong place.

Where to get your keymap file

  • ZMK: download the .keymap from the config/ directory of your zmk-config-<your-name> repository on GitHub
  • QMK: use the Export button on QMK Configurator to get a keymap.json, or grab the one under qmk_firmware/keyboards/ directly

Troubleshooting checklist

  • Check the format: ZMK needs .keymap (DTS), QMK needs .json. Convert keymap.c as described above
  • Load files as-is, without editing — straight from your zmk-config repo or a Configurator export
  • Keys appearing in the wrong place? Verify the layout JSON key order matches your bindings order
  • Still stuck? Report the board and file via the contact page so the parser can be improved