aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/dynamic_macro.h
AgeCommit message (Collapse)Author
2019-11-04[Core] Convert Dynamic Macro to a Core Feature (#5948)Gravatar Drashna Jaelre
* Convert Dynamic Macro to a Core Feature This imports the code from Dynamic Macro into the core code, and handles it, as such. This deprecates the old method but does not remove it, for legacy support. This way, no existing user files need to be touched. Additionally, this reorganizes the documentation to better reflect the changes. Also, it adds user hooks to the feature so users can customize the existing functionality. Based heavily on and closes #2976 * Apply suggestions from code review Co-Authored-By: fauxpark <fauxpark@gmail.com> Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com> * Cleanup based on feedback * Add short-form keycodes and document them - add short-form keycodes to quantum/quantum_keycodes.h - document the new aliases in docs/feature_dynamic_macros.md * Add Dynamic Macros section and keycodes to docs/keycodes.md * Make anti-nesting optional * Add documentation for DYNAMIC_MACRO_NO_NESTING option * Fix Merge artifacts * Fix formatting typo in docs Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com> * Remove DYNAMIC_MACRO_RANGE as it's not needed * Fix includes and layer var type
2019-08-30clang-format changesGravatar skullY
2017-09-30Fix dynamic macros on ChibiOS keyboardsGravatar Fred Sundvik
2017-06-01Prevent the recording of looping dynamic macros.Gravatar Daniel Shields
If a macro play key is inadvertently recorded in a dynamic macro a loop is created and the macro will not terminate when played. This should be prevented.
2017-05-05dynamic_macro.h: Do not use backlight_toggle if backlight is disabledGravatar Wojciech Siewierski
Fixes #1199.
2017-05-04dynamic_macro.h: Add debug logsGravatar Wojciech Siewierski
2017-05-04dynamic_macro.h: Make the documentation more clearGravatar Wojciech Siewierski
2017-05-04dynamic_macro.h: Do not save the keys being held when stopping the recordingGravatar Wojciech Siewierski
More specifically, we save them and then place the `macro_end` pointer before them so they are essentially ignored and the other macro may freely overwrite them.
2017-05-04dynamic_macro.h: Fix an off-by-two errorGravatar Wojciech Siewierski
We need to check whether we just passed the after-the-end point of the other macro. Instead we were checking whether we are going to reach it now.
2017-05-04dynamic_macro.h: Always toggle the backlight twice as a notificationGravatar Wojciech Siewierski
Apparently sometimes the backlight was toggled only once and it was left on.
2017-05-04dynamic_macro.h: Ignore all the initial key releasesGravatar Wojciech Siewierski
Right after the user initiates the macro recording, they usually need to release some keys used to access the DYN_REC_START layers. It makes sense to ignore them. Note: The keys used to access the DYN_REC_STOP key are *not* ignored.
2017-04-30Add `DYN_REC_STOP` to dynamic macrosGravatar Weiyi Lou
Dynamic macro functionality is modified to check for `DYN_REC_STOP`, so that macro recording can be stopped with a designated key combination (e.g. `qs` or anything) instead of mandating the use of a `_DYN` layer. `_DYN` layer stopping can still be done by passing `DYN_REC_STOP` within `process_record_user()`: bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode); if (!process_record_dynamic_macro(macro_kc, record)) { return false; } return true; }
2017-03-28Clarify the quantum license (#1042)Gravatar skullydazed
* Clarify the license for files we have signoff on * Update against the currently signed off files * Remove unused and not clearly licensed headers * Replace an #endif I accidentally removed while resolving merge conflicts
2016-10-09Reduce the default dynamic macro bufferGravatar Wojciech Siewierski
There have been reports of it leaving not enough free memory preventing the keyboard from working properly.
2016-08-18Implement the dynamic macros that are recorded in runtimeGravatar Wojciech Siewierski