qmk_firmware/docs
Pete Sevander 7e983796e1
Process combos earlier & overlapping combos (#8591)
* Combo processing improvements.

Now it is possible to use ModTap and LayerTap keys as part of combos.
Overlapping combos also don't trigger all the combos, just exactly the
one that you press.

New settings:
- COMBO_MUST_HOLD_MODS
- COMBO_MOD_TERM
- COMBO_TERM_PER_COMBO
- COMBO_MUST_HOLD_PER_COMBO
- COMBO_STRICT_TIMER
- COMBO_NO_TIMER

* Remove the size flags from combo_t struct boolean members.

This in the end actually saves space as the members are accessed so many
times. The amount of operations needed to access the bits uses more
memory than setting the size saves.

* Fix `process_combo_key_release` not called correctly with tap-only combos

* Fix not passing a pointer when NO_ACTION_TAPPING is defined.

* Docs for `COMBO_ONLY_FROM_LAYER`

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update quantum/process_keycode/process_combo.c

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Add `EXTRA_SHORT_COMBOS` option.

Stuff combo's `disabled` and `active` flags into `state`. Possibly can
save some space.

* Add more examples and clarify things with dict management system.

- Simple examples now has a combo that has modifiers included.
- The slightly more advanced examples now are actually more advanced
  instead of just `tap_code16(<modded-keycode>)`.
- Added a note that `COMBO_ACTION`s are not needed anymore as you can
  just use custom keycodes.
- Added a note that the `g/keymap_combo.h` macros use the
  `process_combo_event` function and that it is not usable in one's
  keymap afterwards.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Change "the" combo action example to "email" example.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Fix sneaky infinite loop with `combo_disable()`

No need to call `dump_key_buffer` when disabling combos because the
buffer is either being dumped if a combo-key was pressed, or the buffer is empty
if a non-combo-key is pressed.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-06 09:44:57 +10:00
..
ChangeLog 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
de CLI/Docs: Fix the format commands' name (#13668) 2021-07-23 21:41:33 +01:00
es Port new_keyboard.sh to CLI (#13706) 2021-07-30 21:57:40 +01:00
fr-fr CLI/Docs: Fix the format commands' name (#13668) 2021-07-23 21:41:33 +01:00
gitbook/images
he-il [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
ja __flash? (#13799) 2021-07-31 14:35:30 +01:00
ko-kr [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
pt-br [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
ru-ru [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
zh-cn [Bug] Develop - Change uint32_t to layer_state_t (#13596) 2021-07-19 09:50:55 -07:00
.nojekyll
CNAME
README.md Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
_langs.md
_summary.md [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
adc_driver.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
api_development_environment.md
api_development_overview.md
api_docs.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
api_overview.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
arm_debugging.md
audio_driver.md Audio system overhaul (#11820) 2021-02-15 09:40:38 +11:00
breaking_changes.md Merge remote-tracking branch 'upstream/master' into develop 2021-06-20 12:10:59 +10:00
breaking_changes_history.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
breaking_changes_instructions.md
chibios_upgrade_instructions.md Update ChibiOS, ChibiOS-Contrib. (#13056) 2021-06-01 08:11:50 +10:00
cli.md
cli_commands.md Port new_keyboard.sh to CLI (#13706) 2021-07-30 21:57:40 +01:00
cli_configuration.md
cli_development.md CLI/Docs: Fix the format commands' name (#13668) 2021-07-23 21:41:33 +01:00
cli_tab_complete.md Add support for tab completion (#12411) 2021-04-14 19:00:22 -07:00
coding_conventions_c.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
coding_conventions_python.md
compatible_microcontrollers.md Adds support for STM32L412xB, STM32L422xB. (#13383) 2021-06-30 10:07:40 +10:00
config_options.md Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
configurator_default_keymaps.md
configurator_step_by_step.md
configurator_troubleshooting.md
contributing.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
custom_matrix.md
custom_quantum_functions.md Use single memcmp to determine if matrix changed. (#13064) 2021-06-09 17:19:42 +10:00
data_driven_config.md Create a system to map between info.json and config.h/rules.mk (#11548) 2021-01-31 12:46:00 -08:00
documentation_best_practices.md
documentation_templates.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
driver_installation_zadig.md Update LUFA (18-07-2021) and add QMK-HID Bootloader support (#13588) 2021-07-24 23:00:57 -07:00
eeprom_driver.md eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. (#12617) 2021-06-21 19:34:28 -07:00
faq_build.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
faq_debug.md Allow output of logging when running unit tests (#13556) 2021-07-25 17:18:09 +01:00
faq_general.md Fix typos and reword some sentences in FAQs (#11546) 2021-01-23 13:41:29 -08:00
faq_keymap.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
faq_misc.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
feature_advanced_keycodes.md Additional documentation for GUI mod combo (#13266) 2021-06-22 12:41:57 +10:00
feature_audio.md Document user song list file (#13101) 2021-06-15 22:31:06 -07:00
feature_auto_shift.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_backlight.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_bluetooth.md
feature_bootmagic.md [Docs] Remove extra word it bootmagic page (#13855) 2021-08-02 18:01:38 -07:00
feature_combo.md Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
feature_command.md
feature_debounce_type.md Add asym_eager_defer_pk debounce type (#12689) 2021-06-16 14:00:37 +10:00
feature_dip_switch.md [Docs] Fix typo in dip switch example (#13688) 2021-07-24 10:44:31 -07:00
feature_dynamic_macros.md
feature_encoders.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_grave_esc.md
feature_haptic_feedback.md Add Per Key exclusions for Haptic Feedback (#12386) 2021-06-19 19:28:54 -07:00
feature_hd44780.md
feature_joystick.md
feature_key_lock.md
feature_key_overrides.md [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
feature_layers.md Improve upon the 'Caveats' section of the Layers and Mod-Tap documentation (#12306) 2021-03-25 22:44:28 +11:00
feature_layouts.md
feature_leader_key.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_led_indicators.md [Docs] Added note about no split support (#12512) 2021-07-20 10:11:49 -07:00
feature_led_matrix.md __flash? (#13799) 2021-07-31 14:35:30 +01:00
feature_macros.md [Docs] New section to modifier docs: Checking Modifier State (#10550) 2021-02-28 16:42:17 +11:00
feature_midi.md [Docs] added basic midi documention of common features (#13113) 2021-06-06 23:53:20 -07:00
feature_mouse_keys.md Add support for 8 buttons to mouse report (#10807) 2021-01-28 04:38:34 +11:00
feature_oled_driver.md Add oled_invert (#13172) 2021-06-19 01:08:22 +10:00
feature_pointing_device.md Merge remote-tracking branch 'origin/master' into develop 2021-02-04 01:25:39 +00:00
feature_ps2_mouse.md [Feature] Swap buttons on PS2 Mouse/Trackball (#9205) 2021-08-06 09:09:58 +10:00
feature_rawhid.md
feature_rgb_matrix.md __flash? (#13799) 2021-07-31 14:35:30 +01:00
feature_rgblight.md Retain brightness with lighting layers (#13025) 2021-07-21 23:46:12 -07:00
feature_sequencer.md
feature_space_cadet.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
feature_split_keyboard.md Allow invert of SPLIT_HAND_PIN logic (#13433) 2021-07-05 09:06:40 +10:00
feature_st7565.md ST7565 invert (#13237) 2021-06-19 18:51:35 +10:00
feature_stenography.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
feature_swap_hands.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_tap_dance.md matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
feature_terminal.md
feature_thermal_printer.md
feature_unicode.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
feature_userspace.md
feature_velocikey.md
feature_wpm.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
flashing.md Update LUFA (18-07-2021) and add QMK-HID Bootloader support (#13588) 2021-07-24 23:00:57 -07:00
flashing_bootloadhid.md
fuse.txt
getting_started_docker.md Add support for using podman to util/docker_build.sh (#10819) 2021-02-28 15:59:42 +11:00
getting_started_github.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
getting_started_introduction.md
getting_started_make_guide.md Documentation update (#12484) 2021-04-11 12:49:12 +02:00
getting_started_vagrant.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
hand_wire.md [Docs] Added information on soldering diodes in parallel (#13117) 2021-07-29 22:56:27 -07:00
hardware_avr.md Port new_keyboard.sh to CLI (#13706) 2021-07-30 21:57:40 +01:00
hardware_drivers.md
hardware_keyboard_guidelines.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
how_a_matrix_works.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
how_keyboards_work.md
i2c_driver.md Rework I2C driver docs (#11658) 2021-02-08 07:45:59 +11:00
index.html
internals_defines.md
internals_gpio_control.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
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 [Docs] Update isp_flashing_guide.md (#11777) 2021-02-07 10:48:34 -08:00
keycodes.md [Docs] added list of MIDI keycodes (#13159) 2021-07-04 17:34:20 -07:00
keycodes_basic.md
keycodes_us_ansi_shifted.md
keymap.md
mod_tap.md Add Mac centric Shift and Alt + GUI Macros (#13107) 2021-06-19 19:14:19 -07:00
newbs.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
newbs_building_firmware.md
newbs_building_firmware_configurator.md Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
newbs_flashing.md A few small typo fixes in docs (#12524) 2021-04-11 12:50:45 +02:00
newbs_getting_started.md Update FreeBSD install method (#12815) 2021-05-07 19:22:05 +02:00
newbs_git_best_practices.md
newbs_git_resolving_merge_conflicts.md
newbs_git_resynchronize_a_branch.md
newbs_git_using_your_master_branch.md
newbs_learn_more_resources.md Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
newbs_testing_debugging.md Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
one_shot_keys.md fix: Fix typo in documentation for one shot keys. ON_TOGG -> OS_TOGG (#13754) 2021-07-28 12:00:55 +01:00
other_eclipse.md eclipse: recommend changing the default project make target (#12447) 2021-04-19 02:20:17 -07:00
other_vscode.md Updated settings.json file to fit VSC's docs (#13829) 2021-08-04 01:22:40 +01:00
platformdev_chibios_earlyinit.md
platformdev_selecting_arm_mcu.md
power.txt
pr_checklist.md Explicitly state that VIA should not be enabled in the default keymap. (#13803) 2021-07-31 09:21:45 +10:00
proton_c_conversion.md
qmk.css
qmk_custom_dark.css Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
qmk_custom_light.css Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
quantum_keycodes.md
redirects.json
ref_functions.md [Docs] Add EEP_RST keycode to "Wiping the EEPROM" section (#11830) 2021-02-12 15:56:36 -08:00
reference_configurator_support.md Remove references to info.json `width` and `height` in CLI (#13728) 2021-07-29 22:37:18 -07:00
reference_glossary.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11:00
reference_info_json.md Remove references to info.json `width` and `height` in CLI (#13728) 2021-07-29 22:37:18 -07:00
reference_keymap_extras.md
serial_driver.md [Core] Unite half-duplex and full-duplex serial drivers (#13081) 2021-07-02 08:24:08 +10:00
spi_driver.md Merge remote-tracking branch 'upstream/master' into develop 2021-02-08 07:57:09 +11:00
support.md
sw.js
syllabus.md [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
tap_hold.md Update IGNORE_MOD_TAP_INTERRUPT (#11452) 2021-02-15 21:52:57 -05:00
translating.md
uart_driver.md UART driver refactor (#11637) 2021-01-27 17:42:49 +11:00
understanding_qmk.md [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
unit_testing.md Allow output of logging when running unit tests (#13556) 2021-07-25 17:18:09 +01:00
usb_nkro.txt
ws2812_driver.md Fix up WS2812 SPI driver on F072. (#13022) 2021-06-03 09:48:16 +10:00

README.md

Quantum Mechanical Keyboard Firmware

What is QMK Firmware?

QMK (Quantum Mechanical Keyboard) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains QMK Firmware, QMK Configurator, QMK Toolbox, qmk.fm, and this documentation with the help of community members like you.

Get Started

?> Basic QMK Configurator
User friendly graphical interfaces, no programming knowledge required.

?> Advanced Use The Source
More powerful, but harder to use.

Make It Yours

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.

Need help?

Check out the support page to see how you can get help using QMK.

Give Back

There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.