qmk_firmware/quantum/process_keycode
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
..
process_audio.c clang-format changes 2019-08-30 15:01:52 -07:00
process_audio.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_auto_shift.c Add Per Key functionality for AutoShift (#11536) 2021-04-19 20:34:14 -07:00
process_auto_shift.h Add Per Key functionality for AutoShift (#11536) 2021-04-19 20:34:14 -07:00
process_backlight.c LED Matrix: decouple from Backlight (#12054) 2021-03-08 16:55:00 +11:00
process_backlight.h 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
process_clicky.c clang-format changes 2019-08-30 15:01:52 -07:00
process_clicky.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_combo.c Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
process_combo.h Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
process_dynamic_macro.c format code according to conventions [skip ci] 2020-07-07 21:43:51 +00:00
process_dynamic_macro.h [Core] Convert Dynamic Macro to a Core Feature (#5948) 2019-11-04 22:59:13 -08:00
process_grave_esc.c Relocate grave keycode processing (#8082) 2020-02-04 18:49:10 -08:00
process_grave_esc.h Relocate grave keycode processing (#8082) 2020-02-04 18:49:10 -08:00
process_haptic.c Haptic: driver-> feature (#13713) 2021-07-25 19:14:58 -07:00
process_haptic.h Haptic: driver-> feature (#13713) 2021-07-25 19:14:58 -07:00
process_joystick.c 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
process_joystick.h Hid joystick interface (#4226) 2020-08-29 14:30:02 -07:00
process_key_lock.c Normalise include statements in core code (#11153) 2020-12-11 13:45:24 +11:00
process_key_lock.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_key_override.c [BUG] Fix Key Override includes (#13831) 2021-08-01 16:29:23 +01:00
process_key_override.h Minor tidy up of key overrides (#13747) 2021-07-28 12:01:49 +01:00
process_leader.c feat: infinite timeout for leader key (#6580) 2021-04-25 10:22:47 +10:00
process_leader.h Fix bad PR merge for #6580. (#12721) 2021-04-28 11:42:53 +01:00
process_magic.c Fix FORCE_NKRO handling (#7601) 2019-12-11 11:39:30 -08:00
process_magic.h Relocate magic keycode processing (#7512) 2019-12-03 19:48:55 +00:00
process_midi.c Fix handling multiples of the same MIDI note (fixes bug brought up in issue #10199) (#11639) 2021-03-25 22:51:57 +11:00
process_midi.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_music.c matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
process_music.h matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
process_printer_bb.c clang-format changes 2019-08-30 15:01:52 -07:00
process_printer.c clang-format changes 2019-08-30 15:01:52 -07:00
process_printer.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_rgb.c Remove rgblight stubs (#13302) 2021-06-23 10:16:41 +10:00
process_rgb.h Relocate RGB keycode processing (#7508) 2019-12-16 12:27:53 -08:00
process_sequencer.c 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
process_sequencer.h 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
process_space_cadet.c Fix Tap-Hold Configs (#11127) 2021-01-04 16:37:20 -08:00
process_space_cadet.h Fix Tap-Hold Configs (#11127) 2021-01-04 16:37:20 -08:00
process_steno.c switching to you know whats up mode (#7921) 2020-01-17 16:15:58 -05:00
process_steno.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_tap_dance.c matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
process_tap_dance.h matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
process_terminal_nop.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_terminal.c Send string keycode tweaks (#7471) 2019-11-25 23:16:58 -08:00
process_terminal.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
process_ucis.c qmk cformat (#9500) 2020-06-22 11:21:48 +10:00
process_ucis.h Standardize how unicode is processed (fixes #8768) (#8770) 2020-06-18 08:07:34 +01:00
process_unicode_common.c Remove hex_to_keycode and move tap_random_base64 to send_string.c (#12079) 2021-03-12 18:03:44 +11:00
process_unicode_common.h Fix Issue #9533 - Delayed shift state handling (#11220) 2020-12-22 18:23:09 +01:00
process_unicode.c clang-format changes 2019-08-30 15:01:52 -07:00
process_unicode.h New keycode macro (XP) for shifted character pairs using UNICODEMAP + bug fixes and improvements (#4803) 2019-05-03 09:33:00 -07:00
process_unicodemap.c Fix Issue #9533 - Delayed shift state handling (#11220) 2020-12-22 18:23:09 +01:00
process_unicodemap.h send_unicode_string(): Add support for code points > 0xFFFF (#8236) 2020-02-25 12:54:51 +11:00