keychron_qmk_firmware/docs
Sergey Vlasov 610035dce8
Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys (#9404)
* Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys

Implement an additional option for dual-role keys which converts the
dual-role key press into a hold action immediately when another key is
pressed (this is different from the existing PERMISSIVE_HOLD option,
which selects the hold action when another key is tapped (pressed and
then released) while the dual-role key is pressed).  The Mod-Tap keys
already behave in a similar way, unless the IGNORE_MOD_TAP_INTERRUPT
option is enabled (but with some additional delays); the added option
makes this behavior available for all other kinds of dual-role keys.

* [Docs] Update tap-hold docs for HOLD_ON_OTHER_KEY_PRESS

Document the newly added HOLD_ON_OTHER_KEY_PRESS option and update the
documentation for closely related options (PERMISSIVE_HOLD and
IGNORE_MOD_TAP_INTERRUPT).

Use Layer Tap instead of Mod Tap in examples for PERMISSIVE_HOLD and
HOLD_ON_OTHER_KEY_PRESS, because the effect of using these options with
Mod Tap keys is mostly invisible without IGNORE_MOD_TAP_INTERRUPT.

Add comments before return statements in sample implementations of
`get_ignore_mod_tap_interrupt()`, `get_hold_on_other_key_press()` and
`get_permissive_hold()`.

Thanks to @Erovia and @precondition for comments and suggestions to
improve the documentation.
2021-08-07 09:16:26 +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
_langs.md
_summary.md [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
.nojekyll
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_history.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
breaking_changes_instructions.md
breaking_changes.md Merge remote-tracking branch 'upstream/master' into develop 2021-06-20 12:10:59 +10:00
chibios_upgrade_instructions.md Update ChibiOS, ChibiOS-Contrib. (#13056) 2021-06-01 08:11:50 +10:00
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
cli.md
CNAME
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 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
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 Updated Raw HID docs to clarify packet/report length (#11211) 2020-12-23 08:04:55 +11:00
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 Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
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 Normalise include statements in core code (#11153) 2020-12-11 13:45:24 +11:00
feature_velocikey.md
feature_wpm.md 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
flashing_bootloadhid.md
flashing.md Update LUFA (18-07-2021) and add QMK-HID Bootloader support (#13588) 2021-07-24 23:00:57 -07:00
fuse.txt Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
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 Simplify the visual flow of the getting started page (#11316) 2020-12-27 16:56:10 +00:00
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_setup_process.md
internals_midi_device.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_basic.md Update keycode docs (#11343) 2020-12-30 07:51:36 +11:00
keycodes_us_ansi_shifted.md
keycodes.md [Docs] added list of MIDI keycodes (#13159) 2021-07-04 17:34:20 -07:00
keymap.md
mod_tap.md Add Mac centric Shift and Alt + GUI Macros (#13107) 2021-06-19 19:14:19 -07:00
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_building_firmware.md
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
newbs.md [Docs] Use HTTPS for images and links where possible (#11695) 2021-01-30 22:00:56 +11: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 Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
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 Add board specific to Proton-C, with usual defaults turned on. (#10976) 2020-12-03 13:04:28 +11:00
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
qmk.css
quantum_keycodes.md
README.md Small tweaks to docs to make them more user friendly (#11518) 2021-01-20 18:46:01 +00:00
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 Improved Language Specific Keycodes for US International and Extended Layouts (#11307) 2021-01-02 15:54:48 +11:00
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 Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys (#9404) 2021-08-07 09:16:26 +10: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

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.