You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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>
4 years ago
..
process_audio.c
process_audio.h
process_auto_shift.c Add Per Key functionality for AutoShift (#11536) 5 years ago
process_auto_shift.h Add Per Key functionality for AutoShift (#11536) 5 years ago
process_backlight.c
process_backlight.h
process_clicky.c
process_clicky.h
process_combo.c Process combos earlier & overlapping combos (#8591) 4 years ago
process_combo.h Process combos earlier & overlapping combos (#8591) 4 years ago
process_dynamic_macro.c
process_dynamic_macro.h
process_grave_esc.c
process_grave_esc.h
process_haptic.c Haptic: driver-> feature (#13713) 4 years ago
process_haptic.h Haptic: driver-> feature (#13713) 4 years ago
process_joystick.c
process_joystick.h
process_key_lock.c
process_key_lock.h
process_key_override.c [BUG] Fix Key Override includes (#13831) 4 years ago
process_key_override.h Minor tidy up of key overrides (#13747) 4 years ago
process_leader.c feat: infinite timeout for leader key (#6580) 5 years ago
process_leader.h Fix bad PR merge for #6580. (#12721) 5 years ago
process_magic.c
process_magic.h
process_midi.c Fix handling multiples of the same MIDI note (fixes bug brought up in issue #10199) (#11639) 5 years ago
process_midi.h
process_music.c matrix_scan_x -> x_task (#13748) 4 years ago
process_music.h matrix_scan_x -> x_task (#13748) 4 years ago
process_printer.c
process_printer.h
process_printer_bb.c
process_rgb.c Remove rgblight stubs (#13302) 5 years ago
process_rgb.h
process_sequencer.c
process_sequencer.h
process_space_cadet.c
process_space_cadet.h
process_steno.c
process_steno.h
process_tap_dance.c matrix_scan_x -> x_task (#13748) 4 years ago
process_tap_dance.h matrix_scan_x -> x_task (#13748) 4 years ago
process_terminal.c
process_terminal.h
process_terminal_nop.h
process_ucis.c
process_ucis.h
process_unicode.c
process_unicode.h
process_unicode_common.c
process_unicode_common.h
process_unicodemap.c
process_unicodemap.h