qmk-firmware/docs
skullydazed d569f08771
Configuration system for CLI (#6708)
* Rework how bin/qmk handles subcommands

* qmk config wip

* Code to show all configs

* Fully working `qmk config` command

* Mark some CLI arguments so they don't pollute the config file

* Fleshed out config support, nicer subcommand support

* sync with installable cli

* pyformat

* Add a test for subcommand_modules

* Documentation for the `qmk config` command

* split config_token on space so qmk config is more predictable

* Rework how subcommands are imported

* Document `arg_only`

* Document deleting from CLI

* Document how multiple operations work

* Add cli config to the doc index

* Add tests for the cli commands

* Make running the tests more reliable

* Be more selective about building all default keymaps

* Update new-keymap to fit the new subcommand style

* Add documentation about writing CLI scripts

* Document new-keyboard

* Update docs/cli_configuration.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Address yan's comments.

* Apply suggestions from code review

suggestions from @noahfrederick

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Apply suggestions from code review

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Remove pip3 from the test runner
2019-09-22 13:25:33 -07:00
..
ChangeLog consistency 2019-08-30 15:01:52 -07:00
gitbook/images
zh
zh-cn Add Dip Switch as a core feature (#6140) 2019-09-03 08:34:31 -07:00
.nojekyll
CNAME
LANGS.md
README.md
_summary.md Configuration system for CLI (#6708) 2019-09-22 13:25:33 -07:00
arm_debugging.md
becoming_a_qmk_collaborator.md
breaking_changes.md Update the breaking changes process so we always have a future branch (#6785) 2019-09-21 11:58:06 -07:00
cli.md Configuration system for CLI (#6708) 2019-09-22 13:25:33 -07:00
cli_configuration.md Configuration system for CLI (#6708) 2019-09-22 13:25:33 -07:00
cli_development.md Configuration system for CLI (#6708) 2019-09-22 13:25:33 -07:00
coding_conventions_c.md QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
coding_conventions_python.md QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
compatible_microcontrollers.md
config_options.md Make USB polling rate configurable with a define (#6668) 2019-09-06 07:41:24 -07:00
contributing.md QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
custom_quantum_functions.md Additional changes for Layer State typedef compatibility (#5906) 2019-08-21 17:07:49 -07:00
documentation_best_practices.md
documentation_templates.md
driver_installation_zadig.md [Keyboard] Add Discipad, Update Zadig doc for USBaspLoader (#6771) 2019-09-20 22:07:21 -07:00
faq.md
faq_build.md Add Zadig 101 to docs (#6585) 2019-08-23 23:38:21 -07:00
faq_debug.md Remove superfluous JTAG disable code (#6445) 2019-08-20 22:18:52 -07:00
faq_general.md
faq_keymap.md
feature_advanced_keycodes.md fix typo 2019-07-01 15:32:59 +09:00
feature_audio.md Added keycodes for swapping and unswapping the Control and OS keys (#6110) 2019-08-21 17:07:08 -07:00
feature_auto_shift.md
feature_backlight.md Add support for 328P hardware backlight on B1/B2 (#6776) 2019-09-20 22:11:15 -07:00
feature_bluetooth.md
feature_bootmagic.md Added keycodes for swapping and unswapping the Control and OS keys (#6110) 2019-08-21 17:07:08 -07:00
feature_combo.md Change "yu" to "you" in combo docs (#6510) 2019-08-08 18:10:16 +01:00
feature_command.md Update IS_COMMAND definitions to use MOD_MASK_SHIFT (#6348) 2019-07-20 13:21:40 -07:00
feature_debounce_type.md
feature_dip_switch.md Add Dip Switch as a core feature (#6140) 2019-09-03 08:34:31 -07:00
feature_dynamic_macros.md
feature_encoders.md Add support for different encoder pinout for right half of split keyboard (#6521) 2019-08-16 16:46:41 -07:00
feature_grave_esc.md
feature_haptic_feedback.md DRV2605L Continuous Haptic Feedback Support (#6461) 2019-09-19 09:42:33 -07:00
feature_hd44780.md
feature_key_lock.md
feature_layouts.md
feature_leader_key.md
feature_led_matrix.md
feature_macros.md
feature_mouse_keys.md
feature_oled_driver.md Added OLED Display autoscroll during periods of OLED data inactivity (#6546) 2019-08-25 12:37:55 -07:00
feature_pointing_device.md
feature_ps2_mouse.md
feature_rgb_matrix.md [Docs] Add RGB Matrix default mode define info (#6564) 2019-08-19 15:03:05 -07:00
feature_rgblight.md
feature_space_cadet.md Added mod carry over from press to release. (#5866) 2019-07-06 21:00:05 -07:00
feature_split_keyboard.md Add support for different encoder pinout for right half of split keyboard (#6521) 2019-08-16 16:46:41 -07:00
feature_stenography.md
feature_swap_hands.md
feature_tap_dance.md Generalize Tap Dance Layer functions (#6629) 2019-09-21 11:22:27 -07:00
feature_terminal.md
feature_thermal_printer.md
feature_unicode.md [Docs] Clarify the rules.mk setup for Unicode (#6286) 2019-07-11 11:33:55 -07:00
feature_userspace.md Additional changes for Layer State typedef compatibility (#5906) 2019-08-21 17:07:49 -07:00
feature_velocikey.md
features.md Add Dip Switch as a core feature (#6140) 2019-09-03 08:34:31 -07:00
flashing.md Cleanup rules.mk for 32A and 328P keyboards (#6767) 2019-09-20 22:06:32 -07:00
flashing_bootloadhid.md Add 'bootloadHID' flash target (#5587) 2019-08-24 08:35:11 -07:00
fuse.txt
getting_started_build_tools.md Change from avr-gcc@7 to @8 for Mac 2019-06-05 17:51:39 -07:00
getting_started_getting_help.md
getting_started_github.md
getting_started_introduction.md [Docs] Update getting_started_introduction.md (#6037) 2019-05-31 14:44:27 -07:00
getting_started_make_guide.md Add 'bootloadHID' flash target (#5587) 2019-08-24 08:35:11 -07:00
getting_started_vagrant.md Configure Vagrant to use qmk_base_container (#6194) 2019-07-16 01:20:34 -07:00
hand_wire.md
hardware.md
hardware_avr.md Reword a note about the MANUFACTURER and PRODUCT defines in hardware_avr.md (#6558) 2019-08-17 11:41:55 -07:00
hardware_drivers.md
hardware_keyboard_guidelines.md
how_keyboards_work.md [Docs] Update how_keyboards_work.md (#6528) 2019-08-21 17:44:37 -07:00
i2c_driver.md [Docs] Update i2c_driver.md (#6665) 2019-09-03 10:09:58 -07:00
index.html Fix typo in Open Graph description for docs (#6641) 2019-09-02 07:35:02 -07:00
internals_defines.md
internals_gpio_control.md
internals_input_callback_reg.md
internals_midi_device.md
internals_midi_device_setup_process.md
internals_midi_util.md
internals_send_functions.md
internals_sysex_tools.md
isp_flashing_guide.md
keycodes.md Added keycodes for swapping and unswapping the Control and OS keys (#6110) 2019-08-21 17:07:08 -07:00
keycodes_basic.md
keycodes_us_ansi_shifted.md
keymap.md
newbs.md
newbs_best_practices.md
newbs_building_firmware.md
newbs_building_firmware_configurator.md Update YouTube URL 2019-07-29 10:12:22 -07:00
newbs_flashing.md Add 'bootloadHID' flash target (#5587) 2019-08-24 08:35:11 -07:00
newbs_getting_started.md
newbs_learn_more_resources.md
newbs_testing_debugging.md
other_eclipse.md
other_vscode.md
porting_your_keyboard_to_qmk_(arm_and_other_chibios_cpus).md Improve backlight PWM pin support (#6202) 2019-08-08 13:12:12 -07:00
power.txt
proton_c_conversion.md
qmk.css
quantum_keycodes.md
redirects.json Configuration system for CLI (#6708) 2019-09-22 13:25:33 -07:00
ref_functions.md Additional changes for Layer State typedef compatibility (#5906) 2019-08-21 17:07:49 -07:00
reference_configurator_support.md
reference_glossary.md
reference_info_json.md
sidebar.css
support.md
sw.js
understanding_qmk.md
unit_testing.md
usb_nkro.txt

README.md

Quantum Mechanical Keyboard Firmware

Current Version Build Status Discord Docs Status GitHub contributors GitHub forks

What is QMK Firmware?

QMK (Quantum Mechanical Keyboard) is an open source community that maintains QMK Firmware, QMK Toolbox, qmk.fm, and these docs. QMK Firmware is a keyboard firmware based on the tmk_keyboard with some useful features for Atmel AVR controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line. It has also been ported to ARM chips using ChibiOS. You can use it to power your own hand-wired or custom keyboard PCB.

How to Get It

If you plan on contributing a keymap, keyboard, or features to QMK, the easiest thing to do is fork the repo through Github, and clone your repo locally to make your changes, push them, then open a Pull Request from your fork.

Otherwise, you can either download it directly (zip, tar), or clone it via git (git@github.com:qmk/qmk_firmware.git), or https (https://github.com/qmk/qmk_firmware.git).

How to Compile

Before you are able to compile, you'll need to install an environment for AVR or/and ARM development. Once that is complete, you'll use the make command to build a keyboard and keymap with the following notation:

make planck/rev4:default

This would build the rev4 revision of the planck with the default keymap. Not all keyboards have revisions (also called subprojects or folders), in which case, it can be omitted:

make preonic:default

How to Customize

QMK has lots of features to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your keymap, and changing the keycodes.