Browse Source

add bool success argument to dynamic_macro_record_key_user()

modify dynamic_macro_record_key_user() to restore previous behavior: backlight does not blink at every recorded key, only at error/buffer full condition
pull/16175/head
yearski 2 years ago
parent
commit
eb86093881
4 changed files with 10 additions and 6 deletions
  1. +1
    -1
      docs/feature_dynamic_macros.md
  2. +1
    -1
      docs/ja/feature_dynamic_macros.md
  3. +7
    -3
      quantum/process_keycode/process_dynamic_macro.c
  4. +1
    -1
      quantum/process_keycode/process_dynamic_macro.h

+ 1
- 1
docs/feature_dynamic_macros.md View File

@ -60,7 +60,7 @@ Note, that direction indicates which macro it is, with `1` being Macro 1, `-1` b
* `dynamic_macro_record_start_user(void)` - Triggered when you start recording a macro.
* `dynamic_macro_play_user(int8_t direction)` - Triggered when you play back a macro.
* `dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record)` - Triggered on each keypress while recording a macro.
* `dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record, bool success)` - Triggered on each keypress while recording a macro.
* `dynamic_macro_record_end_user(int8_t direction)` - Triggered when the macro recording is stopped.
Additionally, you can call `dynamic_macro_led_blink()` to flash the backlights if that feature is enabled.

+ 1
- 1
docs/ja/feature_dynamic_macros.md View File

@ -65,7 +65,7 @@ direction がどのマクロであるかを示すことに注意してくださ
* `dynamic_macro_record_start_user(void)` - マクロの記録を開始する時に起動されます。
* `dynamic_macro_play_user(int8_t direction)` - マクロを再生する時に起動されます。
* `dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record)` - マクロの記録中に各キー押下で起動されます。
* `dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record, bool success)` - マクロの記録中に各キー押下で起動されます。
* `dynamic_macro_record_end_user(int8_t direction)` - マクロの記録を停止した時に起動されます。
さらに、動的マクロ機能が有効な場合にバックライトを点滅させるために `dynamic_macro_led_blink()` を呼び出すことができます。

+ 7
- 3
quantum/process_keycode/process_dynamic_macro.c View File

@ -33,7 +33,7 @@ __attribute__((weak)) void dynamic_macro_record_start_user(void) { dynamic_macro
__attribute__((weak)) void dynamic_macro_play_user(int8_t direction) { dynamic_macro_led_blink(); }
__attribute__((weak)) void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) { dynamic_macro_led_blink(); }
__attribute__((weak)) void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record, bool success) { if(!success) dynamic_macro_led_blink(); }
__attribute__((weak)) void dynamic_macro_record_end_user(int8_t direction) { dynamic_macro_led_blink(); }
@ -97,6 +97,8 @@ void dynamic_macro_play(keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_
* @param record[in] The current keypress.
*/
void dynamic_macro_record_key(keyrecord_t *macro_buffer, keyrecord_t **macro_pointer, keyrecord_t *macro2_end, int8_t direction, keyrecord_t *record) {
bool success = false;
/* If we've just started recording, ignore all the key releases. */
if (!record->event.pressed && *macro_pointer == macro_buffer) {
dprintln("dynamic macro: ignoring a leading key-up event");
@ -110,12 +112,14 @@ void dynamic_macro_record_key(keyrecord_t *macro_buffer, keyrecord_t **macro_poi
**macro_pointer = *record;
*macro_pointer += direction;
} else {
// TBD: perform some action when the recording is still in progress but has consumed the available macro buffer
dprint("dynamic macro: end of buffer. New key record not added to buffer.\n");
success = false;
dynamic_macro_record_key_user(direction, record, success);
}
dprintf("dynamic macro: slot %d length: %d/%d\n", DYNAMIC_MACRO_CURRENT_SLOT(), DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, *macro_pointer), DYNAMIC_MACRO_CURRENT_CAPACITY(macro_buffer, macro2_end));
dynamic_macro_record_key_user(direction, record);
success = true;
dynamic_macro_record_key_user(direction, record, success);
}
/**


+ 1
- 1
quantum/process_keycode/process_dynamic_macro.h View File

@ -37,5 +37,5 @@ void dynamic_macro_led_blink(void);
bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record);
void dynamic_macro_record_start_user(void);
void dynamic_macro_play_user(int8_t direction);
void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record);
void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record, bool success);
void dynamic_macro_record_end_user(int8_t direction);

Loading…
Cancel
Save