qmk_firmware/tmk_core/common
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
..
arm_atsam Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
avr Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
chibios Merge remote-tracking branch 'origin/master' into develop 2021-08-02 04:28:52 +00:00
test Fix unit tests after recent refactor (#13765) 2021-07-29 12:00:39 +10:00
action_code.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
action_layer.c Improve layer mask handling (#13065) 2021-07-03 00:19:52 -07:00
action_layer.h Improve layer mask handling (#13065) 2021-07-03 00:19:52 -07:00
action_macro.c clang-format changes 2019-08-30 15:01:52 -07:00
action_macro.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
action_tapping.c Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
action_tapping.h Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
action_util.c [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
action_util.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
action.c Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
action.h Process combos earlier & overlapping combos (#8591) 2021-08-06 09:44:57 +10:00
atomic_util.h Split gpio and atomic to platform (#11792) 2021-02-14 11:51:06 +11:00
bootloader.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
eeconfig.c 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
eeconfig.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
eeprom.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
gpio.h Split gpio and atomic to platform (#11792) 2021-02-14 11:51:06 +11:00
host_driver.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
host.c Extensible split data sync (#11930) 2021-06-18 09:10:06 +10:00
host.h New and improved lock LED callbacks (#7215) 2019-11-06 00:42:16 +00:00
keyboard.c Add CRC8 calculation subsystem to quantum (#12641) 2021-06-18 00:09:43 +01:00
keyboard.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
keycode.h Format code according to conventions (#12244) 2021-03-15 12:21:14 +11:00
pin_defs.h Split gpio and atomic to platform (#11792) 2021-02-14 11:51:06 +11:00
progmem.h __flash? (#13799) 2021-07-31 14:35:30 +01:00
raw_hid.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
report.c format code according to conventions [skip ci] 2020-03-13 18:44:56 +00:00
report.h Add a handful of consumer/gendesk page usages (#12811) 2021-05-06 17:16:07 +01:00
sleep_led.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
suspend.h Set default for USB_SUSPEND_WAKEUP_DELAY to 0/disabled (#12081) 2021-03-02 14:31:23 +00:00
sync_timer.c Add sync_timer support over serial_link (i.e. Ergodox Infinity) (#12845) 2021-06-19 19:18:00 -07:00
sync_timer.h Add sync_timer support over serial_link (i.e. Ergodox Infinity) (#12845) 2021-06-19 19:18:00 -07:00
timer.h Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
usb_util.c Avoid LTO conficts on arm_atsam (#13676) 2021-07-24 12:13:06 +01:00
usb_util.h Avoid LTO conficts on arm_atsam (#13676) 2021-07-24 12:13:06 +01:00
virtser.h Change include guards in tmk_core/ and drivers/ to pragma once (#11240) 2020-12-26 15:56:11 +11:00
wait.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00