qmk_firmware/quantum
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
..
api Move API_SYSEX_MAX_SIZE out of config_common.h (#12302) 2021-03-25 22:30:42 +11:00
audio Refactor some platform dependent logic (#13675) 2021-07-24 19:56:45 +01:00
backlight 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
bootmagic 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
debounce Add asym_eager_defer_pk debounce type (#12689) 2021-06-16 14:00:37 +10:00
keymap_extras Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:17:22 +00:00
led_matrix Switch Ergodox Infinity over to split_common (#13481) 2021-07-19 18:54:32 -07:00
logging Move print/debug files to quantum (#12069) 2021-08-03 18:49:33 +01:00
process_keycode Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
rgb_matrix Align AW20216 driver (#13712) 2021-07-27 23:55:51 +01:00
rgblight Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
sequencer matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
serial_link Add sync_timer support over serial_link (i.e. Ergodox Infinity) (#12845) 2021-06-19 19:18:00 -07:00
split_common Avoid LTO conficts on arm_atsam (#13676) 2021-07-24 12:13:06 +01:00
template Add bootloader section to keyboard template (#13774) 2021-08-04 01:23:18 +01:00
tools
visualizer Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
api.c clang-format changes 2019-08-30 15:01:52 -07:00
api.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
bitwise.c Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
bitwise.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
color.c Add support for hsv->rgb conversion without using CIE curve. (#9856) 2020-08-29 14:30:02 -07:00
color.h Relocate RGB/HSV color defs to a more fitting place (#13377) 2021-06-29 19:15:58 +01:00
command.c Improve layer mask handling (#13065) 2021-07-03 00:19:52 -07:00
command.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
config_common.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
crc.c Add CRC8 calculation subsystem to quantum (#12641) 2021-06-18 00:09:43 +01:00
crc.h Add CRC8 calculation subsystem to quantum (#12641) 2021-06-18 00:09:43 +01:00
debounce.h Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
dip_switch.c Convert Dip Switch callbacks to boolean functions (#13399) 2021-07-01 08:22:21 -07:00
dip_switch.h Convert Dip Switch callbacks to boolean functions (#13399) 2021-07-01 08:22:21 -07:00
dynamic_keymap.c Improve EEPROM defaults for Dynamic Keymaps (#12853) 2021-05-10 15:37:36 -07:00
dynamic_keymap.h clang-format changes 2019-08-30 15:01:52 -07:00
dynamic_macro.h [Core] Convert Dynamic Macro to a Core Feature (#5948) 2019-11-04 22:59:13 -08:00
encoder.c 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
encoder.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
haptic.c Haptic: driver-> feature (#13713) 2021-07-25 19:14:58 -07:00
haptic.h Haptic: driver-> feature (#13713) 2021-07-25 19:14:58 -07:00
joystick.c Hid joystick interface (#4226) 2020-08-29 14:30:02 -07:00
joystick.h 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
keycode_config.c clang-format changes 2019-08-30 15:01:52 -07:00
keycode_config.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
keymap.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
keymap_common.c Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
led.c Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
led.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
led_tables.c Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
led_tables.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
matrix.c Change the prototype of matrix_output_unselect_delay() (#13045) 2021-07-13 16:50:25 +09:00
matrix.h Change the prototype of matrix_output_unselect_delay() (#13045) 2021-07-13 16:50:25 +09:00
matrix_common.c Change the prototype of matrix_output_unselect_delay() (#13045) 2021-07-13 16:50:25 +09:00
mcu_selection.mk Adds support for STM32L412xB, STM32L422xB. (#13383) 2021-06-30 10:07:40 +10:00
mousekey.c mousekey: expose current report to users (#13069) 2021-07-03 00:50:47 -07:00
mousekey.h mousekey: expose current report to users (#13069) 2021-07-03 00:50:47 -07:00
pointing_device.c Manually run formatting job (#11797) 2021-02-05 13:27:24 +00:00
pointing_device.h Improve Pointing Device report sending (#11064) 2021-02-03 17:25:05 -08:00
quantum.c Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
quantum.h matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
quantum_keycodes.h [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
ring_buffer.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
send_string.c Move SENDSTRING_BELL code to send_string.h (#13566) 2021-07-16 09:40:20 -07:00
send_string.h Remove hex_to_keycode and move tap_random_base64 to send_string.c (#12079) 2021-03-12 18:03:44 +11:00
send_string_keycodes.h Workaround for recent changes to mouse keycodes (#12367) 2021-03-24 19:38:35 +00:00
util.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
variable_trace.c clang-format changes 2019-08-30 15:01:52 -07:00
variable_trace.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
velocikey.c clang-format changes 2019-08-30 15:01:52 -07:00
velocikey.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
via.c Fix keycode mappings for via and ensure they don't change within protocol (#12130) 2021-03-15 12:19:01 +11:00
via.h Normalise include statements in core code (#11153) 2020-12-11 13:45:24 +11:00
via_ensure_keycode.h Fix keycode mappings for via and ensure they don't change within protocol (#12130) 2021-03-15 12:19:01 +11:00
wpm.c Fix overflows in WPM calculations (#13128) 2021-08-04 07:40:08 +10:00
wpm.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00