The QMK Configurator http://config.qmk.fm
Find a file
Mario Rodriguez 2dcdb25fee
Improve printed layout, issue #1438 (#1445)
* feat(print): handle KC_NO by conditioning class/text and add disabled key styling

* feat(printing):Add toggles and state for unassigned key

- Add toggles to manage printing of unassigned keys
- Introduce state for new configurations
- Use new configurations when printing

* fix(i18n):Add internationalization support (en and es only) for new toggles

* Refactor assign status.
2026-01-14 22:48:41 -08:00
.github Remove references to Travis in env vars (#1422) 2025-07-30 17:06:01 +10:00
.husky Upgrade vite and other improvements (#1123) 2022-05-29 09:12:35 -07:00
assets fix: restore QMK icon (#1319) 2023-10-28 16:00:55 -07:00
bin Remove hardcoded node version (#1015) 2021-11-25 13:26:02 -08:00
conf Remove hardcoded node version (#1015) 2021-11-25 13:26:02 -08:00
docs Remove docs content 2021-08-31 10:32:25 -07:00
public Update Default Keymaps: qmk/qmk_firmware@8f728aa731 (#1434) 2025-09-11 14:07:13 -07:00
scripts Add Chinese HK and Chinese TW translation (#1207) 2022-11-25 12:01:46 -08:00
src Improve printed layout, issue #1438 (#1445) 2026-01-14 22:48:41 -08:00
tests Use v-select for layout dropdown (#1413) 2025-07-24 22:20:01 +10:00
.browserslistrc Move configurator to top level 2019-02-11 08:55:16 -08:00
.editorconfig Set line endings for all files to unix (#386) 2019-06-03 09:33:41 -07:00
.env Vue-cli -> Vite Build Improvement (#1049) 2022-01-19 15:41:39 -08:00
.env.production Remove references to Travis in env vars (#1422) 2025-07-30 17:06:01 +10:00
.eslintrc.js Explore how to support internationalization of the keymap (#1166) 2022-08-23 00:16:13 -07:00
.gitignore Add latam spanish keyboard layout (#1324) 2024-03-24 21:12:37 -07:00
.nvmrc Yanfali updates (#1358) 2024-08-15 19:17:42 -07:00
babel.config.js Upgrade Vue CLI to 4 (#663) 2020-02-26 00:29:38 -08:00
cypress.config.js Yanfali updates (#1358) 2024-08-15 19:17:42 -07:00
Dockerfile Yanfali updates (#1358) 2024-08-15 19:17:42 -07:00
eslint.config.js Yanfali updates (#1358) 2024-08-15 19:17:42 -07:00
index.html Vue-cli -> Vite Build Improvement (#1049) 2022-01-19 15:41:39 -08:00
internationalization_guide.md Add translation feature from CSV (#601) 2020-01-15 11:01:50 -08:00
jest.config.js Move configurator to top level 2019-02-11 08:55:16 -08:00
jsconfig.json Explore how to support internationalization of the keymap (#1166) 2022-08-23 00:16:13 -07:00
package.json Bump vite from 4.5.14 to 5.4.20 (#1433) 2025-09-11 22:13:13 -07:00
postcss.config.js Move configurator to top level 2019-02-11 08:55:16 -08:00
prettier.config.js Remove JQuery, technical debt (#968) 2021-08-28 12:02:22 -07:00
README.md Remove references to Travis in env vars (#1422) 2025-07-30 17:06:01 +10:00
vite.config.js Revert external vue 2022-01-19 15:52:32 -08:00
yarn.lock Bump vite from 4.5.14 to 5.4.20 (#1433) 2025-09-11 22:13:13 -07:00

Quantum Mechanical Keyboard Configurator

Build Status Known Vulnerabilities Discord GitHub contributors GitHub forks

The QMK Configurator is an online tool used for easily creating firmware files for keyboards supported in qmk_firmware. The tool is located on https://config.qmk.fm.

The QMK Configurator allows simple keymap creation and saving via .json keymap files, and generates appropriate firmware files for flashing onto selected keyboards.

This project is very much a work in progress. To begin contributing, please refer to the following:

Development

We recommend you install and use NVM to manage node versions. There is a .nvmrc file in the root of the project directory that has been tested with our dependencies.

Select node version

nvm use

Project setup

yarn install

Compiles and hot-reloads for development

yarn run dev

Compiles and minifies for production

yarn run build

Run your tests

yarn run test

Lints and fixes files

yarn run lint

Run your end-to-end tests

Start the server separately

yarn run test:cypress

Run your end-to-end tests like CI

Start the server separately

yarn run test:cypress:ci

Run your unit tests

yarn run test:unit

Customize configuration

See Configuration Reference.

Docker

If you don't have a webserver already and don't already have one in mind you can use docker. By default it spins up a self-contained environment.

    docker run -p 8080:80 qmkfm/qmk_configurator:latest

You can specify a different backend URL by setting VITE_API_URL:

    docker run -e VITE_API_URL=http://localhost:8080 -p 8080:80 qmkfm/qmk_configurator:latest

If you'd like to develop locally you can use a volume to tie your local filesystem to the container:

    docker run --mount type=volume,source=.,target=/qmk_configurator -p 8080:80 qmkfm/qmk_configurator:latest

Building The Docker Image

Most of the time you don't need to do this, you can use volume mounts as described above to use the pre-built image with your local tree.

If for some reason you do need to build it yourself, you can use this command:

    docker build -t qmk_configurator .

This process will take a while. You may want to go make some tea or something. When it finishes you can run it with this command:

    docker run -p 8080:80 qmk_configurator

Internationalization Guide

Please refer to this document