GithubHelp home page GithubHelp logo

qmk / qmk_configurator Goto Github PK

View Code? Open in Web Editor NEW
668.0 26.0 337.0 26.49 MB

The QMK Configurator

Home Page: http://config.qmk.fm

HTML 0.09% JavaScript 80.79% Shell 0.16% Vue 10.95% Dockerfile 0.06% SCSS 7.95%
qmk-configurator firmware-files

qmk_configurator's Introduction

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 separatly

yarn run test:cypress

Run your end-to-end tests like CI

Start the server separatly

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 VUE_APP_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

qmk_configurator's People

Contributors

anthonynguyen168 avatar controller-works avatar coseyfannitutti avatar dependabot[bot] avatar drashna avatar fauxpark avatar horrortroll avatar jackhumbert avatar jceb avatar joe-scotto avatar marksard avatar mateossh avatar mechmerlin avatar moyi4681 avatar mrsendyyk avatar nooges avatar noroadsleft avatar peepeetee avatar precondition avatar ramonimbao avatar rossman360 avatar salicylic-acid3 avatar shelaf avatar skullydazed avatar stanrc85 avatar terrymathews avatar tzarc avatar yanfali avatar zekth avatar zvecr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qmk_configurator's Issues

Viewing of readme should be available

Some keyboards have caveats such as "led support not currently available" which are documented in the readme.

When using the configurator, a customer does not see this information and may incorrectly think that the configurator is at fault.

Provide a means to display the readme file to the user.

Exporting nameless Keymaps

Exporting a keymap without a name names it as json.txt. However this file still works when you Import it back in.

When a nameless keymap is detected, we should default to the default "mine" name, and still create a mine.json.

Two Click Keymapping

This request comes from notG10, one of the moderators of the Top Clack Discord.

Click and dragging can be quite strenuous. It would be great to be able to select an empty/filled spot on the keyboard representation, and then click on a keycode you want.

To be clear, this is not to get rid of the click and drag feature, but rather as another form of keycode entry.

Compiling a blank keymap is not useful

There does not seem to be any use to compiling a blank keymap, as the resulting .hex still wouldn't get me anywhere in terms of keyboard usability.

We could use the dirty keymap checks to temporarily gray out the compile button until the keymap does indeed have at least one keycode.

layout isn't saved when we export a keyboard

This can lead to keymap being imported into the wrong layout and applied to the wrong keys.
steps to reproduce:

  1. create a keymap
  2. export it with some changes
  3. change the layout
  4. reimport the json

Since we didn't record the layout used to generate the map this can lead to some odd ui issues.

gh-pages setup for noobs

We should create documentation on how to do this, in a manner friendly to noobs, such as myself. =).

  1. fork the project
  2. git co gh-pages
  3. rm CNAME
  4. add you _config.yml
  5. push to gh-pages
  6. reload after about 10-15 seconds

Confirmation dialogue needed when loading default keymap

load default
This button provides no confirmation dialogue. When a user has crafted a suitable keymap, accidentally pressing the button wipes away their hard work.

When any form of keymap is present, load default should provide a yes/no confirmation dialogue to prevent such mishaps.

import layout
The same can be said with this button, but a user needs to specify a file to load, so the chances of wiping away their current keymap is much less.

Add dirty keymap detection

  • centralize all access to keymap[] via some sort of API
  • add hooks to detect changes
  • use keymap state to decide to show alerts when switching keymaps, layouts, keyboards, importing instead of just prompting

Provide means to download .bin file

On keyboards such as the whitefox, flashing is done by doing

dfu-util -D ../../.build/whitefox_default.bin  -S mk20dx256vlh7

The QMK Configurator currently has no means to download the required .bin file.

Provide a link to keycode reference on the page

Most people aren't familiar with QMK keycodes and sometimes the hovering over the key is completely missed, or just still not clear enough.

We should provide a link to the keycode reference on the page.

Reset 'active' layer to 0 on loading default

If you are in the layer UI, and click load default, the active layer stays on the layer you last clicked on. It should reset to 0.

reproduce:

  1. select planck keyboard
  2. click layer (10)
  3. load default

Symption:

layer 10 is still active but you are actually looking at layer 0.

Semantics: QMK Configurator != Firmware

qmkconfig

For those new to the keyboard flashing world, the image seems to imply that QMK Configurator is the firmware when it is not.

Perhaps it should say, "A GUI for QMK open source keyboard firmware" or something of the sort.

nested two-parameter keycodes fail to compile

For instance, when I put a LGui_T inside a Rctl_T keycode, the compiler comes back with an error. I think it should be impossible to put two-parameter keycodes inside another two-parameter keycode? Picture to illustrate below:

afbeelding

Upload keymaps for editing

Currently, a user has to start from scratch every time the configurator is used.

It would be good if a user were allowed to upload an existing keymap for editing either as something they were working on before, or a default keymap provided by QMK as a good starting point. On 60%s it's not an issue, but on TKLs, the click and drag approach even for edits becomes tiresome.

Feature: Song Selection/Creation

There are some keyboards with built in speakers that allow people to program songs.

It would be cool to have a tab in QMK Configurator that would allow song selection of default songs, or even a mini web app that would allow a user to create their own song through the website.

Looks terrific, fails to compile for Input Club K-Type Keyboard

I created a base layer only, by clicking a key, then pressing the physical key on the keyboard.
I set the fn key to me MO1. This was done on macOS with chrome as the browser.

I exported the resulting json file (which I can provide if needed).

I pressed compile. Which failed with the output. pasted below.

Input Club K-Type

Firmware for custom keyboard PCB with TKL Key Layout

Keyboard Maintainer: Kaleb Elwert
Hardware Supported: Input Club K-Type
Hardware Availability: Input Club, Massdrop

Make example for this keyboard (after setting up your build environment):

make k_type:default

See build environment setup then the make instructions for more information.

  • Sorry there is no default for the k_type keyboard... yet!
  • Sending k_type:K-type-base-layer with KEYMAP
  • Received job_id: 6e241c26-734d-4a85-8564-e5a0f45eaabb
  • Running . . . . . . . . . . . . . .
  • Finished:
    QMK Firmware 0.6.18

    Some git sub-modules are out of date or modified, please consider runnning:�
    make git-submodule
    You can ignore this warning if you are not compiling any ChibiOS keyboards,
    or if you have modified the ChibiOS libraries yourself.

tmk_core/chibios.mk:38: lib/chibios-contrib/os/common/startup/ARMCMx/compilers/GCC/mk/startup_k20x7.mk: No such file or directory
tmk_core/chibios.mk:40: lib/chibios/os/hal/hal.mk: No such file or directory
tmk_core/chibios.mk:46: lib/chibios-contrib/os/hal/ports/KINETIS/K20x/platform.mk: No such file or directory
tmk_core/chibios.mk:79: lib/chibios/os/hal/osal/rt/osal.mk: No such file or directory
tmk_core/chibios.mk:81: lib/chibios/os/rt/rt.mk: No such file or directory
tmk_core/chibios.mk:87: lib/chibios/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk: No such file or directory
tmk_core/chibios.mk:89: lib/chibios/os/hal/lib/streams/streams.mk: No such file or directory
makek'. Stop.
Makefile:534: recipe for target 'k_type:K-type-base-layer' failed
make: *** [k_type:K-type-base-layer] Error 1
�ake finished with errors

Consider changing naming of Download/Import Layout

The opposite of Download is Upload
The opposite of Import is Export.

I would suggest using Download/Upload as those terms are more familiar to non native English speakers.

We're also not exactly downloading/uploading a layout, but rather a keymap.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.