be2f5816b6
* Define NO_ACTION_MACRO/FUNCTION in header instead of makefile when LTO is enabled Currently, boards and keymaps that define NO_ACTION_MACRO/FUNCTION unconditionally will not compile with LTO_ENABLE (#8604). This fixes the issue by moving the definitions from common.mk to action.h, which enables us to check for previous definitions of those macros (this cannot be done in a makefile). * Remove LTO checks in templates Since now NO_ACTION_MACRO/FUNCTION are defined as needed in action.h (which is included by quantum.h), checking for LTO in keyboard and user code is no longer required. * Update LTO_ENABLE docs |
||
---|---|---|
.. | ||
ChangeLog | ||
de | ||
es | ||
fr-fr | ||
gitbook/images | ||
he-il | ||
ja | ||
pt-br | ||
ru-ru | ||
zh-cn | ||
.nojekyll | ||
CNAME | ||
README.md | ||
_langs.md | ||
_summary.md | ||
adc_driver.md | ||
api_development_environment.md | ||
api_development_overview.md | ||
api_docs.md | ||
api_overview.md | ||
arm_debugging.md | ||
breaking_changes.md | ||
breaking_changes_instructions.md | ||
cli.md | ||
cli_commands.md | ||
cli_configuration.md | ||
cli_development.md | ||
coding_conventions_c.md | ||
coding_conventions_python.md | ||
compatible_microcontrollers.md | ||
config_options.md | ||
configurator_step_by_step.md | ||
configurator_troubleshooting.md | ||
contributing.md | ||
custom_matrix.md | ||
custom_quantum_functions.md | ||
documentation_best_practices.md | ||
documentation_templates.md | ||
driver_installation_zadig.md | ||
eeprom_driver.md | ||
faq_build.md | ||
faq_debug.md | ||
faq_general.md | ||
faq_keymap.md | ||
feature_advanced_keycodes.md | ||
feature_audio.md | ||
feature_auto_shift.md | ||
feature_backlight.md | ||
feature_bluetooth.md | ||
feature_bootmagic.md | ||
feature_combo.md | ||
feature_command.md | ||
feature_debounce_type.md | ||
feature_dip_switch.md | ||
feature_dynamic_macros.md | ||
feature_encoders.md | ||
feature_grave_esc.md | ||
feature_haptic_feedback.md | ||
feature_hd44780.md | ||
feature_key_lock.md | ||
feature_layers.md | ||
feature_layouts.md | ||
feature_leader_key.md | ||
feature_led_matrix.md | ||
feature_macros.md | ||
feature_mouse_keys.md | ||
feature_oled_driver.md | ||
feature_pointing_device.md | ||
feature_ps2_mouse.md | ||
feature_rgb_matrix.md | ||
feature_rgblight.md | ||
feature_space_cadet.md | ||
feature_split_keyboard.md | ||
feature_stenography.md | ||
feature_swap_hands.md | ||
feature_tap_dance.md | ||
feature_terminal.md | ||
feature_thermal_printer.md | ||
feature_unicode.md | ||
feature_userspace.md | ||
feature_velocikey.md | ||
feature_wpm.md | ||
flashing.md | ||
flashing_bootloadhid.md | ||
fuse.txt | ||
getting_started_github.md | ||
getting_started_introduction.md | ||
getting_started_make_guide.md | ||
getting_started_vagrant.md | ||
hand_wire.md | ||
hardware_avr.md | ||
hardware_drivers.md | ||
hardware_keyboard_guidelines.md | ||
how_a_matrix_works.md | ||
how_keyboards_work.md | ||
i2c_driver.md | ||
index.html | ||
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 | ||
keycodes_basic.md | ||
keycodes_us_ansi_shifted.md | ||
keymap.md | ||
mod_tap.md | ||
newbs.md | ||
newbs_building_firmware.md | ||
newbs_building_firmware_configurator.md | ||
newbs_flashing.md | ||
newbs_getting_started.md | ||
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 | ||
newbs_testing_debugging.md | ||
one_shot_keys.md | ||
other_eclipse.md | ||
other_vscode.md | ||
power.txt | ||
proton_c_conversion.md | ||
qmk.css | ||
qmk_custom_dark.css | ||
qmk_custom_light.css | ||
quantum_keycodes.md | ||
redirects.json | ||
ref_functions.md | ||
reference_configurator_support.md | ||
reference_glossary.md | ||
reference_info_json.md | ||
spi_driver.md | ||
support.md | ||
sw.js | ||
tap_hold.md | ||
translating.md | ||
understanding_qmk.md | ||
unit_testing.md | ||
usb_nkro.txt | ||
ws2812_driver.md |
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
Totally new to QMK? There are two ways to get started:
- Basic: QMK Configurator
- Just select your keyboard from the dropdown and program your keyboard.
- We have an introductory video you can watch.
- There is also an overview document you can read.
- 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.
- Help people out on our forums and chat rooms:
- Contribute to our documentation by clicking "Edit This Page" at the bottom
- Translate our documentation into your language
- Report a bug
- Open a Pull Request